CN116170404B - 一种基于dpdk的数据转发方法及装置 - Google Patents

一种基于dpdk的数据转发方法及装置 Download PDF

Info

Publication number
CN116170404B
CN116170404B CN202310129011.9A CN202310129011A CN116170404B CN 116170404 B CN116170404 B CN 116170404B CN 202310129011 A CN202310129011 A CN 202310129011A CN 116170404 B CN116170404 B CN 116170404B
Authority
CN
China
Prior art keywords
message
address
port
data
destination
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.)
Active
Application number
CN202310129011.9A
Other languages
English (en)
Other versions
CN116170404A (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.)
Tongming Zhiyun Beijing Technology Co ltd
Original Assignee
Tongming Zhiyun Beijing 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 Tongming Zhiyun Beijing Technology Co ltd filed Critical Tongming Zhiyun Beijing Technology Co ltd
Priority to CN202310129011.9A priority Critical patent/CN116170404B/zh
Publication of CN116170404A publication Critical patent/CN116170404A/zh
Application granted granted Critical
Publication of CN116170404B publication Critical patent/CN116170404B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Abstract

本发明公开了一种基于DPDK的数据转发方法及装置,该方法包括:定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表;DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果;根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发,实现了基于DPDK数据收发引擎,越过系统内核对数据转发的连接的高效维护,提升了负载均衡和网络设备数据转发性能和吞吐性能。

Description

一种基于DPDK的数据转发方法及装置
技术领域
本申请涉及数据库技术领域,更具体地,涉及一种基于DPDK的数据转发方法及装置。
背景技术
传统的数据转发引擎无法越过系统内核,数据经过网卡、内核态再传送到用户态,性能大幅下降。通过DPDK可以很有效的解决这个技术问题,将数据从网卡直接传送给用户态程序,避免访问内核产生的系统调用的开销。
在实际应用中,DPDK在Linux的用户态执行,系统利用Poolmode驱动,网络接口将数据包直接转由DPDK进行处理,而非经过传统的Kernel协议栈用户态空间,极大提升包转发效率。DPDK支持操作系统的用户空间环境,内存管理器负责分配内存中的对象池,并使用环网创立内存池来储存自由对象。DPDK缓存区管理器处理储存在内存池中预分配固定大小的缓存区。缓存区管理器极大地缩短了操作系统分配和解除分配缓存区的时间。DPDK队列管理器实施无锁队列而不是自旋锁,允许不同的软件组件处理数据包,同时可以避免不必要的等候时间。DPDK流分类使用Intel单指令多数据流式扩展(IntelSSE)实施基于散列技术的流分类以快速将数据包放入流中进行处理,这是一种可极大提高吞吐量的有效机制。Intel网络控制芯片支持轮询模式驱动,在不采用基于中断的异步信号机制下运行,极大地提高了报文转发的性能。
虽然DPDK在实际应用中,解决数据经过网卡、内核态再传送到用户态,性能大幅下降的技术问题,并具有上述诸多优势,但是目前基于DPDK实现的数据转发引擎,仍无法高效的维护转发连接,导致数据转发出现异常,负载均衡和网络设备数据转发性能低和吞吐低等技术问题。
基于此,有必要引入一种新的方法及装置,基于DPDK数据转发引擎,将数据越过系统内核,经过网卡直接传送到用户态程序,解决现有技术中的DPDK数据转发引擎无法高效的维护转发连接导致数据转发异常、数据转发性能低和吞吐低的技术问题,实现高效地维护数据转发的连接,提升负载均衡和网络设备数据转发性能和吞吐性能。
发明内容
针对上面提到的技术问题,本发明提供了一种基于DPDK的数据转发方法及装置,基于DPDK数据收发引擎,通过对连接表和路由表的维护,将报文头部信息与路由表、连接表进行匹配,得到直接的报文转发路径,并使用该报文转发路径对报文数据进行转发,实现了基于DPDK数据转发引擎,数据越过系统内核,经过网卡即可直接传送到用户态程序,解决了现有技术中的DPDK数据转发引擎无法高效的维护转发连接导致数据转发异常、数据转发性能低和吞吐低的技术问题,完成了对数据转发的连接的高效维护,提升了负载均衡和网络设备数据转发性能和吞吐性能。
本发明提供了一种基于DPDK的数据转发方法,所述方法包括:
S101,定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表;
S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果;
S103,根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发。
如上所述,所述连接表的数据结构包括5个字段,分别为源IP地址src-ip、源端口src-port、目的IP地址dst-ip、目的端口dst-port和协议号protocol;
所述路由表的数据结构包括7个字段,分别为优先级、本地地址、广播地址、策略路由、静态路由、直连路由和动态路由;
所述报文包括所述报文头部信息、辅助控制信息、数据和结束标志,其中,所述报文头部信息包括5个字段,分别为源IP地址src-ip、源端口src-port、目的IP地址dst-ip、目的端口dst-port和协议号protocol。
如上所述,所述S101,定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表的步骤,具体为:
定义所述连接表的数据结构和所述路由表的数据结构;
根据所述连接表的数据结构,初始化并生成所述连接表;
根据所述路由表的数据结构,获取本地路由列表中的路由信息,包括所述本地地址、所述优先级、所述广播地址、所述策略路由、所述静态路由、所述直连路由和所述动态路由,并根据所述路由信息初始化并生成所述路由表;
其中,
所述连接表用于指定所述报文的转发路径,并在转发所述报文时,根据所述转发路径直接将所述报文转发至用户程序。
如上所述,所述S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果的步骤包括:
对所述DPDK数据收发引擎的数据接入接口、数据转发接口和数据收发队列进行初始化配置;
通过所述数据接入接口从系统外部或系统内部获取所述报文,并缓存到所述数据收发队列中。
值得说明的是,在一些具体实施例中,从系统外部或系统内部获取所述报文,其中,所述系统外部如网卡,系统内部如Linux协议栈,除了网卡和Linux协议栈,从其它系统外部或系统内部的方式获取所述报文也属于本发明的保护范围之内。
如上所述,所述S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果的步骤还包括:
基于所述DPDK数据收发引擎对所述报文的头部进行解析得到所述报文对应的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol,并生成所述报文对应的报文头部信息;
1)当所述报文是从所述系统内部接收时,
将所述报文对应的报文头部信息与所述路由表中的所述本地地址和所述广播地址进行匹配;
如果存在匹配项,则所述匹配结果为“匹配”;
如果不存在匹配项,则对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理;
2)当所述报文是从所述系统外部接收时,则对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理。
如上所述,所述对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理的步骤为:
将所述报文对应的报文头部信息与所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol进行逐一比较:
若所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol存在与所述报文对应的报文头部信息完全一致的行数据,则所述匹配结果为“匹配”;
若所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol不存在与所述报文对应的报文头部信息完全一致的行数据,则所述匹配结果为“不匹配”。
如上所述,所述S103,根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发的步骤包括:
当所述匹配结果为“匹配”时,根据所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol,确定所述报文的转发路径,并从所述DPDK数据收发引擎的数据收发队列中获取所述报文,使用所述报文的转发路径通过所述数据转发接口将所述报文转发至用户程序;
当所述匹配结果为“不匹配”时,基于所述报文对应的报文头部信息进行地址转换处理,生成新的转发路径,并从所述DPDK数据收发引擎的数据收发队列中获取所述报文,使用所述新的转发路径通过所述数据转发接口将所述报文转发至用户程序。
如上所述,所述基于所述报文对应的报文头部信息进行地址转换处理,生成新的转发路径的步骤包括:
从所述路由表中的所述本地地址中确定目的转换地址,并将所述目的IP地址dst-ip更新为所述目的转换地址;
根据所述目的转换地址,以及所述优先级、所述策略路由、所述静态路由、所述直连路由和所述动态路由,确定目的转换路由;
根据所述目的转换路由,从所述本地地址中确定源IP转换地址,并将所述源IP地址src-ip更新为源IP转换地址;
根据更新后的所述目的IP地址dst-ip、所述源IP地址src-ip,以及所述目的转换路由对应的所述源端口src-port、所述目的端口dst-port和所述协议号protocol,创建并生成所述新的转发路径,并将所述新的转发路径更新至所述连接表中。
相应的,本发明还提供了一种基于DPDK的数据转发装置,所述装置包括初始化单元、匹配单元和转发单元;
其中,
所述初始化单元,用于定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表;
所述匹配单元,用于从网卡或协议栈接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果;
所述转发单元,用于根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发。
本发明通过应用以上技术方案,实现了基于DPDK数据收发引擎,通过对连接表和路由表的维护,将报文头部信息与路由表、连接表进行匹配,得到直接的报文转发路径,并使用该报文转发路径对报文数据进行转发,同时基于DPDK数据转发引擎,数据越过系统内核,经过网卡即可直接传送到用户态程序,解决了现有技术中的DPDK数据转发引擎无法高效的维护转发连接导致数据转发异常、数据转发性能低和吞吐低的技术问题,完成了对数据转发的连接的高效维护,提升了负载均衡和网络设备数据转发性能和吞吐性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提出的一种基于DPDK的数据转发方法的流程示意图;
图2示出了本发明实施例提出的一种基于DPDK的数据转发装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明提供了一种基于DPDK的数据转发方法,如图1所示,所述方法包括以下步骤:
S101,定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表。
本实施例中,所述连接表的数据结构包括5个字段,分别为源IP地址src-ip、源端口src-port、目的IP地址dst-ip、目的端口dst-port和协议号protocol;
所述路由表的数据结构包括7个字段,分别为优先级、本地地址、广播地址、策略路由、静态路由、直连路由和动态路由;
所述报文包括所述报文头部信息、辅助控制信息、数据和结束标志,其中,所述报文头部信息包括5个字段,分别为源IP地址src-ip、源端口src-port、目的IP地址dst-ip、目的端口dst-port和协议号protocol。
本实施例中,所述S101,定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表的步骤,具体为:
定义所述连接表的数据结构和所述路由表的数据结构;
根据所述连接表的数据结构,初始化并生成所述连接表;
根据所述路由表的数据结构,获取本地路由列表中的路由信息,包括所述本地地址、所述优先级、所述广播地址、所述策略路由、所述静态路由、所述直连路由和所述动态路由,并根据所述路由信息初始化并生成所述路由表;
其中,
所述连接表用于指定所述报文的转发路径,并在转发所述报文时,根据所述转发路径直接将所述报文转发至用户程序。
S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果。
本实施例中,所述S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果的步骤包括:
对所述DPDK数据收发引擎的数据接入接口、数据转发接口和数据收发队列进行初始化配置;
通过所述数据接入接口从系统外部或系统内部获取所述报文,并缓存到所述数据收发队列中。
值得说明的是,所述DPDK数据收发引擎是数据平面开发平台(英文简称DPDK,英文全称DataPlaneDevelopmentKit)中用于数据获取和转发的数据收发引擎。基于数据平面开发平台和所述DPDK数据收发引擎,通过UIO技术将报文拷贝到应用空间处理,规避不必要的内存拷贝和系统调用,便于快速迭代优化。通过大页内存HUGEPAGE,降低cachemiss(访存开销),利用内存多通道交错访问提高内存访问有效带宽,即提高命中率,进而提高cpu访问速度。通过CPU亲和性,绑定网卡和线程到固定的core,减少cpu任务切换。特定任务可以被指定只在某个核上工作,避免线程在不同核间频繁切换,保证更多的cache命中。通过无锁队列,减少资源竞争。cache行对齐,预取数据,多元数据批量操作。环队列:RingQueue,针对单个或多个数据包生产者、单个数据包消费者的出入队列提供无锁机制,有效减少系统开销。通过轮询可在包处理时避免中断上下文切换的开销。PMD:PoolMode Driver,轮询模式驱动,通过非中断,以及数据帧进出应用缓冲区内存的零拷贝机制,提高发送/接受数据帧的效率。EAL:EnvironmentAbstractLayer,环境抽象(适配)层,PMD初始化、CPU内核和DPDK线程配置/绑定、设置HugePage大页内存等系统初始化。会话连接表机制,可以有效的保证数据转发的准确性,可以根据客户的需求提供足够数量的在线连接。从而实现了基于DPDK数据转发引擎,数据越过系统内核,经过网卡即可直接传送到用户态程序,完成对数据转发的连接的高效维护,提升负载均衡和网络设备数据转发性能和吞吐性能。
为了对系统内部和系统外部的报文分别实现高效和精准的转发,在一些实施例中,所述S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果的步骤还包括:
基于所述DPDK数据收发引擎对所述报文的头部进行解析得到所述报文对应的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol,并生成所述报文对应的报文头部信息;
1)当所述报文是从所述系统内部接收时,
将所述报文对应的报文头部信息与所述路由表中的所述本地地址和所述广播地址进行匹配;
如果存在匹配项,则所述匹配结果为“匹配”;
如果不存在匹配项,则对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理;
2)当所述报文是从所述系统外部接收时,则对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理。
本实施例中,所述对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理的步骤为:
将所述报文对应的报文头部信息与所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol进行逐一比较:
若所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol存在与所述报文对应的报文头部信息完全一致的行数据,则所述匹配结果为“匹配”;
若所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol不存在与所述报文对应的报文头部信息完全一致的行数据,则所述匹配结果为“不匹配”。
S103,根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发。
本实施例中,所述S103,根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发的步骤包括:
当所述匹配结果为“匹配”时,根据所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol,确定所述报文的转发路径,并从所述DPDK数据收发引擎的数据收发队列中获取所述报文,使用所述报文的转发路径通过所述数据转发接口将所述报文转发至用户程序;
当所述匹配结果为“不匹配”时,基于所述报文对应的报文头部信息进行地址转换处理,生成新的转发路径,并从所述DPDK数据收发引擎的数据收发队列中获取所述报文,使用所述新的转发路径通过所述数据转发接口将所述报文转发至用户程序。
为了准确地按需获取报文的转发路径,在一些实施例中,所述基于所述报文对应的报文头部信息进行地址转换处理,生成新的转发路径的步骤包括:
从所述路由表中的所述本地地址中确定目的转换地址,并将所述目的IP地址dst-ip更新为所述目的转换地址;
根据所述目的转换地址,以及所述优先级、所述策略路由、所述静态路由、所述直连路由和所述动态路由,确定目的转换路由;
根据所述目的转换路由,从所述本地地址中确定源IP转换地址,并将所述源IP地址src-ip更新为源IP转换地址;
根据更新后的所述目的IP地址dst-ip、所述源IP地址src-ip,以及所述目的转换路由对应的所述源端口src-port、所述目的端口dst-port和所述协议号protocol,创建并生成所述新的转发路径,并将所述新的转发路径更新至所述连接表中。
通过应用以上技术方案,定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表;DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果;根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发,实现了基于DPDK数据收发引擎,通过对连接表和路由表的维护,将报文头部信息与路由表、连接表进行匹配,得到直接的报文转发路径,并使用该报文转发路径对报文数据进行转发,同时基于DPDK数据转发引擎,数据越过系统内核,经过网卡即可直接传送到用户态程序,解决了现有技术中的DPDK数据转发引擎无法高效的维护转发连接导致数据转发异常、数据转发性能低和吞吐低的技术问题,完成了对数据转发的连接的高效维护,提升了负载均衡和网络设备数据转发性能和吞吐性能。
与本发明实施例中的一种所述基于DPDK的数据转发方法相对应,本发明还公开了一种基于DPDK的数据转发装置,如图2所示,所述装置包括初始化单元、匹配单元和转发单元。
其中,
所述初始化单元,用于定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表;
所述匹配单元,用于从网卡或协议栈接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果;
所述转发单元,用于根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (6)

1.一种基于DPDK的数据转发方法,其特征在于,所述方法包括:
S101,定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表;
S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果;
S103,根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发;
其中,
所述连接表的数据结构包括5个字段,分别为源IP地址src-ip、源端口src-port、目的IP地址dst-ip、目的端口dst-port和协议号protocol;
所述路由表的数据结构包括7个字段,分别为优先级、本地地址、广播地址、策略路由、静态路由、直连路由和动态路由;
所述报文包括所述报文头部信息、辅助控制信息、数据和结束标志,其中,所述报文头部信息包括5个字段,分别为源IP地址src-ip、源端口src-port、目的IP地址dst-ip、目的端口dst-port和协议号protocol;
所述S103,根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发的步骤包括:
当所述匹配结果为“匹配”时,根据所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol,确定所述报文的转发路径,并从所述DPDK数据收发引擎的数据收发队列中获取所述报文,使用所述报文的转发路径通过数据转发接口将所述报文转发至用户程序;
当所述匹配结果为“不匹配”时,基于所述报文对应的报文头部信息进行地址转换处理,生成新的转发路径,并从所述DPDK数据收发引擎的数据收发队列中获取所述报文,使用所述新的转发路径通过所述数据转发接口将所述报文转发至用户程序;
所述基于所述报文对应的报文头部信息进行地址转换处理,生成新的转发路径的步骤包括:
从所述路由表中的所述本地地址中确定目的转换地址,并将所述目的IP地址dst-ip更新为所述目的转换地址;
根据所述目的转换地址,以及所述优先级、所述策略路由、所述静态路由、所述直连路由和所述动态路由,确定目的转换路由;
根据所述目的转换路由,从所述本地地址中确定源IP转换地址,并将所述源IP地址src-ip更新为源IP转换地址;
根据更新后的所述目的IP地址dst-ip、所述源IP地址src-ip,以及所述目的转换路由对应的所述源端口src-port、所述目的端口dst-port和所述协议号protocol,创建并生成所述新的转发路径,并将所述新的转发路径更新至所述连接表中。
2.如权利要求1所述的方法,其特征在于,所述S101,定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表的步骤,具体为:
定义所述连接表的数据结构和所述路由表的数据结构;
根据所述连接表的数据结构,初始化并生成所述连接表;
根据所述路由表的数据结构,获取本地路由列表中的路由信息,包括所述本地地址、所述优先级、所述广播地址、所述策略路由、所述静态路由、所述直连路由和所述动态路由,并根据所述路由信息初始化并生成所述路由表;
其中,
所述连接表用于指定所述报文的转发路径,并在转发所述报文时,根据所述转发路径直接将所述报文转发至用户程序。
3.如权利要求1所述的方法,其特征在于,所述S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果的步骤包括:
对所述DPDK数据收发引擎的数据接入接口、数据转发接口和数据收发队列进行初始化配置;
通过所述数据接入接口从系统外部或系统内部获取所述报文,并缓存到所述数据收发队列中。
4.如权利要求1所述的方法,其特征在于,所述S102,DPDK数据收发引擎接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果的步骤还包括:
基于所述DPDK数据收发引擎对所述报文的头部进行解析得到所述报文对应的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol,并生成所述报文对应的报文头部信息;
1)当所述报文是从系统内部接收时,
将所述报文对应的报文头部信息与所述路由表中的所述本地地址和所述广播地址进行匹配;
如果存在匹配项,则所述匹配结果为“匹配”;
如果不存在匹配项,则对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理;
2)当所述报文是从系统外部接收时,则对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理。
5.如权利要求4所述的方法,其特征在于,所述对所述报文对应的报文头部信息和所述连接表进行连接表匹配处理的步骤为:
将所述报文对应的报文头部信息与所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol进行逐一比较:
若所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol存在与所述报文对应的报文头部信息完全一致的行数据,则所述匹配结果为“匹配”;
若所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol不存在与所述报文对应的报文头部信息完全一致的行数据,则所述匹配结果为“不匹配”。
6.一种实施权利要求1所述基于DPDK的数据转发方法的装置,其特征在于,所述装置包括初始化单元、匹配单元和转发单元;
其中,
所述初始化单元,用于定义连接表的数据结构和路由表的数据结构,并根据所述连接表的数据结构初始化连接表,根据所述路由表的数据结构初始化路由表;其中,所述连接表的数据结构包括5个字段,分别为源IP地址src-ip、源端口src-port、目的IP地址dst-ip、目的端口dst-port和协议号protocol;所述路由表的数据结构包括7个字段,分别为优先级、本地地址、广播地址、策略路由、静态路由、直连路由和动态路由;所述报文包括所述报文头部信息、辅助控制信息、数据和结束标志,其中,所述报文头部信息包括5个字段,分别为源IP地址src-ip、源端口src-port、目的IP地址dst-ip、目的端口dst-port和协议号protocol;
所述匹配单元,用于从网卡或协议栈接收报文,对所述报文进行解析,得到与所述报文对应的报文头部信息,并将所述报文头部信息与所述路由表、所述连接表进行匹配,得到匹配结果;
所述转发单元,用于根据所述匹配结果,通过所述DPDK数据收发引擎对所述报文进行数据转发,当所述匹配结果为“匹配”时,所述转发单元根据所述连接表中的所述源IP地址src-ip、所述源端口src-port、所述目的IP地址dst-ip、所述目的端口dst-port和所述协议号protocol,确定所述报文的转发路径,并从所述DPDK数据收发引擎的数据收发队列中获取所述报文,使用所述报文的转发路径通过所述数据转发接口将所述报文转发至用户程序;当所述匹配结果为“不匹配”时,所述转发单元基于所述报文对应的报文头部信息进行地址转换处理,生成新的转发路径,并从所述DPDK数据收发引擎的数据收发队列中获取所述报文,使用所述新的转发路径通过所述数据转发接口将所述报文转发至用户程序;
其中,所述转发单元基于所述报文对应的报文头部信息进行地址转换处理,生成新的转发路径的步骤包括:
从所述路由表中的所述本地地址中确定目的转换地址,并将所述目的IP地址dst-ip更新为所述目的转换地址;
根据所述目的转换地址,以及所述优先级、所述策略路由、所述静态路由、所述直连路由和所述动态路由,确定目的转换路由;
根据所述目的转换路由,从所述本地地址中确定源IP转换地址,并将所述源IP地址src-ip更新为源IP转换地址;
根据更新后的所述目的IP地址dst-ip、所述源IP地址src-ip,以及所述目的转换路由对应的所述源端口src-port、所述目的端口dst-port和所述协议号protocol,创建并生成所述新的转发路径,并将所述新的转发路径更新至所述连接表中。
CN202310129011.9A 2023-02-17 2023-02-17 一种基于dpdk的数据转发方法及装置 Active CN116170404B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310129011.9A CN116170404B (zh) 2023-02-17 2023-02-17 一种基于dpdk的数据转发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310129011.9A CN116170404B (zh) 2023-02-17 2023-02-17 一种基于dpdk的数据转发方法及装置

Publications (2)

Publication Number Publication Date
CN116170404A CN116170404A (zh) 2023-05-26
CN116170404B true CN116170404B (zh) 2023-09-29

Family

ID=86410882

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310129011.9A Active CN116170404B (zh) 2023-02-17 2023-02-17 一种基于dpdk的数据转发方法及装置

Country Status (1)

Country Link
CN (1) CN116170404B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102769576A (zh) * 2012-08-17 2012-11-07 北京傲天动联技术有限公司 流表自学习方法、报文转发方法和交换机
WO2016191990A1 (zh) * 2015-05-30 2016-12-08 华为技术有限公司 一种报文转换方法及装置
JP2017005375A (ja) * 2015-06-05 2017-01-05 Necエンジニアリング株式会社 ルータ装置および冗長化方法
WO2017036267A1 (zh) * 2015-08-28 2017-03-09 华讯方舟科技有限公司 一种数据报文转发方法及装置
CN108270676A (zh) * 2016-12-31 2018-07-10 普天信息技术有限公司 一种基于IntelDPDK的网络数据处理方法及装置
CN110677397A (zh) * 2019-09-18 2020-01-10 广东网堤信息安全技术有限公司 基于dpdk下的nat转发数据的方法
CN111565142A (zh) * 2020-07-15 2020-08-21 鹏城实验室 报文处理方法、装置及计算机可读存储介质
CN111600833A (zh) * 2019-07-30 2020-08-28 新华三技术有限公司 网络操作系统及报文转发方法
CN111901244A (zh) * 2020-07-10 2020-11-06 苏州浪潮智能科技有限公司 一种网络报文转发架构
CN115442366A (zh) * 2022-08-01 2022-12-06 中科驭数(北京)科技有限公司 报文转发方法、装置、设备及介质
CN115567446A (zh) * 2022-07-07 2023-01-03 华为技术有限公司 报文转发方法、装置、计算设备及卸载卡

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1988495A (zh) * 2005-12-20 2007-06-27 鸿富锦精密工业(深圳)有限公司 网络地址转换装置及其转送封包的方法
US11258727B2 (en) * 2019-11-13 2022-02-22 Arista Networks, Inc. Shared routing tables for network devices
US11812362B2 (en) * 2021-03-01 2023-11-07 Juniper Networks, Inc. Containerized router with a disjoint data plane

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102769576A (zh) * 2012-08-17 2012-11-07 北京傲天动联技术有限公司 流表自学习方法、报文转发方法和交换机
WO2016191990A1 (zh) * 2015-05-30 2016-12-08 华为技术有限公司 一种报文转换方法及装置
JP2017005375A (ja) * 2015-06-05 2017-01-05 Necエンジニアリング株式会社 ルータ装置および冗長化方法
WO2017036267A1 (zh) * 2015-08-28 2017-03-09 华讯方舟科技有限公司 一种数据报文转发方法及装置
CN108270676A (zh) * 2016-12-31 2018-07-10 普天信息技术有限公司 一种基于IntelDPDK的网络数据处理方法及装置
CN111600833A (zh) * 2019-07-30 2020-08-28 新华三技术有限公司 网络操作系统及报文转发方法
CN110677397A (zh) * 2019-09-18 2020-01-10 广东网堤信息安全技术有限公司 基于dpdk下的nat转发数据的方法
CN111901244A (zh) * 2020-07-10 2020-11-06 苏州浪潮智能科技有限公司 一种网络报文转发架构
CN111565142A (zh) * 2020-07-15 2020-08-21 鹏城实验室 报文处理方法、装置及计算机可读存储介质
CN115567446A (zh) * 2022-07-07 2023-01-03 华为技术有限公司 报文转发方法、装置、计算设备及卸载卡
CN115442366A (zh) * 2022-08-01 2022-12-06 中科驭数(北京)科技有限公司 报文转发方法、装置、设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于DPDK技术实现OVS;胡卫文;陈俊强;;网络新媒体技术(01);全文 *

Also Published As

Publication number Publication date
CN116170404A (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
US20220060555A1 (en) Accelerated network packet processing
US7996569B2 (en) Method and system for zero copy in a virtualized network environment
US7126952B2 (en) Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US7715428B2 (en) Multicore communication processing
US8990801B2 (en) Server switch integration in a virtualized system
US8904037B2 (en) Efficient data transfer within a virtual network
US8255475B2 (en) Network interface device with memory management capabilities
CN108270676B (zh) 一种基于Intel DPDK的网络数据处理方法及装置
US8446824B2 (en) NUMA-aware scaling for network devices
US10630587B2 (en) Shared memory communication in software defined networking
JP2004534311A (ja) 共有属性に基づいて圧縮キューペアから複数の仮想キューペアを作成する構成
JP6855906B2 (ja) スイッチプログラム、スイッチング方法及び情報処理装置
US6742075B1 (en) Arrangement for instigating work in a channel adapter based on received address information and stored context information
US11563830B2 (en) Method and system for processing network packets
US7466716B2 (en) Reducing latency in a channel adapter by accelerated I/O control block processing
US20060259648A1 (en) Concurrent read response acknowledge enhanced direct memory access unit
US7577774B2 (en) Independent source read and destination write enhanced DMA
CN106790162B (zh) 虚拟网络优化方法与系统
CN116170404B (zh) 一种基于dpdk的数据转发方法及装置
US11509750B2 (en) Network switching with co-resident data-plane and network interface controllers
US6717951B2 (en) Method and apparatus for determining priority of network packets
US9866657B2 (en) Network switching with layer 2 switch coupled co-resident data-plane and network interface controllers
US20230239257A1 (en) Efficient packet reordering using hints
US20230040655A1 (en) Network switching with co-resident data-plane and network interface controllers
CN113965511A (zh) 一种基于rdma的标签数据传输方法及相关装置、系统

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