容器报文发送和接收的方法及存储介质、容器通信系统

文档序号:1941441 发布日期:2021-12-07 浏览:3次 >En<

阅读说明:本技术 容器报文发送和接收的方法及存储介质、容器通信系统 (Method for transmitting and receiving container message, storage medium and container communication system ) 是由 张丽晖 于 2020-06-05 设计创作,主要内容包括:本发明实施例提供了一种容器报文发送、接收的方法、系统及计算机存储介质,该方法,包括:容器报文从eth0接口发出,eth0接口的地址为网络设备操作系统NOS接口地址;代理服务模块在宿主机操作系统上创建套接字Socket,Socket用于捕获容器发出的容器报文;代理服务模块将容器报文转发给所述NOS,NOS将容器报文发出。通过本发明,实现了容器在现有设备的基础上与外部设备进行通信,并且不占用额外资源的技术效果。(The embodiment of the invention provides a method, a system and a computer storage medium for sending and receiving container messages, wherein the method comprises the following steps: the container message is sent from an eth0 interface, and the address of the eth0 interface is the address of an NOS interface of the network equipment operating system; the proxy service module creates a Socket on the host operating system, wherein the Socket is used for capturing a container message sent by a container; the agent service module forwards the container message to the NOS, and the NOS sends the container message. The invention realizes the technical effects that the container communicates with the external equipment on the basis of the existing equipment and does not occupy additional resources.)

容器报文发送和接收的方法及存储介质、容器通信系统

技术领域

本发明实施例涉及但不限于一种容器报文发送和接收的方法及存储介质、容器通信系统。

背景技术

随着互联网和云计算的快速发展,数据中心的建设规模越来越大,系统复杂性也越来越高,这给网络设备的运维带来了极大挑战。让网络设备提供更多的开放性已经成为未来技术发展的趋势。实现网络的开放性有两个大的方面:一方面通过使用管理工具,提升网络自动化的管理水平,支持广泛的自动化特性;另一方面是支持网络设备可编程的能力。

随着网络规模越来越大,尤其是在虚拟化的环境中,手工配置几乎成为不可能完成的任务。因此通过使用管理工具对网络设备进行业务自动化部署成为趋势。网络具有可编程能力,能够降低网络复杂度,满足虚拟化和云计算的网络需求,未来的网络发展需要构建一种可以提供开放可编程接口的新型网络系统。

一般地,提供网络设备的基本开放性能力,从技术上主要有如下几种方法:第一种,网络设备操作系统直接基于原生Linux内核协议栈,这种方式,原有的网络设备系统可以认为是开放式系统,无需单独提供开放性能力支持。网络设备操作系统基于设备提供的用户态NOS(网络操作系统),通过集成部署加载第三方容器系统提供开放性架构。但是受限于网络设备的操作系统能力,对于采用用户态协议栈操作系统的网络设备并不适用,此外这种方式,对设备的安全性有很大的挑战。

第二种,容器借助网络设备NOS与外部通信,但是需要为容器单独分配外部通信IP地址。容器借助网络设备NOS与外部通信,需要从资源上独占网络设备的IP地址或网络设备的接口,并需要将这个地址作为容器的通信地址通告给外部系统。这种方法在外部呈现上是双系统方式呈现,原有网络设备操作系统与容器系统需要独立分配不同的地址,部署代价较高。

发明内容

为了解决上述技术问题,本发明本发明提供了一种容器报文的发送、接收方法及系统,解决了容器与外部网络通信中存在的开放性不高、不兼容现有设备,容器需要单独占用接口地址资源的问题。

根据本发明的一个实施例,提供了一种容器报文的发送方法,包括:容器报文从eth0接口发出,所述eth0接口的地址为网络设备操作系统NOS接口地址;代理服务模块在宿主机操作系统上创建套接字Socket,所述Socket用于捕获所述容器发出的容器报文;所述代理服务模块将所述容器报文转发给所述NOS,所述NOS将所述容器报文发出。

根据本发明的另一个实施例,提供了一种容器报文的接收方法,包括:NOS接收容器报文,所述容器报文地址为所述NOS的接口地址,并将所述容器报文转发至代理服务模块;所述代理服务模块在宿主机操作系统上创建套接字Socket,所述Socket转发所述容器报文至容器。

根据本发明的另一个实施例,提供了一种容器通信系统,包括:容器,所述容器创建eth0接口,所述eth0接口的地址为网络设备操作系统NOS接口地址,并通过所述eth0接口发送容器报文;代理服务模块,所述代理服务模块在宿主机操作系统上创建套接字Socket,所述Socket用于捕获所述容器发出的容器报文,所述代理服务模块将所述容器报文转发给所述NOS;所述NOS用于发送所述容器报文。

根据本发明的另一个实施例,提供了一种容器报文接收或发送的实现设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现所述容器报文接收或发送的实现方法。

根据本发明的另一个实施例,提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行所述容器报文接收或发送的实现方法。

通过本申请,以代理模块作为桥梁,容器报文经过代理模块的转发,最终由网络设备发出或接受,并且容器共用网络设备操作系统NOS的接口地址,达到了容器通过现有设备就可以实现与外部通信的技术效果,同时容器不需要额外占用接口资源,从而解决了现有技术中容器通信不兼容现有设备且需占用额外接口资源的问题,提高了资源利用效率。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例容器报文的发送方法的流程图

图2是本发明实施例创建容器通信网络流程图

图3是本发明实施例容器与外部通信的数据流向图

图4是本发明实施例容器与网络设备NOS内部通信的数据流向图

图5是本发明实施例容器通信系统的结构框图

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

实施例一

在本实施例中提供了一种容器报文的发送方法,图1是本发明实施例容器报文的发送方法的流程图,如图1所示,该流程包括如下步骤:

步骤S101,容器报文从eth0接口发出,eth0接口的地址为网络设备操作系统NOS接口地址;

在步骤S101中,容器通过虚拟以太网络对veth pair(虚拟以太网络对是一个成对的端口,所有从这对端口一端进入的数据包都将从另一端出来,反之亦然)挂接到宿主机的操作系统上,eth0是veth pair中容器侧的接口。代理模块注册容器的传输控制协议TCP端口区间和/或用户数据报协议UDP端口区间。

步骤S102,代理服务模块在宿主机操作系统上创建套接字Socket,Socket用于捕获所述容器发出的容器报文;

在容器报文从eth0接口发出前,容器向报文目的地址发送地址解析协议代答请求(ARP请求);Socket捕获ARP代答请求,并使用网络设备操作系统的接口地址完成ARP代答。

步骤S013,代理服务模块将容器报文转发给NOS,NOS将容器报文发出。

在步骤S103中,当容器报文目的地址是NOS的IP地址时,容器报文由NOS本地处理;当容器报文地址不是NOS的IP地址时,容器报文由NOS查找路由发向外部设备。

实施例二

在本实施例中提供了一种创建容器通信系统的方法,图2是本发明实施例创建容器通信网络的流程图,如图2所示,该流程包括如下步骤:

步骤S201,首先通过基本的容器的bridge网络模式,将容器通过虚拟以太网络对挂接到宿主机OS;

在步骤S201中,veth pair这个接口对中的一个接口eth0接口是容器中的接口,veth pair接口对的另一个接口接入在宿主机的bridge中。一般情况下,这个创建的工作可以由容器网络来完成,当指定容器网络是bridge方式时,就是veth pair的连接方式。

步骤S202,为容器创建lo接口,接口地址继承NOS的接口地址;

在步骤S202中,容器lo接口继承NOS的接口地址的目的在于复用NOS接口地址与外部通信。网络设备与外部通信接口配置了IP地址后,通过代理服务模块将这个地址同步的配置到容器的lo接口上。

步骤S203,为容器创建缺省路由,路由指向veth pair中的eth0接口,通信源地址采用lo接口地址;

在步骤S203中,lo接口地址是复用网络设备的接口地址。具体实现时,网络设备与外部通信接口配置了IP地址后,通过代理服务模块将这个地址同步的配置到容器的lo接口上。

步骤S204,基于宿主机系统创建Socket,绑定接口,用于捕获容器发出的报文;

在步骤S204中,代理模块基于宿主机操作系统创建Socket,Socket绑定在vethpair宿主机一侧,同时连接到宿主机的网口,用于捕获从容器发出的报文,对于外部发向容器的报文,也通过socket分发给容器。

其中,Socket是代理服务模块为了实现容器与网络设备NOS之间的代理,通过宿主机操作系统创建的socket,通过socket绑定veth pair接到宿主机的网口来抓包,就可以捕获容器发出的报文。

步骤S205,创建代理模块与NOS的通信管道;

在步骤S205中,基于NOS提供的接口,创建代理模块与NOS的通信管道,对于捕获到容器外发的报文,通过该通道发向NOS,最终由NOS与外部通信发出。同样,对于外部发向容器的报文,也通过这个通信管道接收。

步骤S206,完成容器系统的TCP/UDP端口区间的注册。

在步骤S206中,完成容器的TCP/UDP端口区间的注册,是为了容器与网络设备共享IP地址资源提供基础。

实施例三

在本实施例中提供了一种创建容器通信系统的方法,图3是本发明实施例容器与外部通信的数据流向图,如图3所示,数据流向包括如下步骤:

步骤301,容器系统与外部通信时,根据容器系统的路由,报文从eth0接口发出,使用NOS的接口IP_NOS地址作为源地址,根据路由的link类型,首先向通信的目的地址触发ARP请求;

步骤302,代理服务模块基于宿主机OS创建socket,绑定于docker0接口,捕获从容器发出的ARP请求,使用NOS的接口地址实施ARP代答,完成容器系统的ARP代答学习过程后,后续从容器系统外发的IP报文都由Socket捕获;

步骤303,代理服务模块通过自身与NOS的通信通道,将捕获到的容器外发报文转交到NOS处理;

步骤304,NOS接收到代理服务模块转交的报文,正常的进行NOS处理,通过查找路由将报文从NOS网络接口发向外部设备;

步骤305,NOS通过网络设备的接口接收到外部设备发向容器的报文;

步骤306,网络设备NOS系统处理收到的报文,报文的目的地址是设备的接口地址IP_NOS,根据代理服务模块为容器系统注册的TCP/UDP端口区间进行分发,将发往容器的报文分发给代理服务模块;

步骤307,代理服务模块通过宿主机操作系统的Socket,分发这个报文到容器与宿主机相连的Bridge上的网桥(Docker0);

这里的Docker0在内核层连通了其他的物理或虚拟网卡,将所有容器和本地主机都放到同一个物理网络中。

步骤308,利用Bridge的二层转发(MAC转发)将这个报文分发到容器系统;

实施例四

在本实施例中提供了一种创建容器通信系统的方法,图4是本发明实施例容器与网络设备NOS内部通信的数据流向图,如图4所示,数据流向包括如下步骤:

步骤401:容器系统与NOS内部通信时,根据容器报文的路由,报文从eth0接口发出,使用NOS的接口IP_NOS地址作为源地址,目的地址是设备接口地址IP_NOS2,根据路由的link类型,首先向通信的目的地址触发ARP请求;

步骤402:代理服务模块完成容器系统的ARP学习过程,后续从容器系统外发的IP报文,都由Socket捕获并发出;

步骤403:代理服务模块通过与NOS的通信通道,将捕获到的容器外发报文转交到NOS处理;

步骤404:NOS接收到代理服务模块转交的报文,正常的进行NOS处理,查找路由本地终结,转交NOS进行业务处理。同时,对于NOS发出的,目的地址是IP_NOS的报文,路由本地处理;

步骤405:NOS根据代理服务模块为容器系统注册的端口区间,判断报文是否要发向容器,如果是,则将报文分发给代理服务模块;

步骤406:代理服务模块通过宿主机操作系统的Socket,分发这个报文到宿主机与容器相连的网桥(Docker0)上;

步骤407:利用Bridge的二层转发(MAC转发)将这个报文分发到容器系统接收。

实施例五

在本实施例中提供了一种创建容器通信系统的方法,图5是本发明实施例容器通信系统的结构框图,如图5所示,本系统包括如下模块:

网络设备宿主机操作系统模块:提供设备宿主机操作系统,承载与支撑网络设备的操作系统,作为承载容器的宿主机系统;

网络设备操作系统模块:网络设备提供服务的主体操作系统,工作于用户态协议栈,通过网络设备操作系统为网络设备提供软件路由操作系统;

容器系统模块:集成于网络设备的容器系统,为网络设备提供开放性能力支持;

代理服务模块:在宿主机操作系统、网络设备操作系统、容器这几个模块间实现互通,在宿主机上建立Socket,使用Socket捕获容器发出的报文,并转发至网络设备操作系统,由网络设备操作系统发出;或接收网络设备发向容器的报文,并转交至容器。

根据本发明的另一个实施例,提供了一种容器报文接收或发送的实现设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现所述容器报文接收或发送的实现方法。

根据本发明的另一个实施例,提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行所述容器报文接收或发送的实现方法。

在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:传输报文的方法、装置、系统、设备及可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!