BGP AS_PATH属性在防止路由环路中的具体工作机制?

BGP 的 AS_PATH属性是其在自治系统(AS)间防止路由环路的核心机制。它就像一个记录了路由“护照”盖章页的路径列表。下面我将通过一个例子详细说明其工作机制,并介绍相关的华为配置。

AS_PATH 属性防环机制概览

特性

说明

在防环中的作用

​属性类型

公认必遵 (Well-known mandatory) 

所有 BGP 实现都必须识别和处理此属性。

​记录内容​

路由从起源 AS 到当前 AS 所经过的所有 AS 编号序列(对于 AS_SEQUENCE 类型)

提供了路径的完整历史记录。

​EBGP 更新规则​

路由通告给 EBGP​对等体时,在 AS_PATH 列表的最左端添加本地的 AS 号

确保路径信息在 AS 间传播时得以更新。

​IBGP 更新规则​

路由通告给 IBGP对等体时,AS_PATH 属性保持不变

保持 AS 内部对路径的一致视图。

​环路检测​

BGP 路由器收到路由更新时,会检查 AS_PATH 列表中是否已包含本地的 AS 号。如果包含,则丢弃该路由,防止形成环路。

这是防环机制的核心操作。

​选路作用​

在其他条件相当的情况下,AS_PATH 较短的路由更优

影响 BGP 的最佳路径选择。

工作机制举例

假设有四个自治系统:AS 100AS 200AS 300​AS 400。AS 100 内有一条路由 10.0.0.0/8 需要传播给其他 AS。

1.​路由始发与初次传播​

  1. AS 100 中的路由器 R1 始发路由 10.0.0.0/8,并通过 eBGP 将其通告给 AS 200 中的路由器 R2。此时,该路由的AS_PATH为 100
  2. R2 通过 iBGP 将这条路由通告给同属 AS 200 的路由器 R3。由于是 iBGP 通告,AS_PATH 保持不变,仍为 100

2.​路由继续传播与 AS_PATH 更新

  1. R3 通过 eBGP 将路由 ​​10.0.0.0/8​​ 通告给 AS 300 中的路由器 R4。因为是 eBGP 通告,R3 会在 AS_PATH 的最左端添加自己的 AS 号 200,此时 AS_PATH 变为 200 100
  2. R4 通过 iBGP 将路由通告给同属 AS 300 的路由器 R5,AS_PATH 保持不变,仍为 200 100
  3. R5 通过 eBGP 将路由通告给 AS 400 中的路由器 R6。同样,eBGP 通告会添加本地 AS 号 300,此时 AS_PATH 变为 300 200 100

3.​环路检测与防止​​:
假设由于某种错误配置,AS 400 中的路由器 R6 又试图将这条通往 ​​10.0.0.0/8​的路由(当前 AS_PATH 为 300 200 100)通告回给 AS 200 中的某台路由器(例如 R7)。

  1. 当 R7 收到这条来自 R6 的 eBGP 路由更新时,它会检查该路由的 AS_PATH 属性
  2. R7 发现 AS_PATH 列表 300 200 100 中包含了自己所在的 AS 号 200
  3. 根据 BGP 的防环机制,R7 会认为此路由形成了环路,从而丢弃该路由更新​​,不会将其加入 BGP 路由表,也不会继续传播。

华为设备相关配置解析

在华为设备上,你可以通过以下命令查看和管理 AS_PATH 属性:

​查看BGP路由表的AS_PATH属性:使用 display bgp routing-table 命令可以查看 BGP 路由表,其中就包含了 AS_PATH 信息。

<HUAWEI> display bgp routing-table

在输出中,Path/Ogn 字段显示的就是 AS_PATH 信息(例如 300 200 100 i)。

​配置AS_PATH过滤​​(基于正则表达式):你可以创建 AS_PATH 过滤器,并在 BGP 对等体上应用,以实现基于路径的路由控制。

/* 创建AS_PATH过滤器,拒绝任何包含AS300的路由 */

ip as-path-filter 1 deny _300_

ip as-path-filter 1 permit .*

/* 进入BGP视图 */

bgp 200

/* 在向特定对等体(例如10.1.1.1)发送路由时应用该过滤器 */

peer 10.1.1.1 as-path-filter 1 export

这可以用于阻止传播来自特定 AS 的路由。

​修改AS_PATH属性(谨慎操作):通过路由策略(Route-Policy)可以修改 BGP 路由的 AS_PATH 属性。

/* 创建路由策略 */

route-policy MODIFY_ASPATH permit node 10

 apply as-path 500 600 additive  /* 在原有AS_PATH前添加500和600 */# 或者使用 overwrite 参数覆盖原有AS_PATH# apply as-path 500 600 overwrite

/* 在BGP视图下应用策略 */

bgp 200

 peer 10.1.1.1 route-policy MODIFY_ASPATH export

​注意​​:修改 AS_PATH 属性​​必须非常谨慎​​,因为错误的修改可能会破坏防环机制或导致路由不可达。

​其他相关配置​​:

  1. as-path-limit limit: 用于配置 AS_PATH 属性中 AS 号的最大个数,超过此限制的路由会被丢弃。
  2. undo check-first-as: 取消检查 EBGP 对等体发来的更新消息中 AS_PATH 属性的第一个 AS 号是否必须是对等体所在的 AS。慎用此命令,因为它可能增大环路风险
  3. peer { ipv6-address | group-name } substitute-as: 替换 AS_PATH 属性中的 AS 编号。

 注意事项

  1. IBGP 与防环:AS_PATH 属性主要防止的是 AS 之间(eBGP)的路由环路
  2.  在 AS 内部(iBGP),防止环路主要依赖 IBGP 水平分割规则(从 IBGP 对等体学到的路由不会传递给其他 IBGP 对等体)以及​​路由反射器(Route Reflector)联盟(Confederation)的特定防环属性(Originator_ID 和 Cluster_List)。
  3. 谨慎修改 AS_PATH:虽然可以通过路由策略(如 apply as-path手动添加或修改 AS_PATH(例如添加重复的 AS 号以人为增加路径长度,影响选路),但这必须非常谨慎。错误的修改可能会破坏防环机制或导致路由不可达。
  4. 伪装 AS (Fake-AS) 场景:当设备使用 fake-as 配置伪装 AS 号建立 eBGP 邻居时,BGP 防环检查依据的是设备的真实 AS 号,而不是伪装的 AS 号

 总结

BGP 的 AS_PATH 属性通过记录路由经过的自治系统序列,并在 eBGP 路由器传播路由时添加本地 AS 号,使得任何 BGP 路由器在收到路由时都能通过​​检查该列表中是否已包含自身 AS 号来有效防止域间路由环路。

华为设备提供了丰富的命令来查看、过滤和修改(谨慎使用)AS_PATH 属性,这为网络管理员提供了灵活的路由控制手段。

希望这个解释和例子能帮助你理解 BGP AS_PATH 属性在防止路由环路中的工作机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值