注意:我已经有了解决这个问题的办法(如下所述),所以这只是一个“想知道”的问题。
我有一个高效的安装与约50个主机,包括运行xen 4的刀片和提供iscsi的equallogics。 所有的xen dom0s几乎都是纯Debian 5.这个configuration在每个dom0上都包含了几个网桥来支持xen桥接networking。 每个dom0总共有5到12个网桥,每个网段都服务一个vlan。 没有主机启用路由。
在某个时间点,我们将其中一台机器移到了一个包含raid控制器的新硬件上,所以我们安装了带有xen补丁的上游3.0.22 / x86_64内核。 所有其他机器运行debian xen-dom0-kernel。
从那时起,我们注意到在设置中的所有主机上,每2分钟就会发现以下错误:
[55888.881994] __ratelimit: 908 callbacks suppressed [55888.882221] Neighbour table overflow. [55888.882476] Neighbour table overflow. [55888.882732] Neighbour table overflow. [55888.883050] Neighbour table overflow. [55888.883307] Neighbour table overflow. [55888.883562] Neighbour table overflow. [55888.883859] Neighbour table overflow. [55888.884118] Neighbour table overflow. [55888.884373] Neighbour table overflow. [55888.884666] Neighbour table overflow.
arp表(arp -n)在每台机器上都没有显示超过20个条目。 我们尝试了明显的调整,并提出了
/proc/sys/net/ipv4/neigh/default/gc_thresh*
值。 最后到16384条目,但没有效果。 甚至连~2分钟的时间间隔都没有改变,这导致了我完全无关的结论。 tcpdump在任何接口上都没有显示不常见的ipv4stream量。 从tcpdump唯一有趣的发现是ipv6数据包爆发像:
14:33:13.137668 IP6 fe80::216:3eff:fe1d:9d01 > ff02::1:ff1d:9d01: HBH ICMP6, multicast listener reportmax resp delay: 0 addr: ff02::1:ff1d:9d01, length 24 14:33:13.138061 IP6 fe80::216:3eff:fe1d:a8c1 > ff02::1:ff1d:a8c1: HBH ICMP6, multicast listener reportmax resp delay: 0 addr: ff02::1:ff1d:a8c1, length 24 14:33:13.138619 IP6 fe80::216:3eff:fe1d:bf81 > ff02::1:ff1d:bf81: HBH ICMP6, multicast listener reportmax resp delay: 0 addr: ff02::1:ff1d:bf81, length 24 14:33:13.138974 IP6 fe80::216:3eff:fe1d:eb41 > ff02::1:ff1d:eb41: HBH ICMP6, multicast listener reportmax resp delay: 0 addr: ff02::1:ff1d:eb41, length 24
这让我想到这个问题可能与ipv6有关,因为我们在这个设置中没有ipv6服务。
唯一的提示是主机升级与问题的开始巧合。 我关掉了有问题的主机,错误消失了。 然后,我拿下了主机上的桥梁,当我把(ifconfig下来)一个特别的桥梁:
br-vlan2159 Link encap:Ethernet HWaddr 00:26:b9:fb:16:2c inet6 addr: fe80::226:b9ff:fefb:162c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:120 errors:0 dropped:0 overruns:0 frame:0 TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5286 (5.1 KiB) TX bytes:726 (726.0 B) eth0.2159 Link encap:Ethernet HWaddr 00:26:b9:fb:16:2c inet6 addr: fe80::226:b9ff:fefb:162c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1801 errors:0 dropped:0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:126228 (123.2 KiB) TX bytes:1464 (1.4 KiB) bridge name bridge id STP enabled interfaces ... br-vlan2158 8000.0026b9fb162c no eth0.2158 br-vlan2159 8000.0026b9fb162c no eth0.2159
错误再次消失。 正如你所看到的桥不包含ipv4地址,它只是成员eth0.2159所以没有stream量应该跨越它。 桥接器和接口.2159 / .2157 / .2158除了与它们连接的vlan之外,在所有方面都是相同的,拆除时没有任何影响。 现在我通过sysctl net.ipv6.conf.all.disable_ipv6禁用了整个主机上的ipv6并重新启动。 在此之后,即使桥br-vlan2159启用,也不会发生错误。
任何想法都欢迎。
我相信你的问题是因为net-next补丁修补的内核错误。
当网桥初始化时,由于试图重新哈希表的错误,组播侦听被禁用。 IGMP snooping阻止网桥转发每个HBH ICMPv6组播查询答复,导致邻居表填充ff02::邻居组播应答,不应该看到(尝试ip -6 neigh show nud all )。
正确的解决方法是尝试重新启用snooping,如: echo 1 > /sys/class/net/eth0/bridge/multicast_snooping 。 另一种方法是使邻居表的gc阈值大于广播域中主机的数量。
补丁在这里 。
当你遇到这个错误时, ip route show cache table all的返回值是什么?
arp -n或ip neigh show将只显示caching中的一些条目。
ip route show cache table all将更加详细(并将包括很多与V6相关的条目)。
我们尝试了明显的调整,并提出了/ proc / sys / net / ipv4 / neigh / default / gc_thresh *
你有没有为ipv6做同样的事情? 为我们解决了这个问题
再见,
– creis