本申请属于4g/5g通信,尤其是一种在vpp框架下提升udp报文收发速率的方法。
背景技术:
1、在现有技术中,vpp框架提供了session layer用于收发udp报文,但存在传输速率低和内存带宽占用大的问题。主要体现在报文在session layer经过两次内存拷贝和产生事件消息,导致收发报文速率低。
2、使用session layer收发udp报文,一个主要缺点是传输速率低,占用内存带。主要表现以下几个方面:
3、在报文接收过程时,报文会先拷贝到rx fifo中,在application的回调函数接收报文时,从rx fifo拷贝报文到新的buffer中。一个udp报文在session layer经过两次的内存拷贝之后才到达application;
4、报文发送过程也有一样的内存拷贝过程:在application先将数据拷贝到tx fifo中,然后session input节点从tx fifo取数据时,需要从tx fifo将数据拷贝到vpp buffer中,再发送数据;
5、另外在报文接收时,会向ctrl fifo插入session_io_evt_rx事件,数据发送时,会向ctrl fifl插入session_io_evt_tx事件。在接收和发送同时进行的情况下,会同时竞争ctrl fifo,这样在代码实现在就得对ctrl fifo加锁保护,从而增加了系统开销。
6、总之,使用session layer收发udp报文,每个报文都需要两次的内存拷贝和产生一个事件消息,这导致收发报文速率非常低。
技术实现思路
1、本发明针对问题,提出一种在vpp框架下提升udp报文收发速率的方法。
2、第一方面,本申请提供了一种在vpp框架下提升udp报文收发速率的方法,包括以下步骤:
3、a)通过配置vppctl工具,动态指定需要捕获的特定udp端口;
4、b)在vpp框架中创建一个internal类型的节点,用于直接从udp4_local或udp6_local节点捕获指定udp端口的报文;
5、c)在接收报文时,将报文直接转发至用户态应用程序,绕过传统的session layer处理,减少内存拷贝次数;
6、d)在发送报文时,先在用户态应用程序中封装udp头部和ip头部信息,然后将封装后的报文传递给vpp框架的ip4_next或ip6_next节点;
7、e)允许用户通过vppctl工具配置udp报文的目的端口号和源端口号;
8、f)vpp框架根据用户指定的目的ip地址,自动从网卡列表中选择合适的源ip地址进行报文发送。
9、2.根据权利要求1所述的方法,其特征在于,在接收报文的过程中,报文在vpp框架内部不经过额外的内存拷贝,直接在internal类型节点中处理。
10、3.根据权利要求1所述的方法,其特征在于,在发送报文的过程中,用户态应用程序一次性将数据拷贝至vpp buffer,减少了从用户态到内核态的内存拷贝次数。
11、第二方面,本申请还提供了一种用于实现第一方面所述方法的vpp框架插件,包括udp_fwd插件,包括以下组件:
12、a)一个命令回调函数,用于处理插件的使能和禁用命令;
13、b)一个动态链接库加载器,用于加载用户态应用程序编译成的动态链接库;
14、c)一个节点创建器,用于在vpp框架中创建internal类型节点和input类型节点,以实现报文的高效接收和发送。
15、优选地,所述动态链接库加载器通过调用操作系统的dlopen()和dlsym()函数来加载和获取用户态应用程序中定义的函数指针。
16、第三发面,本申请提供了一种实现第一方面所述的方法在5g基站后传网口的应用,能够有效提升报文的接收和发送速率,满足5g多小区和4g多小区的高速传输要求。
17、第四方面,本申请还提供了一种包括第一方面所述方法的网络通信系统,包括:
18、a)一个用于处理网络报文的vpp框架;
19、b)一个udp_fwd插件用于实现第一方面所述的报文接收和发送方法;
20、c)一个用户态应用程序,用于与udp_fwd插件交互,实现udp报文的接收和发送。
21、本申请实施例与现有技术相比存在的有益效果是:
22、1)通过减少内存拷贝次数和简化事件通知步骤,显著提升了报文处理效率,降低了内存带宽占用,为网络通信性能的提升开辟了新的途径。
1.一种在vpp框架下提升udp报文收发速率的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的方法,其特征在于,在接收报文的过程中,报文在vpp框架内部不经过额外的内存拷贝,直接在internal类型节点中处理。
3.根据权利要求1所述的方法,其特征在于,在发送报文的过程中,用户态应用程序一次性将数据拷贝至vpp buffer,减少了从用户态到内核态的内存拷贝次数。
4.一种用于实现权利要求1所述方法的vpp框架插件,包括udp_fwd插件,其特征在于,包括以下组件:
5.根据权利要求4所述的udp_fwd插件,其特征在于,所述动态链接库加载器通过调用操作系统的dlopen()和dlsym()函数来加载和获取用户态应用程序中定义的函数指针。
6.一种包权利要求1所述的方法在5g基站后传网口的应用。
7.一种包括权利要求1所述方法的网络通信系统,其特征在于,包括:一个用于处理网络报文的vpp框架;
