注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

乾颐堂_安德(Ender)的博客

学无前后达者为先,此博客是一个有态度网络技术共享平台,共享给大家更多知识和经验

 
 
 

日志

 
 
关于我

Ender“老湿”:双CCIE(R&S CCIE、ISP CCIE),思科认证讲师#34XXX,HCIE v2.0第一人。毕业于东北大学电子商务专业。在原公司及其他企业参与的重点项目和培训有: R&S CCIE专题课 SP CCIE专题课 思科支蜀援川项目 索尼中国(无锡)NP课程 能在这里找到我:QQ群106111081 我的微博:weibo.com/enderjoe

网易考拉推荐

BGP路由黑洞理论以及演示  

2012-10-30 17:50:50|  分类: BGP视频和文档 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

BGP路由黑洞理论以及演示

1BGP路由黑洞概念、产生的原因

针对传统IP路由查找,它是逐跳查找,通俗一点就是当数据包到达路由设备的时候,每一台设备都要查找路由表,并且在路由设备有路由的前提下才能转发报文

BGP来说由于存在iBGP水平分割规则-只把路由传递一跳(如本例拓扑所以,如果AS200内的三台设备都运行BGP,现在的邻居关系是R2R3BGP论据,R3R4BGP邻居,如果有路由从R2传递给R3,但是R3不会再传递路由给R4,这是一种防环机制)。所以在BGP的设计上有些设备就不会运行BGP,如本例,为了演示BGP路由黑洞,除了R3都运行了BGPBGP是一种TCP的连接或者说是一种host-to-host的连接(可以跨越设备进行连接),所以路由传递是没有问题的,但是数据包的路由却是有问题的

2、拓扑描述

拓扑如下图所示。老规矩老习惯,R1s1/0地址为12.1.1.1(符合XY.1.1.X的规则,XY代表设备号),R2s1/0=12.1.1.2。同时每个设备上有一个环回口=XX.1.1.1,如R1的环回口=11.1.1.1/24BGP路由黑洞理论以及演示 - ender.joe - Yeslab_Ender的博客

 

3、实验步骤

A、完成AS200内的IGP(本例采用eigrp

需要注意的是不要把R2s1/0R4s1/0宣告到IGP内去,这是一种通常的网络设计,不要把边界的直连网络宣告到IGP

R2(config-router)#router eigrp 90

R2(config-router)#network 22.1.1.1 0.0.0.0

R2(config-router)# network 23.1.1.2 0.0.0.0

R2(config-router)# no auto-summary

!

R3(config)#router eigrp 90

R3(config-router)# network 0.0.0.0-----------------R3上可以把所有接口都宣告到IGP

R3(config-router)# no auto-summary

R4(config)#router eigrp 90

R4(config-router)#network 34.1.1.4 0.0.0.0

R4(config-router)# network 44.1.1.1 0.0.0.0

R4(config-router)# no auto-summary

养成验证的好习惯:

R3#sh ip eigrp neighbors

IP-EIGRP neighbors for process 90

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

                                            (sec)         (ms)       Cnt Num

1   34.1.1.4                Et0/1             11 03:18:02   62   372  0  9

0   23.1.1.2                Et0/0             11 03:18:17  469  2814  0  9----R3上已经有两个邻居

R2上的路由情况,也是正常的:

R2#sh ip route eigrp

     34.0.0.0/24 is subnetted, 1 subnets

D       34.1.1.0 [90/307200] via 23.1.1.3, 03:18:56, Ethernet0/0

     33.0.0.0/24 is subnetted, 1 subnets

D       33.1.1.0 [90/409600] via 23.1.1.3, 03:18:56, Ethernet0/0

     44.0.0.0/24 is subnetted, 1 subnets

D       44.1.1.0 [90/435200] via 23.1.1.3, 03:18:37, Ethernet0/0

B、完成AS200内的iBGP(注意R2R4BGP邻居,R3不运行BGP),通过环回口完成iBGP邻居

TCP是一种点到点的连接,两个设备一定要相互路由可达,为此检验一下路由是非常有必要的:

R2#ping 44.1.1.1 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 44.1.1.1, timeout is 2 seconds:

Packet sent with a source address of 22.1.1.1

!!!!!

R2

R2(config)#router bgp 200

R2(config-router)# no synchronization

R2(config-router)# bgp router-id 2.2.2.2

R2(config-router)# neighbor 44.1.1.1 remote-as 200

R2(config-router)# neighbor 44.1.1.1 update-source Loopback0

R2(config-router)# no auto-summary

R4

R4(config)#router bgp 200

R4(config-router)# no synchronization

R4(config-router)# neighbor 22.1.1.1 remote-as 200

R4(config-router)# neighbor 22.1.1.1 update-source Loopback0

R4(config-router)# no auto-summary

验证邻居状态:

R4#sh ip bgp summary

BGP router identifier 44.1.1.1, local AS number 200

BGP table version is 8, main routing table version 8

2 network entries using 234 bytes of memory

2 path entries using 104 bytes of memory

3/2 BGP path/bestpath attribute entries using 372 bytes of memory

2 BGP AS-PATH entries using 48 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 758 total bytes of memory

BGP activity 2/0 prefixes, 2/0 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

22.1.1.1        4   200     199     200        8    0    0 02:16:57        0

C、完成R2R1eBGP以及R4R5eBGP,同时生成路由

R1(config)#router bgp 100

R1(config-router)# no synchronization

R1(config-router)# network 11.1.1.0 mask 255.255.255.0-------------通告路由

R1(config-router)# neighbor 12.1.1.2 remote-as 200

R1(config-router)# no auto-summary

R2(config)#router bgp 200

R2(config-router)# neighbor 12.1.1.1 remote-as 100

R2(config)#router bgp 200

R4(config-router)# neighbor 45.1.1.5 remote-as 300

router bgp 300

 no synchronization

 network 55.1.1.0 mask 255.255.255.0------------------通告路由

 neighbor 45.1.1.4 remote-as 200

 no auto-summary

 

验证邻居情况:

R2#sh ip bgp summary

BGP router identifier 2.2.2.2, local AS number 200

BGP table version is 8, main routing table version 8

2 network entries using 234 bytes of memory

2 path entries using 104 bytes of memory

3/2 BGP path/bestpath attribute entries using 372 bytes of memory

2 BGP AS-PATH entries using 48 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 758 total bytes of memory

BGP activity 2/0 prefixes, 2/0 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

12.1.1.1        4   100     125     127        8    0    0 01:49:54        1

44.1.1.1        4   200     212     211        8    0    0 02:20:41        1-----R2上同R1R4已经建立了BGP的邻居关系,同时从两个设备收到了一条前缀(路由)

 

注意此时路由情况并不是完整的,以R4为例

R4#sh ip bgp

BGP table version is 8, local router ID is 44.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

* i11.1.1.0/24      12.1.1.1                 0    100      0 100 i------关于这条路由,我们注意下一跳为12.1.1.1,但是此时去往下一跳的路由在R4的路由表中不存在,所以该条路由不优化,即没有>标识,而BGP只对邻居传递最优的路由

*> 55.1.1.0/24      45.1.1.5                 0             0 300 i

我们来解决下一跳不可达的问题,用最简单的方法,我们在R2R4上分别针对R4R2做下一跳自我(把路由的下一跳变成路由可达):

R2(config)#router bgp 200

R2(config-router)#neighbor 44.1.1.1 next-hop-self

R4(config)#router bgp 200

R4(config-router)#neighbor 22.1.1.1 next-hop-self

查看路由情况:

R4#sh ip bgp

BGP table version is 10, local router ID is 44.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

r>i11.1.1.0/24      22.1.1.1                 0    100      0 100 i

*> 55.1.1.0/24      45.1.1.5                 0             0 300 i

11.1.1.0/24的路由已经优化,会传递给R5

R4#show ip bgp neighbors 45.1.1.5 advertised-routes

BGP table version is 10, local router ID is 44.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

r>i11.1.1.0/24      22.1.1.1                 0    100      0 100 i

 

Total number of prefixes 1

验证R5R1的路由

R5#sh ip bgp

BGP table version is 6, local router ID is 55.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 55.1.1.0/24      0.0.0.0                  0         32768 i

R5#sh ip route bgp

     11.0.0.0/24 is subnetted, 1 subnets

B       11.1.1.0 [20/0] via 45.1.1.4, 00:01:50

R1

R1#sh ip bgp

BGP table version is 5, local router ID is 11.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*> 55.1.1.0/24      12.1.1.2                               0 200 300 i

R1#sh ip route bgp

     55.0.0.0/24 is subnetted, 1 subnets

B       55.1.1.0 [20/0] via 12.1.1.2, 01:42:16

分析:

此时R1R5上都已经存在了BGP的路由条目,那么数据包是可以路由出去的,R2R4上同样有路由表,可以进行路由。问题在于R3R3是没有运行BGP的(想一下我们之前提过的iBGP水平分割),所以R3没有存在去往11.1.1.0或者55.1.1.0的路由。当数据包到达R3时,没有路由可查,丢弃报文。这就是BGP的路由黑洞

我们在R3上我们用一条ACL来匹配数据包:

R3(config)#access-list 110 permit ip host 11.1.1.1 host 55.1.1.1 log

R3#debug ip packet detail 110

R1#ping 55.1.1.1 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 55.1.1.1, timeout is 2 seconds:

Packet sent with a source address of 11.1.1.1

.....

查看R3的情况:

R3#

*Mar  1 03:59:09.531: IP: s=11.1.1.1 (Ethernet0/0), d=55.1.1.1, len 100, unroutable

*Mar  1 03:59:09.535:     ICMP type=8, code=0

R3#

*Mar  1 03:59:11.587: IP: s=11.1.1.1 (Ethernet0/0), d=55.1.1.1, len 100, unroutable

*Mar  1 03:59:11.591:     ICMP type=8, code=0

R3是没有路由的:

R3#sh ip route

Codes: 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

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

C       34.1.1.0 is directly connected, Ethernet0/1

     33.0.0.0/24 is subnetted, 1 subnets

C       33.1.1.0 is directly connected, Loopback0

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, Ethernet0/0

     22.0.0.0/24 is subnetted, 1 subnets

D       22.1.1.0 [90/409600] via 23.1.1.2, 03:42:43, Ethernet0/0

        44.0.0.0/24 is subnetted, 1 subnets

D       44.1.1.0 [90/409600] via 34.1.1.4, 03:42:24, Ethernet0/1

4、解决BGP路由黑洞

解决BGP路由黑洞有很多办法,比如我们可以在R2R4上把BGP重分步到eigrp,但是这种方法不可取,紧紧能够存在于实验环境。其他可选的方法有:物理线路的全互联,比如本图中,R2R4有物理链路;逻辑链路的full-mesh,即R2R3R3R4.R2R4BGP邻居关系,那么所有的设备都会有BGP的路由。最后一种就是MPLS 的方案,请关注Yeslab MPLS VPN课程

在这里我们采取全互联的方式,增加R2R3R3R4的邻居关系,这里仅仅给出R3的配置,请自行增加R2R4的配置

R3(config)#router bgp 200

R3(config-router)#neighbor 22.1.1.1 remote-as 200

R3(config-router)#neighbor 44.1.1.1 remote-as 200

R3(config-router)#neighbor 44.1.1.1 update-source loopback 0

R3(config-router)#neighbor 22.1.1.1 update-source loopback 0

验证路由:

R3#sh ip bgp

BGP table version is 1, local router ID is 33.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

* i11.1.1.0/24      12.1.1.1                 0    100      0 100 i

* i55.1.1.0/24      45.1.1.5                 0    100      0 300 i

下一跳不可达,方法是去R2R4更改下一跳

R2(config-router)#neighbor 33.1.1.1 next-hop-self

R4(config-router)#neighbor 33.1.1.1 next-hop-self

验证:

R3#sh ip bgp

BGP table version is 3, local router ID is 33.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      22.1.1.1                 0    100      0 100 i

*>i55.1.1.0/24      44.1.1.1                 0    100      0 300 i

R3#sh ip route bgp

     55.0.0.0/24 is subnetted, 1 subnets

B       55.1.1.0 [200/0] via 44.1.1.1, 00:00:12

     11.0.0.0/24 is subnetted, 1 subnets

B       11.1.1.0 [200/0] via 22.1.1.1, 00:00:53

R1#ping 55.1.1.1 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 55.1.1.1, timeout is 2 seconds:

Packet sent with a source address of 11.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 24/51/108 ms

实验完成

  评论这张
 
阅读(464)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017