CN111131043A - 一种udp数据包的传输方法、系统及相关组件 - Google Patents

一种udp数据包的传输方法、系统及相关组件 Download PDF

Info

Publication number
CN111131043A
CN111131043A CN201811278460.5A CN201811278460A CN111131043A CN 111131043 A CN111131043 A CN 111131043A CN 201811278460 A CN201811278460 A CN 201811278460A CN 111131043 A CN111131043 A CN 111131043A
Authority
CN
China
Prior art keywords
data packet
udp
udp data
packet
module
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.)
Granted
Application number
CN201811278460.5A
Other languages
English (en)
Other versions
CN111131043B (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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201811278460.5A priority Critical patent/CN111131043B/zh
Publication of CN111131043A publication Critical patent/CN111131043A/zh
Application granted granted Critical
Publication of CN111131043B publication Critical patent/CN111131043B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种UDP数据包的传输方法,所述传输方法包括通过输入接口接收UDP数据包,并判断UDP数据包是否为广播数据包;若是,则将广播数据包传输至用户态VPN模块;若否,则根据VPN路由表将UDP数据包路由至对应的虚拟网卡,调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块;当用户态VPN模块对UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口。本方法能够将UDP数据包的数据平面迁移至用户态,提高UDP数据包的处理效率。本申请还公开了一种UDP数据包的传输系统、一种计算机可读存储介质及一种电子设备,具有以上有益效果。

Description

一种UDP数据包的传输方法、系统及相关组件
技术领域
本申请涉及云计算技术领域,特别涉及一种UDP数据包的传输方法、系统、一种计算机可读存储介质及一种电子设备。
背景技术
随着互联网的高速发展,云产业的快速突起,基础架构网络逐渐向基于通用计算平台的架构融合,以支持多样化的网络系统。高速数据进出速率是衡量网络系统性能的关键指标之一,AF老架构是基于Linux内核转发的模式,这种模式主要存在两个问题,一个是性能问题,Linux内核协议栈一直饱受诟病,存在性能瓶颈,无法满足AF新业务的发展需求,另一个是可靠性问题,运行在内核态的进程一旦执行失败,将会引起AF业务的中断。
现有技术中的UDP(User Datagram Protocol,用户数据报文协议)的数据平面运行在内核态,其数据处理性能受到基于Linux内核的AF传统架构的制约。
因此,如何将UDP数据包的数据平面迁移至用户态,提高UDP数据包的处理效率是本领域技术人员目前需要解决的技术问题。
申请内容
本申请的目的是提供一种UDP数据包的传输方法、系统、一种计算机可读存储介质及一种电子设备,能够将UDP数据包的数据平面迁移至用户态,提高UDP数据包的处理效率。
为解决上述技术问题,本申请提供一种UDP数据包的传输方法,该传输方法包括:
通过输入接口接收UDP数据包,并判断UDP数据包是否为广播数据包;
若是,则将广播数据包传输至用户态VPN模块;其中,用户态VPN模块为基于VPP架构的VPN模块;
若否,则根据UDP数据包对应的VPN路由表将UDP数据包路由至对应的虚拟网卡,调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块;
当用户态VPN模块对UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口。
可选的,判断UDP数据包是否为广播数据包,包括:
利用ip4-input节点确定UDP数据包的数据包类型;
根据数据包类型判断UDP数据包是否为广播数据包。
可选的,根据UDP数据包对应的VPN路由表将UDP数据包路由至对应的虚拟网卡包括:
当UDP数据包为ipv4单播数据包时,利用ip4-lookup节点查询UDP数据包对应的第一VPN路由表,并根据第一VPN路由表将UDP数据包路由至对应的虚拟网卡;
当UDP数据包为多播数据包时,利用mfib-forward-rpf节点查询UDP数据包对应的第二VPN路由表,并根据第二VPN路由表将UDP数据包路由至对应的虚拟网卡。
可选的,将广播数据包传输至用户态VPN模块包括:
利用目标函数xcast-input将广播数据包传输至用户态VPN模块。
可选的,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口还包括:
将加密后的UDP数据包或解密后的UDP数据包传输至数据包队列;
获取加密后的UDP数据包或解密后的UDP数据包的UDP头中的目的IP地址;
根据目的IP地址将加密后的UDP数据包或解密后的UDP数据包转发至对应的物理网口。
本申请还提供了一种UDP数据包的传输系统,该传输系统包括:
判断模块,用于通过输入接口接收UDP数据包,并判断UDP数据包是否为广播数据包;
第一处理模块,用于当UDP数据包为广播数据包,则将广播数据包传输至用户态VPN模块;其中,用户态VPN模块为基于VPP架构的VPN模块;
第二处理模块,用于当UDP数据包不为广播数据包,则根据UDP数据包对应的VPN路由表将UDP数据包路由至对应的虚拟网卡,调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块;
传输模块,用于当用户态VPN模块对UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口。
可选的,判断模块包括:
接收单元,用于通过输入接口接收UDP数据包;
类型确定单元,用于利用ip4-input节点确定UDP数据包的数据包类型;还用于根据数据包类型判断UDP数据包是否为广播数据包。
可选的,第二处理模块包括:
ipv4单播数据包处理子单元,用于当UDP数据包为ipv4单播数据包时,利用ip4-lookup节点查询UDP数据包对应的第一VPN路由表,并根据第一VPN路由表将UDP数据包路由至对应的虚拟网卡;还用于调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块;
多播数据包处理子单元,用于当UDP数据包为多播数据包时,利用mfib-forward-rpf节点查询UDP数据包对应的第二VPN路由表,并根据第二VPN路由表将UDP数据包路由至对应的虚拟网卡;还用于调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块。
可选的,第一处理模块具体为利用目标函数xcast-input将广播数据包传输至用户态VPN模块的模块。
可选的,传输模块包括:
队列加入单元,用于当用户态VPN模块对UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至数据包队列;
地址获取单元,用于获取加密后的UDP数据包或解密后的UDP数据包的UDP头中的目的IP地址;
转发单元,用于根据目的IP地址将加密后的UDP数据包或解密后的UDP数据包转发至对应的物理网口。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序执行时实现上述UDP数据包的传输方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器调用存储器中的计算机程序时实现上述UDP数据包的传输方法执行的步骤。
本申请提供了一种UDP数据包的传输方法,包括通过输入接口接收UDP数据包,并判断UDP数据包是否为广播数据包;若是,则将广播数据包传输至用户态VPN模块;其中,用户态VPN模块为基于VPP架构的VPN模块;若否,则根据UDP数据包对应的VPN路由表将UDP数据包路由至对应的虚拟网卡,调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块;当用户态VPN模块对UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口。
本申请首先判断UDP数据包是否为广播数据包,若为广播数据包则直接传输至用户态VPN模块,若不为广播数据包则调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块,提供了UDP数据包与用户态VPN模块结合的解决方案。进一步,本申请应用到的用户态VPN模块为基于VPP架构的VPN模块,VPP架构具有高性能、模块化、灵活性强的优势可以使得UDP数据包的数据平面运行在用户态。因此本申请能够将UDP数据包的数据平面迁移至用户态,提高UDP数据包的处理效率。本申请同时还提供了一种UDP数据包的传输系统、一种计算机可读存储介质和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种UDP数据包的传输方法的流程图;
图2为本申请实施例所提供的另一种UDP数据包的传输方法的流程图;
图3为普通数据包的加密流程示意图;
图4为普通数据包的解密流程示意图;
图5为多播数据包、组播数据包的加密流程示意图;
图6为多播数据包、组播数据包的解密流程示意图;
图7为本申请实施例所提供的一种UDP数据包的传输系统的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种UDP数据包的传输方法的流程图。
具体步骤可以包括:
S101:通过输入接口接收UDP数据包,并判断UDP数据包是否为广播数据包;若是,则进入S102;若否,则进入S103;
其中,UDP(User Datagram Protocol,用户数据报文协议)是一种面向数据报的传输层协议,现有技术中UDP数据包的传输处理运行在内核态,由于目前UDP部分并没有与VPN模块结合,因此即便使用用户态的VPN模块也无法使UDP数据包的传输处理运行在用户态。本步骤的目的在于确定UDP数据包的数据包类型,本实施例默认将UDP数据包划分为三大类,第一类是普通数据包(即:ipv4单播数据包),第二类是多播数据包,第三类是广播数据包。由于广播数据包自身属性,不需要进行路由查询,因此本实施例首选判断UDP数据包是否为广播数据包,以便区分处理。
本实施例的执行主体可以为VPP(Vector Packet Processing),VPP是一种可扩展的框架,本步骤提到的输入接口即为VPP框架的物理口,如接口dpdk-input或接口sangfor-tap等。接口dpdk-input为DPDK提供的接口,DPDK(Data Plane Development Kit,数据面开发套件)是一种为Intel architecture处理器架构下用户空间高效的数据包处理提供库函数和驱动支持的套件。现有技术中的UDP数据包的处理都是在内核的协议栈,而本实施例采用VPP框架以及基于VPP架构的用户态VPN模块将UDP数据包的处理从内核协议栈搬到了用户态,VPP框架具体如何将UPD数据包处理与用户态VPN模块进行结合,将在S102、S103和S104中进行描述。
S102:将广播数据包传输至用户态VPN模块;其中,用户态VPN模块为基于VPP架构的VPN模块;
其中,当UDP数据包为广播数据包时,本实施例直接将广播数据包传输至用户态VPN模块,以便用户态VPN模块进行进一步的操作。本实施例提到的用户态VPN模块为现有技术中已经存在的VPN模块,用户态VPN模块运行在用户态。VPN(Virtual Private Network,虚拟专用网)是一种常用语连接中、大型企业或团体与团体间的私人网络的通讯方法。VPN利用已加密的隧道协议(Tunneling Protocol)来达到保密、发送端认证、消息准确性等私人消息安全效果。VPP(Vector Packet Processing)是一种可扩展的框架,可以提供了成熟的交换、路由功能。VPP的优势来源于其高性能、模块化、灵活性以及丰富的功能。VPP是对AF(Application framework)传统架构的改进,VPP架构是非常成熟的技术,在此不进行赘述。
S103:根据UDP数据包对应的VPN路由表将UDP数据包路由至对应的虚拟网卡,调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块;
其中,当UDP数据包不为广播数据包时,UDP数据包无法直接传输至用户态VPN模块,本步骤首先查询该UDP数据包对应的VPN路由表,根据VPN路由表将UDP数据包路由至对应的虚拟网卡中,调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块,也就是说本步骤对数据平面UDP部分的接口进行封装,并以插件的形式将其融合至AF的VPP框架的基础平台中。
需要说明的是,本步骤的UDP数据包可能是ipv4单播数据包,也可能是组播数据包,对于不同的数据包类型可以存在不同的查询VPN路由表方式,本文将在下一实施例中进行进一步的介绍。
可以理解的是,S102和S103中将UDP数据包传输至用户态VPN模块的作用在于,利用用户态VPN模块对UDP数据包进行加密操作或解密操作。本实施例并不限定UDP数据包信传输的方向是加密方向还是解密方向,当UDP数据包传输至用户态VPN模块后,用户态VPN模块可以先判断UDP数据包是待加密UDP数据包还是待解密UDP数据包,对UDP数据包进行加密处理或解密处理。
S104:当用户态VPN模块对UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口。
其中,本步骤默认用户态VPN模块对UDP数据进行加密或解密后自动输出UDP数据包,本步骤将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口,以便完成UDP数据包的输出。
值得注意的是,用户态VPN模块对UDP数据包进行的是加密或解密操作时,会将UDP数据的UDP头中的目的IP改为对端AF设备的目的IP,因此在将加密后的UDP数据包或解密后的UDP数据包发送至对应的物理接口之前,可以先确定目的IP地址,以便将UDP数据包传输至目的IP地址对应的物理网口。
本实施例首先判断UDP数据包是否为广播数据包,若为广播数据包则直接传输至用户态VPN模块,若不为广播数据包则调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块,提供了UDP数据包与用户态VPN模块结合的解决方案。进一步,本实施例应用到的用户态VPN模块为基于VPP架构的VPN模块,VPP架构具有高性能、模块化、灵活性强的优势可以使得UDP数据包的数据平面运行在用户态。因此本实施例能够将UDP数据包的数据平面迁移至用户态,提高UDP数据包的处理效率。
下面请参见图2,图2为本申请实施例所提供的另一种UDP数据包的传输方法的流程图;本实施例是对每一数据包类型对应的UDP数据包的传输过程进行具体的描述,将本实施例与图1对应的实施例进行结合可以得到更为优选的实施方式。
具体步骤可以包括:
S201:通过输入接口接收UDP数据包,并利用ip4-input节点确定UDP数据包的数据包类型。
S202:当UDP数据包为广播数据包时,则利用目标函数xcast-input将广播数据包传输至用户态VPN模块。其中,用户态VPN模块为基于VPP架构的VPN模块;进入S206。
S203:当UDP数据包为ipv4单播数据包时,利用ip4-lookup节点查询UDP数据包对应的第一VPN路由表,并根据第一VPN路由表将UDP数据包路由至对应的虚拟网卡;进入S205。
S204:当UDP数据包为多播数据包时,利用mfib-forward-rpf节点查询UDP数据包对应的第二VPN路由表,并根据第二VPN路由表将UDP数据包路由至对应的虚拟网卡;进入S205。
S205:调用虚拟网卡对应的封装接口将UDP数据包传输至用户态VPN模块。
S206:当用户态VPN模块对UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至数据包队列。
S207:获取加密后的UDP数据包或解密后的UDP数据包的UDP头中的目的IP地址。
S208:根据目的IP地址将加密后的UDP数据包或解密后的UDP数据包转发至对应的物理网口。
下面通过在实际应用中的四个实施例说明上述实施例描述的流程。
请参见图3,图3为普通数据包的加密流程示意图,图3中sfvpn-dp为进行加密或解密处理,encap-output为用户态VPN模块的输出端口,sfvpn-input为数据包队列,实线流程代表第一次循环,虚线流程代表第二次循环,加密普通数据包具体流程如下:
步骤1、线程的第一次循环开始,原始数据包(即UDP数据包)经过dpdk-input或sangfortap走入VPP的转发流程中。
步骤2、若UDP数据包在ip4-input节点中判断为ipv4单播数据包,则将UDP数据包送入ip4-lookup节点中查询路由。
步骤3、根据在ip4-lookup中查询VPN路由表的结果,UDP数据包将会被路由至事先显示注册的虚拟网卡vpntunnel-tx中。其中,虚拟网卡vpntunnel-tx为一个虚拟口。
步骤4、UDP数据包了vpntunnel-tx中会调用封装接口raw-input,通过raw-input实现将UDP数据包传递至已经开发好的用户态VPN模块中。
步骤5、UDP数据包经过用户态VPN模块后,加密为加密数据包,调用封装的接口encap-output将数据包投递至事先实现好的虚拟网卡sfvpn-input节点的数据包队列中,至此线程的第一次循环结束。
步骤6、线程的第二次循环开始,线程在sfvpn-input节点上的收包队列中将用户态VPN模块处理后的UDP数据包投入第二次转发流程中。
步骤7、在第二次转发流程查询路由的过程中,由于UDP数据包被加密后其UDP头中的目的ip由对端子网的ip改为对端AF设备的目的ip,所以数据包会经过物理口进行发送,至此线程的第二次循环结束。具体的经由ip4-input节点、ip4-lookup节点、ethx-output节点将UDP数据包从物理口ethx-tx输出。
请参见图4,图4为普通数据包的解密流程示意图,图4中sfvpn-dp为进行加密或解密处理,encap-output为用户态VPN模块的输出端口,sfvpn-input为数据包队列,实线流程代表第一次循环,虚线流程代表第二次循环,解密普通数据包具体流程如下:
步骤1、线程的第一次循环开始,UDP数据包经过dpdk-input或sangfortap走入VPP的转发流程中。
步骤2、若UDP数据包在ip4-input节点中判断为ipv4单播数据包,则将UDP数据包送入ip4-lookup节点中查询路由。
步骤3、UDP数据包在ip4-lookup查询路由发现目的ip为本机ip,所以被投递至ip4-local节点。
步骤4、在ip4-local节点中,先判断数据包是否为UDP数据包,如果不是则将其继续向下投递至sangfor-tap-output中,如果是UDP数据包,则将其调用封装接口encap-input,将数据包通过此接口传递至用户态VPN模块中进行解密。
步骤5、UDP数据包经过用户态VPN模块进行解密后,转换为原始数据包,调用事先封装的接口raw-output,将数据包投递至事先实现的虚拟网卡sfvpn-input中的数据包队列中。至此,线程的第一次循环结束。
步骤6、线程的第二次循环开始,原始数据报在sfvpn-input上的数据包队列中被线程投递到VPP的转发流程中。
步骤7、经过第二次路由查询ip4-lookup,目的ip为本端子网内设备ip,因此UDP数据包经过物理口进行发送。至此线程的第二次循环结束。具体的经由ip4-input节点、ip4-lookup节点、ethx-output节点将UDP数据包从物理口ethx-tx输出。
请参见图5,图5为多播数据包、组播数据包的加密流程示意图,图5中sfvpn-dp为进行加密或解密处理,encap-output为用户态VPN模块的输出端口,sfvpn-input为数据包队列,实线流程代表第一次循环,虚线流程代表第二次循环,加密多播数据包、组播数据包的具体流程如下:
步骤1、线程的第一次循环开始,多播、广播原始数据包(即UDP数据包)经过dpdk-input或sangfortap走入VPP的转发流程中。
步骤2、数据包在ip4-input节点中判断UDP数据包是多播数据包还是广播数据包,因此送入mfib-forward-rpf节点中查询多播路由。
步骤3、如果数据包是多播UDP数据包,那么根据在mfib-forward-rpf中查询VPN多播路由表的结果,数据包将会被路由至事先显示注册的虚拟网卡vpntunnel-tx中。但是如果数据包是广播数据包,则不查路由,直接通过事先注册的函数xcast-input,将其传输至用户态VPN模块中。
步骤4、UDP数据包到了vpntunnel-tx中会先判断UDP数据包是否是多播数据包,如果是则调用封装接口xcast-input,通过xcast-input实现将数据包传递至用户态VPN模块中,如果不是多播数据包,则执行图3普通UDP数据包的加密流程中调用raw-input接口的相关流程。
步骤5、UDP数据包经过PR部门开发的用户态VPN模块后,加密为加密数据包,调用封装的接口encap-output将数据包投递至事先实现好的虚拟网卡sfvpn-input节点的数据包队列中,至此线程的第一次循环结束。
步骤6、线程的第二次循环开始,线程在sfvpn-input节点上的收包队列中将VPN模块处理后的数据包投入第二次转发流程中。
步骤7、在第二次转发流程查询路由的过程中,由于数据包被加密后其UDP头中的目的ip由对端子网的ip改为对端AF设备的目的ip,所以UDP数据包会经过物理口进行发送。至此,线程的第二次循环结束。具体的经由ip4-input节点、ip4-lookup节点、ethx-output节点将UDP数据包从物理口ethx-tx输出。
请参见图6,图6为多播数据包、组播数据包的解密流程示意图,图6中sfvpn-dp为进行加密或解密处理,encap-output为用户态VPN模块的输出端口,sfvpn-input为数据包队列,实线流程代表第一次循环,虚线流程代表第二次循环,解密多播数据包、组播数据包的具体流程如下:
步骤1、线程的第一次循环开始,加密数据包(即UDP数据包)经过dpdk-input或sangfortap走入VPP的转发流程中。
步骤2、若UDP数据包在ip4-input节点中判断为ipv4单播数据包,因此送入ip4-lookup节点中查询路由。
步骤3、UDP数据包在ip4-lookup查询路由发现目的ip为本机ip,所以被投递至ip4-local节点。
步骤4、在ip4-local节点中,先判断UDP数据包是否为UDP数据包,如果不是则将其继续向下投递至sangfor-tap中,如果是UDP数据包,则将其调用封装接口encap-input,将数据包通过此接口传递至PR部门开发的VPN模块中进行解密。
步骤5、加密数据包经过用户态VPN模块进行解密后,转换为多播、组播原始数据包,调用事先封装的接口xcast-output,将UDP数据包投递至事先实现的虚拟网卡sfvpn-input中的数据包队列中。至此,线程的第一次循环结束。
步骤6、线程的第二次循环开始,UDP数据包在sfvpn-input上的数据包队列中被线程投递到VPP的转发流程中。
步骤7、经过第二次路由查询ip4-lookup,目的ip为本端子网内多播网段,因此数据包经过物理口进行发送。至此,线程的第二次循环结束。
请参见图7,图7为本申请实施例所提供的一种UDP数据包的传输系统的结构示意图;
该系统可以包括:
判断模块100,用于通过输入接口接收UDP数据包,并判断所述UDP数据包是否为广播数据包;
第一处理模块200,用于当所述UDP数据包为所述广播数据包,则将所述广播数据包传输至用户态VPN模块;其中,所述用户态VPN模块为基于VPP架构的VPN模块;
第二处理模块300,用于当所述UDP数据包不为所述广播数据包,则根据所述UDP数据包对应的VPN路由表将所述UDP数据包路由至对应的虚拟网卡,调用所述虚拟网卡对应的封装接口将所述UDP数据包传输至所述用户态VPN模块;
传输模块400,用于当所述用户态VPN模块对所述UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口。
本实施例首先判断UDP数据包是否为广播数据包,若为广播数据包则直接传输至用户态VPN模块,若不为广播数据包则调用虚拟网卡对应的封装接口将所述UDP数据包传输至用户态VPN模块,提供了UDP数据包与用户态VPN模块结合的解决方案。进一步,本实施例应用到的用户态VPN模块为基于VPP架构的VPN模块,VPP架构具有高性能、模块化、灵活性强的优势可以使得UDP数据包的数据平面运行在用户态。因此本实施例能够将UDP数据包的数据平面迁移至用户态,提高UDP数据包的处理效率。
进一步的,所述判断模块100包括:
接收单元,用于通过输入接口接收UDP数据包;
类型确定单元,用于利用ip4-input节点确定所述UDP数据包的数据包类型;还用于根据所述数据包类型判断所述UDP数据包是否为广播数据包。
进一步的,所述第二处理模块300包括:
ipv4单播数据包处理子单元,用于当所述UDP数据包为ipv4单播数据包时,利用ip4-lookup节点查询所述UDP数据包对应的第一VPN路由表,并根据所述第一VPN路由表将所述UDP数据包路由至对应的虚拟网卡;还用于调用所述虚拟网卡对应的封装接口将所述UDP数据包传输至所述用户态VPN模块;
多播数据包处理子单元,用于当所述UDP数据包为多播数据包时,利用mfib-forward-rpf节点查询所述UDP数据包对应的第二VPN路由表,并根据所述第二VPN路由表将所述UDP数据包路由至对应的虚拟网卡;还用于调用所述虚拟网卡对应的封装接口将所述UDP数据包传输至所述用户态VPN模块。
进一步的,所述第一处理模块100具体为利用目标函数xcast-input将所述广播数据包传输至所述用户态VPN模块的模块。
进一步的,所述传输模块400包括:
队列加入单元,用于当所述用户态VPN模块对所述UDP数据包执行加密操作或解密操作后,将所述加密后的UDP数据包或所述解密后的UDP数据包传输至数据包队列;
地址获取单元,用于获取所述加密后的UDP数据包或所述解密后的UDP数据包的UDP头中的目的IP地址;
转发单元,用于根据所述目的IP地址将所述加密后的UDP数据包或所述解密后的UDP数据包转发至对应的物理网口。
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (12)

1.一种UDP数据包的传输方法,其特征在于,包括:
通过输入接口接收UDP数据包,并判断所述UDP数据包是否为广播数据包;
若是,则将所述广播数据包传输至用户态VPN模块;其中,所述用户态VPN模块为基于VPP架构的VPN模块;
若否,则根据所述UDP数据包对应的VPN路由表将所述UDP数据包路由至对应的虚拟网卡,调用所述虚拟网卡对应的封装接口将所述UDP数据包传输至所述用户态VPN模块;
当所述用户态VPN模块对所述UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口。
2.根据权利要求1所述传输方法,其特征在于,判断所述UDP数据包是否为广播数据包,包括:
利用ip4-input节点确定所述UDP数据包的数据包类型;
根据所述数据包类型判断所述UDP数据包是否为广播数据包。
3.根据权利要求1所述传输方法,其特征在于,根据所述UDP数据包对应的VPN路由表将所述UDP数据包路由至对应的虚拟网卡包括:
当所述UDP数据包为ipv4单播数据包时,利用ip4-lookup节点查询所述UDP数据包对应的第一VPN路由表,并根据所述第一VPN路由表将所述UDP数据包路由至对应的虚拟网卡;
当所述UDP数据包为多播数据包时,利用mfib-forward-rpf节点查询所述UDP数据包对应的第二VPN路由表,并根据所述第二VPN路由表将所述UDP数据包路由至对应的虚拟网卡。
4.根据权利要求1所述传输方法,其特征在于,将所述广播数据包传输至用户态VPN模块包括:
利用目标函数xcast-input将所述广播数据包传输至所述用户态VPN模块。
5.根据权利要求1至4任一项所述传输方法,其特征在于,所述将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口包括:
将所述加密后的UDP数据包或所述解密后的UDP数据包传输至数据包队列;
获取所述加密后的UDP数据包或所述解密后的UDP数据包的UDP头中的目的IP地址;
根据所述目的IP地址将所述加密后的UDP数据包或所述解密后的UDP数据包转发至对应的物理网口。
6.一种UDP数据包的传输系统,其特征在于,包括:
判断模块,用于通过输入接口接收UDP数据包,并判断所述UDP数据包是否为广播数据包;
第一处理模块,用于当所述UDP数据包为所述广播数据包,则将所述广播数据包传输至用户态VPN模块;其中,所述用户态VPN模块为基于VPP架构的VPN模块;
第二处理模块,用于当所述UDP数据包不为所述广播数据包,则根据所述UDP数据包对应的VPN路由表将所述UDP数据包路由至对应的虚拟网卡,调用所述虚拟网卡对应的封装接口将所述UDP数据包传输至所述用户态VPN模块;
传输模块,用于当所述用户态VPN模块对所述UDP数据包执行加密操作或解密操作后,将加密后的UDP数据包或解密后的UDP数据包传输至对应的物理网口。
7.根据权利要求6所述传输系统,其特征在于,所述判断模块包括:
接收单元,用于通过输入接口接收UDP数据包;
类型确定单元,用于利用ip4-input节点确定所述UDP数据包的数据包类型;还用于根据所述数据包类型判断所述UDP数据包是否为广播数据包。
8.根据权利要求6所述传输系统,其特征在于,所述第二处理模块包括:
ipv4单播数据包处理子单元,用于当所述UDP数据包为ipv4单播数据包时,利用ip4-lookup节点查询所述UDP数据包对应的第一VPN路由表,并根据所述第一VPN路由表将所述UDP数据包路由至对应的虚拟网卡;还用于调用所述虚拟网卡对应的封装接口将所述UDP数据包传输至所述用户态VPN模块;
多播数据包处理子单元,用于当所述UDP数据包为多播数据包时,利用mfib-forward-rpf节点查询所述UDP数据包对应的第二VPN路由表,并根据所述第二VPN路由表将所述UDP数据包路由至对应的虚拟网卡;还用于调用所述虚拟网卡对应的封装接口将所述UDP数据包传输至所述用户态VPN模块。
9.根据权利要求6所述传输系统,其特征在于,所述第一处理模块具体为利用目标函数xcast-input将所述广播数据包传输至所述用户态VPN模块的模块。
10.根据权利要求6至9任一项所述传输系统,其特征在于,所述传输模块包括:
队列加入单元,用于当所述用户态VPN模块对所述UDP数据包执行加密操作或解密操作后,将所述加密后的UDP数据包或所述解密后的UDP数据包传输至数据包队列;
地址获取单元,用于获取所述加密后的UDP数据包或所述解密后的UDP数据包的UDP头中的目的IP地址;
转发单元,用于根据所述目的IP地址将所述加密后的UDP数据包或所述解密后的UDP数据包转发至对应的物理网口。
11.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述UDP数据包的传输方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述UDP数据包的传输方法的步骤。
CN201811278460.5A 2018-10-30 2018-10-30 一种udp数据包的传输方法、系统及相关组件 Active CN111131043B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811278460.5A CN111131043B (zh) 2018-10-30 2018-10-30 一种udp数据包的传输方法、系统及相关组件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811278460.5A CN111131043B (zh) 2018-10-30 2018-10-30 一种udp数据包的传输方法、系统及相关组件

Publications (2)

Publication Number Publication Date
CN111131043A true CN111131043A (zh) 2020-05-08
CN111131043B CN111131043B (zh) 2022-04-29

Family

ID=70484553

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811278460.5A Active CN111131043B (zh) 2018-10-30 2018-10-30 一种udp数据包的传输方法、系统及相关组件

Country Status (1)

Country Link
CN (1) CN111131043B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801695A (zh) * 2011-05-27 2012-11-28 华耀(中国)科技有限公司 虚拟专用网通信设备及其数据包传输方法
CN103442015A (zh) * 2013-09-04 2013-12-11 深圳市华讯方舟科技有限公司 一种基于linux虚拟网卡的在无线网络控制器上对capwap隧道数据的处理方法及系统
CN103840994A (zh) * 2012-11-23 2014-06-04 华耀(中国)科技有限公司 一种用户端通过 vpn 访问内网的系统及方法
CN103945456A (zh) * 2014-05-12 2014-07-23 武汉邮电科学研究院 一种基于Linux系统的LTE基站用户面高效UDP数据发送优化方法
CN104579879A (zh) * 2014-12-05 2015-04-29 上海斐讯数据通信技术有限公司 一种虚拟专用网络通信系统、连接方法及数据包传输方法
CN104639564A (zh) * 2015-03-03 2015-05-20 北京极科极客科技有限公司 一种udp协议的代理方法
EP2908491A1 (en) * 2014-02-12 2015-08-19 HOB GmbH & Co. KG A communication system for transmitting data under a tunnel protocol
CN106797335A (zh) * 2016-11-29 2017-05-31 深圳前海达闼云端智能科技有限公司 数据传输方法、数据传输装置、电子设备和计算机程序产品

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801695A (zh) * 2011-05-27 2012-11-28 华耀(中国)科技有限公司 虚拟专用网通信设备及其数据包传输方法
CN103840994A (zh) * 2012-11-23 2014-06-04 华耀(中国)科技有限公司 一种用户端通过 vpn 访问内网的系统及方法
CN103442015A (zh) * 2013-09-04 2013-12-11 深圳市华讯方舟科技有限公司 一种基于linux虚拟网卡的在无线网络控制器上对capwap隧道数据的处理方法及系统
EP2908491A1 (en) * 2014-02-12 2015-08-19 HOB GmbH & Co. KG A communication system for transmitting data under a tunnel protocol
CN103945456A (zh) * 2014-05-12 2014-07-23 武汉邮电科学研究院 一种基于Linux系统的LTE基站用户面高效UDP数据发送优化方法
CN104579879A (zh) * 2014-12-05 2015-04-29 上海斐讯数据通信技术有限公司 一种虚拟专用网络通信系统、连接方法及数据包传输方法
CN104639564A (zh) * 2015-03-03 2015-05-20 北京极科极客科技有限公司 一种udp协议的代理方法
CN106797335A (zh) * 2016-11-29 2017-05-31 深圳前海达闼云端智能科技有限公司 数据传输方法、数据传输装置、电子设备和计算机程序产品

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
IRFAAN COONJAH等: ""Experimental performance comparison between TCP vs UDP tunnel using OpenVPN"", 《2015 INTERNATIONAL CONFERENCE ON COMPUTING, COMMUNICATION AND SECURITY (ICCCS)》 *
张焕杰等: "使用UDP传送以太网数据包扩展园区网", 《中国教育网络》 *
蔡俊朝等: "一种网络信息监管系统的设计与实现", 《微电子学与计算机》 *

Also Published As

Publication number Publication date
CN111131043B (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
TWI744359B (zh) 一種資料傳輸的方法及網路設備
US8958293B1 (en) Transparent load-balancing for cloud computing services
US20200059976A1 (en) IoT DEVICE CONNECTIVITY, DISCOVERY, AND NETWORKING
EP4024785A1 (en) Computing power routing method and apparatus
US20160301603A1 (en) Integrated routing method based on software-defined network and system thereof
US10148565B2 (en) OPENFLOW communication method and system, controller, and service gateway
WO2014201974A1 (zh) 业务路由报文处理方法、装置及网络系统
CN103339901A (zh) 内容导向网络环境中的终端和中间节点以及终端和中间节点的通信方法
WO2010020151A1 (zh) 报文处理方法、装置和系统
CN112671628A (zh) 业务服务提供方法及系统
WO2021073555A1 (zh) 业务服务提供方法及系统、远端加速网关
CN111786869B (zh) 一种服务器之间的数据传输方法及服务器
CN112968965B (zh) Nfv网络节点的元数据服务方法、服务器及存储介质
CN109474713B (zh) 报文转发方法和装置
WO2024021414A1 (zh) 数据传输
WO2023221452A1 (zh) 报文处理系统、方法、设备和存储介质
US20230269164A1 (en) Method and apparatus for sending route calculation information, device, and storage medium
CN113395212A (zh) 网络装置及其操作方法和非暂时性计算机可读介质
CN105991755B (zh) 业务报文分发方法及装置
CN107733765B (zh) 映射方法、系统和相关设备
CN109246016B (zh) 跨vxlan的报文处理方法和装置
CN107547680B (zh) 一种数据处理方法及装置
CN111131043B (zh) 一种udp数据包的传输方法、系统及相关组件
KR101996337B1 (ko) 교환기 처리 방법, 제어기, 교환기 및 교환기 처리 시스템
CN113595848B (zh) 一种通信隧道建立方法、装置、设备及存储介质

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