CN116366582A - 一种基于ovs-dpdk的数据包处理方法、*** - Google Patents

一种基于ovs-dpdk的数据包处理方法、*** Download PDF

Info

Publication number
CN116366582A
CN116366582A CN202310639196.8A CN202310639196A CN116366582A CN 116366582 A CN116366582 A CN 116366582A CN 202310639196 A CN202310639196 A CN 202310639196A CN 116366582 A CN116366582 A CN 116366582A
Authority
CN
China
Prior art keywords
data packet
processing
flow
batch
cache node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310639196.8A
Other languages
English (en)
Other versions
CN116366582B (zh
Inventor
吴绍华
李易
郑理
邹明
文旭
韩丁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202310639196.8A priority Critical patent/CN116366582B/zh
Publication of CN116366582A publication Critical patent/CN116366582A/zh
Application granted granted Critical
Publication of CN116366582B publication Critical patent/CN116366582B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

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

Abstract

本公开涉及云计算技术领域,涉及一种基于OVS‑DPDK的数据包处理方法、***。本公开实施例的方法包括:步骤S01,从DPDK上获取PMD数据包并存入batch中;步骤S02,从batch中获取PMD数据包进行流表处理流程;流表处理流程对不存在的CT表项进行两种操作,锁获取成功的,将CT表项***CT跟踪链接表,锁获取失败的,将CT表项的指针存入CT缓存节点。步骤S03,等数据包取完后,执行CT缓存节点的CT表项***流程,当锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表并删除该CT缓存节点,执行完毕后,返回步骤S01对下一轮PMD数据包进行处理。本公开实施例的***基于上述方法实现。本公开实施例降低了批量处理数据包时串行处理的时间,提高了CPS速率和流表卸载速度。

Description

一种基于OVS-DPDK的数据包处理方法、***
技术领域
本公开的实施例涉及云计算技术领域,尤其涉及一种基于OVS- DPDK的数据包处理方法、***。
背景技术
云平台网络是依靠OVS(OpenvSwitch,虚拟交换机)的内核空间实现对应用程序的数据包的处理。数据平面开发套件(DPDK,Data Plane Development Kit)为用于快速数据包处理的函数库与驱动集合。DPDK 结合OVS 后,性能变得高效且方便开发。
OVS-DPDK架构中的CT(Connection Tracking)模块存在一把保护CT跟踪链接表的全局锁,在CT流表跟踪项(后文,统称CT表项)***删除时执行数据保护。其中,CT(Connection Tracking)模块用于连接跟踪允许跟踪所有逻辑网络连接或会话,从而关联可能构成该连接的所有数据包。DPDK 数据路径上的大部分工作通过轮询模式驱动程序(Poll Mode Driver,PMD)线程负责处理,PMD还执行诸如输入端口的连续轮询等任务。PMD一旦接收到数据包及对其进行分类,分类完成后进行处理动作。
现有处理流表的大致流程如下:在DPDK 数据路径上接收从OVS连接的某个网络设备发来的数据包,从数据包中提取源/目的IP、源/目的端口、协议号的五元组信息;基于上述五元组信息生成的哈希值进行查表,当查表获得的索引值为非空时,则无需更新流表,当查表获得的索引值为空时,则需要获取全局锁,将创建的CT表项***CT跟踪链接表。若期间全局锁获取失败,则需等待锁释放后,才能执行查表修改操作(包括***、删除等)。
由此可见,当多线程同时进行数据采集时必须通过解锁和写锁的方式与TCP/IP协议栈进行交互。为此,存在如下问题:(1)目前OVS的CT模块在建链上受限于多PMD进程访问同一块CT跟踪链接表,在查表和***的全局锁是不能去掉的,这使得随着PMD进程增多时,CPS(Connection Per Second,每秒连接数)性能无法像预想的提高;受制于此,随着硬件网卡带宽(25Gbps到100Gbps)进一步提高,使得OVS-DPDK的PMD的分配策略无法通过PMD数量的增多来提高OVS的CPS。也就是说,这将造成数据包处理速度匹配不了硬件的带宽处理速度。(2)当一个线程获取锁后,执行相关的逻辑代码,执行时间过长,造成其他线程只能睡眠等待,串行处理粒度过大,造成无法充分利用CPU资源。
发明内容
本公开的实施例提供了一种基于OVS- DPDK的数据包处理方法、***,旨在解决上述问题以及其他潜在的问题中的一个或多个。
为实现上述目的,提供以下技术方案:
根据本公开的第一方面,提供了一种基于OVS- DPDK的数据包处理方法,包括:
步骤S01,从DPDK数据路径上获取PMD数据包并将PMD数据包缓存入批处理batch中;
步骤S02,从批处理batch中获取PMD数据包进行流表处理流程;
在执行流表处理流程时,对批处理batch中的PMD数据包进行查表,当未在CT跟踪链接表查询到CT表项时,创建CT表项并根据全局锁获取情况执行不同操作:当获取全局锁成功时,将该CT表项***CT跟踪链接表,当获取全局锁失败时,将该CT表项的指针填充入CT缓存节点中;
步骤S03,当批处理batch中的数据包取完后,执行CT缓存节点的CT表项***流程;当CT缓存节点的CT表项***流程执行完毕后,返回步骤S01对下一轮PMD数据包进行处理;
在执行CT缓存节点的CT表项***流程时,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表并删除该CT缓存节点。
本公开实施例的方法在建链获取锁失败时,不等待锁释放,而是利用等待锁释放的时间做其他操作,即将CT表项的指针填充入CT缓存节点中。在此过程中,无需耗费时间等待锁释放。在取完数据包后,利用CT缓存节点的CT表项***流程,再将CT表项***。本公开实施例降低了批量处理数据包时串行处理的时间,提高了CPS速率以及流表的卸载速度,优化了网络性能。
在一些实施例中,所述流表处理流程包括:
判断批处理batch中的数据包是否取完,若取完,则结束,若未取完,执行后续流程;
查询CT跟踪链接表,当未能查到CT表项时,创建CT表项并基于该数据包填充所述CT表项;
获取全局锁,当全局锁获取成功时,将该CT表项***CT跟踪链接表;当全局锁获取失败时,将该CT表项的指针填充入CT缓存节点中;
逐个从批处理batch中获取数据包执行上述流程,直到取完数据包为止。
在一些实施例中,所述流表处理流程还包括:当查到CT表项时,更新该CT表项的状态,之后从批处理batch中获取下一个数据包执行流表处理流程。
在一些实施例中,所述基于该数据包填充所述CT表项的过程包括:将数据包中的源IP、目的IP、源端口、目的端口、协议号和CT表项的状态存入所述CT表项。
在一些实施例中,所述步骤S02还包括:判断CT缓存节点是否为空,当CT缓存节点为空时,从批处理batch中获取PMD数据包进行流表处理流程;当CT缓存节点不为空时,遍历线程上的所有CT缓存节点,执行CT缓存节点的CT表项***流程。
在一些实施例中,所述CT缓存节点的CT表项***流程包括:
获取线程上的一个CT缓存节点;
获取全局锁,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表;
删除该CT缓存节点;
依次遍历线程上的所有CT缓存节点,直到所有缓存节点中指针所对应的CT表项***CT跟踪链接表,CT缓存节点被删除后为止。
在一些实施例中,所述CT缓存节点的CT表项***流程还包括:当CT缓存节点的CT表项***流程执行完后,继续进行流表处理流程。
在一些实施例中,方法还包括:在步骤S01获取PMD数据包后且在执行步骤S02步骤前,创建CT缓存节点。
在一些实施例中,所述CT缓存节点的数量为步骤S01中从DPDK数据路径上获取PMD数据包的最大值。
根据本公开的第二方面,提供了一种基于OVS-DPDK的数据包处理***,包括:
数据包获取模块,用于从DPDK数据路径上获取PMD数据包;
批处理batch模块,用于缓存所述数据包获取模块获取的PMD数据包;
流表处理模块,用于获取批处理batch模块中的PMD数据包进行流表处理流程,在执行流表处理流程时,对批处理batch中的PMD数据包进行查表,当未在CT跟踪链接表查询到CT表项时,创建CT表项并根据全局锁获取情况执行不同操作:当获取全局锁成功时,将该CT表项***CT跟踪链接表,当获取全局锁失败时,将该CT表项的指针填充入CT缓存节点中;当批处理batch中的数据包取完后,触发所述缓存***模块执行CT缓存节点的CT表项***流程;当CT缓存节点的CT表项***流程执行完毕后,触发所述数据包获取模块对下一轮PMD数据包进行处理;
缓存***模块,用于在执行CT缓存节点的CT表项***流程时,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表并删除该CT缓存节点。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例而非限制性的方式示出本公开的若干实施例。
图1示出了本公开实施例的一种基于OVS-DPDK的数据包处理方法的流程图;
图2示出了本公开实施例的一种基于OVS-DPDK的数据包处理方法的示例流程图;
图3示出了采用本公开实施例的一种基于OVS-DPDK的数据包处理方法和现有方法进行数据包处理的效果比对图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。
现有处理流表的流程在建链获取锁失败时,需要等待锁释放去串行更新CT跟踪链接表。此过程随着PMD进程增多,CPS性能下降。即使硬件网卡带宽提高,但数据包处理速度无法匹配硬件的带宽处理速度。
为此,本公开实施例提出了一种基于OVS-DPDK的数据包处理方法,在OVS上增加一种CT创建会话跟踪的并行处理机制,在PMD数量不多,锁竞争不激烈时,使用原有串行处理逻辑;在PMD数量增多,锁竞争激烈时,在获取锁失败后,不再等待锁释放,处理其他逻辑,即将新增表项缓存入CT缓存节点。这样通过增加并行处理的时间,减少所有任务都在等锁释放而导致的CPU算力资源的浪费。
图1示出了本公开实施例一种基于OVS-DPDK的数据包处理方法的流程图。方法包括:
步骤S01,从DPDK数据路径上获取PMD数据包并将PMD数据包缓存入批处理batch中;
步骤S02,从批处理batch中获取PMD数据包进行流表处理流程;
在执行流表处理流程时,对批处理batch中的PMD数据包进行查表,当未在CT跟踪链接表查询到CT表项时,创建CT表项并根据全局锁获取情况执行不同操作:当获取全局锁成功时,将该CT表项***CT跟踪链接表,当获取全局锁失败时,将该CT表项的指针填充入CT缓存节点中;
步骤S03,当批处理batch中的数据包取完后,执行CT缓存节点的CT表项***流程;当CT缓存节点的CT表项***流程执行完毕后,返回步骤S01对下一轮PMD数据包进行处理;
在执行CT缓存节点的CT表项***流程时,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表并删除该CT缓存节点。
本公开实施例的方法应用于网卡端,网卡获取DPDK数据路径上的PMD数据包执行上述处理流程。
在步骤S01中,每次获取数据包以批量形式获取,例如一批量获取32个数据包,将32个数据包缓存入批量处理batch中。
所述步骤S02对批处理batch中所有数据包依次执行流表处理流程,直到当前批次数据包取完结束,进入下一轮新批量数据包获取以及新数据包的流表处理流程。
本公开实施例在步骤S02进行时,先预查表判断当前数据包的CT表项是否存在于CT跟踪链接表内,若不存在,则创建CT表项并需获取全局锁执行CT表项***CT跟踪链接表的操作。在此过程中,在全局锁获取成功时,根据现有流程执行CT表项***CT跟踪链接表的操作,当全局锁获取失败时,则不同于现有流程,即不等待全局锁释放,而是将CT表项***到CT缓存节点的方式,等数据包处理完毕后,执行CT缓存节点的CT表项***流程。此过程中,能解决多进程下CPS降低的问题,通过增加并行处理的时间,降低了批量处理数据包时串行处理的时间,提高了CPS速率。
具体地,所述流表处理流程包括:
A1,判断批处理batch中的数据包是否取完,若取完,则结束,若未取完,执行后续流程;
A2,查询CT跟踪链接表,查询是否有CT表项在CT跟踪链接表中。
查询时,需要基于PMD数据包计算哈希值。获取数据包中的源IP、目的IP、源端口、目的端口、协议号,将上述信息构成元组;基于元组进行哈希计算,获得哈希值。将此哈希值作为索引值查询CT跟踪链接表,若能查询到时,则返回非空。当未能查询到时,则返回Null。
当查到CT表项时,更新该CT表项的状态。所述CT表项的状态包括timewait状态、establish状态。更新的内容包括更新CT的老化时间,以及状态迁移。更新状态后对数据包进行标注,例如当查询到CT表项时,根据CT表项的状态将数据包标注为“+est(链接已建立)”,未查询到CT表项时,数据包被标注为“+new(链接待建立)”。状态更新后,从批处理batch中获取下一个数据包执行流表处理流程。
当未能查到CT表项时,创建CT表项并基于该数据包填充所述CT表项。具体地,获取数据包中的源IP、目的IP、源端口、目的端口、协议号和CT表项的状态,将上述五元组和CT表项的状态填充入新建的CT表项中。
A3,获取全局锁,以进行链表***操作。
当全局锁获取成功时,将该CT表项***CT跟踪链接表。当***后,从批处理batch中获取下一个数据包执行流表处理流程。
当全局锁获取失败时,将该CT表项的指针填充入CT缓存节点中。当填充后,从批处理batch中获取下一个数据包执行流表处理流程。
逐个从批处理batch中获取数据包执行上述流程A1~A3,直到取完数据包为止。
具体地,所述CT缓存节点的CT表项***流程包括:
B1,获取线程上的一个CT缓存节点;
B2,获取全局锁,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表;当全局锁获取失败时,则需要继续等待锁释放,直到获取锁为止。
B3,在B2的***操作结束后,删除该CT缓存节点。
依次遍历线程上的所有CT缓存节点,直到所有缓存节点中指针所对应的CT表项***CT跟踪链接表,CT缓存节点被删除后为止。
在数据包取完后执行上述步骤,可将对流表处理过程中获取锁失败的数据包基于CT缓存节点执行CT表项***操作。
此外,本公开实施例的方法步骤S02还包括:判断CT缓存节点是否为空,当CT缓存节点为空时,从批处理batch中获取PMD数据包进行流表处理流程;当CT缓存节点不为空时,遍历线程上的所有CT缓存节点,执行CT缓存节点的CT表项***流程。
在执行流表处理流程前还可进行缓存节点的判断流程,当CT缓存节点为非空时,可优先处理缓存节点中的资源。本公开实施例方法在执行流表处理流程前和后均执行CT缓存节点的CT表项***流程。但目的不同,前者用于对缓存节点中的资源进行优先处理,后者对不进行锁释放等待的表项基于CT缓存节点执行CT表项***操作。
所述CT缓存节点的CT表项***流程还包括:当CT缓存节点的CT表项***流程执行完后,进入流表处理流程。当CT表项***流程结束后,若数据包未被取完,则继续流表处理流程;当CT表项***流程结束后,若数据包被取完,则结束当前批量处理流程,返回步骤S01执行下一轮数据包获取、处理流程。
本公开实施例的方法还包括:在步骤S01获取PMD数据包后且在执行步骤S02步骤前,创建CT缓存节点。每个PMD开辟一块缓存,以供缓存节点使用。该缓存的大小能够存储CT缓存节点的数量为PMD一次从DPDK数据路径上获取PMD数据包的最大值。
图2示出了根据本公开实施例一种基于OVS-DPDK的数据包处理方法实现的示例流程图。其中,ct_cache为缓存节点。网卡预取数据包将其缓存入batch中。先判断ct_cache是否为空,为空时,执行右边的流表处理流程;不为空时,执行下方的CT缓存节点的CT表项***流程。当batch中数据包取完后,处理ct_cache中缓存的数据,一次遍历处理。此过程按照CT缓存节点的CT表项***流程执行,在此未详细展开。
本公开实施例还提供一种基于OVS-DPDK的数据包处理***,包括数据包获取模块、批处理batch模块、流表处理模块、缓存***模块。该***基于本公开实施例的方法实现。
所述数据包获取模块,用于从DPDK数据路径上获取PMD数据包。
所述批处理batch模块,用于缓存所述数据包获取模块获取的PMD数据包。
所述流表处理模块,用于获取批处理batch模块中的PMD数据包进行流表处理流程。在执行流表处理流程时,对批处理batch中的PMD数据包进行查表,当在CT跟踪链接表查询到CT表项时,更新CT表项的状态。当未在CT跟踪链接表查询到CT表项时,创建CT表项并根据全局锁获取情况执行不同操作:当获取全局锁成功时,将该CT表项***CT跟踪链接表,当获取全局锁失败时,将该CT表项的指针填充入CT缓存节点中;当批处理batch中的数据包取完后,触发所述缓存***模块执行CT缓存节点的CT表项***流程;当CT缓存节点的CT表项***流程执行完毕后,触发所述数据包获取模块对下一轮PMD数据包进行处理。
所述缓存***模块,用于在执行CT缓存节点的CT表项***流程时,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表并删除该CT缓存节点。所述缓存***模块还在全局锁获取失败时,等待锁释放直到获取锁成功。
本公开实施例的***还包括缓存判断模块,用于判断CT缓存节点是否为空,当CT缓存节点为空时,从批处理batch模块中获取PMD数据包,触发流表处理模块进行流表处理流程;当CT缓存节点不为空时,遍历线程上的所有CT缓存节点,触发缓存***模块执行CT缓存节点的CT表项***流程。
本公开实施例的***还包括节点创建模块,用于在所述数据包获取模块获取PMD数据包后且在所述缓存判断模块执行动作前,创建CT缓存节点。每个PMD开辟一块缓存,以供缓存节点使用。该缓存的大小能够存储CT缓存节点的数量为PMD一次从DPDK数据路径上获取PMD数据包的最大值。
图3示出了采用现有方法以及本公开实施例方法实现的数据包处理效果比对图。左边为采用现有方法实现的处理效果。右边为采用本公开实施例方法实现的数据包处理效果。示例中每批量处理的数据包为96个,处理来自三个PMD的数据包(每个PMD有32个数据包)。处理完后的总的串行时间,右边所用时间低于左边所用时间。由于本公开实施例降低多PMD进程并行处理任务的串行处理时间,增大各PMD并行处理的力度,减少各PMD之间的竞争,大大提高了CPS性能,提高了OVS处理数据包的速度。当将本公开实施例的方法、***应用于网卡场景下时,随着CPS增大,流表卸载速度也显著提高。
虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (10)

1.一种基于OVS- DPDK的数据包处理方法,其特征在于,包括:
步骤S01,从DPDK数据路径上获取PMD数据包并将PMD数据包缓存入批处理batch中;
步骤S02,从批处理batch中获取PMD数据包进行流表处理流程;
在执行流表处理流程时,对批处理batch中的PMD数据包进行查表,当未在CT跟踪链接表查询到CT表项时,创建CT表项并根据全局锁获取情况执行不同操作:当获取全局锁成功时,将该CT表项***CT跟踪链接表,当获取全局锁失败时,将该CT表项的指针填充入CT缓存节点中;
步骤S03,当批处理batch中的数据包取完后,执行CT缓存节点的CT表项***流程;当CT缓存节点的CT表项***流程执行完毕后,返回步骤S01对下一轮PMD数据包进行处理;
在执行CT缓存节点的CT表项***流程时,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表并删除该CT缓存节点。
2.根据权利要求1所述的一种基于OVS-DPDK的数据包处理方法,其特征在于,所述流表处理流程包括:
判断批处理batch中的数据包是否取完,若取完,则结束,若未取完,执行后续流程;
查询CT跟踪链接表,当未能查到CT表项时,创建CT表项并基于该数据包填充所述CT表项;
获取全局锁,当全局锁获取成功时,将该CT表项***CT跟踪链接表;当全局锁获取失败时,将该CT表项的指针填充入CT缓存节点中;
逐个从批处理batch中获取数据包执行上述流程,直到取完数据包为止。
3.根据权利要求2所述的一种基于OVS-DPDK的数据包处理方法,其特征在于,所述流表处理流程还包括:当查到CT表项时,更新该CT表项的状态,之后从批处理batch中获取下一个数据包执行流表处理流程。
4.根据权利要求2所述的一种基于OVS-DPDK的数据包处理方法,其特征在于,所述基于该数据包填充所述CT表项的过程包括:将数据包中的源IP、目的IP、源端口、目的端口、协议号和CT表项的状态存入所述CT表项。
5.根据权利要求1所述的一种基于OVS-DPDK的数据包处理方法,其特征在于,所述步骤S02还包括:判断CT缓存节点是否为空,当CT缓存节点为空时,从批处理batch中获取PMD数据包进行流表处理流程;当CT缓存节点不为空时,遍历线程上的所有CT缓存节点,执行CT缓存节点的CT表项***流程。
6.根据权利要求1或5所述的一种基于OVS-DPDK的数据包处理方法,其特征在于,所述CT缓存节点的CT表项***流程包括:
获取线程上的一个CT缓存节点;
获取全局锁,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表;
删除该CT缓存节点;
依次遍历线程上的所有CT缓存节点,直到所有缓存节点中指针所对应的CT表项***CT跟踪链接表,CT缓存节点被删除后为止。
7.根据权利要求6所述的一种基于OVS-DPDK的数据包处理方法,其特征在于,所述CT缓存节点的CT表项***流程还包括:当CT缓存节点的CT表项***流程执行完后,继续进行流表处理流程。
8.根据权利要求1所述的一种基于OVS-DPDK的数据包处理方法,其特征在于,还包括:在步骤S01获取PMD数据包后且在执行步骤S02步骤前,创建CT缓存节点。
9.根据权利要求8所述的一种基于OVS-DPDK的数据包处理方法,其特征在于,所述CT缓存节点的数量为步骤S01中从DPDK数据路径上获取PMD数据包的最大值。
10.一种基于OVS-DPDK的数据包处理***,其特征在于,包括:
数据包获取模块,用于从DPDK数据路径上获取PMD数据包;
批处理batch模块,用于缓存所述数据包获取模块获取的PMD数据包;
流表处理模块,用于获取批处理batch模块中的PMD数据包进行流表处理流程,在执行流表处理流程时,对批处理batch中的PMD数据包进行查表,当未在CT跟踪链接表查询到CT表项时,创建CT表项并根据全局锁获取情况执行不同操作:当获取全局锁成功时,将该CT表项***CT跟踪链接表,当获取全局锁失败时,将该CT表项的指针填充入CT缓存节点中;当批处理batch中的数据包取完后,触发所述缓存***模块执行CT缓存节点的CT表项***流程;当CT缓存节点的CT表项***流程执行完毕后,触发所述数据包获取模块对下一轮PMD数据包进行处理;
缓存***模块,用于在执行CT缓存节点的CT表项***流程时,当全局锁获取成功时,将CT缓存节点中指针所对应的CT表项***CT跟踪链接表并删除该CT缓存节点。
CN202310639196.8A 2023-06-01 2023-06-01 一种基于ovs-dpdk的数据包处理方法、*** Active CN116366582B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310639196.8A CN116366582B (zh) 2023-06-01 2023-06-01 一种基于ovs-dpdk的数据包处理方法、***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310639196.8A CN116366582B (zh) 2023-06-01 2023-06-01 一种基于ovs-dpdk的数据包处理方法、***

Publications (2)

Publication Number Publication Date
CN116366582A true CN116366582A (zh) 2023-06-30
CN116366582B CN116366582B (zh) 2023-08-04

Family

ID=86928335

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310639196.8A Active CN116366582B (zh) 2023-06-01 2023-06-01 一种基于ovs-dpdk的数据包处理方法、***

Country Status (1)

Country Link
CN (1) CN116366582B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017186042A1 (zh) * 2016-04-29 2017-11-02 华为技术有限公司 一种用于虚拟交换机技术中数据传输的方法及装置
CN111797119A (zh) * 2020-05-19 2020-10-20 武汉乐程软工科技有限公司 一种缓存装置、***及缓存方法
CN115695522A (zh) * 2022-09-16 2023-02-03 ***数智科技有限公司 一种基于ovs-dpdk数据包引流***及其实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017186042A1 (zh) * 2016-04-29 2017-11-02 华为技术有限公司 一种用于虚拟交换机技术中数据传输的方法及装置
CN111797119A (zh) * 2020-05-19 2020-10-20 武汉乐程软工科技有限公司 一种缓存装置、***及缓存方法
CN115695522A (zh) * 2022-09-16 2023-02-03 ***数智科技有限公司 一种基于ovs-dpdk数据包引流***及其实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
宋卫平等: "基于DPDK的虚拟化***高性能网络模块的研究与实现", 《信息科学》, pages 125 - 133 *

Also Published As

Publication number Publication date
CN116366582B (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US10645187B2 (en) ARC caching for determininstic finite automata of regular expression accelerator
US8321385B2 (en) Hash processing in a network communications processor architecture
KR100603699B1 (ko) 네트워크 프로세서 및 컴퓨터 시스템용 하이브리드 검색메모리
EP1159813B1 (en) Method and apparatus for dynamic packet batching with a network interface
US7237031B2 (en) Method and apparatus for caching protocol processing data
US8539199B2 (en) Hash processing in a network communications processor architecture
US8176300B2 (en) Method and apparatus for content based searching
US10983721B2 (en) Deterministic finite automata node construction and memory mapping for regular expression accelerator
US7792873B2 (en) Data structure supporting random delete and timer function
US20200019391A1 (en) Incremental compilation of finite automata for a regular expression accelerator
CN112929299B (zh) 基于fpga加速卡的sdn云网络实现方法、装置及设备
US20040100956A1 (en) Packet search device, packet processing search method used for the same, and program for the same
US20110258694A1 (en) High performance packet processing using a general purpose processor
EP3742307A1 (en) Managing network traffic flows
US8954409B1 (en) Acquisition of multiple synchronization objects within a computing device
CN113411380A (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
US7466716B2 (en) Reducing latency in a channel adapter by accelerated I/O control block processing
CN116366582B (zh) 一种基于ovs-dpdk的数据包处理方法、***
CN114978676B (zh) 基于FPGA、eBPF协同的数据包加解密方法及***
KR100864889B1 (ko) Tcp 상태 기반 패킷 필터 장치 및 그 방법
CN112671653B (zh) 一种基于多核异构平台的cam表的操作方法
CN117834570B (zh) 传输***的数据包处理方法、装置、电子设备及存储介质
US20240220264A1 (en) Nic line-rate hardware packet processing
CN106648451B (zh) 基于内存的MapReduce引擎数据处理方法和装置

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