网络路由加速平台的设计与实现

来源 :计算技术与自动化 | 被引量 : 0次 | 上传用户:xxxxkeat
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:网络路由加速平台是一个基于多核处理器的软件平台,实现网络数据报文的快速接收、快速处理、快速输出转发。该软件平台运行在多核处理器上,采用混合模式,一个core运行Linux操作系统作为控制平面,其余的core运行SE做为数据处理平面。该软件平台充分利用了Linux和SE本身所具有的特点,既发挥了Linux系统化管理和调度的优势,又简化了代码的开发结构,提高了数据转发效率,使得平台处理得以加速,可以应用于基于多核处理器的路由器、SDN、防火墙和负载均衡等通信产品。
  关键字:路由加速平台;Linux模式;SE模式;混合模式
  中图分类号:TP393
  文献标识码:A
  1 引言
  随着网络技术和计算机通讯技术的飞速发展,人们不仅对网络应用的多样性有了新的要求,而且对网络产品的处理性能也有了新的需求。这就对网络核心设备——路由器提出了全新的要求。一方面传输线路带宽的增长极大地推动了路由器性能的不断提升,以满足通信网络的高速需求;另一方面,多种业务集成的发展驱动着路由器具备更强的业务处理能力。目前针对网络数据处理的处理器主要有多核处理器、硬件并行处理器、可编程的硬件处理器[1,2]。其中,软件平台在多核处理器上的运行模式决定了软件实现模式,多核处理器支持三种模式[3],分别是全部Linux模式、全部SE模式和Linux与SE混合模式。
  全部Linux模式是将多核处理器完全交给Linux操作系统进行管理,系统SMP支持多核处理器的调度工作[4,5],软件加速平台代码全部在Linux平台上通过进程的方式完成,表项资源的同步互斥由操作系统保证。上述方式同时存在运行的内核态和用户态的区别,从内核到用户态需要进行数据的拷贝。由于操作系统的特殊结构模式,在一定程度上影响了软件平台的运行效率。这种模式在中高端网络路由加速软件平台中很少被采用,在处理器核数较少的低端路由器中常被采用。
  全部SE模式是让多核处理器完全运行SE的模式,它是一个轻量级的操作系统,具有高效的运行效率。SE上运行的代码需要开发者自行完成,表项的同步互斥也由软件平台实现,软件的处理流程由软件自身控制。但芯片接口和管理接口的数据收发驱动等全部需要软件平台维护,这会导致软件平台工作量有所增加。
  针对上述问题,采用一种Linux与SE混合的模式,该模式让linux作为管理控制平面,对管理接口进行全面系统化管理,并引导SE在多核处理器上启动;SE上运行软件平台的流程处理代码,实现数据平面的数据加速转发,发挥其高效的运行特点。对比上述两种模式,混合模式具有两者相同的共性特点,具有与全SE几乎相当的执行效率,并拥有Linux开源的操作系统对芯片外部设备的统一化管理,选择混合模式是中高端路由加速平台最合理选择。
  2 平台总体设计方案
  网络路由加速平台运行在多核处理器上[6],并采用混合模式,一个core运行Linux操作系统,其余的core运行SE(多核处理器专用操作方式)做为数据处理平面,在core的分配上[7,8],也可以根据实际应用来调整,可以让多个core运行Linux操作系统,相应的减少运行SE模式的core数量。
  软件主要分两个部分,一部分是运行在Linux平面的,主要负责调用命令向SE平面传递通道和命令管理,另外一部分是SE环境下运行的数据面相关软件模块,本软件平台的各开发模块主要集中在SE下的功能模块。
  从系统结构中可知系统采用的Linux加SE的混合系统架构,充分利用了Linux和SE本身所具有的优势特点,在发挥了Linux系统化管理和调度的优势的同时,SE简化了代码的开发结构,提高了数据转发效率,使得平台处理得以加速。
  运行在Linux平面的软件主要有:控制通道网络接口管理、接口报文向SE层报文格式转换、简单网络管理命令行、定时统计上报等。
  SE环境下运行的模块主要有:IPv4/IPv6转发、IPSec、NAT、Tunnel、VLAN、VPN、 组播、ACL、Net-Flow、IPsec、PPPoE/L2TP以及安全模块等。
  Linux平面与SE平面运行在不同的核上,两者之间的表项通过共享内存的方式获取[7],表项的实际创建和插删改的操作由SE完成,表项插删改的控制命令需要通过发送消息队列的方式从Linux上发送到SE上。
  3 平台业务流程
  对于软件平台业务流程有两个方面:一是从Linux平面来的配置命令下发和表项状态获取;二是SE平面对数据报文的接收、处理、输出的一连串业务处理流程。
  3.1 Linux平面业务流程
  配置命令从管理以太网接口进入Linux内核态,用户态通过socket[9,10]从内核态获取配置命令,如果属于Linux平面当前需要处理的命令,则直接对通过共享内存[11]读到的表项进行获取操作;如果是涉及插删改一系列写命令的操作,则需要通过发送消息队列的方式发送到SE平面。Linux平面同时负责对NetFlow表项数据统计和表项内容上报的工作业务,通过启用的进程定期对共享内存的表项进行循环轮询,统计表项数据结构并把统计结果通过socket发送到管理网口到上层,业务处理流程图如下图所示:
  3.2 SE平面业务流程
  数据报文[12]从接口进入SE平面,首先进行报文合法性校验、剥去报文二层头部、通过VLAN恢复报文的入接口、判断报文是否为IP报文还是非IP报文、对于非IP报文分别送入MPLS或PPPoE的处理模块、对于IP报文分别判断是否需要进行NetFlow的数据流统计、判断是否需要进行NAT转换、判断是否需要进行IPsec模块的处理、判断是否需要进行ACL的处理、对于组播报文进行组播报文模块的处理、对IP报文分IPv4和IPv6数据报文,分别送两个不同的协议栈中处理、处理过程中根据是否存在快表,如果存在则快速进行二层分装进行转发、如果不存在则进行普通转发处理流程,并构建快表项、出方向报文先后经过判断决定是否需要NAT转换、是否需要进行IPsec处理、是否需要进行ACL的处理、以及是否需要进行NetFlow的数據流统计功能、完成上述处理流程后报文被转发至输出接口。   4 关键技术设计与实现
  4.1 高速流表转发
  路由表在设计时采用两层的设计结构,简称“总表”和“流表”。在多核并行执行环境中,利用处理器的高速缓存,在Cache中申请与CPU核数相等(N)个数的空间来存放流表的空间块。每个“流表”内路由表项的集合构成了“总表”的一个子集,这些流表在路由初始化后随着数据流转发过程逐步建立。处理器的核每次接收到数据包,需要进行路由查找时,先去对应的流表中进行匹配,如果找到,则根据路由信息中的出端口将数据包直接进行转发;如果匹配不到,则再进入总表中查找,在总表中查找到路由后,将该条路由添加到子表中。
  4.2 大容量ACL
  大容量ACL的实现方法是将ACL的链表存储结构设成双向链表的方式,建立ACL中各表项之间的结构关系。这里将ACL的表项设计成两级结构是算法的特殊化处理,为算法的实现提供数据结构支撑。如下图所示:
  多核处理器(Cores)对初次进入的数据流(Pl、P2’ - Pj)进行流的划分,建立流表(Flow tables),同时查找合适的访问控制列表表项,建立流表与访问控制列表表项的关联;其中,多核处理器将接收到的数据流中的数据包(P)分发到各个空闲的核上,核抽取数据包中对应的条件字段进行哈希(Hash)运算,根据哈希值的不同将数据包划分到不同的流表中,每张流表中可以容纳3条Hash冲突的数据流单元(Entry),每个单元(Entry)结构中分别由有效位Valid、数据流条件字段Key、控制访问列表动作有效位Flag和控制访问列表动作结构体的指针Act。后续进入的数据流直接从流表表项中获取访问控制列表的执行动作。
  4.3 多业务的实现
  多核上的多业务是指增值业务(防火墙、NAT等)以嵌入的形式存在,数据处理过程中符合相关条件的数据包通过调用相关业务处理模块的钩子函数,来实现相关业务的功能。例如二层业务NAT的钩子函数定义为ipnet_natjnput,当消息进入时首先判断端口(in/out方向)是否使能NAT,若使能则调用钩子函数直接进入NAT处理模块,若未使能则继续往下处理。流程如下图所示:
  5 实验测试
  实验在高端路由器上进行,环境基于网络路由加速平台,实验仪表为Spirent Test Center,在路由器上配置相关功能,在仪表上查看数据转发相关情况。该结果表明网络路由加速平台能实现数据快速、高效的处理、转发和接收。
  在仪表上查看数据收发情况,数据全部转发:
  5 结束语
  介绍了一种网络路由加速平台的实现方法,设计了该系统的总体架构,并对其平面业务流程进行了说明。目前,用户对网络通信设备的功能和处理速度的需求不断变化,怎么合理分配core的数量,发挥其高效的运行特点,以及在该软件平台上,灵活扩展软件功能以最大化地滿足用户需求,成为下一步研究的重点。
  参考文献
  [1]王鹏.基于网络处理器的高性能路由器转发面的设计与实现[D].成都:西南交通大学,2011.
  [2]朱佳.网络路由仿真平台的设计与实现[D].武汉:华中科技大学,2007.
  [3]王学龙.嵌入式Linux系统设计与应用[M].北京:清华大学出版,2001.
  [4]张修琪.基于Linux多核进程调度的研究[D].成都:电子科技大学,2012
  [5]黄道颖,张安琳.Linux系统对SMP并行处理的支持[J].郑州轻工业学院学报,2001,16 (4):26-30.
  [6]叶永春,多核网络处理器驱动软件关键技术研究[D].西安电子科技大学,2010.
  [7] 齐斌.网络处理器内核体系结构研究[D].西安:西北工业大学,2004.
  [8]张宏科,苏伟,武勇.网络处理器原理与技术[M].北京邮电大学出版社,2004.
  [9]王枫,罗家融.Linux下多线程Socket通讯的研究与应用[J].计算机工程与应用,2004,16:106-109.
  [10]郭东升,田秀华.Linux环境下基于Socket的网络通信[J].软件导刊,2009,8(1):116-118.
  [11]沈剑光,浅析Linux中的共享内存机制[J].中国科技信息,2006,15:146-149.
  [12]王海涛,田畅,郑少仁.路由器并行交换体系结构的研究[J].数据通信,2001,7 (3):4-7.
其他文献
摘要:安全关键领域中,如何保证软件安全性已经成为了一个广受关注的重要课题。确保程序中没有运行时错误,对于软件安全性的保证十分重要。基于抽象解释的静态分析方法对程序语义进行抽象,是验证运行时错误最合适的形式化方法之一。可配置程序分析(configurable program analysis,CPA)是一种适合多种静态分析方法的通用分析框架。本文使用CPA对抽象解释分析方法进行建模,给出了使用基于C
近日,我区召开2019年国家义务教育质量监测结果解读说明会,教育部基础教育质量监测中心派出包括中国基础教育质量监测协同创新中心负责人任萍在内的5位专家就有关情况进行解
提高高校期刊管理者的素养是提高高校期刊国际竞争力的直接动力。高校期刊管理者要适应知识经济发展的形势需要,不断提高自己的思想道德素养、知识素养和管理素养。只有提高高
为了过滤掉不相关或相关程度较低的属性,就必须使用属性约简算法,从而使得属性约简成为粗糙集中一个核心的研究课题。基于差别矩阵的属性约简算法求解时总是先要求出差别矩阵
作者简介:崔治(1982—),男,湖南益阳人,讲师,硕士,研究方向:信号处理(E-mail:zhicui@yeah.net);彭楚武(1949—),男,湖南长沙人,教授,硕士生导师,研究方向:机电一体化、微机实时控制系统理论与开发。  摘要:光伏并网系统中的扰动是一类非线性非平稳突变信号。针对扰动信号的检测问题,探讨了一种基于小波变换局部模极大值的信号检测方法。阐述了扰动检测的基本原理,研究了工程
8月16日,潍坊教育学院与韩国敬仁女子大学国际交流学院合作办学签字仪式在学院会议室隆重举行。党委书记、院长王敬良代表潍坊教育学院,韩国敬仁女子大学国际交流学院院长金美
根据潍坊市初中骨干教师培训实施方案的要求,我们对1999和2000年度培训结业的初中各科骨干教师进行了跟踪调查.在对调查结果统计整理的基础上,结合我市教育教学的实际情况和
本文分析了高职院校图书馆的特点和目前所面临的困难,提出了若干管理措施和对策。
随着新课程教材的实施,传统的教学方式已不能适应新课程的要求,这就要求我们在课堂教学方法上有所调整和改革。新课程要求我们高中语文摈弃过去传统的教学模式,优化当前高中语文
<正>随着性能车的不断升温,各大汽车厂商也看到了"性能追求者"的诉求,推出各种性能款的车型,比如大众的GTI,宝马M Power系列,奔驰的AMG,这样的例子不胜枚举。本期"官方性能车