在1990年以前,传统BGP技术我们感觉用的挺好,但之后互联网规模爆炸式扩张,有些问题必须得好好考虑了。比如:
互联互通的PEER一般就那么几个,可是内网规模不断增长,怎么做好iBGP mesh?我要制定和实施新的路由策略,会不会对现网造成影响,是否会导致路由震荡甚至断网?都说网络要尽量简单,怎么才能既要网络稳定,又要扩张网络规模,这时候还能简单?

我们与一些机构进行了交流和总结,结论是,以下几种BGP技术在大型网络中表现出色: Route refresh; 思科的peer-groups;路由反射器和联邦(Route Reflectors and Confederations)。同时,建议弃用的有:Soft Reconfiguration; Route Flap Damping。

一、Route Refresh:
每次BGP policy更改都要reset BGP peer, 因为路由器不会存储哪些被当前策略reject的路由。但是如果使用Hard BGP peer reset,会导致BGP peering断开,CPU利用率升高,影响所有网络连接。因此使用Soft BGP peer reset,这样BGP peering不会中断,仅仅影响policy更改涉及的网络。
–BGP软清不会中断BGP连接;
–不需要额外配置,peer自动协商;
–不需消耗额外CPU;
–需要对端支持“route refresh capability” - RFC2918
–cisco请求对端重发BGP路由的命令:

clear ip bgp x.x.x.x [soft] in

–cisco重发BGP路由给对端的命令:

clear ip bgp x.x.x.x [soft] out

–记得一定要加 in / out
–硬清BGP是不得已的最后手段,效果等同于路由器重启Reboot
配置范例:

router bgp 100
   address-family ipv4
      neighbor 1.1.1.1 remote-as 101
      neighbor 1.1.1.1 route-map infilter in neighbor 1.1.1.1 soft-reconfiguration inbound
 ! Outbound does not need to be configured !

 clear ip bgp 1.1.1.1 soft in

二、Cisco’s Peer Groups
Peer Groups解决了这几个问题:
–大型iBGP mesh配置繁琐
–iBGP邻居收到同样的更新
–路由器CPU浪费在重复计算上
应用peer-groups以后,Group peers可以应用统一的outbound策略,并且以group为单位发送更新。

实际操作中带来的好处实实在在,比如配置更简单,减少出错几率,提高配置文件可读性,peer的成员可以应用不同的inbound策略,甚至还能应用在eBGP邻居上。CPU的利用率也降低了,帮助我们更快的把iBGP mesh建起来。

iBGP配置范例:

router bgp 100
   address-family ipv4
    neighbor ibgp-peer peer-group
    neighbor ibgp-peer remote-as 100
    neighbor ibgp-peer update-source loopback 0 
    neighbor ibgp-peer send-community
    neighbor ibgp-peer route-map outfilter out 
    neighbor 10.0.0.1 peer-group ibgp-peer 
    neighbor 10.0.0.2 peer-group ibgp-peer 
    neighbor 10.0.0.2 route-map infilter in 
    neighbor 10.0.0.3 peer-group ibgp-peer
!

eBGP配置范例:

router bgp 100
   address-family ipv4
    neighbor external-peer peer-group
    neighbor external-peer send-community
    neighbor external-peer route-map set-metric out 
    neighbor 160.89.1.2 remote-as 200
    neighbor 160.89.1.2 peer-group external-peer 
    neighbor 160.89.1.4 remote-as 300
    neighbor 160.89.1.4 peer-group external-peer 
    neighbor 160.89.1.6 remote-as 400
    neighbor 160.89.1.6 peer-group external-peer 
    neighbor 160.89.1.6 filter-list infilter in
!

思科正在考虑用update-groups来替代peer-group,(IOS 内部coding已有体现,但是还不能实际进行配置),请看下面已经显示:“update-groups"

Router1#sh ip bgp 10.0.0.0/26
BGP routing table entry for 10.0.0.0/26, version 2
Paths: (1 available, best #1, table default)
    Advertised to update-groups:
       1
    Refresh Epoch 1
    Local
        0.0.0.0 from 0.0.0.0 (10.0.15.241)
            Origin IGP, metric 0, localpref 100, weight 32768, valid...

截止目前,peer groups仍然被众多运营商认为“Best Practice”

这里有几条配置peer-group的原则:
1、总是为iBGP配置peer-groups
–即使只有少数iBGP peers
–易于未来扩展网络
–提高配置文档可读性
2、考虑eBGP配置peer-groups
–对同AS号的多个BGP客户配置特别有用 (RFC2270)
–在交换节点(exchange points)使用
–当每个peer的ISP策略大致相同的时候
–配置router server的时候。对于router server来说,要发给所有peer同样的路由更新

顺便帖一下Juniper的BGP groups配置

protocols {
      bgp {
            group ibgp {
                  type internal;
                  local-address 10.0.15.241;
                  family inet {
                      unicast; 
                  }
                  export export-ibgp;
                  peer-as 10;
                  neighbor 10.0.15.242 {
                        description ”Router 2";
                  }
                  neighbor 10.0.15.243 {
                  description ”Router 3";
                  }
           ...etc...
             }
           }
 }

三、路由反射器 Route Reflectors,用于iBGP mesh
解决 1/2n(n-1) iBGP mesh问题,简单计算一下,14个路由器 full mesh会有91个iBGP sessions,而n=1000的时候就会有接近50万个iBGP sessions。

可以使用路由反射器 route reflector或者联邦 Confederation