patch-2.0.31 linux/Documentation/networking/alias.txt

Next file: linux/Documentation/networking/ip_dynaddr.txt
Previous file: linux/Documentation/memory-tuning.txt
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.0.30/linux/Documentation/networking/alias.txt linux/Documentation/networking/alias.txt
@@ -1,9 +1,12 @@
-NET_ALIAS device aliasing v0.4x
+NET_ALIAS device aliasing v0.5x
 ===============================
   The main step taken in versions 0.40+ is the implementation of a
   device aliasing mechanism that creates *actual* devices.
   This development includes NET_ALIAS (generic aliasing) plus IP_ALIAS
   (specific IP) support.
+  From version 0.50, dynamic configuration of max alias per device and
+  tx/rx stats for aliases added.
+  Also fixed inter-alias routing and arping problems.
 
 Features
 --------
@@ -13,6 +16,10 @@
 o  hashed alias address lookup
 o  net_alias_type objs registration/unreg., module-ables.
 o  /proc/net/aliases & /proc/net/alias_types entries
+o  /proc/sys/net/core/net_alias_max entry (affects hash table size
+   also)
+o  tx/rx stats   
+
 
 o IP alias implementation: static or runtime module.
 
@@ -23,10 +30,43 @@
      # cat /proc/net/alias*
 
   For IP aliasing you must have IP_ALIAS support included by
-  static linking ('y' to 2nd question above), or runtime module
-  insertion ('m' to 2nd q. above):
-     # insmod /usr/src/linux/modules/ip_alias.o (1.3.xx)
-     # insmod /usr/src/ip_alias/ip_alias.o      (1.2.xx) see above.
+  static linking ('y' to CONFIG_IP_ALIAS? question), or runtime module
+  insertion ('m'):
+     # insmod /usr/src/linux/modules/ip_alias.o (2.0.xx) or
+     # modprobe ip_alias.o
+     
+     Also, dynamic loading is supported (kerneld).
+       You should have the following line in /etc/conf.modules (not needed
+       for newer modutils):
+       alias net_alias-2 ip_alias
+
+  Module options
+  --------------
+  From 0.5x ip_alias module supports a new option ("no_sel" symbol).
+  If no_sel is set (default is 0), alias association (device selection) with
+  foreign addresses will be disabled.
+
+    You will get:
+    - Faster operation by avoiding completely routing lookups. 
+      Due to the "logical nature" of aliasing, netdevice SELection can only be
+      done based on info from network layer. When packet dst address isn't 
+      one of my addresses, I query the routing table to see which netdevice
+      would be selected for packet _source_ address. This option avoids
+      doing so, and you must consider using it if you *only* have same-net
+      aliases (common usage).
+
+    You will loose:
+    - Inter-alias routing
+    - Proxyarp over aliases
+
+  To activate:
+    # insmod ip_alias.o no_sel=1  
+      or
+    # modprobe ip_alias.o no_sel=1
+      or
+    add the following line to /etc/conf.modules:
+      options ip_alias no_sel=1
+
 
 o Alias creation.
   Alias creation is done by 'magic' iface naming: eg. to create a
@@ -49,11 +89,11 @@
   alias device is closed before deletion, so all network stuff that
   points to it (routes, arp entries, ...) will be released.
   		   		   
-Alias (re-)configuring
+o Alias (re-)configuring
   Aliases *are* devices, so you configure and refer to them as usual (ifconfig,
   route, etc).
   
-o Procfs entries
+o PROCfs entries
   2 entries are added to help fetching alias runtime configuration:
   a) /proc/net/alias_types
      Will show you alias_types registered (ie. address families that
@@ -70,7 +110,66 @@
      # cat /proc/net/aliases
      device           family address                                
      eth0:0           2      200.1.1.1
-
+     
+o PROCfs dynamic configuration (from v0.50)
+  You can now change the max aliases per device limit via
+  /proc/sys/net/core/net_alias_max entry (default=256)
+     # cat /proc/sys/net/core/net_alias_max
+     256
+     # echo 1000 > /proc/sys/net/core/net_alias_max
+     # cat /proc/sys/net/core/net_alias_max
+     1000
+     # _
+          
+  With this funcionality you can disable net_alias creation from now on
+     # echo 0 > /proc/sys/net/core/net_alias_max
+
+  The new aliasing limit is considered (grabbed) when creating the
+  FIRST alias for the main device.
+  Eg:
+     # echo 10 > /proc/sys/net/core/net_alias_max
+     # ifconfig eth0:0 xx.xx.xx.xx  (first alias creation for eth0,
+                                     eth0 will 'remember' max==10)
+     # echo 1000 > /proc/sys/net/core/net_alias_max
+     # ifconfig eth0:999 xx.xx.xx.xx
+     SIOCIFSADDR: No such device
+  Of course these semantics can be changed, please let me know.
+  
+  Configuration changes get logged as usual (klogd -> /var/log/messages)
+  
+o Alias devices rx/tx stats
+  Fake rx/tx stats are accounted:
+  - TX
+    When the packet is ``switched'' from logical alias device to
+    physical device, tx counter gets incremented.
+  - RX
+    When an incoming packet's address equals alias network device's addr it
+    gets ``switched'' from physical to logical device, rx counter gets
+    incr.
+    
+  Please NOTE that for ``same'' network alias devices you usually have
+  one net-route through physical device (eg. eth0), so output pkts
+  will NOT pass down via alias device (so, no tx++ will occur).
+  
+  Also NOTE that currently ifconfig does not handle the ``:'' of alias devices
+  names, a little patch solves the problem:
+--- ifconfig.c.dist	Tue Apr  4 17:58:32 1995
++++ ifconfig.c	Fri Oct 25 13:11:23 1996
+@@ -243,7 +243,12 @@
+   		bp++;
+   	if(strncmp(bp,ifname,strlen(ifname))==0 && bp[strlen(ifname)]==':')
+   	{
+- 		bp=strchr(bp,':');
++	   	/* 
++		 * 	start bp at ifname end to prevent ':' ambiguity
++		 * 	with alias devices (eg. eth0:0)
++		 * 	
++		 */
++		bp+=strlen(ifname);
+  		bp++;
+  		sscanf(bp,"%d %d %d %d %d %d %d %d %d %d %d",
+  			&ife->stats.rx_packets,
+  
 Relationship with main device
 -----------------------------
   - On main device closing, all aliases will be closed and freed.
@@ -78,14 +177,19 @@
     main device (aliases get 'stacked' after main_dev), eg:
       lo->eth0->eth0:0->eth0:2->eth1->0
     If eth0 is unregistered, all it aliases will also be:
-      lo->eth1->0     
+      lo->eth1->0
 
 Contact
 -------
-Please finger or e-mail me:
-   Juan Jose Ciarlante <jjciarla@raiz.uncu.edu.ar>
+Please e-mail me:
+   Juan Jose Ciarlante <irriga@impsat1.com.ar> or <jjciarla@raiz.uncu.edu.ar>
    
-		   		
+Acknowledments
+--------------
+Special thanks to Claudia for all her love an patience.
+Also thanks to Antonio Trevi~o <antonio@ecord.gov.ar> great human being 
+and un*x guru.
+
 ; local variables:
 ; mode: indented-text
 ; mode: auto-fill

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov