一种基于macvlan的网络通信方法与流程

文档序号:35993485发布日期:2023-11-16 03:50阅读:55来源:国知局
一种基于macvlan的网络通信方法与流程

本发明涉及一种linux网络通信,尤其涉及一种基于macvlan的网络通信方法。


背景技术:

1、组播广播包处理流程中当macvlan虚拟网卡增多时,组播广播包处理耗时就会增加,而数据帧处理流程的耗时不会随着macvlan虚拟网卡的数量增加而增加。如图1所示,数据帧处理流程中使用schedule_work调度组播广播包处理,会使macvlan_handle_frame和macvlan_process_broadcast在同一个cpu核上执行,数据帧处理占用cpu资源比较高,组播广播包处理时间复杂度为o(n*n)同样需要比较多的cpu资源。数据帧处理负责入队,组播广播包处理负责出队,两者在同一个cpu上竞争,当cpu资源不够时,存在入队速度大于出队速度情况,就会导致接收队列满(接收队列大于1000),数据帧处理流程就会产生丢包。

2、在实际的生产环境中发生组播丢包时,系统中某一个cpu核占用率高达93.8%。


技术实现思路

1、针对上述问题,本发明提供一种基于macvlan的网络通信方法。通过macvlan虚拟出来的网卡mac地址独立于物理网卡,解决了多ip共用mac地址的问题;对每个macvlan虚拟网口都创建一个工作队列,使多个macvlan虚拟网卡的组播广播包处理流程能够并行化。

2、为实现上述目的,本发明公开了基于macvlan的网络通信方法,具体步骤为:

3、步骤s11、数据包进入macvlan_handle_frame处理函数,对数据包进行重组;

4、步骤s12、判断当前接收队列长度是否小于1000,若是,则进入s13,若否,则进入s14;

5、步骤s13、将数据包加入接收队列,使用queue_work system_unbound_wq唤醒接收队列处理函数macvlan_process_broadcast,对数据包进行处理;

6、步骤s14、丢弃数据包。

7、进一步的,所述步骤s13中的数据包处理具体为:

8、步骤s21、判断接收队列是否为空,若是,则结束处理过程,若否,则进行下一步;

9、步骤s22、从接收队列中取出数据包;

10、步骤s23从vlan_list虚拟网卡列表中获取一个macvlan虚拟网卡macvlan_ptr;

11、步骤s24、判断虚拟网卡macvlan_ptr是否为空指针,若是,则返回步骤s21,若否,则进行步骤s25;

12、步骤s25、克隆数据包,将克隆后的数据包发送到macvlan虚拟网卡macvlan_ptr;

13、步骤s25、返回步骤s23获取下一个macvlan虚拟网卡。

14、进一步的,数据包处理过程的时间复杂度o为(n*n),其中,n为macvlan虚拟网卡macvlan_ptr的数量。

15、进一步的,所述步骤s11之前还包括:

16、设置多个macvlan虚拟网卡,为每个macvlan虚拟网卡的网口创建一个单独的工作队列,工作队列处理函数为macvlan_process_broadcast;

17、判断接收缓冲队列中数据包是否被所有macvlan虚拟网卡标记;

18、若已经被所有macvlan虚拟网卡标记,则释放该数据包。

19、进一步的,所述数据包处理流程为:

20、步骤s31、检测接收队列中是否存在未被所有macvlan虚拟网卡标记的数据包,若是,则进行步骤s32,若否,则结束当前流程;

21、步骤s32、克隆接收队列中未被所有macvlan虚拟网卡标记的数据包;

22、步骤s33、对接收队列中的数据包进行标记;

23、步骤s34、将克隆后的数据包发送到macvlan虚拟网卡,返回步骤s31。

24、本发明的一种基于macvlan的网络通信方法的有益效果为:通过macvlan虚拟出来的网卡mac地址独立于物理网卡,解决了多ip共用mac地址的问题;对每个macvlan虚拟网口都创建一个工作队列,使多个macvlan虚拟网卡的组播广播包处理流程能够并行化。



技术特征:

1.一种基于macvlan的网络通信方法,其特征在于,具体步骤为:

2.基于权利要求1所述的一种基于macvlan的网络通信方法,其特征在于,所述步骤s13中的数据包处理具体为:

3.基于权利要求2所述的一种基于macvlan的网络通信方法,其特征在于,数据包处理过程的时间复杂度为,其中,n为macvlan虚拟网卡macvlan_ptr的数量。

4.基于权利要求1所述的一种基于macvlan的网络通信方法,其特征在于,所述步骤s11之前还包括:

5.基于权利要求4所述的一种基于macvlan的网络通信方法,其特征在于,所述数据包处理流程为:


技术总结
本发明提供一种基于macvlan的网络通信方法,具体的:步骤S11、数据包进入macvlan_handle_frame处理函数,对数据包进行重组;步骤S12、判断当前接收队列长度是否小于1000,若是,则进入S13,若否,则进入S14;步骤S13、将数据包加入接收队列,使用queue_work system_unbound_wq唤醒接收队列处理函数macvlan_process_broadcast,对数据包进行处理;步骤S14、丢弃数据包。

技术研发人员:张向前,淡建群,高华,张金鹏
受保护的技术使用者:麒麟软件有限公司
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1