Subject: Re: [PATCH net-next-2.6] bonding: allow arp_ip_targets to be on a separate vlan from bond device

From: Eric Dumazet <[email-masked]>
Date: Tue, 01 Dec 2009 05:11:24 +0100

Andy Gospodarek a écrit :
> On Mon, Nov 30, 2009 at 04:00:38PM -0800, Jay Vosburgh wrote:
>> Andy Gospodarek <[email-masked]> wrote:
>>
>>> This allows a bond device to specify an arp_ip_target as a host that is
>>> not on the same vlan as the base bond device.  A configuration like
>>> this, now works:
>>>
>>> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
>>>    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
>>>    inet 127.0.0.1/8 scope host lo
>>>    inet6 ::1/128 scope host
>>>       valid_lft forever preferred_lft forever
>>> 2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 qlen 1000
>>>    link/ether 00:13:21:be:33:e9 brd ff:ff:ff:ff:ff:ff
>>> 3: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 qlen 1000
>>>    link/ether 00:13:21:be:33:e9 brd ff:ff:ff:ff:ff:ff
>>> 8: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue
>>>    link/ether 00:13:21:be:33:e9 brd ff:ff:ff:ff:ff:ff
>>>    inet6 fe80::213:21ff:febe:33e9/64 scope link
>>>       valid_lft forever preferred_lft forever
>>> 9: bond0.100@bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue
>>>    link/ether 00:13:21:be:33:e9 brd ff:ff:ff:ff:ff:ff
>>>    inet 10.0.100.2/24 brd 10.0.100.255 scope global bond0.100
>>>    inet6 fe80::213:21ff:febe:33e9/64 scope link
>>>       valid_lft forever preferred_lft forever
>> 	I'm not quite clear here on exactly what it is that doesn't
>> work.
>>
>> 	Putting the arp_ip_target on a VLAN destination already works
>> (and has for a long time); I just checked against a 2.6.32-rc to make
>> sure I wasn't misremembering.
>>
>> 	Perhaps there's some nuance of "not on the same vlan as the base
>> bond device" that I'm missing.  What I see working before me is, e.g., a
>> bond0.777 VLAN interface atop a regular bond0 active-backup with a
>> couple of slaves; bond0 may or may not have an IP address of its own.
>> The arp_ip_target destination is on VLAN 777 somewhere.
> 
> Do you have net.ipv4.conf.all.arp_ignore set to 0 and/or an IP address
> assigned on bond0?  I can easily reproduce this with no IP on bond0 and
> net.ipv4.conf.all.arp_ignore = 1.
> 
> I can't say for sure that the sysctl setting makes a difference, but I
> have that on all my test rigs, so it's worth mentioning.
> 
>> 	Is this what your patch is meant to enable, or is it something
>> different?  I'm pulling down today's net-next to see if this is
>> something that broke recently.
>>
> 
> I first tested and found the problem while running 2.6.30-rc series
> after it was reported to be a problem on RHEL5.  It's not clear how long
> it has been broken, but this situation is odd enough that it probably
> never worked as it was never tested.
> 

Strange, I cannot reproduce the problem here, with bnx2/tg3 adapters,
and net-next-2.6. What is your NIC driver ?

# ifconfig bond0
bond0     Link encap:Ethernet  HWaddr 00:1E:0B:EC:D3:D2
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:61787693 errors:0 dropped:0 overruns:0 frame:0
          TX packets:61894413 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:750916661 (716.1 Mb)  TX bytes:991607878 (945.6 Mb)

# ifconfig vlan.103
vlan.103  Link encap:Ethernet  HWaddr 00:1E:0B:EC:D3:D2
          inet addr:192.168.20.110  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:236770 errors:0 dropped:0 overruns:0 frame:0
          TX packets:182838 errors:0 dropped:6 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:13697089 (13.0 Mb)  TX bytes:206093300 (196.5 Mb)

# ifconfig vlan.825
vlan.825  Link encap:Ethernet  HWaddr 00:1E:0B:EC:D3:D2
          inet addr:10.170.73.123  Bcast:0.0.0.0  Mask:255.255.255.128
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:61549795 errors:0 dropped:0 overruns:0 frame:0
          TX packets:61584427 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3672807415 (3502.6 Mb)  TX bytes:283329099 (270.2 Mb)

# ifconfig eth1   (bnx2)
eth1      Link encap:Ethernet  HWaddr 00:1E:0B:EC:D3:D2
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:1596 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:110466 (107.8 Kb)  TX bytes:512 (512.0 b)
          Interrupt:16 Memory:fa000000-fa012800

# ifconfig eth2    (tg3)
eth2      Link encap:Ethernet  HWaddr 00:1E:0B:EC:D3:D2
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:61786578 errors:0 dropped:0 overruns:0 frame:0
          TX packets:61894510 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:750842426 (716.0 Mb)  TX bytes:991618552 (945.6 Mb)
          Interrupt:19

# cat /proc/sys/net/ipv4/conf/all/arp_ignore
1
# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth2
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
ARP Polling Interval (ms): 1000
ARP IP target/s (n.n.n.n form): 192.168.20.254

Slave Interface: eth1
MII Status: up
Link Failure Count: 9
Permanent HW addr: 00:1e:0b:ec:d3:d2

Slave Interface: eth2
MII Status: up
Link Failure Count: 6
Permanent HW addr: 00:1e:0b:92:78:50