一种动态路由配置方法、装置及系统的制作方法
【专利摘要】本发明实施例公开了一种动态路由配置方法、装置及系统,涉及计算机领域,用以解决使用分布式网关时手动配置路由工作量大且调整不方便的问题。具体方案为:SDN控制器接收动态路由代理发送的路由学习消息;SDN控制器根据外部路由信息更新至少一个第一路由表项;SDN控制器在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项;SDN控制器向虚拟机的虚拟交换机发送第一流表项,以指示虚拟机的虚拟交换机根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发来自虚拟机的数据包。
【专利说明】
一种动态路由配置方法、装置及系统
技术领域
[0001]本发明涉及计算机领域,尤其涉及一种动态路由配置方法、装置及系统。【背景技术】
[0002]软件定义网络(英文:Software Defined Network,缩写:SDN)是一种将网络设备的控制面与数据面分离开的网络。目前,SDN中常用的一种技术是OpenFlow技术,采用该技术,SDN控制器可以通过控制虚拟交换机上的流表来控制虚拟交换机对数据包的转发。随着SDN技术的不断成熟,越来越多的运营商/云服务提供商将SDN作为管理数据中心的优选方案。
[0003]在数据中心内部,一台物理服务器上可以部署一个或多个虚拟机,每个虚拟机向数据中心外部设备发送数据包时需要经过集中式网关和边界网关。但是,随着数据中心规模的扩大,数据中心内部的虚拟机与数据中心外部设备之间的数据流量剧增,经过集中式网关的数据流量也会非常大,因此,可能会导致集中式网关的负载过大而影响网络性能。
[0004]为了分担集中式网关的负载,可以考虑使用分布式网关,在每个虚拟机的虚拟交换机(即虚拟机接入的虚拟交换机)上部署一个分布式网关,每个虚拟机通过各自的虚拟交换机上部署的分布式网关向数据中心外部设备发送数据包。但是,为了使虚拟机能够向数据中心外部设备发送数据包,需要在每个分布式网关上分别配置边界网关与数据中心外部设备之间的路由,若手动配置这些路由,则工作量会很大,而且当网络拓扑发生变化时, 手动调整这些路由很不方便。
【发明内容】
[0005]本发明的实施例提供一种动态路由配置方法、装置及系统,用以解决使用分布式网关时手动配置路由工作量大且调整不方便的问题。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]本发明实施例的第一方面,提供一种动态路由配置方法,应用于软件定义网络SDN 中,所述SDN通过边界网关与外部网络相连,所述SDN中包含:SDN控制器、至少两个虚拟机、所述虚拟机的虚拟交换机和动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关,所述方法包括:
[0008]所述SDN控制器接收所述动态路由代理发送的路由学习消息,所述路由学习消息中携带有外部路由信息,所述外部路由信息用于表征外部设备与边界网关之间的路由关系;
[0009]所述SDN控制器根据所述外部路由信息更新至少一个第一路由表项,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址和向所述外部设备发送数据包时所要经过的边界网关的地址;
[0010]所述SDN控制器在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项转化为第一流表项,所述第二路由表项为所述至少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意一个虚拟机;
[0011]所述SDN控制器向所述虚拟机的虚拟交换机发送所述第一流表项,以指示所述虚拟机的虚拟交换机根据所述第一流表项,通过所述虚拟机的虚拟交换机上部署的分布式网关转发所述来自所述虚拟机的数据包。
[0012]结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:
[0013]所述SDN控制器从至少一个第三路由表项中获取内部路由信息,所述至少一个第三路由表项中的每个第三路由表项中包含所述虚拟机的地址和向所述虚拟机发送数据包时所要经过的分布式网关的地址,所述向所述虚拟机发送数据包时所要经过的分布式网关为所述虚拟机的虚拟交换机上部署的分布式网关,所述内部路由信息用于表征所述虚拟机与所述虚拟机的虚拟交换机上部署的分布式网关之间的路由关系;
[0014]所述SDN控制器向所述动态路由代理发送携带有所述内部路由信息的第一路由发布消息,所述第一路由发布消息用于指示所述动态路由代理向边界网关发布所述内部路由信息;
[0015]其中,所述SDN控制器中存储有路由表,所述路由表包含所述至少一个第一路由表项和所述至少一个第三路由表项。
[0016]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在所述SDN控制器从至少一个第三路由表项中获取内部路由信息之前,所述方法还包括:
[0017]所述SDN控制器获取所述虚拟机的路由信息,所述虚拟机的路由信息包含所述虚拟机的地址和所述虚拟机的虚拟交换机上部署的分布式网关的地址;
[0018]所述SDN控制器根据所述虚拟机的路由信息生成所述第三路由表项。
[0019]结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述SDN控制器根据所述虚拟机的路由信息生成所述第三路由表项之后,所述方法还包括:
[0020]所述SDN控制器将所述第三路由表项转化为第二流表项,并向所述虚拟机的虚拟交换机发送所述第二流表项。
[0021]结合第一方面和上述可能的实现方式,在第一方面的第四种可能的实现方式中,所述动态路由代理部署在所述虚拟机上,或者,所述动态路由代理部署在服务器上。
[0022]结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述SDN中还包含集中式网关;所述路由表还包含第四路由表项;所述第四路由表项中包含所述虚拟机的网际协议IP所属的网段的IP地址和所述集中式网关的IP地址;
[0023]所述方法还包括:
[0024]所述SDN控制器从所述第四路由表项中获取集中路由信息,所述集中路由信息用于表征所述虚拟机与所述集中式网关之间的路由关系;
[0025]所述SDN控制器向所述动态路由代理发送携带有所述集中路由信息的第二路由发布消息,所述第二路由发布消息用于指示所述动态路由代理向边界网关发布所述集中路由信息。
[0026]本发明实施例的第二方面,提供一种动态路由配置方法,应用于软件定义网络SDN中,所述SDN通过边界网关与外部网络相连,所述SDN中包含:SDN控制器、至少两个虚拟机、所述虚拟机的虚拟交换机和动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关,所述方法包括:
[0027]所述动态路由代理接收边界网关发送的外部路由信息,所述外部路由信息用于表征外部设备与边界网关之间的路由关系;
[0028]所述动态路由代理向所述SDN控制器发送携带所述外部路由信息的路由学习消息,以使得所述SDN控制器根据所述外部路由信息更新至少一个第一路由表项,进而使得所述SDN控制器在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项转化为第一流表项,并向所述虚拟机的虚拟交换机发送所述第一流表项;
[0029]其中,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址和向所述外部设备发送数据包时所要经过的边界网关的地址;所述第二路由表项为所述至少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意一个虚拟机。
[0030]结合第二方面,在第二方面的第一种可能的实现方式中,所述方法还包括:
[0031]所述动态路由代理接收所述SDN控制器发送的第一路由发布消息,所述第一路由发布消息中携带有内部路由信息,所述内部路由信息用于表征所述虚拟机与所述虚拟机的虚拟交换机上部署的分布式网关之间的路由关系;
[0032]所述动态路由代理向边界网关发布所述内部路由信息。
[0033]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述动态路由代理接收边界网关发送的外部路由信息,包括:
[0034]所述动态路由代理基于动态路由协议,接收边界网关发送的外部路由信息;
[0035]所述动态路由代理向边界网关发布所述内部路由信息,包括:
[0036]所述动态路由代理基于所述动态路由协议,向边界网关发布所述内部路由信息。
[0037]结合第二方面和上述可能的实现方式,在第二方面的第三种可能的实现方式中, 所述动态路由代理部署在所述虚拟机上,或者,所述动态路由代理部署在服务器上。
[0038]结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述SDN中还包含集中式网关;所述方法还包括:
[0039]所述动态路由代理接收所述SDN控制器发送的第二路由发布消息,所述第二路由发布消息中携带有集中路由信息,所述集中路由信息用于表征所述虚拟机与所述集中式网关之间的路由关系;
[0040]所述动态路由代理向边界网关发布所述集中路由信息。
[0041]结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述动态路由代理向边界网关发布所述集中路由信息,包括:
[0042]所述动态路由代理基于所述动态路由协议,向边界网关发布所述集中路由信息。
[0043]本发明实施例的第三方面,提供一种软件定义网络SDN控制器,应用于SDN中,所述SDN通过边界网关与外部网络相连,所述SDN中包含:所述SDN控制器、至少两个虚拟机、 所述虚拟机的虚拟交换机和动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关,所述SDN控制器包括:
[0044]接收单元,用于接收所述动态路由代理发送的路由学习消息,所述路由学习消息中携带有外部路由信息,所述外部路由信息用于表征外部设备与边界网关之间的路由关系;
[0045]更新单元,用于根据所述外部路由信息更新至少一个第一路由表项,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址和向所述外部设备发送数据包时所要经过的边界网关的地址;
[0046]路由转换单元,用于在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项转化为第一流表项,所述第二路由表项为所述至少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意一个虚拟机;
[0047]第一发送单元,用于向所述虚拟机的虚拟交换机发送所述第一流表项,以指示所述虚拟机的虚拟交换机根据所述第一流表项,通过所述虚拟机的虚拟交换机上部署的分布式网关转发所述来自所述虚拟机的数据包。
[0048]结合第三方面,在第三方面的第一种可能的实现方式中,所述SDN控制器还包括:
[0049]获取单元,用于从至少一个第三路由表项中获取内部路由信息,所述至少一个第三路由表项中的每个第三路由表项中包含所述虚拟机的地址和向所述虚拟机发送数据包时所要经过的分布式网关的地址,所述向所述虚拟机发送数据包时所要经过的分布式网关为所述虚拟机的虚拟交换机上部署的分布式网关,所述内部路由信息用于表征所述虚拟机与所述虚拟机的虚拟交换机上部署的分布式网关之间的路由关系;
[0050]第二发送单元,用于向所述动态路由代理发送携带有所述内部路由信息的第一路由发布消息,所述第一路由发布消息用于指示所述动态路由代理向边界网关发布所述内部路由信息;
[0051]其中,所述SDN控制器中存储有路由表,所述路由表包含所述至少一个第一路由表项和所述至少一个第三路由表项。
[0052]结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述获取单元,还用于在从至少一个第三路由表项中获取内部路由信息之前,获取所述虚拟机的路由信息,所述虚拟机的路由信息包含所述虚拟机的地址和所述虚拟机的虚拟交换机上部署的分布式网关的地址;
[0053]所述SDN控制器还包括:
[0054]生成单元,用于根据所述虚拟机的路由信息生成所述第三路由表项。
[0055]结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述路由转换单元,还用于在所述生成单元根据所述虚拟机的路由信息生成所述第三路由表项之后,将所述第三路由表项转化为第二流表项;
[0056]所述第一发送单元,还用于向所述虚拟机的虚拟交换机发送所述第二流表项。
[0057]结合第三方面和上述可能的实现方式,在第三方面的第四种可能的实现方式中,所述动态路由代理部署在所述虚拟机上,或者,所述动态路由代理部署在服务器上。
[0058]结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述SDN中还包含集中式网关;所述路由表还包含第四路由表项;所述第四路由表项中包含所述虚拟机的网际协议IP所属的网段的IP地址和所述集中式网关的IP地址;
[0059]所述获取单元,还用于从所述第四路由表项中获取集中路由信息,所述集中路由信息用于表征所述虚拟机与所述集中式网关之间的路由关系;
[0060]所述第二发送单元,用于向所述动态路由代理发送携带有所述集中路由信息的第二路由发布消息,所述第二路由发布消息用于指示所述动态路由代理向边界网关发布所述集中路由信息。
[0061]本发明实施例的第四方面,提供一种动态路由代理,应用于软件定义网络SDN中,所述SDN通过边界网关与外部网络相连,所述SDN中包含:SDN控制器、至少两个虚拟机、所述虚拟机的虚拟交换机和所述动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关,所述动态路由代理包括:
[0062]接收单元,用于接收边界网关发送的外部路由信息,所述外部路由信息用于表征外部设备与边界网关之间的路由关系;
[0063]发送单元,用于向所述SDN控制器发送携带所述外部路由信息的路由学习消息,以使得所述SDN控制器根据所述外部路由信息更新至少一个第一路由表项,进而使得所述SDN控制器在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项转化为第一流表项,并向所述虚拟机的虚拟交换机发送所述第一流表项;
[0064]其中,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址和向所述外部设备发送数据包时所要经过的边界网关的地址;所述第二路由表项为所述至少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意一个虚拟机。
[0065]结合第四方面,在第四方面的第一种可能的实现方式中,所述接收单元,还用于接收所述SDN控制器发送的第一路由发布消息,所述第一路由发布消息中携带有内部路由信息,所述内部路由信息用于表征所述虚拟机与所述虚拟机的虚拟交换机上部署的分布式网关之间的路由关系;
[0066]所述发送单元,还用于向边界网关发布所述内部路由信息。
[0067]结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述动态路由代理还包括:
[0068]控制单元,用于控制所述接收单元基于动态路由协议,接收边界网关发送的外部路由信息;
[0069]所述控制单元,还用于控制所述发送单元基于所述动态路由协议,向边界网关发布所述内部路由信息。
[0070]结合第四方面和上述可能的实现方式,在第四方面的第三种可能的实现方式中,所述动态路由代理部署在所述虚拟机上,或者,所述动态路由代理部署在服务器上。
[0071]结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述SDN中还包含集中式网关;
[0072]所述接收单元,还用于接收所述SDN控制器发送的第二路由发布消息,所述第二路由发布消息中携带有集中路由信息,所述集中路由信息用于表征所述虚拟机与所述集中式网关之间的路由关系;
[0073]所述发送单元,还用于向边界网关发布所述集中路由信息。
[0074]结合第四方面的第四种可能的实现方式,在第四方面的第五种可能的实现方式中,所述控制单元,还用于控制所述发送单元基于所述动态路由协议,向边界网关发布所述集中路由信息。
[0075]本发明实施例的第五方面,提供一种动态路由配置系统,所述系统包括:软件定义网络SDN控制器、至少两个虚拟机、所述虚拟机的虚拟交换机和动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关;
[0076]所述SDN控制器,用于接收所述动态路由代理发送的路由学习消息,所述路由学习消息中携带有外部路由信息,所述外部路由信息用于表征外部设备与边界网关之间的路由关系;根据所述外部路由信息更新至少一个第一路由表项,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址和向所述外部设备发送数据包时所要经过的边界网关的地址;在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项转化为第一流表项,所述第二路由表项为所述至少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意一个虚拟机;向所述虚拟机的虚拟交换机发送所述第一流表项,以指示所述虚拟机的虚拟交换机根据所述第一流表项,通过所述虚拟机的虚拟交换机上部署的分布式网关转发所述来自所述虚拟机的数据包;
[0077]所述动态路由代理,用于接收所述边界网关发送的所述外部路由信息;向所述 SDN控制器发送携带所述外部路由信息的所述路由学习消息,以使得所述SDN控制器根据所述外部路由信息更新所述至少一个第一路由表项,进而使得所述SDN控制器在接收到所述虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将所述第二路由表项转化为所述第一流表项,并向所述虚拟机的虚拟交换机发送所述第一流表项。
[0078]本发明实施例提供的动态路由配置方法、装置及系统,SDN控制器根据接收到的路由学习消息中携带的外部路由信息更新至少一个第一路由表项;SDN控制器在接收到虚拟机(SDN中包含的任意一个虚拟机)的虚拟交换机发送的来自该虚拟机的数据包时,将第二路由表项转化为第一流表项,并向该虚拟机的虚拟交换机发送第一流表项,以使得该虚拟机的虚拟交换机根据第一流表项,通过该虚拟机的虚拟交换机上部署的分布式网关转发该来自该虚拟机的数据包。其中,第二路由表项为至少一个第一路由表项中的一个路由表项, 第二路由表项中包含的外部设备的地址与该来自该虚拟机的数据包的目的地址相同。这样,当该虚拟机需要向外部设备发送数据包时,该虚拟机的虚拟交换机就可以根据第一流表项,通过该虚拟机的虚拟交换机上部署的分布式网关转发该数据包,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此外,当网络拓扑发生变化时,采用本发明实施例中的动态路由配置方法,SDN控制器可以根据路由学习消息中携带的外部路由信息动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。【附图说明】
[0079]图1为本发明实施例中的SDN的组成示意图;
[0080]图2为本发明实施例中的一种动态路由配置方法流程图;
[0081]图3为本发明实施例中的另一种动态路由配置方法流程图;
[0082]图4为本发明实施例中的另一种动态路由配置方法流程图;
[0083]图5为本发明实施例中的另一种动态路由配置方法流程图;
[0084]图6为本发明实施例中的另一种动态路由配置方法流程图;
[0085]图7为本发明实施例中的一种SDN控制器的组成示意图;
[0086]图8为本发明实施例中的另一种SDN控制器的组成示意图;
[0087]图9为本发明实施例中的另一种SDN控制器的组成示意图;
[0088]图10为本发明实施例中的一种动态路由代理的组成示意图;
[0089]图11为本发明实施例中的另一种动态路由代理的组成示意图;
[0090]图12为本发明实施例中的另一种SDN控制器的组成示意图;
[0091]图13为本发明实施例中的另一种动态路由代理的组成示意图;
[0092]图14为本发明实施例中的另一种动态路由代理的组成示意图;
[0093]图15为本发明实施例中的一种动态路由配置系统的组成示意图。
【具体实施方式】
[0094]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0095]本发明实施例应用于SDN,SDN通过边界网关与外部网络相连,如图1所示,SDN中包含SDN控制器、至少两个虚拟机、虚拟机的虚拟交换机(即虚拟机接入的虚拟交换机)和动态路由代理。其中,多个虚拟机可以接入同一个虚拟交换机,但是每个虚拟机只接入一个虚拟交换机,即每个虚拟机的虚拟交换机是唯一的。虚拟机和虚拟机的虚拟交换机部署在服务器上,一台服务器上可以部署多个虚拟机。虚拟机发送的数据包可以经过分布式网关和边界网关的转发到达外部设备。本发明实施例中的动态路由代理与边界网关之间通过动态路由协议进行控制面交互。常用的动态路由协议包括:边界网关协议(英文=BorderGateway Protocol,缩写:BGP)和开放式最短路径优先(英文:0pen Shortest Path First,缩与:0SPF)协议等,具体的动态路由协议的描述可以参考现有技术中的相关描述,本发明实施例这里不再赘述。
[0096]本发明实施例提供一种动态路由配置方法,如图2所示,包括:
[0097]SlOU SDN控制器接收动态路由代理发送的路由学习消息。
[0098]其中,路由学习消息中携带有外部路由信息,外部路由信息用于表征外部设备与边界网关之间的路由关系。SDN控制器可以在网络初始配置完成后接收路由学习消息,也可以在外部设备与边界网关之间的路由关系发生变化时接收路由学习消息。外部路由信息可以用于表征一个外部设备与边界网关之间的路由关系,外部路由信息也可以用于表征多个外部设备与边界网关之间的路由关系。
[0099]需要说明的是,本发明实施例中的动态路由代理可以部署在虚拟机上,也可以部署在服务器上,动态路由代理中配置有可以用于与边界网关进行通信的网卡。动态路由代理可以是一个功能模块,也可以是一个物理实体,当动态路由代理部署在服务器上时,可以将动态路由代理所在的服务器称为动态路由代理。
[0100]S102、SDN控制器根据外部路由信息更新至少一个第一路由表项。
[0101]其中,SDN控制器中存储有路由表,本发明实施例中将路由表中的每一项称为路由表项。该路由表中包含至少一个第一路由表项,每个第一路由表项中包含一个外部设备的地址和向该外部设备发送数据包时所要经过的边界网关的地址。
[0102]外部设备的地址可以为外部设备的网际协议(英文:Internet Protocol,缩写: IP)地址,也可以为外部设备的媒体接入控制(Media Access Control,缩写:MAC)地址,本发明实施例对此不做限定。
[0103]边界网关的地址可以为边界网关的IP地址,也可以为边界网关的MAC地址,本发明实施例对此不做限定。
[0104]需要说明的是,每个第一路由表项中还可以包含子网掩码、优先级等,第一路由表项的格式可以参考现有技术中路由表的格式,本发明对第一路由表项的格式不做限定。
[0105]S103、SDN控制器在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项。
[0106]其中,第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与来自该虚拟机的数据包的目的地址相同,本步骤中的虚拟机为至少两个虚拟机中的任意一个虚拟机。
[0107]第一流表项用于指示虚拟机的虚拟交换机转发数据包时的转发规则。本发明实施例对第一流表项的格式不做限定,第一流表项的格式可以参考现有技术中流表项的相关描述。
[0108]S104、SDN控制器向虚拟机的虚拟交换机发送第一流表项,以指示虚拟机的虚拟交换机根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发来自该虚拟机的数据包。
[0109]示例性的,假设虚拟机1 (虚拟机1为SDN中包含的任意一个虚拟机)要向外部设备1发送数据包,外部设备1的IP地址为10.10.10.5,则虚拟机1先将该数据包发送给虚拟交换机1 (即虚拟机1的虚拟交换机);虚拟交换机1查找虚拟交换机1上是否存储有目的地址为10.10.10.5的流表项;若虚拟交换机1上存储有目的地址为10.10.10.5的流表项,则虚拟交换机1根据该流表项,通过虚拟交换机1上部署的分布式网关转发该数据包; 若虚拟交换机1上没有存储有目的地址为10.10.10.5的流表项,则虚拟交换机1将该数据包发送至SDN控制器,SDN控制器将与该目的地址对应的第二路由表项转化为第一流表项下发至虚拟交换机1,虚拟交换机1再根据第一流表项,通过虚拟交换机1上部署的分布式网关转发该数据包。
[0110]本发明实施例提供的动态路由配置方法,SDN控制器根据接收到的路由学习消息中携带的外部路由信息更新至少一个第一路由表项;SDN控制器在接收到虚拟机(SDN中包含的任意一个虚拟机)的虚拟交换机发送的来自该虚拟机的数据包时,将第二路由表项转化为第一流表项,并向该虚拟机的虚拟交换机发送第一流表项,以使得该虚拟机的虚拟交换机根据第一流表项,通过该虚拟机的虚拟交换机上部署的分布式网关转发该来自该虚拟机的数据包。其中,第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与该来自该虚拟机的数据包的目的地址相同。这样,当该虚拟机需要向外部设备发送数据包时,该虚拟机的虚拟交换机就可以根据第一流表项,通过该虚拟机的虚拟交换机上部署的分布式网关转发该数据包,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此外,当网络拓扑发生变化时,采用本发明实施例中的动态路由配置方法,SDN控制器可以根据路由学习消息中携带的外部路由信息动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。
[0111]进一步的,如图3所示,本发明实施例提供的动态路由配置方法还可以包括:
[0112]S105、SDN控制器从至少一个第三路由表项中获取内部路由信息。
[0113]其中,SDN控制器中存储的路由表中除了包含至少一个第一路由表项之外,还包含至少一个第三路由表项。至少一个第三路由表项中的每个第三路由表项中包含虚拟机的地址和向虚拟机发送数据包时所要经过的分布式网关的地址,向虚拟机发送数据包时所要经过的分布式网关为虚拟机的虚拟交换机上部署的分布式网关,内部路由信息用于表征虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系。
[0114]需要说明的是,大规模的数据中心通常会支持多个租户(租户为使用数据中心资源的用户,例如,一个企业可以为一个租户),多个租户共享数据中心的资源。本发明实施例中的SDN控制器也可以支持多个租户的场景。具体的,SDN控制器中可以存储多个路由表,每个路由表对应一个租户。SDN控制器可以对每个路由表进行独立管理。对应的,动态路由代理上也可以部署多个动态路由代理实例,每个动态路由代理实例对应一个租户,每个动态路由代理实例都可以实现本发明实施例中的动态路由代理的功能。SDN控制器可以对动态路由代理上部署的所有动态路由代理实例进行生命周期的管理。
[0115]S106、SDN控制器向动态路由代理发送携带有内部路由信息的第一路由发布消息,第一路由发布消息用于指示动态路由代理向边界网关发布内部路由信息。
[0116]这样,边界网关就可以获得虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系,边界网关可以根据内部路由信息更新边界网关上存储的路由表项。当外部设备要向虚拟机发送数据包时,外部设备先将该数据包发送至边界网关,边界网关就可以根据边界网关上存储的路由表项,将该数据包转发至虚拟机的虚拟交换机上部署的分布式网关,再由虚拟机的虚拟交换机上部署的分布式网关将该数据包发送至虚拟机。
[0117]需要说明的是,在本发明实施例中,S105-S106可以在SlOl-S 104之前执行,S105-S106也可以在S101-S104之后执行。
[0118]进一步的,在SDN控制器从至少一个第三路由表项中获取内部路由信息之前,SDN控制器可以获取至少两个虚拟机中的一个虚拟机的路由信息,再根据该虚拟机的路由信息生成一个第三路由表项。其中,该虚拟机的路由信息包含该虚拟机的地址和该虚拟机的虚拟交换机上部署的分布式网关的地址。
[0119]进一步的,在SDN控制器根据该虚拟机的路由信息生成第三路由表项之后,SDN控制器可以将第三路由表项转化为第二流表项,并向该虚拟机的虚拟交换机发送第二流表项,第二流表项可以用于指示该虚拟机的虚拟交换机向该虚拟机转发数据包时的转发规则。
[0120]可选的,SDN中还可以包含集中式网关;SDN控制器中存储的路由表中还可以包含第四路由表项;第四路由表项中包含虚拟机的网际协议IP所属的网段的IP地址和集中式网关的IP地址。
[0121]本发明实施例提供的动态路由配置方法还可以包括:SDN控制器从第四路由表项中获取集中路由信息,集中路由信息用于表征虚拟机与集中式网关之间的路由关系;SDN控制器向动态路由代理发送携带有集中路由信息的第二路由发布消息,第二路由发布消息用于指示动态路由代理向边界网关发布集中路由信息。
[0122]需要说明的是,本发明实施例中的第三路由表项与第四路由表项不同,第三路由表项为主机路由,第四路由表项为网段路由。SDN控制器可以控制动态路由代理向边界网关发布主机路由,也可以控制动态路由代理向边界网关发布网段路由。SDN控制器中可以设置分布式网关开关,当分布式网关开关打开时,动态路由代理向边界网关发布主机路由,主机路由可以用于指示向每一个虚拟机发送数据包时分别所要经过的分布式网关,例如,向IP地址为192.168.100.5的虚拟机I发送数据包时要经过虚拟机I的虚拟交换机上部署的分布式网关,向IP地址为192.168.100.125的虚拟机2发送数据包时要经过虚拟机2的虚拟交换机上部署的分布式网关;当分布式网关开关关闭时,动态路由代理向边界网关发布网段路由,网段路由可以用于指示向IP地址属于同一个网段的虚拟机发送数据包时都要经过集中式网关,例如,向IP地址为192.168.100.1-192.168.100.255的虚拟机发送数据包时要经过集中式网关。在多租户场景下,不同的租户可以使用不同的网关,例如,一个租户使用分布式网关,另一个租户使用集中式网关。
[0123]本发明实施例提供一种动态路由配置方法,如图4所示,包括:
[0124]S201、动态路由代理接收边界网关发送的外部路由信息,外部路由信息用于表征外部设备与边界网关之间的路由关系。
[0125]其中,动态路由代理可以在网络初始配置完成后接收外部路由信息,也可以在外部设备与边界网关之间的路由关系发生变化时接收外部路由信息。
[0126]本发明实施例中的动态路由代理可以部署在虚拟机上,也可以部署在服务器上。
[0127]S202、动态路由代理向SDN控制器发送携带外部路由信息的路由学习消息,以使得SDN控制器根据外部路由信息更新至少一个第一路由表项,进而使得SDN控制器在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,并向虚拟机的虚拟交换机发送第一流表项。
[0128]其中,至少一个第一路由表项中的每个第一路由表项中包含一个外部设备的地址和向该外部设备发送数据包时所要经过的边界网关的地址;第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与来自虚拟机的数据包的目的地址相同,虚拟机为至少两个虚拟机中的任意一个虚拟机。
[0129]进一步的,动态路由代理可以包括:“主”动态路由代理和“备”动态路由代理。“主”动态路由代理和“备”动态路由代理为两个功能完全相同的动态路由代理。通常情况下,“主”动态路由代理运行。SDN控制器与“主”动态路由代理之间可以建立“心跳”机制,即“主”动态路由代理可以周期性的向SDN控制器发送一个自定义的结构体(也称“心跳包”或“心跳帧”),若SDN控制器可以正常接收该“心跳包”,则SDN控制器可以确定“主”动态路由代理正常运行;若SDN控制器无法正常接收该“心跳包”,则SDN控制器可以确定“主”动态路由代理出现故障或发生宕机,此时,SDN控制器控制“备”动态路由代理运行,以保证可靠性。其中,“心跳”机制的具体内容和“心跳包”的具体格式可以参考现有技术中的相关描述,本发明实施例这里不再详细赘述。
[0130] 本发明实施例提供的动态路由配置方法,动态路由代理向SDN控制器发送携带外部路由信息的路由学习消息,以使得SDN控制器根据外部路由信息更新至少一个第一路由表项,进而使得SDN控制器在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时, 将第二路由表项转化为第一流表项,并向虚拟机的虚拟交换机发送第一流表项。这样,虚拟机的虚拟交换机就可以根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发来自虚拟机的数据包,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此外,当网络拓扑发生变化时,采用本发明实施例中的动态路由配置方法,动态路由代理可以通过外部路由信息获取网络拓扑变化后的外部设备与边界网关之间的路由关系,并通过向SDN控制器发送路由学习消息指示SDN控制器动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。
[0131] 进一步的,如图5所示,本发明实施例提供的动态路由配置方法还可以包括:
[0132]S203、动态路由代理接收SDN控制器发送的第一路由发布消息。
[0133]其中,第一路由发布消息中携带有内部路由信息,内部路由信息用于表征虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系。
[0134]S204、动态路由代理向边界网关发布内部路由信息。
[0135] 这样,边界网关就可以获得虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系,边界网关可以根据内部路由信息更新边界网关上存储的路由表项。当外部设备要向虚拟机发送数据包时,外部设备先将该数据包发送至边界网关,边界网关就可以根据边界网关上存储的路由表项,将该数据包转发至虚拟机的虚拟交换机上部署的分布式网关,再由虚拟机的虚拟交换机上部署的分布式网关将该数据包发送至虚拟机。
[0136]需要说明的是,在本发明实施例中,S203-S204可以在S201-S202之前执行, S203-S204也可以在S201-S202之后执行。
[0137] 进一步的,动态路由代理可以基于动态路由协议,接收边界网关发送的外部路由信息;动态路由代理也可以基于动态路由协议,向边界网关发布内部路由信息。其中,动态路由协议可以为BGP或0SPF等。
[0138]可选的,SDN中还可以包含集中式网关;本发明实施例提供的动态路由配置方法还可以包括:动态路由代理接收SDN控制器发送的第二路由发布消息,第二路由发布消息中携带有集中路由信息,集中路由信息用于表征虚拟机与集中式网关之间的路由关系;动态路由代理向边界网关发布集中路由信息。
[0139] 进一步的,动态路由代理也可以基于动态路由协议,向边界网关发布集中路由信息。
[0140] 本发明实施例还提供一种动态路由的配置方法,如图6所示,包括:
[0141]S301、动态路由代理接收边界网关发送的外部路由信息。
[0142]其中,外部路由信息用于表征外部设备与边界网关之间的路由关系。动态路由代理可以在网络初始配置完成后接收外部路由信息,也可以在外部设备与边界网关之间的路由关系发生变化时接收外部路由信息。
[0143]本发明实施例中的动态路由代理可以部署在虚拟机上,也可以部署在服务器上。
[0144]S302、动态路由代理向SDN控制器发送携带外部路由信息的路由学习消息。
[0145]S303、SDN控制器根据外部路由信息更新至少一个第一路由表项。
[0146]其中,至少一个第一路由表项中的每个第一路由表项中包含一个外部设备的地址和向该外部设备发送数据包时所要经过的边界网关的地址。
[0147]S304、虚拟机1向虚拟交换机1发送数据包1,数据包1的目的地址为外部设备1 的地址。
[0148]其中,虚拟机1为SDN中包含的任意一个虚拟机,虚拟交换机1为虚拟机1的虚拟交换机。
[0149]S305、虚拟交换机1向SDN控制器发送数据包1。
[0150]S306、SDN控制器将第二路由表项转化为第一流表项。
[0151]其中,第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备1的地址。
[0152]S307、SDN控制器向虚拟交换机1发送第一流表项,以指示虚拟交换机1根据第一流表项,通过虚拟交换机1上部署的分布式网关转发数据包1。
[0153]S308、SDN控制器从至少一个第三路由表项中获取内部路由信息。
[0154]其中,SDN控制器中存储有路由表,路由表包含至少一个第一路由表项和至少一个第三路由表项。至少一个第三路由表项中的每个第三路由表项中包含虚拟机的地址和向该虚拟机发送数据包时所要经过的分布式网关的地址,向虚拟机发送数据包时所要经过的分布式网关为虚拟机的虚拟交换机上部署的分布式网关,内部路由信息用于表征虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系。
[0155]S309、SDN控制器向动态路由代理发送携带有内部路由信息的第一路由发布消息。
[0156]S310、动态路由代理向边界网关发布内部路由信息。
[0157]这样,边界网关就可以获得虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系,边界网关可以根据内部路由信息更新边界网关上存储的路由表项。当外部设备要向虚拟机发送数据包时,外部设备先将该数据包发送至边界网关,边界网关就可以根据边界网关上存储的路由表项,将该数据包转发至虚拟机的虚拟交换机上部署的分布式网关,再由虚拟机的虚拟交换机上部署的分布式网关将该数据包发送至虚拟机。
[0158]本发明实施例提供的动态路由配置方法,SDN控制器根据接收到的路由学习消息中携带的外部路由信息更新至少一个第一路由表项;SDN控制器在接收到虚拟机1 (SDN中包含的任意一个虚拟机)的虚拟交换机(虚拟交换机1)发送的数据包1时,将第二路由表项转化为第一流表项,并向虚拟交换机1发送第一流表项,以使得虚拟交换机1根据第一流表项,通过虚拟交换机1上部署的分布式网关转发数据包1。其中,第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与数据包1的目的地址相同。这样,当虚拟机1需要向外部设备发送数据包1时,虚拟交换机1就可以根据第一流表项,通过虚拟交换机1上部署的分布式网关转发该数据包1,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此外,当网络拓扑发生变化时,采用本发明实施例中的动态路由配置方法,SDN控制器可以根据路由学习消息中携带的外部路由信息动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。
[0159]本发明实施例还提供一种SDN控制器,应用于SDN中,SDN通过边界网关与外部网络相连,SDN中包含:SDN控制器、至少两个虚拟机、虚拟机的虚拟交换机和动态路由代理,虚拟机的虚拟交换机上部署有分布式网关,如图7所示,SDN控制器包括:接收单元41、更新单元42、路由转换单元43和第一发送单元44。
[0160]接收单元41,用于接收动态路由代理发送的路由学习消息,路由学习消息中携带有外部路由信息,外部路由信息用于表征外部设备与边界网关之间的路由关系。
[0161]更新单元42,用于根据外部路由信息更新至少一个第一路由表项,至少一个第一路由表项中的每个第一路由表项中包含一个外部设备的地址和向该外部设备发送数据包时所要经过的边界网关的地址。
[0162]路由转换单元43,用于在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与来自虚拟机的数据包的目的地址相同,虚拟机为至少两个虚拟机中的任意一个虚拟机。
[0163]第一发送单元44,用于向虚拟机的虚拟交换机发送第一流表项,以指示虚拟机的虚拟交换机根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发来自虚拟机的数据包。
[0164]进一步的,如图8所示,本发明实施例提供的SDN控制器还包括:获取单元45和第二发送单元46。
[0165]获取单元45,用于从至少一个第三路由表项中获取内部路由信息,至少一个第三路由表项中的每个第三路由表项中包含虚拟机的地址和向虚拟机发送数据包时所要经过的分布式网关的地址,向虚拟机发送数据包时所要经过的分布式网关为虚拟机的虚拟交换机上部署的分布式网关,内部路由信息用于表征虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系。
[0166]第二发送单元46,用于向动态路由代理发送携带有内部路由信息的第一路由发布消息,第一路由发布消息用于指示动态路由代理向边界网关发布内部路由信息。
[0167]其中,SDN控制器中存储有路由表,路由表包含至少一个第一路由表项和至少一个第三路由表项。
[0168]进一步的,获取单元45,还用于在从至少一个第三路由表项中获取内部路由信息之前,获取虚拟机的路由信息,虚拟机的路由信息包含虚拟机的地址和虚拟机的虚拟交换机上部署的分布式网关的地址。
[0169]如图9所示,该SDN控制器还包括:生成单元47。
[0170]生成单元47,用于根据虚拟机的路由信息生成第三路由表项。
[0171]进一步的,路由转换单元43,还用于在生成单元47根据虚拟机的路由信息生成第三路由表项之后,将第三路由表项转化为第二流表项。
[0172]第一发送单元44,还用于向虚拟机的虚拟交换机发送第二流表项。
[0173]进一步的,动态路由代理可以部署在虚拟机上,动态路由代理也可以部署在服务器上。
[0174]可选的,SDN中还包含集中式网关;路由表还包含第四路由表项;第四路由表项中包含虚拟机的网际协议IP所属的网段的IP地址和集中式网关的IP地址。
[0175]获取单元45,还用于从第四路由表项中获取集中路由信息,集中路由信息用于表征虚拟机与集中式网关之间的路由关系。
[0176]第二发送单元46,用于向动态路由代理发送携带有集中路由信息的第二路由发布消息,第二路由发布消息用于指示动态路由代理向边界网关发布集中路由信息。
[0177] 需要说明的是,本发明实施例提供的SDN控制器中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
[0178]本发明实施例提供的SDN控制器,SDN控制器根据接收到的路由学习消息中携带的外部路由信息更新至少一个第一路由表项;SDN控制器在接收到虚拟机(SDN中包含的任意一个虚拟机)的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,并向虚拟机的虚拟交换机发送第一流表项,以使得虚拟机的虚拟交换机根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发该来自虚拟机的数据包。其中, 第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与该来自虚拟机的数据包的目的地址相同。这样,当虚拟机需要向外部设备发送数据包时,虚拟机的虚拟交换机就可以根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发该数据包,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此外,当网络拓扑发生变化时,采用本发明实施例中的SDN控制器,SDN控制器可以根据路由学习消息中携带的外部路由信息动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。
[0179]本发明实施例还提供一种动态路由代理,应用于SDN中,SDN通过边界网关与外部网络相连,SDN中包含:SDN控制器、至少两个虚拟机、虚拟机的虚拟交换机和动态路由代理,虚拟机的虚拟交换机上部署有分布式网关,如图10所示,动态路由代理包括:接收单元 51和发送单元52。
[0180]接收单元51,用于接收边界网关发送的外部路由信息,外部路由信息用于表征外部设备与边界网关之间的路由关系。
[0181]发送单元52,用于向SDN控制器发送携带外部路由信息的路由学习消息,以使得 SDN控制器根据外部路由信息更新至少一个第一路由表项,进而使得SDN控制器在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项, 并向虚拟机的虚拟交换机发送第一流表项。
[0182]其中,至少一个第一路由表项中的每个第一路由表项中包含一个外部设备的地址和向该外部设备发送数据包时所要经过的边界网关的地址;第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与来自虚拟机的数据包的目的地址相同,虚拟机为至少两个虚拟机中的任意一个虚拟机。
[0183]进一步的,接收单元51,还用于接收SDN控制器发送的第一路由发布消息,第一路由发布消息中携带有内部路由信息,内部路由信息用于表征虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系。
[0184]发送单元52,还用于向边界网关发布内部路由信息。
[0185]进一步的,如图11所示,动态路由代理还包括:控制单元53。
[0186]控制单元53,用于控制接收单元51基于动态路由协议,接收边界网关发送的外部路由信息。
[0187]控制单元53,还用于控制发送单元52基于动态路由协议,向边界网关发布内部路由信息。
[0188]进一步的,动态路由代理可以部署在虚拟机上,动态路由代理也可以部署在服务器上。
[0189]可选的,SDN中还包含集中式网关。
[0190]接收单元51,还用于接收SDN控制器发送的第二路由发布消息,第二路由发布消息中携带有集中路由信息,集中路由信息用于表征虚拟机与集中式网关之间的路由关系;
[0191]发送单元52,还用于向边界网关发布集中路由信息。
[0192]进一步的,控制单元53,还用于控制发送单元52基于动态路由协议,向边界网关发布集中路由信息。
[0193]需要说明的是,本发明实施例提供的动态路由代理中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
[0194]本发明实施例提供的动态路由代理,动态路由代理向SDN控制器发送携带外部路由信息的路由学习消息,以使得SDN控制器根据外部路由信息更新至少一个第一路由表项,进而使得SDN控制器在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,并向虚拟机的虚拟交换机发送第一流表项。这样,虚拟机的虚拟交换机就可以根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发来自虚拟机的数据包,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此外,当网络拓扑发生变化时,采用本发明实施例中的动态路由代理,动态路由代理可以通过外部路由信息获取网络拓扑变化后的外部设备与边界网关之间的路由关系,并通过向SDN控制器发送路由学习消息指示SDN控制器动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。
[0195]本发明实施例还提供一种SDN控制器,应用于SDN中,SDN通过边界网关与外部网络相连,SDN中包含:SDN控制器、至少两个虚拟机、虚拟机的虚拟交换机和动态路由代理,虚拟机的虚拟交换机上部署有分布式网关,如图12所示,SDN控制器包括:接收器61、处理器62和发送器63。
[0196]接收器61,用于接收动态路由代理发送的路由学习消息,路由学习消息中携带有外部路由信息,外部路由信息用于表征外部设备与边界网关之间的路由关系。
[0197]处理器62,用于根据外部路由信息更新至少一个第一路由表项,至少一个第一路由表项中的每个第一路由表项中包含一个外部设备的地址和向该外部设备发送数据包时所要经过的边界网关的地址;在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与来自虚拟机的数据包的目的地址相同,虚拟机为至少两个虚拟机中的任意一个虚拟机。
[0198]发送器63,用于向虚拟机的虚拟交换机发送第一流表项,以指示虚拟机的虚拟交换机根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发来自虚拟机的数据包。
[0199]进一步的,处理器62,还用于从至少一个第三路由表项中获取内部路由信息,至少一个第三路由表项中的每个第三路由表项中包含虚拟机的地址和向虚拟机发送数据包时所要经过的分布式网关的地址,向虚拟机发送数据包时所要经过的分布式网关为虚拟机的虚拟交换机上部署的分布式网关,内部路由信息用于表征虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系。
[0200]发送器63,还用于向动态路由代理发送携带有内部路由信息的第一路由发布消息,第一路由发布消息用于指示动态路由代理向边界网关发布内部路由信息。
[0201]其中,SDN控制器中存储有路由表,路由表包含至少一个第一路由表项和至少一个第三路由表项。
[0202]进一步的,处理器62,还用于在从至少一个第三路由表项中获取内部路由信息之前,获取虚拟机的路由信息,虚拟机的路由信息包含虚拟机的地址和虚拟机的虚拟交换机上部署的分布式网关的地址;SDN控制器根据虚拟机的路由信息生成第三路由表项。
[0203]进一步的,处理器62,还用于在根据虚拟机的路由信息生成第三路由表项之后,将第三路由表项转化为第二流表项。
[0204]发送器63,还用于向虚拟机的虚拟交换机发送第二流表项。
[0205]进一步的,动态路由代理可以部署在虚拟机上,动态路由代理也可以部署在服务器上。
[0206]可选的,SDN中还包含集中式网关;路由表还包含第四路由表项;第四路由表项中包含虚拟机的网际协议IP所属的网段的IP地址和集中式网关的IP地址。
[0207]处理器62,还用于从第四路由表项中获取集中路由信息,集中路由信息用于表征虚拟机与集中式网关之间的路由关系。
[0208]发送器63,还用于向动态路由代理发送携带有集中路由信息的第二路由发布消息,第二路由发布消息用于指示动态路由代理向边界网关发布集中路由信息。
[0209]需要说明的是,本发明实施例提供的SDN控制器中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
[0210]本发明实施例提供的SDN控制器,SDN控制器根据接收到的路由学习消息中携带的外部路由信息更新至少一个第一路由表项;SDN控制器在接收到虚拟机(SDN中包含的任意一个虚拟机)的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,并向虚拟机的虚拟交换机发送第一流表项,以使得虚拟机的虚拟交换机根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发该来自虚拟机的数据包。其中, 第二路由表项为至少一个第一路由表项中的一个第一路由表项,第二路由表项中包含的外部设备的地址与该来自虚拟机的数据包的目的地址相同。这样,当虚拟机需要向外部设备发送数据包时,虚拟机的虚拟交换机就可以根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发该数据包,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此夕卜,当网络拓扑发生变化时,采用本发明实施例中的SDN控制器,SDN控制器可以根据路由学习消息中携带的外部路由信息动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。
[0211]本发明实施例还提供一种动态路由代理,应用于SDN中,SDN通过边界网关与外部网络相连,SDN中包含:SDN控制器、至少两个虚拟机、虚拟机的虚拟交换机和动态路由代理,虚拟机的虚拟交换机上部署有分布式网关,如图13所示,动态路由代理包括:接收器71和发送器72。
[0212]接收器71,用于接收边界网关发送的外部路由信息,外部路由信息用于表征外部设备与边界网关之间的路由关系。
[0213]发送器72,用于向SDN控制器发送携带外部路由信息的路由学习消息,以使得SDN控制器根据外部路由信息更新至少一个第一路由表项,进而使得SDN控制器在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,并向虚拟机的虚拟交换机发送第一流表项。
[0214]其中,至少一个第一路由表项中的每个第一路由表项中包含一个外部设备的地址和向该外部设备发送数据包时所要经过的边界网关的地址;第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与来自虚拟机的数据包的目的地址相同,虚拟机为至少两个虚拟机中的任意一个虚拟机。
[0215]进一步的,接收器71,还用于接收SDN控制器发送的第一路由发布消息,第一路由发布消息中携带有内部路由信息,内部路由信息用于表征虚拟机与虚拟机的虚拟交换机上部署的分布式网关之间的路由关系。
[0216]发送器72,还用于向边界网关发布内部路由信息。
[0217]进一步的,如图14所示,动态路由代理还包括:处理器73。
[0218]处理器73,用于控制接收器71基于动态路由协议,接收边界网关发送的外部路由信息;控制发送器72基于动态路由协议,向边界网关发布内部路由信息。
[0219]进一步的,动态路由代理可以部署在虚拟机上,动态路由代理也可以部署在服务器上。
[0220]可选的,SDN中还包含集中式网关。
[0221]接收器71,还用于接收SDN控制器发送的第二路由发布消息,第二路由发布消息中携带有集中路由信息,集中路由信息用于表征虚拟机与集中式网关之间的路由关系。
[0222]发送器72,还用于向边界网关发布集中路由信息。
[0223]进一步的,处理器73,还用于控制发送器72基于动态路由协议,向边界网关发布集中路由信息。
[0224]需要说明的是,本发明实施例提供的动态路由代理中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
[0225]本发明实施例提供的动态路由代理,动态路由代理向SDN控制器发送携带外部路由信息的路由学习消息,以使得SDN控制器根据外部路由信息更新至少一个第一路由表项,进而使得SDN控制器在接收到虚拟机的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,并向虚拟机的虚拟交换机发送第一流表项。这样,虚拟机的虚拟交换机就可以根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发来自虚拟机的数据包,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此外,当网络拓扑发生变化时,采用本发明实施例中的动态路由代理,动态路由代理可以通过外部路由信息获取网络拓扑变化后的外部设备与边界网关之间的路由关系,并通过向SDN控制器发送路由学习消息指示SDN控制器动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。
[0226]本发明实施例还提供一种动态路由配置系统,如图15所示,动态路由配置系统包括:SDN控制器81、至少两个虚拟机82、虚拟机82的虚拟交换机83和动态路由代理84,虚拟交换机83上部署有分布式网关。
[0227]SDN控制器81,用于接收动态路由代理84发送的路由学习消息,路由学习消息中携带有外部路由信息,外部路由信息用于表征外部设备与边界网关之间的路由关系;根据外部路由信息更新至少一个第一路由表项,至少一个第一路由表项中的每个第一路由表项中包含外部设备的地址和向外部设备发送数据包时所要经过的边界网关的地址;在接收到虚拟交换机83发送的来自虚拟机82的数据包时,将第二路由表项转化为第一流表项,第二路由表项为至少一个第一路由表项中的一个路由表项,第二路由表项中包含的外部设备的地址与来自该虚拟机82的数据包的目的地址相同,虚拟机82为至少两个虚拟机中的任意一个虚拟机;向虚拟交换机83发送第一流表项,以指示虚拟交换机83根据第一流表项,通过虚拟交换机83上部署的分布式网关转发来自虚拟机82的数据包。
[0228]动态路由代理84,用于接收边界网关发送的外部路由信息;向SDN控制器81发送携带外部路由信息的路由学习消息,以使得SDN控制器81根据外部路由信息更新至少一个第一路由表项,进而使得SDN控制器81在接收到虚拟交换机83发送的来自虚拟机82的数据包时,将第二路由表项转化为第一流表项,并向虚拟交换机83发送第一流表项。
[0229]本发明实施例提供的动态路由配置系统,SDN控制器根据接收到的路由学习消息中携带的外部路由信息更新至少一个第一路由表项;SDN控制器在接收到虚拟机(SDN中包含的任意一个虚拟机)的虚拟交换机发送的来自虚拟机的数据包时,将第二路由表项转化为第一流表项,并向虚拟机的虚拟交换机发送第一流表项,以使得虚拟机的虚拟交换机根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发该来自虚拟机的数据包。其中,第二路由表项为至少一个第一路由表项中的一个第一路由表项,第二路由表项中包含的外部设备的地址与该来自虚拟机的数据包的目的地址相同。这样,当虚拟机需要向外部设备发送数据包时,虚拟机的虚拟交换机就可以根据第一流表项,通过虚拟机的虚拟交换机上部署的分布式网关转发该数据包,而无需手动在分布式网关上配置边界网关和外部设备之间的路由,从而可以解决现有技术中采用分布式网关时手动配置路由工作量大的问题;此外,当网络拓扑发生变化时,采用本发明实施例中的动态路由配置系统,SDN控制器可以根据路由学习消息中携带的外部路由信息动态更新第一路由表项,从而可以动态调整边界网关和外部设备之间的路由,以解决现有技术中采用分布式网关时调整不方便的问题。
[0230]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0231]在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0232]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0233]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0234]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文-processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-0nly Memory,缩写:R0M)、随机存取存储器(英文:Random AccessMemory,缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0235]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
1.一种动态路由配置方法,应用于软件定义网络SDN中,所述SDN通过边界网关与外部网络相连,其特征在于,所述SDN中包含:SDN控制器、至少两个虚拟机、所述虚拟机的虚拟交换机和动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关,所述方法包括: 所述SDN控制器接收所述动态路由代理发送的路由学习消息,所述路由学习消息中携带有外部路由信息,所述外部路由信息用于表征外部设备与边界网关之间的路由关系; 所述SDN控制器根据所述外部路由信息更新至少一个第一路由表项,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址和向所述外部设备发送数据包时所要经过的边界网关的地址; 所述SDN控制器在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项转化为第一流表项,所述第二路由表项为所述至少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意一个虚拟机; 所述SDN控制器向所述虚拟机的虚拟交换机发送所述第一流表项,以指示所述虚拟机的虚拟交换机根据所述第一流表项,通过所述虚拟机的虚拟交换机上部署的分布式网关转发所述来自所述虚拟机的数据包。2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 所述SDN控制器从至少一个第三路由表项中获取内部路由信息,所述至少一个第三路由表项中的每个第三路由表项中包含所述虚拟机的地址和向所述虚拟机发送数据包时所要经过的分布式网关的地址,所述向所述虚拟机发送数据包时所要经过的分布式网关为所述虚拟机的虚拟交换机上部署的分布式网关,所述内部路由信息用于表征所述虚拟机与所述虚拟机的虚拟交换机上部署的分布式网关之间的路由关系; 所述SDN控制器向所述动态路由代理发送携带有所述内部路由信息的第一路由发布消息,所述第一路由发布消息用于指示所述动态路由代理向边界网关发布所述内部路由信息; 其中,所述SDN控制器中存储有路由表,所述路由表包含所述至少一个第一路由表项和所述至少一个第三路由表项。3.根据权利要求2所述的方法,其特征在于,在所述SDN控制器从至少一个第三路由表项中获取内部路由信息之前,所述方法还包括: 所述SDN控制器获取所述虚拟机的路由信息,所述虚拟机的路由信息包含所述虚拟机的地址和所述虚拟机的虚拟交换机上部署的分布式网关的地址; 所述SDN控制器根据所述虚拟机的路由信息生成所述第三路由表项。4.根据权利要求3所述的方法,其特征在于,在所述SDN控制器根据所述虚拟机的路由信息生成所述第三路由表项之后,所述方法还包括: 所述SDN控制器将所述第三路由表项转化为第二流表项,并向所述虚拟机的虚拟交换机发送所述第二流表项。5.根据权利要求1-4中任一项所述的方法,其特征在于,所述动态路由代理部署在所述虚拟机上,或者,所述动态路由代理部署在服务器上。6.根据权利要求5所述的方法,其特征在于,所述SDN中还包含集中式网关;所述路由表还包含第四路由表项;所述第四路由表项中包含所述虚拟机的网际协议IP所属的网段的IP地址和所述集中式网关的IP地址;所述方法还包括:所述SDN控制器从所述第四路由表项中获取集中路由信息,所述集中路由信息用于表 征所述虚拟机与所述集中式网关之间的路由关系;所述SDN控制器向所述动态路由代理发送携带有所述集中路由信息的第二路由发布 消息,所述第二路由发布消息用于指示所述动态路由代理向边界网关发布所述集中路由信息。7.—种动态路由配置方法,应用于软件定义网络SDN中,所述SDN通过边界网关与外部 网络相连,其特征在于,所述SDN中包含:SDN控制器、至少两个虚拟机、所述虚拟机的虚拟 交换机和动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关,所述方法包括:所述动态路由代理接收边界网关发送的外部路由信息,所述外部路由信息用于表征外 部设备与边界网关之间的路由关系;所述动态路由代理向所述SDN控制器发送携带所述外部路由信息的路由学习消息, 以使得所述SDN控制器根据所述外部路由信息更新至少一个第一路由表项,进而使得所述 SDN控制器在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由 表项转化为第一流表项,并向所述虚拟机的虚拟交换机发送所述第一流表项;其中,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址 和向所述外部设备发送数据包时所要经过的边界网关的地址;所述第二路由表项为所述至 少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所 述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意 一个虚拟机。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:所述动态路由代理接收所述SDN控制器发送的第一路由发布消息,所述第一路由发布 消息中携带有内部路由信息,所述内部路由信息用于表征所述虚拟机与所述虚拟机的虚拟 交换机上部署的分布式网关之间的路由关系;所述动态路由代理向边界网关发布所述内部路由信息。9.根据权利要求8所述的方法,其特征在于,所述动态路由代理接收边界网关发送的 外部路由信息,包括:所述动态路由代理基于动态路由协议,接收边界网关发送的外部路由信息;所述动态路由代理向边界网关发布所述内部路由信息,包括:所述动态路由代理基于所述动态路由协议,向边界网关发布所述内部路由信息。10.根据权利要求7-9中任一项所述的方法,其特征在于,所述动态路由代理部署在所 述虚拟机上,或者,所述动态路由代理部署在服务器上。11.根据权利要求10所述的方法,其特征在于,所述SDN中还包含集中式网关;所述方 法还包括:所述动态路由代理接收所述SDN控制器发送的第二路由发布消息,所述第二路由发布 消息中携带有集中路由信息,所述集中路由信息用于表征所述虚拟机与所述集中式网关之 间的路由关系;所述动态路由代理向边界网关发布所述集中路由信息。12.根据权利要求11所述的方法,其特征在于,所述动态路由代理向边界网关发布所述集中路由信息,包括: 所述动态路由代理基于所述动态路由协议,向边界网关发布所述集中路由信息。13.一种软件定义网络SDN控制器,应用于SDN中,所述SDN通过边界网关与外部网络相连,其特征在于,所述SDN中包含:所述SDN控制器、至少两个虚拟机、所述虚拟机的虚拟交换机和动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关,所述SDN控制器包括: 接收单元,用于接收所述动态路由代理发送的路由学习消息,所述路由学习消息中携带有外部路由信息,所述外部路由信息用于表征外部设备与边界网关之间的路由关系; 更新单元,用于根据所述外部路由信息更新至少一个第一路由表项,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址和向所述外部设备发送数据包时所要经过的边界网关的地址; 路由转换单元,用于在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项转化为第一流表项,所述第二路由表项为所述至少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意一个虚拟机; 第一发送单元,用于向所述虚拟机的虚拟交换机发送所述第一流表项,以指示所述虚拟机的虚拟交换机根据所述第一流表项,通过所述虚拟机的虚拟交换机上部署的分布式网关转发所述来自所述虚拟机的数据包。14.根据权利要求13所述的SDN控制器,其特征在于,所述SDN控制器还包括: 获取单元,用于从至少一个第三路由表项中获取内部路由信息,所述至少一个第三路由表项中的每个第三路由表项中包含所述虚拟机的地址和向所述虚拟机发送数据包时所要经过的分布式网关的地址,所述向所述虚拟机发送数据包时所要经过的分布式网关为所述虚拟机的虚拟交换机上部署的分布式网关,所述内部路由信息用于表征所述虚拟机与所述虚拟机的虚拟交换机上部署的分布式网关之间的路由关系; 第二发送单元,用于向所述动态路由代理发送携带有所述内部路由信息的第一路由发布消息,所述第一路由发布消息用于指示所述动态路由代理向边界网关发布所述内部路由信息; 其中,所述SDN控制器中存储有路由表,所述路由表包含所述至少一个第一路由表项和所述至少一个第三路由表项。15.根据权利要求14所述的SDN控制器,其特征在于,所述获取单元,还用于在从至少一个第三路由表项中获取内部路由信息之前,获取所述虚拟机的路由信息,所述虚拟机的路由信息包含所述虚拟机的地址和所述虚拟机的虚拟交换机上部署的分布式网关的地址; 所述SDN控制器还包括: 生成单元,用于根据所述虚拟机的路由信息生成所述第三路由表项。16.根据权利要求15所述的SDN控制器,其特征在于,所述路由转换单元,还用于在所述生成单元根据所述虚拟机的路由信息生成所述第三路由表项之后,将所述第三路由表项转化为第二流表项;所述第一发送单元,还用于向所述虚拟机的虚拟交换机发送所述第二流表项。17.根据权利要求13-16中任一项所述的SDN控制器,其特征在于,所述动态路由代理 部署在所述虚拟机上,或者,所述动态路由代理部署在服务器上。18.根据权利17所述的SDN控制器,其特征在于,所述SDN中还包含集中式网关;所述 路由表还包含第四路由表项;所述第四路由表项中包含所述虚拟机的网际协议IP所属的 网段的IP地址和所述集中式网关的IP地址;所述获取单元,还用于从所述第四路由表项中获取集中路由信息,所述集中路由信息 用于表征所述虚拟机与所述集中式网关之间的路由关系;所述第二发送单元,用于向所述动态路由代理发送携带有所述集中路由信息的第二路 由发布消息,所述第二路由发布消息用于指示所述动态路由代理向边界网关发布所述集中 路由信息。19.一种动态路由代理,应用于软件定义网络SDN中,所述SDN通过边界网关与外部网 络相连,其特征在于,所述SDN中包含:SDN控制器、至少两个虚拟机、所述虚拟机的虚拟交 换机和所述动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关,所述动态路由 代理包括:接收单元,用于接收边界网关发送的外部路由信息,所述外部路由信息用于表征外部 设备与边界网关之间的路由关系;发送单元,用于向所述SDN控制器发送携带所述外部路由信息的路由学习消息,以使 得所述SDN控制器根据所述外部路由信息更新至少一个第一路由表项,进而使得所述SDN 控制器在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项 转化为第一流表项,并向所述虚拟机的虚拟交换机发送所述第一流表项;其中,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址 和向所述外部设备发送数据包时所要经过的边界网关的地址;所述第二路由表项为所述至 少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所 述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意 一个虚拟机。20.根据权利要求19所述的动态路由代理,其特征在于,所述接收单元,还用于接收所 述SDN控制器发送的第一路由发布消息,所述第一路由发布消息中携带有内部路由信息, 所述内部路由信息用于表征所述虚拟机与所述虚拟机的虚拟交换机上部署的分布式网关 之间的路由关系;所述发送单元,还用于向边界网关发布所述内部路由信息。21.根据权利要求20所述的动态路由代理,其特征在于,所述动态路由代理还包括:控制单元,用于控制所述接收单元基于动态路由协议,接收边界网关发送的外部路由信息;所述控制单元,还用于控制所述发送单元基于所述动态路由协议,向边界网关发布所 述内部路由信息。22.根据权利要求19-21中任一项所述的动态路由代理,其特征在于,所述动态路由代 理部署在所述虚拟机上,或者,所述动态路由代理部署在服务器上。23.根据权利要求22所述的动态路由代理,其特征在于,所述SDN中还包含集中式网关; 所述接收单元,还用于接收所述SDN控制器发送的第二路由发布消息,所述第二路由发布消息中携带有集中路由信息,所述集中路由信息用于表征所述虚拟机与所述集中式网关之间的路由关系; 所述发送单元,还用于向边界网关发布所述集中路由信息。24.根据权利要求23所述的动态路由代理,其特征在于,所述控制单元,还用于控制所述发送单元基于所述动态路由协议,向边界网关发布所述集中路由信息。25.一种动态路由配置系统,其特征在于,所述系统包括:软件定义网络SDN控制器、至少两个虚拟机、所述虚拟机的虚拟交换机和动态路由代理,所述虚拟机的虚拟交换机上部署有分布式网关; 所述SDN控制器,用于接收所述动态路由代理发送的路由学习消息,所述路由学习消息中携带有外部路由信息,所述外部路由信息用于表征外部设备与边界网关之间的路由关系;根据所述外部路由信息更新至少一个第一路由表项,所述至少一个第一路由表项中的每个第一路由表项中包含所述外部设备的地址和向所述外部设备发送数据包时所要经过的边界网关的地址;在接收到虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将第二路由表项转化为第一流表项,所述第二路由表项为所述至少一个第一路由表项中的一个路由表项,所述第二路由表项中包含的外部设备的地址与所述来自所述虚拟机的数据包的目的地址相同,所述虚拟机为所述至少两个虚拟机中的任意一个虚拟机;向所述虚拟机的虚拟交换机发送所述第一流表项,以指示所述虚拟机的虚拟交换机根据所述第一流表项,通过所述虚拟机的虚拟交换机上部署的分布式网关转发所述来自所述虚拟机的数据包; 所述动态路由代理,用于接收所述边界网关发送的所述外部路由信息;向所述SDN控制器发送携带所述外部路由信息的所述路由学习消息,以使得所述SDN控制器根据所述外部路由信息更新所述至少一个第一路由表项,进而使得所述SDN控制器在接收到所述虚拟机的虚拟交换机发送的来自所述虚拟机的数据包时,将所述第二路由表项转化为所述第一流表项,并向所述虚拟机的虚拟交换机发送所述第一流表项。
【文档编号】H04L12/751GK106034077SQ201510119094
【公开日】2016年10月19日
【申请日】2015年3月18日
【发明人】李琳
【申请人】华为技术有限公司