CN117527731B - 一种用于硬件卸载的包编辑方法、计算机设备及介质 - Google Patents
一种用于硬件卸载的包编辑方法、计算机设备及介质 Download PDFInfo
- Publication number
- CN117527731B CN117527731B CN202410021918.8A CN202410021918A CN117527731B CN 117527731 B CN117527731 B CN 117527731B CN 202410021918 A CN202410021918 A CN 202410021918A CN 117527731 B CN117527731 B CN 117527731B
- Authority
- CN
- China
- Prior art keywords
- packet
- editing
- action
- field
- layer
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000009471 action Effects 0.000 claims abstract description 164
- 238000004590 computer program Methods 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000011161 development Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 description 28
- 238000012545 processing Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 10
- 238000012795 verification Methods 0.000 description 7
- 101150082208 DIABLO gene Proteins 0.000 description 4
- 102100033189 Diablo IAP-binding mitochondrial protein Human genes 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供涉及计算机技术领域并提供一种用于硬件卸载的包编辑方法、计算机设备及介质。包编辑方法包括:确定第一报文包的用于硬件卸载的报文包编辑需求;将报文包编辑需求转换为第一包编辑指令,第一包编辑指令包括按照固定次序排列且各自具有固定长度的多个字段,多个字段包括动作类型字段、动作长度字段、层偏移字段、相对层偏移后地址字段、L3校验和更新字段、L4校验和更新字段;基于第一包编辑指令所包括的多个字段,对第一报文包执行第一包编辑动作得到第二报文包。如此简化了软硬件复杂度同时提供了灵活性和高性能。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于硬件卸载的包编辑方法、计算机设备及介质。
背景技术
随着云计算、数据中心的发展,数据流量规模增加,也产生了高性能业务数据转发需求。利用物理交换机和虚拟交换机(Virtual Switch,vSwitch)进行数据转发受到数据拷贝、系统内核切换等因素的影响,难以满足日益增加的高性能业务数据转发需求。利用硬件卸载技术,可以将采用了虚拟化技术、半虚拟化技术的云计算架构中的数据平面转发业务,例如开放虚拟交换标准(OpenvSwitch,OVS)和数据平面开发套件(Data PlaneDevelopment Kit,DPDK)的数据转发业务,卸载到专门的硬件上执行,例如硬件卸载到智能网卡、网络适配器(Network Interface Controller,NIC)、数据处理器(Data ProcessingUnit,DPU)。通过硬件卸载,可以减轻主机的中央处理器的负担,还可以减少数据拷贝、系统内核切换的开销,提升数据转发性能。为了通过硬件卸载来提升数据转发性能,需要进行报文包编辑,其中,取决于具体的协议主体、安全协议、通信标准、用户需求等多种因素,报文包编辑的需求是复杂的并且每个报文包编辑动作需要单独处理,从而给软硬件设计的复杂度、性能和功耗方面带来了挑战。
为此,本申请提供了一种用于硬件卸载的包编辑方法、计算机设备及介质,用于应对现有技术中的技术难题。
发明内容
第一方面,本申请提供了一种用于硬件卸载的包编辑方法。所述包编辑方法包括:确定第一报文包的用于硬件卸载的报文包编辑需求,其中,所述第一报文包的结构包括传输网络层、L2层、L3层和L4层;将所述报文包编辑需求转换为第一包编辑指令,其中,所述第一包编辑指令包括按照固定次序排列且各自具有固定长度的多个字段,所述多个字段包括动作类型字段、动作长度字段、层偏移字段、相对层偏移后地址字段、L3校验和更新字段、L4校验和更新字段;基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行第一包编辑动作得到第二报文包,包括:基于所述第一包编辑指令的动作类型字段确定所述第一包编辑动作是替换动作、添加动作或者删除动作,基于所述第一包编辑指令的动作长度字段确定所述第一包编辑动作所针对的目标字段的长度,基于所述第一包编辑指令的层偏移字段从所述第一报文包的L2层偏移基址、所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址中确定所述目标字段所对应的偏移基址,基于所述第一包编辑指令的相对层偏移后地址字段确定在所述目标字段所对应的偏移基址的基础上的第一偏移的大小,基于所述第一包编辑指令的L3校验和更新字段选择性地更新所述第一报文包的L3校验和,基于所述第一包编辑指令的L4校验和更新字段选择性地更新所述第一报文包的L4校验和。
通过本申请的第一方面,面对各种可能的协议主体、安全协议、通信标准、用户需求等多种因素,还有网络协议的多层结构的具体规范和多层交换机的设定等,将各种可能的报文包编辑需求和报文校验需求,通过总结通用的可配置特性,以指令化的方式转换成包编辑指令,进而可以通过包编辑指令的编译及执行从而实现各种报文包编辑动作和报文检验动作的组合,这样简化了软硬件复杂度同时提供了灵活性和高性能。
在本申请的第一方面的一种可能的实现方式中,所述第一包编辑动作是按照所述第一包编辑动作所针对的目标字段的长度来针对所述目标字段执行,所述目标字段在所述目标字段所对应的偏移基址的基础上再进行所述第一偏移的位置。
在本申请的第一方面的一种可能的实现方式中,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:基于所述第一包编辑指令的动作类型字段,选择性地更新所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址。
在本申请的第一方面的一种可能的实现方式中,基于所述第一包编辑指令的动作类型字段,选择性地更新所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址,包括:当所述第一包编辑动作是替换动作时,不更新所述第一报文包的L3层偏移基址以及不更新所述第一报文包的L4层偏移基址,当所述第一包编辑动作是添加动作或者删除动作时,更新所述第一报文包的L3层偏移基址,更新所述第一报文包的L4层偏移基址,以及更新所述第一报文包的总长度。
在本申请的第一方面的一种可能的实现方式中,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:当所述第一包编辑动作是添加动作或者删除动作时,基于所述第一报文包是外层报文或者内层报文,选择性的更新所述第一报文包的L2层偏移基址。
在本申请的第一方面的一种可能的实现方式中,当所述第一包编辑动作是添加动作或者删除动作并且所述第一报文包是外层报文时,更新所述第一报文包的L2层偏移基址、更新所述第一报文包的L3层偏移基址,更新所述第一报文包的L4层偏移基址,以及更新所述第一报文包的总长度。
在本申请的第一方面的一种可能的实现方式中,所述第一报文包属于包含多个报文包的第一报文包批次,对所述第一报文包批次中的报文包逐个执行包编辑动作的次序基于所述多个报文包各自的报文包编辑需求被转换得到的包编辑指令中的层偏移字段确定。
在本申请的第一方面的一种可能的实现方式中,对所述第一报文包批次中的报文包逐个执行包编辑动作的次序中,层偏移字段对应L2层偏移基址的报文包优先执行。
在本申请的第一方面的一种可能的实现方式中,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:基于所述第一报文包是外层报文或者内层报文,选择性地忽略所述第一包编辑指令的L3校验和更新字段的指示,以及选择性地忽略所述第一包编辑指令的L4校验和更新字段的指示。
在本申请的第一方面的一种可能的实现方式中,当所述第一报文包是内层报文并且所述第一包编辑指令的L4校验和更新字段的指示更新所述第一报文包的L4校验和时,忽略所述第一包编辑指令的L3校验和更新字段的指示。
在本申请的第一方面的一种可能的实现方式中,当所述第一报文包是内层报文并且所述第一报文包的L3层的网络协议地址不变时,忽略所述第一包编辑指令的L4校验和更新字段的指示。
在本申请的第一方面的一种可能的实现方式中,所述第一报文包是以太网报文、隧道报文、传输控制协议/网络协议报文或者远程直接内存访问报文。
在本申请的第一方面的一种可能的实现方式中,所述第一报文包来自开放虚拟交换标准和数据平面开发套件的数据转发业务,所述第二报文包用于智能网卡、网络适配器或者数据处理器的数据转发业务。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于硬件卸载进行数据转发的示意图;
图2为本申请实施例提供的一种用于硬件卸载的包编辑方法的流程示意图;
图3为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为本申请实施例提供的一种基于硬件卸载进行数据转发的示意图。如图1所示,开放虚拟交换标准和数据平面开发套件110将数据转发业务卸载到网络适配器120。在云计算、数据中心等应用场景,数据转发业务需要面对高规模的数据流量,例如可能要为百万量级、千万量级或者更高数量级的流表条目提供流表转发功能,再例如可能要为各种数据规模的报文包提供存储功能。高性能业务数据转发还需要考虑网络中不断增加的各种类型的网络设备,以及各种通信标准、网络协议、安全机制的需求。利用物理交换机和虚拟交换机(Virtual Switch,vSwitch)进行数据转发受到数据拷贝、系统内核切换等因素的影响,难以满足日益增加的高性能业务数据转发需求。另外,基于指令集架构的中央处理器难以满足高性能业务数据转发对算力、响应速度的要求。硬件卸载意味着将数据平面转发业务卸载到专门的硬件上执行。数据平面转发业务可以是来自于任意合适的虚拟化架构、半虚拟化架构、软件定义网络等,例如开放虚拟交换标准(OpenvSwitch,OVS)、数据平面开发套件(Data Plane Development Kit,DPDK)等。用于代替中央处理器和系统内核来执行数据平面转发业务的专门硬件可以是如智能网卡、网络适配器(Network InterfaceController,NIC)、数据处理器(Data Processing Unit,DPU)等。图1中示例性示出了,开放虚拟交换标准和数据平面开发套件110将数据转发业务卸载到网络适配器120。通过硬件卸载,可以减轻主机的中央处理器的负担,还可以减少数据拷贝、系统内核切换的开销,提升数据转发性能。为了通过硬件卸载来提升数据转发性能,需要进行报文包编辑,其中,取决于具体的协议主体、安全协议、通信标准、用户需求等多种因素,报文包编辑的需求是复杂的并且每个报文包编辑动作需要单独处理。取决于不同的协议规定和通信标准,可以有不同的报文封装格式,有时候需要执行对应的报文包编辑动作来将原本的报文封装格式转换成适合另一种报文封装格式。例如,以太网数据帧格式和采取以太网数据帧格式的报文数据包,规定了报文封装格式:目的物理值(Destination Media Access Control,DMAC)字段(6个字节),接着是源物理值(Source Media Access Control,SMAC)字段(6个字节),接着是协议类型字段(2个字节),然后是一定长度范围内的数据字段(从几十字节到上千字节)。相对的,虚拟局域网数据帧格式和采取虚拟局域网数据帧格式的报文数据包,规定了如下格式:目的物理值DMAC字段(6个字节),接着是源物理值SMAC字段(6个字节),接着是带有虚拟互联网标签的字段(4个字节),接着是协议类型字段(2个字节),然后是一定长度范围内的数据字段(从几十字节到上千字节)。因此,从采取以太网数据帧格式的报文数据包到采取虚拟局域网数据帧格式的报文数据包,需要执行对应的报文包编辑动作,在特定位置添加带有虚拟互联网标签的字段(4个字节)。下面结合图2和本申请具体实施例详细说明本申请提供的一种用于硬件卸载的包编辑方法、计算机设备及介质,如何在满足复杂多变的报文包编辑的需求同时实现了简化软硬件复杂度和提高性能。
图2为本申请实施例提供的一种用于硬件卸载的包编辑方法的流程示意图。如图2所示,用于硬件卸载的包编辑方法包括以下步骤。
步骤S210:确定第一报文包的用于硬件卸载的报文包编辑需求,其中,所述第一报文包的结构包括传输网络层、L2层、L3层和L4层。
步骤S220:将所述报文包编辑需求转换为第一包编辑指令,其中,所述第一包编辑指令包括按照固定次序排列且各自具有固定长度的多个字段,所述多个字段包括动作类型字段、动作长度字段、层偏移字段、相对层偏移后地址字段、L3校验和更新字段、L4校验和更新字段。
步骤S230:基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行第一包编辑动作得到第二报文包,包括:基于所述第一包编辑指令的动作类型字段确定所述第一包编辑动作是替换动作、添加动作或者删除动作,基于所述第一包编辑指令的动作长度字段确定所述第一包编辑动作所针对的目标字段的长度,基于所述第一包编辑指令的层偏移字段从所述第一报文包的L2层偏移基址、所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址中确定所述目标字段所对应的偏移基址,基于所述第一包编辑指令的相对层偏移后地址字段确定在所述目标字段所对应的偏移基址的基础上的第一偏移的大小,基于所述第一包编辑指令的L3校验和更新字段选择性地更新所述第一报文包的L3校验和,基于所述第一包编辑指令的L4校验和更新字段选择性地更新所述第一报文包的L4校验和。
参阅图2,第一报文包是要通过硬件卸载技术被卸载到专用硬件上进行数据转发的网络数据。第一报文包的结构包括传输网络层(Transport Network Layer,TNL)、L2层、L3层和L4层。第一报文包的结构可以参考网络协议的分层结构。一般来说,第一报文包的传输网络层可以对应5G网络通信标准和相关网络协议中定义的传输网络层,例如用于为逻辑接口的用户面信令传输提供承载业务。第一报文包的L2层一般对应数据链路层,L2层一般以物理地址为基础进行数据传输。第一报文包的L3层一般对应网络层,L3层一般用于数据包和信息交换以及将逻辑网络地址转换为物理地址。第一报文包的L4层一般对应传输层,L4层一般基于网络协议和端口进行数据传输。第一报文包的结构可以包括更多的层次,例如用于不同机器上的用户之间建立管理会话的会话层等,又例如针对特定应用的协议如远程登录协议。因为在硬件卸载的应用场景下将同一个主机的原本由软件和系统内核负责的数据平面转发业务卸载到该主机的专用硬件上(专用硬件可以是主机的一部分或者另行提供后连接上主机),因此对第一报文包进行报文包编辑一般只需要考虑第一报文包结构所包括的传输网络层、L2层、L3层和L4层。如上所述,取决于具体的协议主体、安全协议、通信标准、用户需求等多种因素,报文包编辑的需求是复杂的并且每个报文包编辑动作需要单独处理。另外,网络协议的多层结构的具体规范还有多层交换机的设定等也可能有所不同。例如,开放式系统互连(Open System Interconnect,OSI)定义的七层协议的分层结构,与传输控制协议/网络协议(Transmission Control Protocol/Internet Protocol,TCP/IP)定义的四层协议的分层结构,还有其他的网络协议的分层结构如五层协议的分层结构等,这些不同的协议模型和分层结构之间存在对应关系。如果只考虑硬件卸载的目的,也就是对第一报文包进行合适的报文包编辑以便将第一报文包相关的数据平面转发业务从一台机器的软件和系统内核硬件卸载到同一台机器的专用硬件上,针对这些不同的协议模型和网络协议的分层结构,一般只需要针对第一报文包结构所包括的传输网络层、L2层、L3层和L4层提供报文包编辑功能。
继续参阅图2,在步骤S210,确定第一报文包的用于硬件卸载的报文包编辑需求。接着,在步骤S220,将所述报文包编辑需求转换为第一包编辑指令。其中,所述第一包编辑指令包括按照固定次序排列且各自具有固定长度的多个字段,所述多个字段包括动作类型字段、动作长度字段、层偏移字段、相对层偏移后地址字段、L3校验和更新字段、L4校验和更新字段。这里,所述第一包编辑指令包括按照固定次序排列且各自具有固定长度的多个字段。因此,解析第一包编辑指令可以按照该固定次序,并且逐个字段的解析每一个字段。由于各个字段是具有固定长度的,因此第一包编辑指令的整体长度是可以预先确定的,也因此适合并行的或者按照批次的处理多个包编辑指令,这样意味着可以并行的或者按照批次的处理多个报文包的用于硬件卸载的报文包编辑需求。第一包编辑所包括的多个字段,按照特定的定义分成动作类型字段、动作长度字段、层偏移字段、相对层偏移后地址字段、L3校验和更新字段、L4校验和更新字段。如此,针对各种可能的报文包编辑需求和报文校验需求,进行了归纳和分类,总结出了一些通用的可配置特性,进而能通过自动化脚本和输入指令进行配置,简化了软硬件设计复杂度,提高了系统性能。面对各种可能的协议主体、安全协议、通信标准、用户需求等多种因素,还有网络协议的多层结构的具体规范和多层交换机的设定等,将各种可能的报文包编辑需求和报文校验需求进行指令化,从而简化了软硬件复杂度,只需要关注特定字段的执行,并且利用固定次序和具有固定长度的字段,有利于规范化包编辑指令的解析和执行,有助于并行化或者批次化处理以提高效率。
继续参阅图2,在步骤S230,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行第一包编辑动作得到第二报文包,包括:基于所述第一包编辑指令的动作类型字段确定所述第一包编辑动作是替换动作、添加动作或者删除动作,基于所述第一包编辑指令的动作长度字段确定所述第一包编辑动作所针对的目标字段的长度,基于所述第一包编辑指令的层偏移字段从所述第一报文包的L2层偏移基址、所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址中确定所述目标字段所对应的偏移基址,基于所述第一包编辑指令的相对层偏移后地址字段确定在所述目标字段所对应的偏移基址的基础上的第一偏移的大小,基于所述第一包编辑指令的L3校验和更新字段选择性地更新所述第一报文包的L3校验和,基于所述第一包编辑指令的L4校验和更新字段选择性地更新所述第一报文包的L4校验和。这里,基于所述第一包编辑指令的动作类型字段确定所述第一包编辑动作是替换动作、添加动作或者删除动作,意味着针对目标字段执行替换该目标字段、添加新的目标字段或者删除目标字段的相应包编辑动作。基于所述第一包编辑指令的动作长度字段确定所述第一包编辑动作所针对的目标字段的长度,意味着基于第一包编辑指令定义了要执行的第一包编辑动作的长度信息。基于所述第一包编辑指令的层偏移字段从所述第一报文包的L2层偏移基址、所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址中确定所述目标字段所对应的偏移基址,意味着属于哪一个层次的层偏移,再结合基于所述第一包编辑指令的相对层偏移后地址字段确定在所述目标字段所对应的偏移基址的基础上的第一偏移的大小,可以定位执行第一包编辑动作的具体位置。报文校验需求通过校验和来满足。校验和的作用是验证报文在网络传输过程中的完整性以及报文纠错。利用所述第一包编辑指令的L3校验和更新字段和所述第一包编辑指令的L4校验和更新字段,可以灵活控制是否需要计算校验和,并且可以结合具体的报文结构来避免重复计算和无效计算,提升性能。如此,基于第一包编辑指令,可以实现各种报文包编辑动作和报文检验动作的组合,从而满足硬件卸载的应用场景下具体的协议主体、安全协议、通信标准、用户需求等多种因素的需求,以及适配网络协议的多层结构的具体规范和多层交换机的设定。
继续参阅图2,图2所示的用于硬件卸载的包编辑方法,面对各种可能的协议主体、安全协议、通信标准、用户需求等多种因素,还有网络协议的多层结构的具体规范和多层交换机的设定等,将各种可能的报文包编辑需求和报文校验需求,通过总结通用的可配置特性,以指令化的方式转换成包编辑指令,进而可以通过包编辑指令的编译及执行从而实现各种报文包编辑动作和报文检验动作的组合,这样简化了软硬件复杂度同时提供了灵活性和高性能。下面通过表1中提供的几种示例性的特定编辑包动作以及对应的包编辑指令,还有这些包编辑指令的各个字段的赋值,来说明如何将各种可能的报文包编辑需求和报文校验需求,通过总结通用的可配置特性,以指令化的方式转换成包编辑指令。下面先说明下表1中提到的几个技术名词。源物理(Source Media Access Control,SMAC)值,指的是帧的发送方的物理地址或者硬件地址,在一些实施例中,源物理值具有6个字节(48比特)的字段长度。物理地址或者叫MAC地址,用于定位网络设备位置,例如每个网卡需要一个唯一的MAC地址。与源物理值也即SMAC值的字段不同,目的物理(Destination MAC,DMAC)值指的是帧的接收方的物理地址或者硬件地址。在一些实施例中,源物理值用于以太网数据帧格式和相应的网络通信协议例如传输控制协议/网络协议(Transmission Control Protocol/Internet Protocol,TCP/IP)。会话发起协议(Session Initiation Protocol,SIP)值,指的是在网络协议(Internet Protocol,IP)网络中用于实现会话功能的消息体格式中的消息头。在一些实施例中,会话发起协议值的字段包含了如请求的发起者、请求的接收者、消息体类型、会话描述协议等信息,用于建立会话。虚拟局域网(Virtual Local AreaNetwork,VLAN)值对应了报文的含有虚拟互联网信息的字段。虚拟局域网值或者VLAN值用于虚拟互联网数据帧格式。源端口值或者叫源sport值,用于匹配传输TCP协议报文的源端口,可以指定一个连续的端口范围。生存时间(Time To Live,TTL)值或者TTL值,生存时间值的字段指定了IP包被路由器丢弃之前允许通过的最大网段数量。在一些实施例中,生存时间值的字段是IPv4报头的一个8比特的字段。下面结合表1进一步说明:
表1
参阅表1,可以看出,取决于特定包编辑动作也即特定的包编辑需求,可以转换为对应的包编辑指令,并且,可以利用按照固定次序排列且各自具有固定长度的多个字段,将各种可能的报文包编辑需求和报文校验需求进行指令化。表1中给出的各个字段的赋值,仅为示例性。可以采用任意合适的赋值方式,例如用数字、字母、特殊符号、字母与数字组合等,还可以采用任意合适的计量单位。下面解释下表1中各个字段的赋值的含义:对于动作类型字段,1表示替换动作,2表示添加动作,3表示删除动作;对于动作长度字段,赋值表示包编辑动作所针对的目标字段的长度,单位是字节;对于层偏移字段,1表示原始报文包的L2层偏移基址,2表示原始报文包的L3层偏移基址,3表示原始报文包的L4层偏移基址;对于相对层偏移后地址字段,赋值用于表征在目标字段所对应的偏移基址的基础上的偏移的大小,单位是字节;对于L3校验和更新字段,0表示不更新,1表示更新;对于L4校验和更新字段,0表示不更新,1表示更新。
以表1中提供的与替换源物理值这一特定包编辑动作对应的包编辑指令为例,并且,该包编辑指令的多个字段各自的赋值及定义如下:对于动作类型字段,赋值是1,这说明替换动作;对于动作长度字段,赋值是6,这说明源物理值的字段的长度是6个字节;对于层偏移字段,赋值是1,这说明源物理值的字段位于原始报文包的L2层,也即源物理值的字段所对应的偏移基址是原始报文包的L2层偏移基址;对于相对层偏移后地址字段,赋值是6,这说明在目标字段所对应的偏移基址的基础上的偏移的大小是6个字节,因此要执行的替换源物理值的包编辑动作需要在原始报文包的L2层偏移基址的基础上再偏移6个字节处进行;对于L3校验和更新字段,赋值是0,这说明不需要更新原始报文包的L3校验和;对于L4校验和更新字段,赋值是0,这说明不需要更新原始报文包的L4校验和。
继续参阅表1,可以看出,基于动作类型字段可以确定,针对目标字段执行替换该目标字段、添加新的目标字段或者删除目标字段的相应包编辑动作。基于动作长度字段可以确定所针对的目标字段的长度。基于层偏移字段和相对层偏移后地址字段,可以确定在目标字段所对应的偏移基址的基础上的偏移的大小,从而定位要执行的包编辑动作的具体位置。另外,利用L3校验和更新字段和L4校验和更新字段,可以灵活控制是否需要计算校验和,并且可以结合具体的报文结构来避免重复计算和无效计算,提升性能。以表1中提供的与替换生存时间值这一特定包编辑动作对应的包编辑指令为例,L3校验和更新字段的赋值是1,这是因为替换生存时间值必然意味着更新生存时间值,而这可以结合报文结构推定,必然导致IP字段的更新,而IP字段的更新必然需要计算L3校验和,因此需要在执行替换生存时间值的包编辑动作之后更新L3校验和;L4校验和更新字段的赋值是0,这是因为L4校验和一般只与L3的IP地址有关,而更新生存时间值本身不改变IP地址,因此不需要计算L4校验和,因此在执行替换生存时间值的包编辑动作之后不需要更新L4校验和。如此,考虑到计算L3校验和以及计算L4校验和会造成性能上的损耗,用户可以通过灵活配置来选择性的进行校验和计算,从而提升性能及降低功耗。
总之,图2所示的用于硬件卸载的包编辑方法,面对各种可能的协议主体、安全协议、通信标准、用户需求等多种因素,还有网络协议的多层结构的具体规范和多层交换机的设定等,将各种可能的报文包编辑需求和报文校验需求,通过总结通用的可配置特性,以指令化的方式转换成包编辑指令,进而可以通过包编辑指令的编译及执行从而实现各种报文包编辑动作和报文检验动作的组合,这样简化了软硬件复杂度同时提供了灵活性和高性能。
在一种可能的实施方式中,所述第一包编辑动作是按照所述第一包编辑动作所针对的目标字段的长度来针对所述目标字段执行,所述目标字段在所述目标字段所对应的偏移基址的基础上再进行所述第一偏移的位置。如此,基于层偏移字段和相对层偏移后地址字段,可以确定在目标字段所对应的偏移基址的基础上的偏移的大小,从而定位要执行的包编辑动作的具体位置。
在一种可能的实施方式中,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:基于所述第一包编辑指令的动作类型字段,选择性地更新所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址。如果每一次执行包编辑动作都更新报文包的L2层偏移基址、L3层偏移基址还有L4层偏移基址以及重新计算报文包总长度,则必然导致算力和性能的开销。如此,利用第一报文包的结构、报文封装格式还有网络协议的分层结构的特点,所述第一包编辑指令的动作类型字段指示了所述第一包编辑动作是替换动作、添加动作或者删除动作,这样可以节省不必要的计算,有助于提升性能。在一些实施例中,基于所述第一包编辑指令的动作类型字段,选择性地更新所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址,包括:当所述第一包编辑动作是替换动作时,不更新所述第一报文包的L3层偏移基址以及不更新所述第一报文包的L4层偏移基址,当所述第一包编辑动作是添加动作或者删除动作时,更新所述第一报文包的L3层偏移基址,更新所述第一报文包的L4层偏移基址,以及更新所述第一报文包的总长度。如此,可以节省不必要的计算,有助于提升性能。在一些实施例中,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:当所述第一包编辑动作是添加动作或者删除动作时,基于所述第一报文包是外层报文或者内层报文,选择性的更新所述第一报文包的L2层偏移基址。如此,可以节省不必要的计算,有助于提升性能。进一步地,在一些实施例中,当所述第一包编辑动作是添加动作或者删除动作并且所述第一报文包是外层报文时,更新所述第一报文包的L2层偏移基址、更新所述第一报文包的L3层偏移基址,更新所述第一报文包的L4层偏移基址,以及更新所述第一报文包的总长度。考虑到了外层报文和内层报文之间的差异,对外层报文的添加动作或者删除动作,必然触发更新报文包的L2层偏移基址、更新报文包的L3层偏移基址,更新报文包的L4层偏移基址,以及更新报文包的总长度。相对的,对内层报文的添加动作或者删除动作,会触发更新报文包的L3层偏移基址,更新报文包的L4层偏移基址,以及更新报文包的总长度。因此,将各种可能的报文包编辑需求和报文校验需求,通过总结通用的可配置特性,以指令化的方式转换成包编辑指令,可以进一步地通过灵活配置,可以结合具体的报文结构来避免重复计算和无效计算。
在一些实施例中,所述第一报文包属于包含多个报文包的第一报文包批次,对所述第一报文包批次中的报文包逐个执行包编辑动作的次序基于所述多个报文包各自的报文包编辑需求被转换得到的包编辑指令中的层偏移字段确定。通过解析包编辑指令上的特定字段也即包编辑指令中的层偏移字段,可以推定需要偏移的程度以及报文总长度的变化,进而预留足够的存储资源。并且,由于各个字段是具有固定长度的,因此第一包编辑指令的整体长度是可以预先确定的,也因此适合并行的或者按照批次的处理多个包编辑指令,这样意味着可以并行的或者按照批次的处理多个报文包的用于硬件卸载的报文包编辑需求。这里,包编辑指令中的层偏移字段指示了所述目标字段所对应的偏移基址,意味着属于哪一个层次的层偏移。考虑到L2层的偏移会影响到L3层的偏移和L4层的偏移。因此,在对所述第一报文包批次中的报文包逐个执行包编辑动作的过程中,可以优先执行需要L2层的偏移的包编辑动作,从而降低整体延时。在一些实施例中,对所述第一报文包批次中的报文包逐个执行包编辑动作的次序中,层偏移字段对应L2层偏移基址的报文包优先执行。如此,通过优先执行层偏移字段对应L2层偏移基址的报文包,实现了降低整体延时。
在一种可能的实施方式中,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:基于所述第一报文包是外层报文或者内层报文,选择性地忽略所述第一包编辑指令的L3校验和更新字段的指示,以及选择性地忽略所述第一包编辑指令的L4校验和更新字段的指示。不同的包编辑动作,对于校验和的计算和更新的要求不同,并且还受到外层报文与内层报文之间差异的影响。一般来说,当外层报文的L4层发生了变化,需要计算该外层报文的L4校验和,而因为对外层报文的L4校验和的计算必然包括相应的内层报文的校验和计算因此可以节省对相应的内层报文的校验和的计算。当外层报文的L3层发生了变化,需要计算该外层报文的L3校验和以及L4校验和,而因为对外层报文的L4校验和的计算必然包括相应的内层报文的校验和计算因此可以节省对相应的内层报文的校验和的计算。当内层报文的L4层发生了变化,需要计算该内层报文的L4校验和,而对内层报文的L4校验和的计算已经包括了对内层报文的L3校验和的计算,因此不需要计算该内层报文的L3校验和,也因为内层报文的变化会影响外层报文,因此还需要计算相应的外层报文的L3校验和以及L4校验和。当内层报文的L3层的IP地址不变但是IP字段改变了,这种情况下只需要计算内层报文的L3校验和。当内层报文的L3层的IP地址改变了,这种情况下需要计算内层报文的L3校验和以及L4校验和,还有需要计算相应的外层报文的L3校验和以及L4校验和。可以看出,取决于当前的包编辑动作是否会触发特定层次的变化以及是发生在外层报文或者内层报文,L3层校验和的计算和L4层校验和的计算可能是无效计算或者重复计算。因此,基于所述第一报文包是外层报文或者内层报文,选择性地忽略所述第一包编辑指令的L3校验和更新字段的指示,以及选择性地忽略所述第一包编辑指令的L4校验和更新字段的指示,可以节省无效计算或者重复计算,有助于提升性能。
在一些实施例中,当所述第一报文包是内层报文并且所述第一包编辑指令的L4校验和更新字段的指示更新所述第一报文包的L4校验和时,忽略所述第一包编辑指令的L3校验和更新字段的指示。如上所述,当内层报文的L4层发生了变化,需要计算该内层报文的L4校验和,而对内层报文的L4校验和的计算已经包括了对内层报文的L3校验和的计算,因此不需要计算该内层报文的L3校验和,因此,通过忽略所述第一包编辑指令的L3校验和更新字段的指示,可以避免重复计算,提升性能。在一些实施例中,当所述第一报文包是内层报文并且所述第一报文包的L3层的网络协议地址不变时,忽略所述第一包编辑指令的L4校验和更新字段的指示。如上所述,当内层报文的L3层的IP地址不变但是IP字段改变了,这种情况下只需要计算内层报文的L3校验和。当内层报文的L3层的IP地址改变了,这种情况下需要计算内层报文的L3校验和以及L4校验和,还有需要计算相应的外层报文的L3校验和以及L4校验和。因此,当所述第一报文包是内层报文并且所述第一报文包的L3层的网络协议地址不变时,忽略所述第一包编辑指令的L4校验和更新字段的指示,可以避免重复计算,提升性能。
在一种可能的实施方式中,所述第一报文包是以太网报文、隧道报文、传输控制协议/网络协议报文或者远程直接内存访问报文。取决于具体的协议主体、安全协议、通信标准、用户需求等多种因素,报文包编辑的需求是复杂的并且每个报文包编辑动作需要单独处理。取决于不同的协议规定和通信标准,可以有不同的报文封装格式,有时候需要执行对应的报文包编辑动作来将原本的报文封装格式转换成适合另一种报文封装格式。
在一种可能的实施方式中,所述第一报文包来自开放虚拟交换标准和数据平面开发套件的数据转发业务,所述第二报文包用于智能网卡、网络适配器或者数据处理器的数据转发业务。如此,通过硬件卸载,可以减轻主机的中央处理器的负担,还可以减少数据拷贝、系统内核切换的开销,提升数据转发性能。
图3是本申请实施例提供的一种计算设备的结构示意图,该计算设备300包括:一个或者多个处理器310、通信接口320以及存储器330。所述处理器310、通信接口320以及存储器330通过总线340相互连接。可选地,该计算设备300还可以包括输入/输出接口350,输入/输出接口350连接有输入/输出设备,用于接收用户设置的参数等。该计算设备300能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器310还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备300执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器310用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备300可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口320具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器310具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图3的计算设备300可以包括一个或者多个处理器310,并且多个处理器310可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器310可以构成处理器序列或者处理器阵列,或者多个处理器310之间可以分成主处理器和辅助处理器,或者多个处理器310之间可以具有不同的架构如采用异构计算架构。另外,图3所示的计算设备300,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备300可以包括比图3所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器310可以有多种具体实现形式,例如处理器310可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器310还可以是单核处理器或多核处理器。处理器310可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器310也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口320可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器330可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器330也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器330也可用于存储程序代码和数据,以便于处理器310调用存储器330中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备300可能包含相比于图3展示的更多或者更少的组件,或者有不同的组件配置方式。
总线340可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线340可以分为地址总线、数据总线、控制总线等。总线340除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (14)
1.一种用于硬件卸载的包编辑方法,其特征在于,所述包编辑方法包括:
确定第一报文包的用于硬件卸载的报文包编辑需求,其中,所述第一报文包的结构包括传输网络层、L2层、L3层和L4层;
将所述报文包编辑需求转换为第一包编辑指令,其中,所述第一包编辑指令包括按照固定次序排列且各自具有固定长度的多个字段,所述多个字段包括动作类型字段、动作长度字段、层偏移字段、相对层偏移后地址字段、L3校验和更新字段、L4校验和更新字段;
基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行第一包编辑动作得到第二报文包,包括:基于所述第一包编辑指令的动作类型字段确定所述第一包编辑动作是替换动作、添加动作或者删除动作,基于所述第一包编辑指令的动作长度字段确定所述第一包编辑动作所针对的目标字段的长度,基于所述第一包编辑指令的层偏移字段从所述第一报文包的L2层偏移基址、所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址中确定所述目标字段所对应的偏移基址,基于所述第一包编辑指令的相对层偏移后地址字段确定在所述目标字段所对应的偏移基址的基础上的第一偏移的大小,基于所述第一包编辑指令的L3校验和更新字段选择性地更新所述第一报文包的L3校验和,基于所述第一包编辑指令的L4校验和更新字段选择性地更新所述第一报文包的L4校验和,
基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:
基于所述第一报文包是外层报文或者内层报文,选择性地忽略所述第一包编辑指令的L3校验和更新字段的指示,以及选择性地忽略所述第一包编辑指令的L4校验和更新字段的指示。
2.根据权利要求1所述的包编辑方法,其特征在于,所述第一包编辑动作是按照所述第一包编辑动作所针对的目标字段的长度来针对所述目标字段执行,所述目标字段在所述目标字段所对应的偏移基址的基础上再进行所述第一偏移的位置。
3.根据权利要求1所述的包编辑方法,其特征在于,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:
基于所述第一包编辑指令的动作类型字段,选择性地更新所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址。
4.根据权利要求3所述的包编辑方法,其特征在于,基于所述第一包编辑指令的动作类型字段,选择性地更新所述第一报文包的L3层偏移基址和所述第一报文包的L4层偏移基址,包括:
当所述第一包编辑动作是替换动作时,不更新所述第一报文包的L3层偏移基址以及不更新所述第一报文包的L4层偏移基址,
当所述第一包编辑动作是添加动作或者删除动作时,更新所述第一报文包的L3层偏移基址,更新所述第一报文包的L4层偏移基址,以及更新所述第一报文包的总长度。
5.根据权利要求4所述的包编辑方法,其特征在于,基于所述第一包编辑指令所包括的多个字段,对所述第一报文包执行所述第一包编辑动作得到所述第二报文包,还包括:
当所述第一包编辑动作是添加动作或者删除动作时,基于所述第一报文包是外层报文或者内层报文,选择性的更新所述第一报文包的L2层偏移基址。
6.根据权利要求5所述的包编辑方法,其特征在于,当所述第一包编辑动作是添加动作或者删除动作并且所述第一报文包是外层报文时,更新所述第一报文包的L2层偏移基址、更新所述第一报文包的L3层偏移基址,更新所述第一报文包的L4层偏移基址,以及更新所述第一报文包的总长度。
7.根据权利要求6所述的包编辑方法,其特征在于,所述第一报文包属于包含多个报文包的第一报文包批次,对所述第一报文包批次中的报文包逐个执行包编辑动作的次序基于所述多个报文包各自的报文包编辑需求被转换得到的包编辑指令中的层偏移字段确定。
8.根据权利要求7所述的包编辑方法,其特征在于,对所述第一报文包批次中的报文包逐个执行包编辑动作的次序中,层偏移字段对应L2层偏移基址的报文包优先执行。
9.根据权利要求1所述的包编辑方法,其特征在于,当所述第一报文包是内层报文并且所述第一包编辑指令的L4校验和更新字段的指示更新所述第一报文包的L4校验和时,忽略所述第一包编辑指令的L3校验和更新字段的指示。
10.根据权利要求1所述的包编辑方法,其特征在于,当所述第一报文包是内层报文并且所述第一报文包的L3层的网络协议地址不变时,忽略所述第一包编辑指令的L4校验和更新字段的指示。
11.根据权利要求1所述的包编辑方法,其特征在于,所述第一报文包是以太网报文、隧道报文、传输控制协议/网络协议报文或者远程直接内存访问报文。
12.根据权利要求1所述的包编辑方法,其特征在于,所述第一报文包来自开放虚拟交换标准和数据平面开发套件的数据转发业务,所述第二报文包用于智能网卡、网络适配器或者数据处理器的数据转发业务。
13.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至12中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410021918.8A CN117527731B (zh) | 2024-01-08 | 2024-01-08 | 一种用于硬件卸载的包编辑方法、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410021918.8A CN117527731B (zh) | 2024-01-08 | 2024-01-08 | 一种用于硬件卸载的包编辑方法、计算机设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117527731A CN117527731A (zh) | 2024-02-06 |
CN117527731B true CN117527731B (zh) | 2024-04-09 |
Family
ID=89755430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410021918.8A Active CN117527731B (zh) | 2024-01-08 | 2024-01-08 | 一种用于硬件卸载的包编辑方法、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117527731B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115052054A (zh) * | 2022-08-15 | 2022-09-13 | 江西联创精密机电有限公司 | 通信报文配置方法、装置、可读存储介质及设备 |
CN116170527A (zh) * | 2023-02-16 | 2023-05-26 | 南京金阵微电子技术有限公司 | 报文编辑方法、报文编辑装置、介质及电子设备 |
CN116489247A (zh) * | 2022-01-17 | 2023-07-25 | 益思芯科技(上海)有限公司 | 运行时可编程的任意网络协议报文编辑装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10855816B2 (en) * | 2018-06-08 | 2020-12-01 | Avago Technologies International Sales Pte. Limited | Highly parallel programmable packet editing engine with a scalable control infrastructure |
-
2024
- 2024-01-08 CN CN202410021918.8A patent/CN117527731B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116489247A (zh) * | 2022-01-17 | 2023-07-25 | 益思芯科技(上海)有限公司 | 运行时可编程的任意网络协议报文编辑装置及方法 |
CN115052054A (zh) * | 2022-08-15 | 2022-09-13 | 江西联创精密机电有限公司 | 通信报文配置方法、装置、可读存储介质及设备 |
CN116170527A (zh) * | 2023-02-16 | 2023-05-26 | 南京金阵微电子技术有限公司 | 报文编辑方法、报文编辑装置、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117527731A (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114189571B (zh) | 用于实施加速网络分组处理的装置和方法 | |
US11902156B2 (en) | Method for generating segment list, method for forwarding packet, device, and system in SRv6 network | |
CN102055667B (zh) | 用于实现网络规则的方法和设备 | |
CN113326228B (zh) | 基于远程直接数据存储的报文转发方法、装置及设备 | |
US20220353207A1 (en) | Communication Method and Apparatus | |
CN113746749A (zh) | 网络连接设备 | |
US20210083977A1 (en) | Packet Transmission Method, and Communications Apparatus and System | |
CN114726788B (zh) | 应用于dpu的报文传输方法及相关装置 | |
CN111026324B (zh) | 转发表项的更新方法及装置 | |
CN115202573A (zh) | 数据存储系统以及方法 | |
WO2022068744A1 (zh) | 获取报文头信息、生成报文的方法、设备及存储介质 | |
CN114650255B (zh) | 报文处理方法及网络设备 | |
CN117527731B (zh) | 一种用于硬件卸载的包编辑方法、计算机设备及介质 | |
CN116074253B (zh) | 一种报文链式转发方法及装置 | |
CN112019492B (zh) | 访问控制方法、装置及存储介质 | |
WO2022134674A1 (zh) | 报文传输的方法、装置、设备、存储介质及系统 | |
US20220278946A1 (en) | Programmable packet processing pipeline with offload circuitry | |
CN115941630A (zh) | 基于dpu的跨网卡转发方法、系统、介质、cpu处理器及智能网卡 | |
CN114079634B (zh) | 一种报文转发方法、装置及计算机可读存储介质 | |
CN113934767A (zh) | 一种数据处理的方法及装置、计算机设备和存储介质 | |
CN113918326A (zh) | 一种处理请求的方法及装置 | |
CN117714233B (zh) | 一种用于隧道报文封装的方法、计算机设备及介质 | |
CN113098780B (zh) | 虚拟网络的报文处理方法、电子设备及存储介质 | |
CN117527689B (zh) | 流表卸载方法、系统、设备、集群以及介质 | |
CN117041272B (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 |