Hello, I've got a very strange problem. Lately I've been setting up my linux servers for network (layer2) redundancy with a bridge interface containing two ethernet interfaces connecting to two switches. So far I didn't have any problems with it, but now a very strange thing happens with a new server I'm installing. The server is an ibm x346 having two onboard BCM5721 cards, the switches are cisco 3550, and I've tested with kernel versions 2.6.10 and 2.4.28. The bpdu's from the cisco switches simply cannot be seen on the server, causing loops in l2 traffic. I've tested with sticking a hub between the c3550 and the server, the switch sends out the bpdu's, but they are not seen by linux (running tethereal). This happens only on eth0, on eth1 everything seems fine. Any IP traffic on eth0 goes through, no packet loss, no errors. And something even more strange: if I do an ifconfig eth0 0 up; brctl addif br0 eth0; it seems to be working fine, if I do it the other way round, then the bpdu's sent by the switches are lost somewhere. Considering all these, the problem seems to me a strange interaction between the bridge driver, the tg3 driver and the hardware in question. Any ideas? Greg
On Mon, Jan 10, 2005 at 10:05:56AM -0500, Neil Horman wrote:> Gergely Madarasz wrote: > >Hello, > > > >I've got a very strange problem. Lately I've been setting up my linux > >servers for network (layer2) redundancy with a bridge interface containing > >two ethernet interfaces connecting to two switches. So far I didn't have > >any problems with it, but now a very strange thing happens with a new > >server I'm installing. The server is an ibm x346 having two onboard > >BCM5721 cards, the switches are cisco 3550, and I've tested with kernel > >versions 2.6.10 and 2.4.28. > > > >The bpdu's from the cisco switches simply cannot be seen on the server, > >causing loops in l2 traffic. I've tested with sticking a hub between the > >c3550 and the server, the switch sends out the bpdu's, but they are not > >seen by linux (running tethereal). This happens only on eth0, on eth1 > >everything seems fine. Any IP traffic on eth0 goes through, no packet > >loss, no errors. > > > >And something even more strange: if I do an > >ifconfig eth0 0 up; brctl addif br0 eth0; > >it seems to be working fine, if I do it the other way > >round, then the bpdu's sent by the switches are lost somewhere. > > > >Considering all these, the problem seems to me a strange interaction > >between the bridge driver, the tg3 driver and the hardware in question. > > It looks to me like either order should work just fine, as long as the > IFF_PROMISC flag isn't cleared when you bring up the interface. Is > IF_PROMISC clear in ifconfig after you issue your ifconfig eth0 up command?ifconfig has never showed PROMISC on either of my bridged servers. ip shows it though. I noticed this before but couldn't find the reason and didn't seem important. This is on a machine with working bridge: # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:09:6B:49:89:80 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... # ip link list eth0 2: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:09:6b:49:89:80 brd ff:ff:ff:ff:ff:ff And this is on the problematic machine: # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0D:60:55:3B:02 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 .... # ip addr list eth0 2: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:0d:60:55:3b:02 brd ff:ff:ff:ff:ff:ff And even if didn't get promisc, tcpdump or tethereal would have made it so, when I was looking for the bpdu packets. Tethereal shows only this: 0.000000 00:0d:60:55:3b:02 -> 01:80:c2:00:00:00 STP Conf. Root = 65535/00:0d:60:55:3b:02 Cost = 0 Port = 0x8001 Greg
Gergely Madarasz wrote:> Hello, > > I've got a very strange problem. Lately I've been setting up my linux > servers for network (layer2) redundancy with a bridge interface containing > two ethernet interfaces connecting to two switches. So far I didn't have > any problems with it, but now a very strange thing happens with a new > server I'm installing. The server is an ibm x346 having two onboard > BCM5721 cards, the switches are cisco 3550, and I've tested with kernel > versions 2.6.10 and 2.4.28. > > The bpdu's from the cisco switches simply cannot be seen on the server, > causing loops in l2 traffic. I've tested with sticking a hub between the > c3550 and the server, the switch sends out the bpdu's, but they are not > seen by linux (running tethereal). This happens only on eth0, on eth1 > everything seems fine. Any IP traffic on eth0 goes through, no packet > loss, no errors. > > And something even more strange: if I do an > ifconfig eth0 0 up; brctl addif br0 eth0; > it seems to be working fine, if I do it the other way > round, then the bpdu's sent by the switches are lost somewhere. > > Considering all these, the problem seems to me a strange interaction > between the bridge driver, the tg3 driver and the hardware in question. > > Any ideas? > > Greg > - > To unsubscribe from this list: send the line "unsubscribe linux-net" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.htmlIt looks to me like either order should work just fine, as long as the IFF_PROMISC flag isn't cleared when you bring up the interface. Is IF_PROMISC clear in ifconfig after you issue your ifconfig eth0 up command? Neil -- /*************************************************** *Neil Horman *Software Engineer *Red Hat, Inc. *nhorman@redhat.com *gpg keyid: 1024D / 0x92A74FA1 *http://pgp.mit.edu ***************************************************/