一种报文处理系统、方法、电子设备和计算机存储介质与流程

未命名 09-24 阅读:58 评论:0
1.本技术涉及云计算网络
技术领域
:,尤其涉及一种报文处理系统、方法、电子设备和计算机存储介质。
背景技术
::2.随着云计算技术的快速发展,越来越多的用户和业务上云,云网络流量呈现出爆炸式增长。目前在云计算领域,网关类设施正在由提供高弹性的分布式软件化设备逐步向软硬件一体(软硬融合)的方向发展,软硬件一体主要是通过异构算力的融合,借助硬件的高转发性和软件的高灵活性,满足云上用户和业务的需求。异构算力体现在底层网络转发芯片与多样化计算单元的配合,其中,针对底层网络转发芯片与计算单元之间的协同配合,业内通用做法为底层网络转发芯片承担基于硬件流表的快速转发,发生流未命中后通过内部通道上送给计算单元进行处理(即慢路径方式)。3.然而,在相关技术中,当前的慢路径方式存在以下问题:计算单元需要建立与网络芯片设备口的映射关系,而且此时还需要实时将网络芯片设备口的状态、功能分布与计算单元同步;当网络芯片上送报文至计算单元时,无法携带芯片层附加的信息(如入端口、时间戳等信息),或者即使通过扩充原始报文进行信息补充,但会破坏原始报文结构;另外,芯片商提供软件开发工具包(softwaredevelopmentkit,sdk)对芯片层附加的信息进行封装,计算单元应用需要感知sdk对数据的封装,增加了计算单元的处理复杂度。技术实现要素:4.本技术提供了一种报文处理系统、方法、电子设备和计算机存储介质,计算单元不用维护与网络可编程芯片设备口的映射关系,同时网络可编程芯片能够自定义元数据结构与报文的封装逻辑,而且报文与元数据封装时不受上层业务影响,从而还能够降低业务复杂度,提高设备性能。5.本技术的技术方案是这样实现的:6.第一方面,本技术实施例提供了一种报文处理系统,所述报文处理系统包括网络可编程单元和计算单元,其中:7.所述网络可编程单元,用于获取初始报文和初始元数据,对所述初始报文和所述初始元数据进行封装处理,生成第一报文,并将所述第一报文发送给所述计算单元;8.所述计算单元,用于对所述第一报文进行解析处理,提取所述初始元数据;根据所述初始元数据生成携带发送端口信息的目标元数据,对所述初始报文和所述目标元数据进行封装处理,生成第二报文,并将所述第二报文发送给所述网络可编程单元;9.所述网络可编程单元,还用于基于所述第二报文中携带的所述发送端口信息,对所述初始报文进行转发。10.第二方面,本技术实施例提供了一种报文处理方法,所述方法包括:11.通过网络可编程单元获取初始报文和初始元数据,对所述初始报文和所述初始元数据进行封装处理,生成第一报文,并将所述第一报文发送给计算单元;12.通过计算单元对所述第一报文进行解析处理,提取所述初始元数据;根据所述初始元数据生成携带发送端口信息的目标元数据,对所述初始报文和所述目标元数据进行封装处理,生成第二报文,并将所述第二报文发送给所述网络可编程单元;13.基于所述第二报文中携带的所述发送端口信息,通过所述网络可编程单元对所述初始报文进行转发。14.第三方面,本技术实施例提供了一种电子设备,所述电子设备包括存储器和处理器,其中:15.所述存储器,用于存储能够在所述处理器上运行的计算机程序;16.所述处理器,用于在运行所述计算机程序时,执行如第二方面所述的方法。17.第四方面,本技术实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现如第二方面所述的方法。18.本技术所提供的一种报文处理系统、方法、电子设备和计算机存储介质,该系统包括网络可编程单元和计算单元,其中:网络可编程单元,用于获取初始报文和初始元数据,对初始报文和初始元数据进行封装处理,生成第一报文,并将第一报文发送给计算单元;计算单元,用于对第一报文进行解析处理,提取初始元数据;根据初始元数据生成携带发送端口信息的目标元数据,对初始报文和目标元数据进行封装处理,生成第二报文,并将第二报文发送给网络可编程单元;网络可编程单元,还用于基于第二报文中携带的发送端口信息,对初始报文进行转发。这样,由于网络可编程单元能够自定义元数据结构与报文的封装逻辑,使得通过网络可编程单元能够将初始元数据与初始报文进行封装,生成第一报文并发送给计算单元;然后通过具有元数据识别功能的计算单元对第一报文进行元数据的解析处理,得到初始元数据,进而生成携带有发送端口信息的目标元数据,并对其与初始报文进行封装,将生成的第二报文发送给网络可编程单元,以便网络可编程单元根据发送端口信息来实现对初始报文的转发,从而还能够使得计算单元无需维护与网络可编程芯片设备口的映射关系,灵活性高;而且报文与元数据封装时不受上层业务影响,还能够降低业务复杂度,提高设备性能。附图说明19.图1为本技术实施例提供的一种报文处理系统的组成结构示意图;20.图2为本技术实施例提供的另一种报文处理系统的组成结构示意图;21.图3为本技术实施例提供的一种报文处理方法的流程示意图;22.图4为本技术实施例提供的一种报文处理系统的详细结构示意图;23.图5为本技术实施例提供的另一种报文处理方法的流程示意图;24.图6为本技术实施例提供的一种电子设备的组成结构示意图;25.图7为本技术实施例提供的另一种电子设备的组成结构示意图。具体实施方式26.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。27.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的
技术领域
:的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。28.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。29.需要指出,本技术实施例所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。30.随着云计算技术的快速发展,越来越多的用户和业务上云,云网络流量呈现出爆炸式增长。因为云上用户对网络的差异化需求以及不断增长的数据量,所以对云提供商的基础网络设施(尤其是网关类设施)带来巨大的考验和挑战,基础网络设施不但要提供稳定、高效的数据转发,同时还要为不同用户提供快速弹性扩所容的带宽能力。目前在云计算领域,网关类设施正在由提供高弹性的分布式软件化设备逐步向软硬件一体(软硬融合)的方向发展,软硬件一体主要是通过异构算力的融合,借助硬件的高转发性和软件的高灵活性,满足云上用户和业务的需求。异构算力体现在底层网络转发芯片与多样化计算单元的配合,如网络处理器(networkprocessor,np)+高级精简指令集机器(advancedriscmachine,arm),专用集成电路(applicationspecificintegratedcircuit,asic)+arm,asic+现场可编程门阵列(fieldprogrammablegatearray,fpga)等组合,针对底层网络转发芯片与计算单元之间的协同配合,业内通用做法为底层网络转发芯片承担基于硬件流表的快速转发,发生流未命中后通过内部通道上送给计算单元进行处理(即慢路径方式),具体如下:31.首先计算单元慢路径处理报文的收发网络设备口,即虚拟化网络接口控制器(virtualisednetworkinterfacecontroller,vnic)与网络芯片设备口(ingress/egressport)建立映射关系;然后网络芯片中的三态内容寻址存储器(ternarycontentaddressablememory,tcam)/静态随机存取存储器(staticrandomaccessmemory,sram)资源流表未命中(flowmiss)通过内部高速串行计算机扩展总线(peripheralcomponentinterconnectexpress,pcie)接口或直连通道发送给计算单元(以arm处理器为例),arm处理器中部署软件转发服务进行流处理;最后当计算单元处理完成后,将数据报文重入网络芯片,进行网络处理,同时根据策略刷新网络芯片tcam/sram中的资源流表内容。32.但是当前的慢路径方式存在有一些技术问题,基于此,本技术实施例提供了一种报文处理系统,该系统包括网络可编程单元和计算单元,其中:网络可编程单元,用于获取初始报文和初始元数据,对初始报文和初始元数据进行封装处理,生成第一报文,并将第一报文发送给计算单元;计算单元,用于对第一报文进行解析处理,提取初始元数据;根据初始元数据生成携带发送端口信息的目标元数据,对初始报文和目标元数据进行封装处理,生成第二报文,并将第二报文发送给网络可编程单元;网络可编程单元,还用于基于第二报文中携带的发送端口信息,对初始报文进行转发。这样,由于网络可编程单元能够自定义元数据结构与报文的封装逻辑,使得通过网络可编程单元能够将初始元数据与初始报文进行封装,生成第一报文并发送给计算单元;然后通过具有元数据识别功能的计算单元对第一报文进行元数据的解析处理,得到初始元数据,进而生成携带有发送端口信息的目标元数据,并对其与初始报文进行封装,将生成的第二报文发送给网络可编程单元,以便网络可编程单元根据发送端口信息来实现对初始报文的转发,从而还能够使得计算单元无需维护与网络可编程芯片设备口的映射关系,灵活性高;而且报文与元数据封装时不受上层业务影响,还能够降低业务复杂度,提高设备性能。33.下面将结合附图对本技术各实施例进行详细说明。34.本技术的一实施例中,参见图1,其示出了本技术实施例提供的一种报文处理系统的组成结构示意图。如图1所示,该报文处理系统10可以包括网络可编程单元101和计算单元102。35.需要说明的是,本技术实施例提供了一种报文处理系统,该系统可以设置于电子设备中。在这里,电子设备可以是诸如计算机、智能手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、导航装置、可穿戴设备、服务器等等;其中,服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,本技术实施例对此不作具体限定。36.还需要说明的是,在本技术实施例中,网络可编程单元101可以集成于网络可编程芯片中。其中,网络可编程芯片是可以进行逻辑编程的芯片,采用可以编制程序的存储器,用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令。这样,网络可编程芯片作为硬件部分,计算单元作为软件实现部分,从而实现了软硬一体的报文处理方法,具体是一种软硬一体设备异构算力慢路径报文处理的方法。37.进一步地,对于报文处理系统10而言,在一些实施例中,其中:38.网络可编程单元101,用于获取初始报文和初始元数据,对初始报文和初始元数据进行封装处理,生成第一报文,并将第一报文发送给计算单元;39.计算单元102,用于对第一报文进行解析处理,提取初始元数据;根据初始元数据生成携带发送端口信息的目标元数据,对初始报文和目标元数据进行封装处理,生成第二报文,并将第二报文发送给网络可编程单元;40.网络可编程单元101,还用于基于第二报文中携带的发送端口信息,对初始报文进行转发。41.在本技术实施例中,首先通过网络可编程单元101提取初始报文的初始元数据,然后将初始报文和初始元数据进行组合封装或者拼装逻辑处理后,发送给计算单元102。因为网络可编程单元101可以集成于网络可编程芯片中,从而可以通过网络可编程芯片与计算单元102的配合,借助硬件的高转发性和软件的高灵活性,能够实现软硬结合,满足云上用户和业务的需求。42.进一步地,在一些实施例中,这里的初始报文可以为未命中报文。43.需要说明的是,在本技术实施例中,通过对报文的关键字进行解析提取,比如提取报文的五元组,可以包括:报文的源ip地址、源端口、目的ip地址、目的端口和传输层协议,然后判断流表信息中是否存在与该五元组对应的转发表项;若流表信息中存在与报文的五元组对应的转发表项,则表示该报文命中,且所命中的转发表项的五元组与该报文的五元组相同;若流表项信息中不存在与报文的五元组相同的转发表项,确定该报文未命中。44.可以理解地,本技术实施例主要就是将网络可编程芯片未命中(flowmiss)后的报文进行处理。45.进一步地,在一些实施例中,网络可编程单元101,具体用于对初始报文进行元数据提取,以获取初始元数据。46.需要说明的是,在本技术实施例中,初始元数据(metadata)是指非初始报文本身的数据,即网络可编程芯片需要附加的信息,例如入端口、出端口、时间戳等信息,这里不作具体限定。47.还需要说明的是,在本技术实施例中,对初始报文和初始元数据进行组合封装或者拼装逻辑处理就是将初始报文和初始元数据用“+”号进行拼接,将数据整合在一起生成第一报文;其中,第一报文的格式为metadata+flowmisspacket。48.还需要说明的是,在本技术实施例中,在生成第一报文后,网络可编程单元101需要将第一报文发送给计算单元102,网络可编程单元101可以通过内部pcie接口或直连通道将第一报文发送给计算单元102,这里不作具体限定。49.还需要说明的是,在本技术实施例中,计算单元102首先提取网络可编程单元101上送的第一报文中的初始元数据,然后将初始报文的发送端口信息添加到初始元数据中,生成目标元数据,再将初始报文和目标元数据进行封装,生成第二报文发送给网络可编程单元101。50.进一步地,在一些实施例中,计算单元102包括数据平面开发套件(dataplanedevelopmentkit,dpdk)驱动模块,且dpdk驱动模块对应的数据报文结构包括元数据字段;其中:51.dpdk驱动模块,用于对第一报文进行元数据的解析处理,得到初始元数据,并将初始元数据存储至数据报文结构中的元数据字段。52.需要说明的是,在本技术实施例中,dpdk驱动主要基于linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。53.需要说明的是,原始的dpdk驱动无法解析元数据,因此在本技术实施例中,通过修改dpdk驱动接收报文业务逻辑,在dpdk驱动中增加了元数据解析逻辑,使其可以对第一报文进行元数据的解析处理,得到初始元数据。54.还需要说明的是,在本技术实施例中,dpdk驱动模块对应的数据报文结构为rte_mbuf,数据报文结构中的元数据字段为rte_mbuf-》metadata。55.进一步地,在一些实施例中,数据报文结构还包括对外接口字段;其中:56.dpdk驱动模块,还用于确定初始报文的发送端口信息,以及将发送端口信息设置到数据报文结构中的对外接口字段。57.需要说明的是,在本技术实施例中,初始报文的发送端口信息为port值,port值可以为1、2、3、4、5等,不同的port值对应不同的网络接口,这里不作具体限定。58.需要说明的是,在本技术实施例中,数据报文结构中的对外接口字段为rte_mbuf-》metadata.egress_port。59.还需要说明的是,原始的报文发送逻辑是将报文送往${port}端口,通过端口发送队列将报文发出;而在本技术实施例中,通过修改开源虚拟交换机(openvswitch,ovs)openflow流表中output关键字的实现方式,将output:${port}逻辑修改成将${port}设置到数据报文结构中的对外接口字段rte_mbuf-》metadata.egress_port中,从而将output选择网络接口变成固定为一个网络接口,即计算单元102与网络可编程芯片104之间的互通接口,然后根据port值从对应的网络接口将报文发送出去。60.还需要说明的是,在本技术实施例中,ovs是一款使用开源软件实现的虚拟交换机,支持多种标准接口和协议,支持多个物理服务器的分布式环境,提供了对openflow协议的支持,并且能够与众多开源的虚拟化平台整合。61.还需要说明的是,在本技术实施例中,网络可编程单元101在接收到计算单元102发送的第二报文后,从第二报文中获取发送端口信息,然后根据发送端口信息转发初始报文。62.进一步地,在一些实施例中,网络可编程单元101,具体用于从第二报文中提取目标元数据,并从目标元数据中获取发送端口信息,以通过发送端口信息将初始报文进行转发。63.需要说明的是,在本技术实施例中,可以通过修改网络可编程单元101的逻辑代码,使其可以从第二报文中提取目标元数据。64.在一些实施例中,在图1所示报文处理系统10的基础上,参见图2,该报文处理系统10还可以包括管理单元103;其中:65.计算单元102,还用于在将第二报文发送给网络可编程单元101之后,确定初始报文对应的流表信息,并将流表信息发送至管理单元103;66.管理单元103用于根据接收到的流表信息,对网络可编程单元中的硬件流表执行更新操作。67.需要说明的是,在本技术实施例中,第一报文发送到计算单元102后会进行两方面处理,一方面是计算单元102在对第一报文进行处理生成第二报文后,将第二报文发送给网络可编程单元101;另一方面是将初始报文对应的流表信息发送至管理单元103,再由管理单元103将初始报文对应的流表信息设置到网络可编程单元中的硬件流表。68.需要说明的是,在本技术实施例中,初始报文对应的流表信息是与初始报文匹配的流表信息。69.还需要说明的是,在本技术实施例中,计算单元102是将流表信息发送至管理单元103中的流表管理单元,流表管理单元根据硬件快路径流表刷新策略,将流表信息发送至网络可编程单元中的硬件流表。70.进一步地,在一些实施例中,管理单元103,具体用于将流表信息及更新指令发送至网络可编程单元101;71.网络可编程单元101,具体用于根据更新指令,将流表信息更新到网络可编程单元的硬件流表中。72.需要说明的是,在本技术实施例中,将流表信息更新到网络可编程单元的硬件流表中是指将所匹配的流表信息写入硬件流表中。73.本技术实施例提供了一种报文处理系统,该系统包括网络可编程单元和计算单元,其中:网络可编程单元,用于获取初始报文和初始元数据,对初始报文和初始元数据进行封装处理,生成第一报文,并将第一报文发送给计算单元;计算单元,用于对第一报文进行解析处理,提取初始元数据;根据初始元数据生成携带发送端口信息的目标元数据,对初始报文和目标元数据进行封装处理,生成第二报文,并将第二报文发送给网络可编程单元;网络可编程单元,还用于基于第二报文中携带的发送端口信息,对初始报文进行转发;该系统还包括管理单元,用于对网络可编程单元中的硬件流表执行更新操作。这样,由于网络可编程单元能够自定义元数据结构与报文的封装逻辑,使得通过网络可编程单元能够将初始元数据与初始报文进行封装,生成第一报文并发送给计算单元;然后通过具有元数据识别功能的计算单元对第一报文进行元数据的解析处理,得到初始元数据,进而生成携带有发送端口信息的目标元数据,并对其与初始报文进行封装,将生成的第二报文发送给网络可编程单元,以便网络可编程单元根据发送端口信息来实现对初始报文的转发,从而还能够使得计算单元无需维护与网络可编程芯片设备口的映射关系,灵活性高;而且报文与元数据封装时不受上层业务影响,还能够降低业务复杂度,提高设备性能;并且网络可编程芯片接收来自管理单元的硬件流表更新指令,提高了后续报文的命中率。74.本技术的另一实施例中,参见图3,其示出了本技术实施例提供的一种报文处理方法的流程示意图。如图3所示,该方法可以包括:75.s301、通过网络可编程单元获取初始报文和初始元数据,对初始报文和初始元数据进行封装处理,生成第一报文,并将第一报文发送给计算单元。76.需要说明的是,本技术实施例提供了一种报文处理方法,具体可以是一种软硬一体设备异构算力慢路径报文处理的方法。其中,该方法可以应用于前述实施例中的报文处理系统,或者集成有该报文处理系统的电子设备中。其中,电子设备可以是诸如计算机、智能手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、导航装置、可穿戴设备等等;服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,本技术实施例不作具体限定。77.在一些实施例中,这里的初始报文可以为未命中报文。78.需要说明的是,在本技术实施例中,通过对报文的关键字进行解析提取,比如提取报文的五元组,可以包括:报文的源ip地址、源端口、目的ip地址、目的端口和传输层协议,然后判断流表信息中是否存在与该五元组对应的转发表项;若流表信息中存在与报文的五元组对应的转发表项,则表示该报文命中,且所命中的转发表项的五元组与该报文的五元组相同;若流表项信息中不存在与报文的五元组相同的转发表项,确定该报文未命中。79.可以理解地,本技术实施例主要就是将网络可编程芯片未命中(flowmiss)后的报文进行处理。80.在一些实施例中,通过网络可编程单元获取初始报文和初始元数据,可以包括:81.通过网络可编程单元对初始报文进行元数据提取,确定初始元数据。82.需要说明的是,在本技术实施例中,初始元数据(metadata)是指非初始报文本身的数据,即网络可编程芯片需要附加的信息,例如入端口、出端口、时间戳等信息,这里不作具体限定。83.还需要说明的是,在本技术实施例中,对初始报文和初始元数据进行组合封装或者拼装逻辑处理就是将初始报文和初始元数据用“+”号进行拼接,将数据整合在一起生成第一报文;其中,第一报文的格式为metadata+flowmisspacket。84.s302、通过计算单元对第一报文进行解析处理,提取初始元数据;根据初始元数据生成携带发送端口信息的目标元数据,对初始报文和目标元数据进行封装处理,生成第二报文,并将第二报文发送给网络可编程单元。85.在一些实施例中,计算单元包括dpdk驱动模块,且dpdk驱动模块对应的数据报文结构包括元数据字段。86.需要说明的是,原始的dpdk驱动无法解析元数据,因此在本技术实施例中,通过修改dpdk驱动接收报文业务逻辑,在dpdk驱动中增加了元数据解析逻辑,使其可以对第一报文进行元数据的解析处理,得到初始元数据。87.相应地,通过计算单元对第一报文进行解析处理,提取初始元数据,可以包括:88.通过dpdk驱动模块对第一报文进行元数据的解析处理,得到初始元数据,并将初始元数据存储至数据报文结构中的元数据字段。89.需要说明的是,在本技术实施例中,dpdk驱动模块对应的数据报文结构为rte_mbuf,数据报文结构中的元数据字段为rte_mbuf-》metadata。90.在一些实施例中,数据报文结构还可以包括对外接口字段。相应地,根据初始元数据生成携带发送端口信息的目标元数据,可以包括:91.通过dpdk驱动模块确定初始报文的发送端口信息,以及将发送端口信息设置到数据报文结构中的对外接口字段。92.需要说明的是,在本技术实施例中,初始报文的发送端口信息为port值,port值可以为1、2、3、4、5等,不同的port值对应不同的网络接口,这里不作具体限定。93.还需要说明的是,在本技术实施例中,数据报文结构中的对外接口字段为rte_mbuf-》metadata.egress_port。94.还需要说明的是,原始的报文发送逻辑是将报文送往${port}端口,通过端口发送队列将报文发出;而在本技术实施例中,通过修改ovsopenflow流表中output关键字的实现方式,将output:${port}逻辑修改成将${port}设置到数据报文结构中的对外接口字段rte_mbuf-》metadata.egress_port中,从而将output选择网络接口变成固定为一个网络接口,即计算单元与网络可编程芯片之间的互通接口,然后根据port值从对应的网络接口将报文发送出去。95.s303、基于第二报文中携带的发送端口信息,通过网络可编程单元对初始报文进行转发。96.在一些实施例中,基于第二报文中携带的发送端口信息,通过网络可编程单元对初始报文进行转发,可以包括:97.通过网络可编程单元从第二报文中提取目标元数据,并从目标元数据中获取发送端口信息,以通过发送端口信息将初始报文进行转发。98.需要说明的是,在本技术实施例中,可以通过修改网络可编程单元的逻辑代码,使其可以从第二报文中提取目标元数据。99.在一些实施例中,在通过计算单元将第二报文发送给网络可编程单元之后,该方法还可以包括:100.通过计算单元确定初始报文对应的流表信息,并将流表信息发送至管理单元;101.根据接收到的流表信息,通过管理单元对网络可编程单元中的硬件流表执行更新操作。102.需要说明的是,在本技术实施例中,初始报文对应的流表信息是与初始报文匹配的流表信息。103.还需要说明的是,在本技术实施例中,计算单元是将流表信息发送至管理单元中的流表管理单元,流表管理单元根据硬件快路径流表刷新策略,将流表信息发送至网络可编程单元中的硬件流表。104.在一些实施例中,根据接收到的流表信息,通过管理单元对网络可编程单元中的硬件流表执行更新操作,可以包括:105.通过管理单元将流表信息及更新指令发送至网络可编程单元;106.根据更新指令,网络可编程单元将流表信息更新到网络可编程单元的硬件流表中。107.需要说明的是,在本技术实施例中,将流表信息更新到网络可编程单元的硬件流表中是指将所匹配的流表信息写入硬件流表中。108.本技术实施例提供了一种报文处理方法,通过网络可编程单元获取初始报文和初始元数据,对初始报文和初始元数据进行封装处理,生成第一报文,并将第一报文发送给计算单元;通过计算单元对第一报文进行解析处理,提取初始元数据;根据初始元数据生成携带发送端口信息的目标元数据,对初始报文和目标元数据进行封装处理,生成第二报文,并将第二报文发送给网络可编程单元;基于第二报文中携带的发送端口信息,通过网络可编程单元对初始报文进行转发。这样,由于网络可编程单元能够自定义元数据结构与报文的封装逻辑,使得通过网络可编程单元能够将初始元数据与初始报文进行封装,生成第一报文并发送给计算单元;然后通过具有元数据识别功能的计算单元对第一报文进行元数据的解析处理,得到初始元数据,进而生成携带有发送端口信息的目标元数据,并对其与初始报文进行封装,将生成的第二报文发送给网络可编程单元,以便网络可编程单元根据发送端口信息来实现对初始报文的转发,从而还能够使得计算单元无需维护与网络可编程芯片设备口的映射关系,灵活性高;而且报文与元数据封装时不受上层业务影响,还能够降低业务复杂度,提高设备性能;并且网络可编程芯片接收来自管理单元的硬件流表更新指令,提高了后续报文的命中率。109.本技术的又一实施例中,基于前述实施例所述的报文处理系统10,本实施例具体提供了一种软硬一体设备异构算力慢路径报文处理方法,本技术充分利用dpdk、ovs和网络可编程芯片的可编程性,使得计算单元中不再维护与网络可编程芯片的设备口映射关系。首先借助网络可编程芯片的可编程性,将初始元数据与初始报文封装后通过直连通道上送至计算单元;然后修改dpdk网卡驱动接收报文业务逻辑,提取网络可编程芯片上送报文中的初始元数据,并存储在dpdk报文结构rte_mbuf中;再修改ovs流表命中后output的发送逻辑(output:1,代表从1号端口发送),将发送口填充至rte_mbuf中扩增的egress口,第二报文经计算单元与网络可编程芯片的直连通道下发;最后借助网络可编程芯片的可编程性,从目标元数据中读取发送端口信息,由网络可编程芯片进行转发。110.示例性地,参见图4,其示出了本技术实施例提供的一种报文处理系统的详细结构示意图。如图4所示,报文处理系统10可以包括网络可编程芯片401、计算单元402和管理单元403。其中,网络可编程芯片401可包括元数据处理模块和硬件流表模块;计算单元402可包括流表查询模块、业务处理模块和报文收发模块;管理单元403可包括控制器模块、流表管理模块、状态检测模块、数据同步模块、定时器模块和运维监控模块。其中,前述实施例所述的网络可编程单元101集成在该网络可编程芯片401中。111.当报文未命中时,网络可编程芯片401通过元数据处理模块对初始元数据进行处理,并生成第一报文发送给计算单元402,计算单元402处理完成后,生成第二报文,并将第二报文发送给网络可编程芯片401,即执行图4中的加粗实线所示流程。当计算单元402将第二报文发送给网络可编程芯片401之后,还会将与初始报文匹配的流表信息发送给管理单元403,管理单元403根据接收到的流表信息,将所匹配的流表信息写入网络可编程芯片401中的硬件流表模块中,即执行图4中的加粗虚线所示流程。当将所匹配的流表信息写入网络可编程芯片401中的硬件流表模块中时,若下次再有相同的报文需要处理时,直接执行报文命中的处理步骤,即执行图4中的点划线所示流程。112.在一种具体的实施例中,结合图4,对于前述实施例所述的报文处理系统,具体可以包括如下组成结构:113.(1)网络可编程芯片401通过对芯片编程,实现包解析(即元数据提取)、硬件流表资源操作(tcam/sram资源表查询、更新、清除等),以及在网络可编程芯片401的管理单元(mgtunit)将flowmiss报文(未命中报文,即初始报文)及初始元数据上送至计算单元402。114.(2)计算单元402实现网络可编程芯片401上送的第一报文的处理,引入dpdk和ovs提高网络收发性能及业务转发处理的灵活性,dpdk驱动增加对元数据的识别功能。115.(3)计算单元402中的ovs实现第一报文的详细处理,将处理后的报文(即第二报文)通过与网络可编程芯片401间的直连通道下发至网络可编程芯片401,并将flowhit(报文命中)的精确流表项(即与初始报文对应的流表信息)发送至管理单元403的流表管理模块(流表管理模块中的数据与网络可编程芯片401中的硬件流表模块内容完全一致,主要实现对硬件流表超时老化、table纬度数据清理等功能),流表管理模块根据硬件快路径流表刷新策略,将精确流表项下发至网络可编程芯片401的硬件流表模块中;其中,计算单元402中的流表内容来源于管理单元403中的控制器模块的下发。116.(4)网络可编程芯片401根据目标元数据内容对初始报文进行转发,并接收来自管理单元403的硬件流表更新指令,提高后续报文的命中率。117.示例性地,参见图5,其示出了本技术实施例提供的另一种报文处理方法的流程示意图。如图5所示,当初始报文未命中时,首先通过网络可编程芯片对初始报文进行入向解析(ingressparser),提取初始元数据(metadata);然后通过网络可编程芯片的管理单元(mgtunit)将初始报文(即初始数据,rawdata)和初始元数据进行封装处理,生成第一报文并通过pcie接口发送给计算单元(即上送报文,upcallpacket);再通过计算单元的dpdk模块对第一报文进行解析处理得到初始元数据,并将初始元数据存储至数据报文结构中的元数据字段rte_mbuf-》metadata中;再通过修改ovsopenflow流表中output关键字的实现方式,将初始报文的发送端口信息设置到数据报文结构中的对外接口字段rte_mbuf-》metadata.egress_port中,得到携带发送端口信息的目标元数据,还修改了dpdk驱动层数据发送逻辑,将目标元数据与初始报文进行组合封装,生成第二报文并发送给网络可编程芯片;最后网络可编程芯片的管理单元在接收到第二报文后,根据发送端口信息对初始报文进行转发。在一种具体的实施例中,对于前述实施例所述的报文处理方法,具体可以包括如下步骤:118.步骤1、网络可编程芯片将未命中(flowmiss)报文(即初始报文),和初始元数据(由网络可编程芯片逻辑中定义接口和数据填充,包括ingress_port、egress_port、timestamp、mac、ip、port等)进行组合封装成新的报文(即第一报文)(格式为:metadata+flowmisspacket),通过内部直连通道(或pcie接口)发送至计算单元。119.步骤2、计算单元(慢路径)采用dpdk-ovs实现数据的收发和业务处理,dpdk驱动层增加以太网(ethernet)数据解析逻辑,将网络可编程芯片发送的数据中的前固定字节,即初始元数据存放至rte_mbuf-》metadata中(rte_mbuf为dpdk中数据报文结构,在数据报文结构中扩增初始元数据,其中,初始元数据定义与网络可编程芯片中保持一致)。120.步骤3、dpdk-ovs的基于用户态的轮询机制的驱动(pollmodedriver,pmd)也就是ovs业务处理逻辑,按既定功能进行表查询及处理,并且修改ovsopenflow流表中output关键字的实现方式,将output:${port}(注:ovs原逻辑是将报文送往${port}端口,通过端口发送队列将报文发出)逻辑修改成将${port}设置到rte_mbuf-》metadata.egress_port;还修改dpdk驱动层数据发送逻辑,将rte_mbuf中的目标元数据与原始报文(flowmiss的数据报文,即初始报文)进行组合封装(格式为:metadata+flowmisspacket),同时将${port}对应的netdev指定为计算单元与网络可编程芯片直通的ethernet设备,实现数据重入网络可编程芯片。121.需要说明的是,在本技术实施例中,${port}是指ovs里的逻辑编码,netdev是指网络可编程芯片里的物理端口。122.步骤4、网络可编程芯片中的mgtunit(控制报文是否上送计算单元)收到第二报文后,将固定字节长度的目标元数据取出,根据metadata.egress_port中的port值将初始报文发出。123.步骤5、计算单元将第二报文发送至网络可编程芯片后,通过ethernet口,将计算单元中命中的流表(慢路径)项发送至管理单元,并由管理单元中的流表管理模块实现对硬件流表的更新操作。124.本实施例提供了一种报文处理方法,根据上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,根据前述实施例的技术方案,首先通过网络可编程芯片提取报文的初始元数据,并将初始元数据与初始报文进行封装发送至计算单元;然后借助dpdk高性能收发包特性,增加dpdk驱动对初始元数据的解析,并将初始元数据存放在rte_mbuf中供报文全生命周期使用。(全生命周期指报文从网卡驱动接收到离开网卡发送队列的过程);再通过修改ovs转发逻辑中的output特定动作(ovs中output:${port}是将报文转至${port}对应的设备进行发送),将发送动作替换为设置目标元数据中的egress_port;最后通过网络可编程芯片,根据自定义目标元数据数据中的egress_port进行数据转发。这样,一方面,本技术灵活性高,计算单元不用维护与网络可编程芯片设备口的映射关系,由管理单元的控制器感知网络可编程芯片的端口状态,并通过流表形式同步至计算单元;另一方面,本技术降低了业务复杂性,网络可编程芯片自定义元数据结构和报文封装逻辑,并通过计算单元驱动层进行适配,同时对egress_port的设置也发生在驱动层面(ovs的output对应端口发送行为),使得对上层业务无感知,同时业务实现复杂度低,无需厂商sdk适配。125.本技术的再一实施例中,对于前述实施例所述的报文处理系统10而言,这里的“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。126.所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。127.因此,本技术实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现前述实施例中任一项所述报文处理方法的步骤。128.本技术的再一实施例中,基于前述报文处理系统10的组成以及计算机存储介质,参见图6,其示出了本技术实施例提供的一种电子设备60的组成结构示意图。如图6所示,电子设备60可以包括:通信接口601、存储器602和处理器603;各个组件通过总线系统604耦合在一起。可理解,总线系统604用于实现这些组件之间的连接通信。总线系统604除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统604。其中,通信接口601,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;129.存储器602,用于存储能够在处理器603上运行的计算机程序;130.处理器603,用于在运行所述计算机程序时,执行:131.通过网络可编程单元获取初始报文和初始元数据,对初始报文和初始元数据进行封装处理,生成第一报文,并将第一报文发送给计算单元;132.通过计算单元对第一报文进行解析处理,提取初始元数据;根据初始元数据生成携带发送端口信息的目标元数据,对初始报文和目标元数据进行封装处理,生成第二报文,并将第二报文发送给网络可编程单元;133.基于第二报文中携带的发送端口信息,通过网络可编程单元对初始报文进行转发。134.可以理解,本技术实施例中的存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步链动态随机存取存储器(synchronouslinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。本文描述的系统和方法的存储器602旨在包括但不限于这些和任意其它适合类型的存储器。135.而处理器603可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器603中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器603可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器603读取存储器602中的信息,结合其硬件完成上述方法的步骤。136.可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(applicationspecificintegratedcircuits,asic)、数字信号处理器(digitalsignalprocessing,dsp)、数字信号处理设备(dspdevice,dspd)、可编程逻辑设备(programmablelogicdevice,pld)、现场可编程门阵列(field-programmablegatearray,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。137.对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。138.可选地,作为另一个实施例,处理器603还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法。139.在本技术的再一实施例中,参见图7,其示出了本技术实施例提供的另一种电子设备60的组成结构示意图。如图7所示,该电子设备60至少包括前述实施例中任一项所述的报文处理系统10。140.在本技术实施例中,对于电子设备60而言,计算单元不用维护与网络可编程芯片设备口的映射关系,同时网络可编程芯片能够自定义元数据结构与报文的封装逻辑,而且报文与元数据封装时不受上层业务影响,从而还能够降低业务复杂度,提高设备性能。141.以上所述,仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。142.需要说明的是,在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。143.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。144.本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。145.本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。146.本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。147.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
技术特征:
1.一种报文处理系统,其特征在于,所述报文处理系统包括网络可编程单元和计算单元,其中:所述网络可编程单元,用于获取初始报文和初始元数据,对所述初始报文和所述初始元数据进行封装处理,生成第一报文,并将所述第一报文发送给所述计算单元;所述计算单元,用于对所述第一报文进行解析处理,提取所述初始元数据;根据所述初始元数据生成携带发送端口信息的目标元数据,对所述初始报文和所述目标元数据进行封装处理,生成第二报文,并将所述第二报文发送给所述网络可编程单元;所述网络可编程单元,还用于基于所述第二报文中携带的所述发送端口信息,对所述初始报文进行转发。2.根据权利要求1所述的报文处理系统,其特征在于,所述网络可编程单元,具体用于对所述初始报文进行元数据提取,以获取所述初始元数据。3.根据权利要求1所述的报文处理系统,其特征在于,所述计算单元包括dpdk驱动模块,且所述dpdk驱动模块对应的数据报文结构包括元数据字段;其中:所述dpdk驱动模块,用于对所述第一报文进行元数据的解析处理,得到所述初始元数据,并将所述初始元数据存储至所述数据报文结构中的元数据字段。4.根据权利要求1所述的报文处理系统,其特征在于,所述数据报文结构还包括对外接口字段;其中:所述dpdk驱动模块,还用于确定所述初始报文的发送端口信息,以及将所述发送端口信息设置到所述数据报文结构中的对外接口字段。5.根据权利要求1所述的报文处理系统,其特征在于,所述网络可编程单元,具体用于从所述第二报文中提取所述目标元数据,并从所述目标元数据中获取所述发送端口信息,以通过所述发送端口信息将所述初始报文进行转发。6.根据权利要求1所述的报文处理系统,其特征在于,所述报文处理系统还包括管理单元;其中:所述计算单元,还用于在将所述第二报文发送给所述网络可编程单元之后,确定所述初始报文对应的流表信息,并将所述流表信息发送至所述管理单元;所述管理单元,用于根据接收到的所述流表信息,对所述网络可编程单元中的硬件流表执行更新操作。7.根据权利要求6所述的报文处理系统,其特征在于,所述管理单元,具体用于将所述流表信息及更新指令发送至所述网络可编程单元;所述网络可编程单元,具体用于根据所述更新指令,将所述流表信息更新到所述网络可编程单元的硬件流表中。8.一种报文处理方法,其特征在于,所述方法包括:通过网络可编程单元获取初始报文和初始元数据,对所述初始报文和所述初始元数据进行封装处理,生成第一报文,并将所述第一报文发送给计算单元;通过计算单元对所述第一报文进行解析处理,提取所述初始元数据;根据所述初始元数据生成携带发送端口信息的目标元数据,对所述初始报文和所述目标元数据进行封装处理,生成第二报文,并将所述第二报文发送给所述网络可编程单元;
基于所述第二报文中携带的所述发送端口信息,通过所述网络可编程单元对所述初始报文进行转发。9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,其中:所述存储器,用于存储能够在所述处理器上运行的计算机程序;所述处理器,用于在运行所述计算机程序时,执行如权利要求8所述的方法。10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现如权利要求8所述的方法。

技术总结
本申请公开了一种报文处理系统、方法、电子设备和计算机存储介质,该系统包括网络可编程单元和计算单元:网络可编程单元,用于获取初始报文和初始元数据,对初始报文和初始元数据进行封装处理,生成第一报文,并将第一报文发送给计算单元;计算单元,用于对第一报文进行解析处理,提取初始元数据;根据初始元数据生成携带发送端口信息的目标元数据,对初始报文和目标元数据进行封装处理,生成第二报文,并将第二报文发送给网络可编程单元;网络可编程单元,还用于基于第二报文中携带的发送端口信息,对初始报文进行转发。这样,计算单元不用维护与网络可编程芯片设备口的映射关系,还由于报文与元数据封装时不受上层业务影响,降低业务复杂度。业务复杂度。业务复杂度。


技术研发人员:贾玉 钱岭
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2022.07.29
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐