CN113434252B - 面向5g网络功能虚拟化的自定义vnf部署系统及方法 - Google Patents
面向5g网络功能虚拟化的自定义vnf部署系统及方法 Download PDFInfo
- Publication number
- CN113434252B CN113434252B CN202110719767.XA CN202110719767A CN113434252B CN 113434252 B CN113434252 B CN 113434252B CN 202110719767 A CN202110719767 A CN 202110719767A CN 113434252 B CN113434252 B CN 113434252B
- Authority
- CN
- China
- Prior art keywords
- message
- vnf
- user
- customized
- deployment
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000006870 function Effects 0.000 claims abstract description 62
- 238000011161 development Methods 0.000 claims abstract description 61
- 238000012544 monitoring process Methods 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000012795 verification Methods 0.000 claims abstract description 14
- 238000004806 packaging method and process Methods 0.000 claims abstract description 8
- 238000007493 shaping process Methods 0.000 claims description 20
- 238000001514 detection method Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000007726 management method Methods 0.000 abstract description 12
- 238000005516 engineering process Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 abstract description 7
- 238000011156 evaluation Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 235000019580 granularity Nutrition 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 241000270295 Serpentes Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000009517 secondary packaging Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种面向5G网络功能虚拟化的自定义VNF部署系统及方法,属于通信技术领域,通过用户态DPDK技术将网络功能的实现从内核中剥离,降低开发门槛,提高可定制程度;提供了一类模块化方法实现数据包处理流程,进一步减小开发难度,提升实现效率;并在用户态数据包处理过程中预设了监控点,可通过简单的配置获取数据包和数据流级别的监控指标,以支撑VNF的功能性验证和性能评估;最后该工具集支持容器化部署方式,可通过容器镜像封装,对外提供统一的虚拟网络接口和简洁的控制接口,从而加快从功能交付到服务部署的流程,且上手简单,逻辑清晰,定制化程度高,易于部署和管理,并且提供内生的监控功能便于VNF性能指标的获取。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种面向5G网络功能虚拟化的自定义VNF部署系统及方法。
背景技术
电信行业内的服务提供通常要由网络运维人员在实地部署各个物理设备或设施来实现,这些设备和设施将承担服务中的具体功能;专用物理设备的性能高但功能固化,设备之间的连接关系以及排布顺序都受到严格的限制,在设备部署后更改网络拓扑结构或功能元素部署位置都比较困难。由于网络服务对专有设备的依赖和物理化的部署方式,当服务内容更新时,需要相应增加专用设备、重构网络拓扑、重置部署规则,因而会带来如资金成本提高,运维难度提升,产品化周期延长等一系列问题。
随着计算虚拟化以及软件定义网络(SDN)的发展和进步,网络虚拟化和软件化网络功能已经逐步成为提升网络效率,提高网络灵活性,降低网络运营成本的技术趋势。网络功能虚拟化(NFV)将网络功能从专有硬件设备上剥离,并凭借虚拟化技术为网络服务的设计、实现、部署和管理提供了一种全新的方式。在NFV模式下,一个给定的网络服务被分解成一系列虚拟网络功能(VNF)的组合。VNF通过软件的方式实现,因此具备硬件依赖程度低,可定制化程度高,部署灵活,扩展性强等一系列优点。
在5G和后5G时代,网络服务的提供者不再局限于各大网络运营商,网络服务的创新将与各产业纵向接轨,网络服务类型将会呈现爆炸性增长的趋势。为了在通用网络基础设施上提供满足各行业用例的多样化服务,网络切片成为了5G体系架构中的重要解决方案,VNF正是网络切片中功能服务的具体实现方式。然而,设计实现VNF涉及到多方面领域的知识,例如操作系统,内核网络协议栈,虚拟化技术等,导致VNF的开发门槛较高;并且VNF的功能性验证和性能评估依赖于通用的监控工具,不仅存在无法满足特定监控需求的问题,还有可能带来额外的系统开销;此外,在供应商完成对VNF的开发或修改后,需要将其打包递交给运营商或服务提供者,之后才能由NFV管控平台对其进行部署和管理,所以从VNF的开发实现到网络功能的部署和运行还存在很长的距离。
现有技术中,基于内核协议栈的软件中间件开发仍然是目前虚拟网络功能的主流实现方法,例如,通过iptables添加或修改Linux内核中的数据包过滤规则,对匹配到的网络数据包按照预设的规则进行处理,以此实现TCP连接追踪或网络防火墙等功能;通过libnids捕获网络数据包,实现数据包或数据流重组以及网络入侵检测等功能。虽然上述方法能够实现虚拟网络功能的定制化开发,但是只限于对工具提供的现有方法进行组合,无法直接操作数据包,因此网络功能的自定义程度有限;另外iptables和libnids的性能和内核实现有关,因此性能表现和开销情况都无法得到保证,例如libnids通过libpcap捕获数据包时将造成内核态与用户态之间大量的内存复制,不仅会大幅增加系统开销还会对网络本身的性能造成影响。
在另一个现在技术中,模块化软件路由器Click将VNF的基础功能封装成一系列称为元素的功能模块,每个模块提供功原子性的网络功能。Click通过单个元素就可实现简单的VNF,组合多个元素可以实现更复杂的网络功能。为了支持定制化程度更高的VNF,Click将基础的元素封装成C++的类,开发人员可以基于已有元素实现新的元素,完成定制化的VNF开发。Click路由器的定制化开发门槛较高,且参考资料不足。Click每个元素的配置参数文件用于设置路由器初始化的状态,如果要对网络功能进行自定义修改就必须对元素进行重写。而Click的相关参考资料较少,功能函数不够丰富,导致重写元素的工作量大,开发门槛高。
发明内容
针对现有技术中的上述不足,本发明提供的一种面向5G网络功能虚拟化的自定义VNF部署系统及方法,以解决上述问题。
为了达到以上目的,本发明采用的技术方案为:
本方案提供一种面向5G网络功能虚拟化的自定义VNF部署系统,包括:封装的用户自定义VNF容器、用于提供用户态容器网络的第一virtio-user/vhost-kernel设备和用户态OVS、用于提供内核旁路的第二virtio-user/vhost-kernel设备以及用于提供内核态容器网络的内核态OVS和veth-pair设备;
所述用户自定义VNF容器的DPDK用户态VNF应用通过第一virtio-user/vhost-kernel设备完成应用与用户态OVS连接;所述用户态OVS和内核态OVS利用第二virtio-user/vhost-kernel设备进行流量转发;所述用户态OVS用于转发tap设备以及veth-pair设备的流量,所述用户自定义VNF容器中设置有用于数据传输且可自定义的用户态可编程路径。
进一步地,所述第二virtio-user/vhost-kernel设备中一个vhost-kernel设备的一端对应一个设置于内核态OVS上的tap设备,且所述veth-pair设备的另一端可添加网桥。
再进一步地,所述用户自定义VNF容器的用户态可编程路径包括报文接收API、报文发送API、设置于用户态可编程路径上任意位置的监控点以及位于报文接收API和报文发送API两个接口间可选择的报文处理模块;
所述报文接收API的输入参数包括本地列表和报文最大接收个数;
所述报文发送API的输入参数为mmbuf结构体,所述mmbuf结构体为封装的报文mbuf指针;且所述mmbuf结构体包括报文mbuf的指针、报文优先级以及监控信息。
再进一步地,所述报文处理模块包括均可自定义且能选择性调用的入口令牌桶限速单元、队列调度单元以及出口整形单元;
所述入口令牌桶限速单元,用于通过结构体mmbuf中的mbuf指针查看报文头部信息,将报文头部信息与配置文件进行匹配,并根据匹配结果查看令牌桶的令牌数量,若令牌数量满足预设条件则发送数据包并消耗令牌,否则将数据包丢弃并释放内存;
所述队列调度单元,用于对报文进行排队处理,其在排队处理前向结构体mmbuf写入报文的优先级信息,在入队和出时时,向结构体mmbuf中写入用于监控的时间戳,所述队列调度单元包括先入先出队列FIFO、优先级队列PQ以及用户定制队列CQ;
所述出口整形单元,用于利用随机早期检测对流量进行整形处理。
再进一步地,所述将报文头部信息与配置文件进行匹配,其具体为:将报文头部信息与配置文件进行匹配,若不匹配,则将报文丢弃并释放mbuf指针指向的内存,若匹配,则在结构体mmbuf中添加报文优先级参数以及时间戳。
再进一步地,所述队列调度单元采用轮询式进行入队和出队处理。
再进一步地,所述利用随机早期检测对流量进行整形处理,其具体为:查看结构体mmbuf中报文的优先级信息,并判断优先级信息是否最高,若是,则不参与整形,并调用报文发送API接口发送数据包,否则,根据配置文件中预设的丢包概率数组以及当前队列长度共同判断是否丢包,并按预设的发送时间间隔调用报文发送API接口将数据包发送至网络。
本发明还提供了一种面向5G网络功能虚拟化的自定义VNF部署方法,包括以下步骤:
S1、确定开发方案;
S2、根据确定的开发方案,在开发主机中通过编程或修改配置文件的方式进行自定义VNF的开发;
S3、在开发主机中对自定义VNF源码进行编译;
S4、将编译完成的自定义VNF封装至容器中,并在开发主机中调用部署API完成部署,并添加辅助容器网络与自定义VNF构建容器网络,并进行实验验证;
S5、通过验证后,将自定义VNF的容器镜像上传至实际部署该应用的部署主机中,调用部署API完成部署,完成面向5G网络功能虚拟化的自定义VNF开发部署。
进一步地,所述步骤S1中开发方案包括以下任意一种:
(a)通过调用报文接收API和报文发送API完成报文在数据路上的收发,且自定义报文处理流程;
(b)选择一个或多个报文处理模块,并根据自定义VNF的功能对一个报文处理模块或多个报文处理模块中配置文件中的参数进行编辑;
(c)通过改写报文处理模块的代码,在现有报文处理模块的基础上完成自定义VNF的开发。
本发明的有益效果:
(1)本发明提出了一种面向VNF定制化开发的SDK和其相应的部署方案,通过用户态DPDK技术将网络功能的实现从内核中剥离,降低开发门槛,提高可定制程度;提供了一类模块化方法实现数据包处理流程,进一步减小开发难度,提升实现效率;并在用户态数据包处理过程中预设了监控点,可通过简单的配置获取数据包和数据流级别的监控指标,以支撑VNF的功能性验证和性能评估;最后该工具集支持容器化部署方式,可通过容器镜像封装,对外提供统一的虚拟网络接口和简洁的控制接口,从而加快从功能交付到服务部署的流程。该方案上手简单,逻辑清晰,定制化程度高,易于部署和管理,并且提供内生的监控功能便于VNF性能指标的获取。
(2)本发明提供了一种开发门槛低、可定制化程度高的VNF实现工具集:本工具集基于DPDK技术开发,绕开现有内核协议栈,提供开放的用户态数据路径,使开发者具有在数据路径上对报文进行直接操作和处理的能力,从而满足VNF高度定制化的需求。通过本工具集对DPDK报文处理流程的二次封装,开发者可以在不掌握DPDK背景知识的前提下,利用简明的API进行网络功能开发,此外本工具集包含若干典型报文处理模块,开发者可以通过配置文件设置各模块参数,完成对基础网络功能的定义。
(3)本发明中工具集包含内生监控能力,提供低开销、高细粒度的监控数据:本工具集数据处理模块的入口处和出口处都预设有监控点,通过配置文件进行简单蛇者就可以细粒度、低开销地获取网络监控信息(例如:时延,丢包率等)。在开发和部署的过程中,可根据对监控能力或性能表现的不同需求选择开启或关闭监控功能。
(4)本发明提供完善的部署与编译API,便于用户快速地编译部署,易于管理,有较好的网络兼容性:本工具集以容器技术作为网络功能封装和部署的手段,在其基础上开发的网络功能,能够以容器镜像的形式在不同厂商之间递交,并由镜像仓库做统一的存储和管理。工具集提供用于服务部署,销毁,启动和停止等操作的API,并提出一种用于用户态DPDK容器网元的网络连接方式,可对外暴露适用于内核容器网络的虚拟网络接口,便于NFV平台进行统一的编排和管理。
附图说明
图1为本发明的自定义VNF部署架构图。
图2为本发明的VNF开发工具软件架构。
图3为本发明的自定义VNF部署环境示意图。
图4为本发明的自定义VNF部署流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
在对本发明进行说明之前,下面对以下参数进行解释,如表1所示:
表1
如图1-图2所示,本发明一种面向5G网络功能虚拟化的自定义VNF部署系统,包括:封装的自定义VNF容器、用于提供用户态容器网络的第一virtio-user/vhost-kernel设备和用户态OVS、用于提供内核旁路的第二virtio-user/vhost-kernel设备以及用于提供内核态容器网络的内核态OVS和veth-pair设备;自定义VNF容器的DPDK用户态VNF应用通过第一virtio-user/vhost-kernel设备完成应用与用户态OVS连接;所述用户态OVS和内核态OVS利用第二virtio-user/vhost-kernel设备进行流量转发;所述用户态OVS用于转发tap设备以及veth-pair设备的流量。第二virtio-user/vhost-kernel设备中一个vhost-kernel的一端对应一个设置于内核态OVS上的tap设备;所述veth-pair设备的另一端可添加网桥,所述用户自定义VNF容器中设置有用于数据传输且可自定义的用户态可编程路径。
VNF部署方案描述:本发明设计的VNF部署架构主要包含6个重要组成部分,分别为封装VNF的容器,用于提供用户态容器网络的virtio-user/vhost-kernel设备和用户态OVS,用于提供内核旁路的virtio-user/vhost-kernel设备,以及用于提供内核态容器网络的内核态OVS和veth-pair设备。容器中的DPDK用户态VNF应用首先通过virtio-user接口和用户态OVS上添加的vhost-user后端完成应用与用户态OVS之间的数据转发。virtio-user/vhost-kernel设备对则负责在用户态OVS和内核态OVS之间转发流量,当用户态报文到达virtio-user时会被用户态的轮询线程放置到队列中,再由vhost-kernel后端的内核线程将队列中的报文拷贝到内核skb中,最后该报文会被视为一个由tap设备(一个vhost-kernel对应一个tap设备,tap设备被添加到内核态OVS上)接收的报文;反之内核态报文要到达时,先从QDISC队列中出队,之后会被发送到tap设备上,并唤醒vhost-kernel的内核线程,该线程会将报文放置到用户态队列中,最终被用户态轮询线程接收。用户态OVS则负责tap网卡以及对应的veth网卡之间的流量转发,veth pair的另外一端则可添加到其他网桥或其他容器的名字空间中,从而完成VNF与通用容器网络的组网。上述提到的存在对应关系的端口间,都要通过OVS流表项进行设置,如图1中内核态OVS左侧的tap网卡和左侧的veth设备间,以及用户态OVS左侧的vhost-user和virtio-user间。虽然上述架构较为复杂,但是本工具集为上层NFV平台提供了用于部署该架构的接口,当该接口被调用后,该架构将被自动部署。但是部署接口不会生成图1中的两个veth-pair设备对,即此时的VNF对于外部容器网络来说成为了一个待连接的内核态OVS,而具体的连接则可以由NFV平台来进行。
本实施例中,自定义VNF容器的用户态可编程路径包括报文接收API、报文发送API、设置于用户态可编程路径上任意位置的监控点以及位于报文接收API和报文发送API两个接口间可选择的报文处理模块;所述报文接收API的输入参数包括本地列表和报文最大接收个数;所述报文发送API的输入参数为mmbuf结构体,所述mmbuf结构体为封装的报文mbuf指针;且所述mmbuf结构体包括报文mbuf的指针、报文优先级以及监控信息。
本实施例中,所述报文处理模块包括均可自定义且能选择性调用的入口令牌桶限速单元、队列调度单元以及出口整形单元;所述入口令牌桶限速单元,用于通过结构体mmbuf中的mbuf指针查看报文头部信息,将报文头部信息与配置文件进行匹配,并根据匹配结果查看令牌桶的令牌数量,若令牌数据满足预设条件则发送数据包并消耗令牌,否则将数据包丢弃并释放内存;所述队列调度单元,用于对报文进行排队处理,其在排队处理前向结构体mmbuf写入报文的优先级信息,在入队和出时时,向结构体mmbuf中写入用于监控的时间戳,所述队列调度单元包括先入先出队列FIFO、优先级队列PQ以及用户定制队列CQ;所述出口整形单元,用于利用随机早期检测对流量进行整形处理。所述队列调度单元采用轮询式进行入队和出队处理。所述将报文头部信息与配置文件进行匹配,其具体为:将报文头部信息与配置文件进行匹配,若不匹配,则将报文丢弃并释放mbuf指针指向的内存,若匹配,则在结构体mmbuf中添加报文优先级参数以及时间戳。所述利用随机早期检测对流量进行整形处理,其具体为:查看结构体mmbuf中报文的优先级信息,并判断优先级信息是否最高,若是,则不参与整形,并调用报文发送API接口发送数据包,否则,根据配置文件中预设的丢包概率数组以及当前队列长度共同判断是否丢包,并按预设的发送时间间隔调用报文发送API接口将数据包发送至网络。
本实施例中,本发明是在DPDK用户态可编程数据平面的基础上,通过提供数据包操作接口,报文处理模块,网络指标监控能力,以及相应的VNF部署架构和管理API,来支撑开发者进行定制化网络功能开发和测试,支持服务运营者进行服务部署和管理的开发工具集。具体来说,本工具集提供的VNF自定义开发方案能够在保证高度定制化的前提下加快开发速度,本工具集包含的高精度低开销的VNF监控手段能够在简化服务验证难度的同时为服务管理提供必要的网络监控数据,本工具集设计的部署架构能够使基于DPDK程序开发的用户态VNF容器兼容于通用容器网络,本工具集封装的管理API能够使NFV管理平台忽略VNF底层的实现方式和部署方式,对其进行部署和管理,进而加快了服务从最初开发、验证,到最终部署、管理的循环速度。工具集包含的自定义VNF开发架构如图2所示,工具集设计的VNF部署架构如图1所示。
本实施例中,如图2所示,开发者在工具集提供的用户态可编程数据路径上进行VNF开发。工具集在数据路径的入口和出口处分别提供了报文接收API和报文发送API,用来完成报文在该数据路径上的收发操作,在报文接收后用户可对其进行一系列的控制和操作,处理完成后再调用发送API将其发送;工具集在数据路径上针对典型网络功能封装了三类报文处理模块,分别负责入口限速,队列调度,以及出口流量整形等操作,用户可通过配置文件对这些模块进行定义,从而快速组合出预期的网络功能;最后,工具集在数据路径的关键位置预设了监控点,一方面在这些监控点上可以插入监控所需的辅助信息,另一方面也可以在监控点上获取指标计算所需的监控数据,预设的监控指标将通过这些辅助信息和监控数据进行计算。
本实施例中,如图1所示,图中L2FWD-DPDK为DPDK二层转发实例,本工具集在该实例的基础上进行二次开发,提供用于实现定制化VNF的二层可编程数据路,因此用该实例作为范例对自定义VNF的部署架构进行阐述。通常来讲部署DPDK应用需要将物理网卡绑定到用户态驱动,从而实现跨越内核协议栈的数据收发操作,然而这种部署方式对硬件依赖较强、灵活性较差,无法适应NFV的技术发展趋势,因此工具集为其设计了一种纯虚拟的容器化部署方案。该方案使用容器技术对DPDK应用进行封装和部署,并通过两类OVS交换机和三种虚拟网卡的组合,最终使得用户态DPDK容器能够对外提供统一的虚拟以太设备接口,从而兼容于通用容器网络。服务开发者在VNF开发工具的基础上,根据定制化需求的不同选择不同的开发方式,即可完成网络功能的开发,同时在开发和测试的过程中,可以开启恰当的监控点获取测试信息,在开发完成后以容器镜像的方式向服务运行商递交服务。运营商可以忽略具体的VNF部署架构,仅通过API调用对VNF进行部署和管理等,同时也可凭借VNF监控功能获取服务部署后的监控数据。
本实施例中,本发明为开发者提供的用于VNF开发的二层可编程数据,如图1所示,是在DPDK二层转发实例的基础上实现的。该实例提供了最基础的二层数据转发功能,当报文被接收端口接收后该程序会将报文的指针发送到发送端口的发送队列,当队列满时或到达预设的发送时间时,队列中指针所对应的报文将会被发送。在本发明的设计中取消了这一发送逻辑,取而代之的是最基础的报文接收API和发送API,以及在这两个接口间可选的报文处理模块。监控点可被人为地设置在数据路径上的各个关键位置,如报文接收后或发送前。值得一提的是,在整个数据路径上,操作的直接对象事实上是报文的指针,因为在用户态网络端口接收到报文后,就已经将其以DPDK-mbuf的形式(DPDK存储网络报文的数据结构,类似于内核中的skbuf)存储在了DPDK预分配好的内存池中,当然通过mbuf指针本发明同样可以对内存中的报文进行操作。考虑到队列调度和监控的需要,本发明定义了新的结构体——mmbuf(monitored mbuf)对mbuf的指针进行二次封装,在该结构体中除了包含报文mbuf的指针,还保存有报文优先级和监控所需信息等,如:当前时间戳,报文UUID等(具体内容将在数据监控能力部分介绍)。也就是说mmbuf是本工具集可编程数据路径上的实际操作对象,而不是DPDK的mbuf。
本实施例中,报文接收和发送API:为了向用户提供最高程度的定制化能力,本发明修改了L2FWD原本的转发逻辑,精炼出了两个最基本的程序接口——报文接收API和报文发送API。报文接收API旨在报文到达接收端口后让开发者获取到报文指针,发送API则旨在将指针所指向的网络报文通过发送端口发送到网络中。由此可见在接收和发送的中间过程中,开发者拥有足够的自由度对报文进行多种自定义处理,如对报文进行排队处理,或者对报文内容进行修改等。由于DPDK采用无中断的轮询模式处理数据,报文收发都在同一个主循环中被调用。
本实施例中,报文接收API:该接口的输入参数包括一个本地的列表和以及一个报文最大接收个数,返回值为收到的报文个数。该函数调用后,会按照传入的最大接收个数的参数值从端口接收队列尽力接收数据包,随后将每个报文的mbuf指针封装到mmbuf中,若监控功能开启则在mmbuf中添加报文UUID和时间戳,若需要进行优先级处理则写入优先级信息,之后再将mmbuf写入到先前传入的本地列表当中。后续开发者可根据该列表中的辅助信息以及报文的指针做定制化开发。
本实施例中,报文发送API:L2FWD实例的报文发送逻辑是,在每次循环检查各个端口的发送队列,当发送队列的报文个数已经达到最大发送个数时就将队列中对应的报文全部发送,或达到预定发送时间时将端口发送队列中的报文全部发送。本发明没有对该逻辑进行修改,并在此基础上开发了报文发送API。报文发送API的输入参数为mmbuf,当发送API被调用后,入参mmbuf中的mbuf指针就会被添加到发送端口的发送队列中,此时在本发明的处理逻辑中,数据包已被发送。即用户需要发送某个报文时,就以该报文对应的mmbuf作为入参调用报文发送API。
本实施例中,报文处理模块包括入口令牌桶限速单元,队列调度单元,出口整形单元三个部分,可以使用配置文件对各模块的具体操作进行定义,并且各模块均可被选择性调用。
本实施例中,入口令牌桶限速单元:该单元包含两类基础功能:基于令牌桶的数据流限速以及简单的防火墙。首先,该模块会从配置文件中读取相应的配置信息,之后根据参数对令牌桶进行初始化。当报文接收API在主循环中被调用,即新的报文被接收后,该模块会通过mmbuf中的mbuf指针查看报文的头部信息,如果没有与配置文件中的匹配规则匹配,报文将被立刻丢弃并释放掉mbuf指向的内存,反之则在mmbuf中添加优先级参数以及时间戳等信息,然后查看令牌桶中是否有足够的令牌,有则发送数据包并消耗令牌,没有则将数据包丢弃并释放内存。
本实施例中,队列调度单元:队列调度模块中预实现了三种队列调度方法,分别是先入先出队列(FIFO),优先级队列(PQ),以及用户定制队列(CQ)。队列中存储的实体为mmbuf,当需要采用队列调度模块对报文进行排队处理时,在队列调度模块之前的操作中(如,报文接收,入口限速),需要向mmbuf中写入该报文的优先级信息。同样,在入队和出队时,该模块同样可以向mmbuf中写入用于监控的时间戳等信息,便于报文排队时间等指标的计算。队列调度模块采用轮询的方式进行入队和出队操作,每个队列通过不同的时间片来决定出队速度。需要注意的是,由于该模块是可选模块,所以入队与出队不直接等同于报文在数据路径上的接收和发送,例如在入队前要先经过入口限速模块的处理,发送前要经过出口整形模块处理等。
本实施例中,出口整形单元:该单元采用随机早期检测(Random EarlyDetection)对流量进行整形,当报文mmbuf到达该模块后首先查看其优先级信息,如果优先级最高则不参与整形操作,直接调用报文发送API发送,其他优先级的数据包则根据配置文件中预设的丢包概率数组以及当前的队列长度共同判断是否丢包。之后再按照预设的发送时间间隔调用发送API将数据包发送到网络(可通过配置文件设定时间间隔服从的分布,以及分布的具体参数信息)。
本实施例中,数据路监控能力,通常针对VNF的监控是独立于VNF本身设计的,因此对VNF进行监控时需要在数据路径上的特定位置捕获报文,或在数据路径的入口处向报文的特定字段写入用于监控的标识信息,并且为了不影响报文在网络中的转发和处理还需在出口处将标识信息剥去。显然,这类操作在数据路径流量吞吐较大时,往往会涉及到频繁的内存拷贝和上下页切换等操作,会造成极大的系统开销,同时报文中可用于写入标识信息的空间也十分有限。
本实施例中,由DPDK的L2FWD实例可知,在该二层转发路径上操作的实体并非报文本身,而是指向存储报文的mbuf的指针。在此基础上,设计了新的结构体mmbuf,作为本发明的数据路径操作实体。一方面mmbuf中会存储在某一监控点上记录的监控信息,另一方面也会存入报文的优先级信息。凭借mmbuf本发明解决了上述两个监控VNF时会带来的问题,第一,由于在整个数据路径上操作的实体均为轻量的mmbuf,而报文一直存储在预先分配好的用户态内存中,没有涉及到拷贝等内存操作,所以该方法是十分轻量高效的;第二,由于mmbuf是在用户态定义的结构体,其没有严格的空间限制,因此本发明在mmbuf中可以更为自由地添加监控信息,如包含64个16进制数字的UUID等。
由上述报文处理操作本发明可以知道,在数据路径上的每个关键位置,本发明都可以向mmbuf插入该位置对应的监控信息。例如,在报文接收API处,将会在接收报文所对应的mmbuf中写入报文此刻时间戳,以及该报文的UUID和优先级等信息;在报文发送API处将会写入发送时刻的时间戳。后续通过记录的UUID和接收、发送的时间戳信息,就能确认每一个报文在该自定义VNF数据路径上总共的处理时间。同理,在每个报文处理模块的入口和出口处,都能写入时间戳信息,通过UUID和出入时间戳就能够计算每个报文在报文各个处理模块的处理时间。为了方便上层应用对监控指标的计算和处理,这些关键信息都将被存入到中央数据库当中。NFV平台可通过配置文件定义开启哪些监控点,并通过数据库中存储的监控数据计算需要的监控指标。
本发明的部署环境如图3所示。本发明部署方便,在一台Linux环境的开发主机中通过本工具集完成自定义VNF的开发与验证后,将自定义VNF容器的镜像打包上传给Linux环境的网络功能部署主机,通过自定义本工具集提供的部署接口即可快速地完成自定义VNF的部署。基于上述关于本工具集及其模块功能的具体描述,现将详细介绍如何使用本发明进行自定义。整体流程如下所述:1.准备工作
在开发主机中准备好用于开发的编译环境以及用于进行验证实验的虚拟容器网络,在部署主机中准备好部署的软件环境以及部署脚本。
2.主要流程:
如图4所示,本工具集有较好的可读性和接口设计,提供多种不同细粒度的可定制化方案,操作方便,具体流程如下:
S1、确定开发方案;
本实施例中,首先开发人员根据需要实现的具体功能与定制化程度进行开发方案选择:a)通过调用报文接收API和报文发送API完成报文在数据路上的收发,中间的报文处理流程完全由开发者自主设计实现b)可选择使用工具集提供的报文处理模块,开发者根据VNF的功能需要对各模块配置文件中的参数进行编辑,从而完成自定义报文处理模块块;通过对多个自定义报文处理模块进行组合,还可以实现更为复杂的自定义VNF;c)通过改写报文处理模块,在已有模块的基础上完成自定义VNF的开发。
本实施例中,所述报文接收API、报文发送API以及报文处理模块的具体实施例已在上述内容中阐述,此处不在赘述。
S2、根据确定的开发方案,在开发主机中通过编程或修改配置文件的方式进行自定义VNF的开发;
S3、在开发主机中对自定义VNF源码进行编译;
S4、将编译完成的自定义VNF封装至容器中,并在开发主机中调用部署API完成部署,并添加辅助容器网络与自定义VNF构建容器网络,并进行实验验证;
S5、通过验证后,将自定义VNF的容器镜像上传至实际部署该应用的部署主机中,调用部署API完成部署,完成面向5G网络功能虚拟化的自定义VNF开发部署。
本实施例中,通过验证后,将自定义VNF的容器镜像上传到实际部署该应用的部署主机中,调用部署API完成部署,最终完成整个开发部署测试的闭环工作。
本实施例中,上述方法可执行本发明任意实施例所提供的系统结构,具备执行系统相应的功能模块和有益效果,此处不在赘述。
Claims (9)
1.一种面向5G网络功能虚拟化的自定义VNF部署系统,其特征在于,包括:封装的用户自定义VNF容器、用于提供用户态容器网络的第一virtio-user/vhost-kernel设备和用户态OVS、用于提供内核旁路的第二virtio-user/vhost-kernel设备以及用于提供内核态容器网络的内核态OVS和veth-pair设备;
所述用户自定义VNF容器的DPDK用户态VNF应用通过第一virtio-user/vhost-kernel设备完成应用与用户态OVS连接;所述用户态OVS和内核态OVS利用第二virtio-user/vhost-kernel设备进行流量转发;所述用户态OVS用于转发tap设备以及veth-pair设备的流量;所述用户自定义VNF容器中设置有用于数据传输且可自定义的用户态可编程路径。
2.根据权利要求1所述的面向5G网络功能虚拟化的自定义VNF部署系统,其特征在于,所述第二virtio-user/vhost-kernel设备中一个vhost-kernel设备的一端对应一个设置于内核态OVS上的tap设备,且所述veth-pair设备的另一端可添加网桥。
3.根据权利要求1所述的面向5G网络功能虚拟化的自定义VNF部署系统,其特征在于,所述用户自定义VNF容器的用户态可编程路径包括报文接收API、报文发送API、设置于用户态可编程路径上任意位置的监控点以及位于报文接收API和报文发送API两个接口间可选择的报文处理模块;
所述报文接收API的输入参数包括本地列表和报文最大接收个数;
所述报文发送API的输入参数为mmbuf结构体,所述mmbuf结构体为封装的报文mbuf指针;且所述mmbuf结构体包括报文mbuf的指针、报文优先级以及监控信息。
4.根据权利要求3所述的面向5G网络功能虚拟化的自定义VNF部署系统,其特征在于,所述报文处理模块包括均可自定义且能选择性调用的入口令牌桶限速单元、队列调度单元以及出口整形单元;
所述入口令牌桶限速单元,用于通过结构体mmbuf中的mbuf指针查看报文头部信息,将报文头部信息与配置文件进行匹配,并根据匹配结果查看令牌桶的令牌数量,若令牌数量满足预设条件则发送数据包并消耗令牌,否则将数据包丢弃并释放内存;
所述队列调度单元,用于对报文进行排队处理,其在排队处理前向结构体mmbuf写入报文的优先级信息,在入队和出队时,向结构体mmbuf中写入用于监控的时间戳,所述队列调度单元包括先入先出队列FIFO、优先级队列PQ以及用户定制队列CQ;
所述出口整形单元,用于利用随机早期检测对流量进行整形处理。
5.根据权利要求4所述的面向5G网络功能虚拟化的自定义VNF部署系统,其特征在于,所述将报文头部信息与配置文件进行匹配,其具体为:将报文头部信息与配置文件进行匹配,若不匹配,则将报文丢弃并释放mbuf指针指向的内存,若匹配,则在结构体mmbuf中添加报文优先级参数以及时间戳。
6.根据权利要求4所述的面向5G网络功能虚拟化的自定义VNF部署系统,其特征在于,所述队列调度单元采用轮询式进行入队和出队处理。
7.根据权利要求4所述的面向5G网络功能虚拟化的自定义VNF部署系统,其特征在于,所述利用随机早期检测对流量进行整形处理,其具体为:查看结构体mmbuf中报文的优先级信息,并判断优先级信息是否最高,若是,则不参与整形,并调用报文发送API接口发送数据包,否则,根据配置文件中预设的丢包概率数组以及当前队列长度共同判断是否丢包,并按预设的发送时间间隔调用报文发送API接口将数据包发送至网络。
8.一种如权利要求1-7中任一所述的一种面向5G网络功能虚拟化的自定义VNF部署系统的自定义VNF部署方法,其特征在于,包括以下步骤:
S1、确定开发方案;
S2、根据确定的开发方案,在开发主机中通过编程或修改配置文件的方式进行自定义VNF的开发;
S3、在开发主机中对自定义VNF源码进行编译;
S4、将编译完成的自定义VNF封装至容器中,并在开发主机中调用部署API完成部署,并添加辅助容器网络与自定义VNF构建容器网络,并进行实验验证;
S5、通过验证后,将自定义VNF的容器镜像上传至实际部署该应用的部署主机中,调用部署API完成部署,完成面向5G网络功能虚拟化的自定义VNF开发部署。
9.根据权利要求8所述的面向5G网络功能虚拟化的自定义VNF部署系统的自定义VNF部署方法,其特征在于,所述步骤S1中开发方案包括以下任意一种:
(a)通过调用报文接收API和报文发送API完成报文在数据路上的收发,且自定义报文处理流程;
(b)选择一个或多个报文处理模块,并根据自定义VNF的功能对一个报文处理模块或多个报文处理模块中配置文件中的参数进行编辑;
(c)通过改写报文处理模块的代码,在现有报文处理模块的基础上完成自定义VNF的开发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110719767.XA CN113434252B (zh) | 2021-06-28 | 2021-06-28 | 面向5g网络功能虚拟化的自定义vnf部署系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110719767.XA CN113434252B (zh) | 2021-06-28 | 2021-06-28 | 面向5g网络功能虚拟化的自定义vnf部署系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434252A CN113434252A (zh) | 2021-09-24 |
CN113434252B true CN113434252B (zh) | 2023-04-07 |
Family
ID=77755115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110719767.XA Active CN113434252B (zh) | 2021-06-28 | 2021-06-28 | 面向5g网络功能虚拟化的自定义vnf部署系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434252B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113973052B (zh) * | 2021-09-30 | 2024-10-29 | 杭州阿里云飞天信息技术有限公司 | 云网络系统、数据传输方法、计算节点及存储介质 |
CN114844787B (zh) * | 2022-04-11 | 2024-01-26 | 电子科技大学 | 一种支持灵活高效动态实验的网络模拟系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107147517A (zh) * | 2017-03-24 | 2017-09-08 | 上海交通大学 | 一种针对虚拟网络功能的自适应计算资源分配方法 |
CN109426549A (zh) * | 2017-09-01 | 2019-03-05 | 英特尔公司 | 针对虚拟环境的加速器互连分配 |
CN110912731A (zh) * | 2019-10-29 | 2020-03-24 | 广州丰石科技有限公司 | 基于nfv采用dpi技术实现业务识别和拓扑分析的系统和方法 |
CN111211999A (zh) * | 2019-11-28 | 2020-05-29 | 中国船舶工业系统工程研究院 | 一种基于ovs的实时虚拟网络的实现方法 |
US10999219B1 (en) * | 2017-06-19 | 2021-05-04 | Juniper Networks, Inc. | Automated packet switch type and host selection for efficient virtualized network function service chaining |
-
2021
- 2021-06-28 CN CN202110719767.XA patent/CN113434252B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107147517A (zh) * | 2017-03-24 | 2017-09-08 | 上海交通大学 | 一种针对虚拟网络功能的自适应计算资源分配方法 |
US10999219B1 (en) * | 2017-06-19 | 2021-05-04 | Juniper Networks, Inc. | Automated packet switch type and host selection for efficient virtualized network function service chaining |
CN109426549A (zh) * | 2017-09-01 | 2019-03-05 | 英特尔公司 | 针对虚拟环境的加速器互连分配 |
CN110912731A (zh) * | 2019-10-29 | 2020-03-24 | 广州丰石科技有限公司 | 基于nfv采用dpi技术实现业务识别和拓扑分析的系统和方法 |
CN111211999A (zh) * | 2019-11-28 | 2020-05-29 | 中国船舶工业系统工程研究院 | 一种基于ovs的实时虚拟网络的实现方法 |
Non-Patent Citations (1)
Title |
---|
Hubin Zhang.FDispatcher: Using Flow Director to Accelerate NFV Packet Dispatching.《Proceedings of 2021 3rd International Conference on Advances in Computer Technology, Information Science and Communications (CTISC2021)》.2021,173-178. * |
Also Published As
Publication number | Publication date |
---|---|
CN113434252A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113434252B (zh) | 面向5g网络功能虚拟化的自定义vnf部署系统及方法 | |
CN110535813B (zh) | 内核态协议栈与用户态协议栈并存处理方法和装置 | |
EP2127221B1 (en) | A method and system for monitoring messages passed over a network | |
US7742405B2 (en) | Network processor architecture | |
US8861344B2 (en) | Network processor architecture | |
US7328277B2 (en) | High-speed data processing using internal processor memory space | |
US10909067B2 (en) | Multi-node zero-copy mechanism for packet data processing | |
CN112491743A (zh) | 一种交换芯片的配置方法及装置 | |
US20030163675A1 (en) | Context switching system for a multi-thread execution pipeline loop and method of operation thereof | |
US20220166718A1 (en) | Systems and methods to prevent packet reordering when establishing a flow entry | |
CA2407060C (en) | Method and apparatus for customizing and forwarding parameters in a network processor | |
US10754666B1 (en) | Hardware micro-services platform | |
Xi et al. | FlowValve: Packet Scheduling Offloaded on NP-based SmartNICs | |
EP4250106A1 (en) | Efficient queue access for user-space packet processing | |
WO2003090018A2 (en) | Network processor architecture | |
US7000034B2 (en) | Function interface system and method of processing issued functions between co-processors | |
Lu et al. | TS-DDS: Data Distribution Service (DDS) Over In-Vehicle Time-Sensitive Networking (TSN) Mechanism Research | |
US11784933B2 (en) | Traffic shaping offload on a network interface controller | |
Rosa | An architecture for network acceleration as a service in the cloud continuum | |
Garbugli | QoS-aware architectures, technologies, and middleware for the cloud continuum | |
WO2023217364A1 (en) | A self-adaptive traffic arbitration engine | |
Zhao | Software switch deployment in SDN-enabled network virtualization environment | |
Boosten | Fine-grain parallel processing on a commodity platform: a solution for the ATLAS second level trigger | |
CN113626216A (zh) | 优化基于远程直接数据存取的网络应用性能的方法及系统 | |
CN115987911A (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 |