gpt4 book ai didi

docker 和 Quagga BGP

转载 作者:行者123 更新时间:2023-12-02 19:13:46 24 4
gpt4 key购买 nike

我将 Qugaa bgpd 和 nsm 二进制文件捆绑到一个基于 Ubuntu 3.13.0-36-generic 内核的 docker 中。现在我在 linux 服务器上运行多个这些 docker。这些 docker 使用 docker-py 实例化。

我使用管道并在每个 docker 上创建了一个以太网接口(interface),并分配了一个 172.17.xx.xx 类型的地址。我的 BGP 配置是这样的,所有 docker 都与 BGP 完全啮合。即 docker 上的每个 BGP 都连接到其他 docker 上运行的所有其他 BGP。

建立了 BGP session ,并且 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 网络有关。有没有人遇到过这样的问题或知道如何解决这个问题或根本原因是什么?

最佳答案

最后我可以找到这背后的根本原因并解决了这个问题。这是由于 docker 实例的数量、我在每个 docker 上创建的 MAC 条目的数量以及我的 linux 服务器上指定的默认 ARP 缓存大小为 1024 的组合。

在我的情况下,我最终将 MAC 条目创建为( docker 数量 * 我通过管道创建的以太网接口(interface)数量)。所以当每个 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”命令

关于 docker 和 Quagga BGP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26093350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com