BGP 协议的测试实验 | 运维进阶

【作者】王巧雷,拥有多年一线实战经验的运维人。

1、基本概念

描述一些前置知识:

1. BGP的全称是border gateway protocol,是用在AS之间的协议。

2. AS是Autonomous system的简称,可以理解为运行同一种选路策略、统一管理的一组路由器。

3. 每个AS都有一个AS number,取值范围为 1-65535 ,其中1-64511是公有的,需要向IANA申请 , 64512-65535是私有的可以自由使用,类似192.168的IP地址。

4. 跨AS的是EBGP,AS内的是IBGP。

5. BGP是基于tcp做的封包,可以理解为bgp的包头外面会由tcp封包,tcp外面由IP封包,然后然后是二层的包头。在网络中传输。

关于路由黑洞:

以2.1的拓扑图为例:

pc1的192.168.1.10对pc2的172.16.30.10做ping测试,就需要有路由信息。路由信息封装在bgp中, 从R4到R5的链路中,R1没有运行bgp,当bgp的数据包传输的时候,因为是基于tcp封装的,bgp信息依次被tcp、ip、以太网等包头封装,和普通的网络包一样,只要相邻的两台路由器可以互通,就可以把数据包从R4传送到R5;但是数据包从pc2返回pc1的时候,封包格式为icmp ip,IP包头中会有src和dest的地址,这个dest ip就是pc1的192.168.1.10地址,这个数据包到了R3的后,R1是没有bgp协议的,也就学不到192.168.1.0的路由信息,所以传输会失败。这就是路由黑洞。

解决路由黑洞的方法有好几种,比如:

物理线路的full mesh,也就是说将as内的边缘路由器连线

将BGP重分布进OSPF

AS内所有路由器都运行bgp(本次实验采用的)

使用MPLS做tunnel

2. 测试过程

本次实验是采用GNS3模拟器做的,采用了IOU设备的方式。

模拟了bgp的实现过程,顺便验证了一下BGP中的路由黑洞。

2.1  测试拓扑

拓扑解释:

R1、R2、R3为一个自治区域,号码为123,为ibgp,3台路由器之间运行ospf,R2和R3运行bgp,R1仅运行ospf

R4为一个自治区域,号码为4,和R123之间为ebgp

R5为一个自治区域,号码为5,和R123之间为ebgp

各自路由器的router id为路由器编号地址,比如R1的为1.1.1.1

2.2  R1、R2、R3配置IP,配置ospf

1、配置IP地址

R1配置IP:

R1#conf tEnter configuration commands, one per line. End with CNTL/Z.R1(config)#int s2/0R1(config-if)#ip add 12.1.1.2 255.255.255.0R1(config-if)#no shuR1(config-if)#exitR1(config)#int s2/1R1(config-if)#ip add 11.1.1.1 255.255.255.0R1(config-if)#no shu

R2配置IP:

R2#conf tEnter configuration commands, one per line.  End with CNTL/Z.R2(config)#int s2/0R2(config-if)#ip add 14.1.1.2 255.255.255.0R2(config-if)#no shuR2(config-if)#exitR2(config)#int s2/1R2(config-if)#ip add 12.1.1.1 255.255.255.0R2(config-if)#no shu

R3配置IP:

R3#conf tEnter configuration commands, one per line. End with CNTL/Z.R3(config)#int s2/0R3(config-if)#ip add 11.1.1.2 255.255.255.0R3(config-if)#no shuR3(config-if)#exitR3(config)#int s2/1R3(config-if)#ip add 13.1.1.1 255.255.255.0R3(config-if)#no shu

2、配置ospf,对于R2和R3来说,只配置AS内的接口,外联ebgp的口不配置到ospf中

R1配置

R1(config)#router ospf 110R1(config-router)#router-id 1.1.1.1R1(config-router)#net 12.1.1.2 0.0.0.0 area 0R1(config-router)#net 11.1.1.1 0.0.0.0 area 0

R2配置

R2(config)#router ospf 110R2(config-router)#router-id 2.2.2.2R2(config-router)#net 12.1.1.1 0.0.0.0 area 0

R3配

R3(config)#router ospf 110 R3(config-router)#router-id 3.3.3.3R3(config-router)#network 11.1.1.2 0.0.0.0 area 0
3、查看路由表信息
R2#show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route - replicated route, % - next hop overrideGateway of last resort is not set 11.0.0.0/24 is subnetted, 1 subnetsO 11.1.1.0 [110/128] via 12.1.1.2, 00:01:46, Serial2/1 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC 12.1.1.0/24 is directly connected, Serial2/1L 12.1.1.1/32 is directly connected, Serial2/1

查看ospf

R2#show ip ospf database             OSPF Router with ID (2.2.2.2) (Process ID 110)                Router Link States (Area 0)Link ID         ADV Router      Age         Seq#       Checksum Link count1.1.1.1         1.1.1.1         178         0x80000005 0x00A804 42.2.2.2         2.2.2.2         205         0x80000004 0x0083EC 23.3.3.3         3.3.3.3         179         0x80000004 0x002742 2

2.3 配置bgp

这部分分为ibgp和ebgp的

2.3.1 为as123配置ibgp

1、在R2配置bgp协议

R2(config)#router bgp 123R2(config-router)#bgp router-id 2.2.2.2R2(config-router)#neighbor 11.1.1.2 remote-as 123 //为bgp指定邻居,这里指定的是本as内R3的s2/0R2(config-router)#*Feb 29 15:43:36.408: %BGP-5-ADJCHANGE: neighbor 11.1.1.2 Up //等待片刻,可以看到邻居建立R2(config-router)#neighbor 14.1.1.1 remote-as 4 //这里是指定ebgp对端as4的邻居关系

2、在R3配置bgp协议

R3(config)#router bgp 123R3(config-router)#bgp router-id 3.3.3.3R3(config-router)#neighbor 12.1.1.1 remote-as 123R3(config-router)#neighbor 13.1.1.2 remote-as 5

3、查看bgp信息,因为as4和5的IP和bgp还没配置,所以邻居部分的显示不正常

R2执行查看

R2#show ip bgp summary BGP router identifier 2.2.2.2, local AS number 123BGP table version is 1, main routing table version 1Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd11.1.1.2 4 123 9 9 1 0 0 00:04:47 014.1.1.1 4 4 0 0 1 0 0 never Idle

R3执行查看

R3#show ip bgp summary BGP router identifier 3.3.3.3, local AS number 123BGP table version is 1, main routing table version 1Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd12.1.1.1        4          123       9      10        1    0    0 00:05:28        013.1.1.2        4            5       0       0        1    0    0 never    Idle

2.3.2 为AS4和5配置ebgp

1、首先配置R4和5的IP地址

R4的地址

R4#conf tEnter configuration commands, one per line. End with CNTL/Z.R4(config)#int s2/0 R4(config-if)#ip add 14.1.1.1 255.255.255.0R4(config-if)#no shuR4(config-if)#exitR4(config)#int e0/0R4(config-if)#ip add 192.168.1.1 255.255.255.0 R4(config-if)#no shu

R5的地址

R5#conf tEnter configuration commands, one per line.  End with CNTL/Z.R5(config)#int s2/0R5(config-if)#ip add 13.1.1.2 255.255.255.0R5(config-if)#no shuR5(config-if)#exitR5(config)#int e0/0R5(config-if)#ip add 172.16.30.1 255.255.255.0R5(config-if)#no shu

2、为R4配置bgp

R4(config)#router bgp 4R4(config-router)#bgp router-id 4.4.4.4R4(config-router)#neighbor 14.1.1.2 remote-as 123 //指定as123中R2的s2/0为邻居R4(config-router)#*Feb 29 15:54:02.133: %BGP-5-ADJCHANGE: neighbor 14.1.1.2 Up //邻居建立提示

3、为R5配置bgp

R5(config-router)#bgp routerR5(config-router)#bgp router-id 5.5.5.5R5(config-router)#neighbor 13.1.1.1 remote-as 123

4、查看bgp信息

R4#show ip bgp summary BGP router identifier 4.4.4.4, local AS number 4BGP table version is 1, main routing table version 1Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd14.1.1.2 4 123 6 6 1 0 0 00:02:38 0

此时再看R2或者R3的bgp信息,邻居关系就都正常了

R2#show ip bgp summary BGP router identifier 2.2.2.2, local AS number 123BGP table version is 1, main routing table version 1Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd11.1.1.2        4          123      19      18        1    0    0 00:13:40        014.1.1.1        4            4       7       7        1    0    0 00:03:14        0

2.3.3 在as4的路由R4 宣告路由192.168.1.0

这里是要将pc1的192.168.1.0/24这个网络宣告到bgp中,步骤如下

1、在R4上宣告路由

R4(config)#router bgp 4R4(config-router)#network 192.168.1.0 mask 255.255.255.0 //只能宣告网段,指定掩码

查看bgp 路由信息

R4#show ip bgp BGP table version is 2, local router ID is 4.4.4.4Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,               r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,               x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incompleteRPKI validation codes: V valid, I invalid, N Not found     Network          Next Hop            Metric LocPrf Weight Path *>  192.168.1.0      0.0.0.0                  0         32768 i
本地产生,下一跳为0.0.0.0
2、此时到R2上查看bgp信息,发现路由信息已经过来了,且可以看到192.168.1.0网段的下一跳为14.1.1.1(R4的S2/0,出口接口)
R2#show ip bgpBGP table version is 2, local router ID is 2.2.2.2Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incompleteRPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 192.168.1.0 14.1.1.1 0 0 4 i
R2上也能看到路由信息,可以看到192.168.1.0是通过bgp学习到的,metric是20,通过ebgp学习到的路由条目metric都是20,如果是ibgp则为200
R2#show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2       E1 - OSPF external type 1, E2 - OSPF external type 2       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2       ia - IS-IS inter area, * - candidate default, U - per-user static route       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP       a - application route         - replicated route, % - next hop overrideGateway of last resort is not set      11.0.0.0/24 is subnetted, 1 subnetsO        11.1.1.0 [110/128] via 12.1.1.2, 00:31:18, Serial2/1      12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC        12.1.1.0/24 is directly connected, Serial2/1L        12.1.1.1/32 is directly connected, Serial2/1      14.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC        14.1.1.0/24 is directly connected, Serial2/0L        14.1.1.2/32 is directly connected, Serial2/0B     192.168.1.0/24 [20/0] via 14.1.1.1, 00:05:35
3、再看R3上的bgp信息,发现下一跳还是R4上的s2/0,而且路由条目前面没有>,不是最优路由,说明没有把信息传过来,ibgp传输路由信息的时候不会传输下一跳的地址
R3#show ip bgpBGP table version is 1, local router ID is 3.3.3.3Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incompleteRPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path * i 192.168.1.0 14.1.1.1 0 100 0 4 i
需要在R2路由上添加next-hop-self,才会把下一跳的信息传递过来。这个参数只用在as边缘路由器向内部传ibgp信息时。
R2(config)#router bgp 123R2(config-router)#neighbor 11.1.1.2 next-hop-self

此时再看,发现下一跳的地址已经更新过来了,12.1.1.1正是R2的s2/1出口

R3#show ip bgpBGP table version is 2, local router ID is 3.3.3.3Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incompleteRPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *>i 192.168.1.0 12.1.1.1 0 100 0 4 i
再看R3的路由信息,也就有bgp学习到的条目了,当然因为是ibgp传输,所有metric值为200
R3#show ip routeCodes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2       E1 - OSPF external type 1, E2 - OSPF external type 2       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2       ia - IS-IS inter area, * - candidate default, U - per-user static route       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP       a - application route         - replicated route, % - next hop overrideGateway of last resort is not set      11.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC        11.1.1.0/24 is directly connected, Serial2/0L        11.1.1.2/32 is directly connected, Serial2/0      12.0.0.0/24 is subnetted, 1 subnetsO        12.1.1.0 [110/128] via 11.1.1.1, 00:40:23, Serial2/0      13.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC        13.1.1.0/24 is directly connected, Serial2/1L        13.1.1.1/32 is directly connected, Serial2/1B     192.168.1.0/24 [200/0] via 12.1.1.1, 00:04:57
同理,R3上也需要为R2来设置next-hop-self,否则R5向R4方向的路由也会出现同样的问题
R3(config)#router bgp 123R3(config-router)#neighbor 12.1.1.1 next-hop-self

2.3.4 在R5上宣告路由172.16.30.0

过程和上一章节类似

1、直接在R5上宣告

R5(config)#router bgp 5                   R5(config-router)#network 172.16.30.0 mask 255.255.255.0

2、在R4上已经可以看到正常的路由条目了

R4#show bgpBGP table version is 3, local router ID is 4.4.4.4Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incompleteRPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 172.16.30.0/24 14.1.1.2 0 123 5 i *> 192.168.1.0 0.0.0.0 0 32768 i

2.3.5 路由黑洞的测试

1、pc机配置IP地址

在pc1上配置192.168.1.10

在pc2上配置172.16.30.10

2、在路由器R1上打开debug

R1#debug ip packet

IP packet debugging is on

3、执行ping测试,失败

wangql> ping 172.16.30.10172.16.30.10 icmp_seq=1 timeout172.16.30.10 icmp_seq=2 timeout172.16.30.10 icmp_seq=3 timeout172.16.30.10 icmp_seq=4 timeout172.16.30.10 icmp_seq=5 timeout
4、观察R1的输出,提示源192.168.1.10到目的172.16.30.10不可达
*Feb 29 16:22:51.401: IP: s=192.168.1.10 (Serial2/0), d=172.16.30.10, len 84, input feature, MCI Check(99), rtype 0, forus FALSE, sendself FALSE, mtu 0, fwdchk FALSE*Feb 29 16:22:51.401: IP: s=192.168.1.10 (Serial2/0), d=172.16.30.10, len 84, unroutable
因为R1没开启bgp,只有ospf,所有没有这两个网段的路由
R1#show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area        N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2       E1 - OSPF external type 1, E2 - OSPF external type 2       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2       ia - IS-IS inter area, * - candidate default, U - per-user static route       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP       a - application route         - replicated route, % - next hop overrideGateway of last resort is not set      11.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC        11.1.1.0/24 is directly connected, Serial2/1L        11.1.1.1/32 is directly connected, Serial2/1      12.0.0.0/8 is variably subnetted, 2 subnets, 2 masksC        12.1.1.0/24 is directly connected, Serial2/0L        12.1.1.2/32 is directly connected, Serial2/0

2.3.6 在R1启用BGP来解决路由黑洞

1、R1启用bgp,并添加对端端口的邻居
R1(config)#router bgp 123R1(config-router)#bgp router-id 1.1.1.1R1(config-router)#neighbor 12.1.1.1 remote-as 123R1(config-router)#neighbor 11.1.1.2 remote-as 1232 R2和R3两天边缘路由器需要对R1添加邻居信息和next-hop-self,否则无法传递bgp路由的下一跳参数

R2

R2(config)#router bgp 123R2(config-router)#neighbor 12.1.1.2 remote-as 123R2(config-router)#neighbor 12.1.1.2 next-hop-self

R3

R3(config)#router bgp 123R3(config-router)#neighbor 11.1.1.1 remote-as 123R3(config-router)#neighbor 11.1.1.1 next-hop-self

3、再次测试pc1和pc2,网络通畅了

wangql> ping 172.16.30.1084 bytes from 172.16.30.10 icmp_seq=1 ttl=59 time=36.557 ms84 bytes from 172.16.30.10 icmp_seq=2 ttl=59 time=36.735 ms84 bytes from 172.16.30.10 icmp_seq=3 ttl=59 time=36.005 ms84 bytes from 172.16.30.10 icmp_seq=4 ttl=59 time=33.740 mswangql> trace 172.16.30.10trace to 172.16.30.10, 8 hops max, press Ctrl C to stop 1   192.168.1.1   0.290 ms  0.141 ms  0.163 ms 2   14.1.1.2   9.157 ms  9.058 ms  8.496 ms 3   12.1.1.2   18.042 ms  17.537 ms  17.808 ms 4   11.1.1.2   26.682 ms  26.471 ms  26.210 ms 5   13.1.1.2   36.360 ms  35.922 ms  34.192 ms 6   *172.16.30.10   37.326 ms (ICMP type:3, code:3, Destination port unreachable)

3、小结

通过上面的实验,总结如下:

1. BGP不同于那些IGP的协议,配置的时候需要手工指定邻居关系。

2. 在IBGP的配置过程中,除了显式指定邻居关系,还需要手工配置 next-hop-self,否则传递的BGP路由信息中下一跳的信息不会发送改变,导致路由信息无效

3. 在做网络规划的时候,要注意拓扑的合理性,避免出现路由黑洞。

(0)

相关推荐

  • 火热出炉的CCIE lab战报,这些考试总结你会用得上!

    TS2  D2+ H2+ 一直都觉着TS2比TS1简单来着.直接开始吧,把能记得东西写下来. Q1:在SW400上hsrp状态都是正常的,SW410上也没有启用port security,user4的 ...

  • 来自CCIE lab考场新鲜出炉的战报分享!

    一 TS1 q1 SW1/2 VALN 12 q2 R17 int s4/0 no ppp authentication chap callout q3 R21 int e2/0 no ip os c ...

  • 网络工程师成长日记365-IBIS西安工程回忆录

    网络工程师成长日记365-IBIS西安工程回忆录 这是我的第365篇原创文章,记录网络工程师行业的点点滴滴,结交IT行业有缘之人 我的第一次真实工程经历 5.26日这一天我的心情是格外的兴奋,激动. ...

  • 运维挑战:如何构建复杂环境下的适应性系统 | 运维进阶

    [摘要]站在数字化时代,从运维体系角度看运维适应性系统,它包括了大量系统部件,通过越来越复杂的技术架构.业务逻辑.协同关系串起来形成复杂的协同网络.本篇尝试从复杂与适应性系统相关内涵.运维面临的复杂性 ...

  • 性能测试、分析、优化的方法论 | 运维进阶

    [导读]本文主要介绍相关性能测试.分析.优化的方法论.希望通过方法论的学习,可以帮助工程师在复杂纷乱的环境下明确性能目标,制定合理可行的性能测试计划,有针对性的进行性能分析,发现系统真正的性能瓶颈,并 ...

  • 企业集中监控体系思路及架构 | 运维进阶

    [作者]彭华盛,广发证券数字化运维研发团队负责人.超过10年的金融领域运维工作,期间负责参与企业运维组织.流程.工具的建设,包括各类重大业务系统项目与数据中心工程性项目的实施,数据中心标准化工作流程构 ...

  • 机房搬迁整体方案,值得参考 | 运维进阶

    [作者]yujin2010good 搬迁我是专业的,我在公司呆了将近7年,机房从自建机房搬到租用机房,微软云搬到AWS,AWS搬到青云,青云搬到腾讯云,现在又在继续老机房搬到亦庄新机房. 一.目标 机 ...

  • 你知道数据中心的清洁应该怎样做吗?| 运维进阶

    [摘要]专业的人做专业的事,数据中心运维工作更要遵循这条原则,即使是机房清洁这种日常工作也能体现出一个团队的专业性.数据中心的清洁你知道该怎么做么? [作者]赵蒙,2001年加入民生银行,多年数据中心 ...

  • 备份系统运行数据收集及分析的设计 | 运维进阶

    [导读]本文从个人运维实践经验出发,研究设计备份系统运行数据采集及分析方法,从而能更加洞察系统的运行规律,希望对同行有一定的借鉴和参考价值. [作者]陈萍春,现就职于保险行业,拥有多年的系统.存储以及 ...

  • 企业IT事中故障处理四个关键环节如何控制 | 运维进阶

    [摘要]面对不断复杂的生产环境, 要增加 TBF和缩短TTR的目标,需要围绕"故障发现.故障响应.故障定位.故障恢复"四个关键环节,在人员技能.协同机制.工具平台.数字化感知等方面 ...

  • 企业IT运维事中故障定位方法及工具 | 运维进阶

    [摘要]故障定位的方法通常包括专家经验驱动的假设尝试.测试复现.预案启动.代码分析四种,这个过程涉及对日志.链路.监控.数据感知.知识管理五类工具. [作者]彭华盛,腾讯TVP,10年 的金融领域运维 ...

  • 打造高效的测试运维赋能流水线

    在敏捷"普及"的今天,各个公司都有自己的流水线,从版本库到打包编译甚至自动化测试.发布,看起来是如此的完美.但是大家有没有发现自己所做的这些事情存在两个问题: 流水线不高效,也许它 ...