多租户云平台架构
技术领域
本发明涉及云计算网络,更具体地,涉及多租户云平台架构。
背景技术
随着互联网和云计算技术的快速发展,很多IT公司都面临着如何高效管理自身硬件资源的问题。特别对于云计算大型机房的网络管理而言,一方面物理网络架构由于无法随意变动,无法很好适配上层业务发展的需求;另一方面,面对云计算多租户场景的需求,纯粹通过物理设备实现网络隔离和划分则费时费力。例如,在现有技术方案中,主要通过VLAN方式实现不同租户之间的网络通信隔离,并且通过机房物理网络设备实现对网络数据的全部控制。然而,网络架构与硬件设备高度耦合,无法随意改变,在扩展性上不够灵活。特别是无法满足多租户场景对网络的多样需求,并且机房运维工作量大,运维人员需要拿出较多的时间维护网络硬件设定。
发明内容
为了解决物理网络设备无法灵活变动的问题,软件定义网络(SDN)和网络虚拟化(NFV)近几年蓬勃发展起来,NFV基于目前广泛应用的x86平台实现网络数据包的转发和控制功能,SDN是网络虚拟化的一种实现方式,其核心技术是通过OpenFlow等协议将网络设备控制面与数据面分离开来,并且是未来网络发展的重要方向。本发明提出了基于SDN实现的一种云计算多租户场景整体网络解决方案。
在本发明的第一方面,提出了一种云平台架构中的宿主机,包括:
至少一个云主机,被配置为:如果所述云主机不具有数据包的目的媒体访问控制MAC地址,则所述云主机通过内部交换机向地址解析协议ARP响应代理发送ARP广播,通过所述内部交换机从所述ARP响应代理接收与数据包的目的互联网协议IP地址相匹配的目的MAC地址,用所接收的目的MAC地址封装所述数据包,并且将所述数据包发送到所述内部交换机;
所述ARP响应代理,被配置为在从内部交换机接收到来自云主机的ARP广播时,向管理服务器发送所接收的ARP广播中的数据包的目的IP地址,从所述管理服务器接收与数据包的目的IP地址相匹配的目的MAC地址,并且通过所述内部交换机向所述云主机发送所述目的MAC地址;
所述内部交换机,被配置为从所述云主机接收数据包,如果从所述云主机接收的数据包的目的MAC地址不是虚拟路由器的第一网关的MAC地址,则向软件定义网络SDN控制器发送所接收的数据包的源MAC地址和目的MAC地址以请求所述SDN控制器确定与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机是否具备通信权限以及所述源MAC地址和所述目的MAC地址是否在同一个宿主机内,当从所述SDN控制器接收到指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机具备通信权限并且所述源MAC地址和所述目的MAC地址不在同一个宿主机内的消息时,将所述数据包发送到外部交换机;
虚拟路由器,具有第一网关和第二网关;以及
所述外部交换机,被配置为在从所述内部交换机接收到数据包时,通过网络隧道将所述数据包发送到另一个宿主机。
优选地,所述云主机被进一步配置为:如果未从所述ARP响应代理接收到所述数据包的目的MAC地址,则不发送数据包。
优选地,所述内部交换机被进一步配置为:如果从所述云主机接收的数据包的目的MAC地址是所述虚拟路由器的第一网关的MAC地址,则直接通过第一网关将所述数据包转发给所述虚拟路由器;
其中,所述虚拟路由器被配置为:通过第一网关从所述内部交换机接收到所述数据包,根据路由表找到与所述数据包的目的IP地址相匹配的第二网关,将所述数据包的目的MAC地址改变为与所述目的IP地址相对应的目的MAC地址,将所述数据包的源MAC地址改变为所述第二网关的MAC地址,并且通过所述第二网关将所述数据包发送到所述内部交换机;以及
所述内部交换机被进一步配置为:从所述虚拟路由器接收所述数据包,向所述SDN控制器发送所接收的数据包的源MAC地址和目的MAC地址以请求所述SDN控制器确定与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机是否具备通信权限以及所述源MAC地址和所述目的MAC地址是否在同一个宿主机内,当从所述SDN控制器接收到指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机具备通信权限并且所述源MAC地址和所述目的MAC地址不在同一个宿主机内的消息时,将所述数据包发送到所述外部交换机。
优选地,所述虚拟路由器被进一步配置为:如果根据路由表未找到与所述数据包的目的IP地址相匹配的第二网关,则不发送所述数据包。
优选地,所述内部交换机被进一步配置为:如果在从所述虚拟路由器接收到所述数据包之后未从所述SDN控制器接收到指示所述源MAC地址和所述目的MAC地址的转发指令或接收到消息丢弃指令,则不发送所述数据包。
优选地,所述内部交换机被进一步配置为:当从所述SDN控制器接收到指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机具备通信权限并且所述源MAC地址和所述目的MAC地址在同一个宿主机内的消息时,将所述数据包发送到与所述目的MAC地址相匹配的第二云主机。
优选地,所述内部交换机被进一步配置为:当从所述SDN控制器接收到指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机不具备通信权限的消息时,不转发所述数据包。
优选地,所述虚拟路由器是通过Linux命名空间机制来建立的。
优选地,在所述虚拟路由器中实现了防火墙保护。
优选地,在所述虚拟路由器中实现了网络地址转换NAT功能。
在本发明的第二方面,提出了一种用于在云平台架构中的宿主机中路由数据包的方法,包括:
如果至少一个云主机不具有数据包的目的媒体访问控制MAC地址,则所述云主机通过内部交换机向地址解析协议ARP响应代理发送ARP广播;
所述ARP响应代理在从内部交换机接收到来自云主机的ARP广播时,向管理服务器发送所接收的ARP广播中的数据包的目的IP地址,从所述管理服务器接收与数据包的目的互联网协议IP地址相匹配的目的MAC地址,并且通过所述内部交换机向所述云主机发送所述目的MAC地址;
所述云主机通过所述内部交换机从所述ARP响应代理接收与数据包的IP地址相匹配的目的MAC地址,用所接收的目的MAC地址封装所述数据包,并且将所述数据包发送到所述内部交换机;
所述内部交换机从所述云主机接收所述数据包,如果从所述云主机接收的数据包的目的MAC地址不是虚拟路由器的第一网关的MAC地址,则向软件定义网络SDN控制器发送所接收的数据包的源MAC地址和目的MAC地址以请求所述SDN控制器确定与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机是否具备通信权限以及所述源MAC地址和所述目的MAC地址是否在同一个宿主机内,当从所述SDN控制器接收到指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机具备通信权限并且所述源MAC地址和所述目的MAC地址不在同一个宿主机内的消息时,将所述数据包发送到外部交换机;以及
所述外部交换机从所述内部交换机接收所述数据包,并且通过网络隧道将所述数据包发送到另一个宿主机。
优选地,所述方法还包括:如果所述云主机未从所述ARP响应代理接收到所述数据包的目的MAC地址,则所述云主机不发送数据包。
优选地,所述方法还包括:
如果所述内部交换机从所述云主机接收的数据包的目的MAC地址是所述虚拟路由器的第一网关的MAC地址,则直接通过第一网关将所述数据包转发给所述虚拟路由器;
所述虚拟路由器通过第一网关从所述内部交换机接收所述数据包,根据路由表找到与所述数据包的目的IP地址相匹配的第二网关,将所述数据包的目的MAC地址改变为与所述目的IP地址相对应的目的MAC地址,将所述数据包的源MAC地址改变为所述第二网关的MAC地址,并且通过所述第二网关将所述数据包发送到所述内部交换机;
所述内部交换机从所述虚拟路由器接收所述数据包,向所述SDN控制器发送所接收的数据包的源MAC地址和目的MAC地址以请求所述SDN控制器确定与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机是否具备通信权限以及所述源MAC地址和所述目的MAC地址是否在同一个宿主机内,当从所述SDN控制器接收到指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机具备通信权限并且所述源MAC地址和所述目的MAC地址不在同一个宿主机内的消息时,将所述数据包发送到外部交换机;以及
所述外部交换机从所述内部交换机接收所述数据包,并且通过网络隧道将所述数据包发送到另一个宿主机。
优选地,所述方法还包括:如果所述虚拟路由器根据路由表未找到与所述数据包的目的IP地址相匹配的第二网关,则所述虚拟路由器不发送所述数据包。
优选地,所述方法还包括:如果所述内部交换机在从所述虚拟路由器接收到所述数据包之后未从所述SDN控制器接收到指示所述源MAC地址和所述目的MAC地址的转发指令或接收到消息丢弃指令,则所述内部交换机不发送所述数据包。
优选地,所述方法还包括:
当所述内部交换机从所述SDN控制器接收到指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机具备通信权限并且所述源MAC地址和所述目的MAC在同一宿主机内的消息时,根据所述目的MAC地址将所述数据包发送到与所述目的MAC地址相匹配的第二云主机。
优选地,所述方法还包括:
当所述内部交换机从所述SDN控制器接收到指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机不具备通信权限的消息时,不转发所述数据包。
优选地,所述虚拟路由器是通过Linux命名空间机制来建立的。
优选地,在所述虚拟路由器中实现了防火墙保护。
优选地,在所述虚拟路由器中实现了网络地址转换NAT功能。
在本发明的第三方面,提出了一种云平台架构中的宿主机,包括:
外部交换机,被配置为通过网络隧道接收数据包,并且将所述数据包转发给内部交换机;
所述内部交换机,被配置为向软件定义网络SDN控制器发送所接收的数据包的源媒体访问控制MAC地址和目的MAC地址以及源互联网协议IP地址和目的IP地址以请求所述SDN控制器确定所述内部交换机内用于发送所述数据包的端口,从所述SDN控制器接收指示所述内部交换机内用于发送所述数据包的端口的消息,并且通过所述端口将所述数据包发送到与所述目的MAC地址相匹配的接收方云主机;以及
所述接收方云主机,被配置为通过所述端口从所述内部交换机接收所述数据包。
在本发明的第四方面,提出了一种用于在云平台架构中的宿主机中路由数据包的方法,包括:
在外部交换机处通过网络隧道接收数据包,并且将所述数据包转发给内部交换机;
在所述内部交换机处向软件定义网络SDN控制器发送所接收的数据包的源媒体访问控制MAC地址和目的MAC地址以及源互联网协议IP地址和目的IP地址以请求所述SDN控制器确定所述内部交换机内用于发送所述数据包的端口,从所述SDN控制器接收指示所述内部交换机内用于发送所述数据包的端口的消息,并且通过所述端口将所述数据包发送到与所述目的MAC地址相匹配的接收方云主机;以及
所述接收方云主机通过所述端口从所述内部交换机接收所述数据包。
在本发明的第五方面,提出了一种云平台架构,包括多个根据上述第一方面和第三方面中任一方面所述的宿主机、管理服务器、以及软件定义网络SDN控制器,其中,
所述管理服务器被配置为从所述ARP响应代理接收ARP广播,根据所述ARP广播和所述ARP响应代理所在的宿主机的标识查找本地地址池以获取数据包的目的MAC地址,并且将所述目的MAC地址发送到所述ARP响应代理;以及
所述SDN控制器被配置为从所述内部交换机接收对确定与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机是否具备通信权限以及所述源MAC地址和所述目的MAC地址是否在同一个宿主机内的请求,并且向所述内部交换机发送指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机是否具备通信权限以及所述源MAC地址和所述目的MAC地址是否在同一个宿主机内的消息。
在本发明的第六方面,提出了一种云平台架构中的方法,包括根据上述第二方面和第四方面中任一方面所述的方法,并且还包括:
所述管理服务器从所述ARP响应代理接收ARP广播,根据所述ARP广播和所述ARP响应代理所在的宿主机的标识查找本地地址池以获取数据包的目的MAC地址,并且将所述目的MAC地址发送到所述ARP响应代理;以及
所述SDN控制器从所述内部交换机接收对确定与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机是否具备通信权限以及所述源MAC地址和所述目的MAC地址是否在同一个宿主机内的请求,并且向所述内部交换机发送指示与所述源MAC地址相对应的云主机和与所述目的MAC地址相对应的云主机是否具备通信权限以及所述源MAC地址和所述目的MAC地址是否在同一个宿主机内的消息。
本发明借助于广泛存在的x86平台以及SDN技术,为云计算机房多租户场景提供一种高灵活性的网络虚拟化和网络隔离的落地解决方案。通过虚拟子网、虚拟路由器以及网络隧道等机制,使租户云主机间形成的网络和机房层面的物理网络解耦开来,从而使所有云主机工作在一张完全由软件定义的网络上,管理的灵活性大大提高。
附图说明
图1示出了根据本发明的实施例的多租户云平台架构中的子网和虚拟路由器的示意图;
图2示出了根据本发明的实施例的多租户云平台架构的示意图;
图3示出了根据本发明的实施例的多租户云平台架构中的宿主机的示意图;以及
图4A~4D示出了根据本发明的实施例的在多租户云平台架构中路由数据包的不同场景。
具体实施方式
首先,参照图1描述多租户云平台架构中的子网和虚拟路由器的功能。在多租户云平台架构中,通过逻辑子网(以下简称“子网”)来管理用户的云主机资源,并基于子网设定各云主机之间的通信界限(如图1所示)。云主机是云计算厂商向用户提供的虚拟主机服务,云主机属于Iaas层面的服务。用户在创建子网时需要指定该子网IP的无类域内路由选择(CIDR),以便为该子网云主机分配IP地址。可以基于虚拟路由器实现跨子网通信、网络地址转换(NAT)以及防火墙等功能。如果希望实现同一用户的多个子网之间的通信,则只需将这些子网关联到同一个虚拟路由器(vRouter)。借助网络隧道封装不同宿主机间云主机的数据包,避免上层物理网络设备感知和学习下层云主机信息,从而在逻辑上保证云主机网络与物理网络的独立性。SDN控制器可以精确地控制各云主机之间的通信许可和数据流向。
下面参照图2描述云平台架构中的各个组件的功能。云平台架构包括管理服务器210、SDN控制器220、宿主机代理230、虚拟交换机、虚拟路由器、以及ARP响应代理。
管理服务器210用于统管所有相关宿主机和云主机信息,并且其主要功能包括:向宿主机代理230下发行为指令,来对各宿主机及其上的云主机进行控制;以及对外提供RESTFUL风格的控制应用程序界面(API),用于接驳外部应用(APP)。
SDN控制器220负责向虚拟交换机下发控制指令,并且其主要功能包括:基于租户和子网判定云主机之间的通信许可;以及为跨宿主机的网络隧道动态指定对端IP。
宿主机代理230是运行在宿主机上的代理程序,并且其主要功能包括:接收并响应管理服务器下发的指令;建立和维护宿主机上的虚拟网络环境,该虚拟网络环境包括云主机虚拟网卡、虚拟交换机和虚拟路由器;以及采集宿主机和各云主机的资源指标信息,并及时上报和预警。
虚拟交换机是基于软件实现的交换机,目前使用最多的虚拟交换机软件是OpenvSwitch。虚拟交换机的主要功能包括:从SDN控制器获取数据包转发策略,并依次为关联云主机提供数据交换功能;以及为跨宿主机的通信提供网络通信隧道支持。
虚拟路由器是借助Linux命名空间机制建立的虚拟路由器,并且其主要功能包括:为各子网内的云主机提供网关以及三层路由服务;为云主机访问外网提供网络NAT功能;以及依据用户指定的安全策略,为各关联容器提供防火墙服务。
ARP响应代理负责响应本地云主机广播,并且其主要功能包括:为本宿主机内部云主机发出的ARP广播提供响应;以及从管理服务器获取ARP响应数据。
云平台架构主要通过以下方式来建立。首先,建立管理服务器。管理服务器是整个机房网络架构的控制大脑,其后端基于数据库存储各租户、子网、云主机以及网络相关的信息。管理服务器根据API调用对相应宿主机发送指令,实现对宿主机集群的设置。
然后,通过宿主机代理程序设置宿主机上虚拟交换机。为了保证同一宿主机内各云主机间的通信效率,以及方便调试东西和南北流量,每台宿主机上都建立了两个虚拟交换机(参考图示3中的内部交换机(switch_inner)和外部交换机(switch_outer)),switch_inner交换机主要用来实现本地云主机间的网络通信,switch_outer主要用来发送和接收跨宿主机的网络流量。其中switch_outer与其它宿主机间的流量需要通过网络隧道封装,这样做的原因在于不同的租户可能会建立相同私有IP段的子网,虽然这些重复的IP对各租户是不可见的,但是对机房网络设备而言却会产生路由抖动问题,因此为了屏蔽云主机逻辑子网对上层设备的可见性,跨宿主机的流量必须要放入VXLAN等隧道中传输。
然后,通过宿主机代理程序设置宿主机上虚拟路由器。虚拟路由器内部需要建立各关联子网的网关,如果同一租户的两个子网关联了同一个虚拟路由器,则通过该虚拟路由器实现跨子网的通信。例如,假如某一虚拟路由器关联了A、B、C三个子网,那么该虚拟路由器内部则需要分别为这三个子网建立一个网关,以便这三个子网间的互通。另外,由于云主机所分配的IP都是私有网段,无法直接访问外网,本方案通过在虚拟路由器中实现NAT功能来保证云主机能够访问外网。同时,对云主机提供的防火墙保护也在虚拟路由器中实现。
接下来,建立宿主机上的ARP响应代理。虽然不同租户可能使用相同IP段的子网,但是对某一租户而言其每个IP对应的MAC地址必须都是固定的,这就要求对每个租户的云主机ARP广播都能回应准确的MAC地址,ARP响应代理就是为了解决这一需求而设置的。另外为了保证ARP代理响应的权威性,当云主机发出ARP广播时,要通过虚拟交换机将广播包只发送到ARP响应代理的端口上,这样也会大大减少机房层面的广播次数,降低广播风暴的风险。
最后,设定SDN控制器。SDN网络的一个主要目的是通过软件来实现对网络设备灵活有效的控制,各宿主机上的虚拟交换机在启动之后都需要关联一个SDN控制器,所有由虚拟交换机转发的包路径都要由控制器加以判定才能转发。控制器主要做三方面的判定:上报的包是否允许转发,转发走哪一个交换机端口以及跨宿主机转发时对端宿主机的IP是哪一个。
为了保证整个***的高性能和高可用,管理服务器和SDN控制器都要以集群的形式对外提供服务。
下面将参照图3和图4描述云平台架构中的宿主机1的结构。宿主机包括至少一个云主机、内部交换机(switch_inner)、虚拟路由器(vRouter)、外部交换机(switch_outer)、以及ARP响应代理。至少一个云主机中包括第一云主机(如图4中所示的云主机1)。
当通过宿主机1发送数据包时,第一云主机被配置为如果第一云主机不具有数据包的目的MAC地址,则第一云主机通过内部交换机向ARP响应代理发送ARP广播,通过内部交换机从ARP响应代理接收与数据包的目的互联网协议IP地址相匹配的目的MAC地址,用所接收的目的MAC地址封装数据包,并且将数据包发送到内部交换机。备选地,第一云主机被进一步配置为:如果未从ARP响应代理接收到数据包的目的MAC地址,则不发送数据包。
ARP响应代理被配置为在从内部交换机接收到来自云主机的ARP广播时,向管理服务器发送所接收的ARP广播中的数据包的目的IP地址,从管理服务器接收与数据包的目的IP地址相匹配的目的MAC地址,并且通过内部交换机向第一云主机发送目的MAC地址。
内部交换机被配置为从第一云主机接收数据包,如果从第一云主机接收的数据包的目的MAC地址不是虚拟路由器的第一网关的MAC地址(同网段情况),则向SDN控制器发送所接收的数据包的源MAC地址和目的MAC地址以请求SDN控制器确定与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机是否具备通信权限以及源MAC地址和目的MAC地址是否在同一个宿主机内,当从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机具备通信权限并且源MAC地址和目的MAC地址不在同一个宿主机内的消息时,将数据包发送到外部交换机(同网段异宿主机情况,如图4C所示)。备选地,内部交换机被进一步配置为当从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机具备通信权限并且源MAC地址和目的MAC地址在同一个宿主机内的消息时,将数据包发送到与目的MAC地址相匹配的第二云主机(同网段同宿主机情况,如图4A所示)。备选地,内部交换机被进一步配置为当从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机不具备通信权限的消息时,不转发数据包。其中,虚拟路由器具有第一网关和第二网关。
外部交换机被配置为在从内部交换机接收到数据包时,通过网络隧道将数据包发送到另一个宿主机。
备选地,内部交换机被进一步配置为:如果第一云主机接收的数据包的目的MAC地址是虚拟路由器的第一网关的MAC地址(异网段),则直接通过第一网关将数据包转发给虚拟路由器。
虚拟路由器被配置为通过第一网关从内部交换机接收到数据包,根据路由表找到与数据包的目的IP地址相匹配的第二网关,将数据包的目的MAC地址改变为与目的IP地址相对应的目的MAC地址,将数据包的源MAC地址改变为第二网关的MAC地址,并且通过第二网关将数据包发送到内部交换机。备选地,虚拟路由器被进一步配置为:如果根据路由表未找到与数据包的目的IP地址相匹配的第二网关,则不发送数据包。
内部交换机被进一步配置为从虚拟路由器接收数据包,向SDN控制器发送所接收的数据包的源MAC地址和目的MAC地址以请求SDN控制器确定与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机是否具备通信权限以及源MAC地址和目的MAC地址是否在同一个宿主机内,当从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机具备通信权限并且源MAC地址和目的MAC地址不在同一个宿主机内的消息时,将数据包发送到外部交换机(异网段异宿主机情况,如图4D所示)。备选地,内部交换机被进一步配置为当从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机具备通信权限并且源MAC地址和目的MAC地址在同一个宿主机内的消息时,将数据包发送到与目的MAC地址相匹配的第二云主机(异网段同宿主机情况,如图4B所示)。备选地,内部交换机被进一步配置为:当从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机不具备通信权限的消息时,不转发数据包。备选地,内部交换机被进一步配置为:如果在从虚拟路由器接收到数据包之后未从SDN控制器接收到指示源MAC地址和目的MAC地址的转发指令或接收到消息丢弃指令,则不发送数据包。
在本实施例中,虚拟路由器是通过Linux命名空间机制来建立的。在虚拟路由器中实现了防火墙保护和/或NAT功能。
当通过宿主机2接收数据包时,外部交换机被配置为通过网络隧道接收数据包,并且将数据包转发给内部交换机;
内部交换机被配置为向软件定义网络SDN控制器发送所接收的数据包的源媒体访问控制MAC地址和目的MAC地址以及源互联网协议IP地址和目的IP地址以请求SDN控制器确定内部交换机内用于发送数据包的端口,从SDN控制器接收指示内部交换机内用于发送数据包的端口的消息,并且通过端口将数据包发送到与目的MAC地址相匹配的接收方云主机;以及
接收方云主机被配置为通过端口从内部交换机接收数据包。
下面将参照图3和图4描述云平台架构中的宿主机1中路由数据包的方法。
当通过宿主机1发送数据包时,如果至少一个云主机中的第一云主机不具有数据包的目的MAC地址,则第一云主机通过内部交换机向ARP响应代理发送ARP广播;ARP响应代理在从内部交换机接收到来自云主机的ARP广播时,向管理服务器发送所接收的ARP广播中的数据包的目的IP地址,从管理服务器接收与数据包的目的IP地址相匹配的目的MAC地址,并且通过内部交换机向第一云主机发送目的MAC地址;第一云主机通过内部交换机从ARP响应代理接收与数据包的IP地址相匹配的目的MAC地址,用所接收的目的MAC地址封装数据包,并且将数据包发送到内部交换机;内部交换机从第一云主机接收数据包,如果从第一云主机接收的数据包的目的MAC地址不是虚拟路由器的第一网关的MAC地址,则向SDN控制器发送所接收的数据包的源MAC地址和目的MAC地址以请求SDN控制器确定与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机是否具备通信权限以及源MAC地址和目的MAC地址是否在同一个宿主机内,当从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机具备通信权限并且源MAC地址和目的MAC地址不在同一个宿主机内的消息时,将数据包发送到外部交换机;以及外部交换机从内部交换机接收数据包,并且通过网络隧道将数据包发送到另一个宿主机。
如果第一云主机未从ARP响应代理接收到数据包的目的MAC地址,则第一云主机不发送数据包。
如果内部交换机从第一云主机接收的数据包的目的MAC地址是虚拟路由器的第一网关的MAC地址,则直接通过第一网关将数据包转发给虚拟路由器;虚拟路由器通过第一网关从内部交换机接收数据包,根据路由表找到与数据包的目的IP地址相匹配的第二网关,将数据包的目的MAC地址改变为与目的IP地址相对应的目的MAC地址,将数据包的源MAC地址改变为第二网关的MAC地址,并且通过第二网关将数据包发送到内部交换机;内部交换机从虚拟路由器接收数据包,向SDN控制器发送所接收的数据包的源MAC地址和目的MAC地址以请求SDN控制器确定与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机是否具备通信权限以及源MAC地址和目的MAC地址是否在同一个宿主机内,当从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机具备通信权限并且源MAC地址和目的MAC地址不在同一个宿主机内的消息时,将数据包发送到外部交换机;以及外部交换机从内部交换机接收数据包,并且通过网络隧道将数据包发送到另一个宿主机。
如果虚拟路由器根据路由表未找到与数据包的目的IP地址相匹配的第二网关,则虚拟路由器不发送数据包。
如果内部交换机在从虚拟路由器接收到数据包之后未从SDN控制器接收到指示源MAC地址和目的MAC地址的转发指令或接收到消息丢弃指令,则内部交换机不发送数据包。
当内部交换机从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机具备通信权限并且源MAC地址和目的MAC在同一宿主机内的消息时,根据目的MAC地址将数据包发送到与目的MAC地址相匹配的第二云主机。
当内部交换机从SDN控制器接收到指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机不具备通信权限的消息时,不转发数据包。
在本实施例中,虚拟路由器是通过Linux命名空间机制来建立的。在虚拟路由器中实现了防火墙保护和/或NAT功能。
当通过宿主机2接收数据包时,在外部交换机处通过网络隧道接收数据包,并且将数据包转发给内部交换机;
在内部交换机处向软件定义网络SDN控制器发送所接收的数据包的源媒体访问控制MAC地址和目的MAC地址以及源互联网协议IP地址和目的IP地址以请求SDN控制器确定内部交换机内用于发送数据包的端口,从SDN控制器接收指示内部交换机内用于发送数据包的端口的消息,并且通过端口将数据包发送到与目的MAC地址相匹配的接收方云主机;以及
接收方云主机通过端口从内部交换机接收数据包。
转向图2,将参照图2详细描述云平台架构。除了上文参照图3和4所述的宿主机的结构之外,在云平台架构中,管理服务器被配置为从ARP响应代理接收ARP广播,根据ARP广播和ARP响应代理所在的宿主机的标识查找本地地址池以获取数据包的目的MAC地址,并且将目的MAC地址发送到ARP响应代理;以及SDN控制器被配置为从内部交换机接收对确定与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机是否具备通信权限以及源MAC地址和目的MAC地址是否在同一个宿主机内的请求,并且向内部交换机发送指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机是否具备通信权限以及源MAC地址和目的MAC地址是否在同一个宿主机内的消息。
下面,将参照图2详细描述云平台架构中的方法。除了上文参照图3和图4所述的宿主机中路由数据包的方法之外,在云平台架构中路由数据包的方法还包括:管理服务器从ARP响应代理接收ARP广播,根据ARP广播和ARP响应代理所在的宿主机的标识查找本地地址池以获取数据包的目的MAC地址,并且将目的MAC地址发送到ARP响应代理;以及SDN控制器从内部交换机接收对确定与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机是否具备通信权限以及源MAC地址和目的MAC地址是否在同一个宿主机内的请求,并且向内部交换机发送指示与源MAC地址相对应的云主机和与目的MAC地址相对应的云主机是否具备通信权限以及源MAC地址和目的MAC地址是否在同一个宿主机内的消息。
本发明具有以下优点:通过NFV和SDN提升对廉价x86资源的利用率;减少对机房物理网络设施的直接依赖,便于网络数据的灵活控制;借助逻辑子网和SDN网络,低成本实现租户云主机间的访问隔离;通过分布式虚拟路由器,动态控制同一租户云主机间的通信,以及强化对各云主机的安全保障;以及通过ARP响应代理有效减少机房网络广播,降低广播风暴的风险以及租户间相互探测的可能性。
以上的详细描述通过使用示意图、流程图和/或示例,已经阐述了检查方法和***的众多实施例。在这种示意图、流程图和/或示例包含一个或多个功能和/或操作的情况下,本领域技术人员应理解,这种示意图、流程图或示例中的每一功能和/或操作可以通过各种结构、硬件、软件、固件或实质上它们的任意组合来单独和/或共同实现。在一个实施例中,本发明的实施例所述主题的若干部分可以通过专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或其他集成格式来实现。然而,本领域技术人员应认识到,这里所公开的实施例的一些方面在整体上或部分地可以等同地实现在集成电路中,实现为在一台或多台计算机上运行的一个或多个计算机程序(例如,实现为在一台或多台计算机***上运行的一个或多个程序),实现为在一个或多个处理器上运行的一个或多个程序(例如,实现为在一个或多个微处理器上运行的一个或多个程序),实现为固件,或者实质上实现为上述方式的任意组合,并且本领域技术人员根据本公开,将具备设计电路和/或写入软件和/或固件代码的能力。此外,本领域技术人员将认识到,本公开所述主题的机制能够作为多种形式的程序产品进行分发,并且无论实际用来执行分发的信号承载介质的具体类型如何,本公开所述主题的示例性实施例均适用。信号承载介质的示例包括但不限于:可记录型介质,如软盘、硬盘驱动器、紧致盘(CD)、数字通用盘(DVD)、数字磁带、计算机存储器等;以及传输型介质,如数字和/或模拟通信介质(例如,光纤光缆、波导、有线通信链路、无线通信链路等)。
虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。