BGP路径属性是对BGP路由特定的描述,每一条路由都会带有自己的路径属性,BGP也会通过这些路径属性来选择一条最佳的路由。同样的,我们也可以在建立BGP关系后,通过适当的修改BGP属性,达到控制数据流量转发的目的,常用的属性一共有10个
分为4大类:
公认必遵
所有BGP都能识别此属性,且必须存在于Update报文中
(1):Origin(起源)
用来代表BGP路由的起源,标记任何进入到BGP中,分为3种类型IGP,EGP,incomplete(表示路径不完整,一般通过引入的方式)
聚合路由的起源属性可以是IGP也可是incomplete,这就要看成员路由的起源属性了,而有些成员的属性是Incomplete,有些是IGP,则生成的聚合路由的起源属性是incomplete
origin类型优先级从低到高incomplete<EGP<IGP,多个路由选择处理中,优先选择最低优先级的类型
(2):AS_PATH(经过的AS号)
记录所经过的AS号,防环,选择最佳路由
用于记录路由所经过的AS号,对等体之间传递的每条路由都会携带这份AS号列表
在同一个AS号内传播不会进行更改,在离开AS时,会将当前的AS号添加到AS_PATH列表前面
在接受BGP路由时,如果发现AS_PATH列表中有本AS号,则不接受该路由,为了避免AS之间的路由环路
四种segment类型
AS_SET | AS号无序的集合 |
AS_SEQUENCE | AS号有序的集合 |
AS_CONFED_SET | 联盟中成员AS号无序的集合 |
AS_CONFED_SEQUENCE | 联盟中成员AS号有序的集合 |
在AS_PATH中可以只有一种segment类型,也可包含多种segment类型,多种时的出现顺序AS_CONFED_SEQUENCE,AS_CONFED_SET,AS_SEQUENCE,AS_SET
修改AS_PATH属性
apply as-path 300 additive | AS_PATH:300 100 | 在原有的AS_PATH上追加 |
apply as-path 400 overwrite | AS_PATH:400 | 替换 |
apply as-path none overwrite | AS_PATH: | 清空 |
(3):Next_Hop(下一跳)
记录了BGP下一跳的信息,IGP的下一跳一般都是直连的IP地址,而BGP路由的下一跳往往都是非直连路由设备的ip地址,这往往导致中间路由器没有BGP路由而出现黑洞路由,导致丢包。
BGP下一跳规则如下
BGP在向同一AS域内发送路由时,下一跳就是也对等体建立邻居的ip地址 |
BGP在向EBGP对等体发送路由时,下一跳也是与对等体建立邻居的ip地址 |
BGP在向IBGP对等体发布从EBGP对等体学习来的路由时,不会更改下一跳属性 |
下一跳地址与EBGP属于同一网段,下一跳不变 |
修改next_hop
peer 1.1.1.1 next-hop-local | 下一跳地址为自身的IP地址 |
peer 1.1.1.1 next-hop-invariable | 下一跳地址不改变 |
公认任意
所有BGP都可以识别此属性,但不要求更新中必须携带该属性
(1):Local_Preference
本地优先级,默认为100,用于判断流量离开AS域内的最佳路由,该属性只在iBGP对等体之间传递路由或使用,不传递给其他AS号,如果EBGP对等体收到了Local_Preference,则会进行报错处理
数值越大越优,IBGP对等体有两个下一跳时,查看优先级高的路由作为下一跳
(2):Atomic_Aggregate
如果路由聚合将所有明细路由抑制了,就会为聚合路由生成该属性。
路由器收到Update报文发现有此报文后,便可知该路出现了路径属性的丢失,此时将这条路由通告给其他对等体数保留Atomic_Aggregate属性,收到后不能将这条路由明细化
可选过渡
BGP设备可以不识别此类属性,如果识别该属性,则转发该属性的更新,不识别则查看该属性是否设置了过渡标记,如设置了过渡标记则路由把该属性转发通告给下游设备
(1)Aggregate
路由聚合后,路由器为此聚合路由添加Aggregate属性,并在本地属性中记录AS号,以及Router-ID,用于标识路由聚合在那台路由器及AS路由器上。
(2)Community(团体)
用于简化路由策略的执行,可以将某些路由分配一个特定的Community属性值,就可基于Community值,来执行相应的策略。
Community属性长度为32bit,可以使用两种形式呈现:
十进制数
AA:NN (AA表示AS号,NN自定义编码)
Community属性可分为标准团体属性,扩展团体属性
(1)标准团体属性
Internet | 0(0x00000000) | 设备收到该属性后,会向所有对等体发送该路由 |
No_advertise | 4294967042(0xFFFFFF02) | 设备收到该属性后,不会向所有对等体发送该路由 |
No_Export | 4294967041(0xFFFFFF01) | 不会向AS外发送该路由 |
No_Export_Subconfed | 4294967043(0xFFFFFF03) | 不会向AS外发送该路由,也不会向其他子AS发布此路由 |
(2)扩展团体属性
可选非过渡
BGP设备可以不识别此类属性。如果BGP设备不识别此类属性,且过渡标记没有被设置的情况下,Update报文不通告该属性
(1)MED(Multi Exit Discriminator)多出口区分符
用于判断外部流量进入AS内的最佳路由,当进入AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径,MED值越小越优,默认为0
(2)Originator_ID
AS内第一台通过该路由的BGP路由器的Router_ID,用于反射器出现环路
该值由反射器添加到路由更新中,并随着在AS内传递,当反射器收到的路由信息中的Originator_ID就是自己的路由ID是,该路由将会被丢弃掉
(3)Cluster_List
经过RR反射器时由RR添加的一个集群列表,当反射器收到的路由信息中的Cluster_List中发现了自己的集群ID,说明存在环路,该路由将会被丢弃掉
PrefVal属性
任何出现在华为BGP表中的路由器都会被分配PreVal(首选权值),默认为0,越大越优,0~65535