孙文胜,赵问吉
(杭州电子科技大学通信工程学院,浙江杭州310018)
随着社会和科技的发展,IP承载网逐渐成为下一代承载网的发展方向,满足人们对语音,视频,数据以及各种Internet业务的需求[1]。MPLS VPN作为构建IP承载网的关键技术,将IP技术和ATM技术的优势结合起来,不仅能够实现采用不同接入方式的用户间的无阻碍通信,还可将不同业务流量进行有效隔离,利用公网来传输VPN数据。目前,我国的各大运营商几乎都宣称能提供MPLS VPN业务,相信MPLS VPN会在不久的将来更广的应用于我国的企业,成为运营商间争夺企业专网用户的一个重要砝码。因此对基于MPLS VPN的IP承载网保障性措施的研究更是尤为重要。本文正是对此提出了状态机模型来保障网络的稳定性。
MPLS VPN是指基于多协议标签交换技术构建的虚拟专用网,即采用MPLS技术在公共IP网络上构建企业IP专用网络[2,3]。常见的MPLS VPN组网结构图如图1所示。
图1 常见的MPLS VPN组网结构图
(1)CE是用户网络边缘路由器,与用户端接口相连,只需将用户接入MPLS网络。
(2)PE是与运营商网络边缘路由器,保存虚拟路由转发表,负责实现路由和转发功能。
(3)P是骨干网核心路由器,主要完成MPLS转发[4]。
MPLS VPN技术具有服务质量保证,业务综合能力强,网络传输速率高,组网方式灵活,可扩展,低成本和高安全性的特点,但安全问题仍然是MPLS VPN网络不可忽视的一部分。
利用MPLS VPN构建电信级IP承载网,需要满足网络对处理不同类型业务,进行网络隔离,网络结构扁平化以及可靠性和安全性保证的要求。组网方式是通过分析流量,确定网络拓扑,确定各节点配置等步骤,并将IP承载网内业务进行不同种类划分,逻辑上采用MPLS L2VPN和MPLS L3VPN技术将这些业务进行隔离,这样便实现了专网专用且方便管理[5]。某省电信级IP承载网网络结构实例图如图2所示。
图2 某省电信级IP承载网网络结构
图2中,核心层由4个大的骨干节点组成,城市B、C、D等通过由小的骨干节点组成的汇聚层接入核心层。城市A则直接从接入层通过路由器接入核心层,整个网络实现了扁平化结构;网内的每个节点都存在备份链路,如设备a,b。且设备b通过两条专线接入不同的核心层节点,有着很高的网络可靠性;并且,每个骨干节点都是由实际情况构建的MPLS VPN。目前,各市级网络通常也采用MPLS VPN来建设。
通常在使用MPLS技术的网络中,可以采用MPLS TE技术,QoS技术,BFD技术等来保证网络稳定性和可靠性。本文提出了一种新的状态机模型来实现VLL冗余备份。
VLL是指虚拟租用线业务,即使用虚电路来区分不同用户,允许多用户共享同一链路。VLL冗不余备份模块需要正确处理收到的网络链路故障消息并反馈新的链路状态。典型的VLL冗余备份报文传输示意图如图3所示,PE与PE间为虚拟链路,由MPLS网络上建立LSP隧道后创建。从图3中可以看到,CE1到CE2存在有两条PW,分别是CE1-PE1-P1-PE2-CE2和CE1-PE1-P2-PE3-E2,其中一条为主PW,一条为备份PW。正常情况下,报文经主PW传输,备PW处于阻塞状态;一旦主PW发生故障,主备PW立刻进行切换,备PW代替主PW开始工作。
用状态机模型来维护VLL冗余备份功能,即解决在PE设备上如何维护具有VLL冗余备份功能的主备PW的状态。首先,将PW的状态定义为3种类型:UP(一对反向虚电路建立,PW能够正常转发报文)、DOWN(未建立起PW,即无法转发报文)、BLOCK(后建立的备PW将处于备用状态)。状态机设计要求如下:
(1)能够交换PE间的信息建立起PW并维护主备PW状态。因此,要求模块能够处理用于建立CE间虚电路的标签转发协议(LDP)的会话消息;
(2)使用BFD检测链路故障时,VLL冗余模块能够正确处理BFD会话消息;
(3)响应用户下达的手动切换命令,倒换PW状态。
本文根据上述要求,对繁多的BFD会话消息进行处理,提出了状态机模型。模型可抽象的表示为一种有向图,如图4所示,由节点和对应的状态转移函数组成。每个节点代表一个事件,当某节点的事件处理完毕之后,即通过状态转移函数移至下一个状态。
图3 典型的冗余链路组网结构
图4 VLL冗余备份状态机模型
首先,根据主备PW的状态,LDP和BFD会话消息类型,用9种事件来描述链路冗余备份中产生的各类消息,分别为:
(1)LDP 会话事件:LDP_MAIN_PW_UP,LDP_MAIN_PW_DOWN,LDP_BACKUP_PW_UP,LDP_BACKUP_PW_DOWN;
(2)BDF会话事件:BFD_MAIN_PW_UP,BFD_MAIN_PW_DOWN,BFD_BACKUP_PW_UP,BFD_BACKUP_PW_DOWN;
(3)用户手工切换事件:USER_PW_SWITCH。
其中的MAIN_PW,BACKUP_PW表示主备PW,UP和DOWN分别表示主备PW将要UP或DOWN的会话消息。
此外,备份链路的切换过程中,定义4中状态:
(1)IDLE状态:该状态下PE设备间可能仅有主PW或主备PW均被创建,但都不可以转发报文,即PW处于DOWN状态;
(2)NOBACKUP状态:该状态下PE设备间也可能仅有主PW存在或主备PW均存在,但此时主PW处于UP状态,可转发报文,备PW处于DOWN状态,不能转发报文;
(3)NOSWITCH状态:该状态下主备PW都被创建,其中主PW处于UP状态可以转发报文,备PW被阻塞,处于备用状态,标识为BLOCK状态;
(4)SEITCHOVER状态:该状态下主备PW均存在,但备PW可以转发报文,处于UP状态,主PW处于备用状态,标识为BLOCK状态。该状态可以和NOSWITCH状态进行相互切换。
具体描述在发生各事件时状态切换的情况:
当处于IDLE状态时,如果发生了PW创建成功事件,即LDP_MAIN_PW_UP或LDP_BACKUP_PW_UP事件,自动转入NOBACKUP状态;如果发生了PW创建失败事件,不管是主PW失败还是备PW失败,仍保持IDLE状态不变;
当处于NOBACKUP状态时,若PW状态为UP时发生PW创建失败事件,则转入IDLE状态,若PW为UP时发生PW创建成功事件或PW为DOWN时发生PW创建失败事件,则维持NOBACKUP状态不变,当PW1为UP状态PW2为DOWN状态时,如果发生PW2创建成功事件,则PW转为BLOCK状态,此时状态机进入NOSWITCH状态,当PW1为DOWN状态PW2为UP状态时,如果发生PW1创建成功事件,则状态机进入SWITCHOVER状态;
当处于NOSWITCH状态时,如果此时发生PW创建成功事件,则状态不变,如果发生PW创建失败事件,则进入NOBACKUP状态,如果主PW停止工作或者手工切换主备PW,都将进入SWITCHOVER状态;
当处于SWITCHOVER状态时,如果发生PW创建成功事件,维持原状态不变,如果发生PW创建失败事件,转入NOBACKUP状态,如果发生BFD_MAIN_PW_UP事件,备PW降级主PW升级,转入NOBACKUP状态,如果发生PW停止工作或手工切换PW事件,则转入NOSWITCH状态。
状态机在发生不同事件进入相应的状态,以此来维护VLL冗余备份的正常工作。
本文通过C语言来具体实现VLL冗余备份功能,采用二维数组结合函数指正的方法来实现状态机功能。通过定义了不同的处理函数来对每种状态下的不同事件进行处理。定义二维数组用来存放处理函数的指针,数组的下标即为4种状态和每个状态下的9种事件。对这36个处理函数进一步作优化处理,把不需要处理或与事件无关的的元素设为NULL且用同一函数的不同分支处理有着相似处理要求的事件。最后总结设计了13个函数组成状态机的实现机制。此设计具有映射快和结构清晰的特点。
本文对MPLS VPN进行概括介绍之后,又根据IP承载网的建网要求,给出了MPLS VPN建设IP承载网的优势,并且对于如何利用MPLS VPN技术构建电信级IP承载网进行举例说明。此外,本文重点介绍了用状态机来实现IP承载网VLL冗余备份功能,保证链路发生异常时的无缝切换。这种状态机的设计方法还能运用到含有几种不同状态和多种事件的实际情况中去,具有很广的应用前景。
[1] 何宝宏.IP虚拟专用网技术[M].北京:人民邮电出版社,2002:8-15.
[2] Bruce S,Davie Yakov Rekhter.MPLS技术与应用[M].北京:机械工业出版社,2001:53-66.
[3] Casey Wi isan,Deter doak.虚拟专用网的创建与实现[M].北京:机械工业出版社,2000:78-99.
[4] 栾舒涵.电信级的IP承载网建设方案[D].大连:大连理工大学,2009:27-31.
[5] 刘峻峰.第二、三层 MPLS VPN浅析[J].微计算机应用,2005,26(1):34-39.