简化IBGP网络连接
BGP规定,在AS内部IBGP设备之间,为了防止路由环路,IBGP设备从其IBGP对等体学习来的路由不再通告给其他IBGP对等体,也就是只能单跳通告。这样在AS内部各IBGP设备之间就可能无法实现互联互通,因为任何一个IBGP设备都可能无法了解同一个AS中非直连的IBGP设备上的路由信息。
为解决以上问题,会要求AS内部各IBGP对等体间全连接。为简化IBGP网络连接,BGP提出了两种解决方案,就是“路由反射器”和“联盟”。简化IBGP网络连接就涉及两项配置任务。可根据实际需要选择一个方案,也可同时配置(在配置了联盟后又同时配置路由反射器时,路由反射器是在联盟的子AS中进行配置的)。
①配置BGP路由反射器
②配置BGP联盟
一、配置BGP路由反射器
使用路由反射器RR可解决AS内部IBGP全连接问题,在需要配置为路由反射器的设置上进行配置。
在配置路由反射器时要注意:
①集群ID用于防止集群内多个路由反射器和集群间的路由环路。当一个集群里有多个路由反射器时,必须为同一个集群内的所有路由反射器配置相同的集群ID。
②如果路由反射器的客户机之间重新建立了IBGP全连接关系,那么客户机之间的路由反射器就是没有必要的。此时,可以配置禁止客户机之间的路由反射,减轻网络负担。
③在一个AS内,RR主要有路由传递和流量转发两个作用。当RR连接了很多客户机和非客户机时,同时进行路由传递和流量转发会使CPU资源消耗很大。如需保证路由传递的效率,可以在该RR上禁止BGP将优先的路由下发到IP路由表,使RR主要用来传递路由。
二、配置BGP联盟
BGP联盟是用来解决AS内各IBGP全连接的另一个方案。它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系或配置反射器,子自治系统之间建立EBGP连接关系。
因为联盟技术会重新划分子AS,所以同一AS内部的IBGP对等体之间的建立是在建立联盟后,是利用新的子AS号建立的,不是先利用原来的主AS号建立IBGP对等体连接,包括联盟内部与外部AS之间的EBGP对等体的建立,也是用子As号,而不是用原来的主AS号。
三、BGP路由反射器配置示例
如上图拓扑,在一个AS中有8台设备需要组建IBGP网络,其中B、D、E已经建立了BGP全连接。现要求在不破坏B、D、E全连接关系的情况下采用路由器反射方案组建IBGP网络,尽可能简化设备的配置和管理。
1、基本配置思路
除要在各路由器上配置基本的BGP功能外,最重要的配置就是要采用路由器反射技术实现那些非彼此直接连接的IBGP设备间的互联。
A、B、C之间已经分别建立了BGP全连接,它们之间无需采用路由器反射技术,要禁止客户间的路由反射。B、D、E之间虽然也建立了全连接,但它与A、B、C之间的全连接有一个共同的设备——RouterB。
C、F、G之间没有建立全连接,但A、B、C之间的全连接有一个共同的设备——RouterC,这样一来就可以把B、D、E,以及C、F、G分别划到一个集群中,通过它们与A、B、C之间共同的设备作为路由反射器,就可以实现整个AS内IBGP路由的简单互联,最终实现类似于仅A、B、C之间全连接的那样的IBGP网络。
基本配置思路:
①配置RouterB是Cluster1的路由反射器,RouterD和RouterE是它的两个客户机,配置禁止客户机间通信(因为它们彼此间已是全连接),实现在不破坏RouterB、RouterD和RouterE全连接关系的情况下组建IBGP网络的需求。
②配置RouterC为Cluster2的路由反射器,RouterF和RouterG是它的客户机,实现简化设备的配置和管理的需求。
2、具体配置步骤
①配置各路由器接口的IP地址。
<RouterA>system-view
[RouterA]interface gigabitetehernet 1/0/0
[RouterA-GigabitEthernet1/0/0]ip address 10.1.1.224
[RouterA-GigabitEthernet1/0/0]quit
[RouterA]interface gigabitetehernet 2/0/0
[RouterA-GigabitEthernet2/0/0]ip address 10.1.3.224
[RouterA-GigabitEthernet2/0/0]quit
[RouterA]interface gigabitetehernet 3/0/0
[RouterA-GigabitEthernet3/0/0]ip address 9.1.1.124
[RouterA-GigabitEthernet3/0/0]quit
②配置各路由器的BGP基本功能。包括配置各自的对等体连接,并需要在RouterA上引入它的直连路由9.1.1.0/24。A、B、C、D、E、F、G的路由器ID分别设为1.1.1.1、2.2.2.2、3.3.3.3、4.4.4.4、5.5.5.5、6.6.6.6、7.7.7.7。
③在RouterB上配置Cluster1的路由反射器,集群ID号为1。
④在RouterC上配置Cluster2的路由反射器,集群ID号为2。
配置好后,通过display bgp routing-table 9.1.1.0查看D上的BGP路由表中是否可以见到由A连接的9.1.1.0/24的路由,并且可以看到该路由的Originator和Cluster_ID属性:
同样可以在Cluster1和Cluster2的其他客户的BGP路由表中见到9.1.1.0/24路由,表明以上的路由反射器配置正确。
四、BGP联盟配置示例
如上拓扑,AS200中有多台BGP路由器,其中A、D、E之间是彼此全连接的,其他路由器之间没有全连接。需要采用BGP联盟方案在AS200内减少IBGP的连接数。
1、基本配置思路
AS200内部,A、D、E之间彼此已有全连接,但B和C没有与其他IBGP设备构成全连接。可将整个AS200划分为3各子AS:AS65001、AS65002和AS65003。其中A、D、E分到AS65001内,B和C各分别单独分到一个AS65002和AS65003中,可实现减少IBGP的连接数需求。因为B和C之间没有直接连接,所以不能划分到同一个子AS中。
在配置联盟前,仅需要配置路由器的接口IP地址,无需配置BGP对等体的连接。对等体的连接是在配置好联盟、划分好子AS后配置的。
2、具体配置步骤
①配置各路由器接口的IP。
<RouterA>system-view
[RouterA]interface gigabitetehernet 1/0/0
[RouterA-GigabitEthernet1/0/0]ip address10.1.4.1 24
[RouterA-GigabitEthernet1/0/0]quit
[RouterA]interface gigabitetehernet 2/0/0
[RouterA-GigabitEthernet2/0/0]ip address10.1.1.1 24
[RouterA-GigabitEthernet2/0/0]quit
[RouterA]interface gigabitetehernet 3/0/0
[RouterA-GigabitEthernet3/0/0]ip address 10.1.2.124
[RouterA-GigabitEthernet3/0/0]quit
[RouterA]interface gigabitetehernet 40/0
[RouterA-GigabitEthernet4/0/0]ip address10.1.3.1 24
[RouterA-GigabitEthernet4/0/0]quit
②配置BGP联盟。这里其实是要把A、B、C配置成EBGP对等体关系,建立EBGP对等体连接。
RouterA上的配置。这里同时把RouterB和RouterC所属的子AS号加入联盟中,因为RouterA与它们都有直接连接。另外因为RouterA是ASBR设备,为了使RouterA在向它的IBGP对等体转发路由时收到路由的IBGP对等体可以识别路由中的下一跳,需要在RouterA上配置修改转发给IBGP对等体的路由的下一跳为自身的出接口IP地址。
RouterB上的配置。这里不要在confederation peer-as命令中加入RouterC所属的子AS号,因为AS65002与AS65003之间没有直接连接。另外因为RouterB不是ASBR,所以不需要配置修改来自RouterA的路由下一跳为自己的出接口。
RouterC上的配置。这里也不要在confederation peer-as命令中加入RouterB所属的子AS号,因为AS65003与AS65002之间没有直接连接。同样因为RouterC不是ASBR,所以不需要配置修改来自RouterA的路由下一跳为自己的出接口。
③配置AS65001内的IBGP对等体连接
RouterA上的配置,要注意也要配置转发给IBGP对等体的路由的下一跳为自己的出接口IP地址。
④配置AS100和AS200之间的EBGP连接
通过display bgprouting-table 9.1.1.0查看RouterB的BGP路由表,RouterB已学习到了RouterF上的9.1.1.0/24路由。
控制BGP路由的发布和接收
控制BGP路由的发布和接收,可控制路由表容量,提高安全性。通过路由策略来实现,但配置路由策略后还需要对BGP进行软复位,以便最终应用所配置的路由策略。
BGP路由聚合也可在一定程度上控制路由的发布和接收。
一、控制BGP路由发布
BGP路由表路由数量通常比较大,对发布的路由进行控制,只发送想要发布的路由或只发布对等体需要的路由。另外,到达同一个目的地址可能存在多条路由,这些路由穿越不同AS,为了把业务流量引导向某些特定AS,也需要对发布的路由进行筛选。
根据所控制的范围不同,BGP路由发布控制有两种方式:一是基于全局对BGP设备向所有对等体(组)发布的路由进行控制;二是基于特定对等体(组)发布的路由控制。如同是配置,则基于特定对等体(组)的配置优先。
二、控制BGP路由信息的接收
当设备遭到恶意攻击或网络中出现错误配置,会导致BGP从邻居接收大量的路由,消耗了资源,因此必须根据网络规划和设备容量,对运行时所使用的资源进行限制。BGP提供了基于对等体(组)的路由控制,限制邻居发来的路由数量。
也分两种配置方式:一是基于全局的对所有接收的路由进行控制,二是基于来自特定的对等体(组)的路由进行控制。同时配置,后者优先。
三、配置BGP软复位
在BGP设备配置了发布、接收路由策略后,为了使策略立即生效,可通过:reset bgp [vpn-instancevpn-instance-name ipv4-family | vpnv4]{all| as-number-plain | as-number-dot| ipv4-address |group group-name | external | internal }[graceful]命令复位指定的BGP连接。这会造成短暂的BGP连接中断。
BGP支持手动对BGP连接进行软复位,即可在不中断BGP连接情况下完成路由表的刷新(Router-refresh)。对不支持Router-refresh功能的BGP对等体,还可同时配置保留该对等体的所有原始路由功能,这样能在不复位BGP连接的情况下完成路由表的刷新。
四、配置BGP路由聚合
IPv4网络中BGP支持自动聚合和手动聚合两种聚合方式,自动聚合方式只能聚合到对应的自然网段路由,而手动聚合方式则可以是任何子网掩码长度(但必须大于8)小于被聚合路由子网掩码长度的子网或超网路由。手动聚合仅对BGP本地路由表中已经存在的路由表项有效。同时配置时,自动聚合的路由优先级低于手动聚合的路由优先级。
调整BGP网络的收敛速度
通过配置BGP定时器、去使能EBGP连接快速复位和路由振荡抑制可以提高BGP网络的收敛速度,提高稳定性。主要配置任务:
①配置BGP连接重传定时器
②配置BGP存活时间和保持时间定时器
③配置BGP更新报文定时器
④配置BGP连接快速复位
一、配置BGP连接重传定时器
BGP发起TCP连接后,如果成功建立起TCP连接,则关闭连接重传定时器。如TCP连接建立不成功,则会在连接重传定时器超时后重新尝试建立连接。通过设置较小的连接重传定时器,可以减少等待下次连接建立的时间,加快连接失败后重新建立的速度,而设置较大的连接重传定时器,可减少由于邻居反复振荡引起的路由振荡。
BGP支持在全局或单个对等体(组)配置连接重传定时器。
二、配置BGP存活时间和保持时间定时器
BGP的Keepalive消息用于维持BGP连接关系。减少存活时间和保持时间,BGP可以更快速的检测到链路故障,加快网络收敛。过短的保持时间会导致Keepalive消息增多,占带宽,设备负担重。
增大存活时间和保持时间,可减轻设备负担和减少网络带宽占用,但过长会导致Keepalive消息减少,不能及时检测到链路状态的变化,不利于网络快速收敛。
BGP支持在全局或单个对等体(组)配置存活时间和保持时间定时器。同时配置,单个对等体高于对等体组,对等体组高于全局优先级。
三、配置BGP更新报文定时器
BGP协议不会定期更新整个路由表,但当路由变化时会通过发送Update报文向其他对等体增量的更新路由表。这样可以设置发送Update报文的最小时间,通过减小更新报文发送周期,BGP可以更快的检测到路由变化。但过短会导致Update消息增多,设备负担加重,占用带宽。增大更新报文发送周期时间,可减轻设备负担减少网络占用,但使得BGP不能及时检测到路由变化,不利于快速收敛。
配置方法,在BGP视图下通过:peer {group-name |ipv4-address} route-update-interval interval向对等体(组)发送相同路由前缀更新报文的时间间隔。
示例:配置向对等体发送路由更新的时间间隔为10s。
<Huawei>system-view
[Huawei]bgp 100
[Huawei-bgp]peer 1.1.1.2 as-number 200
[Huawei-bgp]peer 1.1.1.2route-update-interval 10
四、配置EBGP连接快速复位
EBGP连接快速复位功能缺省是使能的,目的是为了使BGP不必等待保持时间定时器超时,而立即快速响应接口故障,删除接口上的EBGP直连会话,便于BGP快速收敛。
但如果EBGP接口状态反复变化,EBGP会话就会反复建立和删除,造成网络震荡。这时可去使能EBGP连接快速复位功能。方法是在BGP视图下通过:undoebgp-interface-sensitive命令配置。通过ebgp-inerface-sensitive命令进行使能。
配置BGP安全性
通过配置BGP对等体的连接认证和配置BGP GTSM功能,可以提高BGP网络的安全性。配置认证时,要求对等体两端所配置的认证方式和认证密码完全一致。
①配置MD5认证
②配置Keychain认证
③配置BGP GTSM功能
一、配置MD5认证
BGP使用TCP作为传输协议,只要TCP数据包的源地址、目的地址、源端口、目的端口和TCP序号是正确的,BGP就会认为这个数据包有效,但数据包的大部分参数对于攻击者来说不难获得。
为保证BGP免受攻击,可在BGP邻居之间使用MD5认证或Keychain认证。MD5算法配置简单,配置后生成单一密码,需要人为干预才可以切换密码,适用于需短时间加密的网络。MD5认证失败,则不建立TCP连接。另外,BGP MD5认证与BGP Keychain认证互斥,不能在同一对等体或对等体组上配置。
MD5配置方法在BGP视图下:peer {ipv4-address | group-name}password {ciphercipher-password | simple simple-password}命令配置MD5认证密码(两端的认证方式和密码必须完全一致)
示例:配置对本地设备与对等体1.1.1.2之间的TCP连接使用认证。
<Huawei>system-view
[Huawei]bgp 100
[Huawei-bgp]peer 1.1.1.2 as-number 200
[Huawei-bgp]peer 1.1.1.2 password simplehuawei
二、配置Keychain认证
Keychain认证方式具有一组密码,可以根据配置自动切换,安全性更高,配置过程较为复杂,适用对安全性要求较高的网络。配置BGP Keychain认证前,必须配置keychain-name对应的Keychain认证,否则TCP连接不能正常建立。
BGP对等体两端必须都配置针对使用TCP连接的应用程序的Keychain认证,所使用的Keychain(秘钥链)需已使用keychainkeychain-name命令创建,然后分别通过key-id key-id、key-string {[plain] plain-text | [cipher] cipher-text}和algorithm {hmac-md5 | hmac-sha-256 | hmac-sha1-12 | hmac-sha1-20 |MD5 | sha-1 | sha-256 | simple}命令配置该keychain采用的key-id、密码及其认证算法,必须保持本端和对端的key-id、algorithm、key-string相同,才能正常建立TCP连接,交互BGP消息。
配置BGP Keychain认证的方法是在BGP视图下使用peer {ipv4-address | group-name} keychain keychain-name命令。
示例:为对等体配置名为Huawei的Keychain认证。
<Huawei>system-view
[Huawei]bgp 100
[Huawei-bgp]peer 1.1.1.2 as-number 200
[Huawei-bgp]peer 1.1.1.2 keychain Huawei
三、配置BGP GTSM功能
BGP GTSM(Generalized TTL Security Mechanism,通用TTL安全保护机制)是通过检测IP报文头中的TTL值是否在一个预先设置好的特定范围内,并对不符合TTL值范围的报文进行允许通过或丢弃操作,从而实现了保护IP层以上业务,增强系统安全性的目的。
如将IBGP对等体的报文的TTL的范围设为254至255.当攻击者模拟合法的BGP报文,对设备不断发送报文进行攻击时,TTL值必然小于254。如没有使能BGP GTSM功能,这些报文会直接上送控制层处理。如果使能BGP GTSM,系统会对所有BGP报文的TTL值进行检查,丢弃TTl小于254的攻击报文。
BGP与BFD联动
BGP通过周期性的向对等体发送Keepalive报文来实现邻居检测,检测故障时间较长。可配置与BFD联动。
一、配置BGP与BFD联动
BFD检测是毫秒级,能够提高BGP路由收敛速度。需在BFD链路两端的设备上同时配置。
当对等体加入了对等体组,且这个对等体组使能了BFD特性,则对等体将继承该对等体组的BFD特性,创建BFD会话。如果不希望对等体从对等体组继承BFD特性,可以配置peer bfd block命令,阻止对等体从对等体组中继承BFD功能。
二、BGP与BFD联动配置示例
如上图拓扑,RouterA属于AS100,RouterB和RouterC属于AS200,路由器RouterA和RouterB,RouterA和RouterC建立非直连(中间经过了其他设备)的EBGP连接。正常情况下,业务流量在主链路RouterA——>RouterB上传送,链路RouterA——>RouterC——>RouterB作为备份链路。现要求实现故障的快速感知。
如果RouterA与RouterB或RouterC之间使用的是直连链路建立EBGP邻居,则无需配置BGP与BFD联动功能,因为BGP已经缺省配置了ebgp-interface-sensitive命令快速感知链路故障。当EBGP链路出现故障时,BGP可以迅速感知并立即尝试使用其他接口复位源接口上的BGP连接。
1、基本配置思路
BGP与BFD联动功能的配置是在BGP基本功能配置之后进行的,需要在监控链路两端的ROuterA与RouterB上分别配置BGP与BFD联动功能。另外,需要将RouterB的MED属性值配置的更小(因为MED属性是用来确定离开AS的路由路径的),以便在正常情况下以及在主链路故障恢复后,最终选择从A——>B的主链路进行数据转发。
2、具体配置步骤
①配置各路由器接口IP。
<RouterA>system-view
[RouterA]interface gigabitetehernet 1/0/0
[RouterA-GigabitEthernet1/0/0]ip address 200.1.1.124
[RouterA-GigabitEthernet1/0/0]quit
[RouterA]interface gigabitetehernet 2/0/0
[RouterA-GigabitEthernet2/0/0]ip address 200.1.2.124
[RouterA-GigabitEthernet2/0/0]quit
②配置各路由器的BGP基本功能,A和B、A和C之间建立EBGP连接,B和C之间建立IBGP连接。另外,因为A与B之间以及A与C之间建立的是非直连EBGP连接,所以在它们之间建立EBGP连接时一定要用peer ebgp-max-hop命令允许建立非直连EBGP连接。
A、B、C的路由器ID分别设为1.1.1.1、2.2.2.2、3.3.3.3。
配置基本BGP后,通过display bgp peer查看各路由器上已建立的BGP连接。
RouterA已与RouterB和RouterC分别建立了EBGP连接(Established)。
③在RouterB和RouterC上分别通过路由策略配置发送给他们的对等体RouterA的MED属性,把RouterB上的MED属性值设为跟小些,以便在正常情况下,以及当主链路故障恢复时RouterA能及时的恢复主链路的数据转发。
此时在A上通过display bgp routing-table查看BGP路由表。可看出,去往172.16.1.0/24的路由下一跳地址为200.1.1.2,流量在主链路A——>B上传输。
④在RouterA和RouterB上分别配置BFD检测功能,配置相同的BFD报文发送和接收间隔,以及本地检测时间倍数参数。
此时通过display bgp bfdsession all在A上查看BGP建立的所有BFD会话。
最后对RouterB的GE2/0/0口执行shutdown,模拟主链路故障,然后在A上通过display bgprouting-table查看其BGP路由表,可看出主链路失效后,备份链路A——>C——>B生效,去往172.16.1.0/24的路由下一跳为200.1.2.2。