BGP
简介
BGP在TCP/IP网中实现域间路由。BGP是一种外部网关协议(EGP),即它在多个自治系统或域间执行路由、 与其它BGP系统交换路由和可达性信息。BGP有多个版本,目前在internet中应用的是BGP4版本,在RFC1711中进行了规定。BGP协议既可以提供AS间(IBGP)也可以提供AS内部路由(EBGP)。为解决IBGP peer 全连接的问题, internet常采用路由反射器(Route Reflector)技术。 本文就IBGP、EBGP及常用的RR技术的相关注意事项进行描述,供工程或者运维人员参考。
一、
SP中IBGP的注意事项
两个路由器之间的相邻连接称为对等体连接,它可以建立在同一AS内,在这种情况下,BGP称为内部BGP(IBGP)。
1.1 采用 loopback 0地址建立IBGP连接
IBGP中通常建议采用路由器的回环地址建立BGP对等,相对于物理接口地址,回环地址具有很好的稳定性,因为只要有任何一个物理接口连接正常能保证IGP的互通,BGP的连接就能够维持。 配置的示例如下: interface loopback 0
ip address m.m.m.m 255.255.255.255 router bgp XX---------------------------/BGP AS域/
neighbor n.n.n.n remote-as XX------/n.n.n.n为对等路由器的Loopback 0地址/ neighbor update-source loopback 0 1.2 同步规则
BGP同步规则的定义: 在BGP同步打开的情况下,一个BGP路由器不会把那些通过IBGP邻居学到的BGP路由通告给自己的EBGP邻居;除非自己的IGP路由表中存在这些路由,才可以向EBGP路由器通告。B
GP同步规则的目的: 防止一个AS(不是所有的路由器都运行BGP)内部出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由. 如果一个AS内部存在非BGP路由器,那么就出现了BGP和IGP的边界,需要在边界路由器将BGP路由发布到IGP中,才能保证AS所通告到外部的BGP路由在AS内部是连通的.实际上是要求BGP路由和IGP路由的同步. 如果将BGP路由发布到IGP中,由于BGP路由主要是来自AS外部的路由(来自internet),那么结果是IGP路由器要维护数以万计的外部路由,对路由器的CPU和内存以及AS内部的链路带宽的占用将带来巨大的开销. 在通常情况下AS域内的路由器都启动了BGP协议,因此建议将同步规则关闭,配置的示例如下: router bgp XX---------------------------/BGP AS域/ no synchronization 1.3 Neighbour Shutdown
BGP的配置通常需要大量的路由策略配置,特别建议在这些路由策略生效之前不要激活BGP Neighbour。否则,在BGP生效但是BGP策略没有生效之前的时间段内,引起意外的情况发生,比如,对端的路由器可能突然收到大量的BGP路由,如果超过了其处理能力则有可能导致设备宕机或者重启。 配置的示例如下: router bgp XX
neighbor n.n.n.n remote-as XX neighbor n.n.n.n shutdown
当所有的路由策略配置完成以后激活BGP邻接: no neighbor n.n.n.n shutdown 1.4 NO auto-summary
默认情况下,BGP会将地址前缀按照Class A、Class B、Class C地址的规定进行汇总,在目前的internet实际部署中,必须要求将地址的自动汇总关闭。 配置的示例如下: router bgp XX no auto-summary
1.5 BGP Neighbour Authentication
根据网络的具体情况,可以考虑在BGP对等之间采用MD5加密认证机制,对所有的BGP信息进行加密认证,要求两个Neighbor都要知道密码。MD5认证可以在Peer之间采用,也可以在Peer Group之间使用。
配置的示例如下: router bgp XX
neighbor n.n.n.n password v61ne0qkel33& 1.6 Log-neighbor-change
对于BGP邻接的UP/Down事件及其原因进行记录非常有利于工程和运维人员对BGP及网络故障的处理,建议在BGP的配置将该功能打开。 配置的示例如下: router bgp XX
[no] log-neighbor-changes 记录示例如:
%BGP-6-ADJCHANGE: neighbor x.x.x.x Up %BGP-6-RESET: neighbor x.x.x.x reset 1.7 BGP Router-id
BGP采用TCP协议作为传输层协议,利用IP地址建立TCP Session,建议明确指定路由器的BGP Router-id,提高稳定性,而且便于运维人员的管理和维护。 配置示例如下: router bgp XX
bgp router-id m.m.m.m-----------------------/本机的loopback地址/ 1.8 BGP Peer-group
建议在有大量的BGP peer 链接时,尤其时RR的配置时,推荐使用Peer Group 命令来简化配置,并方便管理。通过Peer-Group,BGP在路由传递时对组内的对等进行一次的路由整理,然后复制到各个对等进行分发,可以有效的降低CPU的负载和内存的消耗。 配置的示例如下: router bgp XX
neighbor internal peer-group neighbor internal remote-as 109
neighbor internal update-source loopback 0 neighbor m.m.m.m peer-group internal neighbor l.l.l.l peer-group internal
二.
SP EBGP配置注意事项
2.1 BGP peer Group
采用此命令可以有效的降低CPU的负载和内存的消耗。在配置上也做到了简化。 以下是一个配置模板的情况 router bgp XX
neighbor internal peer-group neighbor internal remote-as 109
neighbor internal update-source loopback 0 neighbor m.m.m.m peer-group internal neighbor l.l.l.l peer-group internal
建议在有大量的BGP peer 链接时,尤其时RR的配置时,推荐使用Peer Group 命令来简化配置,并方便管理。
2.2限制从远端BGP邻居收到的路由数量
neighbor ip-address maximum-prefix maximum [threshold] [warning-only]
在BGP协议受到黑客的网络攻击、网络振荡和配置错误时会使得本机的BGP收到大量的路由信息,BGP需要占用大量的内存存储和处理这些路由。如果路由器存在内存不足或性能缺陷等问题,极易产生内存使用错误,从而导致路由器运行不稳定,严重的情况下会导致路由器重启,类似案例在互联网上屡见不鲜。因此几乎所有的ISP都会限制从远端BGP邻居收到的路由数量,从而保障网络设备的稳定运行。 当BGP收到超过maximum所配置的路由数量时,该命令有两种行为模式:
1.发出告警信息同时关闭和相关邻居的BGP连接并且需要人工手动启动BGP,才可以重新建立到相关邻居的BGP连接 (不配置 [warning-only])
2. 只发出告警信息而不关闭BGP连接(配置 [warning-only] )
第一种模式为系统缺省模式,最大程度上保证本机的稳定性;第二种模式由于只发送报警信息不作任何处理,在一些情况下还是会对路由器的稳定性造成较大的影响。 2.3 BGP互连的安全设置
当必须和上级BGP设备接收路由条目时,需要非常小心,按照以下规则进行路由接收: 1. 不接收 RFC1918等私有地址。 2. 不接收自己网络的前缀。 3. 不接收缺省路由(除非你需要它) 4. 不接收长度大于24的前缀列表。 配置的典型配置如下: router bgp 100
network 221.10.0.0 mask 255.255.224.0 (自身宣告的网络) neighbor 221.5.7.1 remote-as 101 neighbor 221.5.7.1 prefix-list in-filter in !
ip prefix-list in-filter deny 0.0.0.0/0 ! Block default ip prefix-list in-filter deny 0.0.0.0/8 le 32 ip prefix-list in-filter deny 10.0.0.0/8 le 32
ip prefix-list in-filter deny 127.0.0.0/8 le 32 ip prefix-list in-filter deny 169.254.0.0/16 le 32 ip prefix-list in-filter deny 172.16.0.0/12 le 32 ip prefix-list in-filter deny 192.0.2.0/24 le 32 ip prefix-list in-filter deny 192.168.0.0/16 le 32
ip prefix-list in-filter deny 221.10.0.0/19 le 32 ! Block local prefix ip prefix-list in-filter deny 224.0.0.0/3 le 32
ip prefix-list in-filter deny 0.0.0.0/0 ge 25 ! Block prefixes >/24 ip prefix-list in-filter permit 0.0.0.0/0 le 32
• 这个prefix-list 模板必须加载在和外界EBGP 的peer 配置上,并需要在 in 和out两个方向配置 参考链接如下:http://www.ietf.org/internet-drafts/draft-manning-dsua-01.txt ip prefix-list rfc1918-dsua deny 0.0.0.0/8 le 32 ip prefix-list rfc1918-dsua deny 10.0.0.0/8 le 32 ip prefix-list rfc1918-dsua deny 127.0.0.0/8 le 32 ip prefix-list rfc1918-dsua deny 169.254.0.0/16 le 32 ip prefix-list rfc1918-dsua deny 172.16.0.0/12 le 32 ip prefix-list rfc1918-dsua deny 192.0.2.0/24 le 32 ip prefix-list rfc1918-dsua deny 192.168.0.0/16 le 32 ip prefix-list rfc1918-dsua deny 224.0.0.0/3 le 32 ip prefix-list rfc1918-dsua deny 0.0.0.0/0 ge 25 ip prefix-list rfc1918-dsua permit 0.0.0.0/0 le 32 2.4 根据AS路由过滤
过滤掉包含有私有AS号的路由;
过滤掉AS-Path中包含有本AS号的路由,防止路由循环; 过滤掉其他peering AS,防止transit;
下面以运营商A和运营商B互连的bgp策略作为参考: 配置示例如下:
!## The Following just example ############# ip as-path access-list 180 permit ^701$
ip as-path access-list 180 permit ^701_([0-9])+_$ ip as-path access-list 181 permit _6451[2-9]_ ip as-path access-list 181 permit _645[2-9][0-9]_ ip as-path access-list 181 permit _64[6-9][0-9][0-9]_ ip as-path access-list 181 permit _65[0-9][0-9][0-9]_ ip as-path access-list 181 permit _1239_ ip as-path access-list 181 permit _5511_ ip as-path access-list 182 permit _1239_ ip as-path access-list 183 permit ^701$
ip as-path access-list 183 permit ^701_([0-9])+_$ ip as-path access-list 183 permit ^701_([0-9])+_([0-9])+_$ ip as-path access-list 184 permit ^1239_701_ ip as-path access-list 185 permit ^1239_([0-9])+_$ ip as-path access-list 185 permit ^1239_([0-9])+_([0-9])+_$ ip as-path access-list 186 permit ^701_1239_ ip as-path access-list 187 permit ^5511_ ip as-path access-list 188 permit _1239_ ip as-path access-list 188 permit _701_ ip as-path access-list 188 permit _1668_ ip as-path access-list 190 permit _852_ ip as-path access-list 191 permit ^701_
ip as-path access-list 191 permit ^5511_ ip as-path access-list 192 deny ^5511_ ip as-path access-list 192 deny ^701_ ip as-path access-list 192 permit .*
ip as-path access-list 193 permit ^5511_702_ ip as-path access-list 199 permit ^7992_ 2.5BGP Router-id
BGP采用TCP协议作为传输层协议,利用IP地址建立TCP Session,建议明确指定路由器的BGP Router-id,提高稳定性,而且便于运维人员的管理和维护。 配置示例如下: router bgp XX
bgp router-id m.m.m.m-----------------------/本机的loopback 0地址/ 2.6Log-neighbor-change
对于BGP邻接的UP/Down事件及其原因进行记录非常有利于工程和运维人员对BGP及网络故障的处理,建议在BGP的配置将该功能打开。 配置的示例如下: router bgp XX
[no] log-neighbor-changes 记录示例如:
%BGP-6-ADJCHANGE: neighbor x.x.x.x Up %BGP-6-RESET: neighbor x.x.x.x reset 2.7 BGP Neighbour Authentication
根据网络的具体情况,可以考虑在BGP对等之间采用MD5加密认证机制,对所有的BGP信息进行加密认证,要求两个Neighbor都要知道密码。MD5认证可以在Peer之间采用,也可以在Peer Group之间使用。
配置的示例如下: router bgp XX
neighbor n.n.n.n password v61ne0qkel33& 2.8 Neighbour Shutdown
BGP的配置通常需要大量的路由策略配置,特别建议在这些路由策略生效之前不要激活BGP Neighbour。否则,在BGP生效但是BGP策略没有生效之前的时间段内,引起意外的情况发生,比如,对端的路由器可能突然收到大量的BGP路由,如果超过了其处理能力则有可能导致设备宕机或者重启。 配置的示例如下: router bgp XX
neighbor n.n.n.n remote-as XX neighbor n.n.n.n shutdown
当所有的路由策略配置完成以后激活BGP邻接: no neighbor n.n.n.n shutdown 2.9 同步规则
在通常情况下AS域内的路由器都启动了BGP协议,因此建议将同步规则关闭,配置的示例如下: router bgp XX---------------------------/BGP AS域/ no synchronization
三、
BGP的 RR配置原则
由于IBGP协议需要做成全网状结构,因此在iBGP邻居数量较大的时候一般会采用IBGP的路由反射器(RR)来减少IBGP相邻关系的配置,提高IBGP的扩展性。
3.1 放置RR最关键的原则是:需要按照网络的物理结构来部署,这可以避免设置RR后路由器对数据包的转发造成影响;违反这一原则有可能造成数据包的死循环。
3.2 由于RR需要存储较多的路由信息,因此作为RR的路由器需要有较大的内存以及处理能力;对于用于反射互联网全路由的RR路由器,至少需要1G以上的内存;至少需要配置7200+NPE-G1以上处理能
力以上路由器;对于不需要反射互联网全路由的RR,至少需要配置512M的内存,7200+NEP400以上处理能力的路由器。
3.3 在BGP路由较多的情况下,需要将网络划分为一个或者多个RR clusters, 每个CLUSTER中至少有配置两个RR路由器;每个RR客户端必须建立到该CLUSTER中的每个RR反射器的IBGP连接;RR反射器间必须建立网状IBGP连接。
3.4在RR路由反射器上应尽量避免修改iBGP路由的属性,如:next-hop等,否则容易形成路由循环。 3.5 作为RR的路由器,尽量避免被作为传输业务数据的路由器使用。
3.6在属于同一个cluster内的RR路由器,如果有大于70%连续未用内存块(Largest Free Memory)的情况下可以不需要配置 cluster ID;在RR客户端使用物理端口IP地址和 RR建立IBGP连接时,不建议在RR上配置cluster ID,否则在RR客户端到冗余的RR路由器的IBGP会话中断时,可能造成路由信息的丢失。
3.7建议在RR路由器的配置中使用peer-groups功能,提高RR路由器的可管理性以及提高BGP路由更新的效率。
3.8在RR路由器上关闭“soft-reconfiguration”,由于soft-reconfiguration会保留从相邻IBGP收到的路由信息,会消耗较大的路由器内存,推荐关闭。
3.9 为提高RR路由器收敛的速度,建议在RR路由器的端口上增加端口Input hold queue的数量,使用IOS端口配置命令“hold-queue 1500 in”
3.10 RR路由器上使用全局配置命令关闭BGP和IGP的同步,”no synchronization”。
3.11 RR路由器上需要明确指定BGP的路由器ID,“bgp router-id x.x.x.x”, x.x.x.x一般为路由器的LOOPBACK地址。
3.12 RR路由器需要打开记录BGP相邻关系变化的配置,用于记录BGP相邻关系的稳定 性,在BGP的配置模式下使用如下IOS命令“bgp log-neighbor-changes”。
3.13 关闭BGP路由器上的自动聚合功能,在BGP的配置模式下使用如下IOS命令“no auto-summary
因篇幅问题不能全部显示,请点此查看更多更全内容