鸟 bgp 公制距离

网络工程 路由 bgp 隧道
2021-07-27 17:43:06

在我的实验室中,我有两个连接到不同 ISP 的路由器。
它们不是通过电线直接连接,而是通过隧道连接。

通过那个隧道,我曾经创建一个 iBGP 对等体,它们交换路由。

现在,路由器 A 向路由器 B 发送了一条更好的路由,后者现在将其安装到其路由表中。

现在路由器 B “能够”通过路由器 A 通过隧道到达所有东西。

上面的场景描述了我的问题,我认为解决方案是检查来自同一 AS 中的邻居路由器的传入路由并添加更长的距离,以便现有路由不会改变。

这甚至是一个很好的解决方案吗?如果是,我怎么能做到这一点?

到目前为止,这是我的过滤器配置,但不幸的是,它无法正常工作:

import filter {
   if bgp_path ~ [= AS_NUMBER =] then
       {
             bgp_path.prepend(AS_NUMBER);
             bgp_path.prepend(AS_NUMBER);
             bgp_path.prepend(AS_NUMBER);
             bgp_path.prepend(AS_NUMBER);
             bgp_path.prepend(AS_NUMBER);
             bgp_path.prepend(AS_NUMBER);
             bgp_path.prepend(AS_NUMBER);
             accept;
           }
         reject;
 };

但问题似乎更复杂:

我需要在两个 iBGP 路由器上调整首选项。

例如,路由器 A 的优先级高于路由器 B,路由器 B 将通过路由器 A 发送所有内容。

要么我的设置有误,要么通过隧道执行 iBGP 对等体是错误的。

2个回答

您的问题似乎与 iBGP 规则有关,即 iBGP 路由器不会通告从另一个 iBGP 发言者那里学到的路由。问题是 iBGP 不会改变 AS_PATH,这就产生了路由循环的问题。为避免路由循环,iBGP 发言者不会向任何其他通过 iBGP 学习的 iBGP 发言者通告前缀。这就是 iBGP 需要全网状网络(每个 iBGP 发言者必须与其他所有 iBGP 发言者建立连接)或缓解措施(例如路由反射器或联盟)的原因。

如果您试图通过隧道通告从另一个 iBGP 发言者那里学到的前缀,那将不起作用。您需要通过隧道使用 eBGP,或者将隧道末端的路由器设置为路由反射器或单独的联盟。路由反射器必须与作为路由反射器的每个路由器建立连接,或者联盟必须具有全网状的 iBGP 扬声器。

用于修改 eBGP 路由的方法,例如 AS_PATH 前置或更改度量 (MED),适用于 eBGP,而不是 iBGP。

如果我理解正确(因为它没有明确阐述),您遇到的问题与通过提供商 ISPA 和 ISPB 学习的相同前缀的路由优先级如何有关,出于某种原因,当离开您的网络的流量到达路由器 B 时不通过 ISPB 链接,而是通过隧道 --> 路由器 A --> ISPA 链接,即使路由器 B 也有从 ISPB 提供商处收到的相同目的地的路由。

如果您想更改此行为,并且希望在流量到达时使用直接连接到该路由器的提供商,那么您必须调整或删除为路由器 A 和 B 之间的 iBGP 会话配置的本地首选项,作为本地首选项是可以优先处理 BGP 决策的顺序的参数,有关详细信息,请参阅此链接http://www.techrepublic.com/blog/data-center/understand-how-the-bgp-best -path-selection-algorithm-works-on-your-router/

此外,正如 Ron Maupin 用户之前已经解释过的那样,预先设置或更改度量 (MED) 的 AS_PATH 不会影响 iBGP 行为,这些属性仅更改 eBGP 行为,并允许您定义传入流量的策略不适用于出站流量,这意味着您可以定义与您的 ASN 关联的前缀如何向全世界公布的策略。