CN116319628A - 一种基于dpdk的sdn网络数据转发方法及装置 - Google Patents
一种基于dpdk的sdn网络数据转发方法及装置 Download PDFInfo
- Publication number
- CN116319628A CN116319628A CN202211564037.8A CN202211564037A CN116319628A CN 116319628 A CN116319628 A CN 116319628A CN 202211564037 A CN202211564037 A CN 202211564037A CN 116319628 A CN116319628 A CN 116319628A
- Authority
- CN
- China
- Prior art keywords
- node
- scheduling
- list
- nodes
- static
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000003068 static effect Effects 0.000 claims abstract description 109
- 238000010586 diagram Methods 0.000 claims abstract description 105
- 238000010845 search algorithm Methods 0.000 claims description 13
- 238000010276 construction Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 abstract description 20
- 238000004891 communication Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 21
- 239000013598 vector Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000036541 health Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- 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
-
- 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/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing 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)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种基于DPDK的SDN网络数据转发方法和装置,属于网络通信技术领域。该方法包括创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;在所述调度静态图中设置节点位置,以构建数据调度静态图;通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。本申请提供的方法能够提高数据的处理和转发性能。
Description
技术领域
本申请涉及网络通信技术,尤其涉及一种基于DPDK的SDN网络数据转发方法及装置。
背景技术
数据平面开发套件(Data Plane Development Kit,DPDK)是一种基于Linux系统运行的套件,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
相关技术中开源数据平面开发套件DPDK已被各大互联网厂商使用,云公司在数据转发面也是基于DPDK进行的二次开发,其中DPDK提供的图架构是云公司作为数据转发面的基础架构,该架构主要是提供了矢量的特性,很好的利用了cpu的局部性原理,在DPDK的基础上进一步提高了数据转发的性能,但是其调度算法仍然存在一定的缺陷,导致矢量特性没有被更好地利用,即cpu局部性原理没有发挥到最大程度。
现有的DPDK调度策略比较简单,从源节点开始调度,根据每个包的处理结果调度对应的节点进行处理,所以下一个调度的节点就很依赖包的顺序。然而在实际应用场景中,由于业务复杂,包的种类繁多并且顺序不可控,因此现有的调度策略下,数据包的矢量特性利用率难以保证。
发明内容
本申请实施例提供一种基于DPDK的SDN网络数据转发方法,能够实现不依赖于包的顺序保证在处理多个包时使矢量特性最大化,以解决在现有的调度策略下数据包的矢量特性利用率难以保证的问题。
本申请实施例的第一方面,提供一种基于DPDK的SDN网络数据转发方法,方法包括:
创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;
在所述调度静态图中设置节点位置,以构建数据调度静态图;
通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。
可选地,上述在所述调度静态图中设置节点位置,以构建数据调度静态图包括:
通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置,以构建所述数据调度静态图。
可选地,上述通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置具体为:
使用深度优先搜索算法对图进行遍历,把遍历到的每个节点在f_list中进行搜索;
在没有找到所述节点的情况下,将所述节点插入到c_list的尾部;
在找到所述节点的情况下,将c_list链表插入到f_list中的所述节点的前面;
在遍历到最后一个所述节点时,将c_list链表插入到f_list链表的尾部,完成f_list链表的建立。
可选地,在上述完成f_list链表的建立之后,方法还包括:
从所述f_list链表头部开始,依次遍历节点,把遍历到的节点地址记录到node_buf里,并在节点上记录所述节点在node_buf里的位置,以完成所述数据调度静态图的构建。
可选地,上述在所述调度静态图中设置节点位置,以构建数据调度静态图包括:
根据用户输入的图节点关系设置每个图节点在调度静态图里的位置。
本申请实施例的第二方面,提供一种基于DPDK的SDN网络数据转发装置,包括:
静态图创建模块,用于创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;
节点设置模块,用于在所述调度静态图中设置节点位置,以构建数据调度静态图;
调度模块,用于通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。
根据权利要求6提供的基于DPDK的SDN网络数据转发装置,其特征在于,所述节点设置模块包括:
节点位置确定子模块,用于通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置,以构建所述数据调度静态图。
可选地,上述节点位置确定子模块具体用于:
使用深度优先搜索算法对图进行遍历,把遍历到的每个节点在f_list中进行搜索;
在没有找到所述节点的情况下,将所述节点插入到c_list的尾部;
在找到所述节点的情况下,将c_list链表插入到f_list中的所述节点的前面;
在遍历到最后一个所述节点时,将c_list链表插入到f_list链表的尾部,完成f_list链表的建立。
可选地,上述节点位置确定子模块还用于:
从所述f_list链表头部开始,依次遍历节点,把遍历到的节点地址记录到node_buf里,并在节点上记录所述节点在node_buf里的位置,以完成所述数据调度静态图的构建。
可选地,上述节点设置模块还包括:
节点位置输入子模块,用于根据用户输入的图节点关系设置每个图节点在调度静态图里的位置。
本申请实施例通过创建调度静态图,把公共节点前面的节点都放在调度静态图里位于公共节点调度前面的位置,并且保持原有的调度顺序,公共节点前面的多条并行调度路径调度的前后顺序可以任意,进而根据调度静态图进行数据调度和发送。本申请针对当前DPDK图架构的调度算法对矢量利用的不足进行了改进,使图架构能够更好的对数据包进行积攒,更好地利用cpu的局部性原理,进一步提高数据的处理和转发性能。
附图说明
图1为本申请实施例提供的一种基于DPDK的SDN网络数据转发方法方法的流程示意图;
图2为本申请实施例提供的一种基于DPDK的SDN网络数据转发装置的结构示意图;
图3为现有调度技术调度结果对应的图结构示意图;
图4为本申请实施例提供的调度静态图示例图;
图5为本申请实施例提供的BitMap管理调度示意图;
图6为本申请实施例提供的创建调度静态图示例图结构;
图7为本申请实施例提供的创建调度静态图示例-第一轮;
图8为本申请实施例提供的创建调度静态图示例-第二轮;
图9为本申请实施例提供的创建调度静态图示例-第三轮;
图10为本申请实施例提供的创建调度静态图示例;
图11为本申请实施例提供的数据转发图结构示意图;
图12为本申请实施例提供的调度静态图;
图13为本申请实施例提供的调度过程对比示意图;
图14为现有调度技术对应的图3的不同包顺序调度结果示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
应当理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应当理解,在本申请中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1示例性地示出本申请实施例一种基于DPDK的SDN网络数据转发方法的流程示意图,如图1所示,所述方法包括:
S101:创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;
调度是指图节点处理函数的调用。现有技术中,如图3所示的图结构,DPDK的调度策略是动态化的调度图,即刚开始调度图(或者调度数组,现有DPDK是通过一个循环数组实现调度)里是空的,根据处理的每个包的结果来动态把下一个调度节点添加到调度图里的下一个位置,也就是说每个图节点在调度图里的位置是动态变化的。在这种调度策略下,不同的包顺序导致不同的调度结果,最终包处理的矢量特性分别为最大化和最小化,分别对应调度结果如图14左右两侧所示;因为实际应用场景中,业务复杂,包的种类繁多并且顺序不可控,因此现有的调度策略下,包的矢量特性利用率难以保证。
本申请实施例提供的调度静态图就是相对这种变化而言的静态调度图,其中除源节点外的每个节点在调度静态图里的位置是固定的。下面根据图3-10对本申请实施例提供的调度静态图进行详细讲解。
调度图中,节点包括源节点、公共节点和一般节点。源节点是指传送网络中数据发送的起点;公共节点是指拥有多个邻居节点的节点;除源节点和公共节点以外的其他节点称为一般节点。
为了更好的利用矢量的特性,即不依赖于包的顺序均能保证在处理n个包时使矢量特性最大化(如图14左侧的调度结果),需要对包尽可能多的积攒到同一个节点(或者说同类型的包)。根据这个需求,需要把公共节点前面的节点都放在调度静态图里位于公共节点调度前面的位置,并且要保持原有的调度顺序,公共节点前面的多条并行调度路径调度的前后顺序可以任意。
S102:在所述调度静态图中设置节点位置,以构建数据调度静态图;
在图(如图3)完成创建之后,才能创建这个调度静态图(如图4、图5)。可选地,可以通过手动创建和自动创建的方式实现调度静态图的创建。手动创建是指业务开发人员根据自己的图节点关系,人为设置每个图节点在调度静态图里的位置。手动创建的优点是创建方式较为灵活,可以根据业务开发人员的需求进行设置;缺点是当图节点关系比较复杂时,业务开发人员需要进行的工作量较大。
可选地,可以通过自动创建的方式实现调度静态图的创建。具体地,自动创建的算法使用的数据结构为双向链表(一个正式双向链表f_list和一个缓存双向链表c_list)、指针数组(用于记录节点的地址,下文用node_buf表示)和结构体数组(用于记录每个节点的遍历状态,包含:是否已遍历标记visited,是否已入队f_list标记inserted,该节点在链表f_list中的位置list_pos使用的算法为深度优先搜索算法(Depth-First Search,DFS)。深度优先搜索属于图算法的一种,其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。
自动创建的过程为以下步骤:
步骤a.使用DFS算法对图进行遍历,把对遍历到的每个节点,在f_list中进行搜索(源节点除外),如果没有找到该节点未入队f_list并且未遍历过,则把该节点插入到c_list的尾部,并置位visited表示节点已遍历,如果找到该节点,则把c_list链表(非空链表)插入到未入队f_list中,位置在f_list中的该但是已遍历过(成环节点),则从c_list的尾部开始出队节点,然后把出队节点插入到c_list中当前遍历节点的前面,如果遍历到最后一个节点(该节点没有后续节点接着插入到上一个插入节点的前面,依次类推,直到将要出队的节点就是当前遍历节点或者有多于1个的邻居节点),则把进入步骤b,如果已入队f_list或无邻居节点(该节点插入到c_list的尾部),则进入步骤b;
步骤b.从c_list链表插入到的尾部开始出队节点,如果节点没有邻居节点,则插入f_list链表的尾部,的尾部,如果节点所有的邻居节点都已遍历过,则把该节点插入到在f_list中最前面的邻居节点的前面(如果所有邻居节点都没入队,则插入f_list尾部),节点的其余情况或者c_list为空则返回步骤a;在此过程中,记录下插入的节点在链表f_list中的位置list_pos,并更新链表f_list中后续节点的位置,置位inserted表示节点已入队f_list;
步骤c.在图节点遍历完成后,链表f_list也对应的建立完成;然后从f_list链表头部开始,依次遍历节点,把遍历到的节点(节点地址)记录到node_buf里,并在节点上记录该节点在node_buf里的位置(数组下标,对应bitmap的bit位),完成调度静态图的构建。
请参考图5,为本申请实施例提供的本申请实施例提供的BitMap管理调度示意图。下面进一步对上述步骤进行详细说明,在调用rte_graph_create创建图后(如图6),开始执行以下操作,具体请参见图7-10。
第一轮(请参见图7):
步骤a:使用DFS算法遍历图,从源节点s开始递归遍历,优先遍历源节点s的第一个邻居节点1,插入到c_list的尾部,然后遍历到节点1的邻居节点4,插入到c_list的尾部,4有两个邻居节点6和7,两者的先后顺序是用户在创建节点时指定,因此遍历时有可能先遍历7,也有可能先遍历节点6,假设先遍历7(先遍历节点6的最终结果是一样的),7插入到c_list的尾部,7的邻居节点是4,4还未入队但是已经遍历过,因此把7从c_list出队,并插入4的前面,然后进入步骤b;
步骤b:因为4还有未遍历的邻居节点6,进入步骤a;
步骤a:遍历到6,把6插入到c_list的尾部,6没有邻居节点,进入步骤b;
步骤b:6没有邻居节点,插入f_list尾部,4的所有邻居节点已遍历过,插入到6的前面,7插入到邻居节点4的前面,1插入到邻居节点4的前面,c_list为空,进入步骤a;
第二轮(请参见图8):
步骤a:遍历节点2,把节点2插入到c_list的尾部,同样节点2有两个邻居节点,假设先遍历节点5(先遍历节点4的结果是一样的),把节点5插入到c_list的尾部,遍历节点6,节点6已经入队,进入步骤b;
步骤b:把节点5插入到邻居节点6的前面,节点2的邻居节点4和5都已遍历过,把节点2插入到最前面的邻居节点4的前面,c_list为空,进入步骤a;
第三轮(请参见图9):
步骤a:遍历节点3,把节点3插入到c_list的尾部,遍历节点5,节点5已入队,进入步骤b;
步骤b:节点3的邻居节点5已遍历,插入到邻居节点5的前面,c_list为空,进入步骤a。
三轮过后,f_list链表建立完成,如附图8,最后进入步骤c;
步骤c:从f_list链表头部开始依次创建node_buf和bitmap,完成调度静态图的构建,如图10所示。
在构建成功调度静态图后,可以用以下步骤对调度静态图的构建结果进行检查:
1.图的所有路径中节点的前后顺序在调度静态图中不能变,如路径2->4->6;
2.图的公共节点(有多个父节点的节点)前后的节点顺序在调度静态图中的不能变,如公共节点4前面的节点为1、2,后面的节点为6;
3.不相关节点(指节点间没有数据包的相互传递或者节点间不在同一个路径上,如1、2、3,4和5等)在调度静态图中的前后顺序任意(根据遍历先后顺序决定);
4.对于成环节点,环内分支(如4->7分支)应该在环内分支分叉节点(如节点4)后面的所有非成环分支(如4->6分支)在调度静态图里的前面;
S103:通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。
在基于图架构的转发架构运行起来后,就会进入对图节点的调度阶段,和现有DPDK的调度循环数组不同的是,本申请的调度算法会将要调度的节点存放到固定的位置,即节点对应的数组下标,为了性能考虑,通过BitMap进行调度的管理工作,BitMap的代码实现可以参考linux内核的BitMap。如附图5所示,为本申请实施例提供的BitMap管理调度示意图。在该调度过程中,存放节点时只需将对应的bit位置1,调度完成后只需将对应的bit位置0即可;每次调度时都从BitMap最近的一个1开始调度,即调度该bit位对应的节点。
下面以一个简化的实际应用场景为例,详细说明一下本申请实施例提供的调度静态图的调度过程,如图11所示的数据转发图,源节点rcv负责从网卡收包,ip_rcv节点负责对包做健康检查,ip_rcv_finish节点负责对包做路由查找进行转发,drop节点负责丢包,xmit节点负责往网卡发包;此图创建的调度静态图如图12所述,其中不同的遍历顺序xmit和drop的位置不同,两者是不相关节点,在调度静态图位置不同并不影响处理效果;
假设源节点rcv一次收到了三个包,第一个包在健康检查时被丢弃,第二个包在查询路由时被丢弃,第三个包被xmit发送出去:
a.源节点把收到的三个包依次转移给ip_rcv节点,bit0被置位1,开始进入调度静态图的调度循环;
b.第一个是1的bit位是bit0,调用bit0对应的节点ip_rcv,ip_rcv处理第一个包时健康检查失败,把包转移给drop节点,bit2被置位1,处理第二个和第三个包时通过健康检查,把包依次转移给ip_rcv_finish节点,bit1被置位1,ip_rcv节点处理完所有包后,bit0被置位0,进入下一轮循环;
c.第一个是1的bit位是bit1,调用bit1对应的节点ip_rcv_finish,ip_rcv_finish处理第二个包时查询路由失败,把包转移给drop节点,bit2被置位1,处理第三个包时查询路由成功,把包转移给xmit节点,bit3被置位1,ip_rcv_finish节点处理完所有包后,bit1被置位0,进入下一轮循环;
d.第一个是1的bit位是bit2,调用bit2对应的节点drop,drop丢弃两个包后,把bit2置位0,进入下一轮循环;
e.第一个是1的bit位是bit3,调用bit3对应的节点xmit,xmit把第三个包发送出去后,把bit3置位0,进入下一轮循环;
f.bitmap里没有1的bit位了,结束本次调度静态图的调度循环,回到步骤a;
最终调度过程如附图13,为本申请实施例提供的调度过程对比示意图。可以看到,通过本申请实施例提供的调度静态图,drop节点积攒了两个包,而且drop节点只被调度了一次,而如果用现有的调度策略进行调度,最终调度过程如图11所示,可以看到drop节点没有攒包,而且drop节点被调度了两次,无疑转发性能相对于本发明的调度策略会受到影响。
本申请实施例通过创建调度静态图,把公共节点前面的节点都放在调度静态图里位于公共节点调度前面的位置,并且保持原有的调度顺序,公共节点前面的多条并行调度路径调度的前后顺序可以任意,进而根据调度静态图进行数据调度和发送。本申请实施例提供的基于DPDK的SDN网络数据转发,既可以人工设置调度策略,也可以自动设置调度策略;矢量特性不再依赖于包顺序,各种顺序下均能比较好的发挥矢量的特性,较好的利用了cpu的局部性原理,更进一步提高包的处理和转发性能。
本申请实施例还提供了一种基于DPDK的SDN网络数据转发装置20,基于DPDK的SDN网络数据转发装置20包括:
静态图创建模块201,用于创建调度静态图,调度静态图中包括位置固定的多个节点,多个节点包括源节点、公共节点和一般节点,一般节点位于源节点和公共节点之间;
节点设置模块202,用于在调度静态图中设置节点位置,以构建数据调度静态图;
调度模块203,用于通过BitMap对网络数据进行调度,按照数据调度静态图的策略发送网络数据。
具体地,节点设置模块202包括节点位置确定子模块2021和节点位置输入子模块2022.
节点位置确定子模块2021用于通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在调度静态图里的位置,以构建数据调度静态图;节点位置确定子模块具体用于使用深度优先搜索算法对图进行遍历,把遍历到的每个节点在f_list中进行搜索;在没有找到节点的情况下,将节点插入到c_list的尾部;在找到节点的情况下,将c_list链表插入到f_list中的节点的前面;在遍历到最后一个节点时,将c_list链表插入到f_list链表的尾部,完成f_list链表的建立。
此外,节点位置确定子模块2021还用于从f_list链表头部开始,依次遍历节点,把遍历到的节点地址记录到node_buf里,并在节点上记录节点在node_buf里的位置,以完成数据调度静态图的构建。
节点位置输入子模块2022用于根据用户输入的图节点关系设置每个图节点在调度静态图里的位置。
本申请实施例提供的基于DPDK的SDN网络数据转发装置20能够实现上述基于DPDK的SDN网络数据转发方法实施例中实现的各个过程,为避免重复,这里不再赘述。
本申请实施例提供的基于DPDK的SDN网络数据转发装置,通过设置静态图创建模块201、节点设置模块202和调度模块203,通过创建调度静态图,把公共节点前面的节点都放在调度静态图里位于公共节点调度前面的位置,并且保持原有的调度顺序,公共节点前面的多条并行调度路径调度的前后顺序可以任意,进而根据调度静态图进行数据调度和发送。本申请实施例提供的基于DPDK的SDN网络数据转发装置使包的矢量特性不依赖于包的顺序,比较好的利用了cpu的局部性原理,进一步提高了包的处理和转发性能。
本发明可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
注意,除非另有直接说明,否则本说明书(包含任何所附权利要求、摘要和附图)中所揭示的所有特征皆可由用于达到相同、等效或类似目的的可替代特征来替换。因此,除非另有明确说明,否则所申请的每一个特征仅是一组等效或类似特征的一个示例。在使用到的情况下,进一步地、较优地、更进一步地和更优地是在前述实施例基础上进行另一实施例阐述的简单起头,该进一步地、较优地、更进一步地或更优地后带的内容与前述实施例的结合作为另一实施例的完整构成。在同一实施例后带的若干个进一步地、较优地、更进一步地或更优地设置之间可任意组合的组成又一实施例。
本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明。本发明的目的已经完整并有效地实现。本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种基于DPDK的SDN网络数据转发方法,其特征在于,所述方法包括:
创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;
在所述调度静态图中设置节点位置,以构建数据调度静态图;
通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。
2.根据权利要求1所述的基于DPDK的SDN网络数据转发方法,其特征在于,所述在所述调度静态图中设置节点位置,以构建数据调度静态图包括:
通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置,以构建所述数据调度静态图。
3.根据权利要求2所述的基于DPDK的SDN网络数据转发方法,其特征在于,所述通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置具体为:
使用深度优先搜索算法对图进行遍历,把遍历到的每个节点在f_list中进行搜索;
在没有找到所述节点的情况下,将所述节点插入到c_list的尾部;
在找到所述节点的情况下,将c_list链表插入到f_list中的所述节点的前面;
在遍历到最后一个所述节点时,将c_list链表插入到f_list链表的尾部,完成f_list链表的建立。
4.根据权利要求3所述的基于DPDK的SDN网络数据转发方法,其特征在于,在所述完成f_list链表的建立之后,所述方法还包括:
从所述f_list链表头部开始,依次遍历节点,把遍历到的节点地址记录到node_buf里,并在节点上记录所述节点在node_buf里的位置,以完成所述数据调度静态图的构建。
5.根据权利要求1所述的基于DPDK的SDN网络数据转发方法,其特征在于,所述在所述调度静态图中设置节点位置,以构建数据调度静态图包括:
根据用户输入的图节点关系设置每个图节点在调度静态图里的位置。
6.一种基于DPDK的SDN网络数据转发装置,其特征在于,所述装置包括:
静态图创建模块,用于创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;
节点设置模块,用于在所述调度静态图中设置节点位置,以构建数据调度静态图;
调度模块,用于通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。
7.根据权利要求6所述的基于DPDK的SDN网络数据转发装置,其特征在于,所述节点设置模块包括:
节点位置确定子模块,用于通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置,以构建所述数据调度静态图。
8.根据权利要求7所述的基于DPDK的SDN网络数据转发装置,其特征在于,所述节点位置确定子模块具体用于:
使用深度优先搜索算法对图进行遍历,把遍历到的每个节点在f_list中进行搜索;
在没有找到所述节点的情况下,将所述节点插入到c_list的尾部;
在找到所述节点的情况下,将c_list链表插入到f_list中的所述节点的前面;
在遍历到最后一个所述节点时,将c_list链表插入到f_list链表的尾部,完成f_list链表的建立。
9.根据权利要求8所述的基于DPDK的SDN网络数据转发装置,其特征在于,所述节点位置确定子模块还用于:
从所述f_list链表头部开始,依次遍历节点,把遍历到的节点地址记录到node_buf里,并在节点上记录所述节点在node_buf里的位置,以完成所述数据调度静态图的构建。
10.根据权利要求6所述的基于DPDK的SDN网络数据转发装置,其特征在于,所述节点设置模块还包括:
节点位置输入子模块,用于根据用户输入的图节点关系设置每个图节点在调度静态图里的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211564037.8A CN116319628A (zh) | 2022-12-07 | 2022-12-07 | 一种基于dpdk的sdn网络数据转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211564037.8A CN116319628A (zh) | 2022-12-07 | 2022-12-07 | 一种基于dpdk的sdn网络数据转发方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116319628A true CN116319628A (zh) | 2023-06-23 |
Family
ID=86817404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211564037.8A Pending CN116319628A (zh) | 2022-12-07 | 2022-12-07 | 一种基于dpdk的sdn网络数据转发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116319628A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118540322A (zh) * | 2024-07-29 | 2024-08-23 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 基于全用户态quic协议的多模式文件传输方法 |
-
2022
- 2022-12-07 CN CN202211564037.8A patent/CN116319628A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118540322A (zh) * | 2024-07-29 | 2024-08-23 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 基于全用户态quic协议的多模式文件传输方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10261806B2 (en) | Adaptive hardware configuration for data analytics | |
US11016673B2 (en) | Optimizing serverless computing using a distributed computing framework | |
CN112003787A (zh) | 一种路由路径确定方法、装置、控制设备和存储介质 | |
US11398981B2 (en) | Path creation method and device for network on chip and electronic apparatus | |
US10983828B2 (en) | Method, apparatus and computer program product for scheduling dedicated processing resources | |
CN110226159B (zh) | 在网络交换机上执行数据库功能的方法 | |
CN112333099B (zh) | 一种本地多路径报文的选路方法、装置和存储介质 | |
EP3338416A1 (en) | Reducing flooding of link state changes in networks | |
WO2018133781A1 (en) | Database functions-defined network switch and database system | |
US20180287904A1 (en) | Device, method and system to enforce concurrency limits of a target node within a network fabric | |
CN116319628A (zh) | 一种基于dpdk的sdn网络数据转发方法及装置 | |
KR102153814B1 (ko) | 로드 균형을 위한 확률 기반 적응형 라우팅 알고리즘 | |
US20160147854A1 (en) | Data transfer between multiple databases | |
CN110019093A (zh) | 数据写入方法、装置、设备及介质 | |
US9880923B2 (en) | Model checking device for distributed environment model, model checking method for distributed environment model, and medium | |
US11740827B2 (en) | Method, electronic device, and computer program product for recovering data | |
CN117311975A (zh) | 大模型并行训练方法、系统及可读存储介质 | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
CN114884893B (zh) | 一种转发和控制可定义的协同流量调度方法与系统 | |
WO2018153332A1 (en) | Packet classification using multi-dimensional splitting | |
US11164348B1 (en) | Systems and methods for general-purpose temporal graph computing | |
CN103488530B (zh) | 一种锁迁移方法及装置 | |
CN112711545A (zh) | 一种基于数组链表式队列结构的数据存取方法 | |
US20150100676A1 (en) | Storage medium, method for data processing, and processing management apparatus | |
WO2021063503A1 (en) | Method for enabling efficient evaluation of transactions in a distributed ledger network |
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 |