我们在这里设置了大约30个运行Xen 4.0.3的Dom0,其Dom0内核为2.6.32.57 x86_64。 (我们已经看到了与之前的Xen 4.0.1和内核2.6.32.2X相同的行为)
有时突然间,xen停止正确添加新的(或迁移的)DomU的vif。 接口在那里,被添加到正确的网桥,但网桥端口永远不会收到任何stream量。 所有在这个时候已经连接的接口工作没有问题。 这同时发生在dom0上的所有网桥(我们有11个网桥,每个主机有4个物理接口,stp上的网桥closures)。
如果发生这种情况,在通过xen添加接口时会在日志中看到这一点,这似乎缺less进入转发状态的网桥,只是添加了接口:
[809766.761058] device r624-eth0 entered promiscuous mode [809766.773664] br-vlan2801: port 1(r624-eth0) entering learning state [809766.857665] device r624-eth1 entered promiscuous mode [809766.872226] br-vlan2802: port 2(r624-eth1) entering learning state [809768.377613] blkback: ring-ref 8, event-channel 8, protocol 2 (x86_32-abi) [809776.810481] r624-eth0: no IPv6 routers present [809777.870549] r624-eth1: no IPv6 routers present
之后r624-eth0的IP不能ping通。 tcpdump -i br-vlan2801显示了ping主机的ARP请求, tcpdump -i r624-eth0什么也没有显示。 所以数据包到达桥,但不会转发到VIF(据我了解)。 通过ifconfig br-vlan2801 down网桥并没有帮助 – 但删除并重新创build网桥解决了这个问题。 这使我得出这样的结论:Xen不是这个问题的一部分。
如果我只是通过ifconfig br-vlan2801 down / up重新启动网桥接口ifconfig br-vlan2801 down / up我看到:
Jul 5 16:43:52 kernel: [811367.029655] br-vlan2159: port 4(b434-eth1) entering disabled state Jul 5 16:43:52 kernel: [811367.029893] br-vlan2159: port 3(d434-eth1) entering disabled state Jul 5 16:43:52 kernel: [811367.030121] br-vlan2159: port 2(w434-eth1) entering disabled state Jul 5 16:43:52 kernel: [811367.030350] br-vlan2159: port 1(eth0.2159) entering disabled state Jul 5 16:44:15 kernel: [811389.818841] br-vlan2159: port 4(b434-eth1) entering learning state Jul 5 16:44:15 kernel: [811389.819076] br-vlan2159: port 3(d434-eth1) entering learning state Jul 5 16:44:15 kernel: [811389.819307] br-vlan2159: port 2(w434-eth1) entering learning state Jul 5 16:44:15 kernel: [811389.819536] br-vlan2159: port 1(eth0.2159) entering learning state Jul 5 16:44:25 kernel: [811399.959567] br-vlan2159: no IPv6 routers present
如果我删除桥并重新configuration它,当桥再次出现时我会看到:
Jul 5 16:47:23 kernel: [811578.178683] br-vlan2159: port 4(w434-eth1) entering learning state Jul 5 16:47:23 kernel: [811578.178917] br-vlan2159: port 3(eth0.2159) entering learning state Jul 5 16:47:23 kernel: [811578.179146] br-vlan2159: port 2(d434-eth1) entering learning state Jul 5 16:47:23 kernel: [811578.179374] br-vlan2159: port 1(b434-eth1) entering learning state Jul 5 16:47:34 kernel: [811588.789566] br-vlan2159: no IPv6 routers present Jul 5 16:47:38 kernel: [811593.178568] br-vlan2159: port 4(w434-eth1) entering forwarding state Jul 5 16:47:38 kernel: [811593.178801] br-vlan2159: port 3(eth0.2159) entering forwarding state Jul 5 16:47:38 kernel: [811593.179029] br-vlan2159: port 2(d434-eth1) entering forwarding state Jul 5 16:47:38 kernel: [811593.179255] br-vlan2159: port 1(b434-eth1) entering forwarding state
在这之后,网桥和连接到它的所有接口按预期工作。
正如所有的桥梁在同一时间,我不会责怪brctl工具,但在内核深处。 由于它是随机发生的,只有每隔一个月我都没有可能用新的内核进行交叉检查。
主要的问题是(为我的理解):为什么桥在刚添加/设置的端口上不进入前进状态?
如果端口在学习中,对我们来说是什么?
#brctl showstp if1.ext (5) port id 8005 state learning designated root 8000.d8d3855f7f58 path cost 100 designated bridge 8000.d8d3855f7f58 message age timer 0.00 designated port 8005 forward delay timer 17075646.29 designated cost 0 hold timer 0.00 flags
从网桥中删除并添加0转发延迟的接口:
#brctl delif xenbr1 if1.ext #brctl setfd 0 #brctl addif xenbr1 if1.ext