BGP的路由属性-------AS_Path

一、AS_Path

AS_Path属性有四种形式,分别是:AS_Sequence、AS_Set、AS_Confed_Sequence和AS_Confed_Set。

  1. AS_Sequence:它是到目的地的路径上所经过的AS号的有序集合,按照顺序记录了路由经过的所有AS。
  2. AS_Set:它是到目的地的路径上所经过的AS号的无序集合。AS_Set通常用在路由聚合的场景。
  3. AS_Confed_Sequence:是联盟内子AS的一个有序集合。
  4. AS_Confed_Set:是联盟内子AS的一个无序集合,主要用在联盟内路由聚合的场景。

一、AS_Path属性

        AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。

当BGP Speaker传播自身引入的路由时:

当BGP Speaker传播从其他BGP Speaker的Update报文中学习到的路由时:

  1. 当BGP Speaker将这条路由通告到EBGP对等体时,便会在Update报文中创建一个携带本地AS号的AS_Path列表。
  2. 当BGP Speaker将这条路由通告给IBGP对等体时,便会在Update报文中创建一个空的AS_Path列表。
  3. 当BGP Speaker将这条路由通告给EBGP对等体时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP设备根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
  4. 当BGP Speaker将这条路由通告给IBGP对等体时,不会改变这条路由相关的AS_Path属性。
影响AS_Path计算的关键点

项目

描述

AS_Set

AS_Set内不管含有多少AS号,在BGP选路时都按照长度为1进行计算。

配置aggregate (BGP)命令进行手动路由聚合时,如果携带as-set参数,则生成AS_Set,否则不生成AS_Set。生成AS_Set时,
  • 如果参与聚合的路由具有相同的AS_Sequence,则聚合后路由的AS_Sequence中也包含参与聚合路由的AS_Sequence,并且此时AS_Set为空。
  • 如果参与聚合的路由具有不同的AS_Sequence,则聚合后这些AS_Sequence中包含的AS号都会进入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长度再加一。下面将使用示例详细介绍上述一些常用的命令。

二、实例

实验拓扑:

BGP的路由属性-------AS_Path_第1张图片

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最少选出最优路由:

BGP的路由属性-------AS_Path_第2张图片

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路径也行

BGP的路由属性-------AS_Path_第3张图片

[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

BGP的路由属性-------AS_Path_第4张图片

你可能感兴趣的:(网络)