MPLSL2VPNVPWS的实现方式.docx
- 文档编号:10689191
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:25
- 大小:396.08KB
MPLSL2VPNVPWS的实现方式.docx
《MPLSL2VPNVPWS的实现方式.docx》由会员分享,可在线阅读,更多相关《MPLSL2VPNVPWS的实现方式.docx(25页珍藏版)》请在冰豆网上搜索。
MPLSL2VPNVPWS的实现方式
MPLSL2VPNVPWS的实现方式
一.VPWS实现方式概述
目前使用VRP平台的华为中高端数据通信产品支持VPWS技术,VPWS的实现方式分为4种:
CCC、SVC、Martini、Kompella。
CCC、SVC方式不使用信令协议,通过静态配置VC标签的方式来实现MPLSL2VPN。
Martini方式使用LDP信令,通过LDP信令协议传递二层信息和VC标签的方式来实现MPLSL2VPN。
Kompella方式使用BGP信令,通过BGP信令协议传递二层信息和VC标签的方式来实现MPLSL2VPN。
Martini草案和Kompella草案是IETF的PPVPN〔Provider-provisionedVirtualPrivateNetwork〕工作组制订的多个MPLSL2VPN框架草案中最主要的两种。
下面具体对上述的MPLSL2VPN的几种实现方式进展介绍。
二.CCC方式MPLSL2VPN
CCC方式概述
CCC方式是一种静态配置VC连接的方式,根据配置把VC一端收到的二层协议报文映射到一个静态的LSP隧道上去,这样二层报文在途经的每一跳设备就根据该静态LSP进展MPLS转发,最后将报文转发到VC的另一端。
与普通MPLSL2VPN不同,CCC采用一层标签传送用户数据,这一层标签在每个LSR上进展标签交换。
因此CCC对LSP的使用是独占性的,而且在两个方向都需要配置静态的LSP。
CCC的LSP只用于传递这个CCC连接的数据,不能用于其他MPLSL2VPN连接,也不能用于BGP/MPLSVPN或承载普通的IP报文。
CCC方式只需要ISP网络支持MPLS转发。
CCC在两个CE之间透明传递用户数据,源CE的二层报文被发送到目的CE中去,只有二层地址被改变了,增加了用户数据的平安。
CCC适用于小型、拓扑简单的MPLS网络,需要管理员手工配置。
因为不进展信令协商,不需要交互控制报文,因此消耗资源比拟小,易于理解,但维护不方便,扩展性差。
CCC连接分类
CCC的连接方式可以分为本地连接和远程连接两种方式。
1.本地连接:
在两个本地CE之间建立的连接,即两个CE连在同一个PE上。
PE的作用类似二层交换机,可以直接完成交换,不需要配置静态LSP。
2.远程连接:
在本地CE和远程CE之间建立的连接,即两个CE连在不同的PE上,需要配置静态LSP来把报文从一个PE传递到另一个PE。
PE侧通过配置命令将静态LSP与CCC连接进展对应。
CCC方式的构造
CCC方式的MPLSL2VPN既支持远程连接,也支持本地连接。
CCC方式支持的拓扑构造如图7-6所示。
图1-1CCC连接方式
对于图7-6中,VPN1的Site1和Site2,它们通过CCC远程连接〔蓝色虚线〕互连。
Site1与Site2间需要两条静态LSP,一条从PE1到PE2,表示从Site1到Site2的LSP,另一条从PE2到PE1,表示从Site2到Site1的LSP。
两条蓝色虚线组成一条双向的VC,即CCC远程连接,为客户提供类似传统二层VPN的二层连接。
对于图7-6中,VPN2的Site1和Site2通过CCC本地连接〔红色虚线〕进展互连,它们接入的PE3相当于一个二层交换机,CE之间不需要LSP隧道。
可以直接进展VLAN、Ethernet、FR、ATMAAL5、PPP、HDLC等不同链路类型的数据交换。
这种方式的最大优点是:
不需要任何标签信令传递二层VPN信息,ISP网络能支持MPLS转发即可。
此外,由于CCC的LSP是专用的,因此可以提供QoS保证。
CCC方式的报文交互过程
CCC方式的报文交互,分为两种情况:
CCC本地连接和CCC远程连接。
●CCC本地连接
图1-1CCC的本地连接的报文交互过程
如图7-7所示,PE1收到CE1接口发送来的L2PDU后,PE1根据CCC的关联配置发现这是一个本地连接。
PE1得到出接口名称后对L2PDU不做任何处理,将二层报文通过出接口发送到CE2。
●CCC远程连接
图1-2CCC的远程连接的报文交互过程
如图7-8所示,以CE1发送报文到CE2为例〔反方向过程一样〕:
2.PE1收到CE1接口发送来的二层报文。
3.PE1根据CCC的关联配置查找静态LSP,得到下一跳为PE2,出标签为100。
4.PE1在L2PDU报文外封装MPLS头〔Lable=100〕并发送到连接P的接口。
5.P设备收到报文后查找LSP表,弹出标签100后,在L2PDU报文外封装MPLS头〔Lable=101〕并发送到连接PE2的接口。
6.PE2收到报文后查找LSP表,进展弹出操作,根据CCC的关联配置得到对应的出接口7.PE2将二层报文直接送到CE2。
这个过程中,在入接口,PE设备只关心接收二层报文的接口名称。
如果这个接口关联某一个CCC连接,那么PE查找CCC的相关配置,并且进展MPLS封装和MPLS转发。
PE连接CE的接口并不做任何二层的处理。
同样在出接口,PE只是解封装MPLS,并直接将报文发送到出接口。
因此PE的CCC连接一旦建立起来,PE上AC接口的二层协议状态实质上是处于Down状态。
这一点在所有形式的VPWS实现上都是一样的。
VPWS在实现上也可以在报文进入的PE时进展二层报文头的解封装,并且在出口PE上对报文进展重新二层封装,这样就可以实现二层协议的相互转换,也就是异种介质互联。
三.SVC方式MPLSL2VPN
在Martini中用LDP进展VC标签的交互,如果不使用LDP,而是在PE上直接根据VCID来手动分配内层标签,这就是SVC的模式,可以认为SVC是Martini的简化。
SVC的外层标签〔公网隧道〕建立的方法与Martini一样。
内层标签在配置VC的时候进展手工指定,不需要使用VC标签的传递信令。
所以SVC的网络拓扑模型与报文交互过程与Martini完全一样。
创立SVC的静态二层VC连接时,可以通过隧道策略指定使用的隧道类型〔LDPLSP、CRLDP、GRE〕,并支持负载分担。
SVC支持Multi-Hop方式的跨域L2VPN,不支持本地连接。
Multi-Hop方式的具体内容,请参见PWE3的特性描述手册。
四.Martini方式MPLSL2VPN
Martini方式概述
Martini方式使用两层标签,内层标签是采用扩展的LDP作为信令进展交互。
这种方式遵循草案draft-martini-l2circuit-trans-mpls,在Martini草案中对标准的LDP进展了扩展,增加了FEC类型〔VCFEC〕用于VC标签的交换。
此外,如果交换VC标签的两个PE不是直接相连的,必须建立RemoteLDP会话,在这个会话上传递VCFEC和VC标签。
PE为CE之间的每条连接分配一个VC标签。
二层VPN信息将携带着VC标签,通过LDP建立的LSP,转发到RemoteSession的对端PE。
这样实际上在普通的LSP上建立了一条VCLSP。
在Martini方式中,两个CE之间的VCType+VCID来识别一个VC。
VC-Type:
说明VC的封装类型,例如ATM、VLAN或PPP;
VC-ID:
标识VC。
一样VC-Type的所有VC,其VC-ID必须在整个PE唯一。
同一个VCType的所有VC中,其VCID必须在整个PE中唯一。
连接两个CE的PE通过LDP交换VC标签,并通过VCID将对应的CE绑定起来。
当AC接口物理状态变为UP,PE间的隧道建立成功,并完成双方的标签交换和绑定后,一条VC就建立起来了。
一个VC建立起来后,两个CE通过这个VC来传递二层数据。
Martini方式支持Multi-Hop方式的跨域L2VPN,不支持本地连接。
不能提供像CCC方式那样的本地交换功能。
也不像CCC远程连接那样,一条LSP只能被一条远程CCC连接独享。
在Martini方式下,外层标签用于将各个VC的数据在ISP网络中进展传递。
通过内层的VC标签可以对用户数据进展区分,因此ISP网络中的一条LSP可以被多条VC共享使用。
外层隧道是用于VC数据穿越ISP网络,所以外层隧道也可以使用IP隧道封装,比方使用GRE隧道。
部署Martini方式需要ISP网络能够自动的建立LSP隧道,所以需要ISP网络支持MPLS转发及MPLSLDP,如果ISP网络不支持LDP,那么可以使用GRE隧道封装。
Martini方式MPLSL2VPN支持GracefulRestart,路由器发生倒换后,VC标签保持不变。
倒换过程中,VC状态保持UP。
报文在VC上的转发不受倒换影响。
倒换后,如果从LDP对等体学来的标签与本地保存的不同,原来的标签将被删除,使用此标签的VC状态变为Down。
Martini方式的构造
Martini方式的MPLSL2VPN只支持远程连接,而不支持本地连接。
Martini方式支持的拓扑构造如图7-9。
图1-1Martini支持的拓扑模型
对于图7-9中,VPN1的Site1和Site2,通过Martini远程连接〔红色虚线〕互连。
VPN2的Site1和Site2,也通过Martini远程连接〔蓝色虚线〕互连。
VPN1和VPN2在ISP的网络里分别通过两条不同的LSP互联,也可以复用一条LSP,通过一条LSP进展互联。
Martini方式的报文交互过程
图1-1Martini的报文交互过程
如图7-10所示,Martini的报文交互过程分为从Site1到Site2和从Site2到Site1。
●从Site1到Site2
VPN1的Site1中发送到PE1的VLAN10的报文,在到达PE1后,PE1先打上VCLabel=3000,然后再打上LSP1的出标签1000,即进入LSP1隧道〔红色虚线〕;对于VPN2的Site1发送到PE1的VCI=100的ATM报文,PE1在其上打上VCLabel=4000,然后再打上LSP1的出标签1000,同样进入LSP1隧道〔红色虚线〕。
这些报文在到达PE2后,PE2去掉LSP1的入标签1002,根据内层VCLabel=3000,选择到VPN1的Site2的出接口;根据VCLabel=4000,选择到VPN2的Site2的出接口。
因为VCLabel〔3000、4000〕是EgressPE2在建立各自VC时,通过LDP信令传给IngressPE1的。
从Site2到Site1
VPN1的Site2中发送到PE2的VLAN20的报文,在到达PE2后,PE2先打上VCLabel=3500,然后再打上LSP2的出标签2000,即进入LSP2隧道〔蓝色虚线〕;对于VPN2的Site2发送到PE1的VCI=205的ATM报文,PE2在其上打上VCLabel=4500,然后再打上LSP2的出标签2000,同样进入LSP2隧道〔蓝虚线〕。
这些报文在到达PE1后,PE1去掉LSP1的入标签2002,根据内层VCLabel=3500,选择到VPN1的Site1的出接口;根据VCLabel=4500,选择到VPN2的Site1的出接口。
因为VCLabel〔3500、4500〕是EgressPE1在建立各自VC时,通过LDP信令传给IngressPE2的。
从上面的交互过程中,我们可以看到,外层的LSP隧道是被共享的。
PE2收到报文后会根据内层标签的不同映射到不同的VC上。
在Martini方式中,由于在运营商网络中,只有PE设备需要保存VCLabel和LSP的映射等少量信息,P设备不包含任何二层VPN信息,所以扩展性好。
此外,当需要新增加一条VC时,只在相关的两端PE设备上各配置一个单方向VC连接即可,不影响网络的运行。
与Kompella方式相比,Martini使用LDP作为信令而不是使用BGP作为信令,不依赖于定时刷新机制,所以对故障的感知速度要快。
Martini方式适合稀疏的二层连接,例如星型连接。
VC标签的交互信令
前面已经提到过Martini方式对传统的LDP做了扩展,用于交互VC的信息,也就是传递VC标签。
Martini方式中,如果要在PE间配置一条VC连接,只需在相关的两个PE上各配置一个单向连接即可。
当PE与CE相连的接口变为UP状态后,如果存在从本端PE到对端PE的LSP,那么本地PE通过LDP向对端发送一个LabelMapping消息,在此LabelMapping消息中携带新定义的VCFEC,此VCFEC描述了CE接口的类型、使用的内层VCLabel以及接口的参数等信息。
当前定义的接口参数有:
MTU、最大可拼接的ATM信元数、接口描述等。
在LDP会话中VCFEC出现在标签映射消息中,图7-11是一个标签映射消息的构造。
图1-1LDP的标签映射消息
Martini方式在PE间建立扩展的远程LDP会话,通过会话来交互VC信息。
为了交互VC信息,增加了新的FEC的定义,新的FEC类型为128。
图7-12是VCFEC构造。
图1-2128类VCFEC构造
在128类FEC类型里,InterfaceParameters是长度是不确定的,其长度信息包含在VCInfoLength里。
表1-1128类VCFEC报文字段描述
字段名
含义
位数〔bit〕
说明
VCTLV
VC的TLV值
8
取值为0x80,即十进制的128。
C
控制字
1
1表示支持控制字;0为不支持控制字。
VCType
VC类型
15
类型包括FR、ATM、VLAN、Ethernet,PPP和HDLC。
VCInfoLength
VC信息长度
8
VCID和interfaceparameters的长度。
GroupID
组ID值
32
一些VC组成一个组,主要用来批量撤消相应的VC信息。
VCID
VC的ID值
32
VCID值,一个VC是由VCID和VCType来唯一确定。
InterfaceParameters
接口参数
不确定
一些接口参数值,常用的是接口的MTU值。
Martini方式通过VCType+VCID来区分不同的VC,在Interfaceparameters局部描述了与CE连接的接口以及MTU等其它一些信息。
128类VCFEC报文就封装在本地PE通过LDP向对端发布的LabelMapping消息中。
五.Kompella方式MPLSL2VPN
Kompella方式
Kompella方式的L2VPN与RFC2547定义的三层BGP/MPLSVPN很相似,是使用BGP作为交换信令。
与MPLSL3VPN类似,各个PE之间通过建立BGP会话自动发现L2VPN的各个节点,使用BGP作为传递二层信息和VC标签的信令协议,在MPLS网络上以端到端〔CE到CE〕方式实现L2VPN。
类似于BGP/MPLSVPN,Kompella方式也使用VPNTarget来进展VPN路由收发的控制,给组网带来了很大的灵活性。
与Martini完全不同的是这里出现了真正VPN的概念,在不同的VPN内,CEID是可以一样的,但是同一VPN的CEID必须唯一。
Kompella方式的MPLSL2VPN不直接对CE与CE之间的连接进展操作,而是在整个运营商网络中划分不同的VPN,在VPN内部对CE进展全局编号。
在内层标签的分配上,Kompella方式与Martini方式完全不同。
Kompella采取标签块的方式,事先为每个CE分配一个标签块,这个标签块的大小决定了这个CE可以与其它CE建立多少个连接。
这样做的好处是允许为VPN分配一些额外的标签,留待以后扩容使用。
PE根据这些标签块进展计算,得到的实际的内层标签,用于报文的传输。
无论是使用Kompella方式还是Martini方式,二层报文传递时的MPLS封装是完全一样的,都是二层标签。
另外,Kompella支持本地连接。
要建立两个CE之间的连接时,需要在PE上设置本地CE和远程CE的CEID。
Kompella方式支持本地连接和远程连接;并支持下述两种方式的跨域L2VPN:
Multi-Hop方式:
采用BGP标签路由。
VRF-to-VRF方式:
在ASBR上保存标签块。
标签块
Kompella方式采用标签块〔LabelBlock〕分配标签,一次为多个连接分配标签。
用户可以指定一个本地CE的X围〔CErange〕,说明这个CE能与多少个CE建立连接。
系统一次为这个CE分配一个标签块,标签块的大小等于CErange。
这种方式允许用户为VPN分配一些额外的标签,短期可能会造成标签资源的浪费,但能够减少VPN扩容时的配置工作量。
假设一个企业的VPN包括10个CE,考虑到企业扩展业务,将来可能会有20个CE。
这时,可以把每个CE的CErange设置为20,预先为未来的10个CE分配标签。
以后VPN添加CE节点时,只需要在与新CE直接相连的PE修改配置,其他PE不需要进展任何修改。
Kompella方式的构造
Kompella方式的MPLSL2VPN既支持远程连接,也支持本地连接。
Kompella方式支持的拓扑构造如图7-13所示。
图1-1Kompella方式支持的拓扑模型
对于图7-13中,VPN1的Site1和Site2,通过Kompella远程连接〔红色虚线〕互连。
VPN2的Site1和Site2,通过Kompella本地连接〔蓝色虚线〕互连。
Kompella方式对各种复杂的拓扑支持能力更好,这得益于BGP的节点自动发现能力。
Kompella方式的报文交互过程
Kompella方式的报文交互过程与Martini方式的报文交互过程类似,都使用标准的两层标签。
Maitini方式的内层标签是采用扩展的LDP作为信令进展交互,而Kompella方式的内层标签那么是采用MP-BGP作为信令进展交互,两者VC表项的形式略有不同。
图1-1Kompella的连接方式
如图7-14所示,起初6个客户设备〔CE1~CE6〕接入不同的VPN。
为了使这6个CE设备可以相互通信,需要建立CE之间的全连接拓朴构造,即每个CE与其它5个CE各建立一条VC。
为建立这些连接,在这些CE接入的PE1、PE2、PE3上只要进展如下的配置:
1.在每个PE上创立VPN1,并创立PE含有的CE,如在PE1上,创立CE1、CE2、CE3。
2.为每个CE分配含有足够Label的标签块。
这里,由于一个CE和其它5个CE相连,需要分配5个label的标签块。
3.在PE上绑定与CE相连的链路名称和对端CE编号。
如在PE1上绑定
可以看到Kompella方式也可以象CCC方式二层连接一样,可以建立本地连接,PE充当交换机。
采用Kompella方式,在全连接的情况下配置简单。
此外,如果用户在开场时,为VPN多分配一些额外的标签,那么再新增加二层VPN站点时,那么只需要配置新站点所连接的PE,而不必配置其他的PE。
如图7-14所示,如果在初始时在各个PE上为每个CE分配的标签数大于6个,并且事先绑定了到CE7的链路,那么当新参加站点Site5中的CE7时,只需在PE3上增加CE7和在PE3上绑定与CE7到其他CE的链路即可。
VC标签的计算
Kompella的实现相对复杂,主要是VC标签的计算局部,本节将介绍Kompella方式下标签的计算方法。
Kompella方式的内层标签那么是采用MP-BGP作为信令进展交互,BGP交互的内容是标签块,也就是LabelBlock。
标签块是一个连续的标签X围。
为了清楚的描述标签块,需要定义几个值:
●标签块的起始标签LB〔LabelBase〕。
●块的大小LR〔LabelRange〕。
●偏移量LO〔Label-blockOffset〕。
图1-1Kompella方式VC标签块的计算
这样这个标签块就被清楚的定义了,如图7-15。
当PE上增加一个CE的相关配置时,需要指定标签块的大小LR,LB是PE自动分配的。
这个标签块作为一个NLRI〔NetworkLayerReachableInformation〕条目通过BGP传递到其它PE。
当该CE的配置被删除或者PE与该CE的连接失效,这个标签块也会被删除,BGP同样会做撤销通告。
假设在开场部署Kompella方式的VPN时,CE1需要与远端其它CE建立两条VC,那么这时定义标签块的大小不能小于2。
为了今后扩容的考虑,也可以定义Rang=10。
无论Rang为多大,随着网络的扩容VC数量的增加,总会出现标签不够用的时候。
这时候我们就需要重新定义Rang的大小,给一个更大的标签空间。
但问题出现了,前面已经介绍了标签块的数据是通过BGP的NLRI来传递的,并且这个标签块已经被用于计算VC标签和实际数据的转发。
为了不破坏原有的VC连接,采用一个方法,就是给这个CE分配一个新的标签块,并且作为一条新的NLRI通过BGP通告。
也就是说一个CE的标签空间可能是由许多个标签块组成的,这种机制解决了网络扩展的需求。
多个标签之间的关系通过偏移量LO〔Label-blockOffset〕来定义。
LO标志前面所有标签块大小的总合。
比方第一个标签块的LR为100,LO为0;第二个标签块的LR为50,那么LO为100;如果有第三个标签块,它的LO就是150。
LO会在VC标签计算被使用。
现在每一个标签块都可以用三个参数来描述,那就是LB/LR/LO。
CEID是在同一个VPN内唯一标识CE的参数。
在同一个VPN内CEID必须是互不一样的,CEID会在每一个NLRI中携带,这样就可以将不同的标签块与它对应的CE关联起来。
CEID的另一个作用是用于VC标签的计算,所以CEID不能随便选择。
简单的判断方法是本端CE配置的Range值为x,要与对端CE〔CEID为y〕连接,那么必须满足条件x>y。
否那么就需要增加x的大小。
图1-2标签块的计算
内容
定义
内容
定义
PE-A为CE-m分配的LableBlock
Lm
PE-B为CE-n分配的LabelBlock
Ln
Lm的BlockOffset
LOm
Ln的BlockOffset
LOn
Lm的Label-Base
LBm
Ln的Label-Base
LBn
Lm的Label-Range
LRm
Ln的Label-Range
LRn
VC标签的计算过程如图7-16所示。
假设PE-A、PE-B为同属于同一个VPN-x的CE-m和CE-n建立一条VC。
PE-A收到远端PE-B发过来一个标签块LBn/LRn/LOn。
1.检查从PE-B收到CE-n的封装类型是否与CE-m的一样。
如果封装类型不一致,那么停顿处理。
2.检查CEID,是否m=n,如果是m与n的值一样,那么报错“CEIDkhasbeenallocatedtotwoCEsinVPN-x〔checkCE-matPE-A〕〞,然后停顿处理。
3.如果CE-m有多个标签块,检查这些标签块是否有满足LOm<=n 如果任何一个都不满足,那么报错“CannotmunicatewithCE-m〔PE-A〕ofVPN-x: outsiderange〞然后停顿处理。 4.检查和CE-n相关的所有的标签块是否有满足LOn<=m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MPLSL2VPNVPWS 实现 方式