CN110932998A - 报文处理方法和装置 - Google Patents
报文处理方法和装置 Download PDFInfo
- Publication number
- CN110932998A CN110932998A CN201911193982.XA CN201911193982A CN110932998A CN 110932998 A CN110932998 A CN 110932998A CN 201911193982 A CN201911193982 A CN 201911193982A CN 110932998 A CN110932998 A CN 110932998A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- user
- network card
- value
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/629—Ensuring fair share of resources, e.g. weighted fair queuing [WFQ]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书提供一种报文处理方法和装置,该方法应用于网卡,在网卡收到报文后,利用自定义的字段区分出目标接收者和其他用户,然后将报文投入公共队列中,每个用户在访问公共队列时,便可以根据自己所对应的字段的值来判断该报文是否是发给自己的,从而实现多用户对网卡基于共享队列的使用方案,解决了现有技术中相同报文的重复拷贝以及各个用户独立队列的内存占用的问题。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种报文处理方法和装置。
背景技术
随着网络技术的不断创新,以太网接口技术也经历了飞速发展。从早期主流的10Mbit/s与100Mbit/s,发展到千兆网(1Gbit/s)。到如今,万兆(10Gbit/s)网卡技术成为数据中心服务器的主流接口技术,近年来还推出了40Gbit/s、100Gbit/s的超高速网络接口技术。虽然通用网卡的速率可以满足现阶段的使用要求,但是面对越来越复杂的业务需求时又显得不够灵活。
现有的网卡满足多个用户的使用是基于独占收发队列实现的,每个用户都有自己的独立的收发通道,收发数据不能共享。这就导致,当同一个报文满足多个用户的需求时,网卡不得不重复发送给多个用户,浪费了大量的硬件资源,降低了硬件性能。
发明内容
为克服相关技术中存在的问题,本说明书提供了一种报文处理方法和装置。
根据本说明书实施例的第一方面,提供一种报文处理方法,所述方法应用于网卡,所述方法包括:
在初始化时,获取在所述网卡上已注册的用户各自配置的接收队列个数的最小值,分配所述最小值的队列为公共队列;在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
当接收到报文后,根据所述指定字段的值,将所述报文分配到所述公共队列中,以使所述目标接收者从所述公共队列中读取所述报文。
在某些例子中,上述方法还包括:在初始化时,将所述指定字段的值设置为表征所述报文的目标接收者为所有用户。
在某些例子中,上述将所述报文分配到所述公共队列中的步骤包括:
当接收到报文后,根据所述指定字段的值,确定存在目标接收者时,将所述报文分配到指定队列中,以使将同一发送者发送的报文或者指向同一目标接收者的报文分配到同一公共队列中。
在某些例子中,上述指定字段的值根据所述报文的五元组的哈希值确定。
在某些例子中,根据所述指定字段的值,确定不存在目标接收者时,将所述报文丢弃。
在某些例子中,上述方法还包括:
在初始化时,获取在所述网卡上已注册的用户各自配置的发送队列个数的最小值,将所述最小值数量的队列作为第二公共队列;
所述用户发送报文时,将所发送的报文分配到所述第二公共队列中并加锁。
在某些例子中,上述方法还包括:接收将所述网卡设置为指定模式的配置指令。
在某些例子中,上述方法还包括:在所述目标接收者接收所述报文后,所述目标接收者对应的指定字段的值被修改为表征所述报文已被接收的状态。
根据本说明书实施例的第二方面,提供一种报文处理装置,所述装置应用于网卡,所述装置包括:
获取模块,用于在初始化时,获取在所述网卡上已注册的用户各自配置的接收队列个数的最小值,分配所述最小值的队列为公共队列;
设置模块,用于在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
分配模块,用于当接收到报文后,根据所述指定字段的值,将所述报文分配到所述公共队列中,以使所述目标接收者从所述公共队列中读取所述报文。
根据本说明书实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现说明书实施例中任一项方法。
根据本说明书实施例的第四方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现说明书实施例中任一项方法。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例中,公开了一种报文处理方法和装置,该方法应用于网卡,在网卡收到报文后,利用自定义的字段区分出目标接收者和其他用户,然后将报文投入公共队列中,每个用户在访问公共队列时,便可以根据自己所对应的字段的值来判断该报文是否是发给自己的,从而实现多用户对网卡基于共享队列的使用方案,解决了现有技术中相同报文的重复拷贝以及各个用户独立队列的内存占用的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书根据一示例性实施例示出的一种报文处理方法的流程图;
图2是本说明书根据一应用实例示出的报文处理系统的示意图;
图3A是本说明书根据一应用实例示出的分配公共队列的示意图;
图3B是本说明书根据一应用实例示出的标识字段的示意图;
图4是本说明书根据一应用实例示出的一种报文处理方法的流程图;
图5是本说明书实施例报文处理装置所在计算机设备的一种硬件结构图;
图6是本说明书根据一示例性实施例示出的一种报文处理装置的框图;
图7是本说明书根据一示例性实施例示出的另一种报文处理装置的框图;
图8是本说明书根据一示例性实施例示出的另一种报文处理装置的框图;
图9是本说明书根据一示例性实施例示出的另一种报文处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
网络适配器,又称网络接口卡(Network Interface Card,NIC),简称网卡,是计算机与局域网的线路连接的关键部件。网卡插在计算机或服务器扩展槽中,与网络交换数据、共享资源。网卡的主要功能包括数据的封装与解封、链路管理、数据编码与译码等。按网卡的动作对象,网卡可分为普通工作站网卡和服务器专用网卡:普通工作站网卡是一般计算机上使用的网卡;服务器专用网卡是为了适应网络服务器的工作特点而专门设计的,在满足设备的性能要求的同时根据具体业务进行定制化配置。
网卡可分为单队列网卡和多队列网卡。队列(queue)是一种特殊的线性表。所有插入操作限定在一端进行,所有删除操作限定在另一端进行。允许进行插入操作的一段成为队尾,允许删除操作的另一端则称为队首。网卡的收包过程可以认为是:当网卡收到数据包时会产生中断,通知内核有新数据包,然后内核调用中断处理程序进行响应,把数据包从网卡缓存拷贝到内存。对于单队列的网卡,只能产生一个中断信号,并且只能由一个CPU来处理,这样会导致多核系统中一个核负载很高;而多队列网卡是在网卡的内部维持多个收发队列,并产生多个中断信号使不同的CPU都能处理网卡收到的包,从而提升了性能。
多用户专用网卡是在专用网卡的基础上发展而来,继承了专用网卡的优点,同时又可以满足多个用户对专用网卡的使用,更大限度地满足了用户的多样化需求。然而,现有的多用户专用网卡是基于独占收发队列实现的,当同一个报文满足多个用户的需求时,网卡不得不重复发送给多个用户,这其中不仅涉及报文的重复拷贝,浪费了大量的硬件资源,降低了硬件性能;同时相同的一个报文存储多份,也浪费了许多内存空间。
接下来对本说明书实施例进行详细说明。
如图1所示,图1是本说明书根据一示例性实施例示出的一种报文处理方法的流程图,所述方法应用于网卡,包括以下步骤:
在步骤101、在初始化时,获取在所述网卡上已注册的用户各自配置的接收队列个数的最小值,将所述最小值数量的队列作为公共队列;
在步骤102、在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
在步骤103、当接收到报文后,根据所述指定字段的值,将所述报文分配到所述公共队列中,以使所述目标接收者从所述公共队列中读取所述报文。
在某些例子中,在本说明书实施例所述的网卡上已注册的用户可以根据自己的需求独立地配置收发队列个数,在网卡初始化阶段,通过获取在所述网卡上已注册的用户各自配置的接收队列个数,根据各个用户配置的接收队列的个数,选取其中一部分作为公共队列。这里的已注册用户可以是指在网卡上注册的系统用户。为了能够让所有已注册的用户都能使用这些公共队列,可以选取各个用户所配置的队列数量最小的队列数,作为公共队列。例如,假定一网卡共支持N个接收队列,该网卡上已注册的用户为用户A和用户B,其中,用户A配置了M个接收队列,用户B配置了M+1(M+1<N)个队列,则将网卡的收发队列的前M个队列作为公共队列分配给用户A和用户B使用。
从步骤102可以看出,申请人对现有技术的报文格式进行了扩展,扩展后的报文中包含了自定义字段,将该些字段作为标识字段。在例子中,可以规定自定义字段的每个指定字段所对应的用户,通过改变指定字段的值来描述该报文的接收者是否为某个用户。
本步骤提到的标识字段可以是指:在每个报文的前面添加一个head字段作为标识字段,用于自定义配置所需要配置的内容。在这个head字段中,可以包含多个指定字段,指定字段的数量可以不小于已注册用户的数量,通过各个指定字段记录该报文与各个用户的关系。在某些例子中,本步骤提到的指定字段可以是指:以掩码的方式与用户一一对应的指定字段,每个指定字段可以是一个比特位,每个bit位对应其中一个用户,当某一用户的bit位为1时,表征该用户是该报文的目标接收者;当指定字段中对应某一用户的bit位为0时,表征该用户不是该报文的目标接收者。例如,假定一网卡上已注册的用户为用户A、用户B、用户C和用户D,则设置的每个指定字段中,每个bit位对应其中一个用户,可表示为(用户A,用户B,用户C,用户D),则当某一报文的标识字段中,几个指定字段的值分别为(1,1,0,1),则表征用户A、用户B和用户D是该报文的目标接收者,用户C不是该报文的目标接收者。
在某些例子中,当接收到报文后,将报文分配到公共队列中,由于公共队列是分配给网卡上所有已注册用户使用的,所有用户都可以访问该公共队列。在接收侧,当公共队列有报文到来时,每个用户都会尝试收取公共队列里的报文,每个用户根据自己所对应的报文中指定字段的值,判断自己是否为该报文的目标接收者,如果是则读取该报文,如果不是则直接跳过该报文。
在本说明书实施例中,通过合理分配队列,以及配置标识字段,由于公共队列是分配给网卡上所有已注册用户使用的,所有用户都可以访问该公共队列,目标接收者可以根据标识字段读取属于自己的报文,从而实现各用户底层共享接收队列、上层又相互独立,避免了相同报文的重复拷贝以及各个用户独立队列的内存占用的情况。
上文步骤103中提到的公共队列是指接收方向的公共队列,而本说明书提供的某些实施例中,发送方向的队列对于已注册用户来说也是可以共享的。此例中,还可以包括以下步骤:在初始化时,获取在所述网卡上已注册的用户各自配置的发送队列个数的最小值,将所述最小值数量的队列作为第二公共队列;所述用户发送报文时,将所发送的报文分配到所述第二公共队列中并加锁。本步骤中提到的第二公共队列是发送方向的公共队列,其分配方式与接收方向的公共队列是一样的,都是取网卡已注册用户配置的收发队列个数的最小值。本步骤中提到的锁可以是互斥锁,用于控制对共享资源的访问。当该报文的对端用户接收完此报文后,再将该队列解锁,以供重新分配使用。由于公共队列对于所有用户来说是共享的,但是每个用户要发送的报文内容是各不相同的,因此,引入锁来保护公共队列中的数据,可以防止并发对公共队列的破坏。
对于步骤103,可以设计多种分配公共队列的实现方案,以下仅以两种实施例为例详细描述。
第一种方式:在某些应用场景下,报文可能是针对所有已注册用户共享的。因此,可以在初始化时,将所有指定字段的值设置为表征所述报文的目标接收者为所有用户,例如,如果某个指定字段的值为1表示用户为目标接收者,则可以将所有指定字段的值均设置为1。
由于各个用户均是目标接收者,在某些例子中,将所述报文分配到所述公共队列中可以是指:将所有报文平均分配到所述公共队列中。通过将所有报文进行平均分配,实现流量均衡分配。可以看出,所有报文上送所有用户时平均分配公共队列的方式实现简单、逻辑清晰。
第二种方式,对于某些接收者可能是其中一部分已注册用户的应用场景,在通过指定字段的值确定某个报文针对的目标接收者是哪些用户后,当接收到报文,则根据所述指定字段的值,确定存在目标接收者时,将所述报文分配到指定队列中,使得同一发送者发送的报文或者指向同一目标接收者的报文可以分配到同一公共队列中。将同一发送者发送的报文或者指向同一目标接收者的报文分配到同一队列中,是为了实现同源同宿,进而将这些报文汇聚到同一个服务器内核上进行处理,实现固定的流量分配到同一个CPU上处理,不同的流量跨CPU处理,提高了效率。
由于报文中携带的源地址和目的地址可以区分出不同的用户,因此,可以利用报文中的源地址或目的地址来实现这种同源同宿的分配效果。例如,一种实现方式可以是:每个用户可以事先设置一定的过滤规则,通过过滤规则确定出期望接收到哪些发送者的报文,或者期望所发送的报文发送给哪些接收者,网卡可以事先将每个用户的过滤规则存储下来,在收到报文后,可以根据接收到的报文中携带的源地址或目的地址来与每个用户设定的过滤规则进行匹配,判断是否有匹配到的目的接收方。
作为一种实现方式,利用报文的五元组或三元组来计算哈希值,将计算出的哈希值来作为这个用户对报文的过滤规则。网卡所存储的每个用户的过滤规则可以是这个用户所绑定的一个或多个哈希值。五元组通常是指源IP地址,源端口,目的IP地址,目的端口和协议类型。
以五元组为例,当收到一个报文后,计算这个报文的五元组的哈希值,如果有与计算出的哈希值匹配的过滤规则,则将这个报文分配到某个公共队列中,并在封装报文时,将设定这个过滤规则的用户对应的指定字段的值置为1。可以看出,在此例中,指定字段的值是根据接收到的报文的五元组的哈希值确定的。
另外,作为例子,如果不存在目标接收者时,例如,不存在与网卡所收到的报文算得的哈希值匹配的过滤规则,则可以将该报文丢弃。
值得指出的是,对于以上两种列举的分配方式,在网卡实际的设计方案中,既可以将网卡设计成仅支持其中一种分配方式,也可以设计成对这两种分配方式均可支持的模式。为了实现支持不止一种分配方式,可以提供一控件,供用户选择切换不同的模式,为方便描述,将第一种分配方式所对应的模式称为包模式,将第二种分配方式对应的模式称为流模式。因此,本说明书实施例还包括以下步骤:接收将网卡设置为指定模式的配置指令。
针对以上两种分配方式,当网卡将接收到的报文投入公共队列后,每个用户都会尝试收取公共队列里的数据,在目标接收者接收所述报文后,目标接收者将自己对应的指定字段的值修改为表征所述报文已被接收的状态,以便通知网卡及时或者队列的被占用状态。仍然以指定字段的值为1表示目标接收者,为0表示报文已被接收为例,每个用户首先判断报文head字段中对应自己的bit位是否置1,如果置1,表示该报文属于这个用户,该用户将报文取走,同时将该bit位置0并指向下一个报文位置,表示接收完成;如果为0,表示不属于该用户,直接跳过该报文,指向下一个位置,也表示接收完成;当所有的指定字段都等于0时,表示该报文已被所有用户接收。网卡可以指定字段的值来判断该报文已完成传输,以便确定何时将队列的这段空间再次使用。
为了让读者对本说明书各实施例所描述的方案有更加直观的理解,接下来阐述一实际的应用实例。
如图2所示,图2是本说明书根据一应用实例示出的报文处理系统的示意图,所述系统中包括装有本说明书的网卡的服务器,以及在该网卡上注册的多个用户;每个用户根据自己的需求独立的配置收发队列个数,以及通过该网卡支持的队列进行收发报文;
本说明书的网卡包括初始化阶段、收包阶段和发包阶段,其中:
在初始化阶段:网卡获取各用户配置的收发队列个数,其中,收发队列包括接收队列和发送队列,将接收队列最小值数量的队列作为公共队列,将发送队列最小值数量的队列作为第二公共队列。以接收方向为例,图3A是本说明书根据一应用实例示出的分配公共队列的示意图,如图3A所示,网卡共支持N个接收队列,该网卡上已注册的用户为用户A和用户B,其中,用户A和用户B配置的接收队列个数分别为M和M+1(M+1<N),则网卡将N个接收队列的前M个分配给用户A使用,同时也将N个接收队列的前M个分配给用户B使用,以防止网卡将报文送到第M+1个队列上时,由于用户A无法访问该队列而导致用户A读取不到该报文,此时,该M个收发队列为分配的公共队列;第二公共队列的分配方式与图3A所示的分配方式相同。
网卡在报文中自定义扩展了报文格式,将自定义的字段作为标识字段,图3B是本说明书根据一应用实例示出的标识字段的示意图,如图3B所示,网卡自定义一个umap字段作为标识字段,该umap字段以掩码的方式与用户一一对应,每一个用户对应umap的一个bit位,当某一用户的bit位为1时,表征该用户是该报文的目标接收者;当指定字段中对应某一用户的bit位为0时,表征该用户不是该报文的目标接收者,在图3B示出的该报文的标识字段中,用户A对应的是第一个bit位,该bit位为1,表示用户A是该报文的目标接收者;用户B对应的是第三个bit位,该bit位为0,表示用户B不是该报文的目标接收者;
在收包阶段:本应用实例的网卡在收包方向提供了两种模式,分别为包模式和流模式,下面分别阐释它们的实现方法:
在包模式下,在初始化时,将umap中所有bit位设置为1,即报文的目标接收者为所有用户,并且,将所有报文平均分配到公共队列中;这个模式中,所有报文通过平均分配到各个队列上送所有用户,实现了流量均衡,因此适合报文针对所有用户共享的应用场景;
在流模式下,用户可以配置各自的过滤规则,该过滤规则基于报文的五元组的哈希值实现,五元组通常是指:源IP地址,源端口,目的IP地址,目的端口和协议类型,因此,用户可以通过过滤规则事先设置期望接收到哪些发送者的报文,或者期望所发送的报文发送给哪些接收者等等;网卡根据用户的过滤规则将报文进行上送,当报文命中一用户配置的过滤规则时,在该报文的标识字段中表示出该用户为该报文的目标接收者,也就是说,在该报文的umap字段中该用户对应的bit位设置为1,当报文未命中任一用户配置的过滤规则时,网卡直接丢弃该报文;在用户接收侧,当公共队列中有报文到来时,每个用户都会尝试收取公共队列里的报文,用户根据umap字段判断自己是否为该报文的目标接收者,如果umap字段中对应自己的bit位为1,用户收取该报文,并且将该bit位改变为0,表示接收完成;如果umap字段中对应自己的bit位为0,用户直接跳过该报文,也表示接收完成;当umap字段中所有bit位都为0时,表示该报文已被所有目标接收者接收,则通知网卡该报文已完成传输,队列中该报文原占用的空间可以再次使用;
在发包阶段:第二公共队列对于已注册用户来说仍然是共享的,由于第二公共队列对于所有用户来说是共享的,但是每个用户要发送的报文内容是各不相同的,因此,网卡的第二公共队列接收到已注册用户待发送的报文时,对该第二公共队列进行加锁保护,通过引入锁来保护第二公共队列中的数据,可以防止并发对第二公共队列的破坏。
上述应用实例中,网卡的报文处理方法可以用流程图进行表示,如图4所示,图4是本说明书根据一应用实例示出的一种报文处理方法的流程图,所述方法应用于网卡,所述方法包括:
步骤401、在初始化时,获取在所述网卡上已注册的用户各自配置的收发队列个数的最小值,分配所述接收队列最小值的队列为公共队列,分配所述发送队列最小值的队列为第二公共队列;
步骤402、在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
步骤403、接收将所述网卡设置为包模式或流模式的配置指令;
步骤404、在包模式中,在初始化时,将指定字段的值设置为表征所述报文的目标接收者为所有用户;
当接收到报文后,根据所述指定字段的值,将所有报文平均分配到公共队列中;
步骤405、在流模式中,当接收到报文后,根据所述指定字段的值,确定存在目标接收者时,将所述报文分配到指定队列中,以使将同一发送者发送的报文或者指向同一目标接收者的报文分配到同一公共队列中,其中,所述指定字段的值根据所述报文的五元组的哈希值确定,另外,根据所述指定字段的值,确定不存在目标接收者时,将所述报文丢弃;
步骤406、已注册用户发送报文时,将所发送的报文分配到所述第二公共队列中并加锁。
在本说明书实施例中,步骤401和步骤402是网卡的初始化阶段,步骤401是根据用户各自配置的收发队列,分配出公共队列和第二公共队列,防止报文上送到公共队列之外的队列时,未配置该队列的用户因无法访问该队列而导致未读取到该报文的情况;步骤402是在报文中自定义标识字段,通过标识字段中对应用户的指定字段的值来表征用户与报文的关系;步骤403是指网卡在收包阶段提供两种收包模式,且这两种收包模式被封装成控件,通过配置指令可以控制模式的切换;步骤404是指在包模式中,所有报文上送所有用户,且所有报文平均分配到公共队列中,实现了流量均衡分配,适用于需要将数据传输给服务器上所有注册用户的应用场景;步骤405是指在流模式中,报文根据用户配置的过滤规则上送到公共队列的指定队列中,其中,过滤规则是基于报文的五元组的哈希值实现,实现了同源同宿,适用于需要将数据传输给特定用户的应用场景;步骤406是指网卡在发包阶段,第二公共队列对于用户来说仍然是共享的,通过对队列进行加锁保护,防止了并发对第二公共队列的破坏。通过上述步骤,提供了一种网卡的多用户共享队列的实现方案,解决了现有方案中相同报文重复拷贝以及内存占用的问题。
与前述方法的实施例相对应,本说明书还提供了报文处理的装置及其所应用的终端的实施例。
本说明书报文处理的装置的实施例可以应用在计算机设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本说明书实施例报文处理装置所在计算机设备的一种硬件结构图,除了图5所示的处理器510、内存530、网络接口520、以及非易失性存储器540之外,实施例中装置531所在的服务器或电子设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
相应地,本说明书实施例还提供一种计算机存储介质,所述存储介质中存储有程序,所述程序被处理器执行时实现上述任一实施例中的方法。
本说明书实施例可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
如图6所示,图6是本说明书根据一示例性实施例示出的一种报文处理装置的框图,所述装置应用于网卡,所述装置包括:
获取模块61,用于在初始化时,获取在所述网卡上已注册的用户各自配置的接收队列个数的最小值,分配所述最小值的队列为公共队列;
设置模块62,用于在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
分配模块63,用于当接收到报文后,根据所述指定字段的值,将所述报文分配到所述公共队列中,以使所述目标接收者从所述公共队列中读取所述报文。
如图7所示,图7是本说明书根据一示例性实施例示出的一种报文处理装置的框图,所述装置应用于网卡,所述装置包括:
获取模块71,用于在初始化时,获取在所述网卡上已注册的用户各自配置的接收队列个数的最小值,分配所述最小值的队列为公共队列;
设置模块72,用于在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
第一收包模块73,用于在初始化时,将所述指定字段的值设置为表征所述报文的目标接收者为所有用户;
分配模块74,用于当接收到报文后,根据所述指定字段的值,将所述报文分配到所述公共队列中,以使所述目标接收者从所述公共队列中读取所述报文。
如图8所示,图8是本说明书根据一示例性实施例示出的另一种报文处理装置的框图,所述装置应用于网卡,所述装置包括:
获取模块81,用于在初始化时,获取在所述网卡上已注册的用户各自配置的接收队列个数的最小值,分配所述最小值的队列为公共队列;
设置模块82,用于在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
第二收包模块83,用于当接收到报文后,根据所述指定字段的值,确定存在目标接收者时,将所述报文分配到指定队列中,以使将同一发送者发送的报文或者指向同一目标接收者的报文分配到同一公共队列中。
如图9所示,图9是本说明书根据一示例性实施例示出的另一种报文处理装置的框图,所述装置应用于网卡,所述装置包括:
获取模块91,用于在初始化时,获取在所述网卡上已注册的用户各自配置的收发队列个数的最小值,分配所述接收队列最小值的队列为公共队列,分配所述发送队列最小值的队列为第二公共队列;
设置模块92,用于在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
分配模块93,用于当接收到报文后,根据所述指定字段的值,将所述报文分配到所述公共队列中,以使所述目标接收者从所述公共队列中读取所述报文;
发包模块94,用于所述已注册用户发送报文时,将所发送的报文分配到所述第二公共队列中并加锁。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (10)
1.一种报文处理方法,其特征在于,所述方法应用于网卡,所述方法包括:
在初始化时,获取在所述网卡上已注册的用户各自配置的接收队列个数的最小值,将所述最小值数量的队列作为公共队列;在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
当接收到报文后,根据所述指定字段的值,将所述报文分配到所述公共队列中,以使所述目标接收者从所述公共队列中读取所述报文。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在初始化时,将所述指定字段的值设置为表征所述报文的目标接收者为所有用户。
3.根据权利要求2所述的方法,其特征在于,将所述报文分配到所述公共队列中的步骤为:
将所有报文平均分配到所述公共队列中。
4.根据权利要求1所述的方法,其特征在于,将所述报文分配到所述公共队列中的步骤包括:
当接收到报文后,根据所述指定字段的值,确定存在目标接收者时,将所述报文分配到指定队列中,以使将同一发送者发送的报文或者指向同一目标接收者的报文分配到同一公共队列中。
5.根据权利要求4所述的方法,其特征在于,所述指定字段的值根据所述报文的五元组的哈希值确定。
6.根据权利要求5所述的方法,其特征在于,根据所述指定字段的值,确定不存在目标接收者时,将所述报文丢弃。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在初始化时,获取在所述网卡上已注册的用户各自配置的发送队列个数的最小值,将所述最小值数量的队列作为第二公共队列;
所述用户发送报文时,将所发送的报文分配到所述第二公共队列中并加锁。
8.根据权利要求2或4所述的方法,其特征在于,所述方法还包括:接收将所述网卡设置为指定模式的配置指令。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述目标接收者接收所述报文后,所述目标接收者对应的指定字段的值被修改为表征所述报文已被接收的状态。
10.一种报文处理装置,其特征在于,所述装置应用于网卡,所述装置包括:
获取模块,用于在初始化时,获取在所述网卡上已注册的用户各自配置的接收队列个数的最小值,分配所述最小值的队列为公共队列;
设置模块,用于在报文中自定义的标识字段中,确定所述用户对应的指定字段,所述指定字段的值用于表征所述用户是否为所述报文的目标接收者;
分配模块,用于当接收到报文后,根据所述指定字段的值,将所述报文分配到所述公共队列中,以使所述目标接收者从所述公共队列中读取所述报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911193982.XA CN110932998B (zh) | 2019-11-28 | 2019-11-28 | 报文处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911193982.XA CN110932998B (zh) | 2019-11-28 | 2019-11-28 | 报文处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110932998A true CN110932998A (zh) | 2020-03-27 |
CN110932998B CN110932998B (zh) | 2022-11-01 |
Family
ID=69846911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911193982.XA Active CN110932998B (zh) | 2019-11-28 | 2019-11-28 | 报文处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110932998B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532690A (zh) * | 2020-11-04 | 2021-03-19 | 杭州迪普科技股份有限公司 | 一种报文解析方法、装置、电子设备及存储介质 |
CN116401081A (zh) * | 2023-06-09 | 2023-07-07 | 中汽智联技术有限公司 | 数据共享方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050276219A1 (en) * | 2004-05-26 | 2005-12-15 | Axiowave, Networks, Inc. | Routing of data packet traffic to a common destination egress queue from a plurality of subscribers each contracting for respective bandwidth of data flow, a method of and apparatus for fairly sharing excess bandwidth and packet dropping amongst the subscribers and with the granularity of contracted traffic flow |
US7002980B1 (en) * | 2000-12-19 | 2006-02-21 | Chiaro Networks, Ltd. | System and method for router queue and congestion management |
CN101917350A (zh) * | 2010-09-13 | 2010-12-15 | 南京中兴特种软件有限责任公司 | 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法 |
US20160226797A1 (en) * | 2015-02-03 | 2016-08-04 | Broadcom Corporation | Early Queueing Network Device |
WO2016131299A1 (zh) * | 2015-07-13 | 2016-08-25 | 中兴通讯股份有限公司 | 一种设备内部处理器网口收包方法及装置 |
WO2018045821A1 (zh) * | 2016-09-06 | 2018-03-15 | 北京京东尚科信息技术有限公司 | 云主机数据发送、接收、传输方法和装置 |
US20190173810A1 (en) * | 2017-12-06 | 2019-06-06 | Mellanox Technologies Tlv Ltd. | Packet scheduling in a switch for reducing cache-miss rate at a destination network node |
-
2019
- 2019-11-28 CN CN201911193982.XA patent/CN110932998B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7002980B1 (en) * | 2000-12-19 | 2006-02-21 | Chiaro Networks, Ltd. | System and method for router queue and congestion management |
US20050276219A1 (en) * | 2004-05-26 | 2005-12-15 | Axiowave, Networks, Inc. | Routing of data packet traffic to a common destination egress queue from a plurality of subscribers each contracting for respective bandwidth of data flow, a method of and apparatus for fairly sharing excess bandwidth and packet dropping amongst the subscribers and with the granularity of contracted traffic flow |
CN101917350A (zh) * | 2010-09-13 | 2010-12-15 | 南京中兴特种软件有限责任公司 | 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法 |
US20160226797A1 (en) * | 2015-02-03 | 2016-08-04 | Broadcom Corporation | Early Queueing Network Device |
WO2016131299A1 (zh) * | 2015-07-13 | 2016-08-25 | 中兴通讯股份有限公司 | 一种设备内部处理器网口收包方法及装置 |
WO2018045821A1 (zh) * | 2016-09-06 | 2018-03-15 | 北京京东尚科信息技术有限公司 | 云主机数据发送、接收、传输方法和装置 |
US20190173810A1 (en) * | 2017-12-06 | 2019-06-06 | Mellanox Technologies Tlv Ltd. | Packet scheduling in a switch for reducing cache-miss rate at a destination network node |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532690A (zh) * | 2020-11-04 | 2021-03-19 | 杭州迪普科技股份有限公司 | 一种报文解析方法、装置、电子设备及存储介质 |
CN116401081A (zh) * | 2023-06-09 | 2023-07-07 | 中汽智联技术有限公司 | 数据共享方法 |
CN116401081B (zh) * | 2023-06-09 | 2023-09-01 | 中汽智联技术有限公司 | 数据共享方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110932998B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11895577B2 (en) | Network slice selection method and apparatus | |
US7039061B2 (en) | Methods and apparatus for retaining packet order in systems utilizing multiple transmit queues | |
US7924708B2 (en) | Method and apparatus for flow control initialization | |
JP5726316B2 (ja) | 遠隔通信ネットワーク・アプリケーションのための、ロックレスでゼロ・コピーのメッセージング・スキーム | |
US7248593B2 (en) | Method and apparatus for minimizing spinlocks and retaining packet order in systems utilizing multiple transmit queues | |
US10574477B2 (en) | Priority tagging based solutions in fc sans independent of target priority tagging capability | |
CN110932998B (zh) | 报文处理方法和装置 | |
CN104468401A (zh) | 一种报文处理方法和装置 | |
KR101639797B1 (ko) | 가상머신 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법 | |
CN106571978B (zh) | 数据包捕获方法及装置 | |
US20030041164A1 (en) | Method of bandwidth management between the stations of a local area network | |
CN115858160B (zh) | 远程直接内存访问虚拟化资源分配方法及装置、存储介质 | |
US9049140B2 (en) | Backbone network with policy driven routing | |
EP1178643B1 (en) | Using a centralized server to coordinate assignment of identifiers in a distributed system | |
CN109726144B (zh) | 一种数据报文的处理方法和装置 | |
CN111277514B (zh) | 一种报文队列分配方法、报文转发方法及相关装置 | |
JP6420462B2 (ja) | サービスノード能力処理方法、装置、サービス分類器及びサービスコントローラ | |
CN114201311A (zh) | 数据处理方法及装置 | |
CN116954874A (zh) | 资源分配方法、装置、设备及存储介质 | |
CN110365586B (zh) | 报文传输的方法及装置 | |
CN113225257B (zh) | 一种upf数据处理的方法、系统及存储介质 | |
US20220225169A1 (en) | Method for managing resources of a converged fixed access and mobile radio telecommunications network, and corresponding computer program product and devices | |
CN116800684B (zh) | Rdma网卡发送队列的性能隔离方法和rdma网卡 | |
CN109005128B (zh) | 一种协议报文调度方法、装置及网络设备 | |
CN112152941B (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 |