本地首选项 VS 为两个 eBGP 路由器添加 AS 路径

网络工程 思科 路由 ipv4 bgp
2021-07-15 02:47:46

我有两个路由器,AS50 和 AS100,都在我的控制之下。由于它们使用不同的 ASN,它们应该是 eBGP 路由器。这两个路由器通过Internet VPN和租用线路连接,这意味着这两个路由器之间是双路径。

租用线路将优先选择数据包路由,而互联网 VPN 将作为备份。

我的问题:

  1. 根据我的阅读,Local pref 似乎只适用于 iBGP 而不是 eBGP 路由器,这是正确的吗?

  2. 我目前在两个路由器上都使用前置 AS-path out 方法,因此数据包涵盖双向路由。看起来工作正常,我在连接丢失时测试了几次,BGP 很快就会发生变化。但它之间确实有几个数据包丢失。那么当internet备份链路投入使用时,主链路恢复,切换到主链路前会丢几包丢包,是否可以在从internet VPN备份链路切回之前告诉BGP测试并确保主链路正常工作?

  3. 前置总是使用“出”方向,是否有任何实际情况可以使用前置“入”?

  4. 如果我不小心在 eBGP 路由器上使用本地 pref 而不是 prepend 会发生什么?

2个回答

您的大部分困惑似乎与您的其他重复问题有关,与上面的 3. 相同...:

预先添加通常与路由映射一起运行的 AS 路径,以调整来自包含此选项的路由器的出站流量

对不起,你弄错了;将您的 ASN 放在前面会调整到您的 ASN 的入站流量

prepend 是否与路由映射一起工作来调整入站流量?

是的,确实如此,但预先设置入站 bgp 路由会影响来自 BGP 路由器的出站流量这是 BGP 策略中的一个示例,用于在 eBGP 邻居的接收 AS 路径中添加 5 个以上的 last-as...

!
route-map FOO_in permit 10
 set as-path prepend last-as 5
!

让我们澄清一些事情......

  • neighbor x.x.x.x route-map FOO_out out调整到您的 ASN 的入站流量
  • neighbor x.x.x.x route-map FOO_in in调整从您的 ASN出站的流量使用本地偏好或其他一些标准来影响您的出站流量。

示例配置:

ip prefix-list MATCH_ALL permit 0.0.0.0/0
!
route-map AS100_out
 match ip address prefix-list MATCH_ALL
 ! --> Prepend so other ASN don't prefer this path
 !     NOTE: don't do this... 20 prepends is absurd in the real world.
 !          Five or ten ASN prepends should be sufficient
 set ip as-path prepend 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 65001 
!
route-map AS100_in
 match ip address prefix-list MATCH_ALL
 ! --> Set local-pref lower than 100, so we don't prefer this peer
 set local-preference 50
!
router bgp 777
 ! insert other "normal" bgp configuration here, network statement, etc..
 !
 neighbor 192.0.2.2 remote-as 100
 ! --> AS100_out adjusts *inbound* traffic
 neighbor 192.0.2.2 route-map AS100_out out
 ! --> AS100_in adjusts *outbound* traffic
 neighbor 192.0.2.2 route-map AS100_in in

注意:前置是骗人的;如果您在公告中预先设置了大量 ASN,则似乎没有人应该选择一条路径,但即使您这样做了,也不能保证下游路由器不会通过该预先设置的路径向您发送流量。现实情况是,互联网路由仍然是每跳/每 ASN 的决定,您仍然在某种程度上受制于其他人。请参阅下面的示例。

AS-prepend 流量工程的问题

严格来说,当您向多个提供商宣布您的前缀时,您会失去对入站路由路径的完全控制,因为下游会为返回流量做出独立的路由决策。此外,您的公告甚至可以在您发送后被下游提供商修改。

例子

这是可能发生的事情的一个例子。继续上面显示的示例配置...

  • 假设您有 AS 777;您从 AS 100 获得了一个可移植地址块 (2.2.0.0/22)。
  • 您是 AS 100 和 AS 200 双归属地
  • 您拥有拥有路由器 A 的公司需要访问的服务。
  • 假设 AS 100 与您没有良好的链接(可能由于您无法修复的物理层问题,它间歇性地破坏了流量)。因此,您对自己想,“我将在 AS100 之前添加大量 ASN 的所有公告,因此在我解决此问题之前,没有人会更喜欢 AS100 链接”

bgp 不对称

问题是您只能完全控制出站路由决策您无法完全控制入站...所以假设路由器 A 的管理员不知道您与 AS100 的链接是坏的。它们双宿主到 AS200 和 AS100,但 AS100 提供更便宜的传输,每 Mbps;所以Router A的工程师从AS100取全路由,只用AS200做备份(只取默认)。

AS 100 的工程团队决定为您发布的 2.2.2.0/22 公告设置高本地优先级。因此,路由器 A 上的完整路由和 AS 100 的本地首选项的组合意味着您已经失去了对通过 AS 100 到 AS 777 的入口流量的控制。

总而言之,作为 AS 777 的管理员,您可以强制 AS 777 的出口流量通过 AS 200 到达路由器 A,但从路由器 A 到 2.2.0.0/22 的流量仍将采用 AS 100(因为最佳路由是通过 AS 100,在路由器 A)。

  1. 正确的。localpref 不会发送到 eBGP 对等体。
  2. BGP 本身仅检查路由表中是否存在到目的地的路由。还有其他方法可以验证功能。如果您使用的是 Cisco 路由器,则可以使用 IP SLA 和对象跟踪或性能路由。其他品牌的路由器也有类似的功能。
  3. 否。Prepend 不会修改收到的 AS-PATH 属性。
  4. 见#1。本地首选项不会发送到 eBGP 对等体。

由于两个路由器都在您的控制之下,您可以使用以下命令设置 MED 属性

bgp always-compare-med

而不是使用作为路径长度。