我在2个ISP连接的FreeBSD中使用openbgpd。 我有我自己的AS号码和一个/ 22networking。 目前,我正在向整个networking广告/ 22。 入站stream量进来但我的出站stream量通过一个单一的链接。
我想通过两个链路分发我的出站stream量,这样出站stream量也是负载平衡的。
如何在freebsd中使用openbgpd进行configuration?
我目前的openbgpdconfiguration是作为参考。
AS 00my-as listen on xx.xx.xx.x router-id xx.xx.xx.x network aa.aa.aa.0/22 group "ISP1" { remote-as 11remoteas-1 neighbor bb.bb.bb.1 { descr "ISP1" announce all } } group "ISP2" { remote-as 22remoteas-2 neighbor cc.cc.cc.37 { descr "ISP2" announce all } } deny from any deny to any allow from bb.bb.bb.1 allow to bb.bb.bb.1 allow from cc.cc.cc.37 allow to cc.cc.cc.37
多年以来,我一直没有使用过openbgpd,所以,我会给你一些你可以应用到你的configuration的理论。
提供者可以向您发送路线。 通常他们会发送“默认”,“客户”或“完整”。 默认的路由就是这样,0.0.0.0/0会通告给你,你知道通过它们达到0.0.0.0/0(任何IP)。 您的情况听起来像是两个提供商都向您提供默认路由,并且最有可能的是,具有较低ASN的那个正在获取所有stream量(当数据包可以前往多个目的地并且ASpath相等时,ASN成为决胜因子长度等)。
“客户”饲料将让他们宣布与其直接相连的每条路线。 如果您有像Level3这样的提供商,则通过此Feed可能会看到一半的互联网。 如果您的其他提供商有较低的ASN,他们将得到任何没有直接连接到对方宣布他们的客户路线给您的stream量。
一个“完整的”饲料将有一个供应商知道如何去的每个网站的路线公告 – 而不仅仅是那些直接相连的网站。
你应该能够做到这样的事情:
显示ip bgp摘要(IOS命令)
应该列出某处收到的前缀数量。
如果两个现有提供商都向您发送默认路由,则您的连接目前已设置为故障转移。 提供商A停机,然后路由到提供商B.如果您从默认路由中获取客户提要,stream量将stream向具有最短ASpath的提供商以到达给定地址,并且将回退到默认值路由如果找不到地址。 如果您从两者获得完整的Feed,则取决于提供者之间的重叠,您可以将stream量发送到每个“最佳”path。
在我们的一台边界路由器上,我显示了310540个活动路由,确保你有足够的内存,并且configuration机器来处理来自两个提供者的路由。 你可以尝试从两个客户的路线,直到你变得更舒适。 或者从两个较小的提供商那里获取客户路线,看看情况如何变化。
这仍然没有“负载平衡”或平均分配stream量,这取决于您的stream量。 您可能会发现,一个提供商仍然获得最大的stream量份额。 在这一点上,你将需要做一些前缀/路线图来调整stream量,以便更喜欢一个对等。
一旦设置了路线图或ASN匹配来转移您的stream量,如果目标站点发生故障,并且他们的路由从该提供者中移除,则您的路由器仍然会将stream量从另一个连接发送出去。 BGP有点自我修复。
我们所做的是我们有一些基于ASN匹配的地图。
PROVIDER_A_TO PROVIDER_A_THROUGH PROVIDER_B_TO PROVIDER_B_THROUGH
瞻博networking比使用社区更容易,但也可以做到这一点。
我们的前缀列表可以查看目标是否是特定的ASN,如果是,则通过_TO映射。 如果ASN在_THROUGH中列出,它会更喜欢那个提供者。 由于我们的一个提供商与AT&T直接相连,因此PROVIDER_B_THROUGH与7018 | 7019(以及其他一些ASN)匹配,以便AT&Tstream量默认提供给提供商B.即使AT&T可以从两者中获得,我们也希望通过提供商B 。
我相信openbgpd有类似的方法。
BGP不是负载均衡协议。
让我重申,BGP 不是一个负载平衡协议。
如果所有stream量都只有一个连接,我的第一个猜测就是您没有从被忽略的提供商处获得完整的提要。 路由是优先给予更具体的路由,所以如果你有一个192.168.0.0/23的路由去提供商一,192.168.0.0/24和192.168.1.0/24两条路线去提供商乙,供应商一个将被完全忽略。 我不熟悉OpenBGP。 所以我不能告诉你如何validation一些东西的细节而不看。 但是你需要做的第一件事是validation两个提供者给你一个完整的feed,而不仅仅是一个默认的路由。
如果是这种情况,那么您需要查看入站stream量的路由首选项和入站stream量的path填充。 确保在configuration更改之间等待二十四到四十八小时,以确保您有足够大的数据集来确定更改的有效性。
build立一座桥梁。 Freebsd实际上会在当前前缀的上游function上进行负载平衡,并且会很好地平衡负载。 BGP不会。 你可以同时安装上游ISP和通知两个ISP每个你的/ 22,可能会拒绝你的/ 30万前缀,但iBGP会挑起这个。 iBGP在网桥上运行良好,因此不需要OSPF。 您现在有一个负载均衡器和完全冗余的BGP设置。 我们有好几个人喜欢他们在互联网上的连接。
首先要检查的是两个BGP会话是否都在工作。 使用
bgpctl显示摘要
看看你是否有消息与双方交换。
你应该删除“通告所有”,除非你想让你同行通过你路由他们的stream量,这通常是相反的;
Juste删除所有通知,你应该没事。