BGP本地优先和MED属性配置的一点心得

BGP, MED, 心得, 属性
网络环境
AS300--------AS500
具体环境描述:
AS300内包括4台路由器,运行ospf协议进行本AS内部的路由,以便BGP建立起邻居。两条出口连接AS500。AS500内2台运行BGP,并且使用IBGP在本AS内部进行路由学习。
    BPG的MED以及LOCAL-PRI的属性实验,2种属性的配置均在边界路由器中配置。在AS300内部配置了OSPF来代替IBGP,关闭iBGP与IGP的同步,在BGP中并且通告相直链网络。使用本地优先属性,此属性只在本AS内传递,在配置此属性时使用route-map来控制感兴趣数据包,此数据是包括在边界路由器的BGP路由表中的路由条目。此条目选择是通过ACL来控制,使用标准的和扩展的都可以,只要达到目的。
r3#sh run
Building configuration...
Current configuration : 1416 bytes
!
version 12.2
no service single-slot-reload-enable
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname r3
!
logging rate-limit console 10 except errors
!
ip subnet-zero
no ip finger
!
no ip dhcp-client network-discovery
!
!
!
!
interface Loopback0
ip address 30.1.1.3 255.255.255.0
!         
interface Ethernet0
ip address 34.1.1.3 255.255.255.0
!
interface Serial0
ip address 13.1.1.3 255.255.255.0
clockrate 64000
!
interface Serial1
no ip address
shutdown
!
interface BRI0
no ip address
shutdown
isdn x25 static-tei 0
cdapi buffers regular 0
cdapi buffers raw 0
cdapi buffers large 0
!
router ospf 1
log-adjacency-changes
network 34.1.1.0 0.0.0.255 area 0
!         
router bgp 300
no synchronization
bgp log-neighbor-changes
network 3.3.3.3 mask 255.255.255.255
network 13.1.1.0 mask 255.255.255.0
network 34.1.1.0 mask 255.255.255.0
neighbor 13.1.1.1 remote-as 500
neighbor 24.1.1.2 remote-as 300
neighbor 26.1.1.6 remote-as 300
neighbor 34.1.1.4 remote-as 300
neighbor 34.1.1.4 route-map Local out
!
ip kerberos source-interface any
ip classless
no ip http server
!
access-list 1 permit 10.10.10.0 0.0.0.255
route-map Local permit 10
match ip address 1
set local-preference 200
!
route-map Local permit 20
set local-preference 100
!
!
!
line con 0
exec-timeout 0 0
logging synchronous
transport input none
line aux 0
line vty 0 4
login
!
end
r3#

------------------------------------------------
以上为一台边界路由器的配置。
------------------------------------------------
r3#sh ip b
BGP table version is 16, local router ID is 30.1.1.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric LocPrf Weight Path
*> 10.10.10.0/24    13.1.1.1                 0             0 500 i
*> 13.1.1.0/24      0.0.0.0                  0         32768 i
*                   13.1.1.1                 0             0 500 i
* i15.1.1.0/24      45.1.1.5                 0    100      0 500 i
*>                  13.1.1.1                 0             0 500 i
* i20.20.20.0/24    45.1.1.5                      100      0 500 i
*>                  13.1.1.1                 0             0 500 i
* i24.1.1.0/24      24.1.1.2                 0    100      0 i
*>i                 34.1.1.4                 0    100      0 i
*>i26.1.1.0/24      24.1.1.2                 0    100      0 i
* i                 26.1.1.6                 0    100      0 i
*> 34.1.1.0/24      0.0.0.0                  0         32768 i
*  45.1.1.0/24      13.1.1.1                               0 500 i
*>i                 34.1.1.4                 0    100      0 i
*>i60.1.1.0/24      26.1.1.6                 0    100      0 i
*>i200.200.200.0    24.1.1.2                 0    100      0 i
r3#
--------------------------------------------------------------
以上BGP路由表
---------------------------------------------------------------
笔者认为BGP的MED,LOCAL-PRI属性,只是控制本AS与外界AS相连接2条线路的忙碌情况。MED属性只在AS外界传递,应用给eBGP邻居。意为告诉邻居,“此条线路比较繁忙,请选择本AS的另外出口。”关于本地优先属性应用给iBGP邻居,同理,“达到XXXXXXX网络本路由器优先,请从本路由器到达XX网络。”本地优先的属性是在希望出口的路由器中配置,并且通告给AS内的另外一边界路由器;MED属性则是在不希望对方AS通过的路径上的边界路由器中配置,并且通告给对方AS邻居路由器。
背        景
随着internet的不断发展,运营商的城域网已经变的很大,全省使用一个IGP作为互访协议应不能满足网络发展的需求,经常性的链路中断、SPF协议的不断计算已经使网络设备不堪负重。
BGP作为大型网络承载路由的协议显示出它得天独厚的优势。首先,BGP属于距离矢量型路由协议,可以承载大量的路由信息,而且BGP协议有丰富的路由属性,维护工程师可以根据实际情况使用这些属性对网络的流量进行疏导,还可以对不同起源的路由进行优选。而在运营商城域网网络边界使用的BGP协议属性中,最常用的就是MED、团体、Local-pref 属性。
本文介绍在城域网边界使用BGP协议MED和团体属性来灵活控制城域网回程流量。
BGP-MED属性
MED属于任选非可传递属性,在EBGPupdata消息中携带,它允许一个AS将它首选的入口点通知另外一个AS .如果其他的参数相同,收到到同一个目的地的多条路由的AS将这些路由的MED进行比较,有小MED值的路由优先。
BGP-团体属性
团体属性是任选可传递属性,团体属性可以表明一个目的地作为一些目的地团体中的一个城域网,这些目的地共享一个或者多个共同的特性。
通过使用 BGP公布路由的三种方式 
组网图:
     
     目前在BGP路由公布中共有三种方式。第一种方式是动态公布路由也就是将IGP协议直接引入到BGP协议中,这种方式公布路由较多,而且比较细致,会将城域网内部全部路由公布到骨干网,而且每次IGP协议的路由删除、路由添加都会对骨干网有一定的影响,与之配合使用的是使用聚合路由方式(aggregate)在公布路由时进行汇总,这种方式在路由较少的网络可以,但在路由比较多的网络中却不适合。
第二种方式是半动态公布方式,也就是在BGP进程中直接使用network方式将IGP向对应的路由公布出去,这种方式也会随着IGP协议的路由添加而导致路由不稳定。
第三种方式静态方式,也是目前网络中最常用的,通过使用静态黑洞路由对路由进行汇总,然后再BGP进程中使用network命令发布,由于静态黑洞路由始终在生效,所以IGP协议的路由添加、删除并不会影响到骨干网。
BGP静态公布汇总路由存在的问题
     
 在城域网核心两台设备上使用静态黑洞路由汇总24位掩码路由,在BGP中使用network方式公布到省网,在省网设备上再汇总16位或其他小于城域网公布的掩码的黑洞路由,使用路由策略对路由标示MED属性,再公布到国家骨干网络。回程流量通过MED来选择从CC-CRS-1回来,还是从JL-Cisco12416回来。
如果NE80E上行链路故障或设备升级需要对NE80E设备进行复位,就会存在问题。
回程流量在CC-CRS-1和JL-Cisco12416之间穿透
QD-NE80ECC-CRS-1设备之间链路中断或者QD-NE80E设备复位,导致流量在CC-CRS-1设备和JL-Cisco12416之间穿透,如果流量较大会对CC-CRS-1设备和JL-Cisco12416之间链路造成很大压力。如果对公布路由进行重新调整也有问题,10.240.0.0/16这段地址在多个地市,也就是短掩码的路由是从多个地市AS中学习过来的。重新规划地址再进行路由重新公布比较困难,同时也不够灵活。
 
解决方法通过在城域网核心设备上对路由增加团体属性,在省网设备上针对路由不同的团体值,增加不同的MED值来控制入流量进入省干网络。
    
QD-NE80E核心设备对城域网内部路由使用黑洞路由汇总,在通过路由策略进行公布。针对10.240.0.0/24的路由打上团体属性64911:1并应用MED 0,对10.244.0.0/24的路由打上团体属性64911:2并应用MED也为0KP-NE80E设备方法正好相反,对10.240.0.0/24路由打上团体属性64911:2, 并应用MED 0。对10.244.0.0/24打上团体属性64911:1,并应用MED 0 
QD-NE80E 配置命令
 
省网CC-CRS-1JL-Cisco12416设备不配置汇总黑洞路由,而是配置路由策略对接收到的路由向国干公布时,根据路由携带的不同团体属性应用不同的MED值来控制回程路由。
省网CC-CRS-1设备对团体属性值为64911:110.240.0.0/24的路由应用MED 100,对团体属性值为64911210.244.0.0/24的路由应用MED 200,对其他路由应用MED500。在CC-CRS-1设备上对IBGP邻居省网JL-Cisco-12416设备配置 next-hop-local ,改变公布给JL-Cisco-12416设备路由下一跳为自己。
JL-Cisco-12416对团体属性值为64911210.240.0.0/24路由应用MED 200,对团体属性值为64911110.244.0.0/24的路由应用MED 100,对其他路由应用MED500。在JL-Cisco-12416设备上对IBGP邻居省网CC-CRS-1设备配置 next-hop-local ,改变公布给CC-CRS-1设备路由下一跳为自己。
通过上述配置国家骨干网设备BGP协议在选择10.240.0.0/24路由就会选择CC-CRS-1设备,因为CC-CRS-1公布路由的MED100,而JL-Cisco-12416公布路由的MED200,从CC-CRS-1进入省网的流量再通过 QD-NE80E进入城域网。10.244.0.0/24路由通过JL-Cisco-12416设备进入省网,因为JL-Cisco-12416设备公布路由的MED100CC-CRS-1公布的路由MED200,从JL-Cisco-12416设备进入省网的流量再通过KP-NE80E设备进入城域网。
当城域网核心一台设备入方向流量饱和或需要控制流量从指定的方向回来,就可以根据实际情况通过配置城域网核心设备BGP协议公布路由的团体和MED属性来引导流量从哪个的方向进入城域网。
QD-NE80E设备到CC-CRS-1链路中断入方向流量变化
              
      当QD-NE80E设备上行到CC-CRS-1设备的链路中断,BGP连接也随之中断,CC-CRS-1设备会清空从QD-NE80E学习到的路由,将从JL-Cisco-12416学习到的次优路由放入路由表,同时在向国干公布路由时会匹配路由策略的node30,也就是公布的路由携带MED值为500。国干设备在路由选择时会优选从JL-Cisco-12416设备,因为JL-Cisco-12416公布给国干的路由携带的MED值是100200,而没MED 500的路由。
                  
注:QD-NE80E到省干设备链路中断国干设备路由选择
    
         
QD-NE80E到省干设备链路中断后,CC-CRS-1向国干公布的路由网段10.240.0.0/24MED值是500,而省干JL-Cisco12416公布网段10.240.0.0/24路由MED值是200,所以国干设备在选择路由时会选择从省网JL-Cisco-12416设备进入,再由KP-NE80E进入城域网。