二、BGP的路径
1、BGP路径属性被分为四大类 :
(1)公认必遵(Well-know mandatory),所有BGP路由器都可以识别,且必须存在于Update消息中,如果缺少这种属性,路由信息就会出错
(2)公认任意(Well-kown discretionary),所有BGP路由器都可以识别,但不要求必须存在于update消息中,可以根据具体情况来决定是否添加到update消息中
(3)可选过渡(optional transitive),BGP路由器可以选择是否在Update消息中携带这种属性。接收的路由器如果比识别这种属性,可以转发给邻居路由器,邻居路由器可能识别并使用到这种属性
(4)可选非过渡(optional non-transitive),BGP路由器可以选择是否在Update消息中携带这种属性。在整个路由发布的路径上,如果部分路由器不能识别这种属性,可能导致该属性无法发挥效用。因此接收的路由器如果不识别这种属性,将丢弃这种属性,不必再转发给邻居路由器
2、常见 BGP路由属性
(1)origin 属于公认必遵
某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP,比如通过network命令注入BGP的路由;通过EGP学到的路由,则origin属性为EGP;其他情形下,Origin属都为Incomplete,比如通过impor命令注入BGP的路由。
origin属性值默认情况下不被任何路由器修改。
(2)as_path 属于公认必遵
路由传递过程中,经过的AS路径。主要用来防环。
AS_Path属性有两种类型:
AS_Sequence:表示AS_Path内的AS号是一个有序的列表。
AS_Set:表示AS_Path内的AS号是一个无序的列表。
(3)next hop 属于公认必遵
BGP路由器将本端始发路由发布给IBGP邻居时,会把该路由信息的Next_hop设为本端建立邻居关系所使用的接口IP。
BGP路由器在向EBGP邻居发布路由时,会把路由信息的Next_hop设置为本端与对端建立BGP邻居关系的接口IP。
如图所示,RTB将100.0.0.0/24的网段发布给RTC时,Next_hop为RTB上与RTC直连的接口IP。
BGP路由器在向IBGP邻居通告从EBGP学来的路由时,不改变该路由下一跳属性。
特例:如图所示,RTA从RTB学到RTC发布的200.0.0.0/24的网段时,Next_hop为RTD的出接口IP,因为RTB与RTD在同一网段,RTC通告给RTB的Next_hop为RTD的出接口IP。
对于上述三种情况的解释:
EBGP邻居之间一般采用直连接口建立邻居关系,EBGP邻居在相互通告路由时会修改Next_hop为自己的出接口IP;
IBGP邻居通常采用Loopback接口建立邻居,当路由是本路由器起源的,在发送给邻居之后Next_hop改为自己的更新源地址,这样即使网络中出现链路故障,只要Next_hop可达,同样可以访问目的网段,提高网络稳定性;
相对于IGP,如RIP在发布路由时,每经过一个路由器都会修改下一跳,发布路由的路由器都宣称自己能够到达目标地址,并采用逐跳传递的方式将数据包发送给目标网络,但网络中的路由器并不知道谁是真正的始发路由器,因此会造成环路。BGP在EBGP之间传递时才修改Next_hop,IBGP发送从EBGP学来的路由给IBGP邻居时并不修改下一跳,在一定程度上起到了防环作用。
(4)med (Multi-Exit-DISC)属于可选非过渡
MED可以区别到达同一邻居AS的多条入口链路(MED值越小,链路越优先)。而且MED值默认只比较同一个AS的,需要手动配置compare diffrent as med才能比较不同AS的MED值。
MED主要作用在EBGP对等体上,而LOCAL_PREF则主要作用在IBGP对等体上。MED通常通过EBGP对等体向外发送,从而实现对对端AS入流量的控制;而LOCAL-PRE