我将 Qugaa bgpd 和 nsm 二进制文件捆绑到一个基于 Ubuntu 3.13.0-36-generic 内核的 docker 中。现在我在 linux 服务器上运行多个这些 docker。这些 docker 使用 docker-py 实例化。
我使用管道并在每个 docker 上创建了一个以太网接口,并分配了一个 172.17.xx.xx 类型的地址。我的 BGP 配置是这样的,所有 docker 都与 BGP 完全啮合。即 docker 上的每个 BGP 都连接到其他 docker 上运行的每个其他 BGP。
建立了 BGP 会话,并且 BGP 路由等绝对没问题。现在,当 docker 的数量超过 30 时,我永远无法连接到 bgp。“top”命令没有显示太多 cpu 使用情况,内存受到限制,网络活动不多,我也不希望在 BGP 进程中进行太多处理。
当我在容器上使用 tcpdump 时,这就是它的样子。
9 2014-09-26 18:17:54.997861 0a:60:4a:3b:56:31 ARP 44 谁有 172.17.1.32?告诉 172.17.1.6
当我运行 40 个 docker 时,我看到 40 个如上所示的此类 ARP 请求,然后是一个 ARP 回复。
但是,这种情况会不断发生,并且在短时间内大约会产生 1600 (40*40) 条此类消息。我相信这是不允许我使用“telnet localhost bgpd”命令连接到本地 bgp 模块的原因。
我不认为这是 Quagga 或 BGP 特有的任何东西。我怀疑与 docker 网络有关。有没有人遇到过这样的问题或知道如何解决这个问题或根本原因是什么?