CN110851371A - 报文处理方法及相关设备 - Google Patents
报文处理方法及相关设备 Download PDFInfo
- Publication number
- CN110851371A CN110851371A CN201810949396.2A CN201810949396A CN110851371A CN 110851371 A CN110851371 A CN 110851371A CN 201810949396 A CN201810949396 A CN 201810949396A CN 110851371 A CN110851371 A CN 110851371A
- Authority
- CN
- China
- Prior art keywords
- message
- packet
- address information
- mbuf
- network card
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/55—Prevention, detection or correction of errors
- H04L49/552—Prevention, detection or correction of errors by ensuring the integrity of packets received through redundant connections
-
- 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/9015—Buffering arrangements for supporting a linked list
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3045—Virtual queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种报文处理方法及相关设备,用于节省由于解析报文所消耗的CPU资源。本申请实施例方法包括:智能网卡解析接收到的第一报文,以得到该第一报文的标识;该智能网卡根据该第一报文的标识,更新第一存储器缓存mbuf中的控制字段,该第一mbuf还包含为该第一报文分配的第一地址信息,该第一地址信息指示该虚拟机中的第一地址空间;根据该第一报文的聚合位置,该智能网卡将该第一报文的载荷,或者将该第一报文的报文头和载荷通过直接内存存取DMA存入该第一地址空间;主机根据更新后的该第一mbuf的控制字段,将该第一地址信息与至少一个第二地址信息聚合;虚拟机读取聚合后的地址信息,以获得该聚合后的地址信息所指示的地址空间中的数据。
Description
技术领域
本申请涉及数据传输领域,尤其涉及一种报文处理方法及相关设备。
背景技术
一个数据报文需要经过数据链路层、网络层、传输层、应用层的层层处理,才能被应用程序接收。在传输时,使用长度较大的报文,可以有效节省端节点的CPU(centralprocessing unit,中央处理器)的占用率,提升带宽。但报文在物理链路上传输时需要满足链路的MTU(maximum transmission unit,最大传输单元)的长度要求。所以在发送侧,在报文进入物理网络之前需要将报文切割成符合MTU长度要求的报文,在接收侧,需要在报文从进入主机协议栈之前将符合MTU的报文聚合成一个大报文,交给协议栈处理。
现有技术中是通过软件拷贝的方式实现报文的聚合的,网卡驱动从网卡硬件接收报文,随后由网卡驱动对每个报文的报文头进行解析,找出报文的五元组信息,通过连接五元组唯一确定一条数据流。将属于同一个数据流的数据报文缓存在同一个数据结构链表中,除链表头结点外,后面每一个数据结构的报文起始地址跳过报文头。当网卡驱动确定达到聚合条件后,在报文头更新报文长度,然后将该数据结构链表中的多个报文拷贝到虚拟机的地址空间中。
由于现有技术提供的报文聚合方式,需要通过软件对从网卡中接收到的每一个报文进行解析并提取五元组信息,会消耗大量的CPU资源。
发明内容
本申请实施例提供了一种报文处理方法,用于节省由于解析报文所消耗的CPU资源。本发明实施例还提供了相应的装置。
第一方面,本申请实施例提供了一种物理机,该物理机可以包括智能网卡、处理器和存储器,该物理机可以通过运行存储器中的代码来运行有主机和虚拟机。该智能网卡从外部网络或本地的客户虚拟机处接收第一报文后,可以解析该第一报文,以得到第一报文的标识,其中,该第一报文的标识可以包括该第一报文所在的数据流的标识和该第一报文的序列号。在该智能网卡获得到该第一报文的标识之后,可以获得与该第一报文对应的第一存储器缓存mbuf,由于该智能网卡可以记录有归属于同一数据流的多个第一报文的接收和聚合信息,该智能网卡可以根据该第一报文所在的数据流的标识确定与该第一报文对应的数据流,并结合智能网卡中记录的该第一报文的接收和聚合信息更新该第一mbuf的控制字段,该第一mbuf还可以包含为该第一报文分配的第一地址信息,该第一地址信息指示该虚拟机中的第一地址空间。智能网卡可以根据该第一报文的标识获得该第一报文的聚合位置,并根据该第一报文的聚合位置,将该第一报文的载荷,或者将该第一报文的报文头和载荷通过直接内存存取DMA存入该第一地址空间,其中,该聚合位置为该第一地址信息与至少一个第二地址信息聚合时,该第一地址信息相对于该至少一个第二地址信息所处的位置,该第二地址信息指示为第二报文分配的该虚拟机中的第二地址空间,该第二报文是该智能网卡接收到的与该第一报文属于同一数据流的报文。该主机可以根据更新后的该第一mbuf中的控制字段,获知该第一地址信息的聚合位置,从而将该第一mbuf中包含的第一地址信息与至少一个第二mbuf中包含的第二地址信息聚合,其中,该第一地址信息和第二地址信息均可以为描述符标识。当满足聚合终止条件时,该主机可以将聚合后的地址信息写入已使用队列,向该虚拟机发送通知,该通知用于告知虚拟机读取聚合后的地址信息。该虚拟机可以根据该通知从该已使用队列中读取聚合后的地址信息,以获得该聚合后的地址信息所指示的地址空间中的数据。
本申请中,智能网卡解析接收到的第一报文,得到第一报文的标识,根据第一报文的标识填写第一存储器缓存的控制字段,将该第一报文或该第一报文的载荷DMA到第一地址信息所指示的缓存空间,主机可以根据更新后的该第一mbuf中的控制字段,将该第一地址信息与至少一个第二地址信息聚合,虚拟机根据聚合后的地址信息,读取该聚合后的地址信息所指示的地址空间中包含的内容。本方案中由智能网卡解析第一报文,节省了由于解析第一报文所消耗的CPU资源;且智能网卡将第一报文DMA到第一地址信息所指示的第一地址空间,则虚拟机可直接从第一地址空间中读取报文,避免软件对第一步报文进行移动拷贝,节省了软件对第一报文执行移动拷贝带来的CPU消耗。
一种可能的实现方式下,该第一mbuf中的控制字段包括第一标志位,该第一标志位用于标识该第一报文是否携带报文头。智能网卡可以记录归属于同一数据流的多个第一报文的接收和聚合信息,该智能网卡通过解析该第一报文获得到第一报文的标识,由于该第一报文的标识中包含有第一报文所在的数据流的标识和报文序列号,其中,第一报文所在的该数据流的标识可以为第一报文携带的五元组信息和子网标识符,该报文序列号用于标识该第一报文在该数据流中的次序,因此,智能网卡可以根据该第一报文所在的数据流的标识和第一报文的报文序列号确定该第一报文所在的数据流,以及该第一报文在该数据流中的序列位置,再结合智能网卡中记录的该第一报文的接收和聚合信息,得到该第一报文的聚合位置。若该第一报文的聚合位置为首位,则该智能网卡可以在该控制字段的第一标志位上添加第一指示信息,该第一指示信息用于供主机获知该第一地址信息的聚合位置为首位。在该第一报文的聚合位置为首位的情况下,该智能网卡将该第一报文的报文头和载荷通过DMA存入该第一地址空间。
本申请中,智能网卡根据第一报文的标识得到该第一报文的聚合位置,当该第一报文的聚合位置为首位时,在第一控制位上添加第一指示信息,并将第一报文DMA到该第一地址信息所指示的缓存空间中,从而使聚合后的大报文也保留有报文头,以保证聚合后的报文与聚合前的报文的一致性。
一种可能的实现方式下,当该第一mbuf被更新时,该主机可以读取该第一mbuf的控制字段,若该第一标志位上存在该第一指示信息,则该主机确定与该第一mbuf包含的第一地址信息的聚合位置为首位,则该主机将包含该第一地址信息的第一mbuf放在mbuf链表的头部,以使该mbuf链表的头部与至少一个包含第二地址信息的第二mbuf聚合,从而生成mbuf链表。
本申请中,当第一标志位上存在第一指示信息时,确定该第一地址信息的聚合位置为首位,则将与该第一报文对应的第一mbuf放在mbuf链表的头部,从而使得对多个第二报文执行聚合操作后得到的大报文的格式与智能网卡接收到的第一报文的格式一致,保证了数据的完整性,提高了本方案的可实现性。
一种可能的实现方式下,该智能网卡中可以预先存储有虚拟化输入输出Virtio协议头部的长度信息,若智能网卡根据该第一报文的标识获知该第一报文的聚合位置为首位,则在将该第一报文的报文头和载荷DMA到第一地址空间之前,该智能网卡可以在该第一地址空间的起始位置处预留第三地址空间,其中,该第三地址空间的长度为虚拟化输入输出Virtio协议头部的长度。当主机根据更新后的第一mbuf中的控制字段确定满足聚合终止条件时,该主机可以将该Virtio协议头部写入该第三地址空间。
本申请中,由于本申请是运行于Virtio协议之下,当第一报文的聚合位置是首位时,在将该第一地址信息所指示的第一地址空间的起始位置处预留Virtio协议头部的长度,从而当满足聚合终止条件时,主机可在该预留的位置处写入Virtio协议头部,从而提高了本方案的可实现性。
一种可能的实现方式下,该第一mbuf中的控制字段还包括第二标志位和序列号字段,该第二标志位可以用于标识该控制字段中的序列号字段是否有效。该智能网卡可以根据该第一报文所在的数据流的标识和该第一报文的报文序列号获得该第一报文的聚合位置,若该该第一报文的聚合位置不为首位,则该智能网卡在可以该第二标志位上添加第二指示信息,该第二指示信息用于指示该第一mbuf的控制字段中包含的序列号字段有效。由于该第一报文的标识中包含报文序列号,则智能网卡可以根据该第一报文携带的报文序列号,填写该第一mbuf的控制字段的序列号字段,该序列号字段用于供该主机获得该第一地址信息的聚合位置。在该第一报文的聚合位置不为首位的情况下,该智能网卡可以将该第一报文的报文头和载荷通过DMA存入该第一地址空间。
本申请中,第一报文的聚合位置不是首位当第一报文的聚合位置不是首位时,智能网卡填写该第一mbuf的控制字段的序列号字段,从而主控虚拟机在聚合第一地址信息和多个第二地址信息时,可以直接根据该第一序列号对多个第二mbuf进行排序,提高了报文聚合过程的效率。
一种可能的实现方式下,该智能网卡中可以存储有对应关系表,该对应关系表包含多条记录,该多条记录中的每条记录对应一条数据流,每条记录均可以包括一个报文所在的数据流的标识,该报文的序列号以及该报文的编号之间的映射关系,其中,该报文的编号用于指示报文的聚合位置。智能网卡在通过解析该第一报文得到的第一报文的标识中包含的第一报文所在的数据流的标识,则智能网卡可以先根据该第一报文所在的数据流的标识,遍历该对应关系表,以查找到与该第一报文对应的目标记录,再根据该第一报文的报文序列号和该目标记录中包含的第一报文的序列号以及第一报文的编号之间的映射关系,从该目标记录中读取到该第一报文的编号。在该第一报文的编号为预设值的情况下,该智能网卡可以确定该第一报文的聚合位置为首位;在该第一报文的编号不为预设值的情况下,该智能网卡可以确定该第一报文的聚合位置不为首位。
本申请中,智能网卡中存储有记录数据流的第一报文接收情况的对应关系表,该对应关系表中包含多条记录,在确定与第一报文对应的目标记录后,通过判断目标记录中的第一报文的编号是否为预设值的方式来判断该第一报文的聚合位置是否为首位,利用对应关系表来记录第一报文的接收情况,操作简单且容易实现,增加了本方案的可实现性。
一种可能的实现方式下,由于该第一mbuf的控制字段中还可以包含序列号字段,该智能网卡根据该第一报文的标识在该对应关系表中查找到该第一报文的编号后,可以将该第一报文的编号写入该序列号字段。
本申请中,将第一报文的编号直接写入第一mbuf的序列号字段,也即智能网卡和主控虚拟机对第一报文采用了同一套排序逻辑,保证了报文聚合过程的流畅性,提高了报文聚合的效率。
一种可能的实现方式下,智能网卡在根据第一报文的标识和该对应关系表确定查找到该第一报文的编号后,可以将该对应关系表中存储的该第一报文的编号加一,从而获得加一后的第一报文的编号;在加一后的第一报文的编号超过第一预设阈值的情况下,该智能网卡可以将该加一后的第一报文的编号更新为该预设值,其中,该第一预设阈值可以为达到聚合终止条件时所包含的多个第二报文的报文数量,该预设值为当第一报文的聚合位置是首位时,该对应关系表中记录的第一报文的编号。
本申请中,当智能网卡接收到的第一报文的聚合位置不是首位时,则将第一报文的编号加一,当加一后的第二序列号达到第一预设阈值时,也即待聚合的多个第二报文的数量达到聚合终止条件时,将加一后的序列号更新为预设值,从而智能网卡在下一次接收到第一报文时,可以根据该第一报文的编号获知该第一报文的聚合位置是首位,增加了本方案的实现灵活性。
一种可能的实现方式下,由于对应关系表包含的多条记录中存储了每一个报文所在的数据流的标识,且报文所在的数据流的标识可以为该报文的五元组信息和子网标识符,智能网卡在获取到第一报文的标识中包含的五元组信息和子网标识符后,遍历上述对应关系表中包含的多条记录;在该多条记录中不存在与该第一报文对应的目标记录的情况下,该智能网卡可以根据该第一报文的五元组信息和子网标识符生成该第一报文的数据流标识,并将生成的该第一报文所在的数据流的标识添加至该对应关系表,以生成与该第一报文对应的目标记录,从而根据该第一报文的报文序列号生成该第一报文的编号,并存储于该目标记录中;在该多条记录中存在与该第一报文对应的目标记录的情况下,则智能网卡读取该数据流标识所在的该目标记录,以根据该第一报文的报文序列号获得该第一报文的编号。
本申请中,智能网卡在得到第一报文的五元组信息和子网标识符后,判断对应关系表中是否存在与第一报文对应的目标记录,若不存在,则生成新的目标记录,若存在,则读取该目标记录,从而保证智能网卡接收到的每条数据流在对应关系表中均有记录,保证了对应关系表中数据的完整性。
一种可能的实现方式下,该对应关系表包含的多条记录中的每条记录都分别还包含最后更新时间。智能网卡中可以预先设定对应关系表中多条记录的条数的第二预设阈值,智能网卡可以获知到该多条记录的记录条数;在该多条记录的记录条数达到该第二预设阈值的情况下,该智能网卡可以获取该多条记录中该每条记录中包含的最后更新时间,从而生成该多条记录中的每条记录的最后更新时间与当前时间的差值;智能网卡可以判断该每条记录中是否存在该差值超过第三预设阈值的记录,当该第一报文所归属的目标数据流处于不同状态时,该第三预设阈值的取值可以不同;若存在该差值超过第三预设阈值的记录,则该智能网卡可以删除该差值超过第三预设阈值的记录。
本申请中,智能网卡预设有对应关系表中多条记录的条数阈值,当达到该预设阈值时,则确定每条记录的最后更新时间与当前时间的差值,若存在该差值超过第三预设阈值时,则删除该差值超过第三预设阈值的记录,从而保证与对应关系表中存储的记录对应的目标数据流处于报文传输活跃状态,提高对应关系表中每条记录的利用率。
一种可能的实现方式下,由于每条该mbuf链表对应一条该数据流,该第一mbuf中的控制字段还包括mbuf链表标识,其中,该mbuf链表标识可以与报文所在的数据流的标识一致,也可以由智能网卡根据mbuf链表标识与报文所在的数据流的标识之间的映射关系生成;则该主机在读取该第一mbuf后,可以根据该第一mbuf的控制字段中的包含的mbuf链表标识,获取与该第一mbuf对应的该mbuf链表;从而将包含该第一地址信息与第一mbuf该mbuf链表包含的至少一个第二mbuf聚合,该第二mbuf包含第二地址信息。
本申请中,mbuf的控制字段中包含数据流标识,每条mbuf链表与一条数据流对应,从而增加了报文聚合过程的流畅性,提高了本方案的可行性。
一种可能的实现方式下,主机中还存储有第三mbuf,该第三mbuf的控制字段中还包括第三标志位,该智能网卡还可以解析接收到的第三报文,以得到该第三报文承载的信息,该第三报文承载的信息指示该第三报文为不需要聚合的报文;由于该第三报文为不需要聚合的报文,该智能网卡可以在第三mbuf的控制字段的第三标志位上添加第三指示信息,该第三指示信息用于指示该第三报文需要立即发送,该第三mbuf中还包含为该第三报文分配的第三地址信息,其中,该第三地址信息指示该虚拟机中的第四地址空间;由于该第三报文不需要聚合,则该智能网卡可以在该第三地址信息所指示的第四地址空间的起始位置处预留Virtio协议头部长度的地址空间后,将该第一报文的报文头和载荷通过DMA存入该第四地址空间;该主机在读取更新后的第三mubf后,可以获知该第三报文为不需要聚合且需要立即发送的报文,从而向虚拟机发送通知;该虚拟机在接收到通知后,根据该通知通知读取该第三地址信息,以获得该第四地址空间中存储的第三报文。
本申请中,智能网卡不仅可以处理需要聚合的报文,还可以处理直接发送给该虚拟机的报文,增加了本方案的实现场景,提高了本方案的实现灵活性。
第二方面,本申请实施例提供了一种报文处理方法,该报文处理方法应用于智能网卡,该智能网卡运行于物理机,该物理机中还运行有主机和虚拟机,该智能网卡执行的报文处理方法为前述第一方面中智能网卡执行的方法,该方法可以包括:解析接收到的第一报文,以得到该第一报文的标识;根据该第一报文的标识,更新第一存储器缓存mbuf的控制字段,该第一mbuf还包含为该第一报文分配的第一地址信息,该第一地址信息指示该虚拟机中的第一地址空间;根据该第一报文的聚合位置,将该第一报文的载荷,或者将该第一报文的报文头和载荷通过直接内存存取DMA存入该第一地址空间,其中,该聚合位置为该第一地址信息与至少一个第二地址信息聚合时,该第一地址信息相对于该至少一个第二地址信息所处的位置,该第二地址信息指示为第二报文分配的该虚拟机中的第二地址空间,该第二报文是该智能网卡接收到的与该第一报文属于同一数据流的报文;其中,更新后的该第一mubf中的控制字段用于指示该主机将该第一地址信息与至少一个第二地址信息聚合。
本申请中,智能网卡解析接收到的第一报文,得到第一报文的标识,根据第一报文的标识填写第一存储器缓存的控制字段,将该第一报文或该第一报文的载荷DMA到第一地址信息所指示的缓存空间,更新后的该第一mbuf中的控制字段可以指示主机将该第一地址信息与至少一个第二地址信息聚合。本方案中由智能网卡解析第一报文,节省了由于解析第一报文所消耗的CPU资源;且智能网卡将第一报文DMA到第一地址信息所指示的第一地址空间,则虚拟机可直接从第一地址空间中读取报文,避免软件对第一步报文进行移动拷贝,节省了软件对第一报文执行移动拷贝带来的CPU消耗。
第三方面,本申请实施例提供了一种报文处理方法,该报文处理方法由主机和虚拟机配合执行,该主机和该虚拟机运行于物理机之上,该物理机还包括智能网卡,该主机和虚拟机执行的报文处理方法为前述第一方面中主机和虚拟机执行的方法,该方法可以包括:该主机读取第一mbuf的控制字段,以确定该第一mbuf对应的第一报文的聚合位置,其中,该第一mbuf的控制字段为该智能网卡根据该第一报文的标识更新的;该主机根据该第一报文的聚合位置,将该第一mbuf中的第一地址信息与至少一个第二地址信息聚合,其中,该聚合位置为该第一地址信息与该至少一个第二地址信息聚合时,该第一地址信息相对于该至少一个第二地址信息所处的位置,该第一地址信息指示为该第一报文分配的该虚拟机中的第一地址空间,该第二地址信息指示为第二报文分配的该虚拟机中的第二地址空间,该第二报文是与该第一报文属于同一数据流的报文;该虚拟机根据聚合后的地址信息,通过直接内存存取DMA获得该聚合后的地址信息所指示的地址空间中的数据,其中该地址空间中的数据包括该第一报文的载荷和该至少一个第二报文的载荷。
本申请中,主机根据智能网卡更新的第一mbuf中的控制字段确定第一报文的聚合位置,并将该第一地址信息与至少一个第二地址信息聚合,再由虚拟机根据聚合后的地址信息,通过直接内存存取DMA获得该聚合后的地址信息所指示的地址空间中的数据。本方案中主机无需解析第一报文即可获得第一报文的聚合位置;且虚拟机可通过直接内存存取直接从聚合的地址信息所指示的地址空间中读取报文,避免软件对第一步报文进行移动拷贝,节省了软件对第一报文执行移动拷贝带来的CPU消耗。
第四方面,本申请实施例提供了一种智能网卡,该智能网卡运行于物理机,该物理机中还运行有主机和虚拟机,该智能网卡执行第一方面中智能网卡执行的方法,该智能网卡包括:解析单元,用于解析接收到的第一报文,以得到该第一报文的标识;更新单元,用于根据该第一报文的标识,更新第一存储器缓存mbuf的控制字段,该第一mbuf还包含为该第一报文分配的第一地址信息,该第一地址信息指示该虚拟机中的第一地址空间;存储单元,用于根据该第一报文的聚合位置,将该第一报文的载荷,或者将该第一报文的报文头和载荷通过直接内存存取DMA存入该第一地址空间,其中,该聚合位置为该第一地址信息与至少一个第二地址信息聚合时,该第一地址信息相对于该至少一个第二地址信息所处的位置,该第二地址信息指示为第二报文分配的该虚拟机中的第二地址空间,该第二报文是该智能网卡接收到的与该第一报文属于同一数据流的报文;其中,更新后的该第一mubf中的控制字段用于指示该主机将该第一地址信息与至少一个第二地址信息聚合。
本申请中,解析单元解析接收到的第一报文,得到第一报文的标识,更新单元根据第一报文的标识填写第一存储器缓存的控制字段,存储单元将该第一报文或该第一报文的载荷DMA到第一地址信息所指示的缓存空间,更新后的该第一mbuf中的控制字段可以指示主机将该第一地址信息与至少一个第二地址信息聚合。本方案中由智能网卡解析第一报文,节省了由于解析第一报文所消耗的CPU资源;且智能网卡将第一报文DMA到第一地址信息所指示的第一地址空间,则虚拟机可直接从第一地址空间中读取报文,避免软件对第一步报文进行移动拷贝,节省了软件对第一报文执行移动拷贝带来的CPU消耗。
第五方面,本申请实施例提供了一种报文处理装置,该报文处理装置包括主机和虚拟机,该装置运行于物理机之上,该物理机还包括智能网卡,该主机和虚拟机执行第一方面中主机和虚拟机执行的方法,该装置包括:该主机用于读取第一mbuf的控制字段,以确定该第一mbuf对应的第一报文的聚合位置,其中,该第一mbuf的控制字段为该智能网卡根据该第一报文的标识更新的;该主机还用于根据该第一报文的聚合位置,将该第一mbuf中的第一地址信息与至少一个第二地址信息聚合,其中,该聚合位置为该第一地址信息与该至少一个第二地址信息聚合时,该第一地址信息相对于该至少一个第二地址信息所处的位置,该第一地址信息指示为该第一报文分配的该虚拟机中的第一地址空间,该第二地址信息指示为第二报文分配的该虚拟机中的第二地址空间,该第二报文是与该第一报文属于同一数据流的报文;该虚拟机用于根据聚合后的地址信息,通过直接内存存取DMA获得该聚合后的地址信息所指示的地址空间中的数据,其中该地址空间中的数据包括该第一报文的载荷和该至少一个第二报文的载荷。
本申请中,主机根据智能网卡更新的第一mbuf中的控制字段确定第一报文的聚合位置,并将该第一地址信息与至少一个第二地址信息聚合,再由虚拟机根据聚合后的地址信息,通过直接内存存取DMA获得该聚合后的地址信息所指示的地址空间中的数据。本方案中主机无需解析第一报文即可获得第一报文的聚合位置;且虚拟机可通过直接内存存取直接从聚合的地址信息所指示的地址空间中读取报文,避免软件对第一步报文进行移动拷贝,节省了软件对第一报文执行移动拷贝带来的CPU消耗。
第六方面,本申请实施例提供了一种智能网卡,该智能网卡包括:处理电路和存储器,该存储器中存储有上述第二方面描述的报文处理的指令;该处理电路用于执行存储器中存储的报文处理的指令,执行如上述第二方面描述的报文处理的方法的步骤。
第七方面,本申请实施例提供了一种计算机存储介质,该计算机可读存储介质中存储有报文处理的指令,当其在计算机上运行时,使得计算机执行上述第二方面描述的报文处理的方法。
第八方面,本申请实施例提供了一种计算机存储介质,该计算机可读存储介质中存储有报文处理的指令,当其在计算机上运行时,使得计算机执行上述第三方面描述的报文处理的方法。
第九方面,本申请实施例提供了一种芯片系统,该芯片系统包括处理器,用于支持网络设备实现上述方面中所涉及的功能,例如,例如发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,该芯片系统还包括存储器,该存储器,用于保存网络设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
本申请第六方面至第九方面的有益效果,可以参考第一方面。
附图说明
图1为本申请实施例提供的一种网络结构示意图;
图2为本申请实施例提供的另一种网络结构示意图;
图3为本申请实施例提供的又一种网络结构示意图;
图4为本申请实施例提供的报文处理方法的一种流程示意图;
图5为本申请实施例提供的存储器缓存的控制字段的结构示意图;
图6为本申请实施例提供的报文处理方法的另一种流程示意图;
图7为本申请实施例提供的报文处理方法的又一种流程示意图;
图8为本申请实施例提供的报文处理方法的再一种流程示意图;
图9为本申请实施例提供的智能网卡的一种结构示意图;
图10为本申请实施例提供的报文处理装置的一种结构示意图。
具体实施方式
本申请实施例提供了一种报文处理方法,用于节省由于解析报文所消耗的CPU资源。本发明实施例还提供相应的装置。以下分别进行详细说明。
在本申请实施例中,如图1所示,本申请应用于运行在云计算环境下的物理机100,该物理机100可以用于云计算,多个物理机100通过物理交换机110相连,每一个物理机100都有完整的软件环境和硬件环境,其中硬件至少包括CPU1003、内存1004和智能网卡1005;多台虚拟机(virtual machine,VM)1001运行在物理机100的软件环境下,通过主机1002与智能网卡1005连接,继而和外部通信。
在本申请实施例中,虚拟机1001为虚拟输入输出前端设备,主机1002可以包括虚拟输入输出后端设备和数据面开发工具(data plane development kit,DPDK)接口,其中,虚拟输入输出后端设备可以为主控虚拟机(virtual host,Vhost),也可以为虚拟机监控器(virtual machine monitor,VMM),应当理解,本申请实施例中,以虚拟输入输出后端设备为主控虚拟机为例进行说明。
在本申请实施例中,VM与vhost均为虚拟化输入输出设备,参见图2,虚拟化输入输出设备使用虚拟队列(virtual queue,Virtqueue)来实现其输入输出机制,每个Virtqueue就是一个承载大量数据的队列结构,本申请实施例中的虚拟化输入输出设备的Virtqueue成对出现,一个用于发送数据,一个用于接收数据。
在本申请实施例中,虚拟环(virtual ring,vring)是Virtqueue的具体实现方式,针对Vring会有相应的描述符表进行描述。如图2所示,一个Virtqueue结构包含三个部分:描述符表(descriptor table)、当前可用队列(available vring)和已使用队列(usedvring)。
其中,一张描述符表包含多个描述符,每个描述符都是对一块地址空间的描述,至少包含一块地址空间的起始地址、地址空间的长度和描述符标识。当前可用队列中记录着与当前可用的地址空间对应的描述符标识,已使用队列中记录着与已经被主机使用过的地址空间对应的描述符标识,虚拟机读取已使用队列中的描述符标识,根据描述符标识从描述符表中获取到与描述符对应的地址空间的起始地址,从而根据地址空间的起始位置读取该地址空间中存储的数据。
参见图3,本申请实施例提供了一种物理机,该物理机100包括智能网卡1005、处理器和存储器,该处理器通过运行存储器中的代码,运行主机1002和虚拟机1001,主机1002上维护有包含多个存储器缓存(mbuf)的mbuf链表,每个mbuf都分别包含控制字段和地址信息,智能网卡1005上记录有数据流的第一报文接收情况,当智能网卡1005接收到第一报文后,解析该第一报文,以得到该第一报文承载的信息,并根据该第一报文承载的信息填写该mbuf的控制字段,并将该第一报文的报文头和载荷或该第一报文的载荷通过直接内存存取(direct memory access,DMA)存入到该mbuf包含的地址信息所指示的地址空间中,也即虚拟机1001可以直接访问的地址空间中,由主机1002对更新后的mbuf进行聚合,当满足聚合终止条件时,由虚拟机1001读取聚合后的mubf包含的地址信息,以获得聚合后的地址信息所指示的地址空间中的数据。
由于当第一报文的聚合位置是首位时和第一报文的聚合位置不是首位时,智能网卡1005和主机1002对该第一报文的处理方式不同,以下,对第一报文的聚合位置是首位和不是首位的情况分别进行介绍。
一、第一报文的聚合位置是首位
如图1所示的,主机1002可以包括主控虚拟机和DPDK接口,当第一报文的聚合位置是首位时,可以由主控虚拟机上维护包含多个第一mbuf的mbuf链表,并由主控虚拟机通知虚拟机1001;也可以由DPDK接口维护包含多个多个第一mbuf的mbuf链表,并由主控虚拟机通知虚拟机1001。以下,对由主控虚拟机维护mbuf链表和由DPDK接口维护mbuf链表分别进行说明。
1、主控虚拟机维护mbuf链表
以上所提供的物理机可以用于执行如下报文处理的方法,具体参阅图4,本申请实施例中,报文处理方法的一个实施例可以包括:
401、智能网卡解析接收到的第一报文。
本实施例中,智能网卡在接收到该第一报文之后,解析该第一报文后可以获得第一报文的报文头和载荷,该第一报文的报文头中包含该第一报文的标识,该第一报文的标识可以包括该第一报文所在的数据流的标识和第一报文的报文序列号。
本实施例中,智能网卡可以一次接收到多个归属于同一数据流的第一报文,也可以多次分别接收到多个归属于同一数据流的第一报文。
本实施例中,智能网卡可以从外部网络接收第一报文,例如互联网接收到第一报文;也可以从本地的虚拟机处接收到第一报文,例如,如图1所示,一台物理机100上可配置有多台虚拟机,智能网卡可以从本地的虚拟机处接收到第一报文。其中,第一报文可以为传输控制协议(transmission control protocol,TCP)报文。应当理解,本实施例及后续实施例中,以第一报文为TCP报文进行解释说明。
本实施例中,第一报文的报文头可以包含五元组信息、子网标识符、报文序列号、报文类型、报文标志位或其他报文头信息等,第一报文的载荷为第一报文携带的有效数据。其中,五元组信息可以包括指源网络之间互连协议(internet protocol,IP)地址、源端口号、目的IP地址、目的端口号以及传输层协议号。子网标识符用于标识所属子网的标识符,一般为虚拟局域网网络标识符(virtual local area network identifier,VLAN ID)、VXLAN网络标识符(vxlan network identifier,VNI)或输入端口号等信息。报文序列号为报文发送端在发送报文时根据报文的拆分情况生成,由于一条数据流中包含多个报文,发送端将一条数据流拆分成多个第一报文时,需要对多个第一报文进行编号,并携带于第一报文的报文头中发送至接收端,以指示接收端按照编号顺序处理多个第一报文,在本实施例及后续实施例中,接收端为智能网卡。
本实施例中,第一报文所在的数据流的标识可以包括第一报文的五元组信息、子网标识符。
402、智能网卡根据第一报文的标识,判断该第一报文的聚合位置是否为首位,若该第一报文的聚合位置是首位,则进入步骤403;若该第一报文的聚合位置不是首位,则进入步骤416。
本实施例中,智能网卡中存储有第一报文的接收和聚合情况的记录,通过步骤402得到第一报文的标识中包含的五元组信息和子网标识符后,智能网卡可以确定该第一报文归属的数据流,并根据第一报文的报文序列号判断归属于该条数据流的至少一个第二报文中,是否存在排序在第一报文之前且尚未聚合的第二报文,若不存在,则该第一报文的聚合位置是首位,若存在,则该第一报文的聚合位置不是首位。
在本实施例及后续实施例中,该至少一个第二报文与智能网卡接收到的第一报文归属于同一数据流,其中,第一报文是指智能网卡在接收报文过程中的每个报文,第二报文是指智能网卡接收到的与该第一报文归属于同一数据流的报文。
本实施例及后续实施例中,该智能网卡中可以存储有记录归属于一条数据流的第一报文接收情况的对应关系表,以记录第一报文的接收和聚合情况。参见表1,该对应关系表可以包含多条记录,每条记录对应一条数据流,其中,每条记录包括一个报文所在的数据流的标识,该报文的序列号以及该报文的编号之间的映射关系,该报文的编号用于指示该报文的聚合位置,该多条记录中的每条记录还可以包含mbuf链表标识、每条记录的最后更新时间或其他信息等,具体此处不再一一列举。
本实施例及后续实施例中,该mbuf链表标识可以是五元组信息和子网标识符;也可以是mbuf链表标识与数据流的标识之间存在映射关系,智能网卡在接收到第一报文后,根据第一报文的五元组信息和子网标识符生成该mbuf链表标识,例如表1中所示的中的唯一数据流标识符(unique flow ID,UFID)字段;还可以为其他数据流标识信息等。应当理解,本实施例及后续实施例中,以mbuf链表标识为UFID为例进行说明。
本实施例及后续实施例中,智能硬卡可以第一报文的标识中包含的报文序列号作为该第一报文的编号,也可以根据该报文序列号对接收到的第一报文进行排序后生成该第二序列号等,具体第二序列号的生成方式,此处不做限定。
本实施例及后续实施例中,最后更新时间用于指示最后更新与数据流对应的记录的更新时间,可以为一条数据流中接收到的多个第二报文中最后一个报文的接收时间,也可以为根据第一报文的报文头携带的时间戳生成等,具体最后更新时间的生成方式,此处不做限定。
UFID | 数据流的标识 | 第一报文的编号 | 最后更新时间 |
A | a | 5 | 1807160642364553222 |
B | b | 8 | 1807160642364553468 |
C | c | 3 | 1807160642364538246 |
表1
表1所示的对应关系表中包含UFID、数据流的标识、第一报文的编号和最后更新时间4个字段,其中,最后更新时间的字段值是以时间戳的形式,时间戳是由CPU定义的时间,表1中截取了该对应关系表中的3条记录,参见表1,第一条记录表示数据流的标识为a的数据流的最后一个第一报文,该数据流标识为A,根据该第一报文的序列号生成的第一报文的编号为5,该第一报文的最后更新时间为1807160642364553222;第二条记录表示数据流的标识为b的数据流的最后一个第一报文,该数据流的表示为B,根据该第一报文的序列号生成的该第一报文的编号为8,该第一报文的最后更新时间为1807160642364553468,此处不再对其他记录一一赘述。
应当理解,智能网卡中的对应关系表还可以为其他的表现形式,应结合实际应用灵活设定,此处不做限定。
本实施例中,智能网卡根据该第一报文所在的数据流的标识和该第一报文的序列号,在该对应关系表中查找到该第一报文的编号;在该第一报文的编号为预设值的情况下,该智能网卡确定该第一报文的聚合位置为首位;在该第一报文的编号不为预设值的情况下,该智能网卡确定该第一报文的聚合位置不为首位。
本实施例中,智能网卡在获得第一报文的标识后,从中获取到第一报文所在的数据流标识,也即第一报文的报文头中携带的五元组信息和子网标识符。由于归属于一条数据流的多个第二报文中每个报文的报文头中携带的五元组信息和子网标识符一致,智能网卡可以根据第一报文的五元组信息、子网标识符和该对应关系表,确定与该第一报文对应的的目标记录。智能网卡在确定记录该数据流的目标记录之后,根据第一报文的报文序列号,第一报文的报文序列号以及第一报文的编号之间的映射关系,确定该第一报文的编号,在该第一报文的编号为预设值的情况下,该智能网卡确定该第一报文的聚合位置为首位;在该第一报文的编号不为预设值的情况下,该智能网卡确定该第一报文的聚合位置不为首位。智能网卡利用对应关系表来记录第一报文的接收情况,操作简单且容易实现,增加了本方案的可实现性。
本实施例中,该预设值可以为0或者其他取值,具体此处不做限定。
本实施例及后续实施例中,智能网卡根据该第一报文的标识,得到与该第一报文对应的目标记录,包括:
智能网卡判断该对应关系表包含的该多条记录中是否存在目标记录,该目标记录中包含的数据流标识与该第一报文的标识对应;
若不存在,则智能网卡根据该第一报文的五元组信息和子网标识符生成与该第一报文对应的数据流标识;
智能网卡将生成的该数据流标识添加至该对应关系表,以生成与该第一报文对应的目标记录;
若存在,则智能网卡读取该数据流标识所在的该目标记录。
本实施例中,智能网卡在解析获得第一报文的五元组信息和子网标识符之后,遍历上述对应关系表中的每条记录,以判断该对应关系表中是否存在与该第一报文对应的目标记录。若该对应关系表中不存在与该第一报文的五元组信息和子网标识符对应的UFID,则智能网卡根据该第一报文的五元组信息和子网标识符生成该第一报文的该数据流标识,并将生成的该数据流标识添加至该对应关系表,以生成与该数据流对应的该目标记录;若该对应关系表中存在与该第一报文的五元组信息和子网标识符对应的UFID,则智能网卡读取该UFID所在的目标记录,保证智能网卡接收到的每条数据流在对应关系表中均有记录,从而保证了对应关系表中数据的完整性。
本实施例中,该预设值为智能网卡预先设定的值,可以为标识该第一报文的聚合位置是首位的值,作为实例,例如第二序列号的值为0或1;也可以为第一预设阈值,作为实例,例如第二序列号的值为16、15或14等,当该第二序列号的值达到第一预设阈值时,也即智能网卡判断待聚合的多个第二报文的数量达到第一预设阈值时,需要对第一预设阈值数量的多个第二报文执行聚合操作。
本实施例及后续实施例中,该报文处理方法还可以包括:
智能网卡判断该多条记录的记录条数是否达到第二预设阈值;
若达到该第二预设阈值,则智能网卡获取该多条记录中该每条记录的最后更新时间;
智能网卡确定该每条记录的最后更新时间与当前时间的差值;
智能网卡判断该每条记录中是否存在该差值超过第三预设阈值的记录;
若存在该差值超过第三预设阈值的记录,则智能网卡删除该差值超过第三预设阈值的记录。
本实施例中,由于智能网卡接收的不同的数据流逐渐增加,而智能网卡中维护的该对应关系表的大小可以是固定不变的,也即该对应关系表中可存储的记录条数存在第二预设阈值,则当智能网卡根据新的五元组信息和子网标识符生成新的记录时,智能网卡可以判断需存储于该对应关系表的多条记录的记录条数是否达到第二预设阈值,若达到该第二预设阈值,则智能网卡从该对应关系表中获取该多条记录中每条记录的最后更新时间,并获取当前时间,从而确定该每条记录的最后更新时间与当前时间的差值,智能网卡判断该每条记录中是否存在该差值超过第三预设阈值的记录,若存在该差值超过第三预设阈值的记录,则智能网卡删除该差值超过第三预设阈值的记录,从而保证与对应关系表中存储的记录对应的数据流处于报文传输活跃状态,提高对应关系表中每条记录的利用率。
其中,该第二预设阈值为智能网卡预先设定的数值,该第二预设阈值的取值可以为2M条,也即2097152(2*1024*1024)条;也可以为3M条,也即3145728(2*1024*1024)条;还可以为其他取值,该第二预设阈值的取值可以由智能网卡根据该智能网卡的处理能力、智能网卡实际处理的数据流的数量等因素灵活设定,此处举例仅为方便理解,对第二预设阈值的取值不做限定。
该第三预设阈值为智能网卡预先设定数值,在第一报文所归属的数据流处于不同状态时,该第三预设阈值的取值可以不同,作为示例,例如当TCP链接的三次握手完成时,则第一报文归属的数据流处于稳定状态,当智能网卡接收到用于指示结束连接的报文时,则第一报文归属的数据流处于终止状态,稳定状态下的第三预设阈值大于终止状态下的第三预设阈值,应当理解,此处举例仅为方便理解,对数据流的不同状态和第三预设阈值的选择应结合实际情况灵活设定,此处不做限定。
403、智能网卡在第一存储器缓存mbuf的控制字段的第一标志位上添加第一指示信息。
本实施例中,主控虚拟机中维护有mbuf链表,每条mbuf链表均包含多个mbuf,智能网卡在解析该第一报文后,可以确定与该第一报文对应的第一mbuf,其中,每个mbuf都分别包含控制字段和第一地址信息,则当第一报文的聚合位置是首位时,智能网卡在与第一报文对应的控制字段的第一标志位上添加第一指示信息,并在控制字段的UFID字段填写该第一报文的UFID,其中,该第一指示信息用于指示该第一报文携带报文头。
本实施例及后续实施例中,mbuf为用于传输数据的一种数据结构,如图5所示,该控制字段至少包括标志位字段、UFID字段和序列号字段,其中,标志位字段至少包括第一标志位,当第一标志位上存在第一指示信息时,可以表示与该第一控制字段对应的第一报文携带报文头,也即与该第一控制字段对应的第一报文的聚合位置是首位,作为示例,第一标志位可以为FLAG_PKTHDR,第一指示信息可以为1;作为另一实例,该第一标志位可以为FLAG_PKTHDR,第一指示信息可以为0,应当理解,智能网卡和主控虚拟机可以根据需要对第一标志位的命名进行更新,只要当第一标志位上存在第一指示信息时,标识该第一报文携带报文头即可,具体第一标志位和第一指示信息的表现形式,此处不做限定。
本实施例中,每个mbuf包含的地址信息均指示一块地址空间,该第一地址信息所指示的第一地址空间为主控虚拟机和虚拟机均可直接访问的地址空间。由于主控虚拟机可以确定可使用的地址空间的地址信息,主控虚拟机将每个描述符所描述的地址空间包装成mbuf格式,则智能网卡确定与该第一报文对应的第一mbuf的方式可以为当智能网卡接收到第一报文后,向主控虚拟机请求与第一报文大小对应的第一mbuf,并接收该主控虚拟机返回的第一mbuf的地址信息;也可以为智能网卡中预先写入第一mbuf的地址信息,智能网卡在接收到该第一报文后,从已存储的信息中获知第一mbuf的地址信息,应当理解,智能网卡也可以通过其他方式确定与该第一报文对应的第一mbuf,具体该第一mbuf的确定方式,此处不做限定。
404、智能网卡在第一地址信息所指示的第一地址空间的起始位置处预留虚拟化输入输出Virtio协议头部的长度的第三地址空间。
本实施例中,智能网卡在确定该第一地址信息所指示的第一地址空间后,在该第一地址空间的起始位置处预留第三地址空间,该第三地址空间的长度为虚拟化输入输出(virtual input/output,Virtio)协议头部的长度。
本实施例中,智能网卡中可以预先存储有Virtio协议头部的长度,该Virtio协议头部支持以聚合方式接收报文,作为示例,Virtio协议头部的长度可以为12字节或者其他长度,此处不限定Virtio协议头部的长度。
405、智能网卡将该第一报文的报文头和载荷通过直接内存存取DMA存入该第一地址空间。
本实施例中,智能网卡在确定该第一地址信息所指示的第一地址空间后,由于第一报文的聚合位置是首位,智能网卡将第一报文的报文头和载荷DMA到该第一地址信息所指示的第一地址空间中,从而使聚合后的报文也保留有报文头,以保证聚合后的报文与聚合前的报文的一致性。其中,该第一地址信息所指示的第一地址空间为主控虚拟机和虚拟机均可直接访问的地址空间。
可以理解的是,本实施例中步骤404和步骤405至步骤406没有必然的执行先后顺序,可以先执行步骤404,也可以先执行步骤405至步骤406。
406、主控虚拟机将包含该第一地址信息的第一mbuf放在mbuf链表的头部。
本实施例中,主控虚拟机在获得到该第一mbuf的控制字段后,判断在该控制字段的第一标志位上是否存在第一指示信息,当该控制字段的第一标志位上存在该第一指示信息时,确定与该第一mbuf对应的第一报文携带有报文头,则将该第一mbuf放在mbuf链表的头部。
407、主控虚拟机将该mbuf链表的头部与至少一个第二地址信息聚合。
本实施例中,每条mbuf链表对应一条数据流,该第一mbuf中的控制字段还包括该数据流标识,其中,主控虚拟机在获得作为mbuf链表的头部的第一mbuf之后,可以再接收到与该第一报文归属于同一条数据流的至少一个第二报文,并根据该第二报文的标识更新第二mbuf的控制字段,该第二mbuf包含为该第二报文分配的虚拟机中的第二地址信息,则主控虚拟机在接受到第二报文后,根据该第二报文的标识更新第二mbuf,将包含第一地址信息的第一mbuf和包含第二地址信息的第二mbuf聚合。
本实施例中,每个mbuf的控制字段还包含数据流标识和mbuf指针,该mbuf指针用于将多个mbuf连成一条mbuf链表,本申请中聚合指的利用mbuf指针将控制字段中数据流标识一致的多个mbuf连成一条mbuf链表。
408、当满足聚合终止条件时,主控虚拟机将该Virtio协议头部写入该第三地址空间。
本实施例中,该mbuf链表上包含多个与第二报文对应的第二mbuf,在智能网卡根据多个第二报文承载的信息填写mbuf的控制字段,并将多个第二报文DMA到地址信息所指示的地址空间后,主控虚拟机需要判断该多个第二报文是否满足聚合终止条件。由于主控虚拟机可以直接访问第一地址信息所指示的地址空间,则在满足聚合终止条件时,该主控虚拟机在第一地址空间的起始位置处预留的第三地址空间中填写Virtio协议头部,其中,Virtio协议头部至少携带有地址空间个数字段,该字段用于指示聚合后的报文所占用的地址空间的个数,主控虚拟机根据该mbuf链表上包含的第二地址信息的个数来确定聚合后的报文所占用的地址空间的个数。
本实施例中,在一种实现方式中,每个mbuf还包含序列号字段,该序列号字段用于指示报文的聚合位置,该聚合位置也是在对第一地址信息和至少一个第二地址信息聚合时,地址信息的聚合位置,主控虚拟机判断是否满足聚合终止条件的方式可以为获取mbuf链表上包含的多个第二mbuf中最后一个第一mbuf的控制字段,判断该最后一个第一mbuf的序列号字段的取值是否达到第四预设阈值,若达到该第四预设阈值,则确定满足聚合终止条件,该第四预设阈值可以为16、15、14或其他个数,此处对第四预设阈值的设定不做限定。
在另一种实现方式中,主控虚拟机判断多个第二报文是否满足聚合终止条件的方式还可以为获取mbuf链表上包含的多个第二mbuf中最后一个第一mbuf的控制字段,判断该最后一个第一mbuf的第五标志位上是否填写有第五指示信息,该第五指示信息用于指示满足聚合终止条件,若该最后一个第一报文的第五标志位上存在第五指示信息,则确定满足聚合终止条件,作为示例,例如该第五标志位可以为FLAG_END,该第五指示信息可以为1,应当理解,此处对第五标志位和第五指示信息的举例仅为方便理解本方案,对第五标志位和第五指示信息的取值,不具有限定意义。
在又一种实现方式中,判断多个第二报文是否满足聚合终止条件的方式还可以为获取mbuf链表上包含的多个第二mbuf中最后一个第一mbuf的控制字段,判断该最后一个第一mbuf的第一标志位上是否填写有第一指示信息,该第一指示信息用于指示改第一报文携带有报文头,若该最后一个第一mbuf的第一标志位上存在第一标志信息,则主控虚拟机确定满足聚合终止条件,并从归属于mbuf链表的多个第二mbuf中获取上一个第一标志位上存在第一指示信息的第一mbuf,该多个第二mbuf为归属于同一mbuf链表的两个第一标志位上均存在第一指示信息的第一报文之间的多个第二mbuf,该多个第二mbuf包含该上一个第一标志位上存在第一指示信息的第一报文,作为示例,例如mbuf链表上存在多个第二mbuf,其中,mbuf链表上的第一个第一mbuf的控制字段的FLAG_PKTHDR上存在1,mbuf链表上的第二个第一mbuf至第十六个第一mbuf的控制字段的FLAG_PKTHDR上均不存在1,目标聚合队列上的第十七个第一mbuf的控制字段的FLAG_PKTHDR上存在1,则mbuf链表上的包含第一个至第十六个第一mbuf的多个第二mbuf满足聚合条件,应当理解,此处举例仅为方便理解本方案,对第一标志位、第一指示信息和多个第二报文的数量的取值,不具有限定意义。
在又一种实现方式中,主控虚拟机判断多个第二mbuf是否满足聚合终止条件的方式还可以为在获取到作为mbuf链表头的第一mbuf后,主控虚拟机可以设置有计时器,用于记录mbuf链表的存在时间,当mbuf链表的存在时间超过预设时间阈值时,则主控虚拟机确定多个第二mbuf满足聚合终止条件,作为示例,该预设时间阈值可以为20微秒,当计时器获取到mbuf链表超过20微秒尚未聚合时,主控虚拟机确定多个第二mbuf满足聚合终止条件,应当理解,预设时间阈值也可以是30微秒或者其他长度,此处对预设时间阈值的举例仅为方便理解,不具有限定意义。
应当理解,主控虚拟机还可以通过其他方式来判断是否满足聚合终止条件,可根据实际情况灵活设定,此处不再一一赘述。
409、主控虚拟机将聚合后的地址信息放入已使用队列。
本实施例中,主控虚拟机在填写Virtio协议头部后,将mbuf链表中存储的多个第二mbuf中包含的多个第二地址信息写入到已使用队列(used vring)中,并向虚拟机发送中断指令,以通知虚拟机到已使用队列中读取该第二地址信息。
本实施例中,由智能网卡解析第一报文,节省了由于解析第一报文所消耗的CPU资源;且智能网卡将第一报文DMA到第一地址信息所指示的地址空间,则主机可直接对DMA到地址空间中的报文进行聚合,避免软件对第一步报文进行移动拷贝,节省了软件对第一报文执行移动拷贝带来的CPU消耗。
410、虚拟机读取聚合后的地址信息,以获得该聚合后的地址信息所指示的地址空间中的数据。
本实施例中,虚拟机读取used vring中包含的聚合后的地址信息,该聚合后的地址信息可以包括多个第二地址信息,该第二地址信息可以为与第二地址空间对应的描述符标识,虚拟机根据读取到的与存储多个第二报文的第二地址空间对应的描述符标识,由于描述符中存储有第二地址空间的起始地址,虚拟机在获取到多个第二地址空间的起始地址后,依次读取聚合后的地址信息所指示的地址空间中的数据。
411、智能网卡解析接收到的第三报文。
本实施例中,智能网卡可以解析接收到的第三报文,以得到该第三报文承载的信息,该第三报文承载的信息指示该第三报文为不需要聚合的报文,其中,该第三报文承载的信息包括第三报文的报文头和载荷,第三报文的报文头至少包含报文类型和报文标志位。
智能网卡可以根据第三报文承载的信息确定该第三报文是否需要聚合,具体可以为根据第三报文的报文头中携带的报文标志位判断该第三报文的报文头中的特殊标志位上是否存在指示信息,若该第三报文的报文标志位中的特殊标志位上存在指示信息,则确定该第三报文为不需要聚合的报文。其中,该特殊标志位可以为TCP_PSH,当该特殊标志位上存在1时,标识该第三报文需要立即发送;该特殊标志位也可以为TCP_FIN,当该特殊标志位上存在1时,标识该第三报文归属的TCP连接结束;该特殊标志位还可以为TCP_CWR,当该特殊标志位上存在1时,标识该第三报文归属的TCP窗口改变或其他的特殊标志位等,应当理解,此处举例仅为方便理解,对特殊标志位和特殊标志位上的指示信息的选择不做限定。
智能网卡可以根据第三报文承载的信息确定该第三报文是否需要聚合,具体还可以为获取该第三报文归属的数据流后,确定接收任意两个相邻的第三报文的接收时间的时间间隔,智能网卡判断该时间间隔是否超过预设时间间隔,若超过预设时间间隔,则确定该第三报文为不需要聚合的报文。
智能网卡可以根据第三报文承载的信息确定该第三报文为不需要聚合的报文,具体还可以为上述三种判断方式的任意组合,作为示例,智能网卡判断该第三报文是否为TCP报文,若是TCP报文,则判断该第三报文的报文头中的特殊标志位上是否存在指示信息,若存在该指示信息,则确定该第三报文为不需要聚合的报文;作为另一示例,智能网卡判断接收第三报文和接收第五报文的时间间隔是否超过预设时间间隔,若未超过,则判断该第三报文的报文头中的特殊标志位上是否存在指示信息,若存在该指示信息,则确定该第三报文为不需要聚合的报文等,具体其他判断方式此处不一一列举。
412、智能网卡在该第三mbuf的控制字段的第三标志位上添加第三指示信息。
本实施例中,第三mbuf的控制字段中还包含第三标志位和第四标志位,该第三标志位用于标识该第三报文是否需要立即发送,当智能网卡根据第三报文承载的信息确定该第三报文为不需要聚合的报文时,则在第三标志位上添加第三指示信息,该第三指示信息用于指示该第三报文需要立即发送。作为示例,该第三标志位可以为FLAG_FLUSH,该第三指示信息和第三指示信息均可以为1,应当理解,此处举例仅为方便理解本方案,具体对第三标志位、第三标志位和第三指示信息的设定,此处不做限定。
413、智能网卡将该第三报文的报文头和载荷通过直接内存存取DMA存入该第三地址信息指示的第四地址空间。
本实施例中,当智能网卡根据第三报文承载的信息确定该第三报文为不需要聚合的报文时,智能网卡获取的与该第三报文对应的第三mbuf中包含有第三地址信息,并在该第三地址空间的起始位置处预留Virtio协议头部后,将该第三报文的报文头和载荷通过直接内存存取存入该第三地址信息指示的第四地址空间。
414、主控虚拟机向虚拟机发送通知。
本实施例中,主控虚拟机在获取到该第三mbuf的控制字段后,由于该第三mbuf的第三标志位上存在第三指示信息,由此,该主控虚拟机获知需要将该第三报文需要立即发送至虚拟机,则在该第三地址空间的起始位置处填写Virtio协议头部,将该第三mbuf中包含的第三地址信息写入已使用队列中,并向虚拟机发送中断指令,以通知虚拟机到已使用队列中读取该第三地址信息。
415、虚拟机根据该通知读取该第三地址信息,以获得该第四地址空间中存储的第三报文。
416、智能网卡执行其他程序。
2、DPDK接口维护聚合链表
具体参阅图6,本申请实施例中,报文处理方法的另一个实施例可以包括:
本实施例中,步骤601至602与前述图4所示实施例中步骤401至402类似,此处不再赘述。
603、智能网卡在第一mbuf的控制字段的第一标志位上添加第一指示信息,该第一mbuf归属的mbuf链表维护于DPDK接口中。
本实施例中,DPDK接口通过轮询式网卡驱动(poll mode driver,PMD)进程维护有mbuf链表,该mbuf链表包含多个mbuf,智能网卡在解析该第一报文后,可以确定与该第一报文对应的第一mbuf,其中,每个mbuf都分别包含控制字段和地址信息,则当第一报文的聚合位置是首位时,智能网卡在与第一报文对应的第一控制字段的第一标志位上添加第一指示信息,并在控制字段的UFID字段填写该第一报文的UFID,其中,该第一指示信息用于指示该第一报文携带报文头。
本实施例中,每个mbuf包含的地址信息均指示一块地址空间,该地址空间为描述符所描述的且主控虚拟机和虚拟机均可直接访问的地址空间。由于主控虚拟机可以确定可使用的地址空间,主控虚拟机将描述符所描述的可用地址空间包装成mbuf格式,则智能网卡确定与该第一报文对应的第一mbuf的方式可以为当智能网卡接收到第一报文后,向DPDK接口请求与第一报文大小对应的第一mbuf,并接收DPDK接口返回的第一mbuf的地址信息;也可以为PMD进程预先将第一mbuf的地址信息写入智能网卡中,智能网卡在接收到该第一报文后,从已存储的信息中获知第一mbuf的地址信息,应当理解,智能网卡也可以通过其他方式确定与该第一报文对应的第一mbuf,具体该第一mbuf的确定方式,此处不做限定。
本实施例中,步骤604和605与前述图4所示实施例中步骤404和405类似,此处不再赘述。
本实施例中,步骤606至608与前述图4所示实施例中步骤406至408类似,步骤606至608与步骤407至409不同的地方在于执行主体不同,步骤406至408中执行主体为主控虚拟机,步骤606至608中的执行主体为DPDK接口,此处不再赘述。
本实施例中,步骤609至613与前述图4所示实施例中步骤410至413类似,此处不再赘述。
本实施例中,步骤614与前述图4所示实施例中步骤414类似,步骤614与步骤414不同的地方在于执行主体不同,步骤414中执行主体为主控虚拟机,步骤614中的执行主体为DPDK接口,此处不再赘述。
本实施例中,步骤615至616与前述图4所示实施例中步骤415至416类似,此处不再赘述。
二、第一报文的聚合位置不是首位
如图1所示的,主机包括主控虚拟机和DPDK接口,当第一报文的聚合位置不是首位时,可以由主控虚拟机上维护包含多个第一mbuf的mbuf链表,并由主控虚拟机通知虚拟机1001;也可以由DPDK接口维护包含多个多个第一mbuf的mbuf链表,并由主控虚拟机通知虚拟机1001。以下,在当第一报文的聚合位置不是首位时,对由主控虚拟机维护mbuf链表和由DPDK接口维护聚合链表分别进行说明。
1、主控虚拟机维护聚合链表
具体参阅图7,本申请实施例中,报文处理方法的另一个实施例可以包括:
本实施例中,步骤701与前述图4所示实施例中步骤401类似,此处不再赘述。
702、智能网卡根据第一报文的标识,判断该第一报文的聚合位置是否为首位,若该第一报文的聚合位置不是首位,则进入步骤703;若该第一报文的聚合位置是首位,则进入步骤714。
本实施例中,智能网卡中存储有第一报文的接收和聚合情况的记录,通过步骤402得到第一报文的标识中包含的五元组信息和子网标识符后,智能网卡可以确定该第一报文归属的数据流,并根据第一报文的报文序列号判断归属于该条数据流的至少一个第二报文中,是否存在排序在第一报文之前且尚未聚合的第二报文,若不存在,则该第一报文的聚合位置是首位,若存在,则该第一报文的聚合位置不是首位。
本实施例中,该智能网卡中可以存储有记录归属于一条数据流的第一报文接收情况的对应关系表,以记录第一报文的接收和聚合情况。参见表1,该对应关系表可以包含多条记录,每条记录对应一条数据流,其中,每条记录包括一个报文所在的数据流的标识,该报文的序列号以及该报文的编号之间的映射关系,该报文的编号用于指示该报文的聚合位置,该多条记录中的每条记录还可以包含mbuf链表标识、每条记录的最后更新时间或其他信息等,具体此处不再一一列举。
本实施例中,智能网卡根据该第一报文所在的数据流的标识和该第一报文的序列号,在该对应关系表中查找到该第一报文的编号;在该第一报文的编号为预设值的情况下,该智能网卡确定该第一报文的聚合位置为首位;在该第一报文的编号不为预设值的情况下,该智能网卡确定该第一报文的聚合位置不为首位。
本实施例中,智能网卡在获得第一报文的标识后,从中获取到第一报文所在的数据流标识,也即第一报文的报文头中携带的五元组信息和子网标识符。由于归属于一条数据流的多个第二报文中每个报文的报文头中携带的五元组信息和子网标识符一致,智能网卡可以根据第一报文的五元组信息、子网标识符和该对应关系表,确定与该第一报文对应的的目标记录。智能网卡在确定记录该数据流的目标记录之后,根据第一报文的报文序列号,第一报文的报文序列号以及第一报文的编号之间的映射关系,确定该第一报文的编号,在该第一报文的编号为预设值的情况下,该智能网卡确定该第一报文的聚合位置为首位;在该第一报文的编号不为预设值的情况下,该智能网卡确定该第一报文的聚合位置不为首位。
本实施例及其他实施例中,该报文处理方法还可以包括:若该第一报文的编号不为预设值,则智能网卡将该第一报文的编号加一;在加一后的第一报文的编号超过第一预设阈值的情况下,智能网卡将该加一后的第一报文的编号更新为该预设值。
本实施例中,智能网卡在接收到第一报文之后,将对应关系表中该第一报文的编号加一,并判断加一后的第一报文的编号是否超过第一预设阈值,若超过该第一预设阈值,则智能网卡将该加一后的第一报文的编号更新为该预设值,从而智能网卡在下一次接收到第一报文时,可以根据第二序列号获知该第一报文的聚合位置是首位,增加了本方案的实现灵活性。
其中,该第一预设阈值为智能网卡预先设定的值,该第一预设阈值为每次执行聚合操作时所包含的多个第二报文的报文数量,也即,当归属于数据流的多个第二报文的数量达到第一预设值时,聚合该多个第二报文,作为示例,该第一预设阈值的数量可以为16、15或14等,具体此处不做限定。
703、智能网卡在该第一mbuf的控制字段的第二标志位上添加第二指示信息。
本实施例中,主控虚拟机中维护有mbuf链表,每条mbuf链表均包含多个mbuf,智能网卡在解析该第一报文后,可以确定与该第一报文对应的第一mbuf,其中,每个mbuf都分别包含控制字段和地址信息,则当根据第一报文的标识确定第一报文的聚合位置不是首位时,智能网卡在与第一报文对应的第一mbuf的控制字段第二标志位上添加第二指示信息,且不在第一标志位上添加第一指示信息,并在该控制字段的UFID字段填写该第一报文的UFID,其中,该第二指示信息用于指示该第一控制字段中的序列号字段有效。
本实施例中,如图5所示,该第一mbuf的控制字段至少包括标志位字段、UFID字段和序列号字段,其中,标志位字段还包括第二标志位,当第二标志位上存在第二指示信息时,可以表示与该该第一控制字段中的序列号字段有效,作为示例,第二标志位可以为FLAG_SEQ,第二指示信息可以为1;作为另一实例,该第一标志位可以为FLAG_SEQ,第一指示信息可以为0,应当理解,只要当第二标志位上存在第二指示信息时,标识该控制字段中的序列号字段有效即可,具体第二标志位和第二指示信息的表现形式,此处不做限定。
704、智能网卡填写该第一mbuf的控制字段的序列号字段。
本实施例中,智能网卡在解析获得该第一报文的标识后,根据该第一报文的标识中包含的五元组信息和子网标识符,确定该第一报文归属的数据流,并根据该第一报文的标识中包含的报文序列号,填写该第一mbuf的控制字段的序列号字段。
本实施例中,智能网卡填写该第一mbuf的控制字段的序列号字段,包括:
智能网卡将该第一报文的编号写入该序列号字段。
本实施例中,由于智能网卡中可以存储有记录数据流的报文接收情况的对应关系表,该对应关系表中的多条记录中存在与该第一报文对应的目标记录,该目标记录中包含该第一报文的编号,智能网卡可以将该第一报文的编号写入该序列号字段,从而保证智能网卡和主机对第一报文采用了同一套排序逻辑,从而保证了报文聚合过程的流畅性,提高了报文聚合的效率。其中,该第一序列号的数值可以和该第二序列号的数值一致。
本实施例及其他实施例中,该第一报文的编号根据第一报文携带的报文序列号生成,用于标识该第一报文的聚合位置。由于当多个第二报文的报文数量达到第一预设阈值时,主控虚拟机通知虚拟机读取聚合后的地址信息,以获得多个第二报文聚合后的大报文,因此,每个第一报文在数据流中的绝对编号与每个第一报文在聚合队列中的相对编号可以不一致,则智能网卡可以根据第一报文的报文序列号生成该第一报文的编号,并将该第一报文的编号写入第一mbuf的序列号字段,该第一mubf的序列号字段用于告知主机该第一地址信息的聚合位置,也是主机在将第一地址信息和至少一个第二地址信息聚合时,该第一地址信息相对于该至少一个第二地址信息所处的位置。作为示例,例如智能网卡接收到归属于数据流A的四个报文分别为a1、a2、a3和a4,其中a1的报文序列号为2018071668、a2的报文序列号为2018071669、a3的报文序列号为2018071670、a4的报文序列号为2018071671,根据a1、a2、a3和a4的报文序列号可知,上述四个报文在数据流中的顺序依次为a1、a2、a3和a4,第一预设阈值为16,则a1的第一报文的编号可以为4、a2的第一报文的编号可以为5、a3的第一报文的编号可以为6、a4的第一报文的编号可以为7,应当理解,上述对报文序列号、第一报文的编号的举例仅为方便理解本方案,不具有限定意义。
705、智能网卡将该第一报文的载荷DMA通过直接内存存取DMA存入该第一地址空间。
本实施例中,智能网卡在确定该第一地址信息所指示的第一地址空间后,由于第一报文的聚合位置不是首位,智能网卡剥离该第一报文的报文头,将第一报文的载荷DMA到该第一地址信息所指示的第一地址空间中。其中,该第一地址信息所指示的第一地址空间为主控虚拟机和虚拟机均可直接访问的地址空间。
可以理解的是,本实施例中步骤704和705与步骤706没有必然的执行先后顺序,可以先执行步骤704和705,也可以先执行步骤706。
706、主控虚拟机获取与该第一mbuf对应的mbuf链表。
本实施例中,每个第一mbuf的控制字段都分别还包括mbuf链表标识,其中,每条该数据流对应一条mbuf链表,当第一报文的聚合位置不是首位时,则主控虚拟机中已经存在有与该第一报文归属的数据流对应的mbuf链表,主控虚拟机根据该第一mbuf的控制字段中携带的mbuf链表标识,确定该第一报文归属的mbuf链表。
707、主控虚拟机将该第一地址信息与至少一个该第二地址信息聚合。
本实施例中,主控虚拟机在确定了与该第一mbuf对应的mbuf链表后,获得与该第一mbuf对应的mbuf链表上包含的至少一个第二mbuf,其中,该至少一个第二mbuf中包含该mbuf链表的头部,主控虚拟机修改mbuf链表上的最后一个第二mbuf的mbuf指针,使其指向该第一mbuf,从而将该第一mbuf聚合到该mbuf链表上,也即实现了将该第一地址信息与该mbuf链表包含的至少一个第二地址信息的聚合。
本实施例中,步骤708至716与前述图4所示实施例中步骤408至416类似,此处不再赘述。
2、DPDK接口维护聚合链表
具体参阅图8,本申请实施例中,报文处理方法的另一个实施例可以包括:
本实施例中,步骤801与前述图4所示实施例中步骤401类似,此处不再赘述。
本实施例中,步骤802与前述图7所示实施例中步骤702类似,此处不再赘述。
803、智能网卡在第一mbuf的控制字段的第二标志位上添加第二指示信息,该第一mbuf归属的mbuf链表由DPDK接口维护。
本实施例中,DPDK接口通过轮询式网卡驱动(poll mode driver,PMD)进程维护有mbuf链表,该mbuf链表包含多个mbuf,智能网卡在解析该第一报文后,可以确定与该第一报文对应的第一mbuf,其中,每个mbuf都分别包含控制字段和地址信息,则当第一报文的聚合位置不是首位时,智能网卡在与第一报文对应的第一mbuf的控制字段的第二标志位上添加第二指示信息,并在该控制字段的UFID字段填写该第一报文的UFID,其中,该第二指示信息用于指示该第一mbuf的控制字段中的序列号字段有效。
本实施例中,如图5所示,该第一mbuf的控制字段至少包括标志位字段、UFID字段和序列号字段,其中,标志位字段还包括第二标志位,当第二标志位上存在第二指示信息时,可以表示与该该第一控制字段中的序列号字段有效,作为示例,第二标志位可以为FLAG_SEQ,第二指示信息可以为1;作为另一实例,该第一标志位可以为FLAG_SEQ,第一指示信息可以为0,应当理解,只要当第二标志位上存在第二指示信息时,标识该控制字段中的序列号字段有效即可,具体第二标志位和第二指示信息的表现形式,此处不做限定。
本实施例中,步骤804和805分别与前述图7所示实施例中步骤704和705类似,此处不再赘述。
本实施例中,步骤806和807与前述图7所示实施例中步骤706和707类似,步骤806和807与步骤706和707不同的地方在于执行主体不同,步骤706和707中执行主体为主控虚拟机,步骤806和807中的执行主体为DPDK接口,此处不再赘述。
本实施例中,步骤808至816与前述图4所示实施例中步骤408至416类似,此处不再赘述。
图9是本申请实施例提供的智能网卡的一种结构示意图,该智能网卡运行于物理机,该物理机中还运行有主机和虚拟机,该智能网卡包括:
解析单元901,用于解析接收到的第一报文,以得到该第一报文的标识;
更新单元902,用于根据该第一报文的标识,更新第一存储器缓存mbuf的控制字段,该第一mbuf还包含为该第一报文分配的第一地址信息,该第一地址信息指示该虚拟机中的第一地址空间;
存储单元903,用于根据该第一报文的聚合位置,将该第一报文的载荷,或者将该第一报文的报文头和载荷通过直接内存存取DMA存入该第一地址空间,其中,该聚合位置为该第一地址信息与至少一个第二地址信息聚合时,该第一地址信息相对于该至少一个第二地址信息所处的位置,该第二地址信息指示为第二报文分配的该虚拟机中的第二地址空间,该第二报文是该智能网卡接收到的与该第一报文属于同一数据流的报文;
其中,更新后的该第一mubf中的控制字段用于指示该主机将该第一地址信息与至少一个第二地址信息聚合。
本实施例中,智能网卡中各元件执行的流程与前述图4至图8所示实施例中智能网卡所执行的流程类似,此处不再赘述。
本实施例中,解析单元解析接收到的第一报文,得到第一报文的标识,更新单元根据第一报文的标识填写第一存储器缓存的控制字段,存储单元将该第一报文或该第一报文的载荷DMA到第一地址信息所指示的缓存空间,更新后的该第一mbuf中的控制字段可以指示主机将该第一地址信息与至少一个第二地址信息聚合。本方案中由智能网卡解析第一报文,节省了由于解析第一报文所消耗的CPU资源;且智能网卡将第一报文DMA到第一地址信息所指示的第一地址空间,则虚拟机可直接从第一地址空间中读取报文,避免软件对第一步报文进行移动拷贝,节省了软件对第一报文执行移动拷贝带来的CPU消耗。
有一种可能的实现方式中,该控制字段包括第一标志位,该第一标志位用于标识该第一地址信息的聚合位置;
该更新单元902具体用于:
根据该第一报文的标识得到该第一报文的聚合位置;在该第一报文的聚合位置为首位情况下,在该控制字段的第一标志位上添加第一指示信息;
该存储单元903具体用于:
在该第一报文的聚合位置为首位情况下,将该第一报文的报文头和载荷通过直接内存存取DMA存入该第一地址空间。
有一种可能的实现方式中,该控制字段包括第二标志位和序列号字段;
该更新单元902具体用于:根据该第一报文的标识得到该第一报文的聚合位置;在该第一报文的聚合位置不为首位的情况下,在该第二标志位上添加第二指示信息,该第二指示信息用于指示该控制字段中包含的序列号字段有效;填写该控制字段的序列号字段,该序列号字段用于指示该第一地址信息的该聚合位置。
有一种可能的实现方式中,该第一报文的标识包含该第一报文所在的数据流的标识和该第一报文的序列号,该智能网卡中存储有对应关系表,该对应关系表包含多条记录,其中,每条记录包括一个报文所在的数据流的标识,该报文的序列号以及该报文的编号之间的映射关系,该报文的编号用于指示该报文的聚合位置,该智能网卡还包括:
查找单元904,用于根据该第一报文所在的数据流的标识和该第一报文的序列号,在该对应关系表中查找到该第一报文的编号;在该第一报文的编号为预设值的情况下,确定该第一报文的聚合位置为首位;在该第一报文的编号不为预设值的情况下,确定该第一报文的聚合位置不为首位。
图10是一种报文处理装置,该装置包括主机和虚拟机,该装置运行于物理机之上,该物理机还包括智能网卡,
该主机包括:
读取单元1001,用于读取第一mbuf的控制字段,以确定该第一mbuf对应的第一报文的聚合位置,其中,该第一mbuf的控制字段为该智能网卡根据该第一报文的标识更新的;
聚合单元1002,用于根据该第一报文的聚合位置,将该第一mbuf中的第一地址信息与至少一个第二地址信息聚合,其中,该聚合位置为该第一地址信息与该至少一个第二地址信息聚合时,该第一地址信息相对于该至少一个第二地址信息所处的位置,该第一地址信息指示为该第一报文分配的该虚拟机中的第一地址空间,该第二地址信息指示为第二报文分配的该虚拟机中的第二地址空间,该第二报文是与该第一报文属于同一数据流的报文;
该虚拟机包括:
获取单元1003,用于根据聚合后的地址信息,通过直接内存存取DMA获得该聚合后的地址信息所指示的地址空间中的数据,其中该地址空间中的数据包括该第一报文的载荷和该至少一个第二报文的载荷。
本实施例中,主机和虚拟机中各元件执行的流程与前述图4至图8所示实施例中主机和虚拟机所执行的流程类似,此处不再赘述。
本实施例中,主机根据智能网卡更新的第一mbuf中的控制字段确定第一报文的聚合位置,并将该第一地址信息与至少一个第二地址信息聚合,再由虚拟机根据聚合后的地址信息,通过直接内存存取DMA获得该聚合后的地址信息所指示的地址空间中的数据。本方案中主机无需解析第一报文即可获得第一报文的聚合位置;且虚拟机可通过直接内存存取直接从聚合的地址信息所指示的地址空间中读取报文,避免软件对第一步报文进行移动拷贝,节省了软件对第一报文执行移动拷贝带来的CPU消耗。
有一种可能的实现方式中,该第一报文的聚合位置为首位,该地址空间中的数据还包括该第一报文的报文头。
有一种可能的实现方式中,该第一mbuf中的控制字段包括第一标志位,该第一标志位用于标识该第一地址信息的聚合位置;
该读取单元1001具体用于:在该第一标志位上存在第一指示信息的情况下,确定该第一报文的聚合位置为首位。
有一种可能的实现方式中,该聚合单元1002具体用于:将包含该第一地址信息的第一mbuf放在mbuf链表的头部,以使该mbuf链表的头部与至少一个第二mbuf聚合,其中每个该第二mbuf包含该第二地址信息。
有一种可能的实现方式中,该第一mbuf中的控制字段包括第二标志位和序列号字段;该读取单元1001具体用于:在该第二标志位上存在第二指示信息的情况下,根据该序列号字段确定该第一地址信息的聚合位置,其中,该第二指示信息用于指示该控制字段中包含的序列号字段有效。
本申请实施例还提供了一种智能网卡,该智能网卡包括:处理电路和存储器,该存储器中存储有报文处理的指令;该处理电路用于执行存储器中存储的报文处理的指令,执行如前述图3至图5所示实施例中描述的方法中智能网卡所执行的步骤。
本申请实施例中还提供一种包含拥塞控制指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图3至图5所示实施例中描述的方法中智能网卡所执行的步骤。
本申请实施例中还提供一种包含拥塞控制指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图3至图5所示实施例中描述的方法中主机和虚拟机所执行的步骤。
本申请实施例中还提供一种芯片系统,该芯片系统包括处理器,用于支持网络设备实现上述方面中所涉及的功能,例如,例如发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存网络设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (29)
1.一种物理机,其特征在于,所述物理机包括智能网卡、处理器和存储器,所述处理器通过运行存储器中的代码,运行主机和虚拟机,
所述智能网卡用于解析接收到的第一报文,以得到所述第一报文的标识;
所述智能网卡还用于根据所述第一报文的标识,更新第一存储器缓存mbuf的控制字段,所述第一mbuf还包含为所述第一报文分配的第一地址信息,所述第一地址信息指示所述虚拟机中的第一地址空间;
所述智能网卡还用于根据所述第一报文的聚合位置,将所述第一报文的载荷,或者将所述第一报文的报文头和载荷通过直接内存存取DMA存入所述第一地址空间,其中,所述聚合位置为所述第一地址信息与至少一个第二地址信息聚合时,所述第一地址信息相对于所述至少一个第二地址信息所处的位置,所述第二地址信息指示为第二报文分配的所述虚拟机中的第二地址空间,所述第二报文是所述智能网卡接收到的与所述第一报文属于同一数据流的报文;
所述主机用于根据更新后的所述第一mbuf中的控制字段,将所述第一地址信息与至少一个第二地址信息聚合;
所述虚拟机用于读取聚合后的地址信息,以获得所述聚合后的地址信息所指示的地址空间中的数据。
2.根据权利要求1所述的物理机,其特征在于,所述第一mbuf中的控制字段包括第一标志位,所述第一标志位用于标识所述第一地址信息的聚合位置;
所述智能网卡具体用于根据所述第一报文的标识得到所述第一报文的聚合位置,在所述第一报文的聚合位置为首位情况下,在所述控制字段的第一标志位上添加第一指示信息;
所述智能网卡具体用于在所述第一报文的聚合位置为首位的情况下,将所述第一报文的报文头和载荷通过直接内存存取DMA存入所述第一地址空间。
3.根据权利要求2所述的物理机,其特征在于,所述主机具体用于将包含所述第一地址信息的第一mbuf放在mbuf链表的头部,以使所述mbuf链表的头部与至少一个第二mbuf聚合,其中每个所述第二mbuf包含所述第二地址信息。
4.根据权利要求2所述的物理机,其特征在于,所述第一地址空间包括第三地址空间,所述第三地址空间用于保存虚拟化输入输出Virtio协议头部。
5.根据权利要求1所述的物理机,其特征在于,所述第一mbuf中的控制字段包括第二标志位和序列号字段;
所述智能网卡具体用于根据所述第一报文的标识获得所述第一报文的聚合位置,在所述第一报文的聚合位置不为首位的情况下,在所述第二标志位上添加第二指示信息,所述第二指示信息用于指示所述控制字段中包含的序列号字段有效;填写所述序列号字段,所述序列号字段用于供所述主机获得所述第一地址信息的聚合位置;
所述智能网卡具体用于在所述第一报文的聚合位置不为首位的情况下,将所述第一报文的载荷通过直接内存存取DMA存入所述第一地址空间。
6.根据权利要求1至5任一权利要求所述的物理机,其特征在于,所述第一报文的标识包含所述第一报文所在的数据流的标识和所述第一报文的序列号,所述智能网卡中存储有对应关系表,所述对应关系表包含多条记录,其中,每条记录包括一个报文所在的数据流的标识,所述报文的序列号以及所述报文的编号之间的映射关系,所述报文的编号用于指示所述报文的聚合位置,
所述智能网卡还用于根据所述第一报文所在的数据流的标识和所述第一报文的序列号,在所述对应关系表中查找到所述第一报文的编号;在所述第一报文的编号为预设值的情况下,所述智能网卡确定所述第一报文的聚合位置为首位;在所述第一报文的编号不为预设值的情况下,所述智能网卡确定所述第一报文的聚合位置不为首位。
7.根据权利要求6所述的物理机,其特征在于,所述智能网卡还用于在所述第一报文的编号加一大于预设阈值的情况下,所述智能网卡将加一后的第一报文的编号更新为所述预设值。
8.根据权利要求1至5任一权利要求所述的物理机,其特征在于,
所述智能网卡还用于解析接收到的第三报文,以得到所述第三报文承载的信息,所述第三报文承载的信息指示所述第三报文为不需要聚合的报文;在第三mbuf的控制字段的第三标志位上添加第三指示信息,所述第三指示信息用于指示所述第三报文需要立即发送,所述第三mbuf还包含为所述第三报文分配的第三地址信息,所述第三地址信息指示所述虚拟机中的第四地址空间;将所述第三报文的报文头和载荷通过直接内存存取DMA存入所述第四地址空间;
所述主机还用于向所述虚拟机发送通知;
所述虚拟机还用于根据所述通知读取所述第三地址信息,以获得所述第四地址空间中存储的第三报文。
9.一种报文处理方法,其特征在于,应用于智能网卡,所述智能网卡运行于物理机,所述物理机中还运行有主机和虚拟机,所述方法包括:
解析接收到的第一报文,以得到所述第一报文的标识;
根据所述第一报文的标识,更新第一存储器缓存mbuf的控制字段,所述第一mbuf还包含为所述第一报文分配的第一地址信息,所述第一地址信息指示所述虚拟机中的第一地址空间;
根据所述第一报文的聚合位置,将所述第一报文的载荷,或者将所述第一报文的报文头和载荷通过直接内存存取DMA存入所述第一地址空间,其中,所述聚合位置为所述第一地址信息与至少一个第二地址信息聚合时,所述第一地址信息相对于所述至少一个第二地址信息所处的位置,所述第二地址信息指示为第二报文分配的所述虚拟机中的第二地址空间,所述第二报文是所述智能网卡接收到的与所述第一报文属于同一数据流的报文;
其中,更新后的所述第一mubf中的控制字段用于指示所述主机将所述第一地址信息与至少一个第二地址信息聚合。
10.根据权利要求9所述的方法,其特征在于,所述控制字段包括第一标志位,所述第一标志位用于标识所述第一地址信息的聚合位置;
所述根据所述第一报文的标识,更新第一存储器缓存mbuf中的控制字段,包括:
根据所述第一报文的标识得到所述第一报文的聚合位置;在所述第一报文的聚合位置为首位情况下,在所述控制字段的第一标志位上添加第一指示信息;
所述根据所述第一报文的聚合位置,将所述第一报文的载荷,或者将所述第一报文的报文头和载荷通过直接内存存取DMA存入所述第一地址空间,包括:
在所述第一报文的聚合位置为首位情况下,将所述第一报文的报文头和载荷通过直接内存存取DMA存入所述第一地址空间。
11.根据权利要求9所述的方法,其特征在于,所述控制字段包括第二标志位和序列号字段;
所述根据所述第一报文的标识,更新第一存储器缓存mbuf中的控制字段,包括:
根据所述第一报文的标识得到所述第一报文的聚合位置;
在所述第一报文的聚合位置不为首位的情况下,在所述第二标志位上添加第二指示信息,所述第二指示信息用于指示所述控制字段中包含的序列号字段有效;
填写所述控制字段的序列号字段,所述序列号字段用于指示所述第一地址信息的所述聚合位置。
12.根据权利要求10或11所述的方法,其特征在于,所述第一报文的标识包含所述第一报文所在的数据流的标识和所述第一报文的序列号,所述智能网卡中存储有对应关系表,所述对应关系表包含多条记录,其中,每条记录包括一个报文所在的数据流的标识,所述报文的序列号以及所述报文的编号之间的映射关系,所述报文的编号用于指示所述报文的聚合位置,所述方法还包括:
根据所述第一报文所在的数据流的标识和所述第一报文的序列号,在所述对应关系表中查找到所述第一报文的编号;
在所述第一报文的编号为预设值的情况下,确定所述第一报文的聚合位置为首位;
在所述第一报文的编号不为预设值的情况下,确定所述第一报文的聚合位置不为首位。
13.一种报文处理方法,其特征在于,所述方法由主机和虚拟机配合执行,所述主机和所述虚拟机运行于物理机之上,所述物理机还包括智能网卡,所述方法包括:
所述主机读取第一mbuf的控制字段,以确定所述第一mbuf对应的第一报文的聚合位置,其中,所述第一mbuf的控制字段为所述智能网卡根据所述第一报文的标识更新的;
所述主机根据所述第一报文的聚合位置,将所述第一mbuf中的第一地址信息与至少一个第二地址信息聚合,其中,所述聚合位置为所述第一地址信息与所述至少一个第二地址信息聚合时,所述第一地址信息相对于所述至少一个第二地址信息所处的位置,所述第一地址信息指示为所述第一报文分配的所述虚拟机中的第一地址空间,所述第二地址信息指示为第二报文分配的所述虚拟机中的第二地址空间,所述第二报文是与所述第一报文属于同一数据流的报文;
所述虚拟机根据聚合后的地址信息,通过直接内存存取DMA获得所述聚合后的地址信息所指示的地址空间中的数据,其中所述地址空间中的数据包括所述第一报文的载荷和所述至少一个第二报文的载荷。
14.根据权利要求13所述的方法,其特征在于,所述第一报文的聚合位置为首位,所述地址空间中的数据还包括所述第一报文的报文头。
15.根据权利要求13所述的方法,其特征在于,所述第一mbuf中的控制字段包括第一标志位,所述第一标志位用于标识所述第一地址信息的聚合位置;
所述主机读取第一mbuf的控制字段,以确定所述第一mbuf对应的第一报文的聚合位置,包括:
在所述第一标志位上存在第一指示信息的情况下,所述主机确定所述第一报文的聚合位置为首位。
16.根据权利要求15所述的方法,其特征在于,所述主机根据所述第一报文的聚合位置,将所述第一mbuf中的第一地址信息与至少一个第二地址信息聚合,包括:
所述主机将包含所述第一地址信息的第一mbuf放在mbuf链表的头部,以使所述mbuf链表的头部与至少一个第二mbuf聚合,其中每个所述第二mbuf包含所述第二地址信息。
17.根据要求13所述的方法,其特征在于,所述第一mbuf中的控制字段包括第二标志位和序列号字段;
所述主机读取第一mbuf的控制字段,以确定所述第一mbuf对应的第一报文的聚合位置,包括:
在所述第二标志位上存在第二指示信息的情况下,所述主机根据所述序列号字段确定所述第一地址信息的聚合位置,其中,所述第二指示信息用于指示所述控制字段中包含的序列号字段有效。
18.一种智能网卡,其特征在于,所述智能网卡运行于物理机,所述物理机中还运行有主机和虚拟机,所述智能网卡包括:
解析单元,用于解析接收到的第一报文,以得到所述第一报文的标识;
更新单元,用于根据所述第一报文的标识,更新第一存储器缓存mbuf的控制字段,所述第一mbuf还包含为所述第一报文分配的第一地址信息,所述第一地址信息指示所述虚拟机中的第一地址空间;
存储单元,用于根据所述第一报文的聚合位置,将所述第一报文的载荷,或者将所述第一报文的报文头和载荷通过直接内存存取DMA存入所述第一地址空间,其中,所述聚合位置为所述第一地址信息与至少一个第二地址信息聚合时,所述第一地址信息相对于所述至少一个第二地址信息所处的位置,所述第二地址信息指示为第二报文分配的所述虚拟机中的第二地址空间,所述第二报文是所述智能网卡接收到的与所述第一报文属于同一数据流的报文;
其中,更新后的所述第一mubf中的控制字段用于指示所述主机将所述第一地址信息与至少一个第二地址信息聚合。
19.根据权利要求18所述的智能网卡,其特征在于,所述控制字段包括第一标志位,所述第一标志位用于标识所述第一地址信息的聚合位置;
所述更新单元具体用于:
根据所述第一报文的标识得到所述第一报文的聚合位置;在所述第一报文的聚合位置为首位情况下,在所述控制字段的第一标志位上添加第一指示信息;
所述存储单元具体用于:
在所述第一报文的聚合位置为首位情况下,将所述第一报文的报文头和载荷通过直接内存存取DMA存入所述第一地址空间。
20.根据权利要求18所述的智能网卡,其特征在于,所述控制字段包括第二标志位和序列号字段;
所述更新单元具体用于:
根据所述第一报文的标识得到所述第一报文的聚合位置;在所述第一报文的聚合位置不为首位的情况下,在所述第二标志位上添加第二指示信息,所述第二指示信息用于指示所述控制字段中包含的序列号字段有效;填写所述控制字段的序列号字段,所述序列号字段用于指示所述第一地址信息的所述聚合位置。
21.根据权利要求19或20所述的智能网卡,其特征在于,所述第一报文的标识包含所述第一报文所在的数据流的标识和所述第一报文的序列号,所述智能网卡中存储有对应关系表,所述对应关系表包含多条记录,其中,每条记录包括一个报文所在的数据流的标识,所述报文的序列号以及所述报文的编号之间的映射关系,所述报文的编号用于指示所述报文的聚合位置,所述智能网卡还包括:
查找单元,用于根据所述第一报文所在的数据流的标识和所述第一报文的序列号,在所述对应关系表中查找到所述第一报文的编号;在所述第一报文的编号为预设值的情况下,确定所述第一报文的聚合位置为首位;在所述第一报文的编号不为预设值的情况下,确定所述第一报文的聚合位置不为首位。
22.一种报文处理装置,其特征在于,所述装置包括主机和虚拟机,所述装置运行于物理机之上,所述物理机还包括智能网卡,所述装置包括:
所述主机用于读取第一mbuf的控制字段,以确定所述第一mbuf对应的第一报文的聚合位置,其中,所述第一mbuf的控制字段为所述智能网卡根据所述第一报文的标识更新的;
所述主机还用于根据所述第一报文的聚合位置,将所述第一mbuf中的第一地址信息与至少一个第二地址信息聚合,其中,所述聚合位置为所述第一地址信息与所述至少一个第二地址信息聚合时,所述第一地址信息相对于所述至少一个第二地址信息所处的位置,所述第一地址信息指示为所述第一报文分配的所述虚拟机中的第一地址空间,所述第二地址信息指示为第二报文分配的所述虚拟机中的第二地址空间,所述第二报文是与所述第一报文属于同一数据流的报文;
所述虚拟机用于根据聚合后的地址信息,通过直接内存存取DMA获得所述聚合后的地址信息所指示的地址空间中的数据,其中所述地址空间中的数据包括所述第一报文的载荷和所述至少一个第二报文的载荷。
23.根据权利要求22所述的装置,其特征在于,所述第一报文的聚合位置为首位,所述地址空间中的数据还包括所述第一报文的报文头。
24.根据权利要求22所述的装置,其特征在于,所述第一mbuf中的控制字段包括第一标志位,所述第一标志位用于标识所述第一地址信息的聚合位置;
所述虚拟机具体用于:在所述第一标志位上存在第一指示信息的情况下,确定所述第一报文的聚合位置为首位。
25.根据权利要求24所述的装置,其特征在于,
所述主机具体用于:将包含所述第一地址信息的第一mbuf放在mbuf链表的头部,以使所述mbuf链表的头部与至少一个第二mbuf聚合,其中每个所述第二mbuf包含所述第二地址信息。
26.根据要求22所述的装置,其特征在于,所述第一mbuf中的控制字段包括第二标志位和序列号字段;
所述主机具体用于:在所述第二标志位上存在第二指示信息的情况下,根据所述序列号字段确定所述第一地址信息的聚合位置,其中,所述第二指示信息用于指示所述控制字段中包含的序列号字段有效。
27.一种智能网卡,其特征在于,所述智能网卡包括:处理电路和存储器,所述存储器中存储有权利要求9-12任一所述的报文处理的指令;
所述处理电路用于执行存储器中存储的报文处理的指令,执行如权利要求9-12任一所述的报文处理的方法的步骤。
28.一种计算机存储介质,其特征在于,所述计算机可读存储介质中存储有报文处理的指令,当其在计算机上运行时,使得计算机执行上述权利要求9-12任一权利要求所述的方法。
29.一种计算机存储介质,其特征在于,所述计算机可读存储介质中存储有报文处理的指令,当其在计算机上运行时,使得计算机执行上述权利要求13-17任一权利要求所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810949396.2A CN110851371B (zh) | 2018-08-20 | 2018-08-20 | 报文处理方法及相关设备 |
EP19853179.0A EP3771169B1 (en) | 2018-08-20 | 2019-04-25 | Message processing method and related device |
PCT/CN2019/084285 WO2020038009A1 (zh) | 2018-08-20 | 2019-04-25 | 报文处理方法及相关设备 |
US17/087,087 US11616738B2 (en) | 2018-08-20 | 2020-11-02 | Packet processing method and related device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810949396.2A CN110851371B (zh) | 2018-08-20 | 2018-08-20 | 报文处理方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851371A true CN110851371A (zh) | 2020-02-28 |
CN110851371B CN110851371B (zh) | 2023-09-26 |
Family
ID=69592267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810949396.2A Active CN110851371B (zh) | 2018-08-20 | 2018-08-20 | 报文处理方法及相关设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11616738B2 (zh) |
EP (1) | EP3771169B1 (zh) |
CN (1) | CN110851371B (zh) |
WO (1) | WO2020038009A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231101A (zh) * | 2020-10-16 | 2021-01-15 | 北京中科网威信息技术有限公司 | 内存分配方法、装置及可读存储介质 |
CN112910802A (zh) * | 2021-01-13 | 2021-06-04 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
CN114553635A (zh) * | 2022-02-18 | 2022-05-27 | 珠海星云智联科技有限公司 | Dpu网络设备中的数据处理方法、数据交互方法及产品 |
CN114785714A (zh) * | 2022-03-01 | 2022-07-22 | 阿里巴巴(中国)有限公司 | 一种报文传输时延检测方法、存储介质及设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10979447B2 (en) | 2018-08-30 | 2021-04-13 | Ordr Inc. | Presenting, at a graphical user interface, device photos and risk categories associated with devices in a network |
US11863401B2 (en) * | 2021-02-22 | 2024-01-02 | Ordr Inc. | Visualization system for private networks and devices |
US11900089B2 (en) * | 2021-05-04 | 2024-02-13 | Red Hat, Inc. | Automatically configuring and deploying a software operator in a distributed computing environment from a package |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130177019A1 (en) * | 2012-01-10 | 2013-07-11 | Cisco Technology, Inc. | Scaling ipv4 at large datacenters with device level aggregation |
WO2014053155A1 (de) * | 2012-10-01 | 2014-04-10 | Siemens Aktiengesellschaft | Verfahren und datenverarbeitungsanordnung für ein erkennen von mehrfach empfangenen nachrichten in einem zwischenspeicher eines empfangenden netzwerkgerätes |
US20140214915A1 (en) * | 2013-01-28 | 2014-07-31 | Rackspace Us, Inc. | Methods and Systems of Tracking and Verifying Records of System Change Events in a Distributed Network System |
CN104184729A (zh) * | 2014-08-20 | 2014-12-03 | 杭州华三通信技术有限公司 | 一种报文处理方法和装置 |
CN104471553A (zh) * | 2011-12-22 | 2015-03-25 | 英特尔公司 | 用于共享地址装置的聚合的方法、装置和系统 |
CN104469845A (zh) * | 2013-09-18 | 2015-03-25 | 华为技术有限公司 | 一种报文处理方法、系统及设备 |
US9007941B1 (en) * | 2012-07-25 | 2015-04-14 | Cisco Technology, Inc. | Self-organizing and scalable MPLS VPN transport for LTE |
CN105282135A (zh) * | 2014-06-23 | 2016-01-27 | 英特尔公司 | 采用软件定义联网中的虚拟机和虚拟化容器的本地服务链接 |
CN105471754A (zh) * | 2014-09-01 | 2016-04-06 | 华为技术有限公司 | 一种数据传输控制方法、设备及系统 |
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN106921665A (zh) * | 2017-03-06 | 2017-07-04 | 北京东土军悦科技有限公司 | 一种报文处理方法及网络设备 |
CN106921578A (zh) * | 2017-03-14 | 2017-07-04 | 新华三技术有限公司 | 一种转发表项的生成方法和装置 |
CN107257329A (zh) * | 2017-05-31 | 2017-10-17 | 中国人民解放军国防科学技术大学 | 一种数据分段卸载发送方法 |
CN107872332A (zh) * | 2016-09-23 | 2018-04-03 | 华为技术有限公司 | 一种报文转发路径的探测方法及相关装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7831749B2 (en) * | 2005-02-03 | 2010-11-09 | Solarflare Communications, Inc. | Including descriptor queue empty events in completion events |
US8306062B1 (en) | 2008-12-31 | 2012-11-06 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus of adaptive large receive offload |
CN103139253B (zh) | 2011-11-30 | 2016-03-09 | 华为技术有限公司 | 实现网卡卸载功能的方法、网卡、主机系统及网络设备 |
US9742682B2 (en) | 2014-03-11 | 2017-08-22 | Vmware, Inc. | Large receive offload for virtual machines |
US9350825B2 (en) * | 2014-06-16 | 2016-05-24 | International Business Machines Corporation | Optimizing network communications |
US9948579B1 (en) * | 2015-03-30 | 2018-04-17 | Juniper Networks, Inc. | NIC-based packet assignment for virtual networks |
US10116588B2 (en) | 2015-04-21 | 2018-10-30 | Mediatek Inc. | Large receive offload allocation method and network device |
US10263832B1 (en) * | 2016-12-29 | 2019-04-16 | Juniper Networks, Inc. | Physical interface to virtual interface fault propagation |
US10382350B2 (en) * | 2017-09-12 | 2019-08-13 | Mellanox Technologies, Ltd. | Maintaining packet order in offload of packet processing functions |
-
2018
- 2018-08-20 CN CN201810949396.2A patent/CN110851371B/zh active Active
-
2019
- 2019-04-25 EP EP19853179.0A patent/EP3771169B1/en active Active
- 2019-04-25 WO PCT/CN2019/084285 patent/WO2020038009A1/zh unknown
-
2020
- 2020-11-02 US US17/087,087 patent/US11616738B2/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104471553A (zh) * | 2011-12-22 | 2015-03-25 | 英特尔公司 | 用于共享地址装置的聚合的方法、装置和系统 |
US20130177019A1 (en) * | 2012-01-10 | 2013-07-11 | Cisco Technology, Inc. | Scaling ipv4 at large datacenters with device level aggregation |
US9007941B1 (en) * | 2012-07-25 | 2015-04-14 | Cisco Technology, Inc. | Self-organizing and scalable MPLS VPN transport for LTE |
WO2014053155A1 (de) * | 2012-10-01 | 2014-04-10 | Siemens Aktiengesellschaft | Verfahren und datenverarbeitungsanordnung für ein erkennen von mehrfach empfangenen nachrichten in einem zwischenspeicher eines empfangenden netzwerkgerätes |
US20140214915A1 (en) * | 2013-01-28 | 2014-07-31 | Rackspace Us, Inc. | Methods and Systems of Tracking and Verifying Records of System Change Events in a Distributed Network System |
CN104469845A (zh) * | 2013-09-18 | 2015-03-25 | 华为技术有限公司 | 一种报文处理方法、系统及设备 |
CN105282135A (zh) * | 2014-06-23 | 2016-01-27 | 英特尔公司 | 采用软件定义联网中的虚拟机和虚拟化容器的本地服务链接 |
CN104184729A (zh) * | 2014-08-20 | 2014-12-03 | 杭州华三通信技术有限公司 | 一种报文处理方法和装置 |
CN105471754A (zh) * | 2014-09-01 | 2016-04-06 | 华为技术有限公司 | 一种数据传输控制方法、设备及系统 |
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN107872332A (zh) * | 2016-09-23 | 2018-04-03 | 华为技术有限公司 | 一种报文转发路径的探测方法及相关装置 |
CN106921665A (zh) * | 2017-03-06 | 2017-07-04 | 北京东土军悦科技有限公司 | 一种报文处理方法及网络设备 |
CN106921578A (zh) * | 2017-03-14 | 2017-07-04 | 新华三技术有限公司 | 一种转发表项的生成方法和装置 |
CN107257329A (zh) * | 2017-05-31 | 2017-10-17 | 中国人民解放军国防科学技术大学 | 一种数据分段卸载发送方法 |
Non-Patent Citations (1)
Title |
---|
刘朝晖;窦晓光;: "基于FPGA实现的报文分类智能网卡", no. 06 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231101A (zh) * | 2020-10-16 | 2021-01-15 | 北京中科网威信息技术有限公司 | 内存分配方法、装置及可读存储介质 |
CN112231101B (zh) * | 2020-10-16 | 2024-03-01 | 北京中科网威信息技术有限公司 | 内存分配方法、装置及可读存储介质 |
CN112910802A (zh) * | 2021-01-13 | 2021-06-04 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
CN112910802B (zh) * | 2021-01-13 | 2022-05-24 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
CN114553635A (zh) * | 2022-02-18 | 2022-05-27 | 珠海星云智联科技有限公司 | Dpu网络设备中的数据处理方法、数据交互方法及产品 |
CN114785714A (zh) * | 2022-03-01 | 2022-07-22 | 阿里巴巴(中国)有限公司 | 一种报文传输时延检测方法、存储介质及设备 |
CN114785714B (zh) * | 2022-03-01 | 2023-08-22 | 阿里巴巴(中国)有限公司 | 一种报文传输时延检测方法、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110851371B (zh) | 2023-09-26 |
WO2020038009A1 (zh) | 2020-02-27 |
EP3771169A1 (en) | 2021-01-27 |
US11616738B2 (en) | 2023-03-28 |
US20210051118A1 (en) | 2021-02-18 |
EP3771169B1 (en) | 2022-12-28 |
EP3771169A4 (en) | 2021-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851371B (zh) | 报文处理方法及相关设备 | |
EP1159813B1 (en) | Method and apparatus for dynamic packet batching with a network interface | |
US11431624B2 (en) | Communication method and network interface card | |
US7307998B1 (en) | Computer system and network interface supporting dynamically optimized receive buffer queues | |
CN111431757B (zh) | 虚拟网络的流量采集方法及装置 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
CN113746692A (zh) | 网络流量统计的方法、电子设备及存储介质 | |
CN111949568A (zh) | 一种报文处理方法、装置及网络芯片 | |
CN106603409B (zh) | 一种数据处理系统、方法及设备 | |
CN111026324B (zh) | 转发表项的更新方法及装置 | |
CN115657553A (zh) | Pcie拓扑和pcie设备模拟方法、装置、设备及介质 | |
CN112311692A (zh) | 报文处理方法及装置、端设备 | |
CN115858160B (zh) | 远程直接内存访问虚拟化资源分配方法及装置、存储介质 | |
CN115242726B (zh) | 队列的调度方法和装置及电子设备 | |
US9923794B2 (en) | Method, apparatus, and system for identifying abnormal IP data stream | |
CN116155828B (zh) | 一种多个虚拟队列的报文保序方法及其装置、存储介质、电子设备 | |
CN116954675A (zh) | 已用环表更新方法及模块、后端设备、介质、设备、芯片 | |
CN111404842A (zh) | 数据传输方法、装置及计算机存储介质 | |
US9338219B2 (en) | Direct push operations and gather operations | |
JP2020088517A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
CN117499351A (zh) | 报文转发装置及方法、通信芯片及网络设备 | |
CN113497758B (zh) | 服务执行方法、装置及系统 | |
CN112559116B (zh) | 内存迁移方法、装置及计算设备 | |
CN117997802B (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 |