一种基于国产硬件平台的高实时快速容器通信方法与流程

xiaoxiao6月前  41


本发明涉及容器间通信,具体涉及一种基于国产硬件平台的高实时快速容器通信方法。


背景技术:

1、在计算机安全领域,容器是一种程序的隔离运行机制,其目的是限制不可信进程的权限。容器技术经常被用于执行未经测试的或不可信的客户程序。为了避免不可信程序可能破坏其它程序的运行,容器技术为不可信客户程序提供虚拟化的磁盘、内存以及网络资源,而这种虚拟化手段对客户程序来说是透明的。由于容器里的资源被虚拟化(或被间接化),所以容器里的不可信程序的恶意行为往往会被限制在容器中,使得安全威胁影响降到最小。

2、当前比较流行的容器技术的具体实现有:vmware虚拟机和docker容器等。vmware采用虚拟化技术将一台物理机器的cpu、内存、硬盘等硬件资源通过软件技术分拆为多个虚拟机(virtual machine),一个虚拟机上安装一个客操作系统(guest os),每个客操作系统都独立运行着自己的应用软件。虚拟机之间互不干扰。vmware目前可以运行的平台有windows、mac、linux平台。docker是一种轻量级的虚拟化技术,能够在单一主机上提供多个隔离的操作系统环境,通过一系列的namespace(网络命名空间)进行进程隔离,每个容器都有唯一的可写文件系统和资源配额。

3、由于在linux操作系统下,只有套接字(socket)技术不但可以进行单机的不同进程通信,而且使得跨网机器间进程可以通信,而容器技术是一个资源隔离的运行环境,网络和命名空间相互独立,这种特性使得套接字技术成为唯一支持容器之间任务通信的技术。

4、现有的基于套接字技术的容器间通信方法的流程描述如下:

5、1)容器中任务的socket接口使用系统调用(如send to,sendmsg等)写数据;

6、2)数据报文在内核udp层进行封包和处理(在容器间高性能通信主要是以信令数据为主,为了确保这类数据传输的高效和稳定时延,一般传输层基于udp协议,所以以udp为例);

7、3)数据报文往下在ip层进行封包和处理;

8、4)数据报文进入虚拟接口层进行封包和处理(虚拟接口层主要为veth pair/macvlan/ipvlan等);

9、5)数据报文通过虚拟接口层送达目标容器地址;

10、6)报文在目标容器的ip层完成解包和处理;

11、7)报文在目标容器的udp层完成解包和处理;

12、8)报文在内核态处理完成,唤醒目标容器用户态收包任务,将报文收到用户态socket的用户地址空间。

13、以上过程所需的通信时间长,耗时严重,不能满足容器间通信在有高实时快速通信要求场景下的需求。


技术实现思路

1、针对现有技术中的上述不足,本发明提供的一种基于国产硬件平台的高实时快速容器通信方法解决了现有容器间通信方式耗时长难以满足高实时需求的问题。

2、为了达到上述发明目的,本发明采用的技术方案为:

3、提供一种基于国产硬件平台的高实时快速容器通信方法,其包括以下步骤:

4、s1、由通信发起端容器的传输层进行udp组包,生成网络报文结构体;

5、s2、由通信发起端容器的传输层进行目的地址查找与分析,若目的地址和通信发起端容器在同一主机上,则进入步骤s3;否则将网络报文结构体移交ip层处理,通过ip层进行通信;

6、s3、由通信发起端容器采用共享内存技术实现网络报文跨命名空间转移,将网络报文结构体从通信发起端容器传输层直接挂接到通信接收端容器目的套接字的接收队列中;

7、s4、由通信接收端容器的传输层读取收包队列,完成快速通信。

8、进一步地,进行udp组包的具体方法为:

9、由通信发起端容器调用send to函数进入报文发送流程;

10、由通信发起端容器调用udp_send_skb函数,进行查找路由并设置ip报头,生成网络报文结构体。

11、进一步地,进行目的地址快速查找的具体方法为:

12、遍历每个网络命名空间所有网络接口设备的所有ipv4地址,通过目的地址找到目的地址所在的网络命名空间的网络接口设备的ipv4地址。

13、进一步地,判断目的地址和通信发起端容器是否在同一主机上的具体方法为:

14、当目的地址所在的网络命名空间的网络接口设备的ipv4地址与网络报文结构体的目的ipv4地址相同时,判断通信发起端容器与通信接收端容器是否都是veth设备且对端接口均处于同一个网桥中,若是则判定目的地址和通信发起端容器在同一主机上;否则判定目的地址和通信发起端容器不在同一主机上。

15、进一步地,采用共享内存技术实现网络报文跨命名空间转移,将网络报文结构体从通信发起端容器传输层直接挂接到通信接收端容器目的套接字的接收队列中的具体方法为:

16、在linux协议栈的udp_send流程中,通过添加udp_skb_direct_rcv函数,将传输层中的网络报文结构体,根据绑定的目的地址,在udp协议绑定表中找到需要转送的传输通道套接字的接收队列,进而将通信发起端容器的传输层中的网络报文结构体直接挂接到通信接收端容器目的套接字的接收队列中;其中udp_send流程由udp_send函数实现,用于与通信接收端容器建立通信。

17、进一步地,由通信接收端容器的传输层读取收包队列的具体方法为:

18、由通信接收端容器的传输层直接在内核下调用udp_recvmsg收包函数读取收包队列,完成快速通信。

19、进一步地,在生成网络报文结构体之后,还进行如下操作:

20、判断通信发起端容器是否开启了ptype_all协议,若是则将网络报文结构体发送至通信发起端容器的ip层,在通信发起端容器的ip层中根据标准网络协议的报文格式要求封装mac头,形成标准报文并发送至通信发起端容器的mac层,以便于通过tcpdump抓包工具进行报文抓取;否则不作额外处理。

21、本发明的有益效果为:本方法主要通过优化现有技术的容器间通信流程,减少现有的容器间通信流程中复杂耗时的步骤,通过设计能够在传输层直接完成容器间通信的快速通路,通过共享内存收发实现网络报文跨命名空间转移是指在快速通信操作中,采用共享内存技术来减少报文的拷贝,从而省去现有流程中ip层和虚拟网桥层的繁琐路径和处理过程,最终实现在同一个硬件平台上、不同的容器之间快速通信,满足对高实时的需求。



技术特征:

1.一种基于国产硬件平台的高实时快速容器通信方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于国产硬件平台的高实时快速容器通信方法,其特征在于,进行udp组包的具体方法为:

3.根据权利要求1所述的一种基于国产硬件平台的高实时快速容器通信方法,其特征在于,进行目的地址查找的具体方法为:

4.根据权利要求3所述的一种基于国产硬件平台的高实时快速容器通信方法,其特征在于,判断目的地址和通信发起端容器是否在同一主机上的具体方法为:

5.根据权利要求1所述的一种基于国产硬件平台的高实时快速容器通信方法,其特征在于,采用共享内存技术实现网络报文跨命名空间转移,将网络报文结构体从通信发起端容器传输层直接挂接到通信接收端容器目的套接字的接收队列中的具体方法为:

6.根据权利要求5所述的一种基于国产硬件平台的高实时快速容器通信方法,其特征在于,由通信接收端容器的传输层读取收包队列的具体方法为:

7.根据权利要求1所述的一种基于国产硬件平台的高实时快速容器通信方法,其特征在于,在生成网络报文结构体之后,还进行如下操作:


技术总结
本发明公开了一种基于国产硬件平台的高实时快速容器通信方法,涉及容器间通信技术领域,包括以下步骤:由通信发起端容器传输层生成网络报文结构体;由通信发起端容器传输层进行目的地址分析,若目的地址和通信发起端容器在同一主机上,则由通信发起端容器采用共享内存技术实现网络报文跨命名空间转移,将网络报文结构体从通信发起端容器的传输层直接挂接到通信接收端容器目的套接字的接收队列中,由通信接收端容器的传输层读取收包队列,完成快速通信;否则将网络报文结构体移交IP层处理,通过IP层进行通信。本方法相比现有技术大大提升了基于国产硬件平台的容器间通信效率,极大降低了硬件平台上容器间通信的延时。

技术研发人员:张昆,郑国玲,王大维
受保护的技术使用者:成都菁蓉联创科技有限公司
技术研发日:
技术公布日:2024/9/23

最新回复(0)