CN115134315A - 报文转发方法及相关装置 - Google Patents

报文转发方法及相关装置 Download PDF

Info

Publication number
CN115134315A
CN115134315A CN202211064917.9A CN202211064917A CN115134315A CN 115134315 A CN115134315 A CN 115134315A CN 202211064917 A CN202211064917 A CN 202211064917A CN 115134315 A CN115134315 A CN 115134315A
Authority
CN
China
Prior art keywords
message
flow table
encapsulation
tunnel encapsulation
tunnel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211064917.9A
Other languages
English (en)
Other versions
CN115134315B (zh
Inventor
黄峰
余兆国
孙路遥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Xingyun Zhilian Technology Co Ltd
Original Assignee
Zhuhai Xingyun Zhilian Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhuhai Xingyun Zhilian Technology Co Ltd filed Critical Zhuhai Xingyun Zhilian Technology Co Ltd
Priority to CN202211064917.9A priority Critical patent/CN115134315B/zh
Publication of CN115134315A publication Critical patent/CN115134315A/zh
Application granted granted Critical
Publication of CN115134315B publication Critical patent/CN115134315B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供了一种报文转发方法及相关装置,应用于数据处理器,数据处理器中包括控制器和处理器,控制器中部署有虚拟交换机;方法包括:处理器在接收到网络侧发送的首包时,若未匹配到流表,则将第一报文进行软件转发,并计算第一UDP源端口号;在硬件卸载时,生成下行隧道封装精确流表和隧道封装表,并将封装动作、封装索引和第一UDP源端口号添加到下行隧道封装精确流表的动作字段中;同时,将封装索引与隧道封装表中的第一报文头进行关联,并向处理器卸载下行隧道封装精确流表和隧道封装表。这样,在流表的动作字段中携带UDP源端口号,使得硬件能够直接从流表中获取,不需要hash计算UDP源端口号,节省了硬件算力。

Description

报文转发方法及相关装置
技术领域
本申请属于网络通信技术领域,具体涉及一种报文转发方法及相关装置。
背景技术
目前,现有技术在OVS(Open VSwitch,开放虚拟交换标准)软转时,指导报文转发的流表中,隧道封装表UDP源端口号填0,在最后发包之前,根据内层报文hash得到该源端口,从而区分不同的内层报文。
由于软转生成的流表不带UDP源端口号,因此在OVS流表卸载至硬件时,隧道封装表并不会将软件计算的UDP源端口带到硬件。硬件针对接收到的每个报文进行hash后计算出外层隧道报文的UDP源端口;由于对每个报文都需要进行hash,而且在hash时不知道后续会不会命中隧道封装相关的流表,当网络流量较大时,会占用很多的硬件算力,浪费硬件资源。
发明内容
本申请实施例提供了一种报文转发方法及相关装置,以期在硬件转发时节省硬件算力。
第一方面,本申请实施例提供了一种报文转发方法,应用于数据处理器DPU,所述数据处理器中包括控制器和处理器,所述控制器中部署有虚拟交换机;所述方法包括:
所述处理器接收到网络侧发送的首包,所述首包包括第一报文;
所述处理器根据所述第一报文匹配流表;
若未匹配到流表,则向所述虚拟交换机转发所述首包,以进行软件转发;
在软件转发的同时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作、封装索引和第一UDP源端口号,所述第一UDP源端口号在所述软件转发时得到,所述第一UDP源端口号为所述第一报文的标识,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第二UDP源端口号,所述第二UDP源端口号的端口号为预设数值;
所述虚拟交换机向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表。
第二方面,本申请实施例提供了一种报文转发方法,应用于数据处理器DPU,所述数据处理器中包括控制器和处理器,所述控制器中维护有虚拟交换机;所述方法包括:
所述处理器接收到网络侧发送的首包,所述首包包括第一报文;
所述处理器根据所述第一报文匹配流表;
若未匹配到流表,则向所述虚拟交换机转发所述首包,以对所述第一报文进行软件转发;
在所述软件转发时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作和封装索引,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第二UDP源端口号,所述第二UDP源端口号的端口号为预设数值;
在所述隧道封装表中添加第一UDP源端口号,所述第一UDP源端口号在所述软件转发时生成,所述第一UDP源端口号为所述第一报文的标识;
所述虚拟交换机向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表。
第三方面,本申请实施例提供了一种报文转发装置,应用于数据处理器DPU,所述DPU中部署有虚拟交换机;所述装置包括:
接收单元,用于接收网络侧发送的首包,所述首包包括第一报文;
匹配单元,根据所述首包中的第一报文匹配流表,若未匹配到流表,则将所述第一报文向控制单元转发所述首包,以进行软件转发;
生成单元,用于在软件转发的同时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作、封装索引和第一UDP源端口号,所述第一UDP源端口号在所述软件转发时得到,所述第一UDP源端口号为所述第一报文的标识,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第二UDP源端口号,所述第二UDP源端口号的端口号为预设数值;
发送单元,用于向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表。
第四方面,本申请实施例提供了一种电子设备,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行本申请实施例第一方面至第三方面中任一方面的步骤的指令。
第五方面,本申请实施例提供了一种计算机存储介质,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如本实施例第一方面至第三方面中任一方面所描述的部分或全部步骤。
第六方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面至第三方面中任一方面所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中,首先通过处理器在接收到网络侧发送的首包时,若未匹配到流表,则将第一报文进行软件转发,并计算第一UDP源端口号;在硬件卸载时,生成下行隧道封装精确流表,并将封装动作、封装索引和第一UDP源端口号添加到下行隧道封装精确流表的动作字段中;同时,将封装索引与隧道封装表中的第一报文头进行关联,并向处理器卸载下行隧道封装精确流表和隧道封装表。这样,在下行隧道封装精确流表的动作字段中携带第一UDP源端口号,使得硬件能够直接从流表中获取到第一UDP源端口号,而不需要通过hash计算得到第一UDP源端口号,节省了硬件算力。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理器DPU的结构示意图;
图2是本申请实施例提供的一种报文转发方法的流程示意图;
图3是本申请实施例提供的另一种报文转发方法的流程示意图;
图4是本申请实施例提供的一种报文转发装置的流程示意图;
图5是本申请实施例提供的另一种报文转发装置的流程示意图;
图6是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、系统、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面先对本申请涉及到的相关术语进行介绍。
OVS(Open vSwitch):Open vSwitch即开放虚拟交换标准。具体点说,OpenvSwitch是在开源的Apache2.0许可下的产品级质量的多层虚拟交换标准。它旨在通过编程扩展,使庞大的网络自动化(配置、管理、维护),同时还支持标准的管理接口和协议(如NetFlow,sFlow, SPAN,RSPAN,CLI,LACP,802.1ag)。总的来说,它被设计为支持分布在多个物理服务器,例如VMware的vNetwork分布式vSwitch或思科的Nexus1000V。虚拟交换就是利用虚拟平台,通过软件的方式形成交换机部件。跟传统的物理交换机相比,虚拟交换机同样具备众多优点,一是配置更加灵活。一台普通的服务器可以配置出数十台甚至上百台虚拟交换机,且端口数目可以灵活选择。例如,VMware的ESX一台服务器可以仿真出248台虚拟交换机,且每台交换机预设虚拟端口即可达56个;二是成本更加低廉,通过虚拟交换往往可以获得昂贵的普通交换机才能达到的性能,例如微软的Hyper-V平台,虚拟机与虚拟交换机之间的联机速度轻易可达10Gbps。
DPU(Data Processing Unit,数据处理单元):它是最新发展起来的专用处理器的一个大类,是继CPU、GPU之后,数据中心场景中的第三颗重要的算力芯片,为高带宽、低延迟、数据密集的计算场景提供计算引擎。DPU将作为CPU的卸载引擎,释放CPU的算力到上层应用。
OverLay:是一种隧道技术,VXLAN,NVGRE以及GENEVE是典型的三种隧道技术,它们都是通过隧道技术实现OverLay二层网络隔离。隧道技术的原理是将OverLay原始二层数据帧进行封装后通过UnderLay进行传输,我们在对现有物理网络不做任何改造的情况下,通过隧道技术在现有的物理网络上创建了多个虚拟网络,实现了数据中心的自动化和智能化。在VXLAN和GENEVE转发时隧道的外层报文包含UDP信息,其中UDP源端口号起着关键作用,根据该源端口号可以做UnderLay五元组的hash,从而实现UnderLay网络的负荷分担。
DPDK:全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持。通俗地说,就是一个用来进行包数据处理加速的软件库。
目前,现有技术在软转所生成的流表不带UDP源端口号,因此在流表卸载到硬件时,硬件需要对接收到的每个报文进行hash运算,才能够得到对应的UDP源端口号,这样在网络流量较大时,会占用很多的硬件算力,浪费硬件资源。
为解决上述问题,本申请实施例提供了一种报文转发方法。该方法可以应用于报文转发的场景中,该方法应用于数据处理器DPU。可以通过DPU中的处理器接收网络侧发送的首包;再由所述处理器根据所述首包中的第一报文匹配流表;若未匹配到流表,则向所述虚拟交换机转发所述首包,以进行软件转发;在软件转发的同时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表;然后所述虚拟交换机根据所述封装索引生成隧道封装表;所述虚拟交换机将所述封装索引与所述隧道封装表进行关联;所述虚拟交换机向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表。本方案可以适用于多种场景,包括但不限于上述提到的应用场景。
下面介绍本申请实施例涉及的系统架构。
请参阅图1,本申请实施例提供一种数据处理器DPU10的结构示意图,所述DPU10包括控制器130和处理器120,所述控制器130中部署有虚拟交换机131,所述控制器130与所述处理器120连接,所述处理器通过第一网口110(即图1中的网口1)接收报文(第一报文、第二报文等),所述虚拟交换机131用于进行软件转发处理和硬件卸载处理。如图1中的路径1至4所示,路径1中在软件转发时由处理器接收报文,然后根据报文进行流表匹配,若未匹配到对应的流表,则为首包,因此向所述虚拟交换机转发该报文;路径2中,所述虚拟交换机131通过第一rep端口(图1中的rep1)接收该报文,然后对接收到的报文进行封装处理;路径3中,所述虚拟交换机将封装好的报文通过第二rep端口(图1中的rep2)发送给所述处理器120;路径4中,所述处理器120通过以太网端口140(即图1中的网口2)转发至外网;路径4中,在硬件卸载时,所述虚拟交换机131生成下行隧道封装精确流表和隧道封装表,然后在所述下行隧道封装精确流表或所述隧道封装表中添加第一UDP源端口号后,发送给所述处理器120。如路径5和路径6所示,在路径5中,所述处理器120接收到报文,并且匹配到流表,然后根据流表查询到报文的UDP源端口号,通过隧道封装表对报文进行封装后,将该UDP源端口号添加到外层报文中,得到隧道报文;路径6中,所述处理器120将所述隧道报文发送给所述以太网端口140,由所述以太网端口140将所述隧道报文转发到外网。这样,使得处理器对再接收到的同类报文进行直接转发,硬件能够直接从流表或隧道封装表中获取到UDP源端口号,而不需要通过hash计算UDP源端口号,节省了硬件算力。
下面对具体的方法进行详细的介绍。
请参阅图2,是本申请实施例提供的一种报文转发方法的流程示意图,所述方法应用于数据处理器DPU,所述数据处理器中包括控制器和处理器,所述控制器中部署有虚拟交换机;所述方法包括:
步骤201、所述处理器接收到网络侧发送的首包。
示例的,所述首包包括第一报文。
示例的,所述网络侧可以是任意的网络环境,网络设备将所述第一报文发送到网络中,DPU接收所述第一报文。
步骤202、所述处理器根据所述首包中的第一报文匹配流表。
示例的,报文匹配机制是通过查询流表中是否存在与报文相匹配的流表表项,若存在则表示命中,若不存在,则未命中。
步骤203、若未匹配到流表,则向所述虚拟交换机转发所述首包,以对所述第一报文进行软件转发。
在一个可能的实施例中,所述软件转发的过程包括:
所述虚拟交换机根据所述第一报文和配置信息生成处理流表,所述配置信息由管理用户所输入的配置指令生成,所述处理流表包括所述第一报文头;所述虚拟交换机根据第一报文的类型进行hash运算,得到所述第一UDP源端口号;所述虚拟交换机向所述第一报文头中添加所述第一UDP源端口号,得到外层隧道报文;所述虚拟交换机将所述外层隧道报文编辑到所述第一报文的外层,得到隧道报文;所述虚拟交换机计算出所述隧道报文的第一输出端口;所述虚拟交换机从所述第一输出端口向所述处理器发送所述隧道报文;所述处理器从以太网端口向外网发送所述隧道报文。
具体实现中,所述虚拟交换机接收到所述第一报文之后,根据所述第一报文和控制器下发的配置信息生成处理流表,然后确定所述第一报文的类型,如果是三层报文选取三元组进行hash运算,如果是四层报文则选取五元组进行hash运算,在hash运算之后得到所述第一UDP源端口号;然后所述虚拟交换机再将所述第一UDP源端口号添加到所述处理流表的所述第一报文头中,得到外层隧道报文;之后,将所述外层隧道报文编辑到所述第一报文的外层,以对所述第一报文进行封装,得到隧道报文;然后计算出所述隧道报文的第一输出端口,所述第一输出端口为所述虚拟交换机的输出端口;然后从所述第一输出端口向所述处理器发送所述隧道报文。所述处理器接收到所述隧道报文之后,通过以太网端口发送到网络中,由网络侧设备发送到目的设备中。
可以看出,本实施例中,通过DPU对第一报文进行处理,实现了DPU软件转发功能,为CPU降低了算力负担。
步骤204、在所述软件转发时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表中的动作字段包括第一UDP源端口号。
示例的,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作、封装索引和第一UDP源端口号,所述第一UDP源端口号在所述软件转发时得到,所述第一UDP源端口号为所述第一报文的标识,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第二UDP源端口号,所述第二UDP源端口号的端口号为预设数值。
在一个可能的实施例中,所述由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,包括:所述虚拟交换机执行以下操作得到下行隧道封装精确流表和隧道封装表:根据所述第一报文和配置信息生成处理流表,所述处理流表中包括至少一个流表表项和所述第一报文头,所述流表表项根据所述配置信息生成,所述配置信息由管理用户所输入的配置指令生成;根据所述至少一个流表表项生成下行隧道封装精确流表,所述至少一个流表表项中包括动作字段,所述动作字段包括封装动作、所述封装索引和所述第一UDP源端口号;根据第一报文的类型进行hash运算,得到所述第一UDP源端口号;向所述下行隧道封装精确流表的动作字段中添加所述第一UDP源端口号;根据所述第一报文头生成隧道封装表;将所述封装索引与所述隧道封装表中的所述第一报文头进行关联。
具体实现中,由管理用户通过管理设备输入配置指令,所述控制器根据所述配置指令生成配置信息,并将所述配置信息发送给所述虚拟交换机。当所述虚拟交换机接收到第一报文时且未匹配到流表时,根据所述配置信息生成处理流表,所述处理流表包括至少一个流表表项和第一报文头。若此时开启了硬件卸载,所述虚拟交换机再根据所述至少一个流表表项生成下行隧道封装精确流表,hash出对应的第一UDP源端口号添加到所述至少一个流表表项的动作字段中,以在所述下行隧道封装精确流表携带第一UDP源端口号;然后根据所述第一报文头生成隧道封装表,最后将所述下行隧道封装精确流表中的至少一个流表表项中的封装索引与所述隧道封装表中的第一报文头进行关联,使得后续可以根据所述封装索引获取到所述第一报文头。
具体的,在通过处理流表处理所述第一报文的过程中,可以通过dpdk技术实现,由于该技术为现有技术,在此不做详述。
可以看出,本实施例中,虚拟交换机基于处理流表拆分出下行隧道封装精确流表和隧道封装表,并将至少一个流表表项中的封装索引与所述隧道封装表中的第一报文头进行关联,使得在将下行隧道封装精确流表和隧道封装表发送给处理器之后,处理器能够对接收到的同类报文直接根据所述封装索引从所述隧道封装表中获取到第一报文头,然后根据所述至少一个流表表项进行相应的转发处理,实现了报文转发的硬件加速。
步骤205、所述虚拟交换机向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表。
在一个可能的实施例中,所述方法还包括:
在接收所述下行隧道封装精确流表和所述隧道封装表后,所述处理器执行以下操作:
若接收到第二报文,则根据所述第二报文匹配流表;若匹配到所述下行隧道封装精确流表,则查询所述下行隧道封装精确流表中的所述封装动作和封装索引;根据所述封装索引查询到所述隧道封装表中的所述第一报文头;将所述第一报文头作为所述第二报文的外层隧道报文编辑到所述第二报文的外层,得到隧道报文;从所述下行隧道封装精确流表中获取所述第一UDP源端口号;将所述外层隧道报文的所述第二UDP源端口号修改为所述第一UDP源端口号;向外网转发所述隧道报文。
具体实现中,在所述处理器接收到第二报文时,根据所述第二报文进行流表匹配,查询所述下行隧道封装精确流表是否存在与所述第二报文一致的流表表项,若存在,则命中所述下行隧道封装精确流表,若不存在,则未命中。若命中所述下行隧道封装精确流表,则表示所述第二报文与所述第一报文为同类型报文。在命中所述下行隧道封装精确流表之后,查询所述下行隧道封装精确流表中的动作字段中的处理流程,根据该处理流程对所述第二报文进行处理;即对所述第二报文进行报文封装。具体的报文封装过程为:根据所述封装索引查询到所述隧道封装表,然后将所述隧道封装表中的第一报文头封装到所述第二报文的外层,然后再将所述第一报文头中的第二UDP源端口号替换为所述动作字段中携带的第一UDP源端口号。
示例的,在隧道封装表中携带的第二UDP源端口号是为了占位,所述预设数值可以是0,也可以是其他任意数值,也可以为空,在此不做唯一性限定。
可以看出,本实施例中,通过处理器对处理过的同类报文进行封装处理后直接转发,加快了报文转发速度,提高了报文转发效率。
在一个可能的实施例中,所述DPU中部署有多个虚拟DPU,所述虚拟DPU通过调用所述DPU中的硬件资源或软件资源进行工作;
所述若接收到第二报文,则根据所述第二报文匹配流表之前,所述方法还包括:
在所述处理器中设置流表池;
所述处理器在接收到所述下行隧道封装精确流表后,将所述下行隧道封装精确流表保存在所述流表池中;
所述处理器确定所述多个虚拟DPU中的关联状况,所述关联状况是指每个虚拟DPU所关联的所述下行隧道封装精确流表的数量;
将所述数量最少的虚拟DPU与当前接收到的所述下行隧道封装精确流表进行关联。
示例的,所述流表池为所述处理器中划分出的存储空间。
具体实现中,在所述DPU中设置多个虚拟DPU,以进行多报表并行处理和转发。具体的,所述处理器接收到所述虚拟交换机发送是所述下行隧道封装精确流表后,将所述下行隧道封装精确流表存储在预设的流表池中,确定所述DPU中每个虚拟DPU所关联的所述下行隧道封装精确流表的数量,将所述数量最少的虚拟DPU与当前接收到的所述下行隧道封装精确流表进行关联,确保每个虚拟DPU所关联的所述下行隧道封装精确流表的数量误差在不超过1,进而使得每个虚拟DPU所能够处理的报表不同,且所能够处理的报表数量相等或近似。
在一个可能的实施例中,所述若接收到第二报文,则根据所述第二报文匹配流表之后,所述方法还包括:
根据匹配到的下行隧道封装精确流表,索引到对应的第一虚拟DPU,所述第一虚拟DPU为所述多个虚拟DPU中的任一个;
向所述第一虚拟DPU发送所述匹配到的下行隧道封装精确流表;
所述第一虚拟DPU执行以下操作,以实现硬件转发:
根据所述下行隧道封装精确流表查询所述下行隧道封装精确流表中的所述封装动作和封装索引;
根据所述封装索引查询到所述隧道封装表中的所述第一报文头;
将所述第一报文头作为所述第二报文的外层隧道报文编辑到所述第二报文的外层,得到隧道报文;
从所述下行隧道封装精确流表中获取所述第一UDP源端口号;
将所述外层隧道报文的所述第二UDP源端口号修改为所述第一UDP源端口号;
向外网转发所述隧道报文。
具体实现中,所述通过与匹配到的所述下行隧道封装精确流表所关联的所述第一虚拟DPU调用所述处理器中的硬件资源和软件资源来执行后续的硬件转发处理,能够使得每种类型的报文都有特定的虚拟DPU来适配处理,使得所述DPU能够同时处理多种类型的报文,提高了所述DPU的处理效率。
在一个可能的实施例中,所述DPU中部署有多个虚拟DPU,所述虚拟DPU通过调用所述DPU中的硬件资源或软件资源进行工作;
所述若接收到第二报文,则根据所述第二报文匹配流表之前,所述方法还包括:
在所述处理器中设置流表池;
所述处理器在接收到所述下行隧道封装精确流表后,将所述下行隧道封装精确流表保存在所述流表池中。
可以看出,本实施例中通过流表池汇总所有的所述下行隧道封装精确流表,有利于进行快速匹配,提高流表匹配效率。
在一个可能的实施例中,所述若接收到第二报文,则根据所述第二报文匹配流表之后,所述方法还包括:
确定所述多个虚拟DPU当前的工作状态,所述工作状态包括工作中和空闲状态;
随机确定出一个处于空闲状态的的第二虚拟DPU,所述第二虚拟DPU为所述多个虚拟DPU中的任一个;
向所述第二虚拟DPU发送所述下行隧道封装精确流表;
所述第二虚拟DPU执行以下操作,以实现硬件转发:
根据所述下行隧道封装精确流表查询所述下行隧道封装精确流表中的所述封装动作和封装索引;
根据所述封装索引查询到所述隧道封装表中的所述第一报文头;
将所述隧道封装表中的第一报文头作为所述第二报文的外层隧道报文编辑到所述第二报文的外层,得到隧道报文;
从所述下行隧道封装精确流表中获取所述第一UDP源端口号;
将所述外层隧道报文的所述第二UDP源端口号修改为所述第一UDP源端口号;
向外网转发所述隧道报文。
可以看出,本实施例中,通过随机调用空闲状态下的虚拟DPU进行硬件转发,使得所述DPU能够同时处理多个报文,提高处理效率。
在一个可能的实施例中,所述虚拟交换机向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表之前,所述方法还包括:
将所述下行隧道封装精确流表与优先级标识进行关联,所述优先级标识用于指示所述下行隧道封装精确流表所对应的第一报文的处理优先级。
在一个可能的实施例中,在匹配到所述下行隧道封装精确流表之后,所述方法还包括:
若当前不存在处于空闲状态的虚拟DPU,则获取所述下行隧道精确流表的第一优先级标识;
将所述第一优先级标识与等待队列中所有待处理第三报文的第二优先级标识进行逐一对比,按照优先级由高到低的顺序为所述第二报文的安排处理顺序。
具体实现中,若所述第一优先级标识的级别比所有的第二优先级标识都高,则将所述第二报文插入所述等待队列的第一序列,所述第一序列为所述等待队列中即将第一个被处理的报文。同理,若优先级低则往后排,若优先级相同则按照时间顺序进行排序。
可以看出,本实施例实现了通过优先级进行处理,有利于先对较为紧急的报文进行处理,避免处理不及时导致出现问题。
请参阅图3,是本申请实施例提供的另一种报文转发方法的流程示意图,所述方法应用于数据处理器DPU,所述数据处理器中包括控制器和处理器,所述控制器中维护有虚拟交换机;所述方法包括:
步骤301、所述处理器接收到网络侧发送的首包。
其中,所述首包包括第一报文。
步骤302、所述处理器根据所述首包中的第一报文匹配流表。
步骤303、若未匹配到流表,则向所述虚拟交换机转发所述首包,以对所述第一报文进行软件转发。
步骤304、在所述软件转发时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述隧道封装表中的第一报文头包括第一UDP源端口号。
其中,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作和封装索引,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一UDP源端口号在所述软件转发时生成,所述第一UDP源端口号为所述第一报文的标识。步骤305、所述虚拟交换机向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表。
可以看出,本申请实施例中,首先通过处理器在接收到网络侧发送的首包时,若未匹配到流表,则将第一报文进行软件转发,并计算第一UDP源端口号;在硬件卸载时,生成下行隧道封装精确流表,并将封装动作、封装索引添加到下行隧道封装精确流表的动作字段中;根据封装索引生成隧道封装表,然后再所述隧道封装表中添加所述第一UDP源端口号,然后将封装索引与隧道封装表进行关联,并向处理器卸载下行隧道封装精确流表和隧道封装表。这样,在隧道封装表中携带第一UDP源端口号,使得硬件能够直接从隧道封装表中获取到第一UDP源端口号,而不需要通过hash计算得到第一UDP源端口号,节省了硬件算力。
在一个可能的实施例中,所述方法还包括:在接收所述下行隧道封装精确流表和所述隧道封装表后,所述处理器执行以下操作:若接收到第二报文,则根据所述第二报文匹配流表;若匹配到所述下行隧道封装精确流表,则查询所述下行隧道封装精确流表中的所述封装动作和封装索引;根据所述封装索引查询到所述隧道封装表中的所述第一报文头;将所述第一报文头作为所述第二报文的外层隧道报文编辑到所述第二报文的外层,得到隧道报文;向外网转发所述隧道报文。
具体实现中,由于所述隧道封装表中已携带了所述第一UDP源端口号,因此,在封装过程中,只需直接将所述隧道封装表中的第一报文头封装到所述第二报文的外层,即可得到携带了第一UDP源端口号的隧道报文,进一步加快了硬件转发的速度。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,移动电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
请参阅图4,是本申请实施例提供的一种报文转发装置40的流程示意图,所述装置应用于数据处理器DPU,所述DPU中部署有虚拟交换机;所述装置包括:
接收单元41,用于接收网络侧发送的首包,所述首包包括第一报文;
匹配单元42,根据所述首包中的第一报文匹配流表,若未匹配到流表,则将所述第一报文向控制单元转发所述首包,以进行软件转发;
生成单元43,用于在软件转发的同时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作、封装索引和第一UDP源端口号,所述第一UDP源端口号在所述软件转发时得到,所述第一UDP源端口号为所述第一报文的标识,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第二UDP源端口号,所述第二UDP源端口号的端口号为预设数值;
发送单元44,用于向处理单元卸载所述下行隧道封装精确流表和所述隧道封装表。
可以看出,本实施例中,首先通过处理器在接收到网络侧发送的首包时,若未匹配到流表,则将第一报文进行软件转发,并计算第一UDP源端口号;在硬件卸载时,生成下行隧道封装精确流表,并将封装动作、封装索引和第一UDP源端口号添加到下行隧道封装精确流表的动作字段中;根据封装索引生成隧道封装表,然后将封装索引与隧道封装表进行关联,并向处理器卸载下行隧道封装精确流表和隧道封装表。这样,在下行隧道封装精确流表的动作字段中携带第一UDP源端口号,使得硬件能够直接从流表中获取到第一UDP源端口号,而不需要通过hash计算得到第一UDP源端口号,节省了硬件算力。
在一个可能的实施例中,所述装置还包括:软件转发单元,用于通过虚拟交换机根据所述第一报文和配置信息生成处理流表,所述配置信息由管理用户所输入的配置指令生成,所述处理流表包括所述第一报文头;所述虚拟交换机根据第一报文的类型进行hash运算得到所述第一UDP源端口号;在通过所述虚拟交换机向所述外层隧道报文头中添加所述第一UDP源端口号,得到外层隧道报文;然后通过所述虚拟交换机将所述外层隧道报文编辑到所述第一报文的外层,得到隧道报文;之后通过所述虚拟交换机计算出所述隧道报文的第一输出端口;最后通过所述虚拟交换机从所述第一输出端口向所述处理器发送所述隧道报文;通过所述处理单元从以太网端口向外网发送所述隧道报文。
在一个可能的实施例中,在接收所述下行隧道封装精确流表和所述隧道封装表后,所述装置还包括:所述接收单元41,用于接收到第二报文所述匹配单元42,用于根据所述第二报文匹配流表;所述处理单元,用于在匹配到所述下行隧道封装精确流表时,查询所述下行隧道封装精确流表中的所述封装动作和封装索引;根据所述封装索引查询到所述隧道封装表中的所述第一报文头;将所述第一报文头作为所述第二报文的外层隧道报文编辑到所述第二报文的外层,得到隧道报文;从所述下行隧道封装精确流表中获取所述第一UDP源端口号;将所述外层隧道报文的所述第二UDP源端口号修改为所述第一UDP源端口号;向外网转发所述隧道报文。
在一个可能的实施例中,所述DPU中部署有多个虚拟DPU,所述虚拟DPU通过调用所述DPU中的硬件资源或软件资源进行工作;所述若接收到第二报文,则根据所述第二报文匹配流表的方面之前,所述装置还包括:设置单元,用于在所述处理器中设置流表池;所述处理器在接收到所述下行隧道封装精确流表后,将所述下行隧道封装精确流表保存在所述流表池中。
在一个可能的实施例中,所述由所述生成单元43生成下行隧道封装精确流表和隧道封装表的方面,包括:所述生成单元43执行以下操作得到所述下行隧道封装精确流表和所述隧道封装表:根据所述第一报文和配置信息生成处理流表,所述处理流表中包括至少一个流表表项和所述第一报文头,所述流表表项根据所述配置信息生成,所述配置信息由管理用户所输入的配置指令生成;根据所述至少一个流表表项生成下行隧道封装精确流表,所述至少一个流表表项中包括动作字段,所述动作字段包括封装动作和所述封装索引;根据第一报文的类型进行hash运算,得到所述第一UDP源端口号;向所述下行隧道封装精确流表的动作字段中添加所述第一UDP源端口号;根据所述第一报文头生成隧道封装表;将所述封装索引与所述隧道封装表中的所述第一报文头进行关联。
请参阅图5,是本申请实施例提供的另一种报文转发装置50的流程示意图,所述装置应用于数据处理器DPU;所述装置包括:
接收单元51,用于接收到网络侧发送的首包,所述首包包括第一报文;
匹配单元52,用于根据所述第一报文匹配流表,若未匹配到流表,则向所述虚拟交换机转发所述首包
软件转发单元53,用于对所述第一报文进行软件转发;
生成单元54,用于在所述软件转发时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作和封装索引,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第一UDP源端口号,所述第一UDP源端口号在所述软件转发时生成,所述第一UDP源端口号为所述第一报文的标识;
发送单元55,用于向处理单元卸载所述下行隧道封装精确流表和所述隧道封装表。
可以看出,本实施例中,首先通过处理器在接收到网络侧发送的首包时,若未匹配到流表,则将第一报文进行软件转发,并计算第一UDP源端口号;在硬件卸载时,生成下行隧道封装精确流表,并将封装动作、封装索引添加到下行隧道封装精确流表的动作字段中;根据封装索引生成隧道封装表,然后再所述隧道封装表中添加所述第一UDP源端口号,然后将封装索引与隧道封装表进行关联,并向处理器卸载下行隧道封装精确流表和隧道封装表。这样,在隧道封装表中携带第一UDP源端口号,使得硬件能够直接从隧道封装表中获取到第一UDP源端口号,而不需要通过hash计算得到第一UDP源端口号,节省了硬件算力。
在一个可能的实施例中,接收所述下行隧道封装精确流表和所述隧道封装表后,所述装置还包括:所述接收单元51,用于接收第二报文;匹配单元52,用于在接收到第二报文时,根据所述第二报文匹配流表;所述处理单元,用于在匹配到所述下行隧道封装精确流表时,查询所述下行隧道封装精确流表中的所述封装动作和封装索引;根据所述封装索引查询到所述隧道封装表中的所述第一报文头;将所述第一报文头作为所述第二报文的外层隧道报文编辑到所述第二报文的外层,得到隧道报文;向外网转发所述隧道报文。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
本申请还提供了一种电子设备60,如图6所示,其包括至少一个处理器(processor)61;显示屏62;以及存储器(memory)63,还可以包括通信接口(CommunicationsInterface)65和总线64。其中,处理器61、显示屏62、存储器63和通信接口65可以通过总线64完成相互间的通信。显示屏62设置为显示初始设置模式中预设的用户引导界面。通信接口65可以传输信息。处理器61可以调用存储器63中的逻辑指令,以执行上述实施例中的方法。
可选的,所述电子设备60可以是移动电子设备,也可以是电子设备或其他设备,在此不做唯一性限定。
此外,上述的存储器63中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器63作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器61通过运行存储在存储器63中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
存储器63可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备60的使用所创建的数据等。此外,存储器63可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、易失性存储器或非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。等各种可以存储程序代码的介质。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,可轻易想到变化或替换,均可作各种更动与修改,包含上述不同功能、实施步骤的组合,包含软件和硬件的实施方式,均在本发明的保护范围。

Claims (10)

1.一种报文转发方法,其特征在于,应用于数据处理器DPU,所述数据处理器中包括控制器和处理器,所述控制器中部署有虚拟交换机;所述方法包括:
所述处理器接收到网络侧发送的首包,所述首包包括第一报文;
所述处理器根据所述第一报文匹配流表;
若未匹配到流表,则向所述虚拟交换机转发所述首包,以对所述第一报文进行软件转发;
在软件转发的同时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作、封装索引和第一UDP源端口号,所述第一UDP源端口号在所述软件转发时得到,所述第一UDP源端口号为所述第一报文的标识,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第二UDP源端口号,所述第二UDP源端口号的端口号为预设数值;
所述虚拟交换机向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表。
2.根据权利要求1所述的方法,其特征在于,所述软件转发的过程包括:
所述虚拟交换机根据所述第一报文和配置信息生成处理流表,所述配置信息由管理用户所输入的配置指令生成,所述处理流表包括所述第一报文头;
所述虚拟交换机根据第一报文的类型进行hash运算,得到所述第一UDP源端口号;
所述虚拟交换机向所述第一报文头中添加所述第一UDP源端口号,得到外层隧道报文;
所述虚拟交换机将所述外层隧道报文编辑到所述第一报文的外层,得到隧道报文;
所述虚拟交换机计算出所述隧道报文的第一输出端口;
所述虚拟交换机从所述第一输出端口向所述处理器发送所述隧道报文;
所述处理器从以太网端口向外网发送所述隧道报文。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收所述下行隧道封装精确流表和所述隧道封装表后,所述处理器执行以下操作:
若接收到第二报文,则根据所述第二报文匹配流表;
若匹配到所述下行隧道封装精确流表,则查询所述下行隧道封装精确流表中的所述封装动作和封装索引;
根据所述封装索引查询到所述隧道封装表中的所述第一报文头;
将所述第一报文头作为所述第二报文的外层隧道报文编辑到所述第二报文的外层,得到隧道报文;
从所述下行隧道封装精确流表中获取所述第一UDP源端口号;
将所述外层隧道报文的所述第二UDP源端口号修改为所述第一UDP源端口号;
向外网转发所述隧道报文。
4.根据权利要求3所述的方法,其特征在于,所述DPU中部署有多个虚拟DPU,所述虚拟DPU通过调用所述DPU中的硬件资源或软件资源进行工作;
所述若接收到第二报文,则根据所述第二报文匹配流表之前,所述方法还包括:
在所述处理器中设置流表池;
所述处理器在接收到所述下行隧道封装精确流表后,将所述下行隧道封装精确流表保存在所述流表池中。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,包括:
所述虚拟交换机执行以下操作得到所述下行隧道封装精确流表和所述隧道封装表:
根据所述第一报文和配置信息生成处理流表,所述处理流表中包括至少一个流表表项和所述第一报文头,所述流表表项根据所述配置信息生成,所述配置信息由管理用户所输入的配置指令生成;
根据所述至少一个流表表项生成下行隧道封装精确流表,所述至少一个流表表项中包括动作字段,所述动作字段包括封装动作和所述封装索引;
根据第一报文的类型进行hash运算,得到所述第一UDP源端口号;
向所述下行隧道封装精确流表的动作字段中添加所述第一UDP源端口号;
根据所述第一报文头生成隧道封装表;
将所述封装索引与所述隧道封装表中的所述第一报文头进行关联。
6.一种报文转发方法,其特征在于,应用于数据处理器DPU,所述数据处理器中包括控制器和处理器,所述控制器中维护有虚拟交换机;所述方法包括:
所述处理器接收到网络侧发送的首包,所述首包包括第一报文;
所述处理器根据所述第一报文匹配流表;
若未匹配到流表,则向所述虚拟交换机转发所述首包,以对所述第一报文进行软件转发;
在所述软件转发时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作和封装索引,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第一UDP源端口号,所述第一UDP源端口号在所述软件转发时生成,所述第一UDP源端口号为所述第一报文的标识;
所述虚拟交换机向所述处理器卸载所述下行隧道封装精确流表和所述隧道封装表。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在接收所述下行隧道封装精确流表和所述隧道封装表后,所述处理器执行以下操作:
若接收到第二报文,则根据所述第二报文匹配流表;
若匹配到所述下行隧道封装精确流表,则查询所述下行隧道封装精确流表中的所述封装动作和封装索引;
根据所述封装索引查询到所述隧道封装表中的所述第一报文头;
将所述隧道封装表中的所述第一报文头作为所述第二报文的外层隧道报文编辑到所述第二报文的外层,得到隧道报文;
向外网转发所述隧道报文。
8.一种报文转发装置,其特征在于,应用于数据处理器DPU,所述DPU中部署有虚拟交换机;所述装置包括:
接收单元,用于接收网络侧发送的首包,所述首包包括第一报文;
匹配单元,根据所述首包中的第一报文匹配流表,若未匹配到流表,则将所述第一报文向控制单元转发所述首包,以进行软件转发;
生成单元,用于在软件转发的同时,若需要进行硬件卸载,则由所述虚拟交换机生成下行隧道封装精确流表和隧道封装表,所述下行隧道封装精确流表包括动作字段,所述动作字段包括封装动作、封装索引和第一UDP源端口号,所述第一UDP源端口号在所述软件转发时得到,所述第一UDP源端口号为所述第一报文的标识,所述隧道封装表中存放的是需要封装的第一报文头,所述封装索引与所述隧道封装表中的所述第一报文头关联,所述第一报文头中包括第二UDP源端口号,所述第二UDP源端口号的端口号为预设数值;
发送单元,用于向处理单元卸载所述下行隧道封装精确流表和所述隧道封装表。
9.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-7任一项所述的方法中的步骤的指令。
10.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-7任一项所述的方法中的步骤的指令。
CN202211064917.9A 2022-09-01 2022-09-01 报文转发方法及相关装置 Active CN115134315B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211064917.9A CN115134315B (zh) 2022-09-01 2022-09-01 报文转发方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211064917.9A CN115134315B (zh) 2022-09-01 2022-09-01 报文转发方法及相关装置

Publications (2)

Publication Number Publication Date
CN115134315A true CN115134315A (zh) 2022-09-30
CN115134315B CN115134315B (zh) 2022-12-02

Family

ID=83387577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211064917.9A Active CN115134315B (zh) 2022-09-01 2022-09-01 报文转发方法及相关装置

Country Status (1)

Country Link
CN (1) CN115134315B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115941598A (zh) * 2023-03-09 2023-04-07 珠海星云智联科技有限公司 一种流表半卸载方法、设备及介质
CN116886621A (zh) * 2023-09-07 2023-10-13 珠海星云智联科技有限公司 报文转发控制方法、dpu及相关设备

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095567A1 (en) * 2004-11-04 2006-05-04 International Business Machines Corporation Method of offloading iscsi pdu corruption-detection digest generation from a host processing unit, and related iscsi offload engine
US20140059111A1 (en) * 2012-08-27 2014-02-27 Vmware, Inc. Method and system for enabling multi-core processing of vxlan traffic
CN106385344A (zh) * 2016-09-05 2017-02-08 杭州华三通信技术有限公司 一种报文监控方法和装置
CN107948077A (zh) * 2018-01-11 2018-04-20 迈普通信技术股份有限公司 一种数据报文的转发方法及装置
CN108696434A (zh) * 2017-04-11 2018-10-23 华为技术有限公司 一种转发数据报文的方法、设备和系统
CN109729104A (zh) * 2019-03-19 2019-05-07 北京百度网讯科技有限公司 客户端源地址获取方法、装置、服务器和计算机可读介质
CN110022263A (zh) * 2018-01-08 2019-07-16 华为技术有限公司 一种数据传输的方法及相关装置
US20190230039A1 (en) * 2018-01-19 2019-07-25 Estinet Technologies Inc. Method and system for extracting in-tunnel flow data over a virtual network
US20200059370A1 (en) * 2018-08-14 2020-02-20 Juniper Networks, Inc. Single point of management for multi-cloud environment including route propagation, security, and application deployment
US20200374228A1 (en) * 2018-02-13 2020-11-26 Huawei Technologies Co., Ltd. Routing Method and Device
WO2022088743A1 (zh) * 2020-10-31 2022-05-05 华为技术有限公司 一种流表处理方法及相关设备
CN114500418A (zh) * 2022-02-11 2022-05-13 珠海星云智联科技有限公司 数据统计方法及相关装置
CN114884858A (zh) * 2022-01-28 2022-08-09 珠海星云智联科技有限公司 流表处理的方法和相关装置、电子设备、介质和程序产品

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095567A1 (en) * 2004-11-04 2006-05-04 International Business Machines Corporation Method of offloading iscsi pdu corruption-detection digest generation from a host processing unit, and related iscsi offload engine
US20140059111A1 (en) * 2012-08-27 2014-02-27 Vmware, Inc. Method and system for enabling multi-core processing of vxlan traffic
CN106385344A (zh) * 2016-09-05 2017-02-08 杭州华三通信技术有限公司 一种报文监控方法和装置
CN108696434A (zh) * 2017-04-11 2018-10-23 华为技术有限公司 一种转发数据报文的方法、设备和系统
CN110022263A (zh) * 2018-01-08 2019-07-16 华为技术有限公司 一种数据传输的方法及相关装置
CN107948077A (zh) * 2018-01-11 2018-04-20 迈普通信技术股份有限公司 一种数据报文的转发方法及装置
US20190230039A1 (en) * 2018-01-19 2019-07-25 Estinet Technologies Inc. Method and system for extracting in-tunnel flow data over a virtual network
US20200374228A1 (en) * 2018-02-13 2020-11-26 Huawei Technologies Co., Ltd. Routing Method and Device
US20200059370A1 (en) * 2018-08-14 2020-02-20 Juniper Networks, Inc. Single point of management for multi-cloud environment including route propagation, security, and application deployment
CN109729104A (zh) * 2019-03-19 2019-05-07 北京百度网讯科技有限公司 客户端源地址获取方法、装置、服务器和计算机可读介质
WO2022088743A1 (zh) * 2020-10-31 2022-05-05 华为技术有限公司 一种流表处理方法及相关设备
CN114884858A (zh) * 2022-01-28 2022-08-09 珠海星云智联科技有限公司 流表处理的方法和相关装置、电子设备、介质和程序产品
CN114500418A (zh) * 2022-02-11 2022-05-13 珠海星云智联科技有限公司 数据统计方法及相关装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115941598A (zh) * 2023-03-09 2023-04-07 珠海星云智联科技有限公司 一种流表半卸载方法、设备及介质
CN115941598B (zh) * 2023-03-09 2023-05-16 珠海星云智联科技有限公司 一种流表半卸载方法、设备及介质
CN116886621A (zh) * 2023-09-07 2023-10-13 珠海星云智联科技有限公司 报文转发控制方法、dpu及相关设备
CN116886621B (zh) * 2023-09-07 2023-12-19 珠海星云智联科技有限公司 报文转发控制方法、dpu及相关设备

Also Published As

Publication number Publication date
CN115134315B (zh) 2022-12-02

Similar Documents

Publication Publication Date Title
CN115134315B (zh) 报文转发方法及相关装置
US10078526B2 (en) Securing a managed forwarding element that operates within a data compute node
EP3343364B1 (en) Accelerator virtualization method and apparatus, and centralized resource manager
CN106878194B (zh) 一种报文处理方法和装置
CN109617995B (zh) 对租户集群vpc内部容器的管理系统、方法及电子设备
US20140280841A1 (en) Scalable distributed control plane for network switching systems
CN102857414A (zh) 一种转发表写入、报文转发方法及装置
CN110995595B (zh) 报文发送方法、装置、存储介质和节点设备
US11954530B2 (en) Method and system of processing data based on QUIC protocol stack, device and storage medium
CN110311860B (zh) Vxlan下多链路负载均衡方法及装置
CN113132202B (zh) 一种报文传输方法及相关设备
CN111143034B (zh) 一种控制网络数据转发平面的方法、装置及系统
CN111327717B (zh) 一种mac地址学习方法及装置
CN106992918B (zh) 报文转发方法和装置
CN103197950B (zh) 插件虚拟机实现方法
CN109547318B (zh) Vpn数据报文的处理方法、装置、电子设备
CN111294316B (zh) 基于用户态协议栈虚拟路由器的网络隔离方法和装置
CN114374641B (zh) 一种三层报文转发方法及装置
CN115514702A (zh) 快速切换链路的方法、装置、电子设备及存储介质
WO2023050663A1 (zh) 一种虚拟网络性能加速方法、装置、设备及存储介质
WO2015154393A1 (zh) 业务节点能力处理方法、装置、业务分类器及业务控制器
CN109768931B (zh) 处理数据包的方法、交换机、装置及计算机可读存储介质
CN111010344B (zh) 报文转发方法、装置、电子设备及机器可读存储介质
CN114629844A (zh) 一种报文转发的方法、装置及电子设备
CN111988154B (zh) 一种网络传输加速的方法、装置及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant