一、引言
MPLS是下一代宽带互联网技术的发展方向,它基于标签交换并且能有效利用基于IP交换的设备。在MPLS的核心,它使用硬件设备来转发分组,从而提供速度更快、功能更完善以及扩展性更高的服务。它消除了在IP和ATM之间过多的复杂映射而且更好地支持了传统IP路由技术难以支持的QoS业务。相对IP协议基于目的地址的路由,MPLS提供基于多种因素的路由,从而更好地满足流量工程的需要。
随着互连网和企业内部网的不断发展,将分散的网络在逻辑上整合成一个大型专用网的业务需求越来越强烈,虚拟专用网(VPN)技术因此应运而生。经过近20年的发展,基于第三层的 VPN已日渐成熟。但这种技术存在明显的不足,即运营商需要介入客户的路由计划,导致客户不能自行决定网络层,从而带来了维护和应用的困难。为了解决上述问题,IETF提出了基于MPLS的二层VPN技术——虚拟专用局域网业务(VPLS),并征集草案准备将这一技术标准化。需要指出的是目前VPLS的局域网特指以太网,它结合了MPLS和以太网的双重优点,是透明的、与网络层协议无关的服务,并支持从64 kbps到1 Gbps的带宽为客户提供服务。VPLS使得用户可以直接用以太网端口来接入广域网,并且可以自行配置网络层,这一切都使得利用VPLS构建的虚拟专网安全性更高、维护更方便。
IETF目前一共收到了3份VPLS草案,它们主要的区别在于信令及组网结构的不同,简称为LDP草案、BGP草案和RADIUS草案,其中LDP草案提出最早并且已经得到众多厂商的支持。本文将详细讨论MPLS网络中基于LDP信令的 VPLS的核心技术:虚电线 (Pseudo Wire)、标签分布协议(LDP)以及VPLS的实现与组网。对基本的MPLS技术本文不作详细讨论,相关术语及原理可参考文献[1]、[2]。
二、MPLS网络中实现VPLS的关键性技术
1. 虚电线(Pseudo Wire)原理
一条虚电线由一收一发2条虚电路(Virtual Circuit)构成,它的功能是将所有的广播(broadcast)帧和跨局域网的单播帧、组播(multicast)帧从一个局域网转发到另一个局域网,使得其所连接两个局域网在数据链路层上被整合。
以太网虚电线技术的核心是帧的封装及其在MPLS网络中的传输控制。Martini等人编写的IETF草案[3]对含以太网在内的多种局域网帧的封装给予了建议。一般地,以太网数据帧可以归为2类,即普通以太网帧和带VLAN标签的以太网帧。对于普通以太网帧,封装格式如图1所示。其中隧道标签(tunnel label)用于在MPLS网络中标识一条确定的标签交换路径(LSP),该标签实际上是由MPLS网络为一个等价转发类(FEC)自动分配的标签。如果帧需要经过几个MPLS域,隧道标签将多于一个。由于同一隧道上可以承载多条虚电路,而不同虚电路上的流量在到达接收端服务提供商边缘(PE)设备后必须加以区分,然后转发给相应的用户。因此与一般的MPLS流量不同,虚电路上的流量需要增加一个标签来标识其虚电路ID。隧道标签与虚电路标签均在发送端 PE处被封装,但隧道标签在MPLS网络中可能被逐跳修改,而虚电路标签则一般维持不变直到帧到达接收端PE。在帧到达接收端PE后,隧道标签首先被剥离,然后,根据虚电路标签的值,转发帧到相应以太网端口。
有时需要借助虚拟局域网(VLAN)标签来将一个物理上联通的局域网划分成若干逻辑上独立的虚拟局域网[4]。如果VLAN标签是由客户定义的,即该标签由客户设备封装,那么含此类VLAN标签的帧的封装与普通帧一致。但虚电路标签封装在VLAN标签之外,且VLAN标签在接收端PE处不被剥离,而是直接被发送到客户局域网。另一种情况是,不同客户的局域网连接到了同一PE上,为了区分这些不同客户,需要由服务提供商来定义VLAN标签,这类标签称为服务划分(service-delimiting)标签。对于服务划分标签,Martini草案定义了2种数据处理模式。一种是擦除模式(raw mode),即在帧被送往虚电路发送之前,剥离其所有服务划分标签后再封装虚电路标签与隧道标签。另一种是追加模式(tag mode),即对不含服务划分标签的帧先封装一个服务划分标签,然后封装虚电路标签与隧道标签。由于服务划分标签只被发送端PE设备区用来区分不同客户,因此采用擦除模式或追加模式都不会对虚电路的接收产生影响。
用一收一发两条虚电路连接两个远程局域网便定义了一条虚电线。发送端PE利用 LDP信令建立隧道、虚电路及学习接收端局域网内的MAC地址集,并转达给本地CE,使得CE能够根据MAC地址将响应的帧提交PE转发。对于不能判定目的地址归属的单播帧、多播帧和所有的广播帧,发送端CE设备将在局域网内广播,发送端PE设备收到这类帧后则默认转发至接收端PE设备。因此保证了目的地址未知的帧不会被系统丢弃,其代价是损失了带宽。
2.基于标签分布协议(LDP)的VPLS信令分析
本节将主要讨论在MPLS网络中使用LDP建立标签交换路径(LSP)、虚电路及PE间MAC地址学习和维护的机制。
(1)LDP邻机发现机制
两个运行LDP的相邻路由器构成邻机。如果两个路由器中的多个接口互相连接,那么每对接口构成一对邻机。LDP邻机发现机制能够使PE发现潜在的LDP 同位体,那么就没有必要去明确地配置PE的标签交换同位体,从而降低了网络的复杂性。LDP的发现协议运行于UDP之上。如果所有的路由器都位于一个子网内,那么标签交换路由器(LSR)就周期性地组播一个HELLO消息给一个UDP端口,所有的LSR都在这个端口上侦听这个HELLO消息。因此,LSR 将发现与它直接相连的所有其它LSR。当LSR通过这种机制获悉了另一个LSR的地址时,这两个LSR之间就会建立一个TCP连接(LDP使用TCP作为可靠传输协议。当两个PE需要多个LDP会话时,每一个LDP会话将拥有一个TCP会话),那么一个双向的LDP会话就可以在这两个LSR之间建立。如果多个LSR没有直接连接于一个公共的子网,那么附加的发现机制也能够使得LSR彼此发现对方。在这种情况下,LSR周期性地单播HELLO消息给某个特定 IP地址上的UDP端口,而这个特定的IP地址必须通过其他途径获得。HELLO消息的接收者通过单播返回另一个HELLO消息给初始的LSR,那么便可以象前面所述的那样建立会话。
(2)LDP的会话和信令
如前所述,为了建立外部隧道的全网格,PE设备使用目的UDP端口来确定邻机,建立LDP会话和TCP会话,然后通过LDP请求和LDP映射消息来建立一个LSP。接下来我们详细分析LDP会话和信令。
一个LDP标签映射消息包含一个FEC类型长度值(TLV),一个标签类型长度值(TLV)和零值或者更多的可选参数的类型长度值(TLV)。在 VPLS中,一个LDP标签映射消息携带VPLS的信息,其中包括如图2所示的虚电路FEC的类型长度值(VC FEC TLV)。FEC TLV用来说明标签的含义。LDP允许每个FEC TLV包含一组FEC要素。但是为了建立和维护虚电线,每个FEC TLV必须正确地包含一个FEC要素[5]。
VPLS服务需要定义一个虚电路标识符(VCID),用来鉴别一个模拟的局域网段,它是一个非零32位长的连接标识符。VCID和VC类型一起标识一个点对点虚电线的服务。基于VCID FEC,虚电线的两个端点都独立地建立单向VC LSP,它在VPLS的环境中起始并中止于两个局域网的以太网端口, 这样就在所有的局域网间形成了一个逻辑桥(bridge),使得VPLS服务类似于IEEE 802.3 标准规定的学习桥接一样,即构成了一个“虚拟专用局域网”。
(3)MAC地址学习
VPLS桥接功能之一就是MAC地址学习。以太网的一个特征是所有的广播帧和未知目的地址的帧都会被扩散到所有的端口。为了在VPLS里实现地址扩散,所有未知地址的单播、广播和组播帧将被扩散到相应的虚电线,从而到达VPLS中相应的PE节点[6]。
举例来说,如图3所示,首先PE1获悉VPLS100中某个终端的MAC地址为X,并且依附于本地端口1,然后PE1将此信息广播给PE2和PE3,让PE2和PE3获悉在VPLS100内,MAC地址X是远程依附于PE1的端口1。当X发送一个请求到Z时,由于PE1上并没有Z的信息,此时PE1将会将此请求广播到PE2和PE3,而PE2和PE3会对本地局域网广播此请求,当PE2下的Z使用单播响应X时,PE2便获悉了VPLS100中的Z的地址,并且是依附于本地端口1。然后PE2将广播Z的信息,PE1及PE3便获悉Z在VPLS100内,远程依附于PE2端口1。用同样的方法,PE1和PE3也能学习到MAC地址Y。
每个PE设备维护一个单独的转发信息库(FIB),其中包括它所学习到的所有的地址和接口标识符,以及转发VPLS流量到这些地址所需的相关信息。在VPLS中,PE从其他PE发来的源地址中学习MAC地址。为了转发帧,PE必须能够将MAC地址与虚电线对应起来。因此,在VPLS中的PE必须有能力在物理端口和虚电路上动态地学习MAC地址,并且通过物理端口和虚电线转发和复制数据包。
3.基于LDP的VPLS实现原理
迄今为止,IETF已经收到了3份VPLS实现方案的提议。其中,Lasserre等人撰写的VPLS草案[7]是基于虚电线技术与LDP信令的方案并被部分厂商提前做为标准集成到了MPLS设备中。
如图4(a)所示,Lasserre的VPLS实现原理是使用虚电线两两连接多个局域网,局域网之间使用LDP作为控制信令,用于维护VPLS中每个 PE设备的 FIB。如果某个局域网中的终端发送帧至VPLS里其它局域网终端,那么帧首先被CE传输到发送端PE,PE会根据帧的源及目地址将其送往相应的虚电线,并且只需要经过一条虚电线,帧便到达接收端PE。在帧的传输过程中,任何设备不会也不需要对帧的路由/网络层包头进行分析,所有的封装、交换都是基于第二层的信息来完成。
通过上面的分析可知,在基于LDP的VPLS实现方案中任意两个局域网间的帧只需要经过一条虚电线便可以到达接收端 PE。实际上,任一PE也只被允许接收来自其它PE的帧而不被允许再转发这些帧。这样做的目的是为了防止网络中出现环路。由于帧永远不可能被PE二次转发,所以网络中不会出现多于两个节点的路径,从而避免了环的产生。在以太网中,一般是使用生成树(spanning tree)协议来避免环的产生[8],但在VPLS中由于成员局域网分散在MPLS网络中,使用生成树将使VPLS变得比较复杂,所以使用两两互连即所谓的全网格(full mesh)连接来避免环的产生。但是这种结构又带来了另一个问题,即随着成员局域网数目的增多,虚电线数量会急剧增长。一般地,虚电线数与局域网数有如下关系[9]:N=(n·(n-1))/2 (n为VPLS成员局域网数)。从这个公式可知,如果仅采用全网格结构来连接一个含有众多成员局域网的大型VPLS,将使虚电线数目变得十分庞大,最终导致维护苦难及设备性能下降。另外,由于未知地址的帧将会在(n-1)条虚电线上进行广播,虚电线增加将直接导致带宽的消耗。因此,对于大型的VPLS网络,必须依靠其它办法来减少虚电线的数量。
三、基于LDP的大型VPLS解决方案
以下将在讨论IETF草案建议的层次化VPLS基础上给出另外两种减少虚电线数量的VPLS的解决方案。
1.层次化VPLS
针对前面提到的全网格问题,IETF草案[6]中建议使用层次化VPLS来减少虚电线的数量,其基本思想可以总结如图4(b)。在图中,一个VPLS被划分成2部分,一部分称为VPLS核心层(core),另一部分称为VPLS接入层。构成核心层的PE设备需要增加二层交换/桥接(bridging)模块,带二层交换功能的PE被称为PE-rs(routing and switching),而仅有三层交换/路由功能的传统PE设备被称为PE-r。核心层的PE-rs之间仍然采用两两互连(Hub)的方式,而核心层的 PE-rs与接入层的PE-r设备之间使用星型(Spoke)连接方式,一个PE-r只允许有一条虚电线(冗余用途的虚电线一般设置为备份状态)与一个 PE-rs相连。因为PE-rs内嵌有二层交换功能,而虚电线在逻辑上等同于一条以太网线,因此PE-rs能够识别来自接入层PE的帧的地址字段并且能将帧按目的地转发到其它PE-r或者PE-rs。由于核心VPLS的各个PE-rs之间仍然使用两两互连结构,并且PE-rs不允许将来自核心VPLS的帧转发到其它PE-rs,因此核心VPLS内不会产生环路。但PE-rs可以将来自接入层PE的帧转发到其它PE-rs,因此必须在每个PE-rs上使用生成树协议来避免在接入层部分产生环路。这样一来,PE-rs上的二层交换功能稍微有些特殊,因为在交换上它必须对接入层侧的虚电线和核心层侧的虚电线给予不完全相同的待遇。
由于分层次VPLS的接入层没有使用全网格连接而是使用星型连接,因而大大降低了虚电线的数量。
2.多VPLS互连
依照IETF Lasserre草案中层次化VPLS的思想,我们可以设计出如图4(c)所示的一种非全网格VPLS架构。该设计没有增加草案建议以外的协议或硬件,但优于草案建议架构。其主要思想是先利用虚电线全网格连接构建含少量局域网的低级别VPLS,若干个低级别VPLS之间再用虚电线全网格连接成一个高级别的 VPLS。为了使网络结构更加清晰与便于维护,可以存在更多的VPLS级别。需要指出的是,连接高级别VPLS与低级别VPLS的PE必须是含二层交换功能的PE-rs,而且高级别VPLS与低级别VPLS之间的虚电线上流量的交换也必须按照Lasserre草案中的星型连接的交换规则来进行,即容许其转发来自全网格连接的数据。相比草案中的层次化VPLS结构,这种组网方式除了能够减少虚电线的数量而且可以更好地将已有的小型VPLS整合成一个大型 VPLS,并且结构更清晰和便于维护。
3.客户自建VPLS
客户除了可以直接使用由服务商提供的虚拟局域网业务外,还可以租用虚电线来构建自己的VPLS。一种简单的情形是客户使用虚电线将分散在各地的多个局域网星型的连接到一台中央交换机,由于虚电线在逻辑上等同于一条以太网线,因此所有的局域网等同于直接用网线连接到了中央交换机,从而构成了一个整合的局域网。此处需要注意的是,虽然分散在各地的局域网到中央交换机的距离可能很长,超过了CSMA/CD(载波侦听多路访问,冲突检测)协议的时间槽长度[10],但只要保证中央交换机端的CE设备到中央交换机的距离不超过时间槽长度即可。这种VPLS的优点是容易实现,缺点是用户必须自行对虚拟局域网进行设计与维护。当网络不大、服务商VPLS服务没开放或VPLS服务费用过高时可以采用此种VPLS实现方式。
四、结束语
本文分析了MPLS网络的虚电线技术和LDP协议的工作机制,讨论了基于LDP信令的VPLS的实现及全网格问题,研究了IETF草案的层次化VPLS解决方案,并提出了两个实际组网方案。通过理论、仿真和实验手段分析基于LDP信令的VPLS的性能及其潜在问题是下一步的主要工作。目前,基于LDP信令的VPLS已经成为IETF最有竞争力的一个VPLS方案,但它是否会成为IETF标准,还有赖于其市场占有率和设备厂商的支持力度。不过可以肯定的是VPLS将作为下一代宽带通信网络的热点技术得到发展与广泛应用。
源:http://www.huacolor.com/article/6844.html