基于DPDK的网络协议的连接方法及系统技术方案

技术编号:17117467 阅读:22 留言:0更新日期:2018-01-25 00:21
本公开提供了一种基于DPDK的网络协议的连接方法,包括:步骤A,调用DPDK开发环境中的接口,为数据包的转发设置数据处理环境;步骤B,设置端口、逻辑核和队列的关联方式,获取物理网卡的MAC地址,使其相互关联;步骤C,初始化接收队列、发送队列和转发函数对数据进行处理,响应网络协议连接。通过DPDK实现网络通信,可以供网络运营商和ICP优化网关程序,以优化用户体验,并提高了转发效率。

The connection method and system of network protocol based on DPDK

【技术实现步骤摘要】
基于DPDK的网络协议的连接方法及系统
本公开涉及通信网络
,尤其涉及一种基于数据平面开发套件(DataPlaneDevelopmentKit,简称DPDK)的网络协议连接方法及系统。
技术介绍
计算机网络在过去的十几年中经历了爆炸式的增长,随着互联网的迅猛发展,技术不断更新,计算机的性能也在突破一个又一个目标。但是,随着越来越多的用户使用网络中的资源,网络带宽不断增加,计算机技术仍然不能满足日益增长的用户需求,网络拥塞问题逐渐显露。DPDK是一系列快速数据包处理的函数库与驱动的集合,它可以极大的提高数据处理性能和吞吐量,从而提高数据平面应用程序的工作效率。考虑到基于DPDK的使用,普通的网络协议基于Linux系统,而DPDK是绕过Linux内核直接与硬件进行交涉,因此普通的网络协议不能在DPDK环境下进行使用,基于DPDK的网络通信需要新的方法。公开内容(一)要解决的技术问题本公开提供了一种基于DPDK的网络协议的连接方法及系统,以至少部分解决以上所提出的技术问题。(二)技术方案根据本公开的一个方面,提供了一种基于DPDK的网络协议的连接方法,包括:步骤A,调用DPDK开发环境中的接口,为数据包的转发设置数据处理环境;步骤B,设置端口、逻辑核和队列的关联方式,获取物理网卡的MAC地址,使其相互关联;步骤C,初始化接收队列、发送队列和转发函数对数据进行处理,响应网络协议连接。在本公开一些实施例中,所述步骤A进一步包括:子步骤A1,对环境抽象层进行初始化,运行环境抽象层初始化函数,环境抽象层初始化函数本身所完成的工作是复杂的,其读取入口参数,解析并保存作为DPDK运行的系统信息,根据所述系统信息,构建一个针对包处理设计的运行环境;子步骤A2,对参数进行传递,运行参数传递函数,环境抽象层EAL的参数传递已经在所述子步骤A1中的环境抽象层初始化函数中完成,参数传递函数传递运行初始化DOS命令中环境搭建所需的参数,传递参数之后,得到三个变量:可用端口位掩码l2fwd_enabled_port_mask,每个逻辑核的接收队列数量l2fwd_rx_queue_per_lcore,打印统计数据的时间间隔timer_period;子步骤A3,创建内存池l2fwd_pktmbuf_pool_create,通过类似内存池机制,实现多线程下的缓存分配策略。在本公开一些实施例中,所述步骤B进一步包括:子步骤B1,遍历端口号,跳过未开启的端口号,并设置每个端口的对应端口,使得每两个相邻的端口为一对,相互转发;子步骤B2,跳过未开启的端口,获取端口号对应的逻辑核ID,将收发队列与端口通过队列号和端口逻辑核ID联系起来,实现逻辑核上端口和队列的配置,在每个端口上给分配的逻辑核指定一个发送队列;子步骤B3,获取每个端口的MAC地址,运行获取地址函数,用于进行源地址替换。在本公开一些实施例中,所述步骤C进一步包括:子步骤C1,从发包端口的对应的收包端口接收数据包;子步骤C2,从发包端口发送数据包;子步骤C3,将数据包进行转发。在本公开一些实施例中,通过调用DPDK的接收函数获取链路层数据,对数据按要求进行处理,并进行转发。在本公开一些实施例中,数据包从一个端口接收,另一个端口转发,直接将链路层数据通过MAC地址转发。根据本公开的另一个方面,提供一种基于DPDK的网络协议的连接系统,包括:DPDK运行环境生成系统,用于初始化环境抽象层EAL,设置参数分析函数,加载三层路由转发表和MAC地址表;核心分发系统,用于关联端口、逻辑核、接收队列和发送队列,使其成为一个可运作的DPDK转发网关系统。在本公开一些实施例中,所述的连接系统还包括:转发运行系统,用于开启和关闭DPDK转发网关系统,在系统开启时进行数据处理并响应网络协议。在本公开一些实施例中,所述环境生成系统进一步包括:环境抽象层初始化模块,运行环境抽象层初始化函数,环境抽象层初始化函数读取入口参数,解析并保存作为DPDK运行的系统信息,根据所述系统信息,构建一个针对包处理设计的运行环境;参数传递模块,运行参数传递函数,EAL参数传递已经在环境抽象层初始化函数中完成,所述参数传递模块传递运行初始化DOS命令中环境搭建所需的参数;缓存分配策略模块,初始化实现多线程下的缓存分配策略;路由转发表加载模块,加载三层路由转发表,设置转发的查找方法,支持精确匹配和最长前缀匹配;地址获取模块,获取网卡的MAC地址,从而确定源地址和目的地址,确定数据传输方向和位置。在本公开一些实施例中,所述核心分发系统进一步包括:初始化模块,初始化所有端口、收发队列的状态和配置;关联模块,跳过不可用的端口,将收发队列与端口通过队列号和端口ID联系起来,形成一个相关联的整体;源地址替换模块,读取端口配置,获取各端口的MAC地址,并进行源地址替换。在本公开一些实施例中,通过所述核心分发系统关联端口、逻辑核、接收队列和发送队列后,形成的DPDK转发网关系统包括:接收网卡模块,具有与发包端口对应关联的收包端口,用于在收包端口对数据包进行接收;接收线程模块,用于对从接收网卡接收的数据包进行接收,解释和标识;服务质量调度器,对接收线程传输的数据包进行分类和入队,并基于所述分类对接收队列进行调度并出队,形成发送队列;发送线程模块,用于发送所述服务质量调度器的传输的发送序队列;发送网卡模块,具有与收包端口对应关联的发包端口,用于在收包端口对数据包进行发送。(三)有益效果从上述技术方案可以看出,本公开基于DPDK的网络协议的连接方法及系统至少具有以下有益效果其中之一:(1)通过DPDK实现网络通信,可以供网络运营商和ICP优化网关程序,以优化用户体验;(2)由于基于DPDK的网络协议连接方法是基于二层转发,通过调用DPDK的接收函数获取链路层数据,绕过Linux内核直接与硬件进行交涉,对数据按要求进行处理,提升了转发速率;(3)由于基于DPDK的网络协议连接方法中数据包是从一个端口接收,另一个端口转发,直接将链路层数据通过MAC地址转发,因此不需要获取报文的源IP和目的IP。附图说明图1为本公开实施例基于DPDK的网络协议的连接方法流程图。图2为本公开实施例DPDK转发网关系统结构示意图。具体实施方式为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。本公开某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本公开的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本公开满足适用的法律要求。在本公开的第一个示例性实施例中,提供了一种基于DPDK的网络协议的连接方法。图1为本公开第一实施例基于DPDK的网络协议的连接方法流程图。如图1所示,本公开基于DPDK的网络协议的连接方法包括:步骤A,调用DPDK开发环境中的接口,为数据包的转发设置数据处理环境;所述步骤A进一步包括:子步骤A1,对环境抽象层进行初始化,运行环境抽象层初始化函数rte_eal_init(argc,argv),环境抽象层初始化函数本身所完成的工作是复杂的,其读取入口参数,解析并保存作为DPDK运行的系统信息,根据本文档来自技高网...
基于DPDK的网络协议的连接方法及系统

【技术保护点】
一种基于DPDK的网络协议的连接方法,包括:步骤A,调用DPDK开发环境中的接口,为数据包的转发设置数据处理环境;步骤B,设置端口、逻辑核和队列的关联方式,获取物理网卡的MAC地址,使其相互关联;步骤C,初始化接收队列、发送队列和转发函数对数据进行处理,响应网络协议连接。

【技术特征摘要】
2017.08.10 CN 201710680137X1.一种基于DPDK的网络协议的连接方法,包括:步骤A,调用DPDK开发环境中的接口,为数据包的转发设置数据处理环境;步骤B,设置端口、逻辑核和队列的关联方式,获取物理网卡的MAC地址,使其相互关联;步骤C,初始化接收队列、发送队列和转发函数对数据进行处理,响应网络协议连接。2.根据权利要求1所述的连接方法,其中,所述步骤A进一步包括:子步骤A1,对环境抽象层进行初始化,运行环境抽象层初始化函数,环境抽象层初始化函数读取入口参数,解析并保存作为DPDK运行的系统信息,根据所述系统信息,构建一个针对包处理设计的运行环境;子步骤A2,对参数进行传递,运行参数传递函数,环境抽象层EAL的参数传递已经在所述子步骤A1中的环境抽象层初始化函数中完成,参数传递函数传递运行初始化DOS命令中环境搭建所需的参数,传递参数之后,得到三个变量:可用端口位掩码l2fwd_enabled_port_mask,每个逻辑核的接收队列数量l2fwd_rx_queue_per_lcore,打印统计数据的时间间隔timer_period;子步骤A3,创建内存池l2fwd_pktmbuf_pool_create,通过类似内存池机制,实现多线程下的缓存分配策略。3.根据权利要求2所述的连接方法,其中,所述步骤B进一步包括:子步骤B1,遍历端口号,跳过未开启的端口号,并设置每个端口的对应端口,使得每两个相邻的端口为一对,相互转发;子步骤B2,跳过未开启的端口,获取端口号对应的逻辑核ID,将收发队列与端口通过队列号和端口逻辑核ID联系起来,实现逻辑核上端口和队列的配置,在每个端口上给分配的逻辑核指定一个发送队列;子步骤B3,获取每个端口的MAC地址,运行获取地址函数,用于进行源地址替换。4.根据权利要求3所述的连接方法,其中,所述步骤C进一步包括:子步骤C1,从发包端口的对应的收包端口接收数据包;子步骤C2,从发包端口发送数据包;子步骤C3,将数据包进行转发。5.根据权利要求4所述的连接方法,通过调用DPDK的接收函数获取链路层数据,对数据按要求进行处理,并进行转发。6.根据权利要求5...

【专利技术属性】
技术研发人员:黄友俊李星吴建平韦翠娣
申请(专利权)人:赛尔网络有限公司
类型:发明
国别省市:北京,11

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

1