容器虚拟网络通信方法和容器虚拟网络与流程

文档序号:32124858发布日期:2022-11-09 07:49阅读:27来源:国知局
1.本公开涉及网络技术,尤其涉及一种容器虚拟网络通信方法和容器虚拟网络。
背景技术
::2.随着数据中心的服务器虚拟化程度快速提高,其敏捷性和灵活性也得以显著提高。网络虚拟化和从物理网络分离出虚拟网络使得管理、自动化和编排变得更简单。服务器虚拟化后,一台物理服务器中可以承载多个容器,每个容器可以具有独立的ip地址和mac地址,相当于接入数据中心的服务器成倍扩大了。3.容器是将操作系统层虚拟化后得到的通常用于表示软件的一个标准化单元。目前用于容器间通信的容器网络方案分为underlay(底层)模式和overlay(覆盖)模式两大类。underlay模式下容器间流量通过iaas层网络转发,网络性能优秀但网络资源供给依赖基础网络,会面临资源供给弹性和兼容性不足等问题。overlay模式则通过overlay网络技术构建,容器网络与iaas层网络资源解耦,带来弹性优势和良好适用性,但overlay传输封装的包头开销巨大,影响网络性能。4.为此,需要一种改善的容器间通信方案。技术实现要素:5.本公开要解决的一个技术问题是提供一种容器虚拟网络通信方法,以及利用该方法进行通信的容器虚拟网络。本发明的容器间通信方案利用ipv6地址编程能力,在发送端将上层虚拟网络的寻址信息嵌入底层物理网络地址中携带,并在接收端恢复成所需的虚拟网络寻址格式用于虚拟网络寻址,由此实现容器间的overlay通信,并将underlay和overlay网络的优点合一,在实际提供虚拟网络层通信能力的同时避免封装带来的通信性能损耗。6.根据本公开的第一个方面,提供了一种容器虚拟网络通信方法,包括:发送端将虚拟网络寻址信息嵌入物理网络寻址字段的空闲位,得到物理网络寻址格式的报文并发送所述报文;接收端基于所述物理网络寻址字段中物理网络寻址信息接收所述报文,从所述空闲位中取出所述虚拟网络寻址信息,并将所述报文信息送入与所述虚拟网络寻址信息相对应的容器。7.可选地,发送端将虚拟网络寻址信息嵌入物理网络寻址字段的空闲位包括:发送端容器将虚拟网络寻址字段提供给发送端节点;所述发送端节点基于所述虚拟网络寻址字段获取所述虚拟网络寻址信息,并将所述虚拟网络寻址信息嵌入物理网络寻址字段的空闲位。8.可选地,所述方法还包括:所述发送端节点基于映射表,将所述虚拟网络寻址字段中的容器前缀地址转化为节点地址,并作为所述物理网络寻址字段中物理网络寻址信息。9.可选地所述物理网络寻址格式是基于ipv6的格式,并且在所述虚拟网络基于ipv6格式寻址时,所述发送端节点将所述虚拟网络寻址字段中的容器id作为所述虚拟网络寻址信息嵌入物理网络寻址字段的所述空闲位;以及在所述虚拟网络基于ipv4格式寻址时,所述发送端节点将所述虚拟网络寻址字段作为所述虚拟网络寻址信息嵌入物理网络寻址字段的所述空闲位。10.可选地,接收端基于所述物理网络寻址字段中物理网络寻址信息接收所述报文,从所述空闲位中取出所述虚拟网络寻址信息,并将所述报文信息送入与所述虚拟网络寻址信息相对应的容器包括:在所述虚拟网络基于ipv6格式寻址时,接收端节点基于映射表将所述物理网络寻址字段中物理网络寻址信息从节点地址转换为容器前缀地址,将从所述空闲位中取出所述虚拟网络寻址信息作为容器id,以复原包括所述容器前缀地址和所述容器id的所述虚拟网络寻址字段用于接收端节点的寻址。11.可选地,接收端基于所述物理网络寻址字段中物理网络寻址信息接收所述报文,从所述空闲位中取出所述虚拟网络寻址信息,并将所述报文信息送入与所述虚拟网络寻址信息相对应的容器包括:在所述虚拟网络基于ipv4格式寻址时,接收端节点将从所述空闲位中取出所述虚拟网络寻址信息作为所述虚拟网络寻址字段用于接收端节点的寻址。12.可选地,所述方法还包括:在所述虚拟网络寻址字段的目的地地址对应于任播(anycast)地址空间时,所述发送端节点从所述任播地址空间中选定一个成员(member),并将所述成员的地址作为在所述虚拟网络寻址字段的新目的地地址。13.可选地,所述方法还包括:所述发送端在所述物理网络寻址字段的第二空闲位插入所述虚拟网络寻址格式的指示;以及所述接收端基于所述指示还原出符合所述虚拟网络寻址格式的虚拟网络寻址字段。14.根据本公开的第二个方面,提供了一种容器虚拟网络,包括:发送端容器,用于生成虚拟网络寻址字段;发送端节点,用于将虚拟网络寻址字段中的的虚拟网络寻址信息嵌入物理网络寻址字段的空闲位,得到物理网络寻址格式的报文并向底层转发网络发送所述报文;所述底层转发网络,用于转发所述报文;接收端容器,用于基于所述物理网络寻址字段中物理网络寻址信息从所述底层转发网络接收所述报文,从所述空闲位中取出所述虚拟网络寻址信息,并将所述报文信息送入与所述虚拟网络寻址信息相对应的接收端容器;以及所述接收端容器,用于接收所述报文信息。15.根据本公开的第三个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面所述的方法。16.根据本公开的第四个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面所述的方法。17.由此,本发明的容器间通信方案利用ipv6地址编程能力,在发送端将上层虚拟网络的寻址信息嵌入底层物理网络地址中携带,并在接收端恢复成所需的虚拟网络寻址格式用于虚拟网络寻址,由此将underlay和overlay网络的优点合一,在实际提供虚拟网络层通信能力的同时避免封装带来的通信性能损耗。附图说明18.通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。19.图1示出了根据本发明一个实施例的容器虚拟网络通信方法。20.图2示出了现有技术中使用的容器地址组成例。21.图3a和图3b分别示出了虚拟网络基于ipv6和ipv4格式寻址时的嵌入方法。22.图4a和图4b分别示出了ipv6和ipv4格式下的地址变换例。23.图5a和图5b示出了根据本发明进行嵌入虚拟网络地址信息的物理网络地址发送和接收的例子。24.图6示出了根据本发明一个实施例的容器虚拟网络的组成示意图。25.图7示出了根据本发明一实施例可用于实现上述容器间通信方法的计算设备的结构示意图。具体实施方式26.下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。27.目前用于容器间通信的容器网络方案分为underlay(底层)模式和overlay(覆盖)模式两大类。28.underlay模式依托underlay网络。underlay网络是物理网络,是由现实的物理基础层网络设备组成的网络,也是数据中心基础转发架构的网络。以太网最初设计成一个分布式的网络架构,没有中心控制节点,网络中的节点通过协议传递学习网络的可达性信息。underlay是数据中心场景的基础物理设施,保证任何两个点路由可达,其中包含了传统的网络技术。29.overlay模式依托overlay网络。顾名思义,overlay是一个基于物理网络之上构建的网络,是一个虚拟网络(同时也是一个逻辑网络)。overlay在网络
技术领域
:指的是一种网络架构上叠加的虚拟化技术模式,overlay网络也建立在underlay网络之上的虚拟网络,overlay网络节点通过虚拟或者逻辑链路进行通信。30.underlay网络和overlay网络通常用于云服务的不同层面。云服务通常可以分成三大类:iaas(基础设施即服务,infrastructure-as-a-service)、paas(平台即服务,platform-as-a-service)以及saas(软件即服务,software-as-a-service)。31.iaas是云服务的最下层(即,底层),指把it基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。paas层把服务器平台作为一种服务提供的商业模式,通过网络进行程序提供的服务称之为saas,而云计算时代相应的服务器平台或者开发环境作为服务进行提供就成为了paas。32.容器网络是提供容器间互通的paas层网络,分为overlay和underlay模式。underlay模式下,容器间流量通过iaas层网络转发,网络性能优秀但网络资源供给(如,ipv4地址资源)依赖基础网络,会面临资源供给弹性和兼容性不足等问题。overlay模式则通过overlay网络技术在iaas层网络之上构建,容器网络与iaas层网络资源解耦,在paas层进行虚拟网络通信,能够来弹性优势和良好适用性,但overlay传输封装的包头开销巨大,影响网络性能。33.overlay和underlay网络之前都通过ipv4(网际协议第4版)进行通信。随着iaas层ipv4地址资源不足和安全需求等原因,越来越多的国家和企业开始从ipv4向ipv6模式过渡。ipv6(网际协议第6版)是网际协议的最新版本,用作互联网的协议。用它来取代ipv4主要是为了解决ipv4地址枯竭问题,同时它也在其他方面对于ipv4有许多改进。具体地,ipv6地址空间从ipv4的32位扩展到128位,在提供大量可用ipv6地址的同时,也带来了地址可编程能力技术。本发明的容器间通信方案利用ipv6地址编程能力,将虚拟网络ipv4/v6编址信息在iaas层ipv6地址中进行携带,由此overlay与underlay网络的优点合一,在提供paas层虚拟网络的同时避免封装带来的性能损耗。34.图1示出了根据本发明一个实施例的容器虚拟网络通信方法。35.在步骤s110,发送端将虚拟网络寻址信息嵌入物理网络寻址字段的空闲位,得到物理网络寻址格式的报文并发送所述报文。在此,虚拟网络尤其指代overlay网络,物理网络尤其指代underlay网络;虚拟网络寻址信息尤其指代overlay网络寻址信息,例如,基于overlay技术的容器ip信息。而物理网络寻址信息则尤其可以指代underlay网络寻址信息,例如,基于underlay技术的物理节点ip信息。36.相应地,在步骤s120,接收端基于所述物理网络寻址字段中物理网络寻址信息接收所述报文,从所述空闲位中取出所述虚拟网络寻址信息,并将所述报文信息送入与所述虚拟网络寻址信息相对应的容器。37.由上,通过发送端在物理网络寻址字段的物理网络寻址信息之外的空闲位中嵌入虚拟网络寻址信息,可以直接通过物理网络进行传输,即,在发送端和接收端之间的容器网络上传输的报文仅仅包括用于iaas层解析的物理网络寻址字段,而无需包括在paas层解析的额外封装的包头,由此降低了网络传输的开销。而传输的物理网络寻址字段在接收端iaas层解析后,可以基于约定格式,从原本的物理网络空闲字段中解析出虚拟网络寻址信息,由此可以在接收端的iaas层(对应于如下所述的接收端的物理节点层)还原出最初的虚拟网络寻址字段,由此寻址至目的地容器。38.换句话说,本发明以物理网络寻址的传输开销,事实上实现了容器间基于虚拟网络寻址的overlay网络通信,即,实现了容器虚拟网络通信。39.在本发明中,由于需要在所述报文的物理网络寻址字段的空闲位进行信息嵌入,因此所述物理网络寻址格式是基于ipv6的格式(因为相比于ipv4,ipv6具有128位的地址空间),容间间通信的网络是基于ipv6的网络,尤其可以是srv6(基于ipv6转发平面的段路由)网络。srv6结合sr(segmentrouting,段路由)和ipv6技术,是新一代ip承载协议,其采用现有的ipv6转发技术,通过灵活的ipv6扩展头,实现网络可编程。40.由于物理网络寻址的目标是物理节点,而非节点上实现的一个个容器,因此发送端嵌入虚拟网络寻址信息的报文的生成,需要发送端的容器(即,源容器)和以及该容器所在节点(即,发送端节点)两者的参与。为此,发送端将虚拟网络寻址信息嵌入物理网络寻址字段的空闲位包括:发送端容器将虚拟网络寻址字段提供给发送端节点;所述发送端节点基于所述虚拟网络寻址字段获取所述虚拟网络寻址信息,并将所述虚拟网络寻址信息嵌入物理网络寻址字段的空闲位。41.虽然发送端节点可以基于自身的节点id来对所述物理网络寻址字段中源地址的物理网络寻址信息进行填充,但发送端节点通常并不知晓虚拟网络寻址字段中目的地地址的容器前缀对应于哪个物理节点。因此,为了正确生成物理网络寻址字段中目的地地址的物理网络寻址信息,发送端节点需要基于映射表,将所述虚拟网络寻址字段中的容器前缀地址(尤其是目的地容器的容器前缀地址)转化为节点地址,并作为所述物理网络寻址字段中物理网络寻址信息。其中,映射表由容器系统经控制面分发各个节点,并且包括节点id和容器前缀的映射关系。42.如前所示,实施本发明的报文转发网络需要基于ipv6格式,但本发明的容器间通信方法通过巧妙设计,可以兼容ipv4和ipv6两种格式的虚拟网络寻址。43.在所述虚拟网络基于ipv6格式寻址时,所述发送端节点将所述虚拟网络寻址字段中的容器id作为所述虚拟网络寻址信息嵌入物理网络寻址字段的所述空闲位。而在所述虚拟网络基于ipv4格式寻址时,所述发送端节点将所述虚拟网络寻址字段作为所述虚拟网络寻址信息嵌入物理网络寻址字段的所述空闲位。44.如图将结合图2~图4b,描述本发明的发送端如何将虚拟网络寻址信息嵌入物理网络寻址字段。45.图2示出了现有技术中使用的容器地址组成例。46.图2上部示出了在物理网络中,例如,用于iaas层网络中物理服务器(后续简称“节点”或“node”)的节点ip格式(基于ipv6)。节点地址在利用underlay技术传输时,仅仅需要64位或小于64位的数据来表示节点id(即,nodeid),后续64位为空闲位。47.图2中部示出了在虚拟网络中,容器ip基于ipv6的组成格式。在这128位的地址空间中,前64位是由clusterid(簇id,也可称服务id)和nodeid(节点id)组成的容器前缀(例如,podprefix)。该前缀是从容器网络集群ipv6地址大段中,位每一个节点分配的一个前缀(默认64位),作为该节点(如上所述,对应于物理服务器)上各个容器(例如,pod)的地址池;后64位则对应于包括空闲位和32位容器id(例如,容器集群范围内全局唯一的podid)的接口id。48.图2下部则示出了在虚拟网络中,容器ip基于ipv4的组成格式。在这32位的地址空间中,前m位是由clusterid(簇id,也可称服务id)和nodeid(节点id)组成的网络位。该网络位是从容器网络集群ipv4地址大段中,位每一个节点分配的一个前缀(默认26位),作为该节点(如上所述,对应于物理服务器)上各个容器(例如,pod)的地址池;后n位则对应于用于标识容器id(例如,podid)的主机位。49.本发明的通信方法优选可以基于如kubernetes(k8s)进行容器资源部署和管理。容器荚(pod)是k8s中能够创建和部署的最小单元,是k8s集群中的一个应用实例,总是部署在同一个物理节点上。容器荚(pod)中包含一个或多个容器,还包括了存储、网络等各容器共享的资源。容器荚(pod)可以支持多种容器环境,例如当前流行的容器环境docker等。在此,节点(例如,发送端节点和接收端节点)可以是部署有pod的物理节点,pod则对应于可经由本发明的通信方案进行寻址的容器。50.在需要使用图2上部所示的128位节点ip地址空间来复用容器ip地址时,需要根据容器ip是基于ipv4还是ipv6来选择不同的嵌入方法。图3a和图3b分别示出了虚拟网络基于ipv6和ipv4格式寻址时的嵌入方法。51.如图3a所示,当容器的虚拟网络寻址字段(即,容器ip)也包括128位时,需要进行前64位从容器前缀到节点前缀的转换,并将后32位的容器id嵌入节点ip的后32位。在图示的实施例中,剩余的32位可用作指示位,用于指示当前的嵌入时基于ipv6的映射还是经由ipv4的映射。应该理解的是,在其他实施例中,也可以在节点ip之外的其他位置进行如上的指示。52.如图3b所示,当容器的虚拟网络寻址字段(即,容器ip)包括32位时,需要进行前m位从容器前缀到节点前缀的转换,并且可以将32位的容器ip直接嵌入节点ip的后32位。同样地,剩余的32位可用作指示位,用于指示当前的嵌入时基于ipv6的映射还是经由ipv4的映射。53.进一步地,为了方便理解,图4a和图4b分别示出了ipv6和ipv4格式下的地址变换例。54.如图4a所示,源容器(图示node中加粗的pod)对应的128位容器ip地址为2001:db8:0:100::1234:0,需要将数据(对应于上部虚线框的负载)发送给目的地容器,目的地容器对应的128位的ip地址为2001:db8:0:200::abcd:0。为了在物理层进行传播,需要对如上虚拟网络格式的容器ip地址进行改写。将源容器的pod前缀对应于本机物理节点的地址,将目的地容器的pod前缀对应于目的地容器所在物理节点的地址。源地址的改写无需查找映射表,可直接基于本机物理地址和pod前缀获取。但目的地地址的改写则需查找映射表。由此,可以将2001:db8:0:100改写为fc00:cafe:1:a作为物理网络传输packet(分组)的源地址,podid则原位嵌入,用于后续接收端节点的处理。类似地,可以将2001:db8:0:200改写为fc00:beef:1:b作为物理网络传输packet(分组)的目的地地址,podid则原位嵌入,用于后续接收端节点的处理。另外,还可以在对应的32位的空闲位(第二空闲位)中添加指示符8001,以指示发送的节点ip地址中嵌入的是ipv6格式的虚拟网络地址信息。55.如图4b所示,源容器(图示node中加粗的pod)对应的32位容器ip地址为192.168.10.10,需要将数据(对应于上部虚线框的负载)发送给目的地容器,目的地容器对应的32位的ip地址为192.168.20.20。为了在物理层进行传播,需要对如上虚拟网络格式的容器ip地址进行改写。将源容器的pod前缀对应于本机物理节点的地址,将目的地容器的pod前缀对应于目的地容器所在物理节点的地址。源地址的改写无需查找映射表,可直接基于本机物理地址和pod前缀获取。但目的地地址的改写则需查找映射表。由此,可以将192.168.10.0改写为fc00:cafe:1:a作为物理网络传输packet(分组)的源地址,32位源容器ip地址为192.168.10.10整体作为podid嵌入到源地址最后,用于后续接收端节点的处理。类似地,可以将192.168.20.0改写为fc00:beef:1:b作为物理网络传输packet(分组)的目的地地址,32位目的地容器ip地址为192.168.20.20整体作为podid嵌入到源地址最后,用于后续接收端节点的处理。另外,还可以在对应的32位的空闲位(第二空闲位)中添加指示符8002,以指示发送的节点ip地址中嵌入的是ipv4格式的虚拟网络地址信息。56.与发送端类似,接收端也包括接收端物理节点(即,接收端节点)以及位于物理节点上的接收端容器,例如,目的地pod。接收端节点基于所述物理网络寻址字段中物理网络寻址信息接收所述报文,从对应的所述空闲位中取出所述虚拟网络寻址信息,并将所述报文信息送入与所述虚拟网络寻址信息相对应的容器。具体地,在所述虚拟网络基于ipv6格式寻址时,接收端节点基于映射表将所述物理网络寻址字段中物理网络寻址信息从节点地址转换为容器前缀地址,将从所述空闲位中取出所述虚拟网络寻址信息作为容器id,以复原包括所述容器前缀地址和所述容器id的所述虚拟网络寻址字段用于接收端节点的寻址。而在所述虚拟网络基于ipv4格式寻址时,接收端节点将从所述空闲位中取出所述虚拟网络寻址信息作为所述虚拟网络寻址字段用于接收端节点的寻址。57.由此,基于发送端节点和接收端节点的配合,实现了在发送端节点,由虚拟网络寻址字段到物理网络寻址字段的转换(但物理网络寻址字段中包含了虚拟网络寻址的信息),发送端节点到接收端节点的物理网络寻址,以及在接收端节点,由物理网络寻址字段到虚拟网络寻址字段的逆转换。这样,就能够以物理网络寻址字段的网络传输开销(即,不需要额外包括虚拟网络寻址字段的封装包头)实际上实现从发送端容器到接收端容器的容器间虚拟网络传输(即,虚拟网络寻址字段实际上从发送端容器传递到了接收端容器),实现了容器虚拟网络的通信。58.如上基于图2~图4b给出的例子中,容器ip都对应于容器地址空间。容器地址空间为容器在不部署时所归属的overlay网络地址空间(后续可简称为podcidr);该地址空间设计为每个节点分配独立的ipv6/ipv4地址段,作为各节点本地pod地址池,容器所获取的容纳ip(podip)不可跨节点迁移。59.在其他实施例中,还可以实现目的地地址指向anycast(任播)地址空间的容器间传播。在任播地址空间,容器网络集群全局范围内,保留ipv6/ipv4地址段,作为容器服务地址(clusterip),当多个容器提供相同服务时,可以通过该服务地址对外提供服务;服务地址一旦创建,将在容器网络所有节点部署。因此,在本发明中,在所述虚拟网络寻址字段的目的地地址对应于任播(anycast)地址空间时,所述发送端节点从所述任播地址空间中选定一个成员(member),并将所述成员的地址作为在所述虚拟网络寻址字段的新目的地地址。60.如下将结合图5a和图5b对基于本发明的容器通信的收发过程进行说明。图5a和图5b示出了根据本发明进行嵌入虚拟网络地址信息的物理网络地址发送和接收的例子。为了简明,图5a示出了基于ipv6的容器地址空间寻址的例子。图5b示出了基于ipv4的任播地址空间寻址的例子。61.如图5a所示,容器系统的控制面(例如,k8s的控制面)维护nodeprefix和podprefix之间的映射表,并将其存储在控制面的etcd模块中。控制面还可以包括api服务器和控制服务器等模块。具体地,可以经由api服务器向所在容器网络的所有节点推送(push)映射表。映射表中包括nodeprefix和podprefix之间的映射关系,并且可以包括本地项目,例如pods列表。在使用srv6进行分组传播时,发送端节点可以结合sid表,基于映射表完成如上结合图4a所示的地址转换。转换后的分组经由srv6网络进行传播。接收端节点由于同样分发有映射表,因此ip为fc00:beef:1:b的节点可以接收上述分组,基于指示符8001的指示,基于ipv6的规则重构容器ip。具体地,可以将节点前缀转换回容器前缀,即,将源节点前缀fc00:cafe:1:a转换为源容器前缀2001:db8:0:100,将目的地节点前缀fc00:beef:1:b转换为源容器前缀2001:db8:0:200,并将物理网络地址中后32位的podid放回到容器ip最后,由此得到与发送端容器给出的容器ip相同的容器ip,用于接收端节点上目的地容器的寻址。62.应该注意到,可以为物理网络发送的报文额外添加路由类型(routingtype)和分段对齐(segmentleft=0)的指示,以便将分组以符合srv6的方式传送。63.如图5b所示,覆盖网络通信是基于ipv4的通信,并且源容器寻址的是任播地址空间。如图所示,源容器ip是确定且唯一的ip192.168.10.10,但目的地ip指代的并非是如图4b所示的目的地容器,而是包括多个成员的任播地址。由于anycast地址为服务地址,后端关联实际提供服务的一组容器;所以可以创建服务表(servicetable)集中维护clusterip(簇ip,也称服务ip)、member(成员)和nodeprefix(节点前缀)之间的关系。服务表同样可以存储在控制面的etcd中并由api服务器发送到各个节点。64.于是,发送端节点可以准确查找服务表,基于预定算法(例如,通过图示的首包hash、装载表项)从clusterip对应的多个member中选择一个对应member的容器ip,同时找到对应nodeprefixip;将对应nodeprefixip作为目的地节点ip,将容器ip作为podid来得到物理网络ip,以实现容器网络编址信息在iaas层基础网络中传递。如图所示,源容器发出的目的地ip指向一个clusterip198.51.100.100,通过查找服务表发现198.51.100.100包括多个member,如图中示出的192.168.20.20和192.168.30.30。经过计算,确定其中的一个member192.168.20.20作为目的地容器,此时,可以将该member对应的节点前缀fc00:beef:1:b作为目的地节点的节点前缀并将member地址嵌入到物理网络地址最后,以得到fc00:beef:1:b:8002::192.168.20.20作为发送端节点出构造的物理网络寻址字段中的内容。相应地,接收端同样维护映射表,因此如图所示,地址为192.168.30.30的membe由于未被选中而无法接收报文,而地址为192.168.20.20的member所在节点基于fc00:beef:1:b接收到报文,并将接收到的报文寻址信息转换成sa192.168.10.10,da192.168.20.20提供给对应容器。65.由此,本发明实现了在iaas层基础网络为ipv6编址场景中,对overlay模式转发性能的优化,避免了额外新增封装带来的性能影响;66.本发明还可以实现为一种容器虚拟网络。该容器虚拟网络能够执行如上所述的本发明的容器间通信方法。图6示出了根据本发明一个实施例的容器虚拟网络的组成示意图。该网络包括发送端节点611、底层转发网络620和接收端节点631。发送端的物理节点611上实现有多个容器,包括源容器612和其他容器613,类似地,接收端节点631上也可以实现有多个容器,其中包括目的地容器632和其他容器633。在一个实施例中,该容器网络(虚拟网络)实际上包括源容器612、发送端节点611、底层转发网络620、接收端节点631和目的地容器632。67.发送端容器生成虚拟网络寻址字段。发送端节点611用于从源容器612生成的虚拟网络寻址字段中获取虚拟网络寻址信息,并将其嵌入物理网络寻址字段的空闲位,得到物理网络寻址格式的报文并向底层转发网络发送所述报文。底层转发网络620优选为srv6网络,用于转发所述报文。接收端节点631用于基于所述物理网络寻址字段中物理网络寻址信息从所述底层转发网络接收所述报文,从所述空闲位中取出所述虚拟网络寻址信息,并将所述报文信息送入与所述虚拟网络寻址信息相对应的目的地容器632。在一个优选实施例中,接收端节点631可以从接收到的物理网络寻址字段中复原出源容器612提供的虚拟网络寻址字段,并将其提供给目的地容器632。由此,以物理网络寻址字段的通信开销实现了虚拟网络寻址字段从源容器612到目的地容器632的实际传输,实现了容器间的虚拟网络通信。68.应该理解的是,容器网络600中可以包括多个节点,每个节点可以包括多个容器。当某一个节点上的某一个容器向另一个节点上的另一个容器发送消息时,就可以作为本发明的发送端来进行虚拟地址到物理地址的转换,被寻址的节点所在容器则可以执行物理地址到虚拟地址的逆转换,由此通过将overlay网络编址信息嵌入ipv6编址中转发,避免了额外新增overlay封装带来的性能影响;69.图7示出了根据本发明一实施例可用于实现上述容器间通信方法的计算设备的结构示意图。70.参见图7,计算设备700包括存储器710和处理器720。71.处理器720可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器720可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器720可以使用定制的电路实现,例如特定用途集成电路(asic,applicationspecificintegratedcircuit)或者现场可编程逻辑门阵列(fpga,fieldprogrammablegatearrays)。72.存储器710可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器720或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器710可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器710可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、minsd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。73.存储器710上存储有可执行代码,当可执行代码被处理器720处理时,可以使处理器720执行上文述及的容器间通信方法。74.上文中已经参考附图详细描述了根据本发明的容器间通信方法和容器系统。本发明的容器间通信方案利用ipv6地址编程能力,在发送端将上层虚拟网络的寻址信息嵌入底层物理网络地址中携带,并在接收端恢复成所需的虚拟网络寻址格式用于虚拟网络寻址,由此将underlay和overlay网络的优点合一,在实际提供虚拟网络层通信能力的同时避免封装带来的通信性能损耗。75.此外,根据本发明的方法还可以实现为一种计机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。76.或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。77.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。78.附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。79.以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1