基于ATM的MPLS仿真模型的总体设计
发布时间:2006-10-14 7:09:06   收集提供:gaoqian
伍俊洪,林孝康

清华大学 微波与数字通信国家重点实验室


  摘 要:讨论了基于ATM的MPLS仿真模型的总体设计和实现。该设计基于OPNET的模型库基础上完成。实现的模型可以丰富OPNET仿真模型库,可以为使用OPNET进行有关基于ATM的MPLS仿真研究提供了一个途径和基础。

  关键词:计算机网络;ATM-MPLS; 仿真模型;模型设计

一、引言

  在网络性能仿真研究方面,OPNET公司作为世界最为成熟的网络仿真工具公司,为网络运营商和技术研究人员提供了先进的仿真工具软件和大量的各种仿真模型库。但在MPLS仿真模型方面,由于各种原因目前的标准模型库(OPNET 8.1A PL3)里面没有基于ATM的MPLS(ATM-MPLS)仿真模型。但是,OPNET的仿真工具OPNET MODELER为我们提供了开发自己模型的工具和方法。由于OPNET的设备模型都是非常复杂的,要实现ATM-MPLS模型涉及各方面的知识和问题。在工作中,我们进行了ATM-MPLS及其仿真模型设计研究,并利用OPNET工具和基于IP的MPLS (IP-MPLS)模型进行了ATM-MPLS模型的实现探索。设计完成的ATM-MPLS模型能够完成基本的ATM-MPLS功能和MPLS的VPN功能以及Diff_Serv功能等多种功能研究。

  下面的部分将讨论有关ATM-MPLS模型整体设计的问题,不涉及具体细节。

二、设计基础

1. ATM-MPLS交换机结构

  ATM-MPLS 交换机用OSPF、LDP等控制协议来取代ATM的PNNI、Q.2931等控制协议,同时采用ATM交换机的硬件来完成交换处理工作。ATM交换机硬件直接使用MPLS LDP分配的标签进行交换处理,使用OSPF完成路由选择和寻址处理。ATM-MPLS的LER结构如图 1。ATM-MPLS LSR结构相对LER来说没有FEC划分模块。



  ATM-MPLS交换机中有多种实现方式,我们在研究ATM-MPLS交换模型的时候将实现下列情况的MPLS交换机的模型:

  (1)使用于采用直接连接方式连接网络。不混合ATM;

  (2)非MPLS包,通过默认VPI/VCI=0/32信元传送;

  (3)选用LDP为控制信令;

  (4)选用OSPF和BGP为路由协议;

  (5)交换机不支持VC标签合并;

  (6)MPLS包和非MPLS包都使用RFC2684中AAL5的NULL封装。

  LDP信令模式运行模式情况如下:

  (1)下游按需请求有序控制的标签分发方式;

  (2)保守标签保持方式;

  (3)支持ATM-MPLS中TTL处理机制;

  (4)支持ATM-MPLS中分布路径向量环路检测机制。 2. IP-MPLS模型

  OPNET中具有基于IP的MPLS标准模型(IP-MPLS模型)。它也是基于标签来完成交换的,而且在交换中只是标签有效,其它IP包的字段无效,这和ATM-MPLS交换是一致的。因此,在设计ATM-MPLS仿真模型中可以参考借用IP-MPLS仿真模型。IP-MPLS模型中有许多模块和模块下面的进程模型可以直接利用或者改进后用于ATM-MPLS模型当中。原来的IP-MPLS模型实际是一个非常复杂的设备模型,可以支持多种功能。在实现上面描述的ATM-MPLS模型时,只是需要其中的一部分模块和进程模型。图 2是要使用部分的IP-MPLS模型的整体模型内部拓扑。下面是设计中涉及到修改的模块功能介绍:

  (1)IP模块:完成IP转发处理、ICMP处理等处理以及IP-MPLS中的MPLS标签交换处理的整个过程。这个模块是IP-MPLS模型的核心部分。它统一协调整个模型的运行,整个模型的全局数据也在这个模块模型中定义维护:接口表,路由转发表,标签空间,LSP的NHLFE表等。这些全局的数据结构定义为Ip_Rte_Module_Data类型的数据结构指针变量。通过在模块根进程(ip_dispatch)中实现为QP_level memory。本模块里面的所有进程可以直接访问,其他模块下面的进程通过OPNET的process registry技术来完成访问。

  (2)LDP模块:完成基于IP的MPLS的控制信令功能。分配的标签结果和建立的LSP将被IP模块访问使用。



  ATM-MPLS和IP-MPLS的最大不同点在于: 传送包格式不同;信令(LDP等)包传送处理方式不同;出入栈时的MPLS处理不同;LDP工作方式不同;TTL处理方式不同。

  其中前面三者是关键,是关乎整体的,下面的模型设计描述中,将着重描述前面三者。

三、ATM-MPLS模型设计

1总体设计思想

  在IP-MPLS模型基础上来实现ATM-MPLS模型时,可以充分利用OPNET的IP-MPLS模型中的MPLS处理功能和LDP标签分发功能。但同时由于ATM-MPLS和IP-MPLS在交换机硬件结构和协议工作模式以及MPLS实现上有所不同,在设计中需要总体上重新设计,使得满足前面叙述的ATM-MPLS交换机的情况。为了实现ATM-MPLS交换机模型,整体设计如下:

  (1)使用IP-MPLS模型中ip包的模型(ip_dgram_v4)来模拟各种ATM信元,这样可以利用IP-MPLS中IP模块中的交换功能和MPLS处理功能。ATM-MPLS模型中IP数据包也使用ip_dgram_v4模型来模拟。到底仿真的是那一种包(IP)或者信元(ATM),使用ip_dgram_v4模型的中识别字段来标识。这就需要对包格式进行扩展并且动态修改包长度来使得实际长度符合信元或者IP包应该有的实际长度。LSR完成ATM信元标签交换时仍使用中MPLS Shim Header字段中的VPI/VCI值进行交换。各个字段含义在两种情况下各不相同。

  (2)在ATM-MPLS中需要完成对到达的IP包或者MPLS包进行分段封装的功能,这就需要增加一个完成AAL5的分段封装以及组装功能的接口模块。考虑到充分利用IP-MPLS模型,特别是在IP模块中要集成IP处理和对ATM信元的MPLS处理和拓扑结构,在LER模型中还要对IP包进行MPLS处理,因此封装模块将被放在IP模块和收发模块之间。模块中可能传递上述描述的两种包模型,模块根据不同的包类型(由识别字段指出)进行不同的处理。

  (3)在ATM-MPLS交换机中,对于LDP、路由信令包(LDP等)的传输和IP-MPLS很不相同,这里需要通过默认VPI/VCI(0/32)标签的ATM信元来传输,到下一个站需要进行重组。ATM-MPLS模型设计中,对于默认VPI/VCI的信元使用专门的包类型完成(由识别字段指出),它们和使用LDP分配VPI/VCI值的信元就是通过不同的包类型来区别的。

  (4)IP模块原来只是完成IP包的转发处理和对IP的MPLS处理。现在,它要完成IP处理,对IP包的MPLS处理,对ATM信元的交换处理。其中MPLS处理在边缘LER处针对IP包工作,同时要完成针对ATM信元的出栈重组等处理;在中间LSR将针对ATM信元进行交换处理。这就需要修改IP模块内部IP处理进程和MPLS处理进程,使得它们符合ATM-MPLS的情况。

  (5)由于两种MPLS中LDP的工作方式不同,因此需要修改LDP模块里面的进程模型,使得LDP的工作模式适合ATM-MPLS工作模式。但由于它的修改只是涉及LDP模块内部进程,而且不改的话不影响验证模型其它部分的设计。

  (6)由于ATM-MPLS模型中LER和LSR要完成不同的工作,因此,在两种情况下,各个模块(特别是IP模块以及ATM-MPLS模块)执行的操作不同。但是它们都通过模块下面的相同进程完成,具体通过节点属性来控制不同代码段执行完成不同功能。这使用两种属性:ATM-MPLS-LSR和ATM-MPLS-LER。

2模型结构设计

  基于上面的设计思想,ATM-MPLS LSR设计拓扑框图如图3所示。LER模型在节点层次上基本和LSR相同,不同点在于同时提供IP接口。IP接口通过将IP模块和收发模块直接相连。IP 模块下面的进程模型能够根据到达的不同包进行区别对待,对它们进行不同的处理。



  在模型设计中,对实现ATM-MPLS模型中的关键模块(以及下面进程模型概况)设计情况如下:

  (1)IP模块:基于IP-MPLS模型中的IP模块模型和进程模型开发,名称仍然为IP。它仍然维护着整个节点的运行,所有的节点接口数据,共享数据。在ATM-MPLS模型中,该模块和下面的进程模型改为同时实现IP层处理和对ATM信元的MPLS交换处理以及对IP包的MPLS处理功能。在新的模块模型设计中,关键要完成IP和MPLS处理的模块内部分离问题。

  1)在完成IP层处理功能时,LER和LSR分别完成如下功能:

  在LER节点中,完成IP层的整个转发处理功能,包括完成IP数据包接纳、转发、排队和丢弃等处理功能。IP模块读取IP数据包头中的目的地址信息和其它相关字段信息,通过查找路由表将数据包转发至相应接口模块,或者将从接口模块接收到的数据包转发至上层IP封装模块。

  在LSR节点中,完成IP层的部分功能,主要是IP的数据包(主要是LDP等信令包)转发功能。完成信令包等到ATM接口的适配、转发功能,使得它们可以通过默认VPI/VCI信元进行传送。

  2)在完成MPLS处理功能时,LER和LSR分别完成如下功能:

  在LER节点中,这个模块完成MPLS层次的基本处理,比如FEC的划分,FEC到LSP的解析,以及NHFLE的创建和维护。通信中完成流量合约的检查,TTL的处理,以及用于ATM-MPLS的 标签入栈(这里预分配标签,然后通知ATM-MPLS模块中插入到ATM信元)处理,出栈处理,以及出栈时的重组处理。通信中的处理和IP-MPLS模型不同,需要对mpls-mgr进程修改。

  在LSR节点中,这个模块中要完成MPLS层次的基本处理,比如FEC的划分,根据LDP模块情况完成FEC到LSP的解析,以及NHFLE的创建和维护。通信中完成ATM-MPLS信元的VPI/VCI交换功能。

  3) 修改后模块模型,主要通过3种进程来实现:

  ip_dispatch 进程:模块根进程,完成数据结构出初始化和整体维护 以及子进程的创建。

  这里只需要修改一点使得能够同步ATM-MPLS模型中的进程的初始化和执行过程。

  ip_rte_central_cpu: 完成IP的处理和转发功能。同时由于原来IP-MPLS中MPLS处理的包也需要经它转交到mpls_mgr进程,这里需要修改,使得适应对IP和MPLS两种处理分离的情况。这是一个关键点。

  mpls_mgr:完成MPLS处理功能。在LER节点中,相对IP-MPLS模型增加对TTL的特殊处理,出入栈的处理方式改变,出栈的重组。这里是修改重点。

  (2)LDP模块:基于IP-MPLS模型中的LDP模块的进程模型实现。完成LDP标签分发协议规定功能的仿真模拟。通过会话消息数据包在交换节点模型之间协商MPLS标签交换空间,为节点模型中的FEC转发等价类分发转发标签,完成建立MPLS标签交换路径LSP的功能,通知IP模块中mpls_mgr进程使用。修改后LDP的工作模式将和前面描述的模式相同,在这里不在详细叙述。

  (3)ATM-MPLS模块:模块和下面的进程完全重新开发,实现ATM的各种接口功能,包括AAL5接口功能、NNI接口功能,还包括部分ATM层功能。在设计中,上下行要区别对待(上行指到IP模块方向,下行指到收发模块方向)。

  1)下行时,如果包是未封装为信元的包,进行AAL5封装,封装为ATM信元,按照IP模块中mpls_mgr进程处理结果,需要插入标签时插入标签。如果包是ATM信元则直接进行转发到收发模块。

  2)对于上行的信元,如果是默认VPI/VCI信元(识别标识不同),则进行重组,然后交给IP模块的ip_rte_central_cpu进程进行IP处理。如果不是VPI/VCI信元(识别标识不同),则直接交给IP模块的ip_rte_central_cpu进程然后转交mpls_mgr进程,根据VPI/VCI值进行MPLS转发处理。

  3) ATM-MPLS模块的处理进程:ATM-MPLS进程。 3.IP数据包和ATM信元模型结构设计

  在ATM-MPLS模型中使用的ip_dgram_v4包模型,由原来OPNET模型中使用的ip_dgram_v4包修改扩展而成。增加前面模型总体设计中要求的字段。整个数据包的定义如图 4。扩展中增加了ATM的负荷字段(ATM_DATA)和包类型的识别字段( popped_ip)以及其它辅助域字段(push_label和inside)。在不是当作ATM信元时,扩展的字段ATM_DATA、popped_ip、push_label、inside字段无效。在IP包到ATM信元封装过程中以及转发和重组中,它们有效。在封装时,要使用函数动态强制设置各个字段长度和以及将信元长度改为53字节,使得符合ATM信元的实际情况。



4. 模型关键接口设计

  在ATM-MPLS仿真模型中,各个模块通过packet和ICI 来通信,各个模块之间的通信所用的packet和ICI各不同。其中在IP模块和ATM-MPLS模块之间的接口是在开发ATM-MPLS模型时重新定义开发,其它的接口使用原来OPNET的IP-MPLS模型自己定义的接口。在这里,只说明新定义的接口之间的通信处理过程。

  节点模型之间传输的是ATM格式信元。节点模型内部在IP模块和ATM-MPLS模块之间可能传送两种格式的数据包:ATM格式信元和IP格式包。ATM-MPLS模块和收发模块之间收发ATM格式信元。IP格式包的模型和ATM格式信元的模型都共同使用前面定义的包格式模型(ip_dgram_v4)来模拟。在ATM-MPLS仿真运行中,两个模块之间通信情况如下:

  (1)IP模块(ip_rte_central_cpu进程或者mpls_mgr进程)将没有封装成ATM信元的IP包传递给ATM-MPLS模块(在LER和LSR中发生)。ATM-MPLS模块(ATM-MPLS进程)通过获取popped_ip和push_label、inside字段信息以及其它相关信息来指导完成包类型的划分,然后进行ATM信元封装,必要时封装根据IP模块中mpls_mgr进程处理结果插入标签。在划分和封装后都要通过popped_ip字段值标注相应时刻包的类型。

  (2)IP模块直接将经过内部mpls_mgr进程处理的ATM信元转发给ATM-MPLS模块(在LSR中发生),ATM-MPLS模块直接将它们转发到收发模块。

  (3)ATM-MPLS模块将需要重组的ATM信元(默认VPI/VCI包类型)重组为IP包(在LSR和LER中发生),发送给IP模块由ip_rte_central_cpu进程进行IP处理。

  (4)ATM-MPLS将不需要重组的ATM信元(非默认VPI/VCI的包类型)交给IP模块由mpls_mgr进程进行MPLS处理(在LER和LSR中发生)。处理中根据使用MPLS Shim Header字段中的VPI/VCI值进行交换处理。

四、模型整个通信处理过程示例

  根据前面的设计和具体实现,一个IP包在OPNET仿真中整个通信的处理过程总结分为3个阶段:

  (1)在LER和LSR的封装过程中,一般的包进入IP模块进行识别,再到ATM-MPLS模块中进行分类,最后完成封装。映射过程如图 5。图中数字表示我们实现的模型中popped_ip表示字段的值。0表示未处理的包。1~5表示经过分类的IP包或者携带IP-MPLS标签的MPLS包,其中同时指示是否加入标签,来自哪里。6~9是和1~5对应的封装好的ATM信元。具体设计中的映射值可以由具体实现者来分配。



  (2)在LSR交换过程中,根据为默认VPI/VCI ATM信元或非默认VPI/VCI ATM信元,在ATM-MPLS模块中进行重组或不重组,然后交给IP模块进行IP处理或者MPLS交换处理。

  (3)在LER的重组过程中,和LSR交换基本相同,最后当默认VPI/VCI ATM信元交给IP模块进行MPLS处理时,需要进行重组工作。

五、总结

  本文在研究了ATM-MPLS协议和交换及结构基础上,提出了一种ATM-MPLS仿真模型的总体设计,具体设计在我们的研究中也得到了实现。该研究为进一步的ATM-MPLS仿真研究提供了基础。上述设计还有很大改进前途,特别是在IP模块的IP处理和MPLS处理分离方面。进一步的研究设计中,可以考虑将两者的功能完全分离到两个模块中完成。

参考文献 

[1]OPNET Modeler Documents[Z]. OPNET Technologies, Inc.

[2]RFC3031,多协议标签交换结构[S].

[3]RFC3035,使用LDP和ATM VC交换的MPLS[S].

[4]YD/T-1162.1—2001,多协议标记交换(MPLS)总体技术要求[S].

[5]YD/T-1162.2—2001,在ATM上实现MPLS的技术要求[S].

 [6]RFC2684,AAL5上的多协议封装[S].


----《通信世界》
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50