虚拟路由器及其在MPLS VPN实验系统中的应用①
2009-01-06童静思陆松年
童静思 陆松年
[摘 要]本文提出了一种基于虚拟路由器的MPLS VPN教学系统的整体设计思路,并给出了虚拟路由器的总体设计以及模块设计和实现方法。该方案既能为用户提供了统一的网络拓扑结构,又能使各用户进行独立的配置和操作,为教学系统提供了方便且高效的实验平台。
[关键词]虚拟路由器 MPLS VPN
[中图分类号]TP393[文献标识码]A[文章编号]1007-9416(2009)11-0061-03
1 引言
为了加强信息安全人才培养的实践环节,目前急需一种支持不同层次的MPLS VPN实验系统,它可以有效满足信息安全教学实验和培训的需求,提高他们的动手能力和解决问题的能力。但是传统的MPLS VPN大都是基于实际的Cisco路由器上的,由于实验需要多台路由器,而每台路由器的成本不菲,所以传统实验的成本非常高。本实验系统采用了虚拟路由技术,在一台服务器上可以启动多个虚拟路由器,所以成本大大降低。本文在虚拟路由技术的基础上设计了一种基于虚拟网络的MPLS VPN实验系统,能够支持多用户并发控制以满足VPN教学实验的需要,同时也可以用于支持基于MPLS及VPN网络的各种实验、工程应用研究和工程仿真测试。
2 MPLS的VPN实验系统的整体设计
2.1 体系结构
图1中MPLS核心网络仿真服务器运行以下程序:三种VR进程,分别仿真PE1、PE2和P路由器;管理中心守护进程,主要功能是接收实验者和教师的操作信息,将指令解码,然后根据指令控制路由器采取相应动作,并接收各个路由器的反馈信息回显给实验者,同时,负责把相关数据保存到数据库。除此之外,还要运行Web服务器、数据库服务器,并采用JSP和Applet来开发网页,MySQL来完成数据库操作(见图1)。
2.2 功能模块框图
在系统需求及功能分析基础上,把实验系统划分为如下几个模块,如图2所示。
(1)登录验证模块:负责教师、实验者登录验证,并依据身份将他们重定向到各自的网页界面。
(2)实验交互系统模块:是实验者、教师和教学系统的人机接口,主要功能是向实验者提供实验环境,以执行实验和察看实验结果,并为教师提供管理界面。利用JSP和Mysql实现交互式教学。
(3)管理中心守护进程模块:主要功能是接收实验者和教师的操作信息,并将指令解码,然后根据指令控制路由器采取相应动作,同时具有接收各个路由器的反馈信息,并回显给实验者。除此之外,还负责将相关数据存储到数据库。
2.3 实验方法设计
本系统的两个实验分别是MPLS配置实验和MPLS VPN配置实验。为了解决多用户并发访问,同时为了节约资源,两个实验相对独立。
2.3.1 MPLS配置实验
首先,在页面上输入P(MPLS核心路由器)、PE(运营商边缘路由器)和CE(客户端路由器)的个数,根据P、PE和CE的个数建立虚拟拓扑,即启动各个路由器进程、设置路由器名称、ID和端口IP地址,并把各路由器连接起来。最后页面上将显示类似如图3所示的拓扑结构。其中p1, p2, p3为学生取的路由器名称。各个实验者的虚拟拓扑可以不一样,而且相互独立,并将相关信息存储到数据库。然后,在虚拟拓扑的基础上配置各个虚拟路由器(见图3)。
最后通过PING对方主机来判断MPLS是否建立成功,并将相应结果保存到数据库。
2.3.2 MPLS VPN配置实验
要建立VPN的前提是MPLS的核心网络必须启用MPLS,因此,本实验必须在构建MPLS网络的基础上进行VPN配置。MPLS的配置如前所述,不同之处是本实验至少要求两个学生一组,每组有各自设计的拓扑,每个学生只配置属于自己一半的网络拓扑,所有学生的配置组合起来形成一个VPN网络。
下面用一个实例来演示MPLS VPN基本配置的实现方法。图1中的CE1与CE4将构建一个VPN,为此,路由器PE1、PE2、P1、P2将配置MPLS。路由器CE被配置成VPN中的用户边界路由器。PE和CE之间采用静态路由来获得路由信息。
相关的配置如下:
MPLS配置完成后进行VPN配置,其中PE路由器将配置以下参数:
(1)定义并且配置VRF、RD;(2)定义RT,并且配置导入导出策略;(3)配置MP-BGP协议;(4)配置PE到CE的路由协议;将用户前缀加到VRF中。这可通过在PE路由器和CE路由器之间运行静态路由来实现。并根据地址族将其重新发送到MP-iBGP里。(5)配置连接CE的接口,将该接口和前面定义的VRF联系起来。
然后验证各个配置是否正确,如果正确,则把各个同学的拓扑网络连接成一个VPN网络。最后PING对方内网主机验证MPLS VPN是否建立成功,并将相应结果保存到数据库。
3 实验系统实现方法
3.1 支持MPLS的虚拟路由器的主要模块
对于一个支持MPLS的虚拟路由器,其内部模块的划分及各模块之间的关系如图4所示。其中主要包括三大部分:路由协议部分(IP协议)、控制部分(LDP协议)和转发部分(MPLS协议)(见图4)。
本文实现的虚拟IP路由器的基本功能包括:路由的计算、数据分组的转发以及访问控制列表功能。各个功能模块都受命令行控制模块的控制。
LDP协议是MPLS的控制与信令协议,这里采用RFC3036标准。该协议部分主要包括两个模块:更新出标签模块和分配入标签模块。
3.2 支持MPLS的虚拟路由器的主要模块的实现方法
3.2.1 虚拟设备及OSPF模块实现
由于我们这里是用java来实现虚拟路由器,所以对该问题的类的合理划分将是有效实现这个系统的前提。在这个系统中,我们主要定义的功能类包括:(1)OSPF协议数据结构类:OSPF;(2)区域类:AreaData;(3)接口数据结构类:Interface;(4)邻居数据结构类:Neighbor。一个系统是一个OSPF域,该域中同时运行着下面的所有类,各类的定义及功能可概括如下:
OSPF类:在这个域中同时运行着多个这样的路由器实例线程。其中主要的属性包括对路由器类型的判断,存储路由器所有区域的数据和路由表,对报文年龄和路由表计算进行控制的定时器,以及一些路由器的参数。
AreaData类:一个路由器如果是内部路由器,则它的所有接口只属于一个区域,但如果是边界路由器,那么一个路由器的接口就会分属于不同的区域。区域类主要是用来保存该区域的链路状态数据库(LSDatabase),以及一个计算该区域的最短路径树的算法实例。同时还保存了该路由器中所有属于该区域的接口。
Interface类:在一个路由器中往往运行着多个接口实例线程。在接口类中主要包括该接口的端口号,用于后面路由器之间的通信;还有邻居状态结构,用来保存它的所有邻居及其状态。这个类是整个系统的核心类,因为所有后续的数据收发和处理都以接口为单位进行。
Neighbor类:一个接口可以同时与多个路由器相连,所以要为每个邻居建立一个邻居数据结构,用于保存邻居的状态和相关参数。同时还包括了要发向该邻居的报文消息队列。
3.2.2 LDP模块的实现
在运行LDP协议后首先要在路由器之间建立LDP会话,然后才能在LSR间传输标签信息。在会话建立的过程中,要最多经历5个状态,它们是:NOT EXISTENT、INITIALIZED、OPENSENT、OPENREC、OPERATIONAL。当达到OPERATIONAL状态说明会话已经建立。
LIB、FIB和LFIB表结构定义
LIB、FIB和LFIB表在整个MPLS的运行过程中起到了重要的作用,标签的存储以及分组的转发都要涉及到对这三个表的操作,这三个表的结构可定义如下:
(1) LIBEntry:由FEC、LDP Identifier和标签构成,代表了一个由LDP Identifier所指定的路由器接口对FEC类目的地址所发来的标签;
(2) LIB表:标签信息库,包含了所有接收到的标签信息,由多个LIBEntry构成;(3) NHLFE:下一跳标签转发表项,由出标签、标签操作、下一跳端口IP和当前路由器的发送接口构成;(4) FIB表:转发信息库,是由多个FEC到NHLFE的映射(FEC to NHLFE Map, FTN)构成;(5)LFIB表:标签转发信息库,是由多个入标签(inLabel)到NHLFE的映射(Incoming Label Map, ILM)构成。
4 结语
本文提出了一个基于虚拟路由器实现的MPLS VPN实验系统的方案,为实验教学提供了一个方便高效的平台。除了实验系统,本文中实现的虚拟路由器还可以灵活地应用到更多的领域,它的发展将带动诸如实验系统,网络仿真,新技术研究等领域的发展。
[注释]
[1] C. Metz, “The Latest in Virtual Private Networks: Part I” IEEE Internet Computing, 66.
[2] C. Metz,“The Latest in VPNs: Part II” IEEE Internet Computing,113.
[作者简介]
姓名:童静思;性别:女;学历:硕士研究生;职称:学生;研究方向:现代通信 单位名称:上海交通大学。