CN112702275A - 基于每包转发的方法、装置、网络设备及计算机存储介质 - Google Patents
基于每包转发的方法、装置、网络设备及计算机存储介质 Download PDFInfo
- Publication number
- CN112702275A CN112702275A CN202011599448.1A CN202011599448A CN112702275A CN 112702275 A CN112702275 A CN 112702275A CN 202011599448 A CN202011599448 A CN 202011599448A CN 112702275 A CN112702275 A CN 112702275A
- Authority
- CN
- China
- Prior art keywords
- forwarding
- segment
- sub
- index count
- network device
- 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.)
- Pending
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/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于每包转发的方法、装置、网络设备及计算机存储介质,属于通信领域。在该方法中,由于每个转发核均只从与自身对应的BD段所包括的BD所指向的Buffer中收包,而不会去其他BD段所包括的BD所指向的Buffer中收包,从而可以避免不同的转发核同时访问同一个缓冲区而出现数据冲突。此外,在上述过程中,针对只包括单一硬件接收队列的网络设备而言,无需使用自旋锁,也无需额外消耗新的硬件资源,也就是说,可以在不影响网络设备的转发性能的前提下,使得网络设备具备基于每包转发的功能。
Description
技术领域
本申请属于通信领域,具体涉及一种基于每包转发的方法、装置、网络设备及计算机存储介质。
背景技术
为了测试网络设备的极限吞吐量,对网络设备有基于每包转发(Per-Packet)的需求,即把一条流的报文散列到不同的硬件队列,由网络设备中与各个硬件队列对应的转发核对报文进行收包并处理。
当前,大多数网络设备的以太网MAC芯片都包括多个硬件接收队列,从而可以从硬件层面上实现Per-Packet功能。然而,也存在一些功能较为单一的MAC芯片,在这些MAC芯片中只存在一个硬件接收队列,从而导致包括该MAC芯片的网络设备无法从硬件层面上实现Per-Packet功能。
为了使得只具备单一硬件接收队列的网络设备也可以实现Per-Packet功能,在现有技术中,可以借助于软件来实现多个转发核直接对同一硬件队列进行收包,从而实现Per-Packet。
由于多个转发核在同一时间对同一硬件队列进行操作会造成数据冲突,因此,上述方案在实施过程中,还需要使用自旋锁,从而保证在同一时间内只有一个转发核可以操作该唯一的硬件接收队列。
自旋锁的使用虽然能够解决数据冲突的问题,但是自旋锁的开销较大,使用自旋锁势必会影响网络设备的转发性能。
发明内容
有鉴于此,本申请的目的在于提供一种基于每包转发的方法、装置、网络设备及计算机存储介质,使得只存在一个硬件接收队列的网络设备在不影响网络设备的转发性能的前提下,实现基于每包转发的需求。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供一种基于每包转发的方法,应用于网络设备,所述网络设备包括多个转发核以及单一硬件接收队列,所述单一硬件接收队列包括一个缓冲区描述符BD环,所述BD环被划分为与所述多个转发核一一对应的多个BD段,其中,每个所述BD段内包括至少一个BD,且每个所述BD指向对应的缓冲区Buffer;所述方法包括:控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理。
由于每个转发核均只从与自身对应的BD段所包括的BD所指向的Buffer中收包,而不会去其他BD段所包括的BD所指向的Buffer中收包,从而可以避免不同的转发核同时访问同一个缓冲区而出现数据冲突。此外,在上述过程中,针对只包括单一硬件接收队列的网络设备而言,无需使用自旋锁,也无需额外消耗新的硬件资源,也就是说,可以在不影响网络设备的转发性能的前提下,使得网络设备具备基于每包转发的功能。
结合第一方面实施例,在一种可能的实施方式中,所述控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理,包括:针对每个转发核,控制该转发核从所述对应的BD段所包括的一个BD所指向的Buffer内收包并进行处理,将所述对应的BD段的子索引计数的当前取值加一;其中,所述一个BD为所述对应的BD段的子索引计数的当前取值所指向的BD,以此来保证转发核在收包时的连续性。
结合第一方面实施例,在一种可能的实施方式中,在所述控制该转发核从所述对应的BD段所包括的一个BD所指向的Buffer内收包并进行处理之前,所述方法还包括:针对每个转发核,判断所述对应的BD段的子索引计数的当前取值是否超过该子索引计数的取值范围中的最大值;在超过时,将所述对应的BD段的子索引计数的当前取值更新为该子索引计数的取值范围中的最小值。如此设置之后,可以防止转发核由于找不到下一个缓冲区而导致的无法继续收包的问题。
结合第一方面实施例,在一种可能的实施方式中,在所述控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理之前,所述方法还包括:获取所述多个转发核的数量;将所述BD环拆分成多个BD段;将所述多个转发核与所述多个BD段形成一一对应关系。
第二方面,本申请实施例提供一种基于每包转发的装置,应用于网络设备,所述网络设备包括多个转发核以及单一硬件接收队列,所述单一硬件接收队列包括一个缓冲区描述符BD环,所述BD环被划分为与所述多个转发核一一对应的多个BD段,其中,每个所述BD段内包括至少一个BD,且每个所述BD指向对应的缓冲区Buffer;所述装置包括:控制模块,用于控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理。
结合第二方面实施例,在一种可能的实施方式中,所述控制模块,用于控制该转发核从所述对应的BD段所包括的一个BD所指向的Buffer内收包并进行处理,将所述对应的BD段的子索引计数的当前取值加一;其中,所述一个BD为所述对应的BD段的子索引计数的当前取值所指向的BD。
结合第二方面实施例,在一种可能的实施方式中,所述装置还包括判断模块以及更新模块;所述判断模块,用于针对每个转发核,判断所述对应的BD段的子索引计数的当前取值是否超过该子索引计数的取值范围;所述更新模块,用于在所述判断模块判断为是时,将所述对应的BD段的子索引计数的当前取值更新为该子索引计数的取值范围的第一个值。
结合第二方面实施例,在一种可能的实施方式中,所述装置还包括获取模块以及拆分模块;所述获取模块,用于获取所述多个转发核的数量;所述拆分模块,用于将所述BD环拆分成多个BD段;将所述多个转发核与所述多个BD段形成一一对应关系。
第三方面,本申请实施例还提供一种网络设备,包括:存储器和处理器,所述存储器和所述处理器连接;所述存储器用于存储程序;所述处理器调用存储于所述存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
第四方面,本申请实施例还提供一种非易失性计算机可读取存储介质(以下简称计算机存储介质),其上存储有计算机程序,所述计算机程序被计算机运行时执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出本申请实施例提供的一种网络设备的结构示意图。
图2示出本申请实施例提供的硬件接收队列的示意图。
图3示出本申请实施例提供的一种基于每包转发的方法的流程图。
图4示出本申请实施例提供的一种基于每包转发的装置的结构框图。
图标:100-网络设备;110-处理器;120-存储器;130-硬件接收队列;400-基于每包转发的装置;410-控制模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
此外,针对现有技术中针对只包括唯一硬件接收队列的网络设备在实现基于每包转发的功能时存在的缺陷(会引入自旋锁,影响网络设备的转发性能)是申请人在经过实践并仔细研究后得出的结果,因此,上述缺陷的发现过程以及在下文中本申请实施例针对上述缺陷所提出的解决方案,都应该被认定为申请人对本申请做出的贡献。
为了解决上述问题,本申请实施例提供一种基于每包转发的方法、装置、网络设备及计算机存储介质,使得只存在一个硬件接收队列的网络设备在不影响网络设备的转发性能的前提下,实现基于每包转发的需求。
该技术可采用相应的软件、硬件以及软硬结合的方式实现。以下对本申请实施例进行详细介绍。
首先,请参照图1来描述用于实现本申请实施例的基于每包转发的方法、装置的网络设备100。
网络设备100可以是,但不限于交换机、路由器等设备。
其中,网络设备100可以包括:处理器110、存储器120、硬件接收队列130。
应当注意,图1所示的网络设备100的组件和结构只是示例性的,而非限制性的,根据需要,网络设备100也可以具有其他组件和结构。
处理器110、存储器120、硬件接收队列130以及其他可能出现于网络设备100的组件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,处理器110、存储器120、硬件接收队列130以及其他可能出现的组件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
在通信领域,一个硬件接收队列130包括一个缓冲区描述符(Buffer Descriptor,BD)环,在BD环中包括多个BD,且每个BD指向对应的缓冲区(Buffer)。
在本申请实施例中,为了能够在不使用自旋锁的前提下,使得只包括单一硬件接收队列130的网络设备100具备实现基于每包转发的功能,可以按照图2所示的方式,将硬件接收队列130包括的BD环进行拆分,得到多个BD段。
其中,BD段的数量需要与网络设备100所包括的转发核的数量一致,且BD段与转发核之间形成一一对应关系。
针对每个BD段而言,均包括至少一个BD。
存储器120用于存储程序,例如存储有后文出现的基于每包转发的方法对应的程序或者后文出现的基于每包转发的装置。可选的,当存储器120内存储有基于每包转发的装置时,基于每包转发的装置包括至少一个可以以软件或固件(firmware)的形式存储于存储器120中的软件功能模块。
可选的,基于每包转发的装置所包括软件功能模块也可以固化在网络设备100的操作系统(operating system,OS)中。
处理器110用于执行存储器120中存储的可执行模块,例如基于每包转发的装置包括的软件功能模块或计算机程序。当处理器110在接收到执行指令后,可以执行计算机程序,例如执行:控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理。
当然,本申请任一实施例所揭示的方法都可以应用于处理器110中,或者由处理器110实现。
下面将针对本申请所提供的基于每包转发的方法进行介绍。
请参照图3,本申请实施例提供一种应用于上述网络设备100的基于每包转发的方法,该方法包括以下步骤。
步骤S110:控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理。
如前文中所述,在只包括单一硬件接收队列130的网络设备100需要实现基于每包转发的功能之前,需要先获取网络设备100所包括的转发核的数量N。
在获取到转发核的数量N后,将属于单一硬件接收队列130的BD环进行拆分,从而得到N个BD段。
针对每个BD段而言,均包括至少一个BD。
在得到N个BD段后,将BD段与转发核之间形成一一对应的关系。
完成上述流程后,当网络设备100需要实现基于每包转发的功能时,即可以将报文保存在单一硬件接收队列130的BD环所包括的BD所指向的Buffer内,并控制各个转发核只从与自身对应的BD段所包括的BD所指向的Buffer中收包并进行处理。
在上述过程中,由于每个转发核均只从与自身对应的BD段所包括的BD所指向的Buffer中收包,而不会去其他BD段所包括的BD所指向的Buffer段中收包,从而可以避免不同的转发核同时访问同一个缓冲区而出现数据冲突。此外,在上述过程中,针对只包括单一硬件接收队列130的网络设备100而言,无需使用自旋锁,也无需额外消耗新的硬件资源,也就是说,可以在不影响网络设备100的转发性能的前提下,使得网络设备100具备基于每包转发的功能。
由于上述过程完全由软件实现,对网络设备100的硬件要求较低,因此,上述方案还具有较强的扩展性。
下面将针对各个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理的过程进行介绍。
值得指出的是,在通信领域中,每个BD环存在对应的入口地址和索引计数。
其中,M为BD环的长度,则BD环索引计数的取值范围为0-M,M为该索引计数对应的BD环所包括的BD的总数减一。
其中,不同取值的索引计数指向不同的BD。当索引计数的取值为N时,用于表征此时指向的是BD环中的第N+1个BD。
转发核在每次收包时,通过收包函数从索引计数的当前取值所指向的BD所指向的Buffer的DMA(Direct Memory Access,直接存储器访问)地址进行收包。
在本申请实施例中,每个BD段均存在一个对应的子索引计数。类似的,不同取值的子索引计数指向不同的BD。同样的,子索引计数的当前取值N用于表征此时指向的是BD环中的第N+1个BD。相应的,每个子索引计数的取值范围与该子索引计数对应的BD段所包括的BD在BD环中的位置相关。由于每个BD段所包括的BD均不相同,因此,各个子索引计数的取值范围之间不存在交叉,且各个子索引计数的取值范围的并集为BD环的索引计数的取值范围。也就是说,当将BD环拆分成N个BD段后,也相应的将BD环的索引计数的取值范围进行拆分。
例如,BD环包括128个BD,相应的,与该BD环对应的索引计数的取值范围为0-127。假设该BD环被拆分成2个BD段,分别为BD段1以及BD段2,且BD段1所包括的BD为BD环中的第1-64个BD,BD段2所包括的BD为BD环中的第65-128个BD,相应的,与BD段1对应的子索引计数的取值范围为0-63,与BD段2对应的子索引计数的取值范围为64-127。
在这种实施方式下,针对任意转发核,当该转发核每次需要从与自身对应的BD段所包括的BD所指向的Buffer中收包时,都是从对应的BD段所包括的一个BD所指向的Buffer内收包。至于该Buffer,则是在当前时刻,该转发核对应的BD段的子索引计数的当前取值所指向的BD对应的Buffer。一般情况下,针对每个BD段而言,与其对应的子索引计数的初始取值为该子索引计数值的取值范围的第一个值(即取值范围中的最小值),从而使得转发核在对应的BD段所包括的BD所指向的Buffer内收包时,是从对应的BD段的第一个BD所指向的Buffer内收包。
在本次收包完成后,为了保证收包的连续性,转发核下一次收包时需要从当前收包时对应的BD的下一个BD所指向的Buffer中收包。为了实现这个效果,在本次收包完成后,还需要把对应的BD段的子索引计数的当前取值加一。
此外,每个BD段存在对应的长度SIZE,用于表征BD段所包括的BD个数。
当然,不同的BD段的长度可以相同,也可以不同。
如图2所示,对于BD段1而言,其长度为4;对于BD段2而言,其长度为4;对于BD段N而言,其长度为4。
为了防止转发核找不到下一个Buffer而导致的无法继续收包的问题(例如子索引计数的取值增加到一定程度后,在转发核对应的BD段内不存在与该子索引计数值的当前取值对应的BD,从而无法找到对应的Buffer),在控制该转发核从对应的BD段内收包之前,还可以针对对应的BD段的子索引计数的当前取值进行判断,从而确定子索引计数的当前取值是否超过该子索引计数的取值范围中的最大值。
其中,在子索引计数的当前取值超过该子索引计数所对应的取值范围中的最大值时,即意味着转发核前一次是从对应的BD段所包括的最后一个BD所指向的缓冲区内收包,此时,为了防止转发核找不到下一个缓冲区而导致无法继续收包的问题,可以将对应的BD段的子索引计数的当前取值强制更新为该子索引计数的取值范围中的最小值,以便转发核再次从对应的BD段的第一个BD所指向的缓冲区内收包。
当然,在子索引计数的当前取值未超过该子索引计数所对应的取值范围中的最大值,转发核即可直接从该子索引计数的当前取值所指向的BD所指向的缓冲区内收包。
在转发核从缓冲区内收包之后,转发核即可以根据报文的类型对报文进行相应的处理,例如将数据报文进行转发,再例如执行控制报文。
此外,值得指出的是,在本申请实施例中,各个转发核可以同时从与之对应的BD段所包括的BD指向的Buffer中收包并进行处理,即各个转发核可以并行处理,相较于现有技术中使用自旋锁的方案,还可以在一定程度上提高Per-Packet模式的转发性能。
本申请实施例所提供的一种基于每包转发的方法,由于每个转发核均只从与自身对应的BD段所包括的BD所指向的Buffer中收包,而不会去其他BD段所包括的BD所指向的Buffer中收包,从而可以避免不同的转发核同时访问同一个缓冲区而出现数据冲突。此外,在上述过程中,针对只包括单一硬件接收队列的网络设备而言,无需使用自旋锁,也无需额外消耗新的硬件资源,也就是说,可以在不影响网络设备的转发性能的前提下,使得网络设备具备基于每包转发的功能。
请参照图4,本申请实施例还提供一种基于每包转发的装置400,应用于网络设备。网络设备包括多个转发核以及单一硬件接收队列,所述单一硬件接收队列包括一个缓冲区描述符BD环,所述BD环被划分为与所述多个转发核一一对应的多个BD段,其中,每个所述BD段内包括至少一个BD,且每个所述BD指向对应的缓冲区Buffer。
其中,基于每包转发的装置400包括:控制模块410,用于控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理。
在一些实施方式中,所述BD环存在对应的索引计数,且所述索引计数的取值范围为零到所述BD环所包括的BD的总数减一,不同取值的索引计数指向不同的BD;每个所述BD段存在对应的子索引计数,不同取值的子索引计数指向不同的BD,且各个子索引计数的取值范围之间不存在交叉,所述各个子索引计数的取值范围的并集为所述索引计数的取值范围;所述控制模块410,用于控制该转发核从所述对应的BD段所包括的一个BD所指向的Buffer内收包并进行处理,将所述对应的BD段的子索引计数的当前取值加一;其中,所述一个BD为所述对应的BD段的子索引计数的当前取值所指向的BD。
在一种可能的实施方式中,所述装置还包括判断模块以及更新模块;所述判断模块,用于针对每个转发核,判断所述对应的BD段的子索引计数的当前取值是否超过该子索引计数的取值范围;所述更新模块,用于在所述判断模块判断为是时,将所述对应的BD段的子索引计数的当前取值更新为该子索引计数的取值范围的第一个值。
在一种可能的实施方式中,所述装置还包括获取模块以及拆分模块;所述获取模块,用于获取所述多个转发核的数量;所述拆分模块,用于将所述BD环拆分成多个BD段;将所述多个转发核与所述多个BD段形成一一对应关系。
本申请实施例所提供的基于每包转发的装置400,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
此外,本申请实施例还提供一种计算机存储介质,该计算机存储介质上存储有计算机程序,该计算机程序被计算机运行时,执行如上述的基于每包转发的方法所包含的步骤。
综上所述,本发明实施例提出的基于每包转发的方法、装置、网络设备及计算机存储介质,由于每个转发核均只从与自身对应的BD段所包括的BD所指向的Buffer中收包,而不会去其他BD段所包括的BD所指向的Buffer中收包,从而可以避免不同的转发核同时访问同一个缓冲区而出现数据冲突。此外,在上述过程中,针对只包括单一硬件接收队列的网络设备而言,无需使用自旋锁,也无需额外消耗新的硬件资源,也就是说,可以在不影响网络设备的转发性能的前提下,使得网络设备具备基于每包转发的功能。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (10)
1.一种基于每包转发的方法,其特征在于,应用于网络设备,所述网络设备包括多个转发核以及单一硬件接收队列,所述单一硬件接收队列包括一个缓冲区描述符BD环,所述BD环被划分为与所述多个转发核一一对应的多个BD段,其中,每个所述BD段内包括至少一个BD,且每个所述BD指向对应的缓冲区Buffer;所述方法包括:
控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理。
2.根据权利要求1所述的方法,其特征在于,所述控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理,包括:
针对每个转发核,控制该转发核从所述对应的BD段所包括的一个BD所指向的Buffer内收包并进行处理,将所述对应的BD段的子索引计数的当前取值加一;
其中,所述一个BD为所述对应的BD段的子索引计数的当前取值所指向的BD。
3.根据权利要求2所述的方法,其特征在于,在所述控制该转发核从所述对应的BD段所包括的一个BD所指向的Buffer内收包并进行处理之前,所述方法还包括:
针对每个转发核,判断所述对应的BD段的子索引计数的当前取值是否超过该子索引计数的取值范围中的最大值;
在超过时,将所述对应的BD段的子索引计数的当前取值更新为该子索引计数的取值范围中的最小值。
4.根据权利要求1-3任一项所述的方法,其特征在于,在所述控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理之前,所述方法还包括:
获取所述多个转发核的数量;
将所述BD环拆分成多个BD段;
将所述多个转发核与所述多个BD段形成一一对应关系。
5.一种基于每包转发的装置,其特征在于,应用于网络设备,所述网络设备包括多个转发核以及单一硬件接收队列,所述单一硬件接收队列包括一个缓冲区描述符BD环,所述BD环被划分为与所述多个转发核一一对应的多个BD段,其中,每个所述BD段内包括至少一个BD,且每个所述BD指向对应的缓冲区Buffer;所述装置包括:
控制模块,用于控制每个转发核从与其对应的BD段所包括的BD所指向的Buffer中收包并进行处理。
6.根据权利要求5所述的装置,其特征在于,所述控制模块,用于控制该转发核从所述对应的BD段所包括的一个BD所指向的Buffer内收包并进行处理,将所述对应的BD段的子索引计数的当前取值加一;其中,所述一个BD为所述对应的BD段的子索引计数的当前取值所指向的BD。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括判断模块以及更新模块;
所述判断模块,用于针对每个转发核,判断所述对应的BD段的子索引计数的当前取值是否超过该子索引计数的取值范围中的最大值;
所述更新模块,用于在所述判断模块判断为是时,将所述对应的BD段的子索引计数的当前取值更新为该子索引计数的取值范围中的最小值。
8.根据权利要求5-7中任一项所述的装置,其特征在于,所述装置还包括获取模块以及拆分模块;
所述获取模块,用于获取所述多个转发核的数量;
所述拆分模块,用于将所述BD环拆分成多个BD段;将所述多个转发核与所述多个BD段形成一一对应关系。
9.一种网络设备,其特征在于,包括:存储器和处理器,所述存储器和所述处理器连接;
所述存储器用于存储程序;
所述处理器调用存储于所述存储器中的程序,以执行如权利要求1-4中任一项所述的方法。
10.一种计算机存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被计算机运行时执行如权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011599448.1A CN112702275A (zh) | 2020-12-29 | 2020-12-29 | 基于每包转发的方法、装置、网络设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011599448.1A CN112702275A (zh) | 2020-12-29 | 2020-12-29 | 基于每包转发的方法、装置、网络设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112702275A true CN112702275A (zh) | 2021-04-23 |
Family
ID=75512095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011599448.1A Pending CN112702275A (zh) | 2020-12-29 | 2020-12-29 | 基于每包转发的方法、装置、网络设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112702275A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650698A (zh) * | 2009-08-28 | 2010-02-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
US20120120965A1 (en) * | 2010-11-12 | 2012-05-17 | Alcatel-Lucent Usa Inc. | Lock-less and zero copy messaging scheme for telecommunication network applications |
CN103218313A (zh) * | 2013-04-02 | 2013-07-24 | 杭州华三通信技术有限公司 | 用于实现缓存描述符交互的方法和电子设备 |
CN103218258A (zh) * | 2011-12-07 | 2013-07-24 | 三星电子株式会社 | 用于在操作系统中动态地控制抢占分区的设备和方法 |
CN104168217A (zh) * | 2014-08-15 | 2014-11-26 | 杭州华三通信技术有限公司 | 一种先入先出队列调度方法及装置 |
CN104394096A (zh) * | 2014-12-11 | 2015-03-04 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及多核处理器 |
US20150301975A1 (en) * | 2014-04-22 | 2015-10-22 | Freescale Semiconductor, Inc. | Multi-core processor for managing data packets in communication network |
CN105071973A (zh) * | 2015-08-28 | 2015-11-18 | 迈普通信技术股份有限公司 | 一种报文接收方法及网络设备 |
US20160274936A1 (en) * | 2015-03-17 | 2016-09-22 | Vakul Garg | Multi-core system for processing data packets |
CN107332732A (zh) * | 2017-06-26 | 2017-11-07 | 迈普通信技术股份有限公司 | 一种报文流量的采样方法、装置及路由设备 |
CN107667364A (zh) * | 2015-06-04 | 2018-02-06 | 微软技术许可有限责任公司 | 使用硬件事务存储器控制索引的原子更新 |
-
2020
- 2020-12-29 CN CN202011599448.1A patent/CN112702275A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650698A (zh) * | 2009-08-28 | 2010-02-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
US20120120965A1 (en) * | 2010-11-12 | 2012-05-17 | Alcatel-Lucent Usa Inc. | Lock-less and zero copy messaging scheme for telecommunication network applications |
CN103218258A (zh) * | 2011-12-07 | 2013-07-24 | 三星电子株式会社 | 用于在操作系统中动态地控制抢占分区的设备和方法 |
CN103218313A (zh) * | 2013-04-02 | 2013-07-24 | 杭州华三通信技术有限公司 | 用于实现缓存描述符交互的方法和电子设备 |
US20150301975A1 (en) * | 2014-04-22 | 2015-10-22 | Freescale Semiconductor, Inc. | Multi-core processor for managing data packets in communication network |
CN104168217A (zh) * | 2014-08-15 | 2014-11-26 | 杭州华三通信技术有限公司 | 一种先入先出队列调度方法及装置 |
CN104394096A (zh) * | 2014-12-11 | 2015-03-04 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及多核处理器 |
US20160274936A1 (en) * | 2015-03-17 | 2016-09-22 | Vakul Garg | Multi-core system for processing data packets |
CN107667364A (zh) * | 2015-06-04 | 2018-02-06 | 微软技术许可有限责任公司 | 使用硬件事务存储器控制索引的原子更新 |
CN105071973A (zh) * | 2015-08-28 | 2015-11-18 | 迈普通信技术股份有限公司 | 一种报文接收方法及网络设备 |
CN107332732A (zh) * | 2017-06-26 | 2017-11-07 | 迈普通信技术股份有限公司 | 一种报文流量的采样方法、装置及路由设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105142146B (zh) | 一种wifi热点接入的认证方法、装置及系统 | |
RU2610250C2 (ru) | Узел передачи и способ отчетности о статусе буфера | |
US9692642B2 (en) | Offloading to a network interface card | |
US9705795B2 (en) | Look-up table creation method and query method, controller, forwarding device, and system | |
US9680774B2 (en) | Network interface card offloading | |
CN112311674B (zh) | 报文发送方法、装置及存储介质 | |
US8010103B2 (en) | Passive and active scanning in wireless network | |
CN108965066B (zh) | 一种对传输路径进行探测的方法和装置 | |
CN107749826B (zh) | 一种数据包转发方法及系统 | |
CN116032861A (zh) | 一种报文处理方法及装置 | |
US20150281109A1 (en) | System for en-queuing and de-queuing data packets in communication network | |
CN113452770B (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN104270287A (zh) | 一种报文乱序检测方法及装置 | |
US20200019449A1 (en) | Broadcast Message Sending Method and Apparatus, and Mobile Terminal | |
CN116501657B (zh) | 缓存数据的处理方法、设备及系统 | |
US20130018987A1 (en) | Adaptive replication | |
CN112702275A (zh) | 基于每包转发的方法、装置、网络设备及计算机存储介质 | |
US9866470B2 (en) | Multiple active link aggregators | |
US10129147B2 (en) | Network-on-chip flit transmission method and apparatus | |
CN115580497A (zh) | 容器环境下数据传输控制方法、设备及存储介质 | |
CN114938354A (zh) | 拥塞控制的方法、装置、设备和存储介质 | |
US20180167340A1 (en) | Technologies for multi-core wireless network data transmission | |
CN111324438A (zh) | 请求的调度方法、装置、存储介质及电子设备 | |
CN112491903A (zh) | 多系统间对账方法、装置及系统 | |
US8699347B2 (en) | Communication apparatus, communication system, communication method, and a computer-readable medium |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210423 |