Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4737394
  • 博文数量: 1647
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12479
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1647)

文章存档

2019年(1)

2018年(20)

2017年(68)

2016年(61)

2015年(52)

2014年(204)

2013年(224)

2012年(644)

2011年(373)

分类: 系统运维

2017-07-06 15:50:57

http://www.2cto.com/net/201209/156541.html


MPLS VPN是一种三层VPN.也是实施最为广泛的一种MPLS技术.
关于MPLS VPN的服务模型,这里一点带过。相信大家对MPLS VPN的架构是比较了解了:
 
clip_image002

上面就是一个MPLS VPN的核心应用模型。P和PE都运行MPLS.所以PE和P设备的选型的前提是这些设备必须要支持MPLS标签分发和转发MPLS报文的能力。
 
下面就MPLS VPN技术的各个技术结构做一个汇总:
虚拟路由转发VRF--virtual routing forwarding
VRF是一种VPN路由和转发的实例.每一个独立的VRF都有一张独立的路由表。这个概念很重要。
因为在PE路由器上的路由需要被相互隔离,以确保对每一个用户VPN的私有性,所以每一个VPN都应该有自己的路由表。这张私有路由表就被称为VRF路由表。VRF路由表和cisco IOS的全局路由表是没有什么区别的,只不过这个路由表仅仅是对某一个VRF有效,并且和其他的路由表之间是完全隔离开的.
再来看一个图就搞定了。
 
clip_image004

RD---route distinguish 路由区分
RD,解决地址冲突问题,VPNV4前缀=RD+IPv4前缀.
对于上面的图来说,我会在现实生活中经常会遇到一个问题,有两家公司,公司A和公司B,大家的私网地址都是192.168.0.0/16,那么这个时候,两个公司的路由都送到了PE路由器上,PE路由器怎么知道公司A的192.168.0.1到10.1.1.1应该往VRF A去送,而公司B的192.168.0.1应该送往VRF B呢?
 
这个问题被RD所解决。
RD是一个64比特的字段,用于在MP-BGP运载VRF前缀时,确保这些前缀的唯一性。RD并不会说明该前缀属于哪个VRF,RD的功能并不是VPN标示符,因为在一些更为复杂得环境中,可能一个VPN存在多个RD.
 
在PE路由器上的每个VRF实例必须要分配一个RD.格式为:
ASN:nn或者IP address:NN,nn代表数字.
如果一个IPv4前缀为10.1.1.0/24,并且RD是1:1的话,那么VPNv4的前缀将为:1:1:10.1.1.0/24.这样来确保他的唯一性,RD是VRF路由区分符。和MPLS核心网没有关系的。
所以比较简单的记忆方式就是,RD是VRF路由的区分标示符。而RD是MPLS核心网的路由目标。
 
RT----Route target
如果RD仅仅用于标示VPN的话,那么在不同VPN场景之间的通讯就会出现问题。
公司A的一个location没有办法与公司B的一个location进行通讯,因为他们的RD不匹配。
让不同的公司之间进行有策略性的相互访问,被称为外部通讯。通一个vrf之间的通讯被称为内部通讯。而内部通讯是比较简单的。
 
对于VRF的唯一标示符是用的RD.而核心网PE到PE的路由传输则用的是Route target.
一个RT是一个BGP扩展团体,说明了哪些路由需要从MP-BGP中注入到VRF.
RT氛围Route target export和Route target import.
 
Route target export: 表示输出的VPNv4路由收到了额外的BGP扩展团体.
Route target import: 从MP-BGP那里收到的Vpnv4路由核查可以匹配的扩展团体.
如果最终找到了匹配的RT,这个前缀会以IPv4路由的身份被添加到VRF路由表中,否则该前缀会被拒绝。
RT的配置:
 
clip_image006
这里说明一个情况,当在配置MPLS VPN的时候,如果不需要和属于其他VPN的location通讯,而只需要为一个VRF进行内部通讯的环境是相当简单的。但是当如果想让某个VPN的location和属于另外一个VPN的location进行通讯的时候,就需要正确的配置RT了。
这里需要一个更具有说明的实例来分解这个知识点:
 
clip_image008

这里有两个customer.cust-one and cust-two.
当然基本需求很简单。相同的vrf之间需要进行通讯,而不同的vrf之间cust-one的location A需要和cust-two的location A也需要进行通讯。
那么这里如何运用RT进行配置呢?
 
clip_image010

本端PE对应的RT export,就是对端的RT import.
反之亦然,这样就可以把路由正确的引入想要引入的vrf去了。当然这样做肯定是对称的,不会我发出去路由,对端收但是对端不法给我。那样配置没有问题,但是对于实际生产网是没有什么意义的。通讯没有纯单向的应用。
 
clip_image012

从上面可以看到,这个实例中的扩展团体属性RT是1:1.因为import和export都是1:1,所以这里只显示一个。
如果两个配置得不一样的话就会分开显示:
 
clip_image014

在MPLS VPN中VPNv4路由是如何传播的?
 
clip_image016

这个图充分说明了传播的过程,首先,VPN1 locationA,CE转发接收到的客户流量,然后转发给PE.
当然CE到PE之间可以用IGP或者EBGP通告纯IPv4路由。当PE vrf接收到路由以后,IPv4路由被注入vrf路由表中,IPv4路由又被重分布到MP-BGP中,RD和RT被添加上,骨干网络PE和PE之间通过IBGP通告带有标签和RTS的vpnv4路由,通过RT可以知道应该把路由注入到哪个对端PE-2的VRF中去,然后将RD从VPNv4路由中移除。最后通过IGP或者EBGP通告ipv4路由到CE2.也就是location B的CE上去。
 
实际上整个过程是:IPv4->加RD/RT-->重分步到MP-BGP-->通告到对端PE的MP-BGP-->注入对端PE vrf路由表-->移除RD/RT-->通告给vrf连接的CE.最后完成通讯,当然这里只说了RD/RT,实际上再真实的传输过程中,骨干网还要进行标签分发建立FEC,然后通过标签转发表将流量一步一步的进行传输。
 
我们强调了RT和RD的重要性,但是RD和RT也只是在路由维护的时候才起作用,实际的MPLS数据包转发的时候是不会带有这两个信息,而只会带有标签信息,这个地方需要澄清一下概念,很多时候这个概念都会搞混系。
好了。说了这些,RT只是当数据送到了PE的时候,
Hub-and-Spoke模型.
 
有一种应用模型称为Hub-and-spoke模型,用户并不希望他们的场点之间形成完全的互通。典型的应用环境就是公司有一个HQ和很多分支机构,例如银行系统。branch所有的数据流都是直接上传到总部的服务器上,也是直接从总部的服务器上直接下载最新的数据,银行的分支和分支之间是不能进行相互通讯的。这个需求是从安全性上来进行考虑的。
 
但是在MPLS VPN中进行穿越,下面的条件是必须的:
■spoke(分支机构)只能和hub(总部)进行通讯.
■spoke到spoke的流量必须先要发给hub(总部),然后由总部进行中转.(当然是由总部的CE路由器进行转发,这样也可以很好的控制数据流量)
要实现这些,就必须要粘连以下参数:
两个不同的RT.
两个不同的RD.
这样说显然很空洞,下面用一个实验来进行详细的说明:
 
clip_image018

这个实例,我用了一下午才搭建哈。呵呵,就是为了验证RT来实现 hub-spoke的应用模式。
可能这个图看起来太花了,我再整理一下,看看分支机构一为什么只能和HQ通讯,分支机构二也只能和HQ通讯,但是分支一和分支二不能相互通讯。
 
clip_image020

从这个图可以看出,branch-1到右边HQ,PE-1的RT export和对端PE-3的import是匹配的。而PE-1的RT import和PE-3的export也能匹配,所以是可以相互通讯的。PE-2和PE-3也是一样。
 
这里还有一点就是,虽然都是一个vrf,但是每个的RD不一样。再来复习一下RD是干什么的,为什么RD不一样,还可以继续通讯?
RD是一个64比特的字段,用于在MP-BGP运载VRF前缀时,确保这些前缀的唯一性。RD并不会说明该前缀属于哪个VRF,RD的功能并不是VPN标示符,因为在一些更为复杂得环境中,可能一个VPN存在多个RD.
 
这里RD只是为了标示VRF里面的客户路由。因为在MPLS骨干网中如果遇到CE侧有重复的路由,类似于192.168.0.1的,那么需要有唯一的标示符来标明两个相同网段的路由。
 
所以这里RD才需要明确的标明。如果没有重复的网段,实际上RD随便怎么标示都是一样的。
但是如果有重复的客户端路由,RD一定要不一样,否则就没有办法进行传输,还会造成网络问题。

下面是实验中的核心配置:
R1-PE-1:
hostname R1-PE-1
ip vrf maipu
rd 1:1
route-target export 100:100
route-target import 100:101
!
multilink bundle-name authenticated
mpls label protocol ldp
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0/0
ip vrf forwarding maipu
ip address 13.1.1.1 255.255.255.0
duplex full
!
interface GigabitEthernet1/0
ip address 10.1.1.1 255.255.255.0
negotiation auto
mpls label protocol ldp
mpls ip
!
interface GigabitEthernet2/0
ip address 12.1.1.2 255.255.255.0
negotiation auto
mpls label protocol ldp
mpls ip
!
router ospf 1
router-id 1.1.1.1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
router bgp 65500
no synchronization
bgp router-id 1.1.1.1
bgp log-neighbor-changes
neighbor 1.1.1.2 remote-as 65500
neighbor 1.1.1.2 update-source Loopback0
neighbor 1.1.1.2 next-hop-self
neighbor 1.1.1.3 remote-as 65500
neighbor 1.1.1.3 update-source Loopback0
neighbor 1.1.1.3 next-hop-self
no auto-summary
!
address-family vpnv4
neighbor 1.1.1.2 activate
neighbor 1.1.1.2 send-community extended
neighbor 1.1.1.3 activate
neighbor 1.1.1.3 send-community extended
exit-address-family
!
address-family ipv4 vrf maipu
redistribute connected
no synchronization
exit-address-family
!
R2-PE-2:
hostname R2-PE-2
!
ip vrf maipu
rd 1:2
route-target export 100:100
route-target import 100:101
!
multilink bundle-name authenticated
mpls label protocol ldp
!
interface Loopback0
ip address 1.1.1.2 255.255.255.255
!
interface FastEthernet0/0
ip vrf forwarding maipu
ip address 14.1.1.1 255.255.255.0
duplex full
!
interface GigabitEthernet1/0
ip address 10.1.1.2 255.255.255.0
negotiation auto
mpls label protocol ldp
mpls ip
!
interface GigabitEthernet2/0
ip address 11.1.1.1 255.255.255.0
negotiation auto
mpls label protocol ldp
mpls ip
!
router ospf 1
router-id 1.1.1.2
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
router bgp 65500
no synchronization
bgp router-id 1.1.1.2
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 65500
neighbor 1.1.1.1 update-source Loopback0
neighbor 1.1.1.1 next-hop-self
neighbor 1.1.1.3 remote-as 65500
neighbor 1.1.1.3 update-source Loopback0
neighbor 1.1.1.3 next-hop-self
no auto-summary
!
address-family vpnv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community extended
neighbor 1.1.1.3 activate
neighbor 1.1.1.3 send-community extended
exit-address-family
!
address-family ipv4 vrf maipu
redistribute connected
no synchronization
exit-address-family
!
R3-PE-3:
hostname R3-PE-3
ip vrf maipu
rd 1:3
route-target export 100:101
route-target import 100:100
!
multilink bundle-name authenticated
mpls label protocol ldp
!
interface Loopback0
ip address 1.1.1.3 255.255.255.255
!
interface FastEthernet0/0
ip vrf forwarding maipu
ip address 16.1.1.1 255.255.255.0
duplex full
!
interface GigabitEthernet1/0
ip address 11.1.1.2 255.255.255.0
negotiation auto
mpls label protocol ldp
mpls ip
!
interface GigabitEthernet2/0
ip address 12.1.1.1 255.255.255.0
negotiation auto
mpls label protocol ldp
mpls ip
!
router ospf 1
router-id 1.1.1.3
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
router bgp 65500
no synchronization
bgp router-id 1.1.1.3
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 65500
neighbor 1.1.1.1 update-source Loopback0
neighbor 1.1.1.1 next-hop-self
neighbor 1.1.1.2 remote-as 65500
neighbor 1.1.1.2 update-source Loopback0
neighbor 1.1.1.2 next-hop-self
no auto-summary
!
address-family vpnv4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community extended
neighbor 1.1.1.2 activate
neighbor 1.1.1.2 send-community extended
exit-address-family
!
address-family ipv4 vrf maipu
redistribute connected
no synchronization
exit-address-family
!
R4-CE-1:
hostname R4-CE-1
!
interface FastEthernet0/0
ip address 13.1.1.2 255.255.255.0
duplex full
!
ip route 0.0.0.0 0.0.0.0 13.1.1.1
R5-CE-2:
hostname R5-CE-2
!
interface FastEthernet0/0
ip address 14.1.1.2 255.255.255.0
duplex full
!
ip route 0.0.0.0 0.0.0.0 14.1.1.1
 
R6-CE-3:
hostname R6-CE-3
!
interface FastEthernet0/0
ip address 16.1.1.2 255.255.255.0
duplex full
!
ip route 0.0.0.0 0.0.0.0 16.1.1.1
最后来看看结果: 
从R4-CE-1到R6-CE-3,通。
 
.

从R5-CE-2到R6-CE-3,通.
 
.

但是,分支机构一到分支机构二(R4-CE-1到R5-CE-2),不可达:
 
.
 
阅读(338) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册