On Sun, Apr 07, 2013 at 03:09:43PM -0500, William Hubbs wrote:
> 
> The significance is that the kernel determines the eth* name order.
> Right now, you are lucky in that the order is what you think it should
> be, but if something changes in the kernel causing your cards to be
> initialized in a different order, you will not be allowed to swap them
> around in the eth* name space, e.g. eth1 can't become eth0 or visa
> versa.
> 
> That is why it is recommended that you use something like net0, net1,
> etc for your interface names.
> 
> William

This doesn't seem consistent with my experience. The reason that I edited the
70-persistent-net.rules file to begin with is to make the NICs whatever eth* I
wanted, regardless of the order the kernel loaded them. Since the modules are
built-in, and both NICs use the same module, I think this won't change.

The server has two built-in NICs. One is being used to connect it to the
switch, and the other is not in use (backup). One has ID 1 and the other ID 2.
The kernel was loading the one with the higher MAC address first, and the
lower MAC address second. The lower MAC number is the one with the stamp ID 1
on the back of the server, so I edited the rules file to load it always as
eth1 so my /etc/conf.d/net can use static IPs (like everything wired on the
LAN); because the ethernet cable is connected from ID 1 to the switch. Thus:

server ~ # dmesg | grep -i eth
[   11.691830] tg3 0000:03:00.0: eth0: Tigon3 [partno(BCM95721) rev 4101] (PCI 
Express) MAC address 00:d0:68:0b:87:67
[   11.691985] tg3 0000:03:00.0: eth0: attached PHY is 5750 (10/100/1000Base-T 
Ethernet) (WireSpeed[1], EEE[0])
[   11.692192] tg3 0000:03:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[1] 
TSOcap[1]
[   11.692340] tg3 0000:03:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit]
[   11.699283] tg3 0000:02:00.0: eth1: Tigon3 [partno(BCM95721) rev 4101] (PCI 
Express) MAC address 00:d0:68:0b:87:66
[   11.699439] tg3 0000:02:00.0: eth1: attached PHY is 5750 (10/100/1000Base-T 
Ethernet) (WireSpeed[1], EEE[0])
[   11.699591] tg3 0000:02:00.0: eth1: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] 
TSOcap[1]
[   11.699738] tg3 0000:02:00.0: eth1: dma_rwctrl[76180000] dma_mask[64-bit]
[   82.703869] tg3 0000:02:00.0: eth1: Link is up at 1000 Mbps, full duplex
[   82.703875] tg3 0000:02:00.0: eth1: Flow control is off for TX and off for RX
server ~ # cat /etc/udev/rules.d/70-persistent-net.rules 
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x14e4:0x1659 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="00:d0:68:0b:87:66", ATTR{dev_id}=="0x0", ATTR{type}=="1", 
KERNEL=="eth*", NAME="eth1"

# PCI device 0x14e4:0x1659 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="00:d0:68:0b:87:67", ATTR{dev_id}=="0x0", ATTR{type}=="1", 
KERNEL=="eth*", NAME="eth0"

server ~ # ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:d0:68:0b:87:67 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:d0:68:0b:87:66 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.3/24 brd 192.168.100.255 scope global eth1


The Linux router has 3 NICs in use. Two of them are identical Intel cards. It
controls 3 networks, and there's a backup NIC of the same brand. So it's
important for me to know the assignment of them, and again,
70-persistent-net.rules allows me to keep the ordered according to MAC
address:

router log # zgrep -i eth* kern.log-20130326.gz
Mar 25 18:31:47 router kernel: [    1.434939] pata_amd 0000:00:06.0: setting 
latency timer to 64
Mar 25 18:31:47 router kernel: [    1.436360] e1000e: Intel(R) PRO/1000 Network 
Driver - 1.9.5-k
Mar 25 18:31:47 router kernel: [    1.437229] e1000e 0000:02:00.0: 
(unregistered net_device): Interrupt Throttling Rate (ints/sec) set to dynamic 
conservative mode
Mar 25 18:31:47 router kernel: [    1.540889] e1000e 0000:02:00.0: eth0: (PCI 
Express:2.5GT/s:Width x1) 68:05:ca:03:05:50
Mar 25 18:31:47 router kernel: [    1.541039] e1000e 0000:02:00.0: eth0: 
Intel(R) PRO/1000 Network Connection
Mar 25 18:31:47 router kernel: [    1.541185] e1000e 0000:02:00.0: eth0: MAC: 
3, PHY: 8, PBA No: E46981-007
Mar 25 18:31:47 router kernel: [    1.542263] e1000e 0000:03:00.0: 
(unregistered net_device): Interrupt Throttling Rate (ints/sec) set to dynamic 
conservative mode
Mar 25 18:31:47 router kernel: [    1.644050] e1000e 0000:03:00.0: eth1: (PCI 
Express:2.5GT/s:Width x1) 68:05:ca:03:05:5d
Mar 25 18:31:47 router kernel: [    1.644196] e1000e 0000:03:00.0: eth1: 
Intel(R) PRO/1000 Network Connection
Mar 25 18:31:47 router kernel: [    1.644345] e1000e 0000:03:00.0: eth1: MAC: 
3, PHY: 8, PBA No: E46981-007
Mar 25 18:31:47 router kernel: [    1.644806] forcedeth: Reverse Engineered 
nForce ethernet driver. Version 0.64.
Mar 25 18:31:47 router kernel: [    1.645462] forcedeth 0000:00:07.0: setting 
latency timer to 64
Mar 25 18:31:47 router kernel: [    1.705185] forcedeth 0000:00:07.0: ifname 
eth2, PHY OUI 0x732 @ 1, addr f4:6d:04:e8:1d:d9
Mar 25 18:31:47 router kernel: [    1.705326] forcedeth 0000:00:07.0: highdma 
pwrctl mgmt gbit lnktim msi desc-v3
Mar 25 18:31:47 router kernel: [    1.705851] ehci_hcd 0000:00:02.1: setting 
latency timer to 64
Mar 25 18:31:47 router kernel: [    1.714810] hub 1-0:1.0: 10 ports detected
Mar 25 18:31:47 router kernel: [    1.715266] ohci_hcd 0000:00:02.0: setting 
latency timer to 64
Mar 25 18:31:47 router kernel: [    1.769859] hub 2-0:1.0: 10 ports detected
Mar 25 18:31:47 router kernel: [    1.773762] rtc0: alarms up to one year, y3k, 
114 bytes nvram, hpet irqs
Mar 25 18:31:47 router kernel: [    1.777459] Netfilter messages via NETLINK 
v0.30.
Mar 25 18:31:47 router kernel: [    1.777746] nf_conntrack version 0.5.0 (16384 
buckets, 65536 max)
Mar 25 18:31:47 router kernel: [    1.778444] ctnetlink v0.93: registering with 
nfnetlink.
Mar 25 18:31:47 router kernel: [    1.778660] ip_tables: (C) 2000-2006 
Netfilter Core Team
Mar 25 18:31:47 router kernel: [    1.779172] NET: Registered protocol family 17
Mar 25 18:31:47 router kernel: [   16.553800] forcedeth 0000:00:07.0: irq 49 
for MSI/MSI-X
Mar 25 18:31:47 router kernel: [   16.553824] forcedeth 0000:00:07.0: eth2: MSI 
enabled
Mar 25 18:31:50 router kernel: [   19.165275] e1000e: eth0 NIC Link is Up 1000 
Mbps Full Duplex, Flow Control: None
Mar 25 18:31:50 router kernel: [   19.441463] e1000e: eth1 NIC Link is Up 1000 
Mbps Full Duplex, Flow Control: None

router log # cat /etc/udev/rules.d/70-persistent-net.rules 
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x10d3 (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="68:05:ca:03:05:5d", ATTR{dev_id}=="0x0", ATTR{type}=="1", 
KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x10d3 (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="68:05:ca:03:05:50", ATTR{dev_id}=="0x0", ATTR{type}=="1", 
KERNEL=="eth*", NAME="eth1"

# PCI device 0x10de:0x03ef (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", 
ATTR{address}=="f4:6d:04:e8:1d:d9", ATTR{dev_id}=="0x0", ATTR{type}=="1", 
KERNEL=="eth*", NAME="eth2"
router log # ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN 
    link/ether f2:58:cb:48:72:b3 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
qlen 1000
    link/ether 68:05:ca:03:05:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.54.1/24 brd 192.168.54.255 scope global eth0
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
qlen 1000
    link/ether 68:05:ca:03:05:5d brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global eth1
5: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP 
qlen 1000
    link/ether f4:6d:04:e8:1d:d9 brd ff:ff:ff:ff:ff:ff
    inet <public IP> brd <munged> scope global eth2

If you can show me where my reasoning is technically wrong, and why/what
should be changed, I'm open to learn. At this point I don't see the kernel
messing up my setup(s).

Thanks,
Bruce
-- 
Happy Penguin Computers               >')
126 Fenco Drive                       ( \
Tupelo, MS 38801                       ^^
supp...@happypenguincomputers.com
662-269-2706 662-205-6424
http://happypenguincomputers.com/

A: Because it messes up the order in which people normally read text.           
                                                                                
                                                               
Q: Why is top-posting such a bad thing?                                         
                                                                                
                                                               
A: Top-posting.                                                                 
                                                                                
                                                               
Q: What is the most annoying thing in e-mail?

Don't top-post: http://en.wikipedia.org/wiki/Top_post#Top-posting

Reply via email to