我将Qugaa和nsm二进制文件绑定到一个基于Ubuntu3.13.0-36-泛型内核的坞中。现在,我在linux服务器上运行了多个这些dockers。使用docker实例化这些docker。
我使用管道,并在每个码头上创建了一个以太网接口,并分配了一个172.17.xx.xx类型的地址。我的BGP配置是这样的,所有的码头工人是完全网格的有关BGP。也就是说,码头上的每一个BGP都连接到在其他码头上运行的每一个BGP。
BGP会议建立和BGP路线等绝对好。现在,当码头工人人数超过30,我永远无法连接到bgp。"top“命令显示cpu使用率不高,内存有限,网络活动不多,我也不期望BGP进程中有太多的处理。
当我在容器上使用tcpdump时,它看起来就是这样的。
2014-09-26 18:17:54.997861 0 A:60:4A:3B:56:31 ARP 44谁有172.17.1.32?告诉172.17.1.6
当我运行40个码头工人时,我看到40个这样的ARP请求,如上面所示,然后是一个ARP回复。
然而,这种情况持续发生,并且它大约在短时间内导致1600 (40*40)这样的消息。我相信这就是不允许我使用“bgpd”命令连接到本地bgp模块的原因。
我不认为这是任何特定的,无论是Quagga或BGP。我怀疑这和码头人的关系网有关。有没有人有这样的问题,或者知道如何解决这个问题,或者根本原因是什么?
发布于 2014-10-18 16:25:42
最后,我可以找到这背后的根本原因,也修正了这一点。这是由于dockers实例的数量、我在每个码头上创建的MAC条目的数量以及在我的linux服务器上指定为1024的默认ARP缓存大小的组合。
在我的例子中,我最终将MAC条目创建为( dockers的数量*我通过管道工作创建的以太网接口的数量)。因此,当每个DOCKER上的MAC条目数超过默认大小1024时,就会出现问题。
在/etc/sysctl.conf文件的末尾添加以下行,或者修改如下,如果/etc/sysctl.conf中已经有这些条目,则可以解决这个问题。
net.ipv4.neigh.default.gc_thresh1 = 8192
net.ipv4.neigh.default.gc_thresh2 = 12288
net.ipv4.neigh.default.gc_thresh3 = 16384修改后,执行"sysctl -p“命令。
https://stackoverflow.com/questions/26093350
复制相似问题