2024年5月4日发(作者:)

虚拟路由器及其在BGP/MPLS VPN中的应用研究

【摘 要】在研究了虚拟 IP路由器及MPLS技术的基础上, 设计并实现了

支持 MPLS功能的虚拟路由器,对该虚拟路由器在BGP/MPLS VPN系统中的应

用进行了研究,提出了一种有效的BGP/MPLS VPN实验系统的实现方案,该方

案既能使各用户进行独立的配置和操作,又给所有用户提供了统一的网络拓扑结

构,同时还使得软件资源的消耗相对较少,有效地解决了大规模多用户并发操作

所带来的问题。

【关键词】虚拟路由器;OSPF;多协议标签交换;LDP;BGP

1.虚拟IP路由器及其实现方案

虚拟IP路由器是指用来模拟真实IP路由器路由功能的应用软件。本文实现

的虚拟路由器,其特点是在一台主机上能够同时运行多个路由器,支持多用户的

并发操作。通过用户的配置,能够模拟不同拓扑结构的网络的运作过程。与实际

路由器相比,由于是通过软件来实现,其速度和所支持的用户数量会受到一定的

限制。但这项技术大大减少了运营的开销,并且还提高了网络配置的灵活性,给

网络的模拟、测试提供了很好的技术背景。

1.1虚拟IP路由器内部结构设计

本文实现的虚拟IP路由器的基本功能包括:路由的计算,数据分组的转发

以及访问控制列表功能。各个功能模块都受命令行控制模块的控制。当路由器接

收从其它相邻的路由器或直连网络接收到数据时,首先判定是什么数据类型,如

果是链路状态数据报文,则将进入路由计算模块,在适当的时候要用SPF算法

进行最短路径的计算;如果数据是普通TCP数据包时,则首先进入访问控制列

表模块,若该数据包未被拒绝,则将进入数据转发模块,转发给其它相邻的路由

器或直连网络。

1.2虚拟路由器的 Java 实现

本文以 OSPF 路由协议(RFC2328)为例进行设计,使用的开发语言是 Java,

这是一种面向对象的开发语言,以虚拟IP路由器为基础设施的网络在运行过程

中用到的对象主要分成以下几类:(1)OSPF类、(2)AreaData类、(3)Interface

类、(4)Neighbor类、(5)SPF类。

2.支持 MPLS的虚拟路由器的设计与实现

普通的路由器只能简单地根据路由协议产生的路由表,再结合数据包的第3

层网络地址来进行数据包的转发。在对路由器加了MPLS功能后,就能把路由

表转化成相应的标签交换表,使得数据的转发只与标签有关,而不会去解析第3

层的网络信息,这对提高数据转发的安全性提供了保障。

2.1支持MPLS的虚拟路由器的总体设计

对于一个支持MPLS的虚拟路由器,结构主要包括两大部分:

控制部分(LDP协议)和转发部分(MPLS协议)。

LDP协议是MPLS的控制与信令协议[2]。该协议部分主要包括两个模块:

更新出标签模块和分配入标签模块。更新出标签模块在收到标签绑定信息后,把

该信息放入该路由器的标签信息库(Label Information Base,LIB),如果发送该

信息的路由器是该路由器的下一跳标签交换路由器(Label Switching Router,

LSR),还要用该信息更新标签转发信息库(Label Forwarding Information Base,

LFIB)和转发信息库(Forwarding Information Base,FIB)中的出标签信息。而

对于分配入标签模块,在运行OSPF协议的同时,对路由表中的每一个目的网络

都进行FEC分类,并对其加上本地的标签绑定信息,也就是入标签,并将该标

签信息放入LIB、LFIB和FIB中。再把该本地标签绑定信息发送给所有与其相

邻的路由器(这里采用的是下游未被请求标签分配模式)。

当收到的不是控制消息,即是普通的数据包时,则直接进入分组转发模块

(MPLS协议[1]部分)。由MPLS分类器决定查找LFIB、FIB或路由表,得到该

路由的下一跳地址、发送的接口和标签操作。对数据包进行标签操作后,就放入

发送队列,等候转发。如果对应该数据的标签交换路径(Label Switched Path,

LSP)信息不存在,则分组数据进入IP路由部分的数据转发模块进行第3层的

数据转发。

2.2支持MPLS的虚拟路由器的实现方案

2.2.1分配入标签模块

在运行 OSPF 协议的同时,也运行着LDP协议。MPLS网络中的 LSR将

趋向于路由表、LIB、FIB和LFIB的动态平衡。每当往路由表中添加一个到达目

的网络的表项时,就为其分配相应的入标签。

2.2.2更新出标签模块

当路由器接口收到其它路由器的标签绑定信息时,如果发送方是当前路由器

的下一跳 LSR,则要更新相应的出标签信息。

2.2.3分组转发模块

当路由器接口收到普通数据分组时,分组将进入MPLS分类器中,先判断

该分组是否带了标签,如果是带标签的分组,则查找 LFIB 表,查找对应的LSP、

出标签和标签操作,并进行分组转发,相应的标签操作应该是标签交换(Swap)

或标签弹出(Pop)。如果不是带标签的分组, 则首先查找 FIB 表,若 LSP存

在,则进行与上类似的处理,相应的标签操作应该是标签推入(Push),若对应

的LSP不存在(原因可能是未完成LDP 协议的启动等),则查找路由表,对分

组执行第3层转发。

3.虚拟路由器在 BGP/MPLS VPN 实验系统中应用

3.1网络拓扑的配置

为了适应大规模多用户并发操作的要求,需要选择合适的网络拓扑配置方

案。首先,本文实现的虚拟路由器支持在同一台主机上运行多个路由器线程,而

路由器之间的通信是通过socket来实现的,故其所支持的用户数量会受到一台主

机上线程和端口数目等资源的限制。其次,在大规模多用户并发操作的过程中,

每个用户都要独立配置自己的网络拓扑,这导致的问题是每个实验者看到的网络

拓扑是不同的,也即实验者之间不能传送数据。 因而需要寻求这样一个配置方

案,它既能让用户进行独立的配置和操作,又能提供统一的拓扑结构,同时还要

使软件资源的消耗尽量少。

3.2 VRF 的配置

PE 路由器要为每个CE路由器进行VRF表的配置,用于识别各 CE所属的

VPN。对于每一个VRF表,都需要配置路由区分符(Route Distinguisher,RD)

和路由目标(Route Target,RT)两大属性。当PE路由器上的某个子接口属于多

个VPN,则多个VPN共享一个RD,CE1、CE3以及CE1、CE2之间的VPN就

共享一个RD值。

4.结论

本文在研究了虚拟技术及MPLS VPN技术的基础上,设计并实现了具有

MPLS功能的虚拟路由器,并提出了一个实现BGP/MPLS VPN 实验系统的方案,

解决了在多用户并发操作的情况下,软件资源的有限性和用户操作的独立性之间

的矛盾。在这基础上,可以进行各种网络的仿真和测试工作,甚至可以构建起一

个网上虚拟实验室。在 IPv4 逐步向 IPv6发展的过程中,本文下一步的工作方

向将是考虑如何把这些技术逐步向 IPv6过渡,如何进一步利用 IPv6 的安全特

性和QoS 特性来加强MPLS VPN的性能。 [科]