CN114257560A - 一种基于kni的交换机网络数据缓存实现方法 - Google Patents
一种基于kni的交换机网络数据缓存实现方法 Download PDFInfo
- Publication number
- CN114257560A CN114257560A CN202111561959.9A CN202111561959A CN114257560A CN 114257560 A CN114257560 A CN 114257560A CN 202111561959 A CN202111561959 A CN 202111561959A CN 114257560 A CN114257560 A CN 114257560A
- Authority
- CN
- China
- Prior art keywords
- ndn
- kni
- cache
- network data
- function
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于KNI的交换机网络数据缓存实现方法,该方法通过KNI接口连接t4p4s数据平面和交换机系统内核,将原本外置的NDN缓存协议栈运行在交换机系统上,当NDN兴趣包和数据包经过数据平面时,通过KNI接口访问内核协议栈并完成对数据包缓存的读写,不仅可以节约外置NDN缓存设备,提高功能内聚性,还能更好利用交换机的处理和缓存性能,为NDN缓存交互速度的提升和网络的整体运行带来了显著的性能优势。
Description
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种基于KNI的交换机网络数据缓存实现方法。
背景技术
近年来,为创新网络技术,多国在新型网络领域开展相关研究和重要技术攻关。命名数据网络(Named Data Networking,简称NDN)是为解决TCP/IP网络架构存在地大量重复传输而提出来的新型网络架构,相比TCP/IP,NDN更关注的是转发的内容。在NDN网络中存在兴趣包和数据包两种类型的包,每个包都具有唯一的名称,如果用户想要获取一些内容,需要通过发送兴趣包来表达请求,而数据包则用于回复对应的内容。缓存在NDN中具有重要的作用,不同于IP路由器中的缓存存储器,NDN可以在转发后重用数据包,该机制有以下几个好处:缓存其他节点产生的内容有助于将内容与其制作者分离,还减少了制作方的开销,并通过在网络中提供相同内容的多个副本从而避免单点故障,在由于数据包丢失而导致多播或重传的情况下,有助于实现动态内容的提供,缓存是目前NDN的一大研究热点。
t4p4s是基于Intel Data Plane Development Kit(DPDK)的P4语言编译器,可以产生DPDK兼容的代码,运行在现成的商业化x86系统上。DPDK是intel提供的专注于网络应用中数据包的高性能处理的数据平面开发工具集,运行在Linux系统,DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
发明人在实现本发明的过程中,发现现有技术至少存在以下问题:
现有技术将NDN缓存协议栈运行在独立设备上,与t4p4s交换机之间通过网线相连,大大降低了交换机设备的一体性和功能内聚性,同时提高了设备成本,在占用交换机端口的同时无法有效利用交换机的处理和缓存性能,不利于缓存读写速度和网络整体性能的提升。
通过内核网卡接口(Kernel NIC Interface,KNI)实现的NDN网络数据缓存方法,能够有效地解决上述问题。
发明内容
本发明的目的在于提供一种基于KNI的交换机网络数据缓存实现方法,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本申请公开了一种基于KNI的交换机网络数据缓存实现方法,具体包括如下步骤:
S1、首先在白盒交换机上安装基于DPDK的P4语言编译器t4p4s,同时安装NDN的NFD协议栈以及必需的依赖库,得到t4p4s可编程交换机;
S2、在DPDK的框架的data_plane模块中定义调用KNI与内核NDN缓存协议栈交互的函数;
S3、创建t4p4s中P4的抽象转发模型ndn_cache_v1model,在ingress处理模块中定义NDN缓存的extern函数接口;
S4、在P4程序ingress模块需要进行NDN缓存的地方,加入NDN缓存的extern函数接口的调用;
S5、在t4p4s的配置和启动选项中加入KNI缓存接口的开关和启动参数项;
S6、经过对P4文件中包含ndn_cache_v1model编译运行,实现对基于KNI的NDN网络数据缓存。
作为优选,所述步骤S2具体包括如下子步骤:
S21、在启动函数中加入对KNI缓存接口开关和启动参数的解析;
S22、在解析函数中调用DPDK提供的KNI相关函数接口,实现KNI内存开辟、虚拟设备及其数据读写队列的初始化;
S23、在主函数中加入KNI缓存读写函数kni_ndn_ingress()和kni_ndn_egress(),通过KNI实现与内核NDN缓存协议栈之间的网络数据传递。
作为优选,所述步骤S6具体包括如下子步骤:
S61、前段编译器实现对extern函数的支持,将包含KNI缓存函数的extern代码作为一个结点编译到JSON文件中;
S62、后端编译器从JSON文件中读取KNI缓存函数的结点,在内存中生成中间表示IR;
S63、后端编译器调用DPDK框架中data plane模块实现的KNI与内核NDN缓存协议栈交互的函数,与P4程序和抽象转发模型的IR一起编译成完整的C代码;
S64、t4p4s将C代码编译成二进制文件运行在白盒交换机上,同时运行NDN报文转发和基于KNI的NDN缓存功能;
S65、当NDN网络数据包经过ingress处理模块时,通过KNI接口完成与内核中的NDN缓存协议栈交互,实现NDN网络数据缓存功能。
作为优选,所述步骤S65具体包括如下子步骤:
S651、NDN网络数据包通过t4p4s可编程交换机的输入端口进入交换机的处理流程;
S652、解析模块中,根据NDN网络数据包的格式,自动识别数据包的TLV信息,根据TLV信息匹配得到NDN网络数据包的包头信息,并向处理模块输出;
S653、处理模块中,NDN网络数据包根据相关流表和转发策略匹配相应的处理动作;
S654、对NDN网络数据包执行匹配的处理动作;
作为优选,所述步骤S1中t4p4s可编程交换机设有1G以太网输入端口和若刚10G光模块输入端口,采用相同数目的pipeline和网卡并行选择、处理数据包。
作为优选,所述步骤S652中TLV信息包括网络包类型、NDN包类型和Name类型,所述NDN网络数据包类型包括兴趣包和数据包。
作为优选,所述步骤S653的流表包括内容暂存表、待定兴趣表和转发信息表。
本发明的有益效果:
本发明在基于DPDK的开源t4p4s软件白盒交换机上,利用KNI实现了数据平面和内核NDN协议栈的交互,并设计支持缓存的抽象转发模型与编译运行机制,完成基于KNI的NDN网络数据缓存方法,提高了交换机的设备一体性和功能内聚性,其实现方法无需额外硬件成本,同时提升了NDN缓存交互速度和网络的整体运行性能本发明的特征及优点将通过实施例结合附图进行详细说明。
附图说明
图1是本发明处理流程图。
图2是本发明系统运行框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本发明进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明一种基于KNI的交换机网络数据缓存实现方法,具体包括如下步骤:
S1、首先在白盒交换机上安装基于DPDK的P4语言编译器t4p4s,同时安装NDN的NFD协议栈以及必需的依赖库,得到t4p4s可编程交换机;t4p4s可编程交换机设有1G以太网输入端口和若刚10G光模块输入端口,采用相同数目的pipeline和网卡并行选择、处理数据包;
S2、在DPDK的框架的data_plane模块中定义调用KNI与内核NDN缓存协议栈交互的函数;
S21、在启动函数中加入对KNI缓存接口开关和启动参数的解析;
S22、在解析函数中调用DPDK提供的KNI相关函数接口,实现KNI内存开辟、虚拟设备及其数据读写队列的初始化;
S23、在主函数中加入KNI缓存读写函数kni_ndn_ingress()和kni_ndn_egress(),通过KNI实现与内核NDN缓存协议栈之间的网络数据传递。
S3、创建t4p4s中P4的抽象转发模型ndn_cache_v1model,在ingress处理模块中定义NDN缓存的extern函数接口;
S4、在P4程序ingress模块需要进行NDN缓存的地方,加入NDN缓存的extern函数接口的调用;
S5、在t4p4s的配置和启动选项中加入KNI缓存接口的开关和启动参数项;
S6、经过对P4文件中包含ndn_cache_v1model编译运行,实现对基于KNI的NDN网络数据缓存。
S61、前段编译器实现对extern函数的支持,将包含KNI缓存函数的extern代码作为一个结点编译到JSON文件中;
S62、后端编译器从JSON文件中读取KNI缓存函数的结点,在内存中生成中间表示IR;
S63、后端编译器调用DPDK框架中data plane模块实现的KNI与内核NDN缓存协议栈交互的函数,与P4程序和抽象转发模型的IR一起编译成完整的C代码;
S64、t4p4s将C代码编译成二进制文件运行在白盒交换机上,同时运行NDN报文转发和基于KNI的NDN缓存功能;
S65、当NDN网络数据包经过ingress处理模块时,通过KNI接口完成与内核中的NDN缓存协议栈交互,实现NDN网络数据缓存功能。
S651、NDN网络数据包通过t4p4s可编程交换机的输入端口进入交换机的处理流程;
S652、解析模块中,根据NDN网络数据包的格式,自动识别数据包的TLV信息,根据TLV信息匹配得到NDN网络数据包的包头信息,并向处理模块输出;TLV信息包括网络包类型、NDN包类型和Name类型,所述NDN网络数据包类型包括兴趣包和数据包
S653、处理模块中,NDN网络数据包根据相关流表和转发策略匹配相应的处理动作;流表包括内容暂存表、待定兴趣表和转发信息表。
S654、对NDN网络数据包执行匹配的处理动作;
实施例:
1、NDN网络数据包通过t4p4s可编程交换机的输入端口之一进入交换机的处理流程,t4p4s交换机共有1G以太网和10G光模块输入端口若干,并采用相同数目pipeline和网卡并行选择、处理数据包。交换机内核运行NDN的Named Data Networking ForwardingDaemon(NFD)协议栈以及必需的依赖库;
2、参考下表所示NDN包字段定义,在解析模块中,根据NDN数据包的格式,自动识别数据包的TLV信息,依次识别TLV中网络包类型、NDN包类型、Name类型等三个层次的信息,根据上述信息匹配得到兴趣包或数据包等包头信息,并向处理模块输出;
表1兴趣包字段定义表
字段 | 长度 | 取值(如有固定值) | 含义 |
type | 1字节 | 0x05 | 包类型,即兴趣包 |
length | 不定长 | / | 包长度 |
Name | / | 0x07 | 名称字段 |
other TLVS data | / | / | 其他字段 |
表2数据包字段定义表
表3Name字段定义表
3、如图1所示,处理模块中,NDN数据包根据相关流表和转发策略匹配相应的处理动作,流表主要包括Content Store(CS)内容暂存表、Pending Interest Table(PIT)待定兴趣表和Forwarding Information Base(FIB)转发信息表,依次根据匹配情况执行读取缓存、写入缓存、转发或丢弃等动作;
4、对NDN数据包执行匹配的动作,如图2所示,步骤四中缓存相关动作的运行通过以下子步骤来实现:
4.1在DPDK的data_plane模块中定义KNI与内核NDN缓存协议栈交互的函数:加入对KNI缓存接口开关与启动参数的解析函数kni_parse_args(int argc,char**argv),在解析函数中调用DPDK提供的KNI相关函数接口,实现KNI内存开辟、虚拟设备及其数据读写队列的初始化,具体代码如下:
在主函数中加入KNI缓存读写函数kni_ndn_ingress()和kni_ndn_egress(),通过KNI实现与内核NDN协议栈之间的网络数据传递,具体代码如下:
4.2在ingress处理模块中定义NDN缓存读写相关的extern函数接口KNI_Cache_Read()和KNI_Cache_Write(),实现了对(4.1)中定义的KNI缓存函数的封装和调用;
4.3在读取或写入缓存的动作中调用NDN缓存的extern函数,如下所示:
4.4在t4p4s的配置和启动选项中加入KNI缓存接口的开关和启动参数项,如下所示:
mdopts-ppk-kni+=-m-P-p 0x20-k 0x3--config-kni"\"(5,6,7)"\"--config-ppk"\"(0,0,0),(0,1,1),(1,0,0),(1,1,1)"\"
4.5DPDK data plane模块中KNI与内核NDN缓存协议栈的交互函数,与P4编写的NDN程序、P4核心组件core.p4及抽象转发模型ndn_cache_v1model.p4编译得到的C代码进行合并,编译成二进制文件运行在可编程交换机上,以抽象转发模型中定义的由Parser协议解析、VerifyChecksum验证校验、Ingress报文入口处理、Egress报文出口处理、ComputeChecksum计算校验和Depaser反向解析等模块组成的处理流水线实现相应的数据平面功能。
4.6当NDN兴趣包和数据包经过交换机端口时,通过KNI接口完成与内核中的NDN缓存协议栈交互,实现NDN网络数据缓存功能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于KNI的交换机网络数据缓存实现方法,其特征在于,具体包括如下步骤:
S1、首先在白盒交换机上安装基于DPDK的P4语言编译器t4p4s,同时安装NDN的NFD协议栈以及必需的依赖库,得到t4p4s可编程交换机;
S2、在DPDK的框架的data_plane模块中定义调用KNI与内核NDN缓存协议栈交互的函数;
S3、创建t4p4s中P4的抽象转发模型ndn_cache_v1model,在ingress处理模块中定义NDN缓存的extern函数接口;
S4、在P4程序ingress模块需要进行NDN缓存的地方,加入NDN缓存的extern函数接口的调用;
S5、在t4p4s的配置和启动选项中加入KNI缓存接口的开关和启动参数项;
S6、经过对P4文件中包含ndn_cache_v1model编译运行,实现对基于KNI的NDN网络数据缓存。
2.如权利要求1所述的一种基于KNI的交换机网络数据缓存实现方法,其特征在于:所述步骤S2具体包括如下子步骤:
S21、在启动函数中加入对KNI缓存接口开关和启动参数的解析;
S22、在解析函数中调用DPDK提供的KNI相关函数接口,实现KNI内存开辟、虚拟设备及其数据读写队列的初始化;
S23、在主函数中加入KNI缓存读写函数kni_ndn_ingress()和kni_ndn_egress(),通过KNI实现与内核NDN缓存协议栈之间的网络数据传递。
3.如权利要求1所述的一种基于KNI的交换机网络数据缓存实现方法,其特征在于:所述步骤S6具体包括如下子步骤:
S61、前段编译器实现对extern函数的支持,将包含KNI缓存函数的extern代码作为一个结点编译到JSON文件中;
S62、后端编译器从JSON文件中读取KNI缓存函数的结点,在内存中生成中间表示IR;
S63、后端编译器调用DPDK框架中data plane模块实现的KNI与内核NDN缓存协议栈交互的函数,与P4程序和抽象转发模型的IR一起编译成完整的C代码;
S64、t4p4s将C代码编译成二进制文件运行在白盒交换机上,同时运行NDN报文转发和基于KNI的NDN缓存功能;
S65、当NDN网络数据包经过ingress处理模块时,通过KNI接口完成与内核中的NDN缓存协议栈交互,实现NDN网络数据缓存功能。
4.如权利要求3所述的一种基于KNI的交换机网络数据缓存实现方法,其特征在于:所述步骤S65具体包括如下子步骤:
S651、NDN网络数据包通过t4p4s可编程交换机的输入端口进入交换机的处理流程;
S652、解析模块中,根据NDN网络数据包的格式,自动识别数据包的TLV信息,根据TLV信息匹配得到NDN网络数据包的包头信息,并向处理模块输出;
S653、处理模块中,NDN网络数据包根据相关流表和转发策略匹配相应的处理动作;
S654、对NDN网络数据包执行匹配的处理动作。
5.如权利要求4所述的一种基于KNI的交换机网络数据缓存实现方法,其特征在于:所述步骤S1中t4p4s可编程交换机设有1G以太网输入端口和若刚10G光模块输入端口,采用相同数目的pipeline和网卡并行选择、处理数据包。
6.如权利要求4所述的一种基于KNI的交换机网络数据缓存实现方法,其特征在于:所述步骤S652中TLV信息包括网络包类型、NDN包类型和Name类型,所述NDN网络数据包类型包括兴趣包和数据包。
7.如权利要求4所述的一种基于KNI的交换机网络数据缓存实现方法,其特征在于:所述步骤S653的流表包括内容暂存表、待定兴趣表和转发信息表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111561959.9A CN114257560A (zh) | 2021-12-20 | 2021-12-20 | 一种基于kni的交换机网络数据缓存实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111561959.9A CN114257560A (zh) | 2021-12-20 | 2021-12-20 | 一种基于kni的交换机网络数据缓存实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114257560A true CN114257560A (zh) | 2022-03-29 |
Family
ID=80795919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111561959.9A Pending CN114257560A (zh) | 2021-12-20 | 2021-12-20 | 一种基于kni的交换机网络数据缓存实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114257560A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114827655A (zh) * | 2022-06-24 | 2022-07-29 | 之江实验室 | 内容存储转发方法及装置、电子设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109995674A (zh) * | 2017-12-29 | 2019-07-09 | 中国科学院沈阳自动化研究所 | 一种可编程sdn交换机系统 |
CN110290092A (zh) * | 2018-03-19 | 2019-09-27 | 中国科学院沈阳自动化研究所 | 一种基于可编程交换机的sdn网络配置管理方法 |
CN113765808A (zh) * | 2021-06-16 | 2021-12-07 | 北京交通大学 | 一种网络路由方法、系统、装置及电子设备 |
-
2021
- 2021-12-20 CN CN202111561959.9A patent/CN114257560A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109995674A (zh) * | 2017-12-29 | 2019-07-09 | 中国科学院沈阳自动化研究所 | 一种可编程sdn交换机系统 |
CN110290092A (zh) * | 2018-03-19 | 2019-09-27 | 中国科学院沈阳自动化研究所 | 一种基于可编程交换机的sdn网络配置管理方法 |
CN113765808A (zh) * | 2021-06-16 | 2021-12-07 | 北京交通大学 | 一种网络路由方法、系统、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
曹作伟等: "应用于协议无感知转发交换机的流缓存方法", 《电子与信息学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114827655A (zh) * | 2022-06-24 | 2022-07-29 | 之江实验室 | 内容存储转发方法及装置、电子设备、存储介质 |
CN114827655B (zh) * | 2022-06-24 | 2022-10-11 | 之江实验室 | 内容存储转发方法及装置、电子设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111371779B (zh) | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 | |
CN101095310B (zh) | 分组解析处理器及在处理器中解析分组的方法 | |
CN111131037B (zh) | 基于虚拟网关的数据传输方法、装置、介质与电子设备 | |
US8559332B2 (en) | Method for enhancing table lookups with exact and wildcards matching for parallel environments | |
US8473523B2 (en) | Deterministic finite automata graph traversal with nodal bit mapping | |
US20140324900A1 (en) | Intelligent Graph Walking | |
US20060085533A1 (en) | Content search mechanism | |
EP2668577A2 (en) | Unrolling quantifications to control in-degree and/or out degree of automaton | |
WO2009015603A1 (fr) | Système de compilation d'expressions régulières, système d'appariement, procédé de compilation et procédé d'appariement | |
EP2668575A2 (en) | Method and apparatus for compiling regular expressions | |
CN1593041A (zh) | 具有多个首部的包的解封装和封装的方法、装置和计算机程序 | |
EP2668574A2 (en) | Utilizing special purpose elements to implement a fsm | |
EP2215563A1 (en) | Method and apparatus for traversing a deterministic finite automata (dfa) graph compression | |
Ma et al. | Leveraging parallelism for multi-dimensional packetclassification on software routers | |
Hsieh et al. | A high-throughput DPI engine on GPU via algorithm/implementation co-optimization | |
CN108366018A (zh) | 一种基于dpdk的网络数据包处理方法 | |
CN110535847B (zh) | 网络处理器及网络数据的入栈处理方法 | |
US20080222303A1 (en) | Latency hiding message passing protocol | |
CN114257560A (zh) | 一种基于kni的交换机网络数据缓存实现方法 | |
Tianhua et al. | The design and implementation of zero-copy for linux | |
Zolfaghari et al. | A custom processor for protocol-independent packet parsing | |
Ling et al. | Flow processing optimization with accelerated flow actions on high speed programmable data plane | |
Pasetto et al. | Ultra low latency market data feed on IBM PowerENTM | |
Nottingham | GPF: A framework for general packet classification on GPU co-processors | |
Brouer et al. | A practical introduction to XDP |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220329 |