MPLS系列之六:MPLS VPN 跨域 Open B (ASBR_To_ASBR) Design | 网络之路博客
注册 登录
  • 欢迎网络之路博客网站,分享IT教程,推荐使用2345浏览器访问本网站,可以下载PDF与观看实战文章点击下载
  • 如果您觉得本站对您有帮助,那么赶紧使用Ctrl+D 收藏吧,支持我们下
  • 远程技术支持的淘宝店铺已经开张了哦,传送门:需要的朋友可以点击查看
  • 资源太多??下载繁琐??不知道如何学起??博主给你解决这些问题!~!点击免费下载

MPLS系列之六:MPLS VPN 跨域 Open B (ASBR_To_ASBR) Design

【汇总】三层MPLS VPN系列

文档帖子汇总学习视频Book与实验手册学习必备软件
    博主也只是业余时间写写技术文档,请大家见谅,大家觉得不错的话,可以推荐给朋友哦,博主会努力推出更好的系列文档的。如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路博客,http://ccieh3c.com

说明

在之前提到过跨域用Open A的方案来解决,可是Open A的缺点非常多,并且对于维护和设备性能都要很高的要求,由于那个是早期的解决方案,所以后续推出了Open B和Open C的解决方案,它们很好的解决了这些问题。

其实在于单域中VPN不会出现任何的问题,是因为标签都是连续性的,而不同ISP之间由于属于不同的企业,它们并不会和其他ISP之间建立LDP和IGP的邻居关系,这样防止内部信息被泄露了。所以给跨域的模型带来了很大的困难。 之前Open A是利用VRF来解决不同MPLS 域之间的连通,但是在ASBR之间传递的时候 纯属IP包过去,然后在压入双层标签,这样非常的不好。

mpls

Open B是在ASBR之间建立MPBGP邻居关系(VPNV4),这里路由可以批量更新了,并且VPNV4可以为客户分配标签,在Open B中建立MPBGP邻居关系后,会产生一条32位的主机路由,这是在cisco路由器上有的特性,就是因为这条32位的主机路由,才正好解决了这个模型的关键。那么是必让各自的MPLS VPN域知道怎么去往地方的32位主机路由,或者是改变下一跳,因为不这样做的话,就导致下一跳不可达,比如MPLS VPN AS1的PE1传递路由更新给ASBR1,ASBR1通过VPNV4传递给ASBR2,然后在传递给PE2,这是PE2的下一跳显示的是ASBR1的更新源地址,所以导致下一跳不可达,路由也不会传递给客户。 我们都知道在Ipv4 BGP中下一跳不可达的解决方便是next-hop-self,或者把这个地址重分布进IGP中 让下一跳可达, 在MPBGP中一样的,可以用这两个技术来解决,只是注意的是在MPBGP中用next-hop-self是改变了下一跳,那么它就会为改变了下一跳的路由分配标签。 另外默认情况下ASBR是不会建立VRF的,所以导致的情况是拒绝接收所以客户的路由,我们必须关掉这个RT检测功能,让它的路由可以正常接收。

mpls

这里环境跟Open A是一样的,除了ASBR不同以外,其余的基本配置都一样, ISP1 MPLS和 ISP2 MPLS底层是EIGRP,CE之间运行OSPF。 ASBR之间建立MPBGP邻居关系 (VPNV4)

Router-ISP1_PE(config)#int lo 0
Router-ISP1_PE(config-if)#ip add 1.1.1.1 255.255.255.255
Router-ISP1_PE(config)#int s1/1
Router-ISP1_PE(config-if)#ip add 12.1.1.1 255.255.255.0
Router-ISP1_PE(config-if)#no shut

ISP1_P(config)#int s1/1
ISP1_P(config-if)#ip add 12.1.1.2 255.255.255.0
ISP1_P(config-if)#no shut
ISP1_P(config-if)#int lo 0
ISP1_P(config-if)#ip add 2.2.2.2 255.255.255.255
ISP1_P(config-if)#int s1/2
ISP1_P(config-if)#ip add 23.1.1.1 255.255.255.0
ISP1_P(config-if)#no shut

Router-ISP1_ASBR(config)#int s1/2
Router-ISP1_ASBR(config-if)#ip add 23.1.1.2 255.255.255.0
Router-ISP1_ASBR(config-if)#no shut
Router-ISP1_ASBR(config-if)#int lo 0
Router-ISP1_ASBR(config-if)#ip add 3.3.3.3 255.255.255.255

Router-ISP1_CE(config)#int lo 0
Router-ISP1_CE(config-if)#ip add 1.1.1.1 255.255.255.255
Router-ISP1_CE(config)#int s1/0
Router-ISP1_CE(config-if)#ip add 192.168.1.1 255.255.255.0
Router-ISP1_CE(config-if)#no shu

先把ISP1的MPLS 和VPN打通,这里限制下标签的范围,到时候分析标签置换好分析。

Router-ISP1_PE(config)#mpls label range 100 199
Router-ISP1_PE(config)#mpls ldp router-id lo 0
Router-ISP1_PE(config)#int s1/1
Router-ISP1_PE(config-if)#mpls ip

ISP1_P(config)#mpls label range 200 299
ISP1_P(config)#mpls ldp router-id lo 0
ISP1_P(config)#int s1/1
ISP1_P(config-if)#mpls ip
ISP1_P(config-if)#int s1/2
ISP1_P(config-if)#mpls ip

Router-ISP1_ASBR(config)#mpls ldp router-id lo 0
Router-ISP1_ASBR(config)#mpls label range 300 399
Router-ISP1_ASBR(config)#
Router-ISP1_ASBR(config)#int s1/2
Router-ISP1_ASBR(config-if)#mpls ip

Router-ISP1_PE(config)#router eigrp 1
Router-ISP1_PE(config-router)#no auto-summary
Router-ISP1_PE(config-router)#network 12.1.1.1 0.0.0.0
Router-ISP1_PE(config-router)#network 1.1.1.1 0.0.0.0

ISP1_P(config)#router eigrp 1
ISP1_P(config-router)#no auto-summary
ISP1_P(config-router)#network 12.1.1.2 0.0.0.0
ISP1_P(config-router)#network 23.1.1.1 0.0.0.0
ISP1_P(config-router)#network 2.2.2.2 0.0.0.0

Router-ISP1_ASBR(config)#router eigrp 1
Router-ISP1_ASBR(config-router)#no auto-summary
Router-ISP1_ASBR(config-router)#network 23.1.1.2 0.0.0.0
Router-ISP1_ASBR(config-router)#network 3.3.3.3 0.0.0.

Router-ISP1_PE(config)#ip vrf A
Router-ISP1_PE(config-vrf)#rd 1:1
Router-ISP1_PE(config-vrf)#route-target 1:1

Router-ISP1_PE(config)#int s1/0
Router-ISP1_PE(config-if)#ip vrf forwarding A
Router-ISP1_PE(config-if)#ip add 192.168.1.2 255.255.255.0
Router-ISP1_PE(config-if)#no shut
Router-ISP1_PE(config)#router ospf 1 vrf A
Router-ISP1_PE(config-router)#router-id 192.168.1.2
Router-ISP1_PE(config-router)#network 192.168.1.2 0.0.0.0 a 0
Router-ISP1_PE(config-router)#redistribute bgp 1 subnets

Router-ISP1_CE(config)#router ospf 1
Router-ISP1_CE(config-router)#router-id 1.1.1.1
Router-ISP1_CE(config-router)#network 1.1.1.1 0.0.0.0 a 0
Router-ISP1_CE(config-router)#network 192.168.1.1 0.0.0.0 a

关于ASBR的VRF后续在创建,先把ISP1 和ISP2的VPN的路由搞定

Router-ISP1_PE(config)#router bgp 1
Router-ISP1_PE(config-router)#bgp router-id 1.1.1.1
Router-ISP1_PE(config-router)#no bgp default ipv4
Router-ISP1_PE(config-router)#neighbor 3.3.3.3 remote 1
Router-ISP1_PE(config-router)#neighbor 3.3.3.3 upda lo 0
Router-ISP1_PE(config-router)#address-family vpnv4
Router-ISP1_PE(config-router-af)#neighbor 3.3.3.3 ac
Router-ISP1_PE(config-router)#address-family ipv4 vrf A
Router-ISP1_PE(config-router-af)#redistribute ospf 1

Router-ISP1_ASBR(config)#router bgp 1
Router-ISP1_ASBR(config-router)#bgp router-id 3.3.3.3
Router-ISP1_ASBR(config-router)#no bgp default ipv4-unicast
Router-ISP1_ASBR(config-router)#neighbor 1.1.1.1 remote 1
Router-ISP1_ASBR(config-router)#neighbor 1.1.1.1 upda lo 0
Router-ISP1_ASBR(config-router)#address-family vpnv4
Router-ISP1_ASBR(config-router-af)#neighbor 1.1.1.1 ac

ISP1的VPN路由搞定了,这里ASBR不是作为PE存在,所以暂时不操作,把ISP2的基本搞定。

Router-ISP2_ASBR(config)#int s1/0
Router-ISP2_ASBR(config-if)#ip add 45.1.1.1 255.255.255.0
Router-ISP2_ASBR(config-if)#no shut
Router-ISP2_ASBR(config-if)#int lo 0
Router-ISP2_ASBR(config-if)#ip add 4.4.4.4 255.255.255.255
Router-ISP2_ASBR(config-if)#router eigrp 1
Router-ISP2_ASBR(config-router)#no auto-summary
Router-ISP2_ASBR(config-router)#network 45.1.1.1 0.0.0.0
Router-ISP2_ASBR(config-router)#network 4.4.4.4 0.0.0.0

ISP2_P(config)#int s1/0
ISP2_P(config-if)#ip add 45.1.1.2 255.255.255.0
ISP2_P(config-if)#no shut
ISP2_P(config-if)#int s1/1
ISP2_P(config-if)#ip add 56.1.1.1 255.255.255.0
ISP2_P(config-if)#no shut
ISP2_P(config-if)#int lo 0
ISP2_P(config-if)#ip add 5.5.5.5 255.255.255.255
ISP2_P(config-if)#router eigrp 1
ISP2_P(config-router)#no auto-summary
ISP2_P(config-router)#network 5.5.5.5 0.0.0.0
ISP2_P(config-router)#network 45.1.1.2 0.0.0.0
ISP2_P(config-router)#network 56.1.1.1 0.0.0.0

Router-ISP2_PE(config)#int s1/1
Router-ISP2_PE(config-if)#ip add 56.1.1.2 255.255.255.0
Router-ISP2_PE(config-if)#no shut
Router-ISP2_PE(config-if)#int lo 0
Router-ISP2_PE(config-if)#ip add 6.6.6.6 255.255.255.255
Router-ISP2_PE(config-if)#router eigrp 1
Router-ISP2_PE(config-router)#no auto-summary
Router-ISP2_PE(config-router)#network 56.1.1.2 0.0.0.0
Router-ISP2_PE(config-router)#network 6.6.6.6 0.0.0.0
基本地址配置和EIGRP的建立
Router-ISP2_ASBR(config)#mpls ldp router-id lo 0
Router-ISP2_ASBR(config)#mpls label range 400 499
Router-ISP2_ASBR(config)#int s1/0
Router-ISP2_ASBR(config-if)#mpls ip

ISP2_P(config)#mpls label range 500 599
ISP2_P(config)#mpls ldp router-id lo 0
ISP2_P(config)#int s1/0
ISP2_P(config-if)#mpls ip
ISP2_P(config-if)#int s1/1
ISP2_P(config-if)#mpls ip

Router-ISP2_PE(config)#mpls label range 600 699
Router-ISP2_PE(config)#mpls ldp router-id lo 0
Router-ISP2_PE(config)#int s1/1
Router-ISP2_PE(config-if)#mpls ip
MPLS完成

Router-ISP2_ASBR(config-if)#router bgp 2
Router-ISP2_ASBR(config-router)#bgp router-id 4.4.4.4
Router-ISP2_ASBR(config-router)#neighbor 6.6.6.6 remote 2
Router-ISP2_ASBR(config-router)#neighbor 6.6.6.6 upda lo 0
Router-ISP2_ASBR(config-router)#no bgp default ipv4-unicast
Router-ISP2_ASBR(config-router)#address-family vpnv4
Router-ISP2_ASBR(config-router-af)#neighbor 6.6.6.6 activate

Router-ISP2_PE(config)#router bgp 2
Router-ISP2_PE(config-router)#bgp router-id 6.6.6.6
Router-ISP2_PE(config-router)#no bgp default ipv4-unicast
Router-ISP2_PE(config-router)#neighbor 4.4.4.4 remote 2
Router-ISP2_PE(config-router)#neighbor 4.4.4.4 upda lo 0
Router-ISP2_PE(config-router)#address-family vpnv4
Router-ISP2_PE(config-router-af)#neighbor 4.4.4.4 activat
Router-ISP2_PE(config-router)#address-family ipv4 vrf A
Router-ISP2_PE(config-router-af)#redistribute ospf 1

Router-ISP2_PE(config)#ip vrf A
Router-ISP2_PE(config-vrf)#rd 1:1
Router-ISP2_PE(config-vrf)#route-target 1:1
Router-ISP2_PE(config-vrf)#int s1/2
Router-ISP2_PE(config-if)#ip vrf forwarding A
Router-ISP2_PE(config-if)#ip add 192.168.2.2 255.255.255.0
Router-ISP2_PE(config-if)#no shut
Router-ISP2_PE(config)#router ospf 1 vrf A
Router-ISP2_PE(config-router)#network 192.168.2.2 0.0.0.0 a 0
Router-ISP2_PE(config-router)#redistribute bgp 2 subnets

Router-ISP2_CE(config)#int s1/2
Router-ISP2_CE(config-if)#ip add 192.168.2.1 255.255.255.0
Router-ISP2_CE(config-if)#no shut
Router-ISP2_CE(config-if)#int lo 0
Router-ISP2_CE(config-if)#ip add 2.2.2.2 255.255.255.255
Router-ISP2_CE(config-if)#router ospf 1
Router-ISP2_CE(config-router)#router-id 2.2.2.2
Router-ISP2_CE(config-router)#network 2.2.2.2 0.0.0.0 a 0
Router-ISP2_CE(config-router)#network 192.168.2.1 0.0.0.0 a 0
这里ISP1 和ISP2的MPLS VPN路由更新和底层都完成了,开始ASBR之间问题。

Router-ISP1_ASBR(config)#int s1/3
Router-ISP1_ASBR(config-if)#ip add 34.1.1.1 255.255.255.0
Router-ISP1_ASBR(config-if)#no shut
Router-ISP1_ASBR(config)#router bgp 1
Router-ISP1_ASBR(config-router)#neighbor 34.1.1.2 remote 2
Router-ISP1_ASBR(config-router)#address-family vpnv4
Router-ISP1_ASBR(config-router-af)#neighbor 34.1.1.2 activate
这里接口属于global接口,把VPNV4给激活

Router-ISP2_ASBR(config)#int s1/3
Router-ISP2_ASBR(config-if)#ip add 34.1.1.2 255.255.255.0
Router-ISP2_ASBR(config-if)#no shut
Router-ISP2_ASBR(config-if)#router bgp 2
Router-ISP2_ASBR(config-router)#neighbor 34.1.1.1 remote 1
Router-ISP2_ASBR(config-router)#address-family vpnv4
Router-ISP2_ASBR(config-router-af)#neighbor 34.1.1.1 ac

mpls

发现没有路由,之前说过 默认情况下 MPBGP是不会接收自身没有关于这些VRF信息的路由。所以关闭检测

Router-ISP1_ASBR(config-router)#no bgp default route-target filter
Router-ISP1_ASBR#clear ip bgp * soft

Router-ISP2_ASBR(config-router)#no bgp default route-target filter
Router-ISP2_ASBR#clear ip bgp * soft

mpls
mpls

在Router-ISP2_ASBR上有条去往34.1.1.1的32位主机路由,查看LIB表看分配了什么标签

mpls

只有本地标签400,没有关于远端分配的标签,如果在平时的话,没有远端分配的标签是会出现untagged动作的,但是这里不是,而是Pop。

mpls

它这个标签动作是自己分配的,这就是32位主机路由的特效,让标签不被全部弹出来。还会发现带有RT前缀的路由信息,它是由MPBGP传递过来的,这也是跨域模型中才会有,有这个标志 通常会要置换内层标签,并且压入外层标签。

mpls

发现下一跳不优,因为它们不知道怎么去往34.1.1.1,对应的Router-ISP1_PE上也会出现相对应的情况 不知道怎么去往34.1.1.2,解决办法有两个,一个是重分布32位主机路由到IGP,让路由可达,另外一个就是改变下一跳。 我们这把 ISP1_ASRB上做next-hop-self。在Router-ISP2_ASBR上做重分布。

Router-ISP1_ASBR(config)#router bgp 1
Router-ISP1_ASBR(config-router)#address-family vpnv4
Router-ISP1_ASBR(config-router-af)#neighbor 1.1.1.1 next-hop-self

Router-ISP2_ASBR(config)#ip prefix-list Router-ISP1_ASBR permit 34.1.1.1/32
Router-ISP2_ASBR(config)#route-map Router-ISP1_ASBR permit 10
Router-ISP2_ASBR(config-route-map)#match ip address prefix-list Router-ISP1_ASBR
Router-ISP2_ASBR(config)#router eigrp 1
Router-ISP2_ASBR(config-router)#redistribute connected route-map Router-ISP1_ASBR metric 1500 100 255 1 1500

在Router-ISP1_ASBR上做next-hop-self,在ISP2上做重分布直连,做了个过滤 只让32位的主机路由进去,这时候32位的主机路由到达IGP协议里面,那么LDP就会为这条路由分配标签。 而Router-ISP1_ASBR是改变下一跳,所以MPBGP会为它分配标签。

mpls

ISP1的PE上看到的下一跳是3.3.3.3,也就是ASBR的

mpls

关于ISP2上看到的下一跳是34.1.1.1,这里没有任何的改变。
这样的结果导致,两边的标签动作可能不一样,分析下

mpls

1、Router-ISP2_CE发送一个去往1.1.1.1的IP包,交给PE

2、PE收到以后查看关于属于这个VRF的FIB表,

mpls

内层标签是306,我们可以从最简单的分析 因为限制了标签范围,所以这个肯定是关于Router-ISP1_ASBR的标签,为什么是它分配的呢,因为这条路由在Router-ISP2_ASBR收到以后传递给Router-ISP2_PE之间并没有改变下一跳,下一跳还是34.1.1.1,也就是Router-ISP1_ASBR的更新源接口,所以标签不会更改。 外层标签是关于怎么去往这个ASBR的,也就是重分布进IGP的34.1.1.1 ,502是LDP分配的标签。

3、P收到这标签以后,这里不会执行Pop动作,因为Router-ISP2_ASBR关于34.1.1.1 不是它本身产生的,它发现自己接口信息中跟本没有这条32位的信息,所以它不会向P发送Pop 3的信息,所以在P上是置换动作。502—400, 这里因该要注意

mpls

从抓包看 外层标签是400,内层标签306不变,双层标签交给Router-ISP2_ASBR

mpls

4、Router-ISP2_ASBR收到以后Pop动作,因为这个标签动作是它自身产生的,而不是对方告诉它的,这是因为32位主机路由的特点,如果这里用环回口建立邻居的话,标签就会出现递归,会导致通信失败。 这里Pop动作以后,剩下306的标签跟出接口S/13发送给ASBR

mpls

5、Router-ISP1_ASBR收到以后,306置换从104,之前提到过带有RT的路由信息,一般是要置换内层标签,然后打上外层的标签才能转发。因为这里104如果转发到P路由器,P路由器是没有客户路由的,它也没有关于104的任何标签信息,它有的只是关于这个104的下一跳信息,因为104是Router-ISP1_PE MPBGP分配给Router-ISP1_ASBR的。

mpls
mpls

由于ASBR上没有创建VRF,所以也不能查看FIB表看是否压入标签,这里可以用show mpls forwarding-tabole labels 306 detail来查看
内层104标签,外层201标签。

mpls

可以看到1.1.1.1这条路由,本地分配是306的标签,别人分配给我的是104标签,104就是内存标签,201是关于怎么去这个MPBGP的下一跳标签,也就是1.1.1.1的标签。

6、P路由器收到以后,执行Pop动作

7、Router-ISP1_PE收到以后,执行untagged 把标签信息全部弹出,把数据包交给CE1。

可以看出来ISP2执行的是重分布动作,所以内层标签一直是关于Router-ISP1_ASBR的,没有改变过。 可是从ISP1这边分析就不同了,因为改变了下一跳。

mpls

1、Router-ISP1_CE发送一个关于2.2.2.2的IP数据包交给PE。

2、PE收到以后查看FIB表。

mpls

内层标签是关于305的,因为在Router-ISP1_ASBR上是做了next-hop-slef的,所以是305分配的标签,改变了下一跳。 外层标签是200,是关于ASBR的下一跳标签信息。

3、这时候P路由是执行Pop动作的,在之前分析的到ISP1的时候可以发现,其实也可以从标签中看出来,因为是关于ASBR的

4、Router-ISP1_ASBR收到以后,305置换成406,之间发送给Router-ISP2_ASBR,这里是单层标签过去的

mpls

5、Router-ISP2_ASBR收到以后,压入的双层标签,内层标签是604,这个是Router-ISP2_PE分配的,这个跟单域MPLS VPN一样,路由分配到PE在传递给另外个PE改变了下一跳。 外层标签500是关于怎么去PE的。

mpls
mpls

所以这里置换 406到604只是置换的内层标签,还需要压入外层标签、500 是去往6.6.6.6的

mpls

关于2.2.2.2 本地分配的标签是604

6、P路由器收到以后,执行Pop动作,剩下604的标签传递给PE

7、PE收到以后执行untagged ,弹出所有标签 把数据包传递给CE。

总结:Open B的方案,比Open A执行起来复杂一点,但是对于维护和设备性能要求就合理得多了,这里重分布和next-hop-self从实验中可以看出来,重分布比较好,因为它不需要ASBR在为每条路由分配标签。 缺点就是 ASBR的工作量还是很大,它必须要承载不同客户端的路由信息,如果这张网还是intenet,那么它还有公网的路由,这对于ASBR来说负担还是很重。 Open C方案很好的解决了这个问题。

博客全系列文档帖子汇总

文档帖子汇总,点击查看
    博主也只是业余时间写写技术文档,请大家见谅,大家觉得不错的话,可以推荐给朋友哦,博主会努力推出更好的系列文档的。如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路博客,http://ccieh3c.com

下载整理好的PDF

↓↓↓↓↓↓↓↓↓↓花些许时间就可以下载实战文档 本地看,安装本站推荐的浏览器,用推荐的浏览器打开对应文章即可下载,觉得文章对您有帮助,记得保留该浏览器哦,下载其他博文可以继续使用,感谢大家支持。(如果对大家有些许帮助,可以每天打开浏览器访问一下本博客,博客会获取推广积分的哦,谢谢)↓↓↓↓↓↓↓↓↓↓

如果下载地址失效,请联系博主或者在下面留言,谢谢。

您使用的不是本站推荐览器浏览!(无法获取下载地址)请点击这里下载安装windows版!(没有下载地址?)

 未标题3.gif

原创与收集的内容,允许转载,转载时请务必以超链接形式标明文章原始出处,博客地址http://ccieh3c.com。

 介绍下载2.jpg
喜欢 (0)
[]
分享 (0)
网络之路
关于作者:
分享一些自己懂的技术知识点,希望对大家有帮助。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址