多租户通信隔离方法和混合组网方法与流程

文档序号:30455253发布日期:2022-06-18 03:03阅读:226来源:国知局
1.本公开涉及一种云技术,尤其涉及一种多租户通信隔离方法和混合组网方法。
背景技术
::2.随着数据中心的服务器虚拟化程度快速提高,其敏捷性和灵活性也得以显著提高。网络虚拟化和从物理网络分离出虚拟网络使得管理、自动化和编排变得更简单。服务器虚拟化后,一台物理服务器中可以承载多个虚拟机实例,每个虚拟机实例都有独立的ip地址和mac地址,相当于接入数据中心的服务器成倍扩大了。3.公有云或其它大型虚拟化云数据中心动辄需容纳上万甚至更多租户。随着数据安全重要性的日益彰显,需要为众多租户提供虚拟私有云(vpc)服务以实现租户数据间的隔离。然而,当需要使用尚未在vpc中注册的设备来为租户提供服务时,如何在实现这些设备与vpc互通的同时保持各租户之间的可靠隔离,成为本领域需要解决的一个技术问题。4.为此,需要一种改进的多租户通信隔离方案。技术实现要素:5.本公开要解决的一个技术问题是提供一种多租户通信隔离方案,该方案通过在一个虚拟机实例上划分多个命名空间,利用虚拟网卡对实现命名空间之间的信息传递,并且使用不同的虚拟网卡分别负责虚拟机实例与外部的数据包的接收和发送,来实现多租户彼此隔离的同时与各自的vpc网络互通的效果。6.根据本公开的第一个方面,提供了一种多租户通信隔离方法,包括:创建第一虚拟网卡和第二虚拟网卡,所述第一虚拟网卡位于默认网络命名空间;创建外出网络命名空间,将所述第二虚拟网卡加入所述外出网络命名空间;为每个租户创建专用网络命名空间和第一虚拟网卡对,每个第一虚拟网卡对的第一端连接至所述默认网络命名空间,第二端连接至该租户的专用网络命名空间;以及为每个租户创建第二虚拟网卡对,每个第二虚拟网卡对的第一端连接至该租户的专用网络命名空间,第二端连接至所述外出网络命名空间。7.可选地,该方法还包括:在所述默认网络命名空间内,创建vxlan隧道接口和第一网桥;将所述隧道接口设备和所述每个第一虚拟网卡对的第一端加入所述第一网桥,并且,由第一虚拟网卡接收的网络信息通过所述隧道接口由所述第一网桥转发给该网络信息寻址租户的所述第一虚拟网卡对的第一端。8.可选地,该方法还包括在至少一个租户的专用网络命名空间内,在对应的第一虚拟网卡对的第二端上创建多个vlan子接口;以及为每个vlan子接口配置对应vlan的网关接口地址。9.可选地,该方法还包括配置ip转换规则,以将源ip地址属于所述vlan子接口的数据包进行地址转换并由对应的第二虚拟网卡对的第一端送至所述外出网络命名空间。10.可选地,将源ip地址属于所述vlan子接口的数据包进行地址转换包括:动态获取所述对应的第二虚拟网卡对的第一端的ip地址,并将所述源ip地址进行基于动态获取地址段的伪装。11.可选地,在所述第一虚拟网卡接收的网络信息用于在同一租户内部的不同子网通信时,所述网络信息在该租户的vlan子接口互通,并经由所述第一虚拟网卡进行发送。12.可选地,该方法还包括在所述外出网络命名空间内,创建第二网桥;将所述第二虚拟网卡和所述每个第二虚拟网卡对的第二端加入所述第二网桥,并且,每个租户的所述第二虚拟网卡对的第二端将要发送的网络信息交由所述第二网桥并汇聚着至所述第一虚拟网卡进行发送。13.可选地,该方法还包括在所述默认网络命名空间内,配置fdb表项,用于对数据链路层广播和未知单播的首部进行转发指导。14.可选地,每个租户的所述第一虚拟网卡对用于获取由所述第一虚拟网卡接收的寻址该租户的网络信息;并且每个租户的所述第二虚拟网卡对用于将要发送的网络信息交由所述第二虚拟网卡进行发送。15.根据本公开的第二个方面,提供了一种混合组网方法,包括:执行了如第一方面所述的方法的虚拟机的所述第一虚拟网卡获取来自未注册节点中租户的数据包;以及所述虚拟机将所述数据包封装成符合vxlan协议的数据包并通过所述第二虚拟网卡将经封装的数据包送至已注册节点中的对应租户资源。16.根据本公开的第三个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面所述的方法。17.根据本公开的第四个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面所述的方法。18.由此,本发明的多租户通信隔离方案能够提供一个运行在云上虚拟机中的vxlan网关系统,该系统使得在上层系统使用vxlan构建的支持多vlan格局的overlay网络时,可以访问到原始的处于underlay的vpc原属网络,使得非注册在vpc中的设备可以和原属vpc进行混合组网。该方案支持存在多租户的情况,允许对租户网络进行隔离配置。该方案的配置简单,无复杂的控制系统,全部使用原始linux组件完成,非常轻量化。附图说明19.通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。20.图1示出了sdn网络中跨虚拟机实例进行通信的原理图。21.图2a-b示出了sdn网络跨虚拟机实例进行通信的例子。22.图3示出了根据本发明一个实施例的多租户通信隔离方法的示意性流程图。23.图4示出了多租户通信隔离的示意图。24.图5示出了虚拟机实例作为多租户vxlan网关节点的示意图。25.图6示出了利用本发明的vxlan网关节点进行混合组网的一个例子。26.图7示出了根据本发明一实施例可用于实现上述多租户通信隔离方法或混合组网方法的计算设备的结构示意图。具体实施方式27.下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。应该理解的是,本公开中使用的“第一”和“第二”仅用于对同类对象的不同实例进行区分,而非对先后次序或是重要性有任何暗示。28.如前所述,随着数据中心的服务器虚拟化程度快速提高,其敏捷性和灵活性也得以显著提高。网络虚拟化和从物理网络分离出虚拟网络使得管理、自动化和编排变得更简单。服务器虚拟化后,一台物理服务器中可以承载多个虚拟机实例,每个虚拟机实例都有独立的ip地址和mac地址,相当于接入数据中心的服务器成倍扩大了。29.公有云或其它大型虚拟化云数据中心动辄需容纳上万甚至更多租户,仅支持4000个左右可用虚拟网络的传统vlan显然已经力不从心。vxlan通过帧头中引入了类似vlanid的网络标识,即,24比特的vxlan网络标识vni,理论上可支持多达16m的vxlan段,从而满足了大规模不同网络之间的标识需求。30.另外,由于传统的网络设备(交换机、路由器)的固件是由设备制造商锁定和控制,同样无法满足数据中心各租户快速变化的需求。因此,sdn(软件定义网络,softwaredefinednetwork)技术被引入,用于将传统网络设备紧耦合的网络架构被分拆成应用、控制、转发三层分离的架构。控制功能被转移到了服务器,上层应用、底层转发设施被抽象成多个逻辑实体。由此,通过将网络控制与物理网络拓扑分离,能够摆脱硬件对网络架构的限制,使得用户可以像升级、安装软件一样对网络架构进行修改,满足对整个网站架构进行调整、扩容或升级的需求。而底层的交换机、路由器等硬件则无需替换,节省大量的成本的同时,网络架构迭代周期将大大缩短。31.随着对数据安全要求的持续增高,业已利用sdn技术实现虚拟私有云(virtualprivatecloud,以下简称vpc)。每个虚拟私有云vpc由一个私网网段、路由表和至少一个子网组成。云资源(例如云服务器、云数据库等)需要部署在子网内。虚拟私有云vpc创建完成后,可以为虚拟私有云vpc划分一个或多个子网。在创建虚拟私有云vpc时,系统会自动生成默认路由表,默认路由表的作用是保证了同一个虚拟私有云vpc下的所有子网互通。当默认路由表中的路由策略无法满足应用(比如未绑定弹性公网ip的云服务器需要访问外网)时,还需要通过创建自定义路由表来解决。32.云服务商可以按租户来进行vpc的实现。在此,租户(tenant)指部署在云上的服务、容器等资源可以分属不同的最终用户。一个用户可以就是一个租户。每个租户之间可能会要求网络隔离,即,每个租户隔离在各自的vpc中。在具体的网络布置中,某一个租户可能跨多个虚拟机实例分布。运行在云上的虚拟机实例之间的如果需要实现通信,需要sdn系统预先知道对应的网络五元组信息(收发方的ip和端口信息以及协议信息),在整个sdn网络中注入相关的流表信息才能互相通信。如果虚拟机内部运行了容器系统或者配置了额外的虚拟机网卡,这些ip地址无法注册到sdn,那么这些容器系统或者其他非预期设备无法跨虚拟机实例互相通信。而如果虚拟机内部运行的软件系统需要对网卡上添加vlan子接口,即虚拟机内部应该想要侵入到基础网络并利用vlan对网络进行隔离,该类型的报文在跨ecs通信时无法被转发。33.为此,图1示出了sdn网络中跨虚拟机实例进行通信的原理图。弹性计算服务(ecs)正常创建虚拟机实例作为基础资源,这些虚拟机内部需要拥有正常的管理层面的网卡,这些网卡的ip地址由ecs自动分配并配置到内部,并且如图所示将这些网卡记录为eth0。如图1所示,虚拟机实例1和实例2上布置了属于同一租户(例如,租户a)的资源。实例上的资源可以在例如多个容器中实现(未在图1中示出,具体示例可参见如下图2a-b)。由于容器是位于操作系统之上的孤立系统,无法看见为虚拟机配置的网卡eth0。为此,为了实现同一vpc内不同实例之间的互通,可以进行如下操作:34.1、在每一台虚拟机(图示的实例1和2)内部创建linux提供驱动的vxlan隧道接口,记为:vxlan-0;35.2、创建网桥,例如图示中基于openvswitch的桥,记为:mock-br;36.3、配置fdb表项(图示的网桥fdb连接(append)),用于对数据链路层广播、未知单播的首包转发进行能指导(即,配置首包广播表项,后续详细转发表项自学习);37.4、创建一对veth网卡,将其中一张记为veth-br,对端命名为对应服务想要实际使用的网卡名字,例如:eth1;38.5、将其veth-br加入到mock-br中;39.6、将所有新建网卡和网桥设备接口链路状态设置为up;40.此时,eth1即为可以使用的类似于普通物理服务器的虚拟以太网卡,在该网卡上可以额外创建vlan子接口,可以将其本身或者子接口再加入到具体服务的网桥中去完成各种服务需求。41.图2a-b示出了sdn网络跨虚拟机实例进行通信的例子。42.如图2a所示,可以使用图1的eth1作为容器(如图所示的容器1和2)网络的上联接口。由此,虚拟机实例1中的容器1和2就可以通过网桥,经由eth1和vxlan接口直到网卡eth0,实现与vpc中其他实例(例如,图示的实例2…n)的互通,以及容器1和2之间的互通。43.进一步地,在同一租户的vpc包括划分的多个子网时,存在同一个虚拟机实例中的不同容器分属不同子网的情况。此时,如图2b所示,可以在eth1网卡上创建分属各个vlan的vlan子接口。周知的是,vlan用于划分lan,linux能够接收具有vlan标记的数据包,并且将每个vlanid看作是一个不同的网络接口。为此,图示的eth1.9和eth1.11分别对应于vlanid9和vlanid11。由此,属于vlan9的容器1就可以通过子接口eth1.9进行消息收发,而属于vlan11的容器2、3和4就可以通过子接口eth1.11进行消息收发。44.在如上的例子中,可以使用openvswitch提供驱动的vxlan接口代替linux提供驱动的vxlan接口,也可以使用openvswitch的流表项代替linux系统的网桥fdb转发项。另外,也可以在一个实例中同时包括图2a所示的容器上联和图2b所示的vlan子接口的实现。45.由此,通过配置首包广播表项,后续详细转发表项自学习的方式,最终提供给用户(即,不同租户)提供一种与传统网卡使用体验完全相同的服务,即,对用户透明,同时能够和具体服务系统中频繁的动态变化导致频繁的表项更新动作解耦,无需感知上层具体的服务系统。46.如上图1和图2a-b中示出的实例可以看作是尚未在vpc中注册的设备。在vpc的布置中,需要使得运行在云上的跨节点vxlan隧道系统的网络设备可以与云服务上原属vpc之间实现网络互通的同时,可以实现自定义的多租户网络隔离。47.为此,提供一种多租户通信隔离方案,该方案通过在一个虚拟机实例上划分多个命名空间,利用虚拟网卡对实现命名空间之间的信息传递,并且使用不同的虚拟网卡分别负责虚拟机实例与外部的数据包的接收和发送,来实现多租户隔离的同时与各自的vpc网络互通的效果。48.图3示出了根据本发明一个实施例的多租户通信隔离方法的示意性流程图。该方法可以是在sdn网络的一个虚拟机实例上实现的方法。图4示出了多租户通信隔离的示意图。49.在步骤s310,创建第一虚拟网卡(例如,图4中的网卡eth0)和第二虚拟网卡(例如,图4中的网卡eth1)。第一虚拟网卡eth0位于默认网络命名空间(defaultnatnetnamespace)。在此,命名空间(namespace)可以指代linux中操作系统层级的资源隔离技术,用于能够将linux的全局资源,划分为命名空间范围内的资源,而且不同命名空间之间的资源彼此透明,不同命名空间里的进程无法感知到其它命名空间里面的进程和资源。50.在步骤s320,创建外出网络命名空间(即,ext网络命名空间,extnatnetnamespace),并且将如上额外创建的第二虚拟网卡eth1加入外出网络命名空间。51.在步骤s330,为每个租户创建专用网络命名空间和第一虚拟网卡对,每个第一虚拟网卡对的第一端连接至所述默认网络命名空间,第二端连接至该租户的专用网络命名空间。如图4所示,假设存在多个租户a-x,可以为每个租户创建专用的网络命名空间,例如,租户a网络命名空间、租户b网络命名空间、…直至租户x网络命名空间,同时为每个租户创建第一虚拟网卡对(veth)。在此,veth指代虚拟以太网卡,是linux系统自带的一种成对出现的虚拟网卡,收发端直接连接在一起,即形成一对veth网卡。网卡对的一端发出的报文直接接入网卡对的另一端,并且反之亦然。如图所示,可以为租户a创建虚拟网卡对veth-tenant-a,veth-tenant-a包括两张网卡(即,包括两个端,一端对应于网卡对中的一张网卡),一张网卡连接至所述默认网络命名空间,另一张网卡连接至该租户专用的租户a网络命名空间。类似地,可以为租户b创建虚拟网卡对veth-tenant-b,veth-tenant-b包括两张网卡(即,两端),一张网卡连接至所述默认网络命名空间,另一张网卡连接至该租户专用的租户b网络命名空间。直至租户x的虚拟网卡对veth-tenant-x的一端连接至所述默认网络命名空间,另一段连接至该租户专用的租户x网络命名空间。52.进一步地,在步骤s340,为每个租户创建第二虚拟网卡对,每个第二虚拟网卡对的第一端连接至该租户的专用网络命名空间,第二端连接至所述外出网络命名空间。如图4所示,可以为租户a、租户b网络命名空间、…直至租户x网络命创建第二虚拟网卡对(veth-ext)。在如图所示,可以为租户a创建虚拟网卡对veth-ext-tenant-a,veth-ext-tenant-a包括两张网卡(即,两端),一张网卡连接至该租户专用的租户a网络命名空间,另一张网卡连接至ext网络命名空间。类似地,可以为租户b创建虚拟网卡对veth-ext-tenant-b,veth-ext-tenant-b包括两张网卡(即,两端),一张网卡连接至该租户专用的租户b网络命名空间,另一张网卡连接至ext网络命名空间。直至租户x的虚拟网卡对veth-ext-tenant-x的一端连接至该租户专用的租户x网络命名空间,另一段同样连接至ext网络命名空间。53.由此,本发明提供在默认命名空间之外隔离出ext命名空间和多个租户命名空间来实现租户间的隔离,同时通过设置的两张虚拟网卡eth0和eth1实现虚拟机与外部的信息交换,而每个租户空间可以通过两对veth实现各自从eth0(例如,经由vxlan隧道接口)的信息接收,以及经由ext命名空间的eth1实现的信息发送。54.具体地,每个租户的所述第一虚拟网卡对可以用于获取由所述第一虚拟网卡接收的寻址该租户的网络信息;并且每个租户的所述第二虚拟网卡对用于将要发送的网络信息交由所述第二虚拟网卡进行发送。如图4所示,例如租户a网络命名空间中的veth-tenant-a可以接收来自eth0的属于该租户a的网络信息,在经过一定的内部处理后,经过veth-ext-tenant-a送至ext命名空间,并由eth1发送出去。55.本发明的上述多命名空间多虚拟网卡的结构尤其适用于实现虚拟机中的vxlan网关系统。该系统使得在云计算服务上的上层系统在使用vxlan构建的支持多vlan格局的overlay网络时,可以访问到原始的处于underlay的vpc原属网络,使得非注册在vpc中的设备可以和原属vpc进行混合组网。在存在多租户时,该方案允许对租户网络进行隔离配置。56.为此,该方法还包括:在所述默认网络命名空间内,创建vxlan隧道接口和第一网桥;并且将所述vxlan隧道接口设备和所述每个第一虚拟网卡对的第一端加入所述第一网桥,并且,由第一虚拟网卡接收的网络信息通过所述隧道接口由所述第一网桥转发给该网络信息寻址租户的所述第一虚拟网卡对的第一端。57.如图4所示,默认网络命名空间内包括一个linuxbridge(第一网桥),第一网桥上加入有vxlan隧道接口设备以及如上所述的veth-tenant-a、veth-tenant-b、…直至veth-tenant-x。在此,vxlan是一种基于udp的网络隧道和隔离技术,其将原始的数据链路层网络数据封装在udp报文中传输。具体地,vxlan隧道协议将第2层以太网帧封装到第3层udp据包中,以便创建虚拟化第2子网或横跨物理第3层网络的分段。每个第2层子网都由可对流量进行分段的vxlan网络标识符(vni)进行唯一标识。换句话说,图4所示的vxlan隧道接口可以将从eth0获取的数据包进行符合vxlan隧道协议的封装。58.由于对数据包进行了符合vxlan隧道协议的封装,为此本方法还可以包括:在所述默认网络命名空间内,配置fdb表项,用于对数据链路层广播和未知单播的首部进行转发指导。由此,通过配置首包广播表项帮助后续详细转发表项的自学习。59.相应地,为了对来自各个租户命名空间的数据进行处理,本方法还可以包括:在所述外出网络命名空间内,创建第二网桥;将所述第二虚拟网卡和所述每个第二虚拟网卡对的第二端加入所述第二网桥,并且,每个租户的所述第二虚拟网卡对的第二端将要发送的网络信息交由所述第二网桥并汇聚着至所述第一虚拟网卡进行发送。同样,如图4所示,ext网络命名空间内也包括一个linuxbridge(第二网桥),第二网桥上加入有eth1以及如上所述的veth-ext-tenant-a、veth-ext-tenant-b、…直至veth-ext-tenant-x。由此,使得eth1能够对来自不同租户命名空间的网络数据进行正确的发送。60.进一步地,本发明还可以进一步支持租户内的子网划分。为此,本方法还可以包括:在至少一个租户的专用网络命名空间内,在对应的第一虚拟网卡对的第二端上创建多个vlan子接口;以及为每个vlan子接口配置对应vlan的网关接口地址。具体地,可以配置ip转换规则,以将源ip地址属于所述vlan子接口的数据包进行地址转换并由对应的第二虚拟网卡对的第一端送至所述外出网络命名空间。例如,可以动态获取所述对应的第二虚拟网卡对的第一端的ip地址,并将所述源ip地址进行基于动态获取地址段的伪装。61.图5示出了虚拟机实例作为多租户vxlan网关节点的示意图。与图4类似,图5也包括默认网络命名空间、ext网络命名空间和各个租户专用的网络命名空间。由于篇幅的限制,图5中仅示出了租户a网络命名空间和租户b网络命名空间,以及相应的虚拟以太网卡的配置,但可以理解的是,在图5所示的例子中,作为vxlan网关的虚拟机上可以包括更多个租户的专用网络命名空间。另外,与图4的不同之处在于,图5所示的多租户vxlan网关节点还支持对各个租户内部子网(对应于不同的vlan)的划分。62.云上的计算服务可以正常创建虚拟机实例作为基础资源,这些虚拟机内部需要拥有正常的管理层面的网卡,这些网卡的ip地址由云计算服务自动分配并配置到内部。这些网卡例如可以记录为eth0。63.而对于用作多租户vxlan网关节点的虚拟机实例,则需要执行如下操作:64.0、作为vxlan网关的虚拟机需要申请2张虚拟网卡,分别为eth0和eth1;65.1、创建一个ext网络命名空间,将eth1移入该专用网络命名空间,在该命名空间内创建一个专门的linuxbridge(即,对应于图4中的第二网桥),并将eth1加入到该网桥中;66.2、在默认网络命名空间内,创建linux提供驱动的vxlan隧道接口;67.3、在默认网络命名空间内,创建基于linuxbridge(即,对应于图4中的第一网桥)的桥设备,将vxlan设备加入到该linux网桥中;68.4、在默认网络命名空间内,配置fdb表项,用于对数据链路层广播、未知单播的首包转发指导(由于数据包采用了vxlan协议的封装);69.5、在默认网络命名空间内每个租户创建一对veth网卡,将每对veth中其中一张加入到该linuxbridge中;70.6、在每个单独租户创建专用网络命名空间,tenanta、tanantb...tenantxnatnetnamesapce(即、租户a、租户b…租户x命名空间),将对应租户的另一张veth卡移入对应租户所属的网络命名空间中;71.7,在每个单独租户专用网络命名空间内,veth网卡上创建分属于各个vlan的vlan子接口,具体vlan值有租户的实际需求并兼顾全局的配置决定,vlanid不可与其他租户冲突,该接口上配置对应vlan所持有的cidr(无类别域间路由)的网关接口地址;72.8、在ext网络命名空间内,针对每个租户创建一对veth-ext网卡,将每对veth中其中一张加入到该命名空间的linuxbridge中;73.9、在ext网络命名空间内,对应租户的另一张veth-ext网卡移入对应租户所属的网络命名空间中;74.10、在每个单独租户专用网络命名空间内,将veth-ext其ip地址配置为分配给该租户的外部ip,该ip地址实际上是属于云计算服务支持的vpc合法注册的ip地址,如有多个ip地址则需使用辅助ip功能,确保sdn网络中不会丢弃该数据(ext-ipfortenantx,belongstoecsvpc),在每个单独租户创建专用网络命名空间内,配置默认路由指向vpc的网关ip地址,使其可以和vpc内其他虚拟机进行正常通信;75.11、在每个单独租户专用网络命名空间内,配置开启linux的ip_forward能力(由此实现对应于不同vlan端口的转发);76.12、在每个单独租户专用网络命名空间内,配置iptables规则,指定源ip地址属于vlan1~vlanx的cidr的数据包在经由其专属的veth-ext网卡发出时进行ip地址段伪装masquerade,例如,源ip地址属于vlana1的cidr1的数据包在经由veth-ext-tenant-a网卡发出时动态获取该veth-ext-tenant-a网卡的ip地址以进行ip地址段的伪装。77.此时,处于默认网络命名空间的vxlan接收到的数据报文均可以经由在每个单独租户专用网络命名空间内部系统的处理后,伪装成其专属的veth-ext网卡的ip,进一步转发到eth1链接到云中该租户的vpc网络中进行通信。由此形成多租户网络隔离,但同时能够与各自的vpc网络互通的局面。78.图6示出了利用本发明的vxlan网关节点进行混合组网的一个例子。如图6左侧的实例1和2所示,未注册vpc的节点上多租户使用多个基于eth1(驱动为veth)的vlan子接口进行带vlan的在overlay上的跨云网络通信。为了与图6右侧所示的位于vpc的sdn网络中且不在overlay之上的常规虚拟机进行互通,通过本发明的多租户隔离方法实现为vxlan网关节点的虚拟机对数据包在对应命名空间内部转发来实现直接互通。例如,来自实例1和2的各租户的数据包通过vxlan网关节点的ext命名空间可以正常访问右侧的vpc中节点,并且左侧处于不同租户的容器之间无法直接互通。79.由此,本发明还可以实现为一种混合组网方法,包括:执行了如上多租户通信隔离方法的虚拟机的所述第一虚拟网卡获取来自未注册节点中租户的数据包;以及所述虚拟机将所述数据包封装成符合vxlan协议的数据包并通过所述第二虚拟网卡将经封装的数据包送至已注册节点(即,原属vpc的节点)中的对应租户资源。80.应该理解的是,在图6所示的例子中,如果位于左侧的未在vpc中注册的虚拟机中的租户容器想要与右侧的已在vpc中注册的同租户容器进行互通,则需要经过本发明提出的vxlan网关节点,由图中vxlan网关节点的eth0进行消息接收,eth1进行消息接收。而在另一个实施例中,如果位于左侧的未在vpc中注册的虚拟机中的租户容器想要与同租户的不同子网中的容器(同样位于图示左侧的未注册虚拟机)进行交互时,消息的收发仍然需要经过图示的vxlan网关节点,但此时是eth0进行消息接收,eth0进行消息接收。具体地,同一个租户的容器在跨越vlanid进行通信时,即,不通cidr的租户内部跨子网通信所示,消息仍然从eth0进来,到该租户内部的vlan子接口互通,然后再从eth0发出,不会走到ext的veth和eth1。换句话说,本发明的vxlan网关节点设置,不但可以用作未注册虚拟机与原属vpc网络之间的互通以及不同租户之间的隔离,还可以用作未注册虚拟机中各租户内部跨子网通信的网关(通过图5所示租户命名空间内部的vlan子接口互通),由此进一步提升混布网络的通信性能。81.图7示出了根据本发明一实施例可用于实现上述多租户通信隔离方法的计算设备的结构示意图。82.参见图7,计算设备700包括存储器710和处理器720。83.处理器720可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器720可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器720可以使用定制的电路实现,例如特定用途集成电路(asic,applicationspecificintegratedcircuit)或者现场可编程逻辑门阵列(fpga,fieldprogrammablegatearrays)。84.存储器710可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器720或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器710可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器710可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、minsd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。85.存储器710上存储有可执行代码,当可执行代码被处理器720处理时,可以使处理器720执行上文述及的多租户通信隔离方法。86.上文中已经参考附图详细描述了根据本发明的多租户通信隔离方案。本发明的多租户通信隔离方案能够提供一个运行在云上虚拟机中的vxlan网关系统,该系统使得在上层系统使用vxlan构建的支持多vlan格局的overlay网络时,可以访问到原始的处于underlay的vpc原属网络,使得非注册在vpc中的设备可以和原属vpc进行混合组网。该方案支持存在多租户的情况,允许对租户网络进行隔离配置。该方案的配置简单,无复杂的控制系统,全部使用原始linux组件完成,非常轻量化。87.此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。88.或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。89.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。90.附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。91.以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1