BGP引入IGP路由发布给eBGP邻居由于MED规划不当导致流量绕行问题的处理

发布时间:  2013-05-23 浏览次数:  159 下载次数:  0
问题描述
RTA、RTE在AS100,RTC、RTD在AS200,四台之间均配有BGP邻居。
RTA与RTB部署OSPF,在RTA引入cost为100的OSPF路由1.1.1.2/32(RTB的环回口地址)。RTA会向RTC、RTD、RTE发布该路由。RTD会从RTA、RTE、RTC收到3条BGP路由1.1.1.2/32,但是优选的不是来自RTA的路由而是来自RTE的路由,导致流量经RTE绕行到RTA。
 
处理过程
【分析思路】
1、在RTD查看BGP路由1.1.1.2/32详细信息,分析RTA路由是因为哪个属性不被优选。
2、分析3条路由的该属性数值是否正确,应如何调整。

【故障分析】
1、在RTD查看BGP路由详细信息display bgp routing-table 1.1.1.2 32。
<Quidway>display bgp routing-table 1.1.1.2 32
 BGP local router ID : 1.1.1.4
 Local AS number : 200
 Paths:   3 available, 1 best, 1 select
 BGP routing table entry information of 1.1.1.2/32:
 From: 45.1.1.5 (1.1.1.5)          ------最优路由来自RTE
 Route Duration: 01h02m50s
 Direct Out-interface: Ethernet0/0/3
 Original nexthop: 45.1.1.5
 Qos information : 0x0
 AS-path 100, origin igp, pref-val 0, valid, external, best, select, active, pre 255
 Advertised to such 3 peers:
    14.1.1.1
    45.1.1.5
    1.1.1.3
 BGP routing table entry information of 1.1.1.2/32:
 From: 1.1.1.3 (1.1.1.3)   
 Route Duration: 00h00m09s
 Relay IP Nexthop: 34.1.1.3
 Relay IP Out-Interface: Ethernet0/0/2
 Original nexthop: 1.1.1.3
 Qos information : 0x0
 AS-path 100, origin igp, localpref 100, pref-val 0, valid, internal, pre 255, not preferred for peer type
 Not advertised to any peer yet             ------次优路由来自RTC,原因是iBGP优先级低于eBGP
 BGP routing table entry information of 1.1.1.2/32:
 From: 14.1.1.1 (1.1.1.1)
 Route Duration: 00h25m25s
 Direct Out-interface: Ethernet0/0/0
 Original nexthop: 14.1.1.1
 Qos information : 0x0
 AS-path 100, origin igp, MED 100, pref-val 0, valid, external, pre 255, not preferred for MED
 Not advertised to any peer yet            ------最次路由来自RTA,原因是MED较大
 
来自RTA的路由MED是100,来自RTE和RTC的路由都没有携带MED认为是缺省值0,又因为RTE是eBGP邻居,RTC是iBGP邻居,所以来自RTE的路由最优,来自RTC的次优,再次才是来自RTA的路由。
2、分析来自直连邻居RTA的MED值反而最高的原因。
首先要了解MED属性的原理和发布规则。MED(Multi-Exit-Discriminator)相当于IGP使用的度量值(Metrics),它用于判断流量进入AS时的最佳路由到BGP,收到此属性的一方不会再将其通告给任何其他AS。即, BGP引入IGP路由时,将IGP路由的cost值作为路由的MED发布给邻居,如果收到邻居发来的路由已经携带MED,不会再将此MED发给eBGP邻居。
再来看RTD收到这3条路由的MED是如何确定的。RTA引入cost为100的OSPF路由,因此发给RTC、RTD、RTE的路由MED都是100。RTE收到已经携带MED的路由,转发给eBGP邻居时不再携带MED,因此,RTE发给RTC和RTD的路由都不携带MED。RTC收到了来自RTA和RTE的路由,比较MED优选了来自RTE的不带MED的路由,转发给iBGP邻居RTD时也不带MED。因此,由于这个特定的组网,RTD上出现了RTE>RTC>RTA的路由排序,来自直连邻居RTA的路由反而不被优选。
根因

在路由跨域发布时没有在RTA和RTE两个出口同时采用策略来规划MED。

解决方案
这种场景造成流量绕行的规避方案,有两种思路:
思路1)如果是平行的双平面组网,RTA和RTD作为一个平面,RTE和RTC作为与之对称的备平面,则尽可能让两边的路由也对称,即,在RTA、RTE的BGP都引入OSPF路由1.1.1.2/32,让AS200的邻居自行选择最优的一条。
思路2)如果不是双平面组网,只能在RTA引入OSPF路由,那么需要采用策略来规划MED。例如,在RTA通过路由策略匹配ip-prefix限定哪些路由需要从OSPF引入,如果引入的OSPF路由较多时cost可能不相同,为了方便RTE调整一个合适的MED值,在路由引入策略中指定cost。同时也可以指定团体属性,便于RTE判断哪些路由在发布给eBGP邻居时需要调整MED。配置举例如下:
【RTA】
ip ip-prefix ospftobgp index 10 permit 1.1.1.2 32
route-policy ospftobgp permit node 10
 if-match ip-prefix ospftobgp
 apply cost 100
 apply community 100:200
route-policy ospftobgp deny node 100
bgp 100
 ipv4-family unicast
  import ospf 1 route-policy ospftobgp
  peer 1.1.1.5 advertise-community
【RTE】
ip community-filter 1 permit 100:200
route-policy ibgptoebgp permit node 10
if-match community-filter 1
  apply cost 150
bgp 100
 ipv4-family unicast
  peer 35.1.1.3 route-policy ibgptoebgp export
  peer 45.1.1.4 route-policy ibgptoebgp export
这样调整之后,RTA发布的路由MED是100,RTE发布的路由MED是150,RTC上优选RTA的路由转发给RTD因此MED也是100,所以RTD收到3条路由,优选MED为100的来自eBGP邻居RTA的路由,来自iBGP邻居RTC的次之,RTE最次。
建议与总结
如果是平行的双平面组网,那么路由最好也是对称的,否则需要根据策略来调整流量走向。





END