一种基于DPDK的SDN网络数据转发方法及装置制造方法及图纸

技术编号:38020141 阅读:8 留言:0更新日期:2023-06-30 10:47
本申请提供一种基于DPDK的SDN网络数据转发方法和装置,属于网络通信技术领域。该方法包括创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;在所述调度静态图中设置节点位置,以构建数据调度静态图;通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。本申请提供的方法能够提高数据的处理和转发性能。方法能够提高数据的处理和转发性能。方法能够提高数据的处理和转发性能。

【技术实现步骤摘要】
一种基于DPDK的SDN网络数据转发方法及装置


[0001]本申请涉及网络通信技术,尤其涉及一种基于DPDK的SDN网络数据转发方法及装置。

技术介绍

[0002]数据平面开发套件(Data Plane Development Kit,DPDK)是一种基于Linux系统运行的套件,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
[0003]相关技术中开源数据平面开发套件DPDK已被各大互联网厂商使用,云公司在数据转发面也是基于DPDK进行的二次开发,其中DPDK提供的图架构是云公司作为数据转发面的基础架构,该架构主要是提供了矢量的特性,很好的利用了cpu的局部性原理,在DPDK的基础上进一步提高了数据转发的性能,但是其调度算法仍然存在一定的缺陷,导致矢量特性没有被更好地利用,即cpu局部性原理没有发挥到最大程度。
[0004]现有的DPDK调度策略比较简单,从源节点开始调度,根据每个包的处理结果调度对应的节点进行处理,所以下一个调度的节点就很依赖包的顺序。然而在实际应用场景中,由于业务复杂,包的种类繁多并且顺序不可控,因此现有的调度策略下,数据包的矢量特性利用率难以保证。

技术实现思路

[0005]本申请实施例提供一种基于DPDK的SDN网络数据转发方法,能够实现不依赖于包的顺序保证在处理多个包时使矢量特性最大化,以解决在现有的调度策略下数据包的矢量特性利用率难以保证的问题。
[0006]本申请实施例的第一方面,提供一种基于DPDK的SDN网络数据转发方法,方法包括:
[0007]创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;
[0008]在所述调度静态图中设置节点位置,以构建数据调度静态图;
[0009]通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。
[0010]可选地,上述在所述调度静态图中设置节点位置,以构建数据调度静态图包括:
[0011]通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置,以构建所述数据调度静态图。
[0012]可选地,上述通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置具体为:
[0013]使用深度优先搜索算法对图进行遍历,把遍历到的每个节点在f_list中进行搜索;
[0014]在没有找到所述节点的情况下,将所述节点插入到c_list的尾部;
[0015]在找到所述节点的情况下,将c_list链表插入到f_list中的所述节点的前面;
[0016]在遍历到最后一个所述节点时,将c_list链表插入到f_list链表的尾部,完成f_list链表的建立。
[0017]可选地,在上述完成f_list链表的建立之后,方法还包括:
[0018]从所述f_list链表头部开始,依次遍历节点,把遍历到的节点地址记录到node_buf里,并在节点上记录所述节点在node_buf里的位置,以完成所述数据调度静态图的构建。
[0019]可选地,上述在所述调度静态图中设置节点位置,以构建数据调度静态图包括:
[0020]根据用户输入的图节点关系设置每个图节点在调度静态图里的位置。
[0021]本申请实施例的第二方面,提供一种基于DPDK的SDN网络数据转发装置,包括:
[0022]静态图创建模块,用于创建调度静态图,所述调度静态图中包括位置固定的多个节点,所述多个节点包括源节点、公共节点和一般节点,所述一般节点位于所述源节点和所述公共节点之间;
[0023]节点设置模块,用于在所述调度静态图中设置节点位置,以构建数据调度静态图;
[0024]调度模块,用于通过BitMap对网络数据进行调度,按照所述数据调度静态图的策略发送所述网络数据。
[0025]根据权利要求6提供的基于DPDK的SDN网络数据转发装置,其特征在于,所述节点设置模块包括:
[0026]节点位置确定子模块,用于通过双向链表和指针数组,使用深度优先搜索算法确定每个节点在所述调度静态图里的位置,以构建所述数据调度静态图。
[0027]可选地,上述节点位置确定子模块具体用于:
[0028]使用深度优先搜索算法对图进行遍历,把遍历到的每个节点在f_list中进行搜索;
[0029]在没有找到所述节点的情况下,将所述节点插入到c_list的尾部;
[0030]在找到所述节点的情况下,将c_list链表插入到f_list中的所述节点的前面;
[0031]在遍历到最后一个所述节点时,将c_list链表插入到f_list链表的尾部,完成f_list链表的建立。
[0032]可选地,上述节点位置确定子模块还用于:
[0033]从所述f_list链表头部开始,依次遍历节点,把遍历到的节点地址记录到node_buf里,并在节点上记录所述节点在node_buf里的位置,以完成所述数据调度静态图的构建。
[0034]可选地,上述节点设置模块还包括:
[0035]节点位置输入子模块,用于根据用户输入的图节点关系设置每个图节点在调度静态图里的位置。
[0036]本申请实施例通过创建调度静态图,把公共节点前面的节点都放在调度静态图里位于公共节点调度前面的位置,并且保持原有的调度顺序,公共节点前面的多条并行调度路径调度的前后顺序可以任意,进而根据调度静态图进行数据调度和发送。本申请针对当前DPDK图架构的调度算法对矢量利用的不足进行了改进,使图架构能够更好的对数据包进
行积攒,更好地利用cpu的局部性原理,进一步提高数据的处理和转发性能。
附图说明
[0037]图1为本申请实施例提供的一种基于DPDK的SDN网络数据转发方法方法的流程示意图;
[0038]图2为本申请实施例提供的一种基于DPDK的SDN网络数据转发装置的结构示意图;
[0039]图3为现有调度技术调度结果对应的图结构示意图;
[0040]图4为本申请实施例提供的调度静态图示例图;
[0041]图5为本申请实施例提供的BitMap管理调度示意图;
[0042]图6为本申请实施例提供的创建调度静态图示例图结构;
[0043]图7为本申请实施例提供的创建调度静态图示例

第一轮;
[0044]图8为本申请实施例提供的创建调度静态图示例

第二轮;
[0045]图9为本申请实施例提供的创建调度静态图示例

第三轮;
[0046]图10为本申请实施例提供的创建调度静态图示例;
[0047]图11为本申请实施例提供的数据转发图结构示意图;
[0048]图12为本申本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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网络数据转发方法,其特征在于,所述在所述调度静态图中设置节点位置,以构建数据调度静态图包括:根据用户输入的图节点关系设置每个图节点在调度...

【专利技术属性】
技术研发人员:蔡慧超兰培挺姜少华唐荣生
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1