设为首页收藏本站language 语言切换
12
返回列表 发新帖
楼主: hepkl
收起左侧

[其他] 【疑问】采用BGP传导VPN的架构,如果不启用MPLS但保证每个中转路由器运行BGP

  [复制链接]
发表于 2013-8-2 16:13:52 | 显示全部楼层
本帖最后由 q0066421 于 2013-8-2 17:03 编辑
hepkl 发表于 2013-8-1 22:33
我觉得您真是研究的很透,在HH你是第一个仔细对应我每个问题回答的人
现在问题还有一点模糊,
1您说LFI ...


“lfib中也没有vrf标签条目”我这么说也不严谨,应该分情况。
对于P,它没有vrf,也不需要知道vrf的路由或标签,所以都是全局标签。
对于PE,起了mpls后,全局forwarding-table会包括从vrf学到的前缀条目,以类似channel V的符号表示。

还是整个走一遍流程更容易理解。见图,规定R1标签范围100-199,R2标签范围200-299,R3标签范围300-399。
mpls_vpn.png

R4以192.168.4.4为源ping 192.168.5.5(R5)

PE路由器R2的F0/1 vrf接口收到icmp包,这个接口并没有起mpls,所以查vrf的cef表,这已经不是原来的cef表,而是包含了标签信息的。
R2#sh ip cef vrf a 192.168.5.5  
192.168.5.5/32, version 8, epoch 0, cached adjacency 12.1.1.1
0 packets, 0 bytes
  tag information set
    local tag: VPN-route-head
    fast tag rewrite with Fa0/0, 12.1.1.1, tags imposed: {101 303}
  via 3.3.3.3, 0 dependencies, recursive
    next hop 12.1.1.1, FastEthernet0/0 via 3.3.3.3/32

可知会为这个icmp包打上两层标签(内层303的vpnv4标签,外层101的ldp标签)并从F0/0口丢出。

P路由器R1的F0/1口收到,
R1#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop   
tag    tag or VC   or Tunnel Id      switched   interface              
100    Pop tag     2.2.2.2/32        1770       Fa0/1      12.1.1.2     
101    Pop tag     3.3.3.3/32        2950       Fa0/0      13.1.1.3

只关注外层标签,101切为Pop(弹出)后从F0/0丢出。此时内层303成为唯一标签。

对端PE路由器R3的F0/1口收到,
R3#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop   
tag    tag or VC   or Tunnel Id      switched   interface              
300    100         2.2.2.2/32        0          Fa0/1      13.1.1.1     
301    Pop tag     1.1.1.1/32        0          Fa0/1      13.1.1.1     
302    Pop tag     12.1.1.0/24       0          Fa0/1      13.1.1.1     
303    Untagged    192.168.5.5/32[V] 2850       Fa0/0      192.168.35.5
304    Aggregate   192.168.35.0/24[V]   \
                                     0                              

303被剥去并从F0/0丢出。最后被对端R5的F0/1收到。

从整个过程可以看出:
1.本端PE上打的内层vpnv4标签,只有对端PE认得,所以在中间P路由器上传递时,需要隐藏在外层的ldp标签之下。303也就是必须到达R3才可被识别。
2.本端PE上打的外层ldp标签,用来在整个核心内部运送数据包,直到对端PE前一跳被弹出,保证数据包被送到R3并露出vpnv4标签,完成使命。

对于你的问题:
1.lfib也分全局和vrf。
#show mpls forwarding-table
#show mpls forwarding-table vrf xxx

2.标签分层,给我的感觉就像GRE tunnel一样,形成一个隧道。

3.双层标签通过上面的例子应该就能看出了。
PE上有VPN具体路由(P上可以show出,但其实它不管你是什么东西,只是按照特定规则来传递路由),内层标签也就是vpnv4的标签,对应具体的vpn路由。
16# 2013-8-2 16:13:52 回复 收起回复
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2013-8-3 14:11:27 | 显示全部楼层
本帖最后由 hepkl 于 2013-8-3 14:12 编辑
q0066421 发表于 2013-8-2 16:13
“lfib中也没有vrf标签条目”我这么说也不严谨,应该分情况。
对于P,它没有vrf,也不需要知道vrf的路 ...

碰到大师了,刚刚就这几天的问答交流我做了点整理和总结,总结后还有一点疑惑和猜想。如果您有时间的话帮我看一下我的总结是否存在问题和误区,如果有请狠狠的指出来,另外下面还剩下一点问题想与大师交流下。

总结:
对于控制层面,不需要依靠MPLS来传导路由,其过程和一般的BGP路由传递是等同的。
起MPLS的原因是要解决数据层面的包传递问题。

1【【起了MPLS的情况】】

步骤1.1:一个包从CE->PE时,是一个IP包,并且进入的是vrf接口。所以查询的是CEF中的vrf,一次性打上两层的标签。

在这里的LFIB并没有起作用,LFIB只是在接受的PE那端才起作用。

步骤1.2:PE->P,这个就是正常的MPLS转发过程,查找全局LFIB表进行转发。在倒数第二跳的时候,就把外层标签弹出来。P1->Pn过程省略

步骤1.3  P->PE,这时收到的是一个仅有内层标签的包,并且仍然是全局接口接收。所以这时候应该查找全局LFIB。由于全局LFIB也包含了vrf在内,所以实际是按照vrf的LFIB转发,把内层标签也消除。

步骤1.4  PE->CE 发送的是没有MPLS信息的数据包,正常接收

2【【不运行MPLS的情况】】
步骤:2.1:一个包从CE->PE时,是一个IP包,并且进入的是vrf接口。所以查询的是CEF中的vrf,但是由于没有启用MPLS,不打任何标签,转发给P
步骤2.2:PE->P,从全局端口接到IP报文,查找的是全局的CEF表,不可能有私网路由,因此丢弃。
疑问:
1 关于【内层标签与vrf的关联性】,很有疑问。首先对于步骤1.1打两层标签的过程,有2个可能性的猜想。
第一种:较为简单,直接判断路由器PE有无启用MPLS,若无启用传出去的就是纯IP包,有启用则传出2层标签的MPLS包
第二种:分步进行。只要在vrf收到一条路由就必然先打上了内层标签(即使没起MPLS),此时再根据有无启用MPLS来打上外层标签。然而此时还有一个问题,有内层标签的包是根据CEF来打标签还是通过LFIB呢?

2若为第二种情况,则没启用MPLS的PE传包给P时,是存在内层标签的。那么步骤2.1应该是携带VPNV4标签的。并且,第二种情况成立也说明vrf与内层标签有内在联系的,不管有无开MPLS,只要从vrf接口收到路由就已经有vpnv4内层标签了
另外换个说法,VPNV4标签其实和传统的MPLS标签是有一定区别的。
3 关于【LFIB也区分全局与vrf】虽然区分,但是实际也融合一起。比如说1.3的情况,在一个全局端口收到有内层标签的包,此时查全局LFIB,这里的全局LFIB如果不包含vrf LFIB的话那就根本无法转发,所以其实是融合起来的,这么说法对么?
17# 2013-8-3 14:11:27 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-8-3 21:39:25 | 显示全部楼层
hepkl 发表于 2013-8-3 14:11
碰到大师了,刚刚就这几天的问答交流我做了点整理和总结,总结后还有一点疑惑和猜想。如果您有时间的话帮 ...

首先,大师应该是没空逛鸿鹄的。在这里的都是你我这等上升空间无穷的潜力股:)

总结:
你说的我赞同,不过仅限于cisco。由于理念不同,在其它厂商设备上不通用。
cisco设备上,不起ldp,路由是正常收敛的。

你这样认真,我也把前面的又回顾了一下。之前说的还是有漏洞啊。。。。。。

严谨几个概念:
cisco默认可以处理标签,但是接口并不开启标签转发能力。我们之前随口说的开启mpls,其实是开启ldp。

cisco设备在转发时,其实都是查的cef,各种表最终影响或生成cef。不支持、关掉的除外。mpls/vpn必须开启cef。
这个问题就像,我们知道默认走cef,但平时是还会show ip route来看,就是因为可以认为纯路由环境,cef由路由决定。
既然都是查cef,为了说明问题,就需要关注到底什么构成了cef中所关注的部分。

1.1   查vrf的cef,由bgp的vpnv4路由、标签和ldp标签构成。所以有完整的双层标签信息。

1.2  1.3  1.4 cef由lfib形成。


2.1   查vrf的cef,
R2#sh ip cef vrf a 192.168.5.5
192.168.5.5/32, version 8, epoch 0, cached adjacency 12.1.1.1
0 packets, 0 bytes
  tag information set
    local tag: VPN-route-head
    fast tag rewrite with
        Recursive rewrite via 3.3.3.3/32, tags imposed {304}
  via 3.3.3.3, 0 dependencies, recursive
    next hop 12.1.1.1, FastEthernet0/0 via 3.3.3.3/32
是带有单层vpnv4标签的,但是由于接口没有开启标签转发能力,无法发出。

就没有后续的2.2了

疑问解释:
1.不看起没起ldp,就看cef。可以认为,起不起ldp是控制层问题,而我们模拟的是转发层的问题。
是查cef,直接打双层标签

2.不起ldp,也就是没有接口具有标签转发能力。见2.1

3.mpls/vpn是一个体系,是会做结合的。可以这么理解吧,必须在PE上将vrf和全局打通。
18# 2013-8-3 21:39:25 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-4 11:56:13 | 显示全部楼层
q0066421 发表于 2013-8-3 21:39
首先,大师应该是没空逛鸿鹄的。在这里的都是你我这等上升空间无穷的潜力股:)

总结:

哈哈,您太谦虚了。那不叫大师什么的就叫前辈吧。前辈应该是富有工作经验的人了对不同厂商的设备机制都很熟悉,理论也非常厉害!我还是在读本科生,思科技术还要去外面培训机构学的,学校根本没的学。所以现在研究理论比较多点
关于MPLS/VPN其实我才看过1个多小时的视频然后自己自己做了下实验,很多东西还没深入学,我打算有空把整个MPLS VPN学透点再来理解这些问题。
前面的问题:我估计把LIB和CEF搞混了,其实LIB和LFIB最终也是生成CEF,而在PE里面全局的CEF和VRF的CEF应该是互通的。
最后就是能不能留下个QQ号什么的以后方便交流,嘿嘿
19# 2013-8-4 11:56:13 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-8-4 23:52:20 | 显示全部楼层
hepkl 发表于 2013-8-4 11:56
哈哈,您太谦虚了。那不叫大师什么的就叫前辈吧。前辈应该是富有工作经验的人了对不同厂商的设备机制都很 ...

理论基础就得在上学时打扎实,工作后,很多学过但不用或用的很少的东西都会忘掉,新学知识,也主要是应用,对理论部分也没空深究。
面对认真学习的人,汗颜啊。。。。。。。
Q:35123479
20# 2013-8-4 23:52:20 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-8-8 22:54:24 | 显示全部楼层
21# 2013-8-8 22:54:24 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-8-9 17:57:36 | 显示全部楼层
一句话,MPLS是用来解决数据层面黑洞的。。。
也有其他方法,比如IGP-BGP重发布。。。
22# 2013-8-9 17:57:36 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-8-19 14:52:39 | 显示全部楼层
hepkl 发表于 2013-8-1 22:33
我觉得您真是研究的很透,在HH你是第一个仔细对应我每个问题回答的人
现在问题还有一点模糊,
1您说LFI ...

不知道现在回复你晚不晚
1.LFIB是区分全局和VRF的。
2.使用LFIB转发数据可以成功,是因为数据转发是基于标签而不是IP头。因为下一跳地址对应的标签是对端PE建立邻居关系的地址,是可达的。这里有一个细节需要注意:BGP之间建立邻居关系必须使用环回口。使用环回口是因为在mpls域中存在倒数第二条弹出,所以假设以直连建立bgp邻居,则提前弹出标签了,由由于数据是二层标签,不是pop弹出,而是untag,会将第二层标签也剥掉。
3.实际上这个说法不是非常准确。VPN路由信息的传递不是根据内层标签区分的,是根据VRF中的RD信息进行区分。实际流量是根据二层标签区分。
我所理解的MPLS VPN大体上分为三个步骤:
1.区分不同的客户,或者说划分vpn:使用技术VRF。
2.传递客户的路由信息:MP-BGP
3.传递用户数据:mpls
也只有第三步才会用到mpls这个技术。希望能帮到你
23# 2013-8-19 14:52:39 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-19 22:07:53 | 显示全部楼层
yzdapang 发表于 2013-8-19 14:52
不知道现在回复你晚不晚
1.LFIB是区分全局和VRF的。
2.使用LFIB转发数据可以成功,是因为数据转发是基于 ...

谢谢这位高手,答得不晚啊。你说的让我更清晰了些,MPLS下VPN我还没仔细研究,等以后再和您详细讨论
24# 2013-8-19 22:07:53 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-8-20 15:37:43 | 显示全部楼层
hepkl 发表于 2013-8-19 22:07
谢谢这位高手,答得不晚啊。你说的让我更清晰了些,MPLS下VPN我还没仔细研究,等以后再和您详细讨论:hand ...

有帮助就好。
25# 2013-8-20 15:37:43 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-10-24 16:14:51 | 显示全部楼层
BGP给vpn路由分发标签,ldp给BGP loop口分发标签。当你在地址族里重分发路由之后,下一跳就变成了建立ibgp邻居的下一跳。就算你骨干网没有起mpls,ibgp路由更新还是可以传递给pe的。但是你数据从ce过来之后,打上对端ibgp分发过来的vpn标签后,这个包在骨干网中要怎么传输?
26# 2013-10-24 16:14:51 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-10-25 03:40:51 | 显示全部楼层
好难得看到HH有这样的帖子.加个精
27# 2013-10-25 03:40:51 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-10-27 08:36:38 | 显示全部楼层
28# 2013-10-27 08:36:38 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2015-6-15 12:40:25 | 显示全部楼层
各位大虾说了那么多废话,实际环境中,不启用MPLS,通过MP BGP能否正常传输各VPN实例中的数据,有没有人做过实验,说下结果啊?如果网络环境中只有2台PE直连,没有P,能否只启用MP BGP,不启用MPLS来构建多VPN实例的网络?
29# 2015-6-15 12:40:25 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-27 15:41 , Processed in 0.113123 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

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