BGP路由协议(三):路径属性
###路径属性
RFC 4271将BGP路径属性分为两大类:
- 公认 Well-Known 所有BGP路由器都必须能够识别的路径属性
a. 强制 Mandatory BGP路由器使用Update报文通告路由更新时必须携带的路径属性
b. 自由决定 Discretionary 不要Update报文中必须携带 - 可选 Optional 不要求所有BGP路由器都必须能够识别
a. 传递 Transitive 如果BGP路由器不能识别该路径属性,并且当路由器将该路由通告给其他对等体时必须携带该路径属性
b. 非可传递 Non-transitive 如果BGP路由器不能够识别该属性,那么该路由器将会忽略携带该路径属性的BGP路由更新且不将该路由通告给其他BGP对等体
BGP路径属性类型:
- 公认强制 Well-Known Mandatory
a. Origin
b. AS_Path
c. Next_Hop - 公认自由决定 Well-Known Discretionary
a. Local_Preference
b. Atomic_Aggregate - 可选传递 Optional Transitive
a. Community
b. Aggregate - 可选非传递 Optional Non-transitive
a. MED
b. Originator_ID
c. Cluster_List
###Origin
Origin属性用于描述BGP路由的来源,是一个公认强制属性,这意味着每条BGP路由都必须携带这个属性值,并且BGP将路由通告给其他对等体时,必须携带Origin属性。
IGP > EGP > incomplete
Origin属性的值有3种类型:
- IGP:如果路由是由始发的BGP路由器使用network命令发布到BGP的,那么该BGP路由的Origin属性为IGP
- EGP:如果路由是通过EGP学习到的,那么该BGP路由的Origin属性为EGP
注意:此处EGP指的是一个具体的路由协议,其名称为EGP。这个路由协议现在已经不再被使用。 - Incomplete:如果路由是通过其他方式学习到的,则Origin属性为Incomplete(不完整的)。例如通过import-route命令引入到BGP的路由
当到达同一个目的网段存在多条BGP路由时,在其他条件相同的情况下,Origin属性为IGP的路由最优,其次是EGP,最后是Incomplete
###AS_Path
AS_Path是公认强制属性,它描述了一条BGP路由在传递过程中所经过的AS的号码
- BGP路由的AS_Path只在EBGP对等体之间发生改变,当BGP路由在一个AS内传递时(路由被通告给自己的IBGP对等体),该路由所携带的AS_Path是不会发生改变的
- AS_Path可以实现EBGP路由的环路避免
- AS_Path的另一个功能是用于BGP路由优选的决策
###Next_Hop
Next_Hop是一个公认强制属性,所有的BGP路由都必须携带该属性。这个属性描述了到达目的网段的下一跳地址。BGP路由所携带的Next_Hop属性值将在路由器计算路由时用于确认到达该路由的目的网段的实际下一跳IP地址和出接口
BGP设计的下一跳属性遵循如下规则:
- BGP设备将本地始发路由发布给所有对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址
- BGP设备在向eBGP对等体发布某路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址
- BGP设备在向iBGP对等体发布从eBGP对等体学习到的路由时,并不改变路由信息的下一跳属性
### 配置next-hop-invariable
sys
bgp 100
peer 12.1.1.2 as-number 100
ipv4-family unicast
peer 12.1.1.2 next-hop-invariable### iBGP配置next-hop-local(默认)
sys
bgp 200
peer 34.1.1.4 as-number 200
ipv4-family unicast
peer 34.1.1.4 next-hop-local
###Local_Preference
Local_Preference(本地优先级)属性是一个公认自由决定属性
- 该路径属性只能在IBGP对等体之间传递,当路由被通告给EBGP对等体时,是禁止携带该属性的。因此Local_Preference属性只能够在一个AS内部传递,这就是“本地”的含义
- Local_Preference属性的取值范围是0~4294967295,值越大则路由越有可能被优选;缺省为100,可使用default local-preference修改
###Atomic_Aggregate
Automic_Aggregate 主要用于路由聚合。如果路由聚合将所有明细路由抑制了,就会为聚合路由生成该属性。
使用该属性也是一种警告作用,用于告知对等体,原始明细路由AS_PATH出现了丢失
路由汇总是一个非常基础的路由协议特性,几乎所有的动态路由协议都支持路由汇总,BGP也不例外。在一个BGP网络中部署路由汇总,能够有效地减少BGP路由器通告的路由条目数量,减小设备的路由表规模,并将拓扑变化产生的影响限制在一个相对更小的范围内。路由汇总的优势是非常明显的,然而执行路由汇总也有可能带来新的问题。在BGP中部署路由汇总后,原来被BGP通告出去的明细路由将被汇总路由取代,而汇总路由可能已经丢失了明细路由所携带的路径信息,这对于网络而言是存在问题的,因为路径信息(尤其是AS_Path属性)的丢失有可能会带来包括路由环路在内的各种隐患
###Community
Community分为标准团体属性和扩展团体属性
Community属性是一个可选传递属性,它类似于路由的“标记”,我们可以针对特定的路由设置特定的Community属性值,而下游路由器在执行路由策略时,可以通过Community属性值来匹配目标路由
###Aggregator
Aggregator作为Auto_aggregator的补充,指明路由信息是在何处出现了丢失,该属性包含发起聚合路由的AS号及生成聚合
###MED
MED(Multi-Exit Discriminator)属性是一个可选非传递属性,是一种度量值。当到达同一个目的网段存在多条BGP路由时,在其他条件相同的情况下,MED属性值最小的BGP路由将被优选
MED与Local_Pref属性不同,MED仅会在两个相邻AS之间传递,但收到此属性的AS一方不会在将其通告给其他第三方AS
MED默认值为0
### compare-diffreent-as-med命令可以设置比较不同AS传递的路由
###Originator_ID
Originator_ID属性值是AS内第一台通告该由器的BGP路由器的Router_ID,该值由RR添加到路由更新中,并随路由在AS内传递,直至离开AS时被剥离掉。
Originator_ID属性用于在Cluster内防环。如果路由器看到接收到路由中的Originator_ID等于自己的BGP Router_ID,就说明存在环路,该路由将被丢弃掉
###Cluster_List
Cluster_List是路由经过RR反射时由RR添加的一个集群列表,记录路由经过的Clutser_ID,如果路由反射器在接收到路由的Cluster_List中发现了自己的集群ID,就说明存在环路,该路由将会被丢弃
###Preferred_Value
Preferred_Value是一个华为私有的路径属性,可以理解为路由的“权重”。该属性值的取值的范围是0~65535,该值越大则路由的优先级越高。值得强调的是,Preferred_Value只在本地有效,而且绝对不会被传递给其他对等体(不会出现在Update报文中)。所以对于这个属性,形象一点的理解是~“一条路由(路径)在我心中的权重值”,既然是在自己“心中”,那么这个属性值自然是不能传递给别人的,只有自己知道
### preferred-value针对所有对等体发布的的路由进行修改
bgp peer 2.2.2.2 preferred-value 200
###下一跳不可达问题
###路由黑洞问题