文/叶翀
BGP属性是BGP进行路由决策和控制的重要信息。它可以分为如下两大类四小类:
一、公认属性
l 公认必遵(Well-known mandatory)
l 公认可选(Well-known discretionary)
公认属性是所有运行BGP协议的系统都必须识别和支持的属性。其中,公认必遵属性是BGP UPDATE消息中必须包含的属性。公认可选则是BGP UPDATE消息中可以自由选择是否包含的属性。
二、可选属性
l 可选过渡(Optional transitive)
l 可选非过渡(Optional non-transitive)
可选属性并不要求所有运行BGP协议的系统都识别。如果属性是可选过渡的,那么,即使运行BGP的系统不能识别该属性,也要接受该属性并将其转发给它的对等体。而如果属性是可选非过渡的,运行BGP的系统可以忽略包含该属性的消息并且不向它的对等体转发。
常见的BGP属性如下:
1、 ORIGIN
ORIGIN标示路径信息的来源,是公认必遵属性。
ORIGIN可以是以下三种值:
1)IGP:表示网络层可达信息来源于AS内部
2)EGP :表示网络层可达信息通过AS外部学习
3)INCOMPLETE:表示网络层可达信息来源无法确定
在路由选择的时候,ORIGIN中,IGP优于EGP,EGP优于INCOMPLETE。
2、 AS_PATH
AS_PATH由一系列AS路径组成,是公认必遵属性。
AS-PATH采用AS_SEQUENCE方式表示——该路由经过的AS的有序集
当BGP发布者发布路由给IBGP对等体时,BGP不修改路由的AS_PATH属性。当BGP发布者发布路由给EBGP对等体时,本地系统应该把自己的AS号作为序列的最后一个元素加在序列的最后面。
AS_PATH可以用来作为路由选路的一种度量。经过更少AS路径的路由更优先。
同时AS_PATH也作为一种手段来避免环路。如果BGP路由信息发布者从EBGP对等体收到一条路由,它的AS_PATH包含发布者自己的AS号,就说明这条路由曾经从本AS发出过,将其丢弃,同时不再进行转发。基于上述机制,AS_PATH属性可以避免AS之间的路由环路的出现,AS内部的路由环路的避免则采用其他手段来实现。
3、 NEXT_HOP
它定义了到达目的地下一跳的设备IP地址,是公认必遵属性。
NEXT_HOP中IP地址的填写遵循如下规则:
1) 如果是发布给EBGP对等体,NEXT_HOP填写BGP发布者的IP地址
2) 如果是发布给IBGP对等体,且路由来自AS外部,则NEXT_HOP保留原始的AS外部对等体的IP地址
4、 MULTI_EXIT_DISC
MULTI_EXIT_DISC被用来区分同一个邻接AS的多个接口,是一个可选非过渡属性,一般简写为MED。MED只在EBGP发布的路由中产生,接收者可以向它的IBGP邻居转发,但不允许向它的EBGP对等体转发。假设一个AS和邻接AS有多个接口相连,通过发布不同的MED给对端,就可以控制进入网络的流量从MED值最小的那个接口进来。通常情况下,BGP只比较来自同一个AS的路由的MED属性值。
如图1所示,Router B和Router C发给Router A的关于9.0.0.0的路由携带不同的MED属性,从而引导从AS 10到AS 20的目的地址为9.0.0.0网段的流量将选择Router B作为入口。
5、 LOCAL_PREF
LOCAL_PREF用来通告路由的优先程度,是公认可选属性。
LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。
如图2所示,Router B和Router C发给Router D的关于8.0.0.0的路由携带不同的LOCAL_PREF值,从而引导从AS 20到AS 10的流量将选择Router C作为出口。
6、 ATOMIC_AGGREGATE
ATOMIC_AGGREGATE是用来通告路由接收者,该路由是经过聚合的,是公认可选属性。
有时BGP发布者会收到两条重叠的路由,其中一条路由包含的地址是另一条路由的子集。一般情况下BGP发布者会优选更精细的路由(前者),但是在对外发布时,如果它选择发布更粗略的那条路由(后者),这时需要附加上ATOMIC-AGGREGATE属性,以知会对等体。它实际上是一种警告,因为发布更粗略的路由意味着更精细的路由信息在发布过程中丢失了。在进行路由聚合时,对于聚合的路由信息会添加ATOMIC-AGGREGATE属性。
7、 AGGREGATOR
AGGREGATOR是ATOMIC_AGGREGATE属性的补充,是可选过渡属性。
如前面所述,ATOMIC_AGGREGATE是一种路由信息丢失的警告,AGGREGATOR属性补充了路由信息在哪里丢失——它包含了发起路由聚合的AS号码和形成聚合路由的BGP发布者的IP地址。在进行路由聚合时,当对于聚合的路由信息同添加ATOMIC-AGGREGATE属性的同时,会添加AGGREGATOR属性。
8、 COMMUNITY
COMMUNITY是一组共享相同属性的目的地集合,是可选过渡属性。
团体属性用来简化路由策略的应用和降低维护管理的难度,没有物理上的边界,与其所在的AS无关。
公认的团体属性有:
Ø INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。
Ø NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。
Ø NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。
Ø NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。
9、 ORIGINATOR_ID
ORIGINATOR_ID用于标识路由反射器,是可选非过渡属性。
为了防止引入路由反射器之后出现环路,增加ORIGINATOR_ID这个属性来标识,反射器在发布路由时加入ORIGINATOR_ID,当反射器收到的路由信息中的ORIGINATOR_ID就是自己的ROUTER_ID时,就可以发现路由环路的出现,将该路由丢弃,不再转发。
10、 CLUSTER_ID
CLUSTER_ID用于标识路由反射器组,是可选非过渡属性。
CLUSTER_ID属性也是用来防止环路,在路由经过路由反射器时路由反射器会将自己的CLUSTER_ID添加到路由携带的CLUSTER_LIST中,当路由反射器发现接收的路由的CLUSTER_LIST中包含有自己的CLUSTER_ID,则将该路由丢弃,不再转发。