一种基于可重构技术的报文转发系统的制作方法

文档序号:20916867发布日期:2020-05-29 13:38阅读:262来源:国知局
本发明属于网络报文转发
技术领域
:,具体涉及一种基于可重构技术的报文转发系统。
背景技术
::云计算、网络功能虚拟化(networkfunctionvirtulization,nfv)、软件定义网络(softwaredefinednetworksdn)技术推动着新一代网络架构演进。nfv、sdn所倡导的网络开放化、虚拟化、智能化、融合化的技术理念得到了越来越广泛的认同。nfv、sdn技术体系的核心思想是:网元软、硬件解耦,网络控制平面、数据平面解耦,从而使得软件功能抽象化、虚拟化,网络可编程、可重构化。sdn技术的发展可以分为两个阶段:基于openflow架构技术的sdn、基于p4(programmingprotocol-independentpacketprocessors)架构技术的sdn。作为第二代sdn的核心技术,p4提出了协议无关的转发模型,克服了openflow依赖于协议所导致的数据平面抽象能力不足、不具备编程能力所导致的扩展性问题,对网络更新、升级,快速迭代具有广阔的应用价值。作为前沿的技术手段,目前国内对p4的研究还基本处于实验阶段,主要是依托于虚拟机环境。参阅图1,该图为国内现有的可重构转发系统结构图。该系统是基于虚拟机环境搭建的,硬件基础是通用cpu、以太物理网卡等组成的主机系统(侧重性能一般选择服务器设备),验证平台主要由虚拟机系统软件、虚拟网卡、p4虚拟交换机组成。由于硬件条件的制约,这套研究方法更偏重于领会p4编程思想,熟悉p4语言开发流程,不能和现有的网络设备互通,不具备工业应用价值。技术实现要素:为了解决现有技术中存在的以上问题,本发明提供了一种采用可重构技术的p4网络设备实现与传统网络互连的报文转发系统。为了达到上述发明目的,本发明采用的技术方案为:一种基于可重构技术的报文转发系统,包括多核网络处理器、网络报文处理加速引擎、流量调度加速引擎和网络接口模块;所述多核网络处理器用于进行多级报文缓冲,采用dma+pcie方式与网络报文处理加速引擎交互数据报文,并通过多个工作线程进行网络数据的深度处理;所述网络报文处理加速引擎用于通过网络接口模块接收报文,并根据转发处理逻辑判断将报文发送给流量管理调度引擎并从网络接口模块转发出去,或将报文通过pcie通路发送给多核网络处理器进行报文的深度处理;所述流量调度加速引擎用于从网络报文处理加速引擎接收报文,并根据流量调度策略判断在设定时刻将报文从网络接口模块转发出去。进一步地,所述多核网络处理器的工作线程采用p4编程模型,其软件组成包括报文io接口单元、报文解析器、报文匹配单元、策略处理单元和报文表项管理模块。进一步地,所述报文io接口单元用于从网络报文加速处理引擎提供的接口收发报文;所述报文解析器用于对报文进行分类解析;所述报文匹配单元从报文解析器提取报文字段,并根据报文特征字段查表输出报文的执行策略;所述策略处理单元用于处理从报文匹配单元生成的执行策略;所述报文表项管理模块用于对表项进行综合管理,生成软件逻辑表,并通过网络报文处理加速引擎提供的写表接口更新其硬件配置。进一步地,所述多核网络处理器的软件架构包括odp层和p4层,所述odp层定义有面向软件转发开发的api,所述p4层包括p4前端编译器和p4后端编译器。进一步地,所述odp层定义的api分解为面向应用的userapi和面向架构的runtimeapi,所述runtimeapi被userapi通过函数调用来引用。进一步地,所述p4前端编译器用于将p4源码编译成中间表示层,所述p4后端编译器用于p4程序到runtimeapi的自动映射。进一步地,所述p4后端编译器包括parser_p4后端编译、table_p4后端编译、action_p4后端编译、match_p4后端编译和control_p4后端编译。进一步地,所述parser_p4后端编译用于根据p4高级接口请求生成适配odp报文解析api的源代码,所述table_p4后端编译用于根据p4高级接口请求生成适配odp查表api的源代码,所述action_p4后端编译用于根据p4高级接口请求生成策略处理的的源代码,所述match_p4后端编译用于根据p4高级接口请求生成报文匹配的的源代码,所述control_p4后端编译用于根据p4高级接口请求生成表项转发的的源代码。本发明具有以下有益效果:本发明通过p4编译系统对多核网络处理器的并发工作线程进行重构,解耦了转发系统的协议相关性;同时通过odp的平台抽象,解耦了转发系统的平台相关性;本发明的解耦设计降低了新增协议、平台变化带来的成本风险,并且能够充分利用专用硬件加速引擎和丰富的网络接口资源,使得本发明能够跟传统设备互联组网,且具备不俗的转发性能,满足了一定的工业应用条件。附图说明图1是现有的可重构转发系统结构示意图;图2是本发明的基于可重构技术的报文转发系统结构示意图;图3是本发明实施例中多核网络处理器的软件组成示意图;图4是本发明实施例中多核网络处理器的软件架构示意图;图5是本发明实施例中p4编译系统原理示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。如图2所示,本发明实施例提供了一种基于可重构技术的报文转发系统,包括多核网络处理器、网络报文处理加速引擎、流量调度加速引擎和网络接口模块。本发明遵循了可重构转发平面建模方法,在自研网络处理器的硬件基础上实现可编程的报文转发系统。所述多核网络处理器用于进行多级报文缓冲,采用dma+pcie方式与网络报文处理加速引擎交互数据报文,并通过多个工作线程进行网络数据的深度处理;所述网络报文处理加速引擎用于通过网络接口模块接收报文,并根据转发处理逻辑判断将报文发送给流量管理调度引擎并从网络接口模块转发出去,或将报文通过pcie通路发送给多核网络处理器进行报文的深度处理;所述流量调度加速引擎用于从网络报文处理加速引擎接收报文,并根据流量调度策略判断在设定时刻将报文从网络接口模块转发出去。上述多核网络处理器基于risc架构,实现多级报文缓冲,采用dma(directmemoryaccess,直接内存存取)+pcie(peripheralcomponentinterconnectexpress)方式与网络报文处理加速引擎交互数据报文。通过零拷贝技术,在网络处理器上并发多个工作线程进行网络数据的深度处理。这些工作线程基于高级语言开发,具有原生的可编程特性。在本发明的一个可选实施例中,多核网络处理器的工作线程的软件架构体系采用p4编程模型,多核网络处理器的并发工作线程是实现p4编程模型的主体,其软件组成由两部分组成:协议相关的子模块、协议无关子模块。划分依据:协议相关的子模块,受报文特性的影响(比如ipv4、ipv6、mpls等)。协议相关子模块的设计完全遵循了p4编程模型,能够通过p4编译系统重构,即根据p4源文件,在p4编译系统的处理下重新生成。协议无关子模块跟系统资源管理具有密切的耦合度,举例来说,前面说到的工作线程通过报文io接口收发报文的逻辑处理就属于这部分。这一部分的设计参考odp模型。odp(opendataplane)模型:由一组抽象描述数据转发功能模型的api组成,odp的api规范涵盖了数据接收、报文操作、报文传输等数据转发基本功能,但并不定义其具体实现,而是交给具体平台进行适配。软件组成具体包括报文io接口单元、报文解析器、报文匹配单元、策略处理单元、报文表项管理模块等。报文io接口单元(pktio):工作线程通过该模块从网络报文加速处理引擎提供的接口(npe.ko)收发报文。该模块是协议无关的,支持单播、多播、广播方式收发。报文解析器(parser):实现报文的分类解析,是协议相关的模块。能够通过p4语言定义其转发抽象行为,并通过p4编译系统重新生成。报文匹配单元(matchunit):从parser提取报文字段,并根据报文特征字段查表输出报文的执行策略。包括了协议相关、协议无关两部分。其中协议相关的部分(match_p4),能够通过p4语言定义并通过p4编译系统重构。协议无关的部分(match_odp)是通过一组odp查表接口组成的逻辑,支持最长匹配(lpm),精确查找(exact)、hash等多种查表算法。策略处理单元(actionunit):从matchunit生成的执行策略,支持报文字段修改、数据校验、数据丢弃、数据重定向、数据发送等处理。报文表项管理模块(tablemanager):是控制平面的接口逻辑,实现表项的综合管理,会生成一套软件逻辑表,并通过网络报文处理加速引擎提供的写表接口更新其硬件配置。该模块也包括了协议相关(table_odp)、协议无关子模块(table_p4),实现方法和前面的单元类似,也是通过odp表项管理接口、p4编译系统重构实现的。如图4所示,多核网络处理器的软件架构为一种odp+p4相结合的转发平面架构,其包括odp层和p4层。odp层定义有面向软件转发开发的api,odp层定义的api分解为面向应用的userapi和面向架构的runtimeapi,其中runtimeapi可看做适配架构的特定实现,并且被userapi通过函数调用来引用。进一步地,runtimeapi也可以使用odp核心库的一些函数来完成相应的逻辑。p4层包括p4前端编译器和p4后端编译器。前端编译器将p4源码编译成中间表示层,本发明直接采用p4开源组织提供的p4-hlir前端编译器。后端编译器实现p4程序到runtimeapi的自动映射。如图5所示,p4后端编译器包括parser_p4后端编译、table_p4后端编译、action_p4后端编译、match_p4后端编译和control_p4后端编译。parser_p4后端编译:p4-hlir的输出信息在通过parser_p4的后端编译处理,会生成c语言实现的适配odp报文解析api的parser.c,parser.h源代码。table_p4后端编译:p4-hlir的输出信息在通过table_p4的后端编译处理,会生成c语言实现的适配odp查表api的table.c,table.h源代码。action_p4后端编译:p4-hlir的输出信息在通过action_p4的后端编译处理,会生成c语言实现的action.c,action.h源代码。match_p4后端编译:p4-hlir的输出信息在通过match_p4的后端编译处理,会生成c语言实现的data_pipeline.c,data_pipeline.h源代码。control_p4后端编译:p4-hlir的输出信息在通过control_p4的后端编译处理,会生成c语言实现的control.c,control.h源代码。如图3所示,多核网络处理器的软件架构具体细分为:(1)npe.ko:npe内核驱动模块,适配npefpga。(2)workerthreads:即odp的threads组件,每个thread的实现可以是linux的线程或者进程。每个thread都使用cpu亲和属性接口,和物理cpu绑定。为了方便描述,定义有count个workers,count是用户可以配置的命令行参数。(3)pool:odp的pool组件,是对共享内存管理对象的高度抽象。(4)timer:odp的timer组件,是对定时器的抽象。(5)pktio:odp的pktio组件,是转发软件适配不同平台报文收发接口的标准接口。(6)odp的hal组件主要包括:tables:odp的表项管理组件,是转发软件适配不同平台进行转发表项管理的标准接口。classfier:odp的报文分类组件,是转发软件适配不同平台进行报文解析的标准接口。packet:odp的报文组件,是转发软件适配不同平台进行报文内容操作的标准接口。(7)packet_descriptor:报文描述符,也是报文数据信息的承载单元。(8)parser:在p4层次上:p4对报文解析的抽象描述,对应p4语法的parser对象。在odp层次上:odpclassifer组件。(9)table:在p4层次上:p4对转发表项的抽象描述,对应p4语法的table对象。在odp层次上:odptable组件(一组表项管理接口)。(10)action:在p4层次上:p4对表项查找结果的抽象描述,对应p4语法的action对象。在odp层次上:odppacket组件的一组策略执行接口,比如checksum计算等。(11)data_pipeline:使用p4语法组件实现文转发过程的pipeline逻辑抽象。(12)control_flow:使用p4语法组件实现转发表项自学习过程的逻辑抽象。下面说明本发明实施的p4编译系统实现方法为:考虑到p4-hlir实现情况,本发明的p4后端编译器基于python语言实现。根据p4-hlir编程指南,通过import语句引用p4-hlir模块,并使用其关键接口hlir()来编译p4源文件,p4-hlir的编译结果会被当成一个完整的中间表示层对象,然后再结合p4-hlir的接口定义实现不同对象的语义转换。p4对象首先是一个python对象,基础对象类型(p4objecttype)有action,table等。每个对象会被实例化为一个字典对象,上面的这些类型的字典名能够被其他python编译器引用。本发明的control,dataplane,table,parser,action等后端编译就是进一步使用p4-hlir编程指南的特定接口将p4对象转换成c文件。control模块(control.c、control.h)是和table紧密结合的一块。主要逻辑:1.接收控制器(可基于openflow或p4runtime实施)的表项管理消息;2.解析消息,并使用对应的表项管理函数,进一步包括调用odptableapi和npe的硬件写表接口。3.定义各种表项管理函数的实现,主要是把控制器发送的表项消息的key和value提取出来,并且使用相对统一的表项管理接口进行添加。data_pipeline模块(data_pipeline.c,data_pipeline.h)实现对报文进行流水线处理的逻辑。主要流程:1.使用receive_packet()收取报文,这个函数会调用odppktio(适配npe硬件平台)的收包接口函数odp_pktin_recv(),后者会通过npe.ko提供的接口从网络报文转发加速引擎收取报文;2.通过receive_packet()进入到p4状态机描述的报文pipeline处理,并在一系列的match-action处理后,更新报文内容,输出报文的出口id;3.根据报文描述符指示的出口id再次调用odppktio完成报文的转发或丢弃。match_p4后端处理会解析p4源文件的所有apply逻辑,并把每个p4的apply函数映射成对应的apply_table_name的c函数。该函数会判断针对当前表的匹配类型来选择对应的通用查表api,进行查表操作,如果能匹配上,则进一步根据apply定义的语法逻辑进行action或递归apply处理,即可能调用下一个apply_table函数或者是action对应的action_code函数(action后端编译器映射结果)。举例:对于ip转发处理,一般使用lpm(最长匹配),对应的通用查表api是lpm_lookup,在这个api里面会进一步使用odp的查表api:odph_iplookup_table_get_value()。查表的关键参数key来自于pd,不同表项都有一个提取key的api:table_name_key,该函数会根据table的matchfield定义从pd提取key(pd的key数据是通过parser产生的)。进一步地,odp查表api、报文解析api会关联网络报文处理加速引擎的硬件资源,从而加速报文的转发处理,提升系统性能。相同的逻辑在策略执行逻辑上同样适用,比如ip转发重新计算ip头部校验和能够使用硬件计算资源。一些安全应用场景下,也能够使用硬件的安全处理逻辑,比如数据加密等。本发明结合了p4和odp转发平面建模的方法,通过软硬件相结合的设计,成功解耦了转发系统的协议相关性、平台相关性。通过自研的p4编译系统对多核处理器的并发工作线程进行重构,解耦了转发系统的协议相关性。通过odp的平台抽象,解耦了转发系统的平台相关性。这种转发系统的解耦设计降低了新增协议、平台变化带来的成本风险。另一方面,本发明实现的可重构报文转发系统能够充分利用专用硬件加速引擎和丰富的网络接口资源,使得本设备能够跟传统设备互联组网,且具备不俗的转发性能,满足了一定的工业应用条件,不再局限于实验室应用,能更好地评估可编程转发技术带来的应用价值。本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1