CN110769075B - 容器的通信方法、系统、控制器和计算机可读存储介质 - Google Patents
容器的通信方法、系统、控制器和计算机可读存储介质 Download PDFInfo
- Publication number
- CN110769075B CN110769075B CN201810824079.8A CN201810824079A CN110769075B CN 110769075 B CN110769075 B CN 110769075B CN 201810824079 A CN201810824079 A CN 201810824079A CN 110769075 B CN110769075 B CN 110769075B
- Authority
- CN
- China
- Prior art keywords
- container
- controller
- host
- network
- information
- 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 58
- 230000006854 communication Effects 0.000 title claims abstract description 56
- 238000004891 communication Methods 0.000 title claims abstract description 51
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 230000004044 response Effects 0.000 claims abstract description 13
- 238000013519 translation Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 10
- 230000009471 action Effects 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 6
- 238000013468 resource allocation Methods 0.000 claims description 3
- 238000004064 recycling Methods 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 29
- 230000008569 process Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007257 malfunction Effects 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
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5046—Resolving address allocation conflicts; Testing of addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种容器的通信方法、系统、控制器和计算机可读存储介质,涉及数据通信领域。容器的通信方法包括:控制器为第一容器和第二容器分配全局唯一标识;响应于第一容器和第二容器发起跨主机互通请求,控制器为第一容器和第二容器分配网络资源;控制器根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络;控制器将第一容器和第二容器的可达信息与全局唯一标识进行绑定作为绑定信息;控制器将第一容器和第二容器中每个容器的绑定信息写入另一个容器中,以便第一容器和第二容器根据绑定信息以及控制器编排的网络实现互通。本发明的实施例基于全局唯一标识实现跨主机的连接,从而可以提高跨主机的容器互通的可靠性。
Description
技术领域
本发明涉及数据通信领域,特别涉及一种容器的通信方法、系统、控制器和计算机可读存储介质。
背景技术
应用容器引擎Docker是一种基于内核虚拟化技术LXC(Linux Container,Linux是一种操作系统)实现的容器引擎技术,是系统级的虚拟化技术,也是网络功能虚拟化(Virtual Network Feature,简称:VNF)技术的重要发展方向和云平台微服务构建的基础技术之一。
容器生成时确定了在本机上唯一的容器识别ID(Identification,标识)以及与之对应的别名。容器启动时,会随机分配到一个本机未占用的私网地址。出于提高安全性、避免冲突、可能存在的网络环境不确定等因素,容器重启后默认重新生成随机私网地址,宿主机上所有容器的跨主机访问依赖于容器底层的操作系统IP(Internet Protocol,网络协议)地址。
发明内容
发明人对相关技术进行分析后发现,由于容器的应用多基于单机系统本地实现,在实现跨主机容器互通时,容易导致容器地址和识别ID的冲突。因此,目前跨主机的容器难以实现互通。
本发明实施例所要解决的一个技术问题是:如何提高跨主机的容器互通的可靠性。
根据本发明一些实施例的第一个方面,提供一种容器的通信方法,包括:控制器为第一容器和第二容器分配全局唯一标识,其中,第一容器和第二容器位于不同的主机;响应于第一容器和第二容器发起跨主机互通请求,控制器为第一容器和第二容器分配网络资源,其中,网络资源中包括第一容器和第二容器的可达信息;控制器根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络;控制器将第一容器和第二容器的可达信息与全局唯一标识进行绑定作为绑定信息;控制器将第一容器和第二容器中每个容器的绑定信息写入另一个容器中,以便第一容器和第二容器根据绑定信息以及控制器编排的网络实现互通。
在一些实施例中,控制器根据第一容器和第二容器中每个容器发送的本机容器标识、容器地址、容器所属主机的信息,为每个容器生成全局唯一标识,并反馈给每个容器。
在一些实施例中,通信方法还包括:控制器接收第一容器和第二容器通过网络交换模型Openflow首包发送的本机容器标识和容器地址。
在一些实施例中,可达信息包括本地网桥编号、端口、虚拟局域网VLAN标识、网络地址转换NAT信息、隧道标识、虚拟网络接口标识中的至少一种。
在一些实施例中,控制器根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络包括:控制器利用分配的网络资源,为第一容器建立流表并下发给第一容器所属主机的网桥、以及为第二容器建立流表并下发给第二容器所属主机的网桥,其中,流表用于控制和牵引第一容器和第二容器之间的网络互通的流量。
在一些实施例中,响应于检测到第一容器和第二容器的IP地址相同,控制器向流表中添加NAT翻译表项,以便经过NAT映射后的第一容器和第二容器的IP地址不同。
在一些实施例中,流表的匹配域包括端口和VLAN标识,动作域包括将流量进行NAT转换并转发到隧道端口。
在一些实施例中,控制器将第一容器和第二容器中每个容器的绑定信息写入另一个容器的本地环境变量配置文件中。
在一些实施例中,通信方法还包括:控制器回收为被删除或者发生状态变化的容器分配的网络资源。
在一些实施例中,通信方法还包括:第一容器根据存储的绑定信息,确定第二容器的全局唯一标识对应的第二容器的可达信息;第一容器根据第二容器的可达信息向第二容器发送报文。
在一些实施例中,通信方法还包括:容器在主机中启动,并在主机内随机生成本机容器标识和容器地址,其中,容器为第一容器或第二容器;主机中的容器代理模块代理容器向控制器发送包括注册报文的Openflow首包,其中,注册报文中包括生成的本机容器标识和容器地址以及容器所属主机的信息,以便控制器根据接收到的注册报文中的内容为容器分配全局唯一标识;容器代理模块根据全局唯一标识向控制器申请网络资源。
根据本发明一些实施例的第二个方面,提供一种控制器,包括:全局唯一标识分配模块,被配置为为第一容器和第二容器分配全局唯一标识,其中,第一容器和第二容器位于不同的主机;网络资源分配模块,被配置为响应于第一容器和第二容器发起跨主机互通请求,为第一容器和第二容器分配网络资源,其中,网络资源中包括第一容器和第二容器的可达信息;网络编排模块,被配置为根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络;信息绑定模块,被配置为将第一容器和第二容器的可达信息与全局唯一标识进行绑定作为绑定信息;绑定信息写入模块,被配置为将第一容器和第二容器中每个容器的绑定信息写入另一个容器中,以便第一容器和第二容器根据绑定信息以及控制器编排的网络实现互通。
在一些实施例中,全局唯一标识分配模块进一步被配置为根据第一容器和第二容器中每个容器发送的本机容器标识、容器地址、容器所属主机的信息,为每个容器生成全局唯一标识,并反馈给每个容器。
在一些实施例中,控制器还包括:首包接收模块,被配置为接收第一容器和第二容器通过网络交换模型Openflow首包发送的本机容器标识和容器地址。
在一些实施例中,可达信息包括本地网桥编号、端口、虚拟局域网VLAN标识、网络地址转换NAT信息、隧道标识、虚拟网络接口标识中的至少一种。
在一些实施例中,网络编排模块进一步被配置为利用分配的网络资源,为第一容器建立流表并下发给第一容器所属主机的网桥、以及为第二容器建立流表并下发给第二容器所属主机的网桥,其中,流表用于控制和牵引第一容器和第二容器之间的网络互通的流量。
在一些实施例中,网络编排模块进一步被配置为响应于检测到第一容器和第二容器的IP地址相同,向流表中添加NAT翻译表项,以便经过NAT映射后的第一容器和第二容器的IP地址不同。
在一些实施例中,流表的匹配域包括端口和VLAN标识,动作域包括将流量进行NAT转换并转发到隧道端口。
在一些实施例中,绑定信息写入模块进一步被配置为将第一容器和第二容器中每个容器的绑定信息写入另一个容器的本地环境变量配置文件中。
在一些实施例中,控制器还包括:资源回收模块,被配置为回收为被删除或者发生状态变化的容器分配的网络资源。
根据本发明一些实施例的第三个方面,提供一种容器的通信系统,包括:前述任意一种控制器;以及,容器,位于主机,被配置为根据存储的绑定信息,确定其他主机上的容器的全局唯一标识对应的可达信息,根据确定的可达信息向其他主机上的容器发送报文。
在一些实施例中,通信系统还包括:容器代理模块,位于主机,被配置为在主机中的容器启动并在主机内随机生成本机容器标识和容器地址后,向控制器发送包括注册报文的Openflow首包,其中,注册报文中包括生成的本机容器标识和容器地址以及容器所属主机的信息,以便控制器根据接收到的注册报文中的内容为容器分配全局唯一标识,并根据全局唯一标识向控制器申请网络资源。
根据本发明一些实施例的第四个方面,提供一种控制器,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行前述任意一种通信方法。
根据本发明一些实施例的第五个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意一种通信方法。
上述发明中的一些实施例具有如下优点或有益效果:本发明的实施例基于全局唯一标识实现跨主机的连接。通过为容器分配全局唯一标识,并依据该全局唯一标识为容器分配网络资源,使得不同主机上的容器也根据该全局唯一标识进行通信。并且,控制器可以感知并区分不同宿主机上的容器,屏蔽容器私网地址和本机容器ID的变化和不确定性。从而可以提高跨主机的容器互通的可靠性。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术中的容器的通信方法的流程示意图。
图2为根据本发明一些实施例的容器的通信方法的流程示意图。
图3为根据本发明一些实施例的第一容器和第二容器的通信过程的流程示意图。
图4为根据本发明一些实施例的容器注册方法的流程示意图。
图5A为根据本发明一些实施例的流表下发过程的流程示意图。
图5B为根据本发明一些实施例的容器通信过程的流程示意图。
图6为根据本发明另一些实施例的容器的通信方法的流程示意图。
图7为根据本发明一些实施例的控制器的结构示意图。
图8为根据本发明一些实施例的容器的通信系统的结构示意图。
图9为根据本发明另一些实施例的容器的通信系统的结构示意图。
图10为根据本发明另一些实施例的控制器的结构示意图。
图11为根据本发明又一些实施例的控制器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1为相关技术中的容器的通信方法的流程示意图。如图1所示,该通信方法包括步骤S102~S110。
在步骤S102中,容器A1和B2分别在主机A和B中启动,并在各自的主机内随机生成主机内的唯一本机容器ID、IP私网地址。
在步骤S104中,在容器A1和B2的本机容器ID和IP地址不冲突时,由主机A中的网桥A和主机B中的网桥B建立跨主机的连接。
在步骤S106中,容器A1和B2通过建立的连接进行互通。
在步骤S108中,主机A中的容器A1重启,重新生成主机内的唯一本机容器ID、IP私网地址。
在步骤S110,容器A1重新生成的IP地址与容器B2的IP地址冲突,或者,容器A1重新生成的本机容器ID与容器B2本机容器ID冲突,造成容器A1和B2无法进行跨主机的互通,连接中断。
因此,在这种方法中,大规模的容器创建、重启等操作很容易造成容器之间的私网IP地址或者本机容器ID冲突,继而引起跨主机通信产生故障。
发明人对相关技术进行分析后,提出了本发明的方法以实现稳定的、成功率更高的跨主机的容器互通。下面参考图2描述本发明容器的通信方法的实施例。
图2为根据本发明一些实施例的容器的通信方法的流程示意图。如图2所示,该实施例的容器的通信方法包括步骤S202~S212。
在步骤S202中,控制器为第一容器和第二容器分配全局唯一标识,其中,第一容器和第二容器位于不同的主机。控制器例如可以为软件定义网络(Software DefinedNetwork,简称:SDN)控制器。
不同于相关技术中直接采用容器在主机内生成的本机容器ID作为通信依据,本发明在容器的本机容器ID的基础上进行进一步的处理,以使得生成的容器的标识不仅在主机内部唯一、还在整个系统或网络中唯一。在后续的通信过程中,该全局唯一标识可以替代本机容器ID,控制器通过全局唯一标识来区分不同的容器。
在一些实施例中,控制器可以结合容器的信息和容器所属主机的信息生成全局唯一标识。容器的信息例如可以包括本机容器ID、容器地址等等,主机的信息例如可以包括主机的IP地址、介质访问控制(Medium Access Control,简称:MAC)地址、主机名等等。
控制器在生成第一容器和第二容器的全局唯一标识后,可以分别将其反馈给每个全局唯一标识所对应的容器。
本领域技术人员应当清楚,本发明实施例中的第一容器和第二容器仅用于表示网络中欲进行跨主机通信的任意两个容器,“第一”和“第二”仅用于区分不同的通信对象,对本发明不起任何限制性作用。
在步骤S204中,响应于第一容器和第二容器发起跨主机互通请求,控制器为第一容器和第二容器分配网络资源,其中,网络资源中包括第一容器和第二容器的可达信息。
在一些实施例中,第一容器和第二容器可以通过资源发现来获取对方的信息,从而发起互通请求。资源发现的过程可以参考现有技术中的实现方式,这里不再赘述。
在一些实施例中,网络资源包括本地网桥编号、端口、虚拟局域网(Virtual LocalArea Network,简称:VLAN)标识、网络地址转换(Network Address Translation,简称:NAT)信息、隧道标识、虚拟网络接口标识中的至少一种可达信息。隧道标识例如可以是虚拟可扩展局域网(Virtual Extensible LAN,简称:VxLAN,LAN是Local Area Network的缩写、意为局域网)隧道地址。此外,网络资源还可以包括通信时段、周期、带宽、时延、业务等级等等。
在步骤S206中,控制器根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络。从而,网络中的各个网元可以形成有序的组织,以为第一容器和第二容器的互通提供条件。
在步骤S208中,控制器将第一容器和第二容器的可达信息与全局唯一标识进行绑定作为绑定信息。
在步骤S210中,控制器将第一容器和第二容器中每个容器的绑定信息写入另一个容器中。在一些实施例中,控制器将第一容器和第二容器中每个容器的绑定信息写入另一个容器的本地环境变量配置文件中,例如写入host文件、env(环境变量)中等等。
设第二容器生成的本机容器ID为1caa9a605df7,第二容器所在的第二主机的IP地址为B.B.B.B、MAC地址为M.M.M.M.M.M、主机名为HostB,第二主机分配给第二容器的互通所需的TCP/UDP(TCP:Transmission Control Protocol,传输控制协议;UDP:User DatagramProtocol,用户数据报协议)端口段为33000~33100,第二容器自动生成的IP地址为172.17.41.B2。写入第一容器中的关于第二容器的内容例如可以包括:全局唯一标识1caa9a605df7BBBBMMMMMMHostB;跨主机可达信息:B.B.B.B:33000~33100。
在步骤S212中,第一容器和第二容器根据绑定信息以及控制器编排的网络实现互通。
以第一容器发起访问为例,在一些实施例中,第一容器和第二容器的通信过程如图3所示。
在步骤S302中,第一容器根据存储的绑定信息,确定第二容器的全局唯一标识对应的可达信息。
在步骤S304中,第一容器根据第二容器的可达信息向第二容器发送报文。
上述实施例的方法基于全局唯一标识实现跨主机的连接。通过为容器分配全局唯一标识,并依据该全局唯一标识为容器分配网络资源,使得不同主机上的容器也根据该全局唯一标识进行通信。并且,控制器可以感知并区分不同宿主机上的容器,屏蔽容器私网地址和本机容器ID的变化和不确定性。从而可以提高跨主机的容器互通的可靠性。
在一些实施例中,容器生成后需要向控制器进行注册。控制器可以通过Openflow首包获得容器的信息并分配全局唯一标识,下面参考图4描述本发明容器注册过程的实施例。
图4为根据本发明一些实施例的容器注册方法的流程示意图。如图4所示,该实施例的容器注册方法包括步骤S402~S408。
在步骤S402中,容器在主机中启动,并在主机内随机生成本机容器标识和容器地址。该实施例中的容器可以是新生成的容器,也可以是重新后的已有容器。由于容器重启后,本机容器ID、IP地址等信息会发生变化,因此需要重新进行注册。
在步骤S404中,主机中的容器代理模块向控制器发送包括注册报文的Openflow首包,注册报文中包括本机容器标识和容器地址。主机中的容器代理模块可以代理一个或多个容器向控制器发起注册过程。在一些实施例中,容器代理模块可以通过特定的MAC组播地址代理容器发出报文。
在一些实施例中,注册报文还可以包括容器的主机MAC地址、主机名、主机地址等容器所属主机的信息。
此外,容器还可以向控制器发送网桥端口、MAC地址等本地可达信息。这些信息可以是包括在注册报文中的,也可以是在另外的报文中发送的。
在一些实施例中,控制器收到的注册报文可以仅供控制器收集注册信息,以为后续的网络编排提供依据,而无需响应于该注册报文而下发流表。
在步骤S406中,控制器为容器分配全局唯一标识。
在步骤S408中,主机中的容器代理模块根据容器的全局唯一标识向控制器申请网络资源。网络资源中可以包括跨主机资源,跨主机资源例如包括通信时段、周期、期望带宽、时延、业务等级等等。
目前,Openflow首包用于转发未知流量,并且相关技术中也没有容器直接向控制器进行注册的过程。本发明提供的上述实施例利用Openflow首包向控制器进行容器的注册。从而,控制器可以通过容器的注册过程获取容器的相关信息,并为容器生成跨主机范围的全局唯一标识。
在一些实施例中,控制器可以通过下发流表的方式传达网络编排结果。下面参考图5A描述本发明流表下发过程的实施例。
图5A为根据本发明一些实施例的流表下发过程的流程示意图。如图5A所示,该实施例的流表下发过程包括步骤S502~S504。
在步骤S502中,控制器利用分配的网络资源,为第一容器和第二容器建立流表,其中,流表用于控制和牵引第一容器和第二容器之间的网络互通的流量。
在一些实施例中,响应于检测到第一容器和第二容器的IP地址相同,控制器向流表中添加NAT翻译表项,以便经过NAT映射后的第一容器和第二容器的IP地址不同。
在步骤S504中,将第一容器的流表下发给第一容器所属主机的网桥、以及将第二容器的流表下发给第二容器所属主机的网桥。每个网桥接收的流表例如可以为包括入向、出向的双向流表。
在一些实施例中,流表的匹配域包括端口和VLAN标识。匹配域中可以不包括全局唯一标识,从而容器发送的报文中可以无需携带全局唯一标识、网桥的流表也无需进行全局唯一标识的匹配操作。
在一些实施例中,流表的动作域包括将流量进行NAT转换并转发到隧道端口。
从而,第一容器和第二容器在向对方发起通信时,网桥可以根据控制器下发的流表引导流量。第一容器和第二容器根据流表进行通信的实施例可以参考图5B。
图5B为根据本发明一些实施例的容器通信过程的流程示意图。如图5B所示,该实施例的容器通信过程包括步骤S512~S522。在该实施例中,第一容器和第二容器分别存储了对方的全局唯一标识对应的可达信息,并且二者所属主机的网桥上存储了用于二者互通的流表。
在步骤S512中,第一容器查找本地文件中存储的第二容器的全局唯一标识对应的可达信息。
在步骤S514中,第一容器根据第二容器的可达信息向第二容器发送流量。
在步骤S516中,第一容器所属的第一主机的第一网桥将接收到的流量中的信息与流表中的匹配域内容进行匹配。例如可以匹配端口和VLAN信息。
在步骤S518中,响应于匹配到用于第一容器和第二容器互通的流表,第一网桥执行该流表动作域中的转发操作,将流量进行NAT转换、并转发到VxLAN隧道端口,流量沿公网转发到第二容器所在的第二主机的第二网桥。
在步骤S520中,第二网桥将接收到的流量中的信息与流表中的匹配域内容进行匹配。
在步骤S522中,响应于匹配到用于第一容器和第二容器互通的流表,第二网桥根据流表将流量转发给第二容器的端口,使得第二容器获得第一容器发送的流量。
在一些实施例中,控制器还可以维护容器的全局唯一标识或资源。例如,控制器可以回收为被删除或者发生状态变化的容器分配的网络资源。回收的资源例如可以包括静态资源和跨主机资源。静态资源例如可以包括容器的IP地址、MAC地址、本机容器ID、容器所在主机的主机名、接入的虚拟网桥端口号信息。动态资源例如可以包括容器的全局唯一标识、NAT地址和端口资源、跨主机VxLAN隧道两端的地址、VNI标识、控制器下发到网桥的入向和出向Openflow流表等等。NAT地址和端口资源例如可以包括容器所属主机的地址、端口、NAT映射表、容器的私网地址映射的ARP表等等。从而,可以节约网元的资源。
下面参考图6介绍本发明容器的通信方法的一个应用例。
图6为根据本发明另一些实施例的容器的通信方法的流程示意图。如图6所示,该实施例的容器的通信方法包括步骤S602~S624。
在步骤S602中,主机A中的容器A1启动并随机生成私网IP172.17.41.A1/16以及本机容器ID aed84ee21bde。
在步骤S604中,主机A创建网桥A。
在步骤S606中,容器B1启动并随机生成私网IP172.17.41.B2/16以及本机容器ID1caa9a605df7。
在步骤S608中,主机B建立网桥B。
该实施例不对步骤S602~S604与步骤S606~S608的执行顺序进行限制。即容器A1和容器B1中的任意一个可以先行启动、也可以同时启动。
在步骤S610中,控制器分别从容器A1和B1接收本机容器ID、容器私网IP地址、宿主机地址、主机名。
在步骤S612中,控制器分别为容器A1和B1生成跨主机的全局唯一标识。
在步骤S614中,控制器分别将生成的全局唯一标识反馈给容器A1和B1。
在步骤S616中,容器A1和B1发起跨主机互通请求。
在步骤S618中,控制器根据容器A1和B1的全局唯一标识查找互通策略,判断是否允许容器A1和B1互通。
在步骤S620中,响应于允许容器A1和B1互通,控制器为容器A1和B1分配网络资源,下发流表到网桥A和B。
在步骤S622中,控制器将容器B1的全局唯一标识与主机B的NAT外网地址、端口资源写入容器A1的host和环境变量,将容器A1的全局唯一标识与主机A的NAT外网地址、端口资源写入容器B1的host和环境变量。
在步骤S624中,容器A1和B1通过查找本地文件中的全局唯一标识对应的可达信息实现跨主机互通。
从而,在IP地址发生冲突的情况下,依据控制器分配的全局唯一标识,容器A1和B1也能够实现跨主机通信。
下面参考图7描述本发明控制器的实施例。
图7为根据本发明一些实施例的控制器的结构示意图。如图7所示,该实施例的控制器700包括:全局唯一标识分配模块7100,被配置为为第一容器和第二容器分配全局唯一标识,其中,第一容器和第二容器位于不同的主机;网络资源分配模块7200,被配置为响应于第一容器和第二容器发起跨主机互通请求,为第一容器和第二容器分配网络资源,其中,网络资源中包括第一容器和第二容器的可达信息;网络编排模块7300,被配置为根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络;信息绑定模块7400,被配置为将第一容器和第二容器的可达信息与全局唯一标识进行绑定作为绑定信息;绑定信息写入模块7500,被配置为将第一容器和第二容器中每个容器的绑定信息写入另一个容器中,以便第一容器和第二容器根据绑定信息以及控制器编排的网络实现互通。
在一些实施例中,全局唯一标识分配模块7100进一步被配置为根据第一容器和第二容器中每个容器发送的本机容器标识、容器地址、容器所属主机的信息,为每个容器生成全局唯一标识,并反馈给每个容器。
在一些实施例中,控制器700还包括:首包接收模块7600,被配置为接收第一容器和第二容器通过网络交换模型Openflow首包发送的本机容器标识和容器地址。
在一些实施例中,可达信息包括本地网桥编号、端口、虚拟局域网VLAN标识、网络地址转换NAT信息、隧道标识、虚拟网络接口标识中的至少一种。
在一些实施例中,网络编排模块7300进一步被配置为利用分配的网络资源,为第一容器建立流表并下发给第一容器所属主机的网桥、以及为第二容器建立流表并下发给第二容器所属主机的网桥,其中,流表用于控制和牵引第一容器和第二容器之间的网络互通的流量。
在一些实施例中,网络编排模块7300进一步被配置为响应于检测到第一容器和第二容器的IP地址相同,向流表中添加NAT翻译表项,以便经过NAT映射后的第一容器和第二容器的IP地址不同。
在一些实施例中,流表的匹配域包括端口和VLAN标识,动作域包括将流量进行NAT转换并转发到隧道端口。
在一些实施例中,绑定信息写入模块7500进一步被配置为将第一容器和第二容器中每个容器的绑定信息写入另一个容器的本地环境变量配置文件中。
在一些实施例中,控制器700还包括:资源回收模块7700,被配置为回收为被删除或者发生状态变化的容器分配的网络资源。
下面参考图8和图9描述本发明容器的通信系统的实施例。
图8为根据本发明一些实施例的容器的通信系统的结构示意图。如图8所示,该实施例的通信系统80包括:控制器810和容器820,容器820可以有多个,图8中仅示例性地示出了一个。控制器810的具体实施方式可以参考图7实施例中的控制器700,这里不再赘述。容器820位于主机,被配置为根据存储的绑定信息,确定其他主机上的容器的全局唯一标识对应的可达信息,根据确定的可达信息,向其他主机上的容器发送报文。
在一些实施例中,通信系统80还包括:容器代理模块830,位于主机,被配置为在主机中的容器启动并在主机内随机生成本机容器标识和容器地址后,向控制器发送包括注册报文的Openflow首包,其中,注册报文中包括生成的本机容器标识和容器地址以及容器所属主机的信息,以便控制器根据接收到的注册报文中的内容为容器分配全局唯一标识,并根据全局唯一标识向控制器申请网络资源。
图9为根据本发明另一些实施例的容器的通信系统的结构示意图。如图9所示,该实施例的通信系统90包括:控制器910、主机920,主机920可以有多个,图9中仅示例性地示出了两个。主机920中包括网桥9210、SDN客户端模块9220、容器代理模块9230、容器9240。SDN客户端模块9220和容器代理模块9230可以与控制器910通信连接,不同主机920的容器9240通过网桥9210进行互通。
图10为根据本发明另一些实施例的控制器的结构示意图。如图10所示,该实施例的控制器100包括:存储器1010以及耦接至该存储器1010的处理器1020,处理器1020被配置为基于存储在存储器1010中的指令,执行前述任意一个实施例中的容器的通信方法。
其中,存储器1010例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
图11为根据本发明又一些实施例的控制器的结构示意图。如图11所示,该实施例的控制器110包括:存储器1110以及处理器1120,还可以包括输入输出接口1130、网络接口1140、存储接口1150等。这些接口1130,1140,1150以及存储器1110和处理器1120之间例如可以通过总线1160连接。其中,输入输出接口1130为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口1140为各种联网设备提供连接接口。存储接口1150为SD卡、U盘等外置存储设备提供连接接口。
本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一种容器的通信方法。
本领域内的技术人员应当明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种容器的通信方法,包括:
控制器接收第一容器和第二容器通过网络交换模型Openflow首包发送的本机容器标识和容器地址;
控制器为第一容器和第二容器分配全局唯一标识,包括:控制器根据第一容器和第二容器中每个容器发送的本机容器标识、容器地址、容器所属主机的信息,为每个容器生成全局唯一标识,并反馈给每个容器,其中,第一容器和第二容器位于不同的主机;
响应于第一容器和第二容器发起跨主机互通请求,控制器为第一容器和第二容器分配网络资源,其中,所述网络资源中包括第一容器和第二容器的可达信息;
控制器根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络;
控制器将第一容器和第二容器的可达信息与全局唯一标识进行绑定作为绑定信息;
控制器将第一容器和第二容器中每个容器的绑定信息写入另一个容器中,以便第一容器和第二容器根据所述绑定信息以及控制器编排的网络实现互通。
2.根据权利要求1所述的通信方法,其中,所述可达信息包括本地网桥编号、端口、虚拟局域网VLAN标识、网络地址转换NAT信息、隧道标识、虚拟网络接口标识中的至少一种。
3.根据权利要求1或2所述的通信方法,其中,所述控制器根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络包括:
控制器利用分配的网络资源,为第一容器建立流表并下发给第一容器所属主机的网桥、以及为第二容器建立流表并下发给第二容器所属主机的网桥,其中,所述流表用于控制和牵引第一容器和第二容器之间的网络互通的流量。
4.根据权利要求3所述的方法,其中,响应于检测到第一容器和第二容器的IP地址相同,控制器向流表中添加NAT翻译表项,以便经过NAT映射后的第一容器和第二容器的IP地址不同。
5.根据权利要求3所述的通信方法,其中,所述流表的匹配域包括端口和VLAN标识,动作域包括将流量进行NAT转换并转发到隧道端口。
6.根据权利要求1所述的通信方法,其中,控制器将第一容器和第二容器中每个容器的绑定信息写入另一个容器的本地环境变量配置文件中。
7.根据权利要求1所述的通信方法,还包括:
控制器回收为被删除或者发生状态变化的容器分配的网络资源。
8.根据权利要求1所述的通信方法,还包括:
第一容器根据存储的绑定信息,确定第二容器的全局唯一标识对应的第二容器的可达信息;
第一容器根据所述第二容器的可达信息向第二容器发送报文。
9.根据权利要求1或8所述的通信方法,还包括:
容器在主机中启动,并在主机内随机生成本机容器标识和容器地址,其中,所述容器为第一容器或第二容器;
主机中的容器代理模块代理容器向控制器发送包括注册报文的Openflow首包,其中,所述注册报文中包括生成的本机容器标识和容器地址以及容器所属主机的信息,以便控制器根据接收到的注册报文中的内容为容器分配全局唯一标识;
容器代理模块根据全局唯一标识向控制器申请网络资源。
10.一种控制器,包括:
首包接收模块,被配置为接收第一容器和第二容器通过网络交换模型Openflow首包发送的本机容器标识和容器地址;
全局唯一标识分配模块,被配置为为第一容器和第二容器分配全局唯一标识,包括:根据第一容器和第二容器中每个容器发送的本机容器标识、容器地址、容器所属主机的信息,为每个容器生成全局唯一标识,并反馈给每个容器,其中,第一容器和第二容器位于不同的主机;
网络资源分配模块,被配置为响应于第一容器和第二容器发起跨主机互通请求,为第一容器和第二容器分配网络资源,其中,所述网络资源中包括第一容器和第二容器的可达信息;
网络编排模块,被配置为根据第一容器和第二容器的全局唯一标识和分配的网络资源编排网络;
信息绑定模块,被配置为将第一容器和第二容器的可达信息与全局唯一标识进行绑定作为绑定信息;
绑定信息写入模块,被配置为将第一容器和第二容器中每个容器的绑定信息写入另一个容器中,以便第一容器和第二容器根据所述绑定信息以及控制器编排的网络实现互通。
11.根据权利要求10所述的控制器,其中,所述可达信息包括本地网桥编号、端口、虚拟局域网VLAN标识、网络地址转换NAT信息、隧道标识、虚拟网络接口标识中的至少一种。
12.根据权利要求10或11所述的控制器,其中,所述网络编排模块进一步被配置为利用分配的网络资源,为第一容器建立流表并下发给第一容器所属主机的网桥、以及为第二容器建立流表并下发给第二容器所属主机的网桥,其中,所述流表用于控制和牵引第一容器和第二容器之间的网络互通的流量。
13.根据权利要求12所述的控制器,其中,所述网络编排模块进一步被配置为响应于检测到第一容器和第二容器的IP地址相同,向流表中添加NAT翻译表项,以便经过NAT映射后的第一容器和第二容器的IP地址不同。
14.根据权利要求12所述的控制器,其中,所述流表的匹配域包括端口和VLAN标识,动作域包括将流量进行NAT转换并转发到隧道端口。
15.根据权利要求10所述的控制器,其中,所述绑定信息写入模块进一步被配置为将第一容器和第二容器中每个容器的绑定信息写入另一个容器的本地环境变量配置文件中。
16.根据权利要求10所述的控制器,还包括:
资源回收模块,被配置为回收为被删除或者发生状态变化的容器分配的网络资源。
17.一种容器的通信系统,包括:
权利要求10~16中任一项所述的控制器;以及,
容器,位于主机,被配置为根据存储的绑定信息,确定其他主机上的容器的全局唯一标识对应的可达信息,根据确定的可达信息向所述其他主机上的容器发送报文。
18.根据权利要求17所述的通信系统,还包括:
容器代理模块,位于主机,被配置为在主机中的容器启动并在主机内随机生成本机容器标识和容器地址后,向控制器发送包括注册报文的Openflow首包,其中,所述注册报文中包括生成的本机容器标识和容器地址以及容器所属主机的信息,以便控制器根据接收到的注册报文中的内容为容器分配全局唯一标识,并根据全局唯一标识向控制器申请网络资源。
19.一种控制器,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1~9中任一项所述的通信方法。
20.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1~9中任一项所述的通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810824079.8A CN110769075B (zh) | 2018-07-25 | 2018-07-25 | 容器的通信方法、系统、控制器和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810824079.8A CN110769075B (zh) | 2018-07-25 | 2018-07-25 | 容器的通信方法、系统、控制器和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110769075A CN110769075A (zh) | 2020-02-07 |
CN110769075B true CN110769075B (zh) | 2022-07-05 |
Family
ID=69326856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810824079.8A Active CN110769075B (zh) | 2018-07-25 | 2018-07-25 | 容器的通信方法、系统、控制器和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110769075B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111885075B (zh) * | 2020-07-30 | 2023-04-07 | 广州方硅信息技术有限公司 | 容器通信方法、装置、网络设备及存储介质 |
EP4224804A4 (en) * | 2020-11-02 | 2024-04-03 | Huawei Technologies Co., Ltd. | COMMUNICATION METHOD, APPARATUS, DEVICE, SYSTEM AND COMPUTER-READABLE STORAGE MEDIUM |
CN114070637B (zh) * | 2021-11-23 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 基于属性标签的访问控制方法、系统、电子设备及存储介质 |
CN114172726B (zh) * | 2021-12-07 | 2023-08-29 | 北京天融信网络安全技术有限公司 | 一种基于容器环境的访问控制方法及系统 |
CN114401214B (zh) * | 2021-12-28 | 2024-03-29 | 航天科工网络信息发展有限公司 | 一种实现容器组播通信的网络及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298543A (zh) * | 2014-11-07 | 2015-01-21 | 陈桂芳 | 一种openflow交换机一虚多的实现方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10261814B2 (en) * | 2014-06-23 | 2019-04-16 | Intel Corporation | Local service chaining with virtual machines and virtualized containers in software defined networking |
US9544275B2 (en) * | 2015-01-28 | 2017-01-10 | defend7, Inc. | Communication tunneling in application container environments |
CN106933648B (zh) * | 2015-12-31 | 2020-11-03 | 中国电信股份有限公司 | 用于多租户容器资源管理的方法和系统 |
US20170272400A1 (en) * | 2016-03-17 | 2017-09-21 | Microsoft Technology Licensing, Llc | Network virtualization of containers in computing systems |
CN105847108B (zh) * | 2016-05-24 | 2019-01-15 | 中国联合网络通信集团有限公司 | 容器间的通信方法及装置 |
CN106210162B (zh) * | 2016-06-29 | 2019-03-19 | 中国联合网络通信集团有限公司 | 通信控制方法及装置 |
CN107580083B (zh) * | 2017-09-20 | 2020-11-03 | 北京京东尚科信息技术有限公司 | 一种容器ip地址分配的方法和系统 |
-
2018
- 2018-07-25 CN CN201810824079.8A patent/CN110769075B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298543A (zh) * | 2014-11-07 | 2015-01-21 | 陈桂芳 | 一种openflow交换机一虚多的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110769075A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110769075B (zh) | 容器的通信方法、系统、控制器和计算机可读存储介质 | |
CN107278359B (zh) | 云计算系统中报文处理的方法、主机和系统 | |
US20220377045A1 (en) | Network virtualization of containers in computing systems | |
US20240045824A1 (en) | Remote Mapping Method, Apparatus and Device for Computing Resources, and Storage Medium | |
CN111404753B (zh) | 一种扁平网络配置方法、计算机设备及存储介质 | |
CN108924268B (zh) | 一种容器云服务系统及pod创建方法、装置 | |
WO2018112709A1 (zh) | 一种数据包处理方法、主机和系统 | |
CN104378455B (zh) | Ip地址分配方法以及装置 | |
CN111885075A (zh) | 容器通信方法、装置、网络设备及存储介质 | |
WO2018137369A1 (zh) | 混合云管理方法、装置和计算设备 | |
CN110870290B (zh) | 对逻辑网络地址分配唯一的网络地址 | |
EP4221103A1 (en) | Public cloud network configuration method, and related device | |
CN101924693A (zh) | 用于在虚拟机间迁移进程的方法和系统 | |
CN110213391B (zh) | 一种网络协议地址的配置方法及装置 | |
US20180152415A1 (en) | Mac address allocation for virtual machines | |
CN106357838A (zh) | 一种ip地址的分配方法和装置 | |
CN106302861B (zh) | 一种地址分配方法及装置 | |
CN113347287B (zh) | 数据中心中主机发现与添加方法、装置、设备及介质 | |
CN107547247B (zh) | 智能弹性架构中的三层管理网ip地址分配方法和装置 | |
CN112367256B (zh) | 创建方法、设备及存储介质 | |
CN110636149B (zh) | 远程访问方法、装置、路由器及存储介质 | |
CN111262771B (zh) | 虚拟私有云通信系统、系统配置方法及控制器 | |
CN112751717B (zh) | 一种业务流量的管理系统以及方法 | |
CN111988446B (zh) | 一种报文处理方法、装置、电子设备及存储介质 | |
US11949660B2 (en) | Methods for enabling enhanced firewall rules via ARP-based annotations |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200207 Assignee: Tianyiyun Technology Co.,Ltd. Assignor: CHINA TELECOM Corp.,Ltd. Contract record no.: X2024110000040 Denomination of invention: Communication methods, systems, controllers, and computer-readable storage media for containers Granted publication date: 20220705 License type: Common License Record date: 20240914 |