文档库 最新最全的文档下载
当前位置:文档库 › BGP协议在运营商网络中的配置建议

BGP协议在运营商网络中的配置建议

BGP协议在运营商网络中的配置建议

2007-9-3

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路由器通告。BGP同步

规则的目的: 防止一个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两个方向配置

参考链接如下:https://www.wendangku.net/doc/751770131.html,/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.11RR路由器上需要明确指定BGP的路由器ID,“bgp router-id

x.x.x.x”, x.x.x.x一般为路由器的LOOPBACK地址。

3.12RR路由器需要打开记录BGP相邻关系变化的配置,用于记录BGP 相邻关系的稳定性,在BGP的配置模式下使用如下IOS命令“bgp log-neighbor-changes”。

3.13关闭BGP路由器上的自动聚合功能,在BGP的配置模式下使用如下IOS命令“no auto-summary”。

相关文档