BGP的路由属性

  • 一、Origin属性
  • 二、AS_Path属性
  • 2.1、AS_Path属性的作用
  • 三、Next_Hop属性
  • 四、MED属性
  • 四、Local_Pref属性
  • 五、Community属性


——————————————————————————————————————————————————

一、Origin属性

起点属性是一个必遵的过渡属性,它指示路由更新的起源,也就是这条路由是通过何种方式注入BGP中。BGP允许3个类型的起源。

0:IGP路由信息为起始AS内部。
1:EGP路由信息为起始通过EGP得来。
2:INCOMPLETE路由信息通过其他方法得来。

BGP在路由判断过程中会考虑起点属性来判断多条路由之间的优先级。具体说,BGP优先选用具有最小起点属性值的路由,即IGP优先于EGP,EGP优先于Incomplete。我们可以通过手工配置某条路由的起点属性。

一般情况下:

1、BGP把聚合路由和用直接注入BGP路由表的具体路由看成是AS内部的,起点类型设置为IGP,即用Network XXXX命令注入的路由或者聚合的路由。

2、BGP把通过其他IGP协议引入的路由起点类型设置为Incomplete,即用import命令注入的路由。

3、BGP把通过EGP得到的路由的起点类型设置为EGP。

在其他因素相同的情况下,按IGP、EGP及Incomplete的顺序选择路由。

BGP路由的flag为RD bgp的路由属性_目的地址

我们来看看这三种起源类型。

先看第一种:0:IGP路由信息为起始AS内部。在AR3的G0/0/3口观察,shutdownAR4的G0/0/0。

BGP路由的flag为RD bgp的路由属性_BGP路由的flag为RD_02

第二种,这个图不适合,懒得配置,看看就行了,和这俩一回事。

第三种,上面图也没配置路由重分发。AS100配置的OSPF,如果引入到BGP路由里,就会出现下面这个。出现了ORIGIN属性为INCOMPLETE。路由信息通过其他方法得来。因为图中在AR4上没有配置内部的IBGP,是通过BGP引入OSPF获得的路由。Origin:INCOMMPLETE(2)。

BGP路由的flag为RD bgp的路由属性_运维_03

——————————————————————————————————————————————————

二、AS_Path属性

AS_Path属性也是一个必遵属性,它是路由到达某个目的地所经过的所有AS号码的序列。BGP使用AS路径属性作为路由更新的一部分来确保在Internet上的一个无环路的拓扑结构。BGP不会接受AS路径属性中包含的本AS自治系统号的路由,因为此路由已经被本自治系统处理过了,从而避免了生成路由环路的可能。为此,BGP在向EBGP对等体通告一条路由时,要把自己的AS号加入到AS路径属性中,以记录此路由通过的AS区域信息。

AS_Path属性按矢量顺序记录了某条路由从本地目的地址所要经过的所有AS编号。

当BGP Speaker产生一条路由时:

1、BGP Speaker将这条路由通告到其他AS,便会将本地AS编号添加到AS_Path列表中,并通过Update消息通告给邻居路由器。.

2、BGP Speaker将这条路由通告到本地AS,便会在Update消息中创建一个空的AS_path列表。

BGP路由的flag为RD bgp的路由属性_BGP路由的flag为RD_04

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

1、BGP Speaker将这条路由通告到其他AS,便会把本地AS编号添加在AS_Path列表的最前面。收到此路由的BGP路由器根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS编号排在前面,其他AS编号按顺序依次排列。

2、BGP Speaker将这条路由通告到本地AS,不会改变这条路由相关的AS_Path属性。

综上所述,IBGP在向对等体通告路由时,并不改变AS_Path属性。只有在EBGP对等体间通告路由时,AS编号才会被添加到AS_PATH列表中。

EBGP的通告。在AR9 G0/0/0上观察

BGP路由的flag为RD bgp的路由属性_目的地址_05

BGP路由的flag为RD bgp的路由属性_运维_06


同时,AS路径属性也在影响路由选择,在其他因素相同的情况下,选择AS路径较短的路由。

——————————————————————————————————————————————————

2.1、AS_Path属性的作用

防止路由环路

AS_Path属性可以防止路由环路。通常情况下,BGP不会接收AS_Path中已包含本地AS编号的路由,从而避免了形成环路的可能。
在Hub&Soke(Hub-Spoke VPN)组网方案中,需要允许AS编号重复,在路由实现种,通过配置Peer allow-as-loop命令可以允许AS编号重复。

控制路由选择
AS_Path属性可用于控制路由的选择。在其他因素相同的情况下,BGP会优先选择AS路径较短的路由。在上面的图中,AS500中的路由器会选择经过AS300的路径作为到目的地1.1.1.1去的最优路由,但很有可能经过AS300转发的路径带宽远小于经过AS400的转发路径。

在某些应用中,可以使用路由策略认为增加AS路径长度,以便于更灵活的控制BGP路径的选择。比如:到达1.1.1.1,as500经过AS400的路径带宽比较大,而经过300的带宽路径比较小,或者经过AS400的是主链路,经过AS300的是备链路,这种情况下,AS100可以通过改变其通告路由的AS_Path属性来控制BGP选择实际中最优的路径。

如图:AS100在其发送给AS300的AS_Path列表中附加了多个本地AS编号,使AS500认为到达1.1.1.1最短路径是AS400-200-100。通过配置apply as-path命令可以附加AS编号。

BGP路由的flag为RD bgp的路由属性_运维_07


路由过滤

通过配置AS路径过滤器,可以针对AS_Path属性中所包含的AS编号对路由进行过滤,在上图中,到1.1.1.1。通过配置AS_Path过滤器,例如:只接收AS_PATH列表中包含AS400的路由。可以使AS500选择经过AS400的较长路径,而不选择经过300的最短路径。

——————————————————————————————————————————————————

三、Next_Hop属性

下一跳属性也是一个公认必遵的属性。但BGP中的下一跳不同于IGP中的下一跳,BGP的下一跳概念比较复杂。不一定就是邻居路由器的IP地址。

通常情况,Next_Hop属性都遵循下面的原则:

1、BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端连接的接口地址。

其中 AR17再向EBGP对等体AR18通告路由时,下一跳为自己的接口地址10.1.1.9。

2、BGP Speaker将本地始发路由发布给IBGP对等体时,会把下一跳属性设置为发起该路由的路由器的接口地址。

3、BGP Speake在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变路由信息的下一跳属性。

其中AR18从EBGP对等体AR17学习到的192.168.1.0/24发布给IGBP对等体AR20的时候,并不改变下一跳,下一跳仍然是10.1.1.9。

4、对于可以多路访问的网络,如果通告路由器和源路由器的接口处于同一网段,则BGP会向邻居通告路由的实际来源。

其中AR15向EBGP对等体AR17通告192.168.1.0/24的时候,使用路由的实际来源地址10.1.1.5/30作为Next_Hop。

BGP路由的flag为RD bgp的路由属性_BGP路由的flag为RD_08

——————————————————————————————————————————————————

四、MED属性

MED(Multi-Exit-Discriminator)属性为可选非过渡属性,仅在相邻两个AS之间传递。收到此属性的AS一方不会再将其通告给任何其他第三方AS。

MED属性相当于IGP使用的度量值(Metric)。它用于判断流量进入AS时的最佳路由,其用途是告诉EBGP邻居进入本AS的较优路径。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其他条件相同的情况下,将优先选择MED值较小的作为最佳路由。

如图:从AS100到AS200学习到的192.168.1.0/24网段有两条路由:一条MED属性为0,另一个MED属性100。所以AR21到192.168.1.0网段的流量将选择AR22为入口。

BGP路由的flag为RD bgp的路由属性_目的地址_09


通常情况下,BGP只比较来自同一个AS路由的MED属性值,如果AS100路由器同时从AS100和另外一个AS收到来自AS200的路由,则不会比较MED值。通过配置compare-diferent-as-med命令,可以强制BGP比较来自不同AS路由的MED属性值。

MED属性仅在相邻的AS间传递。如图中,AS100的路由器收到了AS200的路由MED属性,但仅在AS100内部传播。如果目的地址192.168.1.0/24的路由被AS100发送到另一个AS,则AS200的MED属性不会携带在此路由中。

AS_Path属性可以在多个AS间传递。默认情况下,MED属性值为0。

——————————————————————————————————————————————————

四、Local_Pref属性

Local_pref属性仅在IBGP对等体之间交换,不通告给其他AS,它可以表明BGP路由器的优先级。Local_pref属性用于判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_pref属性值较高的路由。

如图:从AS200到AS100的流量将选择AR23作为出口。MED属性和Local_pref属性区别在于:MED用于判断流量进入AS时的最佳路由,Local_pref属性用于判断流量离开AS时的最佳路由。一个是值较小,一个是值较高。默认情况下属性值为100。

BGP路由的flag为RD bgp的路由属性_服务器_10

——————————————————————————————————————————————————

五、Community属性

Community用来简化路由策略的应用和降低维护管理的难度,它是一组有相同特征的目的地址的集合,没有物理上的边界,与其所在AS无关。这些目的地址共享一个或多个共同的属性。

Community属性用一组以4字节为单位的列表来表示。属性格式为aa:nn。aa和nn的取值范围都是1-65535,管理员呢可以根据实际情况设置具体数值。通常,aa表示自治系统AS编号,nn表示管理员定义的Community属性标识。例如来自AS500的一条路由,管理员定义community属性标识是1,则该路由的community属性格式是:500:1。

下面列举BGP公认的Community属性:

BGP公认团体属性

团体名称/团体标识/说明

Internet 0 :缺省情况下,所有的路由都属于internet团体,具有此属性的路由可以被通告给所有的BGP对等体。

No_Export 4294967041 :具有此属性的路由在收到后,不能被发布到本地AS之外,如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中其他子AS(联盟在大规模bgp介绍)

No_Advertise 4294967042 :具有此属性的路由在收到后,不能通告给其他任何的BGP对等体。

No_Export_Subconfed 4294967043 :具有此属性的路由在收到后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。

——————————————————————————————————————————————————