发明内容
本发明实施例提供了一种SDN网络中的数据报文转发方法和系统,可以保证各层控制器上部署的控制逻辑保持相同。
第一方面,提供了一种SDN网络中的数据报文转发方法,该方法包括:
第一下级控制器接收第一虚拟交换机发送的报头信息,其中,所述报头信息包括:向所述第一虚拟交换机发送数据报文的源虚拟机的源虚拟机信息和目标虚拟机信息;
当所述第一下级控制器在本地保存的第一下级拓扑信息中未查找到所述目标虚拟机信息所对应的目标虚拟机时,根据所述源虚拟机信息从所述第一下级拓扑信息中查询所述源虚拟机与所述第一虚拟交换机连接的第一关联端口信息,并生成第一消息,所述第一消息包括:源虚拟机信息、目标虚拟机信息和第一关联端口信息;
所述第一下级控制器向上级控制器发送所述第一消息,用于所述上级控制器根据所述源虚拟机信息和所述第一关联端口信息查询本地保存的上级拓扑信息,获取所述第一下级控制器对应的第一域虚拟交换机上与所述第一关联端口对应的第一端口信息;根据所述第一端口信息和所述目标虚拟机信息查询所述上级拓扑信息,获取所述目标虚拟机与所述目标虚拟机所归属的第二下级控制器对应的第二域虚拟交换机连接的第二端口信息,获取所述第一域虚拟交换机与所述第二域虚拟交换机相互通信的第一上行接口信息和第二上行接口信息,生成第一流表信息和第二流表信息,其中,所述第一流表信息包括所述第一端口信息和所述第一上行接口信息,所述第二流表信息包括所述第二端口信息和所述第二上行接口信息,并且向所述第一域虚拟交换机发送所述第一流表信息,所述第一流表信息用于指示所述数据报文从所述第一端口收到后通过所述第一上行接口发出,并向所述第二域虚拟交换机发送所述第二流表信息,所述第二流表信息用于指示所述数据报文从所述第二上行接口收到后通过所述第二端口发出。
根据第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:
当云管理服务器向所述上级控制器发送配置信息,所述配置信息包括所有虚拟机的信息,向每个下级控制器下属的虚拟交换机下发该虚拟交换机与该虚拟交换机控制的虚拟机的关联端口信息,且所述虚拟机与所述虚拟交换机连接的所述关联端口状态为活跃时,所述下级控制器接收所述虚拟交换机发送的关联端口状态信息,并向所述虚拟交换机发送所述关联端口对应的虚拟机的查询信息,接收所述虚拟交换机返回的所述关联端口下的虚拟机ID和该关联端口的端口ID,从而生成所述第一下级拓扑信息或第二下级拓扑信息;
所述下级控制器向所述上级控制器发送上报信息,所述上报信息包括该下级控制器ID、所述虚拟机ID以及所述关联端口的端口ID,从而由所述上级控制器得到每一个下级控制器下属的虚拟机信息,并且将所述关联端口映射为所述第一域虚拟交换机上的第一端口或者所述第二域虚拟交换机上的第二端口,从而生成上级拓扑信息。
根据第一方面的一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述所有虚拟机的信息包括虚拟机ID、虚拟机与对应的虚拟交换机连接的关联端口的端口ID和虚拟机地址信息,所述方法包括:
当所述上级控制器对所述上报信息中的虚拟机ID和端口ID与所述云管理服务器下发给所述上级控制器的所有虚拟机的信息中虚拟机ID和端口ID一一进行比较,且所述上报信息中的虚拟机ID和端口ID与任一虚拟机的信息中的虚拟机ID和端口ID相同时,所述下级控制器接收所述上级控制器下发的所述任一虚拟机的信息中的虚拟机地址信息。
根据第一方面,在第一方面的第三种可能的实现方式中,所述在向第一域虚拟机交换机发送所述第一流表信息之后,所述方法还包括:
当所述第一域虚拟交换机根据所述第一上行接口信息从所述上级拓扑信息中查询得到所述第一下级控制器控制的第一子网内交换机上的第一物理端口信息,根据所述第一端口信息从所述上级拓扑信息中查询得到所述第一关联端口信息,并向所述第一下级控制器发送所述第一物理端口信息和第一关联端口信息时,所述第一下级控制器计算所述第一关联端口与所述第一物理端口之间的第一路由信息,并将所述第一路由信息发送给所述第一虚拟交换机,用于所述第一虚拟交换机根据所述第一路由信息,向所述目标虚拟机发送第二数据报文。
根据第一方面,在第一方面的第四种可能的实现方式中,所述在向所述第二域虚拟交换机发送所述第二流表信息之后,所述方法还包括:
当所述第二域虚拟交换机根据所述第二上行接口的信息从所述上级拓扑信息中查询得到所述第二下级控制器控制的第二子网内交换机上的第二物理端口信息,根据所述第二端口信息从所述上级拓扑信息中查询得到所述目标虚拟机与对应的第二虚拟交换机连接的第二关联端口信息,并向所述第二下级控制器发送所述第二物理端口信息和所述第二关联端口信息时,所述第二下级控制器计算所述第二关联端口与所述第二物理端口之间的第二路由信息,并将所述第二路由信息发送给所述第二虚拟交换机,用于所述第二虚拟交换机根据所述第二路由信息,接收所述源虚拟机发送的第三数据报文。
第二方面,提供了一种SDN网络中的通信系统,该系统包括:上级控制器和第一下级控制器;
所述第一下级控制器,用于接收第一虚拟交换机发送的报头信息,其中,所述报头信息包括:向所述第一虚拟交换机发送数据报文的源虚拟机的源虚拟机信息和目标虚拟机信息;
当所述第一下级控制器在本地保存的第一下级拓扑信息中未查找到所述目标虚拟机信息所对应的目标虚拟机时,根据所述源虚拟机信息从所述第一下级拓扑信息中查询所述源虚拟机与所述第一虚拟交换机连接的第一关联端口信息,并生成第一消息,向上级控制器发送所述第一信息,所述第一消息包括:源虚拟机信息、目标虚拟机信息和第一关联端口信息;
所述上级控制器,用于接收所述第一消息,根据所述源虚拟机信息和所述第一关联端口信息查询本地保存的上级拓扑信息,获取所述第一下级控制器对应的第一域虚拟交换机上与所述第一关联端口对应的第一端口信息;根据所述第一端口信息和所述目标虚拟机信息查询所述上级拓扑信息,获取所述目标虚拟机与所归属的第二下级控制器对应的第二域虚拟交换机连接的第二端口信息,获取所述第一域虚拟交换机与所述第二域虚拟交换机相互通信的第一上行接口信息和第二上行接口信息,生成第一流表信息和第二流表信息,其中,所述第一流表信息包括所述第一端口信息和所述第一上行接口信息,所述第二流表信息包括所述第二端口信息和所述第二上行接口信息,并且向所述第一域虚拟交换机发送所述第一流表信息,所述第一流表信息用于指示所述数据报文从所述第一端口收到后通过所述第一上行接口发出,并向所述第二域虚拟交换机发送所述第二流表信息,所述第二流表信息用于指示所述数据报文从所述第二上行接口收到后通过所述第二端口发出。
根据第二方面,在第二方面的第一种可能的实现方式中,所述下级控制器,用于当云管理服务器向每个下级控制器下属的虚拟交换机下发该虚拟交换机与该虚拟机控制的虚拟机的关联端口信息,且所述虚拟机与所述虚拟交换机连接的所述关联端口状态为活跃时,接收所述虚拟交换机发送的关联端口状态信息,并向所述虚拟交换机发送所述关联端口对应的虚拟机的查询信息,接收所述虚拟交换机返回的所述关联端口下的虚拟机ID和该关联端口的端口ID,从而生成所述第一下级拓扑信息或第二下级拓扑信息;
向所述上级控制器发送上报信息,所述上报信息包括该下级控制器ID、所述虚拟机ID、以及所述关联端口的端口ID;
所述上级控制器,还用于接收所述云管理服务器发送的所述配置信息所述配置信息包括所有虚拟机的信息;接收所述下级控制器发送的所述上报信息,得到每个下级控制器下属的虚拟机信息,并且将所述关联端口映射为所述第一域虚拟交换机上的第一端口或者所述第二域虚拟交换机上的第二端口,从而生成上级拓扑信息。
根据第二方面的一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述所有虚拟机的信息包括虚拟机ID、虚拟机与对应的虚拟交换机连接的关联端口的端口ID和虚拟机地址信息,所述上级控制器还用于对所述上报信息中的虚拟机ID和端口ID与所述云管理服务器下发给所述上级控制器的所有虚拟机的信息中虚拟机ID和端口ID一一进行比较,当所述上报信息中的虚拟机ID和端口ID与任一虚拟机的信息中的虚拟机ID和端口ID相同时,将所述任一虚拟机的信息中的虚拟机地址信息发送给所述下级控制器。
根据第二方面,在第二方面的第三种可能的实现方式中,所述第一下级控制器还用于当所述第一域虚拟交换机根据所述第一上行接口信息从所述上级拓扑信息中查询得到所述第一下级控制器控制的第一子网内交换机上的第一物理端口信息,根据所述第一端口信息从所述上级拓扑信息中查询得到所述第一关联端口信息,并向所述第一下级控制器发送所述第一物理端口信息和第一关联端口信息时,计算所述第一关联端口与所述第一物理端口之间的第一路由信息,并将所述第一路由信息发送给所述第一虚拟交换机,用于所述第一虚拟交换机根据所述第一路由信息,向所述目标虚拟机发送第二数据报文。
根据第二方面,在第二方面的第四种可能的实现方式中,所述系统还包括:第二下级控制器,用于当所述第二域虚拟交换机根据所述第二上行接口的信息从所述上级拓扑信息中查询得到所述第二下级控制器控制的第二子网内交换机上的第二物理端口信息,根据所述第二端口信息从所述上级拓扑信息中查询得到所述目标虚拟机与对应的第二虚拟交换机之间的第二关联端口信息,并向所述第二下级控制器发送所述第二物理端口信息和所述第二关联端口信息时,计算所述第二关联端口与所述第二物理端口之间的第二路由信息,并将所述第二路由信息发送给所述目标虚拟机所在物理主机对应的第二虚拟交换机,用于所述第二虚拟交换机根据所述第二路由信息,接收所述源虚拟机发送的第三数据报文。
本发明实施例提供的SDN网络中的数据报文转发方法和系统,可以对上级控制器屏蔽下级控制器的存在,即上级控制器和下级控制器管辖具有相同特征结构的网络,从而可以保证各级控制器上部署的控制逻辑保持相同,降低控制逻辑的开发难度。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
参见图2所示的云数据中心结构示意图,云管理服务器,也即云管理系统(CouldManagement System,CMS)的网络虚拟化部件Neutron使用SDN作为网络功能的后端,SDN上分别部署控制逻辑,举例为,SDN可以使用虚拟网络应用Virtual Network App作为控制逻辑,将物理网络划分为多个虚拟网络供不同的租户使用,虚拟化网络可以方便地实现租户网络的扩展和虚拟机的迁移。图2中,该数据中心的网络划分了两个子网(域),分别对应两个底层控制器,还包括一个上层控制器,共三个SDN控制器对该数据中心的网络进行控制。在该数据中心的网络中,每个子网中包括多个交换机,各个交换机均连接到所属子网对应的底层控制器上。底层控制器通过链路层发现协议(Link Layer Discovery Protocol,LLDP)可以探测到交换机之间的连接关系,如果某一条连接上的两个交换机都归属于当前底层控制器,说明该链接是子网内部链接,将仅保存在当前底层控制器上,即底层控制器只保存对应子网内所有虚拟机、交换机的配置信息和对应子网内部的所有连接关系;如果某一条连接的一个交换机不归属于当前底层控制器,则该连接是子网间链路,底层控制器将该链路上报给上层控制器,即上层控制器保存整个数据中心的网络中所有虚拟机的信息,各个子网之间的连接关系以及虚拟机和子网的对应关系,但不保存子网内部的交换机配置信息,也不保存子网内部的连接关系。由此,在底层控制器上就建立了子网内部拓扑,在上层控制器上建立了子网间拓扑。为了描述方便,本实施例中称上层控制器(SDN控制器1)及其控制逻辑为上级控制器,底层控制器1(SDN控制器2)及其控制逻辑称为第一下级控制器,底层控制器2(SDN控制器3)及其控制逻辑称为第二下级控制器。
图3为图2所示的云数据中心的网络部分的逻辑结构示意图,虚拟交换机(virtualswitch,vs)部署在物理服务器上,并且连接到架顶交换机(Top Of Rack,TOR),再连接到会聚交换机,最后连接到核心交换机。每一台物理服务器(Host)上可以安装多台属于不同虚拟网络的虚拟机(Virtual Machine,vm),这些虚拟机通过虚拟交换机连接到物理网络,第一和二下级控制器可以通过控制虚拟交换机,控制虚拟机的通信。
相比较于现有技术,本发明需要将上级控制器的功能变更为负责域间虚拟机到虚拟机的通信;还需要将上级控制器控制的物理实体由第一或第二下级控制器转换为对应的域虚拟交换机(Domain Switch),控制的端口由子网间的NNI转换为上述域虚拟交换机连接到虚拟机的虚端口和连接其他域虚拟交换机的虚端口,从而向上级控制器屏蔽第一或第二下级控制器的存在,即上级控制器、第一下级控制器和第二下级控制器管辖具有相同特征的网络,从而可以保证各级控制器上部署的控制逻辑保持相同,实现控制逻辑的归一化。
具体地,为了向上级控制器呈现域间虚拟机到虚拟机的通信界面,而不是域间NNI的通信界面,引入域虚拟交换机的概念。图2中包括两个控制器,所以需要对应两个域虚拟交换机,第一域虚拟交换机和第二域虚拟交换机是在上级控制器上对第一下级控制器和第二下级控制器功能的抽象。在上级控制器看来,域虚拟交换机是一个普通的交换机,直接连接了对应底层控制器管辖的所有虚拟机及网络,域虚拟交换机通过NNI相互连接在一起。参见图4所示的本发明提供的网络拓扑结构示意图,域虚拟交换机提供和标准交换机一样的接口。上级控制器可以像操作普通交换机一样操作域虚拟交换机,从而可以对上级控制器屏蔽第一下级控制器和第二下级控制器的存在。这样上级控制器、第一下级控制器和第二下级控制器看到相同的特征的网络,都是虚拟机通过交换机或者域虚拟交换机连接在一起。需要说明的是,当不同域的虚拟机相互通信时,上级控制器负责将其拆分为域内通信部分和域间通信部分,域间通信的部分在上级控制器上完成选路,域内通信的部分下发给第一或第二下级控制器进行选路。
需要说明的是,在上述过程中,为了向上级控制器呈现域间虚拟机到虚拟机的通信界面,在引入域虚拟交换机的概念后,需要建立域虚拟交换机与各虚拟机连接的虚端口,以实现域虚拟交换机对域间虚拟机通信过程的管辖。
图5为本发明实施例一提供的SDN网络中的数据报文转发方法流程图。如图5所示,所述方法具体包括:
S501,第一下级控制器接收第一虚拟交换机发送的报头信息,其中,所述报头信息包括:向所述第一虚拟交换机发送数据报文的源虚拟机的源虚拟机信息和目标虚拟机信息
具体地,源虚拟机先将需要发送的数据报文发送给源虚拟机所在物理主机对应的第一虚拟交换机,第一虚拟交换机根据该数据报文的报头信息在本地查询是否保存有可以用来转发该数据报文的转发表(例如,Openflow Flow Table Entry),其中,报头信息包括:源虚拟机信息和目标虚拟机信息,举例来说,第一虚拟交换机通过转发表记录源虚拟机IP、源端口ID、目标虚拟机IP和目标端口ID,第一虚拟交换机根据目标虚拟机IP匹配相应的转发表,当匹配到相应的转发表时,第一虚拟交换机通过目标端口将数据报文发送出去,第二虚拟交换机接收上述数据报文;当匹配不到相应的转发表时,第一虚拟交换机将接收到的上述数据报文的报头信息发送给第一下级控制器。举例为,第一虚拟交换机根据所述数据报文的报头信息生成Packet_In信息后发送给第一下级控制器。
S502,当所述第一下级控制器在本地保存的第一下级拓扑信息中未查找到所述目标虚拟机信息所对应的目标虚拟机时,根据所述源虚拟机信息从所述第一下级拓扑信息中查询所述源虚拟机与所述第一虚拟交换机连接的第一关联端口信息,并生成第一消息,所述第一消息包括:源虚拟机信息、目标虚拟机信息和第一关联端口信息。
第一下级控制器根据接收到的报头信息中的目标虚拟机信息,在本地保存的第一下级拓扑信息中查找目标虚拟机信息所对应的目标虚拟机,其中,第一下级拓扑信息包括:源虚拟机IP、第一虚拟交换机ID、源虚拟机与第一虚拟交换机连接的第一关联端口ID、目标虚拟机IP、第二虚拟交换机ID和目标虚拟机与第二虚拟交换机连接的第二关联端口ID,具体地,第一下级控制器根据目标虚拟机IP在第一下级拓扑信息中查找目标虚拟机,当查找到目标虚拟机时,源虚拟机先将数据报文通过第一关联端口发送给第一虚拟交换机,第一虚拟交换机通过与第二虚拟交换机连接的端口将上述数据报文发送给第二虚拟交换机,第二虚拟交换机再通过第二关联端口将该数据报文发送给目标虚拟机;当查找不到目标虚拟机时,根据所述源虚拟机信息从所述第一下级拓扑信息中查询所述源虚拟机与所述第一虚拟交换机连接的第一关联端口信息,并生成第一消息,所述第一消息包括:源虚拟机信息、目标虚拟机信息和第一关联端口信息。以图4中源虚拟机vm1向目标虚拟机vm3发送数据报文的过程为例进行说明,vm1所在物理主机对应的第一虚拟交换机vs10接收vm1发送的数据报文,该数据报文的报头信息中包括vm1的信息和vm3的信息,vs10根据该数据报文报头信息中vm3的IP地址或者MAC地址在本地匹配相应的转发表,由于第一下级控制器还没有给vs10下发从vm1到vm3的转发表,所以在本地匹配不到相应的转发表,则vs10通过Packet_In消息向第一下级控制器发送上述数据报文的报头信息。第一下级控制器接收到Packet_In消息之后,由第一下级控制器中的控制逻辑对该消息进行处理,即根据vm1的IP地址或者MAC地址,在第一下级控制器上的第一下级拓扑信息中查找vm3,因为vm3的信息只有在第二下级控制器和上级控制器上才有,所以第一下级控制器中的控制逻辑找不到vm3,第一下级控制器根据vm1的IP地址或者MAC地址,从第一下级拓扑信息中查询vm1与vs10连接的第一关联端口信息,并生成第一消息,该第一消息包括:vm1的信息(vm1的IP地址或者MAC地址)、vm3的信息(vm3的IP地址或者MAC地址)和附属信息,附属信息包括:第一下级控制器ID和第一关联端口ID。
S503,所述第一下级控制器向上级控制器发送所述第一消息,用于所述上级控制器根据所述源虚拟机信息和所述第一关联端口信息查询本地保存的上级拓扑信息,获取所述第一下级控制器对应的第一域虚拟交换机上与所述第一关联端口对应的第一端口信息;根据所述第一端口信息和所述目标虚拟机信息查询所述上级拓扑信息,获取所述目标虚拟机与所述目标虚拟机所归属的第二下级控制器对应的第二域虚拟交换机连接的第二端口信息,所述第一域虚拟交换机与所述第二域虚拟交换机相互通信的第一上行接口信息和第二上行接口信息,生成第一流表信息和第二流表信息,其中,第一流表信息包括第一端口信息和第一上行接口信息,第二流表信息包括第二端口信息和第二上行接口信息,并且向所述第一域虚拟交换机发送所述第一流表信息,所述第一流表信息用于指示所述数据报文从所述第一端口收到后通过所述第一上行接口发出,并向所述第二域虚拟交换机发送所述第二流表信息,所述第二流表信息用于指示所述数据报文从所述第二上行接口收到后通过所述第二端口发出。
参见图4中,第一下级控制器在本地生成第一消息之后,将该第一消息发送给上级控制器,上级控制器上的控制逻辑对上述第一消息进行处理,根据第一消息中的vm1的信息和第一关联端口信息查询本地保存的上级拓扑信息,获取第一端口信息,根据第一消息中vm3的信息查询上述上级拓扑信息,获取第二端口信息,该上级拓扑信息包括:源虚拟机信息、第一关联端口信息、第一域虚拟交换机信息、第一端口信息、第一上行接口信息、第二上行接口信息、第二端口信息、第二域虚拟交换机信息、第二关联端口信息和目标虚拟机信息,其中,第一域虚拟交换机和第一下级控制器相对应,第二域虚拟交换机和第二下级控制器相对应,第一上行接口为第一域虚拟交换机与第二域虚拟交换机相互通信的连接接口,第二上行接口为第二域虚拟交换机与第二域虚拟交换机相互通信的连接接口。具体地,参见图6所示的本发明提供的上级控制器上的网络拓扑示意图,上级控制器根据vm1的IP地址或者MAC地址和第一关联端口ID从上级拓扑信息中查询得到vm1归属的第一域虚拟交换机D1的ID,以及vm1与D1连接的第一端口VPort1,根据vm3的IP地址或者MAC地址和VPort1从上级拓扑信息中查询得到vm3归属的第二域虚拟交换机D2的ID,以及vm3与D2连接的第二端口VPort3,并且从该上级拓扑信息中获取到D1连接D2的第一上行接口NNI02和D2连接到D1的第二上行接口NNI06,之后上级控制器生成第一流表信息和第二流表信息,其中,第一流表信息包括Vport1的信息和NNI02的信息,第二流表信息包括Vport3的信息和NNI06的信息,并向D1下发第一流表信息,第一流表信息用于指示D1从Vport1收到vm1发送的数据报文后通过NNI02发送给D2;并且上级控制器将上述第二流表信息下发给D2,第二流表信息用于指示D2通过NNI06接收到D1发送的上述数据报文之后,通过Vport3将上述数据报文发送给vm3。
需要说明的是,上述D1与第D2相互通信的连接接口不限定为一个,可以有多个接口。
可选地,上级拓扑信息还包括:与第一上行接口对应的第一下级控制器控制的第一子网内交换机上的第一物理端口的信息;具体地,上级控制器在向D1发送第一流表信息之后,D1根据NNI02的信息从上级拓扑信息中查询得到对应的第一下级控制器控制的第一子网内交换机上的第一物理端口信息,根据第一端口信息从上级拓扑信息中查询得到第一关联端口信息,并向第一下级控制器发送上述第一物理端口信息和第一关联端口信息;第一下级控制器根据上述第一物理端口信息和所述第一关联端口信息,计算所述第一关联端口与所述第一物理端口之间的第一路由信息,并将所述第一路由信息发送给vs10,用于vs10根据所述第一路由信息,向vm3发送第二数据报文。
可选地,上级拓扑信息包括:与第二上行接口对应的第二下级控制器控制的第二子网内交换机上的第二物理端口的信息;具体地,上级控制器在向D2发送第二流表信息之后,D2根据NNI06的信息从上级拓扑信息中查询得到对应的第二下级控制器控制的第二子网内交换机上的第二物理端口信息,根据所述第二端口信息从所述上级拓扑信息中查询得到所述目标虚拟机与对应的第二虚拟交换机连接的第二关联端口信息,并向第一下级控制器发送上述第二物理端口信息和第二关联端口信息;第二下级控制器根据上述第二物理端口信息和vm3与vs23连接的第二关联端口信息,计算所述第二关联端口与所述第二物理端口之间的第二路由信息,并将所述第二路由信息发送给所述vs23,用于vs23根据所述第二路由信息,接收vm1发送的第三数据报文。
图7为本发明实施例二提供的SDN网络中的数据报文转发方法流程图。如图7所示,所述方法具体包括:
S701,云管理服务器向所述上级控制器发送配置信息,所述配置信息包括所有虚拟机的信息。
图2中,云管理服务器的IP地址池中保存有多个可以分配给虚拟机的IP地址,该云管理服务器的网络部件Neutron从上述IP地址池中获取IP地址,并将用该IP地址标识的虚拟机的配置信息发送给上级控制器,上述配置信息包括虚拟机ID、虚拟机与对应的虚拟交换机连接的关联端口的端口ID和虚拟机地址信息(IP地址和MAC地址)。举例来说,云管理服务器向上级控制器发送vm1、vm2、vm3和vm4的信息。
S702,所述云管理服务器向每个下级控制器下属的虚拟交换机下发该虚拟交换机与该虚拟交换机控制的虚拟机的关联端口信息。
举例为,参见图4中,第一下级控制器管辖多个虚拟交换机(Open VSwitch),包括vs10、vs11、vs12和vs13,虚拟机vm1所在的物理主机和vs10相对应,虚拟机vm2所在的物理主机和vs13相对应;第二下级控制器管辖多个虚拟交换机,包括vs20、vs21、vs22和vs23,虚拟机vm3和vm4所在的物理主机和vs23相对应。具体地,云管理服务器的Nova向第一下级控制器下属的vs10下发vs10与vm1的关联端口信息,向第一下级控制器下属的vs13下发vs13与vm2的关联端口信息,向第二下级控制器下属的vs23下发vs23与vm3的关联端口信息和vs23与vm4的关联端口信息。
S703,当所述虚拟机与所述虚拟交换机连接的所述关联端口状态为活跃时,所述下级控制器接收所述虚拟交换机发送的关联端口状态信息,并向所述虚拟交换机发送所述关联端口对应的虚拟机的查询信息,接收所述虚拟交换机返回的所述关联端口下的虚拟机ID和该关联端口的端口ID,从而生成所述第一下级拓扑信息或第二下级拓扑信息。
举例来说,图4中,当vm1启动时,vm1与vs10的关联端口的状态变为活动(Active)状态,此时,vs10需要将上述关联端口的状态信息上报给归属的第一下级控制器,另外,当第二端口的状态由活动状态变为停止状态时,vs10也需要将上述关联端口的状态信息上报给归属的第一下级控制器;当上述关联端口当期的状态为活动状态时,第一下级控制器向vs10发送上述关联端口对应的vm1的查询信息,举例为,第一下级控制器通过OVS DB配置接口向vs10查询上述关联端口对应的vm1的信息,其中,vm1的信息包括vm1的ID和第一关联端口的端口ID,同理,第一下级控制器通过OVS DB配置接口向vs13查询vm2的信息,第二下级控制器通过OVS DB配置接口向vs23查询vm3的信息和vm4的信息,从而生成第一下级控制器在本地保存的第一下级拓扑信息,并生成第二下级控制器在本地保存的第二下级拓扑信息。
S704,所述下级控制器向所述上级控制器发送上报信息,所述上报信息包括该下级控制器ID、所述虚拟机ID、以及所述关联端口的端口ID,从而由所述上级控制器得到每一个下级控制器下属的虚拟机信息,并且将所述关联端口映射为所述第一域虚拟交换机上的第一端口或者所述第二域虚拟交换机上的第二端口,从而生成上级拓扑信息。
举例来说,第一下级控制器向上级控制器发送上报信息,该上报信息包括:第一下级控制器ID、vm1的ID以及关联端口的端口ID,上级控制器接收到上报信息后,根据该上报信息就可以得到vm1与第一下级控制器的对应关系,即vm1是第一下级控制器下属的虚拟机,并且,上级控制器将上述上报信息中的关联端口映射为vm1在D1上的第一端口VPort1,同理,可以得出vm2也是第一下级控制器下属的虚拟机,且建立vm2在D1上的端口VPort2;可以得出vm3和vm4是第二下级控制器下属的虚拟机,且分别建立vm3和vm4在第二下级控制器对应的D2上的第二端口VPort3和VPort4。由此,便生成了上级控制器本地保存的上级拓扑信息隐藏了子网内部的信息。
可选地,所有虚拟机的信息包括虚拟机ID、虚拟机与对应的虚拟交换机连接的关联端口的端口ID和虚拟机地址信息,上级控制器对上报信息中的虚拟机ID和端口ID与云管理服务器下发给所述上级控制器的所有虚拟机的信息中虚拟机ID和端口ID一一进行比较,当上报信息中的虚拟机ID和端口ID与任一虚拟机的信息中的虚拟机ID和端口ID相同时,将该任一虚拟机的信息中的虚拟机地址信息发送给第一下级控制器或第二下级控制器,举例来说,当上报信息中的vm1的ID和端口ID与任一虚拟机的信息中的虚拟机ID和端口ID相同时,上级控制器将该任一虚拟机的IP地址和MAC地址下发给第一下级控制器。
S705-S707与S501-S503相同。
图8为本发明实施例三提供的SDN网络中的数据报文转发系统结构示意图。所述系统可以用于执行图7所示的方法,如图8所示,该系统包括:上级控制器801、第一下级控制器802和第二下级控制器803。
第一下级控制器802,用于接收第一虚拟交换机发送的报头信息,其中,所述报头信息包括:向所述第一虚拟交换机发送数据报文的源虚拟机的源虚拟机信息和目标虚拟机信息;
当所述第一下级控制器802在本地保存的第一下级拓扑信息中未查找到所述目标虚拟机信息所对应的目标虚拟机时,根据所述源虚拟机信息从所述第一下级拓扑信息中查询所述源虚拟机与所述第一虚拟交换机连接的第一关联端口信息,并生成第一消息,向上级控制器801发送所述第一信息,所述第一消息包括:源虚拟机信息、目标虚拟机信息和第一关联端口信息;
所述上级控制器801,用于接收所述第一消息,根据所述源虚拟机信息和所述第一关联端口信息查询本地保存的上级拓扑信息,获取所述第一下级控制器802对应的第一域虚拟交换机上与所述第一关联端口对应的第一端口信息;根据所述第一端口信息和所述目标虚拟机信息查询所述上级拓扑信息,获取所述目标虚拟机与所归属的第二下级控制器803对应的第二域虚拟交换机连接的第二端口信息,所述第一域虚拟交换机与所述第二域虚拟交换机相互通信的第一上行接口信息和第二上行接口信息,生成第一流表信息和第二流表信息,其中,第一流表信息包括第一端口信息和第一上行接口信息,第二流表信息包括第二端口信息和第二上行接口信息,并且向所述第一域虚拟交换机发送所述第一流表信息,并向所述第二域虚拟交换机发送所述第二流表信息。
可选地,所述第一下级控制器802和第二下级控制器803,还用于当云管理服务器向每个下级控制器下属的虚拟交换机下发该虚拟交换机与该虚拟机控制的虚拟机的关联端口信息,且所述虚拟机与所述虚拟交换机连接的所述关联端口状态为活跃时,接收所述虚拟交换机发送的关联端口状态信息,并向所述虚拟交换机发送所述关联端口对应的虚拟机的查询信息,接收所述虚拟交换机返回的所述关联端口下的虚拟机ID和该关联端口的端口ID,从而生成所述第一下级拓扑信息或第二下级拓扑信息;
向所述上级控制器801发送上报信息,所述上报信息包括该第一下级控制器802或第二下级控制器803的ID、所述虚拟机ID、以及所述关联端口的端口ID;
所述上级控制器801,还用于接收所述云管理服务器发送的所述配置信息,所述配置信息包括所有虚拟机的信息;接收所述第一下级控制器802和第二下级控制器803发送的所述上报信息,得到所述第一下级控制器802和第二下级控制器803下属的虚拟机信息,并且将所述关联端口映射为所述第一域虚拟交换机上的第一端口,或者将所述关联端口映射为所述第二域虚拟交换机上的第二端口,从而生成上级拓扑信息。
可选地,所述所有虚拟机的信息包括虚拟机ID、虚拟机与对应的虚拟交换机连接的关联端口的端口ID和虚拟机地址信息,所述上级控制器801还用于:对所述上报信息中的虚拟机ID和端口ID与所述云管理服务器下发给所述上级控制器801的所有虚拟机的信息中虚拟机ID和端口ID一一进行比较,当所述上报信息中的虚拟机ID和端口ID与任一虚拟机的信息中的虚拟机ID和端口ID相同时,将所述任一虚拟机的信息中的虚拟机地址信息发送给第一下级控制器802或第二下级控制器803。
可选地,所述第一下级控制器802还用于:当所述第一域虚拟交换机根据所述第一上行接口信息从所述上级拓扑信息中查询得到所述第一下级控制器802控制的第一子网内交换机上的第一物理端口信息,根据所述第一端口信息从所述上级拓扑信息中查询得到所述第一关联端口信息,并向所述第一下级控制器802发送所述第一物理端口信息和第一关联端口信息时,计算所述第一关联端口与所述第一物理端口之间的第一路由信息,并将所述第一路由信息发送给所述第一虚拟交换机,用于所述第一虚拟交换机根据所述第一路由信息,向所述目标虚拟机发送第二数据报文。
可选地,所述第二下级控制器803还用于当所述第二域虚拟交换机根据所述第二上行接口的信息从所述上级拓扑信息中查询得到所述第二下级控制器803控制的第二子网内交换机上的第二物理端口信息,根据所述第二端口信息从所述上级拓扑信息中查询得到所述目标虚拟机与对应的第二虚拟交换机连接的第二关联端口信息,并向所述第二下级控制器803发送所述第二物理端口信息和所述第二关联端口信息时,计算所述第二关联端口与所述第二物理端口之间的第二路由信息,并将所述第二路由信息发送给所述目标虚拟机所在物理主机对应的第二虚拟交换机,用于所述第二虚拟交换机根据所述第二路由信息,接收所述源虚拟机发送的第三数据报文。
本发明实施例提供的系统植入了本发明实施例二提供的方法,因此,本发明提供的系统的具体工作过程,在此不复赘述。
本发明实施例提供的SDN网络中的数据报文转发方法和系统,可以对上级控制器屏蔽下级控制器的存在,即上级控制器和下级控制器管辖具有相同特征的网络,从而可以保证各级控制器上部署的控制逻辑保持相同,降低控制逻辑的开发难度。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。