140 lines
5.6 KiB
Plaintext
Executable File
140 lines
5.6 KiB
Plaintext
Executable File
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
|
|
|