本发明涉及sdn(softwaredefinednetwork,软件定义网络)网络和通信技术领域,特别涉及一种提升sdn控制器路由能力的方法及装置。
背景技术:
sdn是一种新型网络部署架构,其最主要特点是:集中管理、控制转发分离。集中管理就是要求sdn控制器具有很强的能力;控制转发分离弱化了sdn网络中交换机的能力,交换机只负责匹配规则+执行动作,交换机的任务变得简单、重复、高效。
sdn网络由控制平面掌控全局网络资源,无须依赖底层网络设备,屏蔽了来自底层网络设备的差异。用户可以通过sdn控制面自定义任何想实现的网络路由和传输规则策略,从而更加灵活和智能。
基于sdn架构的新型网络部署,sdn控制器负责整个sdn的网络资源分配、流量调度、路径生成,对sdn控制器的能力有很高的要求。
由于sdn网络中的设备的控制能力被弱化,当这些设备需要同外部网络进行通讯时,必须依赖sdn控制器学习外部网络的可达信息。相对于传统的网络设备操作系统,sdn控制器是一种新型的网络操作系统,其路由能力还不够完善。随着云计算技术的飞速发展和sdn数据中心的普及,网络虚拟化和数据中心互联的需求越来越大。如何快速提高sdn控制器的路由能力,是sdn控制器必须解决的问题。
技术实现要素:
根据本发明实施例提供的方案解决的技术问题是sdn控制器的路由能力不够完善,不能达到网络虚拟化和数据中心互联的需求。
根据本发明实施例提供的一种提升sdn控制器路由能力的方法,包括:
sdn控制器建立其与路由计算组件之间的消息同步通道;
外部路由设备根据其配置的以sdn控制器为其邻居的第一邻居配置信息,建立与sdn控制器的邻居关系;
vm(virtualmachine,虚拟机)根据其配置的以sdn控制器为其邻居的第二邻居配置信息,建立与sdn控制器的邻居关系;
外部路由设备和vm通过分别与sdn控制器建立的邻居关系,经由sdn控制器和所述消息同步通道分别将其路由信息传送给路由计算组件,以生成报文转发路径,并由sdn控制器将路由计算组件生成的报文转发路径发送给sdn转发面。
优选地,所述外部路由设备根据其配置的sdn控制器为其邻居的第一邻居配置信息,建立与sdn控制器的邻居关系包括:
为所述sdn控制器配置以外部路由设备为其邻居的第三邻居配置信息,并通过所述消息同步通道传送给路由计算组件;
路由计算组件根据所述第三邻居配置信息向外部路由设备发起外部路由设备与sdn控制器的第一邻居建立关系请求;
外部路由设备根据所述第一邻居建立关系请求和其配置的sdn控制器为其邻居的第一邻居配置信息,建立外部路由设备与sdn控制器的邻居关系。
优选地,所述vm根据其配置的以sdn控制器为其邻居的第二邻居配置信息,建立与sdn控制器的邻居关系包括:
为所述sdn控制器配置以vm为其邻居的第四邻居配置信息,并通过所述消息同步通道传送给路由计算组件;
路由计算组件根据所述第四邻居配置信息向vm发起vm与sdn控制器的第二邻居建立关系请求;
vm根据所述第二邻居建立关系请求和其配置的sdn控制器为其邻居的第一邻居配置信息,建立vm与sdn控制器的邻居关系。
优选地,所述外部路由设备和vm通过分别与sdn控制器建立的邻居关系,经由sdn控制器和所述消息同步通道分别将其路由信息传送给路由计算组件包括:
通过建立的外部路由设备与sdn控制器邻居关系,外部路由设备将其路由信息传送给sdn控制器,使sdn控制器通过所述消息同步通道将外部路由设备路由信息传送给路由计算组件;
通过建立的vm与sdn控制器邻居关系,vm将其的路由信息传送给sdn控制器,使sdn控制器通过所述消息同步通道将vm路由信息传送给路由计算组件。
优选地,所述路由计算组件生成报文转发路径,并由sdn控制器将路由计算组件生成的报文转发路径发送给sdn转发面包括:
路由计算组件根据外部路由设备路由信息,生成第一报文转发路由,并通过消息同步通道将所述第一报文转发路径传送给sdn控制器,使sdn控制器将所述第一报文转发路径发送给sdn转发面;
路由计算组件根据vm路由信息,生成第二报文转发路由,并通过消息同步通道将所述第二报文转发路径传送给sdn控制器,使sdn控制器将所述第二报文转发路径发送给sdn转发面。
根据本发明实施例提供的一种提升sdn控制器路由能力的装置,包括:
sdn控制器,用于建立其与路由计算组件之间的消息同步通道,使其利用所述消息同步通道接收路由计算组件生成的报文转发路径,并将所述报文转发路径发送给sdn转发面;
外部路由设备,用于根据其配置的以sdn控制器为其邻居的第一邻居配置信息,建立与sdn控制器的邻居关系;
vm,用于根据其配置的以sdn控制器为其邻居的第二邻居配置信息,建立与sdn控制器的邻居关系;
路由计算组件,用于通过接收sdn控制器传送的外部路由设备路由信息和vm路由信息,生成报文转发路径。
优选地,所述sdn控制器具体用于配置以外部路由设备为其邻居的第三邻居配置信息,并通过所述消息同步通道传送给路由计算组件,以及配置以vm为其邻居的第四邻居配置信息,并通过所述消息同步通道传送给路由计算组件。
优选地,所述路由计算组件具体用于根据所述第三邻居配置信息向外部路由设备发起外部路由设备与sdn控制器的第一邻居建立关系请求,使得外部路由设备根据所述第一邻居建立关系请求和其配置的sdn控制器为其邻居的第一邻居配置信息,建立外部路由设备与sdn控制器的邻居关系,以及根据所述第四邻居配置信息向vm发起vm与sdn控制器的第二邻居建立关系请求,使得vm根据所述第二邻居建立关系请求和其配置的sdn控制器为其邻居的第一邻居配置信息,建立vm与sdn控制器的邻居关系。
优选地,所述外部路由设备具体用于根据建立的外部路由设备与sdn控制器邻居关系,将其路由信息传送给sdn控制器,使sdn控制器通过所述消息同步通道将外部路由设备路由信息传送给路由计算组件,使得路由计算组件根据外部路由设备路由信息,生成第一报文转发路由,并通过消息同步通道将所述第一报文转发路径传送给sdn控制器,使sdn控制器将所述第一报文转发路径发送给sdn转发面。
优选地,所述vm具体用于根据建立的vm与sdn控制器邻居关系,将其的路由信息传送给sdn控制器,使sdn控制器通过所述消息同步通道将vm路由信息传送给路由计算组件,使得路由计算组件根据vm路由信息,生成第二报文转发路由,并通过消息同步通道将所述第二报文转发路径传送给sdn控制器,使sdn控制器将所述第二报文转发路径发送给sdn转发面。
根据本发明实施例提供的方案,充分利用了路由计算组件的能力,将路由计算组件和sdn控制器融合在一起,快速提升sdn控制器的路由能力。同时,sdn控制器不直接参与路由计算,控制器的压力也减小很多。
附图说明
图1是本发明实施例提供的一种提升sdn控制器路由能力的方法流程图;
图2是本发明实施例提供的一种提升sdn控制器路由能力的装置示意图;
图3是本发明实施例提供的sdn控制器集成路由计算组件示意图;
图4是本发明实施例提供的sdn控制器路由协议配置示意图;
图5是本发明实施例提供的sdn控制器路由学习示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是本发明实施例提供的一种提升sdn控制器路由能力的方法流程图,如图1所示,包括:
步骤s101:sdn控制器建立其与路由计算组件之间的消息同步通道;
步骤s102:外部路由设备根据其配置的以sdn控制器为其邻居的第一邻居配置信息,建立与sdn控制器的邻居关系;
步骤s103:vm根据其配置的以sdn控制器为其邻居的第二邻居配置信息,建立与sdn控制器的邻居关系;
步骤s104:外部路由设备和vm通过分别与sdn控制器建立的邻居关系,经由sdn控制器和所述消息同步通道分别将其路由信息传送给路由计算组件,以生成报文转发路径,并由sdn控制器将路由计算组件生成的报文转发路径发送给sdn转发面。
其中,所述外部路由设备根据其配置的sdn控制器为其邻居的第一邻居配置信息,建立与sdn控制器的邻居关系包括:为所述sdn控制器配置以外部路由设备为其邻居的第三邻居配置信息,并通过所述消息同步通道传送给路由计算组件;路由计算组件根据所述第三邻居配置信息向外部路由设备发起外部路由设备与sdn控制器的第一邻居建立关系请求;外部路由设备根据所述第一邻居建立关系请求和其配置的sdn控制器为其邻居的第一邻居配置信息,建立外部路由设备与sdn控制器的邻居关系。
其中,所述vm根据其配置的以sdn控制器为其邻居的第二邻居配置信息,建立与sdn控制器的邻居关系包括:为所述sdn控制器配置以vm为其邻居的第四邻居配置信息,并通过所述消息同步通道传送给路由计算组件;路由计算组件根据所述第四邻居配置信息向vm发起vm与sdn控制器的第二邻居建立关系请求;vm根据所述第二邻居建立关系请求和其配置的sdn控制器为其邻居的第一邻居配置信息,建立vm与sdn控制器的邻居关系。
其中,所述外部路由设备和vm通过分别与sdn控制器建立的邻居关系,经由sdn控制器和所述消息同步通道分别将其路由信息传送给路由计算组件包括:通过建立的外部路由设备与sdn控制器邻居关系,外部路由设备将其路由信息传送给sdn控制器,使sdn控制器通过所述消息同步通道将外部路由设备路由信息传送给路由计算组件;通过建立的vm与sdn控制器邻居关系,vm将其的路由信息传送给sdn控制器,使sdn控制器通过所述消息同步通道将vm路由信息传送给路由计算组件。
其中,所述路由计算组件生成报文转发路径,并由sdn控制器将路由计算组件生成的报文转发路径发送给sdn转发面包括:路由计算组件根据外部路由设备路由信息,生成第一报文转发路由,并通过消息同步通道将所述第一报文转发路径传送给sdn控制器,使sdn控制器将所述第一报文转发路径发送给sdn转发面;路由计算组件根据vm路由信息,生成第二报文转发路由,并通过消息同步通道将所述第二报文转发路径传送给sdn控制器,使sdn控制器将所述第二报文转发路径发送给sdn转发面。
图2是本发明实施例提供的一种提升sdn控制器路由能力的装置示意图,如图2所示,包括:sdn控制器201,用于建立其与路由计算组件之间的消息同步通道,使其利用所述消息同步通道接收路由计算组件生成的报文转发路径,并将所述报文转发路径发送给sdn转发面;外部路由设备202,用于根据其配置的以sdn控制器为其邻居的第一邻居配置信息,建立与sdn控制器的邻居关系;vm203,用于根据其配置的以sdn控制器为其邻居的第二邻居配置信息,建立与sdn控制器的邻居关系;路由计算组件204,用于通过接收sdn控制器传送的外部路由设备路由信息和vm路由信息,生成报文转发路径。
其中,所述sdn控制器201具体用于配置以外部路由设备为其邻居的第三邻居配置信息,并通过所述消息同步通道传送给路由计算组件,以及配置以vm为其邻居的第四邻居配置信息,并通过所述消息同步通道传送给路由计算组件。
其中,所述路由计算组件204具体用于根据所述第三邻居配置信息向外部路由设备发起外部路由设备与sdn控制器的第一邻居建立关系请求,使得外部路由设备根据所述第一邻居建立关系请求和其配置的sdn控制器为其邻居的第一邻居配置信息,建立外部路由设备与sdn控制器的邻居关系,以及根据所述第四邻居配置信息向vm发起vm与sdn控制器的第二邻居建立关系请求,使得vm根据所述第二邻居建立关系请求和其配置的sdn控制器为其邻居的第一邻居配置信息,建立vm与sdn控制器的邻居关系。
其中,所述外部路由设备202具体用于根据建立的外部路由设备与sdn控制器邻居关系,将其路由信息传送给sdn控制器,使sdn控制器通过所述消息同步通道将外部路由设备路由信息传送给路由计算组件,使得路由计算组件根据外部路由设备路由信息,生成第一报文转发路由,并通过消息同步通道将所述第一报文转发路径传送给sdn控制器,使sdn控制器将所述第一报文转发路径发送给sdn转发面。
其中,所述vm203具体用于根据建立的vm与sdn控制器邻居关系,将其的路由信息传送给sdn控制器,使sdn控制器通过所述消息同步通道将vm路由信息传送给路由计算组件,使得路由计算组件根据vm路由信息,生成第二报文转发路由,并通过消息同步通道将所述第二报文转发路径传送给sdn控制器,使sdn控制器将所述第二报文转发路径发送给sdn转发面。
图3是本发明实施例提供的sdn控制器集成路由计算组件示意图,如图3所示,将路由计算组件和sdn控制器集成在一起。sdn控制器负责路由协议相关配置、协议报文的收发和转发路径下发;路由计算组件负责转发路径的生成,使sdn控制器根据路由计算组件生成的路由路径指导数据报文转发。其中,路由计算组件和sdn控制器可以集中部署,也可以分开部署。
外部路由设备r1和sdn控制器建立邻居关系,路由设备r1向sdn控制器发起邻居建立请求,协议报文到达gw1(gateway1,网关1)后上送sdn控制器,sdn控制器将协议报文投递给路由计算组件。路由计算组件完成邻居建立和路由计算,并将最优路由同步给sdn控制器。sdn控制器将路由信息下发给交换机(switch1和gw1),交换机根据路由指导数据报文转发。
也就是说,路由计算组件和sdn控制器通过消息通道建立连接关系,sdn控制器负责创建控制器侧的l3接口(l3if1、l3vif)和路由计算组件侧的l3接口。sdn控制器通过北向接口接收路由协议(bgp(bordergatewayprotocol,边界网关协议)/ospf(openshortestpathfirst,开放式最短路径优先))配置信息,并将路由协议配置信息注入到路由计算组件。路由计算组件根据配置信息,发起邻居建立和路由信息交互,协议报文通过sdn控制器管理的网络转发出去。路由计算组件将学习到的路由信息同步给sdn控制器,sdn控制器用该路由信息指导数据报文转发。
图4是本发明实施例提供的sdn控制器路由协议配置示意图,如图4所示,用户通过sdn控制器北向接口完成路l3接口配置和路由协议相关的配置。路由配置处理模块1和接口管理模块1通过消息同步通道,将l3接口配置和路由协议相关的配置信息同步给路由计算组件系统。路由计算组件根据配置,在l3接口上发起邻居建立。
图5是本发明实施例提供的sdn控制器路由学习示意图,如图5所示,路由计算组件完成路由学习和择优,路由处理模块2通过消息同步通道将最优的路由给sdn控制器系统,控制器将路由信息以openflow流表的形式下发给交换机。
下面结合附图3-图5对技术方案的实施作进一步的详细描述:
如附图3所示,sdn域内的普通主机vm2/路由型主机vm1和域外路由设备r1实现互通。sdn控制器通过路由计算组件提供路由能力,学习路由设备r1上的路由信息prefix和路由型主机vm1上的路由信息。从而实现sdn域内主机和路由设备r1之间的三层互通。
实施例1
sdn控制器和域外路由设备r1互相通告路由。sdn控制器和路由计算组件集中/分开部署,包括以下步骤:
步骤101:在同一台虚机上启动sdn控制器和路由计算组件。sdn控制器和路由计算组件之间建立同步通道。
步骤102:sdn域内设备swtich1、gw1接入sdn控制器,接收sdn控制器下发的流表信息。
步骤103:sdn域外的路由设备r1通过gw1上的port1端口和sdn网络连接。
步骤104:用户通过sdn控制器北向接口,在sdn控制器上创建l3接口(l3if1)和接口ip地址(ip1)。
步骤105:sdn控制器将l3接口(l3if1)下发到网关设备gw1上。
步骤106:接口管理模块1通过消息同步通道将l3接口(l3if1)同步给接口管理模块2,接口管理模块2创建相应的虚拟网卡供路由计算组件使用。
步骤107:用户通过sdn控制器北向接口,配置路由协议(ospf/bgp)本地实例和邻居(路由设备r1)的配置信息。路由配置处理模块1通过消息同步通道将路由配置信息同步给路由配置处理模块2。
步骤108:路由配置处理模块2调用路由计算组件的对外接口,将路由协议的配置信息注入到路由计算组件中。
步骤109:在路由设备r1上配置路由协议(ospf/bgp)本地实例和邻居(sdn控制器)的配置信息。
步骤110:sdn控制器和路由设备r1之间建立协议(ospf/bgp)邻居。协议报文的路径:路由计算组件---sdn控制器---gw1---路由设备r1。
步骤111:路由计算组件学习到路由设备r1上的路由信息prefix下一跳为ip2。
步骤112:路由处理模块2接收路由计算组件路由信息(prefix),并通过消息同步通道将路由同步给sdn控制器的路由处理模块1。
步骤113:路由处理模块1以流表的方式将路由下发到sdn域内的网络设备switch1、gw1。sdn控制器完成了对域外路由设备r1上路由信息的学习。
步骤114:路由计算组件将vm1的路由信息通告给路由设备r1,路由设备r1学习到vm1的路由(具体见实施例2)。
至此,sdn控制器通过路由计算组件完成了和外部路由设备r1之间的路由学习和通告,sdn控制器获得了到外部路由设备r1的路由(prefix),达到三层互通。
实施例2
sdn控制器和sdn域内路由型虚拟机(vm1)互相通告路由,包括以下步骤:
步骤201:sdn控制器和路由计算组件分别部署在不同的虚机上。sdn控制器和路由计算组件之间建立同步通道。
步骤202:sdn域内设备swtich1、gw1接入sdn控制器,接收sdn控制器下发的流表信息。
步骤203:虚拟机vm1通过switch1上的port2端口接入sdn网络。
步骤204:用户通过sdn控制器北向接口,在sdn控制器上创建l3虚接口(l3vif)和接口ip地址(ip3)。
步骤205:sdn控制器将l3接口(l3vif)下发到switch1上。
步骤206:接口管理模块1通过消息同步通道将l3虚接口(l3vif)同步给接口管理模块2,接口管理模块2创建相应的虚拟网卡供路由计算组件使用。
步骤207:用户通过sdn控制器北向接口,配置路由协议(ospf/bgp)本地实例和邻居(vm1)的配置信息。路由配置处理模块1通过消息同步通道将路由配置信息同步给路由配置处理模块2。
步骤208:路由配置处理模块2调用路由计算组件的对外接口,将路由协议的配置信息注入到路由计算组件中。
步骤209:在vm1上配置路由协议(ospf/bgp)本地实例和邻居(sdn控制器)的配置信息。
步骤210:sdn控制器和vm1之间建立协议(ospf/bgp)邻居。协议报文的路径:路由计算组件---sdn控制器---switch1---vm1。
步骤211:路由计算组件学习到vm1发布的路由信息(prefix1下一跳为ip3)。
步骤212:路由处理模块2接收路由计算组件路由信息(prefix1),并通过消息同步通道将路由同步给sdn控制器的路由处理模块1。
步骤213:路由处理模块1以流表的方式将路由下发到sdn域内的网络设备switch1、gw1。sdn控制器完成了对vm1上路由信息的学习。
步骤214:路由计算组件将vm1的路由信息(prefix1)通告给路由设备r1,路由设备r1学习到了域内虚拟机vm1发布的路由。
至此,sdn控制器通过路由计算组件完成了和域内路由型vm1之间的路由学习和通告,路由设备r1和域内虚拟机vm1达到三层互通。
根据本发明实施例提供的方案,将路由计算组件和sdn控制器集成在一起。sdn控制器对外呈现路由相关的接口,不直接参与路由计算的具体流程;路由计算组件负责邻居的发现、路由信息的通告/接收。sdn控制器将路由计算组件生成的最优路由下发到sdn域内的转发设备,转发设备根据路由信息指导数据报文转发。本发明有效地解决了sdn控制器路由能力不足的问题,同时将路由计算从sdn控制器中抽离出来,极大地减轻了控制器的压力。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。