在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