--- /dev/null
+ Network interface renaming comparison
+ -------------------------------------
+
+INTRODUCTION
+------------
+ The Wireless Tools package includes 'ifrename', a tool to
+rename network interfaces. However, this is not the only solution to
+the problem of renaming network interfaces. This document explain the
+differences between ifrename and the various alternatives.
+ The subject of interface renaming may look simple at first
+glance, and is simple in 95% of the cases, however there are many
+complex scenario and those tools have many features, which explain why
+we need to go in more details than just saying 'tool X is better'.
+
+NAMEIF
+------
+ The tool 'nameif' was designed to rename network
+interfaces. It either loads mapping from the file /etc/mactab or
+accept mapping on the command line.
+ It is part of the net-tools package :
+ http://www.tazenda.demon.co.uk/phil/net-tools/
+
+ Advantages over 'ifrename' :
+ + More widespread, available in very old distributions
+ + simpler/smaller
+ Drawbacks compared to 'ifrename' :
+ - Only support MAC address selector
+ - Does not support hotplug invocation
+ - Does not support module on-demand loading
+ Comments :
+ o The fact that nameif does not support selector other
+than the MAC address is problematic, as USB-NET devices may not have
+MAC addresses and some ethernet/wireless drivers can't query the MAC
+address before 'ifconfig up'.
+ o 'ifrename' was designed as a better 'nameif', and
+its concept is very similar.
+
+IPROUTE
+-------
+ The tool 'ip' can rename network interfaces with the following
+syntax :
+ > ip link set <oldname> name <newname>
+ It is part of the 'iproute' package :
+ http://developer.osdl.org/dev/iproute2/
+
+ Advantages over 'ifrename' :
+ + integrated in 'iproute', which most people need anyway
+ Drawbacks compared to 'ifrename' :
+ - Do not support any selector, must use old interface name
+ - No 'batch' mode, must rename each interface manually
+ Comments :
+ o 'ip' only provide the most basic facility. To use it
+automatically, like in init/hotplug scripts, wrappers adding some
+rules/selector must be written.
+
+DRIVER MODULE PARAMETERS
+------------------------
+ Some network driver have module parameters enabling to specify
+the network name of all the devices created by the driver. This is
+driver specific, so you will need to check your driver.
+
+ Advantages over 'ifrename' :
+ + very simple to get configured and running
+ Drawbacks compared to 'ifrename' :
+ - Not universally supported : few drivers do it
+ - Fragmented : each driver does it differently
+ - The only selector available is the driver
+ Comments :
+ o This method was never popular with the kernel
+people, and this feature is being removed from driver that use to
+include it.
+
+UDEV
+----
+ The package 'udev' include facility to rename network
+interfaces, with rules such as :
+ KERNEL="eth*", SYSFS{address}="00:52:8b:d5:04:48", NAME="lan"
+ This is part of the udev package :
+ http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
+
+ Advantages over 'ifrename' :
+ + integrated into 'udev'
+ + simpler to setup if 'udev' is already properly setup
+ Drawbacks compared to 'ifrename' :
+ - Less selectors that 'ifrename'
+ - Require kernel 2.6.X or later with sysfs support
+ - Do no support non-hotplug interfaces
+ - Require 'udev', not everybody uses it (static /dev, devfs)
+ - Does not support module on-demand loading
+ Comments :
+ o 'udev' support many selectors, basically all those
+present in 'sysfs', even if the documentation only show instructions
+to use the MAC address (which is problematic with virtual devices some
+drivers - see above). 'ifrename' can also use all selectors present in
+'sysfs' (like 'udev'), plus some other selectors not present in sysfs
+that were found to be useful.
+ o Not all interfaces are managed by hotplug. All
+virtual devices, such as tunnels and loopbacks, are not associated
+with a hardware bus, and therefore are not managed by hotplug. All
+driver compiled statically into the kernel are not managed by
+hotplug. 'udev' can't deal with those devices.
+ o It is common practice on embedded system to use a
+static /dev and not 'udev' to save space and boot time. And to not use
+hotplug for the same reasons.
+ o 'ifrename' could be better integrated in 'udev', I don't foresee any technical issues.
+
+SELECTOR AWARE NETWORK SCRIPTS
+------------------------------
+ Another method is to not rename the interface at all, and make
+the various network script selector aware. The basic idea is to simply
+ignore the interface name and have all the network scripts based on
+selectors.
+ The main example is the original Pcmcia network scripts. They
+allow you to configure an interface directly based on MAC address and
+Pcmcia socket. Another example is the script get-mac-address.sh used
+as a mapping in some Debian configuration. On the other hand, Red-Hat
+and Fedora scripts don't apply, as they wrap around 'nameif'.
+
+ Advantages over 'ifrename' :
+ + usually simpler to setup and understand
+ Drawbacks compared to 'ifrename' :
+ - Less selectors that 'ifrename'
+ - Only work for the scripts, other tools left confused
+ Comments :
+ o This method is conceptually simpler, and works
+well. It eliminates the two steps process of other methods (renaming ;
+configuring).
+ o Unfortunately, this method only apply to the
+specific scripts, and not to the majority of the networking tools
+which are still based on interface name. This means that when the user
+use those other tools, he is left guessing which interface is which.
+ o Distributions never never really embraced this
+method, as they all replaced the original Pcmcia scripts with one
+using the interfacename.
+
+ Have fun...
+
+ Jean
+