设为首页收藏本站language 语言切换
楼主: 雨中漫步
收起左侧

[分享] MPLS VPN 跨域技术白皮书

  [复制链接]
发表于 2015-11-19 17:32:24 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊啊啊
376# 2015-11-19 17:32:24 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2015-11-26 07:05:54 | 显示全部楼层
一、原理:
1. OPTION C跨域实现方法

图1 跨域原理
OPTION C跨域也叫多跳MP-EBGP跨域,由于BGP只要能建立TCP连接,就能成为BGP邻居并传递路由信息,因此,OPTION C通过多跳的MP-EBGP直接在源、宿端PE之间传递VPN路由信息,然后在源、宿端PE之间构建LSP公网隧道。

VPN信息传递

OPTION C跨域时VPN信息传递比较简单,即直接在源和宿端PE间通过多跳MP-EBGP传递,如上图,PE2和PE1之间建立多跳的MP-EBGP连接,VPN信息直接从PE2传递到PE1。

LSP隧道构建

从VPN信息传递的方式可以看出,VPN从PE1到PE2之间只有一跳,VPN的下一跳为PE2,PE2为VPN分配标签,并且一直不会改变。

现在重要的是确定PE1到PE2的外层LSP怎样建立,首先,PE2和ASBR2在一个AS,通过IGP协议,ASBR2会有PE2的路由信息,通过正常的LDP协议,ASBR2和PE2会构建一个LSP隧道,ASBR1和PE2不在一个AS,ASBR1没有PE2的路由信息,此时可以通过EBGP协议把PE2的路由信息传递给ASBR1,另外,对BGP协议进行扩展(RFC3107),让BGP在传递路由时同时分配标签,这样,ASBR1和ASBR2之间的LSP形成,并在ASBR2处形成标签SWAP,同样,ASBR1和PE1之间也通过扩展的IBGP传送PE2的路由信息,同时分配标签,并在ASBR1处形成标签SWAP,但这一段LSP的建立和ASBR之间LSP的建立不一样,ASBR之间是直连的,下一跳直接可达,PE1和ASBR1之间不是直连的,但PE1和ASBR1位于同一个AS,通过LDP可以构建一个LSP隧道,这样,在PE1到ASBR1之间的LSP隧道最终包括三层标签,最底层VPN标签(PE2分配),中间一层为到PE2的标签(ASBR1通过扩展BGP分配),最外层为到ASBR1的标签(LDP分配),ASBR之间构建一个双层LSP隧道,底层为VPN标签(PE2分配),外层为到PE2的标签(ASBR2通过扩展BGP分配),ASBR2到PE2之间为双层LSP隧道,内层为VPN标签(PE2分配),外层为到PE2的标签(LDP分配)这三段隧道通过在ASBR处的标签SWAP粘结起来,最终形成端到端的LSP隧道。

特点

ASBR不需要处理VPN信息,最符合VPN的要求,即中间设备不感知VPN信息
使用BGP扩展来传递公网标签
在宿端AS之外的AS出现三层标签的LSP隧道。
当VPN业务大规模发展时,可以使用OPTION C跨域方法

二、GNS3模拟实验
1、实验拓扑

图2 实验拓扑
2、关键配置
PE(R2)的BGP配置:
router bgp 200
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 update-source Loopback0
neighbor 5.5.5.5 remote-as 300
neighbor 5.5.5.5 ebgp-multihop 255
neighbor 5.5.5.5 update-source Loopback0
address-family ipv4
  no synchronization
  neighbor 3.3.3.3 activate
  neighbor 3.3.3.3 next-hop-self
  neighbor 3.3.3.3 send-label
  no auto-summary
exit-address-family
address-family vpnv4
  neighbor 5.5.5.5 activate
  neighbor 5.5.5.5 send-community both
  neighbor 5.5.5.5 next-hop-unchanged
exit-address-family
address-family ipv4 vrf vpna
  no synchronization
  redistribute connected
  neighbor 12.1.1.1 remote-as 100
  neighbor 12.1.1.1 activate
exit-address-family
ASBR1(R3)的BGP配置:
router bgp 200
no bgp default ipv4-unicast
no bgp default route-target filter
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 200
neighbor 34.1.1.4 remote-as 300
address-family ipv4
  no synchronization
  network 34.1.1.0 mask 255.255.255.0
  redistribute ospf 1
  neighbor 2.2.2.2 activate
  neighbor 2.2.2.2 next-hop-self
  neighbor 2.2.2.2 send-label
  neighbor 34.1.1.4 activate
  neighbor 34.1.1.4 send-label
  no auto-summary
exit-address-family
ASBR2(R4)的BGP配置:
router bgp 300
no bgp default ipv4-unicast
no bgp default route-target filter
bgp log-neighbor-changes
neighbor 5.5.5.5 remote-as 300
neighbor 5.5.5.5 update-source Loopback0
neighbor 34.1.1.3 remote-as 200
address-family ipv4
  no synchronization
  network 34.1.1.0 mask 255.255.255.0
  redistribute ospf 1
  neighbor 5.5.5.5 activate
  neighbor 5.5.5.5 next-hop-self
  neighbor 5.5.5.5 send-label
  neighbor 34.1.1.3 activate
  neighbor 34.1.1.3 send-label
  no auto-summary
exit-address-family
PE2(R5)的BGP配置:
router bgp 300
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 200
neighbor 2.2.2.2 ebgp-multihop 255
neighbor 2.2.2.2 update-source Loopback0
neighbor 4.4.4.4 remote-as 300
neighbor 4.4.4.4 update-source Loopback0
address-family ipv4
  no synchronization
  redistribute connected
  neighbor 4.4.4.4 activate
  neighbor 4.4.4.4 next-hop-self
  neighbor 4.4.4.4 send-label
  no auto-summary
exit-address-family
address-family vpnv4
  neighbor 2.2.2.2 activate
  neighbor 2.2.2.2 send-community both
  neighbor 2.2.2.2 next-hop-unchanged
exit-address-family
address-family ipv4 vrf vpna
  no synchronization
  redistribute connected
  neighbor 56.1.1.6 remote-as 400
  neighbor 56.1.1.6 activate
exit-address-family
3、结果验证
R1#traceroute 6.6.6.6
Type escape sequence to abort.
Tracing the route to 6.6.6.6

  1 12.1.1.2 128 msec 88 msec 104 msec
  2 27.1.1.7 [MPLS: Labels 201/306/503 Exp 0] 180 msec 228 msec 264 msec
  3 37.1.1.3 [MPLS: Labels 306/503 Exp 0] 228 msec 244 msec 228 msec
  4 34.1.1.4 [MPLS: Labels 402/503 Exp 0] 260 msec 228 msec 260 msec
  5 56.1.1.5 [AS 300] [MPLS: Label 503 Exp 0] 232 msec 220 msec 188 msec
  6 56.1.1.6 [AS 300] 288 msec *  224 msec

(1)、在P路由器f0/0接口抓包如下:

明显看到P路由器处有MPLS三层标签。
(2)、在ASBR1内接口f0/1抓包如下:

(3)、在ASBR2外接口f0/0抓包如下:

(4)、在PE2内接口f0/1抓包如下:

标签分配和数据转发完全和理论相吻合。
4、补充标签TTL复制功能测试。
问题:为何上面的抓包中最底层标签突然从254变成251呢?
根据RFC3031中的描述,LSR节点在对分组打标签时,需要将原IP分组或上层标签中的TTL值拷贝到新增加标签的TTL域。LSR在转发标签分组时,对栈顶标签的TTL域作减一操作。标签出栈时,再将栈顶的TTL值拷贝回IP分组或下层标签。开启了标签TTL复制功能的MPLS TTL行为在以上的抓包图片可以清楚看出来。
以下再附上一个关闭标签TTL复制功能的MPLS包头。
R2(config)#no mpls ip propagate-ttl ?
  forwarded  Propagate IP TTL for forwarded traffic   //外部的
  local      Propagate IP TTL for locally originated traffic //内部的
  <cr>
华为对应的指令是:
ttl propagate { public | vpn } undo ttl propagate { public | vpn }
R2(config)#no mpls ip propagate-ttl forwarded  //只对外部路由关闭TTL复制
结果:(没有显示骨干网络)
R1#traceroute 6.6.6.6               
Type escape sequence to abort.
Tracing the route to 6.6.6.6
  1 12.1.1.2 120 msec 72 msec 72 msec
  2 56.1.1.5 [AS 300] [MPLS: Label 503 Exp 0] 184 msec 240 msec 184 msec
  3 56.1.1.6 [AS 300] 264 msec *  284 msec

抓包结果对比:
(1)、在P路由器f0/0接口抓包如下:

(2)、在ASBR1内接口f0/1抓包如下:

(3)、在ASBR2外接口f0/0抓包如下:

(4)、在PE2内接口f0/1抓包如下:

注:在ASBR之间做第二层标签交换的时候并没有涉及TTL复制,所以只是顶层标签减1,所有涉及添加和弹出标签的地方,TTL均取255,完全符合理论。
377# 2015-11-26 07:05:54 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2015-11-30 15:02:46 | 显示全部楼层
支持鸿鹄论坛
378# 2015-11-30 15:02:46 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2015-12-2 10:19:09 | 显示全部楼层
啥也不说了,楼主就是给力!
381# 2015-12-2 10:19:09 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2015-12-9 17:02:43 | 显示全部楼层
啥也不说了,楼主就是给力!
383# 2015-12-9 17:02:43 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2015-12-9 17:02:54 | 显示全部楼层
么么么么么么么么么么么么么么么么么么么么么么
384# 2015-12-9 17:02:54 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-2-28 22:31:14 | 显示全部楼层
感谢分享好文档
385# 2016-2-28 22:31:14 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-2-28 22:31:23 | 显示全部楼层
感谢分享好文档
386# 2016-2-28 22:31:23 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-3-6 15:38:20 | 显示全部楼层
388# 2016-3-6 15:38:20 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2016-3-6 15:38:34 | 显示全部楼层
VPN的LSP:通过VPN路由触发创建的LSP,是两个VPN之间的一条隧道,由于每个PE上可以有多个VPN存在,VPN的LSP要保证当一个数据报文从这条LSP到达一个PE后,它必须能区分出,这个数据报文是属于哪个VPN的。因此也是一条LSP隧道,虽然仅仅只有一跳。
389# 2016-3-6 15:38:34 回复 收起回复
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-11 04:29 , Processed in 0.064076 second(s), 18 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

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