龙空技术网

BGP的路由属性

阿豪的笔记 225

前言:

此时看官们对“bgp使用的是什么路由选择算法”可能比较讲究,看官们都想要分析一些“bgp使用的是什么路由选择算法”的相关文章。那么小编也在网络上搜集了一些有关“bgp使用的是什么路由选择算法””的相关内容,希望咱们能喜欢,兄弟们快快来了解一下吧!

任何一条BGP路由都拥有多个路由属性,当路由器将BGP路由通告给它的对等体时,一并被通告的还有路由所携带的各个路由属性。对于BGP而言,BGP路由属性描述了该条路由的各项特征,同时,路由所携带的路由属性也将在某些场景下影响BGP路由优选的决策。

BGP路由属性类型

RFC 4271将BGP路径属性分为两大类:公认(Well-known)及可选(Optional),其中公认属性是所有BGP路由器必须都能够识别的路径属性,而可选属性则不要求所有的BGP路由器都必须能够识别。

公认属性里分了两个子类:必遵(Mandatory)及任意(Discretionary),其中必遵属性指的是当BGP路由器使用Update报文通告路由更新时必须携带的路径属性,而任意属性则不要求Update报文中必须携带。

可选属性里也分了两个子类:过渡(Transitive)及非过渡(Non-transitive),其中对于过渡属性,如果BGP路由器不能够识别该路径属性,那么也应该接受携带该路径属性的BGP路由更新,并且当路由器将该路由通告给其他对等体时必须携带该路由属性,而对于非可过渡属性,如果BGP路由器不能够识别该属性,那么该路由器将会忽略携带该路径属性的BGP路由更新且不将该路由通告给其他BGP对等体。

常见的BGP属性类型如下表所示:

属性名

类型

Origin属性

公认必须遵循

AS_Path属性

公认必须遵循

Next_Hop属性

公认必须遵循

Local_Pref属性

公认任意

MED属性

可选非过渡

团体属性

可选过渡

Originator_ID属性

可选非过渡

Cluster_List属性

可选非过渡

Originator_ID属性和Cluster_List属性用于解决路由反射器场景中的环路问题,将在BGP路由反射器部分介绍,下面对其他几种常见的BGP属性进行介绍。

Origin属性

Origin属性用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的,该属性为公认必遵属性。它有以下3种类型:

IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。

说明:

此处EGP指的是一个具体的路由协议,其名称为EGP。这个路由协议现在已经不再被使用。

Incomplete:优先级最低。如果路由是通过其他方式学习到的,则Origin属性为Incomplete(不完整的)。例如通过import-route命令引入到BGP的路由。AS_Path属性

AS_Path是公认必遵属性,它描述了一条BGP路由在传递过程中所经过的AS的号码。一台路由器在将BGP路由通告给自己的EBGP对等体时,会将本地的AS号插入到该路由原有AS_Path之前。AS_Path实际上是一个有长度的AS号码列表。从上面的描述也可以看出,BGP路由的AS_Path只在EBGP对等体之间发生改变,当BGP路由在一个AS内传递时(路由被通告给自己的IBGP对等体),该路由所携带的AS_Path是不会发生改变的。

AS_Path有两个非常重要的作用:

避免EBGP路由的环路,如果路由器收到一条BGP路由并且发现该路由携带的AS_Path中出现了自己所在AS的AS号,它意识到从本地AS通告出去的BGP路由又被通告回了该AS,BGP将忽略关于该条路由的更新。用于BGP路由优选的决策。AS_PATH属性是记录达到目标网络的AS路径列表,类似距离矢量协议中的hop概念。AS_Path越短则该则该路由被视为越优,因为这条路径距离目的地所要经过的AS个数更少。Next_Hop属性

Next_Hop属性是公认必遵属性,该属性描述了到达目的网段的下一跳地址。BGP路由所携带的Next_Hop属性值将在路由器计算路由时用于确认到达该路由的目的网段的实际下一跳IP地址和出接口。

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

当路由器将本地路由表中的直连路由、静态路由或通过IGP协议学习到的动态路由使用network或import-route命令发布到BGP时,在该路由器的BGP路由表中,这些路由的Next_Hop属性显示0.0.0.0(该路由器是这些路由的始发者)。当BGP路由器使用aggregate命令通告一条BGP汇总路由时,在该路由器的BGP路由表中,该汇总路由的Next_Hop属性显示127.0.0.1。当路由器将本地始发的BGP路由通告给自己的IBGP对等体时,路由的Next_Hop属性值将被设置为本地与对端建立BGP邻居关系的接口地址。当路由器将非本地始发的IBGP路由通告给自己的IBGP对等体时(路由反射器的场景),缺省情况下,该路由不会改变该路由原有的Next_Hop属性值。当路由器将一条EBGP路由通告给自己的IBGP对等体时,缺省情况下,该路由器不会改变该路由原有的Next_Hop属性值。当路由器将一条BGP路由通告给自己的EBGP对等体时,无论这条路由是否为该路由器始发,路由的Next_Hop属性值都被设置为本地与对端建立BGP邻居关系的接口地址。Local_Pref属性

Local_Pref属性是公认任意属性,该路径属性只能在IBGP对等体之间传递,当路由被通告给EBGP对等体时,是禁止携带该属性的。因此Local_Preference属性只能够在一个AS内部传递,这就是“本地”的含义。

如果一个AS拥有多个BGP出口,而且同一个AS内的BGP路由器通过这些出口均可到达同一个目的地,那么Local_Pref属性可被该AS用于告知本AS内的BGP路由器哪一个出口更优。Local_Pref属性的取值范围是0~4294967295(缺省值为100),值越大则路由越有可能被优选。

MED属性

MED(Multi-Exit Discriminator)属性是可选非过渡属性,用于判断流量进入AS时的最佳路由

当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。

MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。

团体属性

Community属性是一个可选过渡属性,它类似于路由的“标记”,我们可以针对特定的路由设置特定的Community属性值,而下游路由器在执行路由策略时,可以通过Community属性值来匹配目标路由。

团体属性用一组以4字节为单位的列表来表示,设备中团体属性的格式是aa:nn或团体号。

aa:nn:aa和nn的取值范围都是0~65535,管理员可根据实际情况设置具体数值。通常aa表示自治系统AS编号,nn是管理员定义的团体属性标识。例如,来自AS100的一条路由,管理员定义的团体属性标识是1,则该路由的团体属性格式是100:1。团体号:团体号是0~4294967295的整数。RFC1997中定义,0(0x00000000)~65535(0x0000FFFF)和4294901760(0xFFFF0000)~4294967295(0xFFFFFFFF)是预留的。

团体属性分为自定义团体属性和公认团体属性。其中公认团体属性如下:

Internet:缺省情况下,所有的路由都属于Internet团体。具有此属性的路由可以被通告给所有的BGP对等体。No_Advertise:具有此属性的路由在收到后,不能被通告给任何其他的BGP对等体。No_Export:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。No_Export_Subconfed:具有此属性的路由在收到后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。

标签: #bgp使用的是什么路由选择算法