On Wed, 20 Apr 2011 00:36:26 +0200 Santiago Garcia Mantinan <ma...@manty.net> wrote:
> Hi! > > I'm getting ready the new version of the bridge-utils and so I'm thinking > again about this bug, the tests to me seem quite clear, either I disable > MAXWAIT for all the cases (no matter if stp is enabled or disabled) or I > keep MAXWAIT with reasonable times, and 0 doesn't seem a reasonable time. > > Disabling MAXWAIT by default doesn't make any sense to me, if the user wants > that he can set MAXWAIT to 0 and that's it. > > Setting different timings from the ones that I was using makes sense, > current kernels allow us to see bridge parameters even though stp is > disabled, so we can make better calculations and divide by two the times for > the non stp case, and even on this case one can see if the interfaces are > forwarding or not, so we can wait until maxwait or at least one interface is > forwarding. > > Why this all makes sense... well, see the tests... > > With a definition like this: > > iface br0 inet static > ... > bridge_ports eth1 > bridge_stp off > bridge_maxwait 0 > > We do: > dis:~# time ifup br0 > > real 0m27.238s > user 0m0.060s > sys 0m0.148s > > Why is this... I had installed openntpd and it was trying to do network work > before the bridge was forwarding (yes, the bridge won't forward inmediately > even if you have stp set to off, it has to wait at least the forwarding > time, by default it is 15 seconds if I recall well). > > After disabling openntpd's ifup scripts ifup would exis inmediatly but we > can see that the bridge still takes some time to forward... > > dis:~# ifup br0;ping 192.168.1.90 > PING 192.168.1.90 (192.168.1.90) 56(84) bytes of data. > From 192.168.1.180 icmp_seq=9 Destination Host Unreachable > From 192.168.1.180 icmp_seq=15 Destination Host Unreachable > From 192.168.1.180 icmp_seq=18 Destination Host Unreachable > 64 bytes from 192.168.1.90: icmp_req=21 ttl=64 time=0.285 ms > > If we look at the interface on the bridge to see what it is doing while I'm > pinging 192.168.1.90: > > dis:~# ifup br0;tcpdump -n -i eth1 > tcpdump: WARNING: eth1: no IPv4 address assigned > tcpdump: verbose output suppressed, use -v or -vv for full protocol decode > listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes > 21:42:11.424263 IP 0.0.0.0 > 224.0.0.1: igmp query v2 > 21:42:11.424283 IP6 fe80::213:8fff:fea7:afb4 > ff02::1: HBH ICMP6, multicast > listener querymax resp delay: 1000 addr: ::, length 24 > 21:42:17.556261 IP 0.0.0.0 > 224.0.0.1: igmp query v2 > 21:42:17.556283 IP6 fe80::213:8fff:fea7:afb4 > ff02::1: HBH ICMP6, multicast > listener querymax resp delay: 1000 addr: ::, length 24 > 21:42:32.680263 ARP, Request who-has 192.168.1.90 tell 192.168.1.180, length > 28 > 21:42:32.680624 ARP, Reply 192.168.1.90 is-at 00:05:5d:79:5b:56, length 46 > 21:42:32.680641 IP 192.168.1.180 > 192.168.1.90: ICMP echo request, id 5479, > seq 22, length 64 > 21:42:32.680919 IP 192.168.1.90 > 192.168.1.180: ICMP echo reply, id 5479, > seq 22, length 64 > > As you can see, the ARP of the ping is forwarded after 21 seconds. > > So, my proposal would be: > > Try to calculate MAXWAIT on the safe side, I still have to see why it > sometimes takes a little longer than expected, I'm seeing 2 seconds the > interface is disabled, then in the case of nostp it starts listening for the > defined forwarding time, and then goes forwarding, that would mean 17 > seconds not 21, so I'll have to investigate a little more on this. > > If the state info is available (current kernels do have this available) then > never wait for MAXTIME but only until one of the interfaces is forwarding. > > If somebody doesn't want to wait he has several options, one would be to > lower the forwarding times carefully (lowering them too much can cause > troubles) or disable waiting setting MAXWAIT to 0 on the bridge definition, > but knowing that network won't be available until a later time, which means > that dhcp won't probably work, mounting network filesystems at boot time > won't either, ... > > That do you think about this? Latest kernel (2.6.39) ignores forwarding delay unless Spanning Tree is enabled. Long term plan is to use RSTP so forwarding delay will disappear (2.6.42?) -- -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org