一、AS_Path
AS_Path属性有四种形式,分别是:AS_Sequence、AS_Set、AS_Confed_Sequence和AS_Confed_Set。
- AS_Sequence:它是到目的地的路径上所经过的AS号的有序集合,按照顺序记录了路由经过的所有AS。
- AS_Set:它是到目的地的路径上所经过的AS号的无序集合。AS_Set通常用在路由聚合的场景。
- AS_Confed_Sequence:是联盟内子AS的一个有序集合。
- AS_Confed_Set:是联盟内子AS的一个无序集合,主要用在联盟内路由聚合的场景。
一、AS_Path属性
AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。
当BGP Speaker传播自身引入的路由时:
当BGP Speaker传播从其他BGP Speaker的Update报文中学习到的路由时:
- 当BGP Speaker将这条路由通告到EBGP对等体时,便会在Update报文中创建一个携带本地AS号的AS_Path列表。
- 当BGP Speaker将这条路由通告给IBGP对等体时,便会在Update报文中创建一个空的AS_Path列表。
- 当BGP Speaker将这条路由通告给EBGP对等体时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP设备根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
- 当BGP Speaker将这条路由通告给IBGP对等体时,不会改变这条路由相关的AS_Path属性。
项目 | 描述 |
---|---|
AS_Set | AS_Set内不管含有多少AS号,在BGP选路时都按照长度为1进行计算。 配置aggregate (BGP)命令进行手动路由聚合时,如果携带as-set参数,则生成AS_Set,否则不生成AS_Set。生成AS_Set时,
|
AS_Confed_Sequence和AS_Confed_Set | BGP计算AS_Path长度时不考虑AS_Confed_Sequence和AS_Confed_Set。 |
bestroute as-path-ignore命令 | 执行此命令后,BGP选路时,忽略AS_Path的比较。 |
apply as-path命令 | 通过在路由策略里使用此命令,可以清空、替换或者追加AS号。 说明:apply as-path命令会直接影响网络流量所经过的途径,另外也可能造成环路和选路错误,请谨慎使用。 |
peer public-as-only命令 | 执行此命令后,BGP发送Update报文时删除私有AS号,仅携带公有AS号。其中私有AS编号范围是64512~65534。 |
peer fake-as命令 | 执行此命令后,BGP可以将真实AS号隐藏,而使用伪AS号与对端建立邻居。 如果本端使用真实AS号与对端建立EBGP邻居,那么发送给邻居的路由的AS_Path列表就携带真实AS号。如果本端使用伪AS号与对端建立EBGP邻居,那么发送给邻居的路由的AS_Path列表就只携带伪AS号。 |
peer substitute-as命令 | 执行此命令后,当PE向指定对等体中的CE发布路由时,如果路由的AS_Path中有与CE相同的AS号,将被替换成PE的AS号后再发布。 说明:peer substitute-as仅适用于BGP MPLS IP/VPN里的PE设备上,配置不当会引起路由环路,请谨慎使用。 |
AS_Path的比较可以简单概括为比较AS_Sequence里的AS号数量,如果存在AS_Set时,AS_Path长度再加一。下面将使用示例详细介绍上述一些常用的命令。
二、实例
实验拓扑:
1.每台设备的接口IP
[R1]display ip interface brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.12.1/24 up up
GigabitEthernet0/0/1 10.0.16.1/24 up up
LoopBack0 10.0.1.1/32 up up(s)
[R2]display ip interface brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.12.2/24 up up
GigabitEthernet0/0/1 10.0.23.2/24 up up
LoopBack0 10.0.2.2/32 up up(s)
[R3]display ip interface brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.23.3/24 up up
GigabitEthernet0/0/1 10.0.34.3/24 up up
LoopBack0 10.0.3.3/32 up up(s)
[R4]display ip interface brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.34.4/24 up up
GigabitEthernet0/0/1 10.0.45.4/24 up up
LoopBack0 10.0.4.4/32 up up(s)
[R5]display ip interface brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.45.5/24 up up
GigabitEthernet0/0/1 10.0.56.5/24 up up
LoopBack0 10.0.5.5/32 up up(s)
[R6]display ip interface brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.0.56.6/24 up up
GigabitEthernet0/0/1 10.0.16.6/24 up up
LoopBack0 10.0.6.6/32 up up(s)
2.配置BGP,使用物理接口建立邻居关系
[R1]bgp 100
[R1-bgp]router-id 10.0.1.1
[R1-bgp]peer 10.0.12.2 as-number 500
[R1-bgp]peer 10.0.16.6 as-number 300
[R1-bgp]network 10.0.1.1 32
[R2]bgp 500 -----创建BGP
[R2-bgp]router-id 10.0.2.2
[R2-bgp]peer 10.0.12.1 as-number 100 -----建立邻居关系
[R2-bgp]peer 10.0.23.3 as-number 500
[R2-bgp]peer 10.0.23.3 next-hop-local -----更改下一跳属性
[R3]bgp 500
[R3-bgp]router-id 10.0.3.3
[R3-bgp]peer 10.0.23.2 as-number 500
[R3-bgp]peer 10.0.23.2 next-hop-local
[R3-bgp]peer 10.0.34.4 as-number 200
[R4]bgp 200
[R4-bgp]router-id 10.0.4.4
[R4-bgp]peer 10.0.34.3 as-number 500
[R4-bgp]peer 10.0.45.5 as-number 400
[R4-bgp]network 10.0.4.4 32
[R5]bgp 400
[R5-bgp]router-id 10.0.5.5
[R5-bgp]peer 10.0.45.4 as-number 200
[R5-bgp]peer 10.0.56.6 as-number 300
[R6]bgp 300
[R6-bgp]router-id 10.0.6.6
[R6-bgp]peer 10.0.16.1 as-number 100
[R6-bgp]peer 10.0.56.5 as-number 400
3.通过查看BGP路由,可以看到R1去往10.0.4.4有两条路,应为AS_Path属性是根据所经过AS最少选出最优路由:
4.接下来我们可以通过增加AS_Path属性来更改下一跳属性,有两个属性:
[R1]ip ip-prefix as-path permit 10.0.4.4 32 ----写一条前缀列表(编号自定义)
[R1]route-policy as-path permit node 10 ----写一条路由策略(编号自定义)
Info: New Sequence of this List.
[R1-route-policy]if-match ip-prefix as-path ----用路由策略区匹配前缀列表
[R1-route-policy]apply as-path 500 500 additive ----增加AS_Path(自定义)
(overwrite)----直接更改AS路径
[R1-route-policy]q
[R1]route-policy as-path permit node 20
Info: New Sequence of this List.
[R1-route-policy]q
注入BGP中10.0.12.2
[R1]bgp 100
[R1-bgp]peer 10.0.12.2 route-policy as-path import
5.配置完AS_Path可以发现,增加AS_Path下一跳属性发生变化,R4也是一样的配置,可以把增加属性改成(overwrite)----直接更改AS路径也行
[R4]ip ip-prefix as-path permit 10.0.1.1 32
[R4]route-policy as-path permit node 10
Info: New Sequence of this List.
[R4-route-policy]if-match ip-prefix as-path
[R4-route-policy]apply as-path 100 200 300 400 500 overwrite
Warning: The AS-Path lists of routes to which this route-policy is applied
will be overwritten. Continue? [Y/N]y
[R4-route-policy]q
[R4]route-policy as-path permit node 20
Info: New Sequence of this List.
[R4-route-policy]q
[R4]bgp 200
[R4-bgp]peer 10.0.34.3 route-policy as-path import