雏鹰部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2207|回复: 8

[讨论/求助] MPLS环境下的BGP路由传递

[复制链接]
发表于 2013-5-14 21:45:09 | 显示全部楼层 |阅读模式
【实验1】MPLS不会为BGP路由分配标签,但为BGP路由的下一跳分配标签




拓扑环境描述:
  • R1、R2、R3、R4处于Transit AS 1234。在AS内运行的IGP协议是OSPF
  • 所有的互联IP如图所示
  • 所有设备的Loopback0口地址为x.x.x.x/32,x为设备编号
  • R1与R4之间建立IBGP邻接关系,IBGP邻接关系建立在物理接口上。R1与R5、R4与R6之间建立EBGP邻接关系,也是建立在物理接口上。
  • 在这个实验测试中,我们在OSPF中宣告R1-R5和R4-R6的直连网段。
  • R5及R6各自在BGP进程中宣告自己的Loopback路由


实验结果:
由于R2、R3没有运行BGP协议,并且Core OSPF内也没有5.5.5.0及6.6.6.0的路由,因此最终的结果是R5及R6虽然能够学习到彼此的路由,但是却无法互访,因为在R2及R3上出现了路由黑洞。
解决的办法就是用MPLS,我们将Core变成MPLS域:


R1的配置如下:
mpls ldp router-id loopback0
mpls label rangempls label range 100 199
interface fa0/0
  mpls ip


R2的配置如下:
mpls ldp router-id loopback0
mpls label rangempls label range 200 299
interface fa0/0
  mpls ip
interface fa1/0
  mpls ip


R3的配置如下:
mpls ldp router-id loopback0
mpls label rangempls label range 300 399
interface fa0/0
  mpls ip
interface fa1/0
  mpls ip


R4的配置如下:
mpls ldp router-id loopback0
mpls label rangempls label range 400 499
interface fa0/0
  mpls ip


R1、R2、R3、R4运行LDP协议。
要注意,LDP默认是不会为BGP路由分配标签的,但是我们也知道,BGP路由都有next-hop,而这个下一跳是IGP路由可达的,LDP则会为这条(下一跳地址所在的)路由分配标签,这一点非常之重要。
这样一来我们5.5.5.5和6.6.6.6之间就能够互访了,在R6上


R6#traceroute 5.5.5.5 soure 6.6.6.6
Type escape sequence to abort.
Tracing the route to 5.5.5.5
  1 10.1.46.4 128 msec 152 msec 120 msec
  2 10.1.34.3 [MPLS: Label 303 Exp 0] 856 msec 1012 msec 1072 msec
  3 10.1.23.2 [MPLS: Label 203 Exp 0] 964 msec 1124 msec 1008 msec
  4 10.1.12.1 1060 msec 984 msec 1080 msec
  5 10.1.15.5 1564 msec 1124 msec 1484 msec
我们发现,R6始发的报文是IP的,到了R4,R4查CEF表,发现目的地:5.5.5.5的条目,关联了一个Label:303,于是R4将IP包压上标签303,然后丢给下一跳10.1.34.3也就是R3。下面就是R4的CEF表项:
5.5.5.5/32, version 22, epoch 0, cached adjacency 10.1.34.3
0 packets, 0 bytes
  tag information from 10.1.15.0/24, shared
    local tag: 403
    fast tag rewrite with Fa0/0, 10.1.34.3, tags imposed: {303}
  via 10.1.15.5, 0 dependencies, recursive
    next hop 10.1.34.3, FastEthernet0/0 via 10.1.15.0/24
    valid cached adjacency
    tag rewrite with Fa0/0, 10.1.34.3, tags imposed: {303}

注意这里这个303很明显,是R3分配的,然后将这个分配结果给到了R4,R4是在用R3分配的标签去压到IP包前面。那么这个303,实际上是为BGP路由5.5.5.5的下一跳10.1.15.0这条路由分配的标签。还是那句话,LDP不会为BGP路由分配标签,但是会为BGP路由的下一跳(路由)分配标签。
接下去数据到了R3,R3查自己的LFIB表后,将303标签置换成203,然后丢给下一跳R2。R2收到这个标签包后,查看自己的LFIB表,发现outgoing动作是一个PoP,于是将标签弹出,变成最原始的那个IP包,然后丢给R1,最后R1将这个IP包转发到了R5。那么这里为什么R2这里会PoP呢?答案是这条BGP路由,前面我们讲过了,其实是用的是它的下一跳10.1.15.0的标签,10.1.15.0是R1的直连网段,因此R1在为这条路由分配标签时,给了个PoP,然后将这个结果分发给R2,这就是原因。





【实验2】 不宣告R1-R5及R4-R6之间的直连网段进OSPF




在上面的实验中,我们在Core OSPF中宣告了R1-R5及R4-R6的直连网段,然而我们知道,在实际的场合中,往往不会在Core IGP中宣告这条AS外的链路,因此接下去我们来看看,如果不在OSPF中宣告这两个直连链路,会有什么现象:由于OSPF没有了这两个直连网段,那么5.5.5.5及6.6.6.6学习进来就不优了,需在R1上对R4去使用next-hop-self,R4对R1也同理。
那么这样一来,R4上去往5.5.5.5下一跳就是10.1.12.1了,那么当6.6.6.6访问5.5.5.5的时候,IP包到达R4,R4查CEF并且为IP包压上标签,关键在这个标签上,R4会使用10.1.12.0这条路由的标签(12.0是去往5.5.5.5的下一跳),而这个标签是R3分配的(我给出口数据打上的标签永远是LDP邻居给我的标签)。那么这个标签包被传递到了R3,R3会怎么处理呢?实验现象表明,R3会将标签PoP,变成IP包然后丢给R2。可是为什么?原因是R2为路由10.1.12.0分配的标签就是PoP,因为12.0是R2的直连网段,这里有次末跳弹出机制。那么这个IP包到了R2就歇菜了,因为R2根本没有6.6.6.6和5.5.5.5的路由啊。
怎么办?




解决的办法:R1及R4使用loopback接口建立IBGP邻居关系
前面的实验之所以在R1和R4上使用物理接口建立IBGP邻接,是为了帮助大家理解一下MPLS环境下BGP的路由问题,好了,现在我们在R1和R4上,使用loopback接口来建立IBGP邻接关系,问题就解决了。 这时候R4上,去往5.5.5.5的下一跳就是R1的Loopback口地址,所以R4在给去往5.5.5.5的IP包压标签的时候,用的就是1.1.1.1/32路由的标签,R3、R2也一样,那么标签包就能通过1.1.1.1/32打通的LSP一路传到R2,并在R2这弹出标签变成IP包再转给R1,R1再将IP包转发给R5,搞定。

因此,路由器不会对BGP路由直接分配标签,而是为BGP路由通过递归后的下一跳路由分配标签,这样做是很有好处的。
BGP中的路由条目是相当多的,如此一来我们通过MPLS,可大大简化路由器的性能损耗,BGP的Transit AS的路由黑洞问题也得到了很好的解决。



红茶三杯
网络工程 | 项目管理 | IT服务管理 | CCIE培训
学习 沉淀 成长 分享
微博:http://weibo.com/vinsoney
博客:http://blog.sina.com.cn/vinsoney





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 2013-5-14 22:38:06 | 显示全部楼层
沙发 是沙发耶
发表于 2013-5-14 23:34:29 | 显示全部楼层
耿叔的就是经典,第二个沙发
发表于 2013-5-15 09:04:42 | 显示全部楼层
顶一个,赞!!!
发表于 2013-5-15 09:27:42 | 显示全部楼层
不错不错  分享分享
发表于 2013-5-16 09:20:45 | 显示全部楼层
叔 一直都是神一样的存在。。。。。。~
发表于 2013-5-17 11:39:00 | 显示全部楼层
tea sir V5
自己用GNS3搭了拓扑,温故而知新。
谢谢实验分析,期待更多实验帖子。
有一点:我在R6上tracerouteR5,没出现MPLS的标签信息,那两个标红部分是后来加上去的吗?
 楼主| 发表于 2013-5-17 12:29:44 | 显示全部楼层
NSTcisco 发表于 2013-5-17 11:39
tea sir V5
自己用GNS3搭了拓扑,温故而知新。
谢谢实验分析,期待更多实验帖子。

这是IOS版本的限制,

你在R6上接口激活mpls ip即可
发表于 2013-5-20 16:47:49 | 显示全部楼层
最近在和学员们完成MPLS VPN的演练。就用到这个了。
感谢耿叔的分享。
再补充一句,耿叔画的图,还是那么赞!说不清的好看!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|熊猫同学技术论坛|小黑屋| 网络工程师论坛 ( 沪ICP备09076391 )

GMT+8, 2024-3-29 04:11 , Processed in 0.074114 second(s), 19 queries , Gzip On.

快速回复 返回顶部 返回列表