高 明, 金 蓉, 王伟明, 诸葛斌, 董黎刚
(浙江工商大学 电子与信息工程学院,浙江 杭州 310018)
随着软件定义网络(Software Defined Network,SDN)研究的兴起[1-2],转发和控制分离(Forwarding and Control Element Separation,ForCES)技术获得了极大的关注。ForCES路由器的数据转发面和控制面在物理上分离,在路由处理问题上转发面和控制面的分工十分明确,转发面由多个转发件(Forwarding Element,FE)组成,主要负责数据包的快速路由查表和转发;控制面上的控制器(Control Element,CE)负责具体的路由计算、产生路由表并分发到各FE[3]。与之相似的是,在开放网络领域XORP[4]构建了一个可扩展的开放路由器平台,该平台功能齐全,可支持OSPF, RIP, BGP,OLSR, VRRP等协议,足以满足三层网络设备的一般性需求。XORP对第三方软件系统提供了开放的接口,能够无缝地集成到ForCES中,从而减少ForCES系统实现过程中路由协议的开发工作,这也正是ForCES开放性的重要体现。与ForCES逻辑功能块(Logical Function Block,LFB)[5]思想类似,Click[6]根据数据包在路由器中受路由器各功能模块作用而引起的包内容或传输方向变化,从而对路由器功能实施抽象,将各功能抽象成独立的组件,Click的最大特点是体系结构模块化、高度灵活,但并没有涉及对路由协议如何实现。研究后发现,转发和控制的分离,在下一代网络设备的体系结构设计和网络管理中将是一种常态,因此在ForCES框架下研究路由协议栈的实现问题有着重要的现实意义。
目前IETF ForCES工作已经完成了框架(Framework)、需求(Requirement)、协议(Specification)、FE模型(FE Model)的标准制定工作[7-10],相关研究机构也推出了集成了ForCES技术的中间件软件[11],即ForCES中间件。ForCES中间件主要实现了:① ForCES协议所需完成的ForCES协议数据包的封装、解封装和相关的逻辑关系;② FE上相关LFB的注册及其属性管理,LFB事件的订阅与上报;③ CE上LFB及其属性信息的存储与管理,解析用户操作管理层来的用户操作命令。ForCES中间件的出现给ForCES架构的网络设备的开发与实现带来了极大的方便,然而现实的问题是ForCES系统中,与转发面分离后的控制面如何和外界进行路由信息的交互,以及如何实现多FE间路由协调。
ForCES系统开放性的一个重要体现表现为CE和FE间的信息交换是根据ForCES协议标准进行的。ForCES协议规定了CE和FE间交互的两种消息:控制消息和重定向消息。控制消息是包含CE对FE控制管理内容的消息,例如属性的配置和查询消息,能力和事件的上报消息[12]。重定向消息是包含CE上所处理重定向数据包的消息。从字面上理解,“重定向”数据包指的是那些不是FE产生的数据包,而是从外部到达FE,需要由FE“重新定向”到CE进行处理的数据包;或者是CE产生的,需要经FE“重新定向”到网络设备外部的数据包。可能需要CE处理的数据包,主要有路由协议数据包和网络管理数据包等。
ForCES系统中,采用重定向机制实现路由协议信息的交互如图1所示。CE读取LFB的属性,添加并配置虚接口,使虚接口与FE的物理接口唯一对应,同时保证两者间的IP地址和子网号完全相同。CE包含了ForCES中间件、路由转化适配器、虚接口模块、IP隧道和第三方路由协议软件:① ForCES中间件实现了控制消息和重定向消息的处理和传输,ForCES协议所需的消息的分装、解封装;② 路由转化适配器实现了路由条目到LFB属性的映射和路由表的下发;③ 虚接口模块实现了FE上的物理接口和CE上的虚拟接口之间的映射及管理;④ IP隧道实现了ForCES中间件与操作系统内核间的通信;⑤ 第三方路由协议软件执行路由算法并计算路由;
ForCES系统中路由协议信息的接收过程是由外部路由器中的路由协议软件(如OSPF等)发起的,包含了路由协议信息的IP包通过FE的物理接口进入ForCES系统,具体包含如下步骤:
(1) FE在IP包头部之前添加元数据,元数据由FE ID、物理接口ID和长度字段组成,长度字段表示元数据的长度,每个FE ID和物理接口ID的组合唯一地确定一个虚接口;
(2) FE中的ForCES中间件按照ForCES重定向消息的封装格式,对步骤1所述的含有元数据的数据块进行封装,在数据块头部之前添加ForCES重定向消息头,然后通过重定向通道发送至控制件;
图1 ForCES系统的软件结构
(3) 控制件中的ForCES中间件在剥去步骤2所述的ForCES重定向消息头之后,继续剥去元数据并从中提取FE ID和物理接口ID,查找虚接口名,将所得虚接口名添加到步骤1所述IP包的头部之前,然后进入IP隧道;
(4) IP隧道中在步骤2-3所述的包含虚接口名的数据块的头部之前添加隧道IP头,发向IP隧道的对端;目的IP地址为第三方路由协议软件所在主机的IP地址;
(5) IP隧道的对端将剥去隧道IP头,将包含虚接口名的数据块交付与虚接口模块;
(6) 虚接口模块从数据块头部剥去虚接口名,得到步骤1所述的IP包,之后再剥去IP包的头部,根据虚接口名将IP包中所包含的路由协议信息放入虚接口的接收队列;
(7)第三方路由协议软件从虚接口的接收队列中读取路由协议信息。
CE中的第三方路由协议软件根据所获得的路由协议信息,执行算法计算并生成路由表。ForCES系统中路由协议信息的发送过程,由控制件中的第三方路由协议软件主动发起,目的地是外部路由器,其过程是上述过程的逆过程。
图1中,ForCES系统内的路由协议栈在运行的过程中,需要处理两种消息:控制消息和重定向消息。当路由协议栈和外部的路由器进行路由协议交互时,使用重定向消息通道,而当ForCES内的路由协议栈将产生的路由同步到各FE时,则使用控制消息通道。
在各种路由系统中,路由表的组织形式各不相同,分为两大类[13-15],所包含信息各不相同:① 集成式,使用一张表存储路由,表中每一项包含信息:目的网络、掩码、下一跳、出接口号、协议标志位、度量;② 分立式,维护两张子表:前缀表、下一跳表,其中前缀表包含了目的网络、掩码和下一跳索引,下一跳表包含了下一跳索引、出端口ID、出端口IP、标志位、MTU、下一跳IP,两张表之间分别通过下一跳索引彼此关联,一定程度上降低了路由表中信息的重复存储。
通常CE上的路由协议栈采用集成式路由表,而FE采用分立式路由表,为了弥补两者间的差异,在图1中引入了路由转化适配器,其详细软件结构如图2所示。路由转化适配器将控制件中的路由表的下发过程转化成逻辑功能块的属性配置操作,具体步骤:① 通过Netlink从操作系统的内核空间中读取路由表;② 将路由条目中的每一项映射为逻辑功能块的一个属性;每一个路由条目中都有包含一个出虚接口,通过该虚接口可以唯一地确定FE ID和物理接口ID;③ 通过ForCES控制消息通道,发送逻辑功能块的属性配置消息至相应的转发件。
图2 路由转化适配器的结构图
如图2所示,CE上的第三方路由协议栈所产生的路由存在于Linux内核,而集成式路由访问器通过Netlink实现与Linux内核之间的双向通信,读写内核中的集成式路由。路由转换器将集成式的路由条目转换为分立式,而分立式路由操作过程会涉及到前缀表、下一跳表的修改,其中前缀表、下一跳表分别是ForCESLPM、Next Hop LFB一个属性。ForCES路径映射模块计算前缀表、下一跳表所对应的ForCES Path。Path计算中比较麻烦的是如何定位该路由应发往的目的FE,需要从虚接口信息中提取出包含FE ID和物理接口ID。分立式路由分发器根据收集到的Path和两张表的内容,将分立式路由操作映射到ForCES LFB的属性配置。
图3所示实验室拥有的ForCES实验床,对所述重定向和路由同步机制进行测试和评估。图中ForCES路由器的一个端口(即FE 12的Port 2)与SmartBits网络测试仪中的SMB1-2端口相连。使用Tera RoutingTester测试软件添加模拟的网络拓扑,启动SmartBits内部的路由协议OSPF。在CE端配置路由协议栈,使得FE12的另一个端口运行OSPF路由协议。
图3 测试环境拓扑
路由协议包在重定向通道中需进行反复地封装和解封装,尤其是路由规模达到一定程度后,这必然会带来系统在计算时间上的额外开销,但是这种开销必须是适度的。图4(a)给出了CE上路由协议软件分别在不使用和使用重定向机制情况下的收敛时间,图中不难发现当路由条目数在300以内时,尽管后者相比较前者在收敛时间有所增加,但是十分接近,这说明重定向机制的带来的开销很小;然而当测试的路由规模继续增加,后者的曲线明显上扬,说明重定向的影响逐渐显著,其中路由条目数为640时,前者的收敛为18 s,而后者却高达50 s左右。
在CE上路由协议已经完全收敛的情况下,图4(b)给出了CE与FE之间的路由同步时间,该时间是RTA将CE上的路由下发至所有FE所需的时间,曲线表明随着路由条目数的增加,CE-FE的同步时间也随之增加,在不超过500条的情况下,其基本满足线性特征,接近于一条35°的斜线,每20条路由的增量约需要8 ms的时间开销,然而随着路由条目数的进一步增加,受到CPU和内存负载等影响,线性特征逐渐丧失,同步时间也快速增加。当路由规模数到达620条时,同步时间为618 ms,仍在可接受的程度之内,对整体性能没有带来巨大影响。
(a)CE上路由协议的收敛时间(b)路由同步时间
图4 测试结果
在“计算机网络”后续的教学活动中,积极引导学生开展下一代网络相关技术的研究,既可以开拓学生的视野又可以与时俱进地保持对网络未来发展的感知。论文基于已公开发布的ForCES中间件软件,以系统集成的方式在ForCES系统中实现路由协议,该过程融合了“计算机网络”、“操作系统”和“C语言”的核心知识点,能够调动学生的积极性,可作为网络工程专业高年级学生的课程设计。
[1] 谢灵智. 网络架构革命:SDN与OpenFlow开始燎原[J]. 信息安全与通信保密,2012(9):36-39
Xie Lin-zhi. Network Architecture Revolution: SDN with OpenFlow start [J]. Information Security and Communications Privacy, 2012(9):36-39
[2] 徐 雷,张云勇,吴 俊,等. 云计算环境下的网络技术研究[J]. 通信学报,2012, 33(Z1):216-221
XU Lei, ZHANG Yun-yong, WU Jun, FANG Bing-yi. Network technology research under cloud computing environment. Journal on Communications, 2012,33(Z1):216-221.
[3] 王伟明.转发与控制分离(ForCES)技术及应用[M].杭州:浙江大学出版社,2010.
[4] Handley, Mark. XORP: An open platform for network research[J]. Computer Communication Review, 2003(33):53-57.
[5] 李传煌,王伟明.一种可扩展的ForCES路由器LFB管理及开发模型[J].信息工程大学学报, 2009,10(2):262-269.
LI Chuan-huang,WANG Wei-ming. Extensible LFB Management and Development Model for ForCES Router Software[J]. Journal of Information Engineering University, 2009, 10(2):262-269.
[6] Eddie Kohler, Robert Morris, Benjie Chen, John Jan-notti, and M. FransKaashoek. The Click modular router[J].ACM Trans. on Computer Systems, 2000,18(3):263-297.
[7] H Khosravi T. Anderson. Requirements for Separation of IP Control and Forwarding[EB/OL]. http://datatracker.ietf.org/doc/rfc3654/. 2003.
[8] L Yang,R Dantu. Forwarding and Control Element Separation (ForCES) Framework[EB/OL]. http://datatracker.ietf.org/doc/rfc3746/. 2004.4.
[9] A Doria,JHadiSalim. Forwarding and Control Element Separation (ForCES) Protocol Specification[EB/OL]. http://datatracker.ietf.org/doc/rfc5810/. 2010.03.
[10] J Halpern,JHadiSalim. Forwarding and Control Element Separation (ForCES) Forwarding Element Model[EB/OL]. http://datatracker.ietf.org/doc/rfc5812/. 2010.03.
[11] 俞伟平,王 华. 基于PC机的ForCES转发件实现机制研究[J].信息工程大学学报, 2009,10(1):146-150.
YU Wei-ping, WANG Hua,.Implementation of ForCES Forwarding Element Based on PC. Journal of Information Engineering University, 2009, 10(1):146-150.
[12] 王伟明. 转发与控制分离网络件内信息交换的方法[P]. 中国浙江:CN200610049576.2, 20061
[13] 孙宗锋,肖志辉,孙 健. 基于分布式路由器的IPv4/IPv6转发控制架构研究[J]. 电信科学, 2012,28(6):42-47,.
SUN Zong-feng, XIAO Zhi-hui, SUN Jian. Research on IPv4/IPv6 Forwarding Control Architecture in Distributed Router[J]. Telecommunications Science, 2012, 28(6):42-47.
[14] 陈文龙,徐明伟,杨 扬,等. 可扩展路由器FIB表分解存储模型[J]. 计算机学报, ,2011,34(9):1611-1620.
CHEN Wen-Long, XU Ming-Wei, YANG Yang,etal. Decomposed Storage Model of FIB for Cluster Router[J]. Chinese Journal of Computers, 2011, 34(9):1611-1620.
[15] 谭明锋,高 蕾,龚正虎. IP路由查找算法研究概述[J]. 计算机工程与科学, 2006,28(6):77-89.
TAN Ming-feng, GAOLei, GONGZheng-hu. A Survey of IP Routing Lookup Algorithms[J]. Computer Engineering & Science, 2006, 28(6):77-89.