一种路由管理方法和装置与流程

文档序号:15979458发布日期:2018-11-17 00:09阅读:118来源:国知局
本申请涉及通信
技术领域
,尤其涉及一种路由管理方法和装置。
背景技术
在当前云计算的大背景下,企业对资源的快速、最优的调度部署需求给分散独立的dc(datacenter,数据中心)架构带来非常大的挑战。为了更好的实现资源的整合,可以通过ed(edgedevice,边缘设备)将传统孤立的多个dc整合在一起,成为分布式数据中心,从而使资源得到充分利用。为了提高ed的高可靠性,引入了ed组的方案,一个ed组可以包括至少两个ed;ed组中的任一个ed出现故障,可以将原本通过故障ed转发的流量切换到同一ed组的其它ed上。技术实现要素:本申请提供一种路由管理方法和装置。具体地,本申请是通过如下技术方案实现的:本申请实施例第一方面,提供了一种路由管理方法,所述方法应用于第一dc的第一ed,所述第一ed与第二ed属于一个ed组,所述方法包括:接收所述第二ed发送的故障通知消息,所述故障通知消息用于指示所述第二ed到第三ed的vxlan隧道出现故障,所述第三ed为第二dc的边缘设备,所述故障通知消息携带所述第三ed的地址;针对收到的以所述第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳地址修改为所述第一ed的私有地址后,转发给所述第一dc内的vtep设备;使得第一dc内的vtep设备基于修改后的ip/mac通告路由生成转发表项,并基于生成的转发表项将发往所述第二dc的报文通过所述第一ed转发。本申请实施例第二方面,提供了一种路由管理装置,所述装置应用于第一dc的第一ed,所述第一ed与第二ed属于一个ed组。所述装置具有实现上述第一方面提供的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块或单元。一种可能的实现方式中,所述装置可以包括:接收单元,用于接收所述第二ed发送的故障通知消息,所述故障通知消息用于指示所述第二ed到第三ed的vxlan隧道出现故障,所述第三ed为第二dc的边缘设备,所述故障通知消息携带所述第三ed的地址;路由管理单元,用于针对收到的以所述第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳地址修改为所述第一ed的私有地址后,转发给所述第一dc内的vtep设备;使得第一dc内的vtep设备基于修改后的ip/mac通告路由生成转发表项,并基于生成的转发表项将发往所述第二dc的报文通过所述第一ed转发。另一种可能的实现方式中,所述装置所在的ed可以包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;所述处理器通过读取所述存储器中存储的逻辑指令,执行本申请第一方面提供的路由管理方法。利用本申请实施例的技术方案,新增了故障通知消息,当确认本端数据中心的ed组中的一个ed跟某个远端数据中心之间的链路断开后,该ed可以将该远端数据中心对应的边缘设备的地址通过该故障通知消息通知给同一ed组的其它ed,使得其它ed可以将所有的由该远端数据中心同步过来的ip/mac通告路由的下一跳,切换为其它ed自身的私有地址,让本端数据中心向该远端数据中心转发的流量只向该其它ed转发,本端数据中心向其它数据中心转发的流量仍然走ed组的共有地址进行hash转发。附图说明图1、图2和图3是dci的场景示意图;图4是本申请实施例提供的方法流程图;图5是本申请实施例提供的dci的场景示意图;图6是本申请实施例提供的装置功能模块框图;图7是本申请实施例提供的图6所示装置的硬件结构图。具体实施方式以下结合附图对本申请进行详细描述。图1是一种dci(dcconnection,数据中心互联)的场景示意图。如图1所示,该场景包括两个数据中心:dc1和dc2,dc1和dc2通过两个ed组互联,dc1的ed组1包括两个边缘设备:ed1和ed2,dc2的ed组2也包括两个边缘设备:ed3和ed4。ed1和ed2作为一个ed组整体具有一个组地址(如2.2.2.2),同理ed3和ed4作为一个ed组整体具有一个组地址(如3.3.3.3)。dc1和dc2之间的流量可以在ed组的2个ed之间进行负载分担;同时,如果ed组中任一个ed出现故障,比如ed组1中的ed1故障,则可以通过ed组1的ed2承载原本通过ed1转发的流量,提高了可靠性。可以理解的是,dci场景中各设备之间可以基于ip(internetprotocol,互联网协议)地址通信,也可以基于mac(mediumaccesscontrol,媒体接入控制)地址通信。上述ed1和ed2(或ed3和ed4)作为一个ed组整体对外显现的组地址可以是一个组ip地址,或是一个组mac地址。以ed组1举例来说,ed1组对于dc1中的vtep(virtualextensiblelantunnelendpoint,可扩展虚拟局域网隧道端点)设备,如vtep1来说,是2台可以负载分担的设备,即vtep1只知道ed1组,vtep1上只会建立以ed组1的组地址为目的地址的vxlan(virtualextensiblelan,可扩展虚拟局域网)隧道,所以vtep1发出的流量是向ed1组中两台设备进行hash(哈希)转发的。ed1组中的任一ed,如ed1跟dc2互联的链路(即ed1到ed组2的vxlan隧道)出现故障,vtep1是无法感知的,仍然会把vtep1向dc2的流量向ed1转发。目前的解决方案是,参见图2,在感知到ed1跟dc2互联的链路发生故障时,直接将ed1和dc1内部设备(如图2中的路由反射器rr1)连接的物理链路直接关闭,让流量全部切换到ed1组中的另外一台设备ed2上去。但这种解决方案存在如下问题:如果组网中存在2个以上的dc,如图3所示,dc1还和dc3互联,那么将ed1和dc1内部设备连接的物理链路关闭,会导致dc1和dc3之间的流量无法使用ed组1进行负载分担;而实质上ed组1与dc3的ed组3之间的链路仍然是正常的,理论上可以进行负载分担,只是由于dc1和dc2之间的链路出现故障,导致ed组1的负载分担功能失效。为了解决上述问题,本申请提出了一种路由管理方法,以及一种可应用该方法的路由管理装置。下面对本申请提供的方法进行描述。参见图4,在一个实施方案中,第一dc和第二dc互联,第一dc的边缘存在一个ed组,该ed组至少包括第一ed和第二ed;第二dc的边缘可以存在一个ed组,该ed组至少包括第三ed,或者第二dc边缘可以仅存在第三ed。在本实施方案中,第一ed和第二ed之间的交互过程参见步骤401~402。需要说明的是,本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。步骤401:第二ed在检测到本地到第三ed的vxlan隧道出现故障时,向其所属ed组的其它ed发送故障通知消息。这里的故障通知消息是本申请新增的一种消息类型,消息中会携带一个地址,用于指示故障通知消息的发送端到该地址所对应的设备的vxlan隧道出现故障,该地址所对应的设备与故障通知消息的发送端为不同dc的边缘设备。例如在步骤401中,第二ed发出的故障通知消息具体用于指示第二ed到第三ed的vxlan隧道出现故障,该故障通知消息会携带第三ed的地址。作为一种实现方式,如果第二ed与多个数据中心之间的链路同时发生故障,则故障通知消息中可以同时携带该多个数据中心的边缘设备的地址。本申请实施例中,故障通知消息可以有多种实现方式,例如可以通过新的协议消息实现,如可以在已有的八类evpn路由的基础上增加一类新的evpn路由来实现;又例如可以通过已有的协议消息实现,如可以在已有的二类evpn路由,即mac/ip通告路由(mac/ipadvertisementroute)中增加新的字段来实现。步骤402:第一ed接收同一ed组的第二ed发送的故障通知消息,从故障通知消息中提取出第三ed的地址,并针对本地收到的以第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳地址修改为第一ed的私有地址后,再转发给第一dc内的vtep设备。这里,需要修改的ip/mac通告路由包括在接收该故障通知消息之前收到的、以第三ed的地址为下一跳的ip/mac通告路由,以及包括在接收该故障通知消息之后收到的、以第三ed的地址为下一跳的ip/mac通告路由。具体修改方式如下:一方面,针对在接收该故障通知消息之前收到的、以第三ed的地址为下一跳的ip/mac通告路由,第一ed可以将该ip/mac通告路由的下一跳修改为第一ed的私有地址,并转发给第一dc内的vtep设备。这里的私有地址为本申请实施例为ed组中的ed额外配置的一个地址,即ed组中的每个ed有1个互不相同的私有地址和一个共同的组地址。另一方面,在接收该故障通知消息之后,第一ed还可以将第三ed的地址添加到已建立的地址列表中。本申请实施例中,ed组内的每个ed可以提前创建一个地址列表,该地址列表用于记录本ed收到的故障通知消息携带的地址。基于地址列表,ed上还增加以下处理机制:在收到远端ed同步的ip/mac通告路由时,将该ip/mac通告路由的下一跳与本地记录的地址列表进行匹配;若匹配,则将该ip/mac通告路由的下一跳从本ed的组地址修改为本ed的私有地址,再转发给本ed所属dc内的vtep设备;若不匹配,则不修改下一跳直接将收到的ip/mac通告路由转发给本ed所属dc内的vtep设备。承接步骤402,在第一ed针对本地收到的以第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳地址修改为第一ed的私有地址并转发给第一dc内的vtep设备后,第一dc内的vtep设备可以基于修改后的ip/mac通告路由生成转发表项,该转发表项的匹配项为修改后的ip/mac通告路由中的终端地址(即第二dc内的终端的地址),该转发表项的出接口为以第一dc内的vtep设备的地址为源地址、以第一ed的私有地址为目的地址的vxlan隧道。基于这样的转发表项,第一dc内的vtep设备可以将发往第二dc报文通过第一ed转发,而不通过第二ed转发。在一个实施例中,如果第一dc的ed组中除了包括第一ed和第二ed,还包括第四ed,那么在第二ed检测到其与第二dc之间的链路出现故障时,第四ed也会收到第二ed发送的故障通知消息,并执行与上述第一ed相同的操作,针对本地收到的以第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳修改为第四ed的私有地址后,再转发给第一dc内的vtep设备。第一dc内的vtep设备根据第一ed和第四ed发送的修改后的ip/mac通告路由,生成转发表项;基于该转发表项,第一dc发往第二dc的流量可以通过第一ed或第四ed进行转发,但不会经过第二ed。在另一个实施例中,如果第一dc的ed组中除了包括第一ed和第二ed,还包括第四ed,那么还可以预先配置一个备用组地址;在第二ed检测到其与第二dc之间的链路出现故障时,第一ed和第四ed可以针对本地收到的以第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳统一修改为该备用组地址后,再转发给第一dc内的vtep设备,这样第一dc内的vtep设备根据第一ed和第四ed发送的修改后的ip/mac通告路由,生成转发表项;基于该转发表项,第一dc发往第二dc流量可以通过第一ed和第四ed进行负载分担,并且不会经过第二ed。基于上文描述的方案,假设第一dc不仅和第二dc互联,还和第三dc互联;那么在第二ed与第二dc之间的链路出现故障,但第二ed与第三dc之间的链路正常的情况下,第二ed虽然不能在第一dc和第二dc间传输报文,但仍可以向第三dc转发来自第一dc的报文,以及向第一dc转发来自第三dc的报文。如此,便实现了在数据中心互联组网中最大限度的利用多ed进行负载分担,避免了ed组内的一个ed跟一个数据中心互联的链路出现故障,导致该ed组的负载分担功能失效现象的发生。在一个实施例中,第二ed在检测到本地到第三ed的vxlan隧道恢复正常时,可以向其所属ed组的其它ed发送故障恢复通知消息。这里的故障恢复通知消息也是本申请新增的一种消息类型,消息中会携带一个地址,用于指示故障恢复通知消息的发送端到该地址所对应的设备的vxlan隧道恢复正常,该地址所对应的设备与故障恢复通知消息的发送端为不同dc的边缘设备。例如这里,第二ed发出的故障通知消息具体用于指示第二ed到第三ed的vxlan隧道恢复正常,该故障恢复通知消息会携带第三ed的地址。与第二ed属于同一ed组的第一ed收到该故障恢复通知消息后,一方面针对在接收该故障恢复通知消息之前收到的、以第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳修改为第一ed的组地址,并转发给所述第一dc内的vtep设备;另一方面,在接收该故障恢复通知消息之后,可以将第三ed的地址从已建立的地址列表中删除。这样,第一ed在之后收到第三ed同步的ip/mac通告路由时,因该ip/mac通告路由的下一跳不会再匹配上地址列表,可以不修改下一条直接将收到的ip/mac公告路由转发给第一dc内的vtep设备。之后,第一dc到第二dc的流量可以重新在第一ed和第二ed上进行负载分担。至此,完成图4所示的流程。通过图4所示的流程可以看出,本申请新增了故障通知消息,当确认本端数据中心的ed组中的一个ed跟某个远端数据中心之间的链路断开后,该ed可以将该远端数据中心对应的边缘设备的地址通过该故障通知消息通知给同一ed组的其它ed,使得其它ed可以将所有的由该远端数据中心同步过来的ip/mac通告路由的下一跳,切换为其它ed自身的私有地址,让本端数据中心向该远端数据中心转发的流量只向该其它ed转发,本端数据中心向其它数据中心转发的流量仍然走ed组的共有地址进行hash转发。为了使本领域技术人员更加清楚和明白,下面以图5所示的dci场景为例,对图4所示流程进行描述。参见图5,图5为本申请提供的实施例组网示意图。如图5所示,存在三个数据中心:dc1、dc2和dc3。dc1的ed组1包括两个边缘设备:ed1和ed2,dc2的ed组2也包括两个边缘设备:ed3和ed4,dc3只存在一个边缘设备:ed5。在图5中,ed组1进行以下配置:1)设置ed1和ed2的组地址为2.2.2.2;正常情况下ed组1用于建立vxlan隧道和用于同步evpn路由使用的都是这个地址;2)ed1和ed2跟dc1中的vtep设备建立vxlan隧道;以vtep1为例,vtep1的地址为1.1.1.1,则ed1和ed2上均会创建vxlan隧道1,源地址为2.2.2.2,目的地址为1.1.1.1;vtep1上会创建vxlan隧道2,源地址为1.1.1.1,目的地址为2.2.2.2;3)为ed1和ed2分别配置1个私有地址,ed1的私有地址为1.1.1.2,ed2的私有地址为1.1.1.3;4)在ed1和ed2上分别创建地址列表,地址列表初始为空表;5)当ed组1中的ed1和ed2和远端ed,如ed3、ed4和ed5建立bgpevpn邻居,以及建立vxlan隧道之后,会在本地记录远端ed的地址,如下:表1ed值地址2(表示ed组2的ed值)3.3.3.3(ed3、ed4的组地址)3(表示ed5的ed值)5.5.5.5(ed5的地址)同理,ed组2和ed5也做相应的配置;但ed5只需配置一个地址,并且不需要创建地址列表。基于上述配置,各数据中心之间的交互如下:dc2中,vm2上线,ed组2将vm2的ip/mac地址通过ip/mac通告路由同步给ed组1,该ip/mac通告路由的下一跳为ed组2的组地址3.3.3.3。假设是ed1收到vm2的ip/mac通告路由,ed1将该ip/mac通告路由的下一跳3.3.3.3与本地的地址列表进行匹配;由于此时地址列表还是空表,因此二者不匹配,ed1不修改下一跳直接将该ip/mac通告路由发送给vtep1。vtep1收到vm2的ip/mac通告路由,建立到vm2的转发表项:匹配项为10.1.1.2/32(vm2的地址),出接口为vxlan隧道2。同理,当dc3中的vm3上线,最终vtep1上会建立到vm3的转发表项,匹配项为12.1.1.2/32,出接口为vxlan隧道2。ed1发现自己与ed组2的两个ed设备(ed3和ed4)之间的链路发生故障,则根据上表1构造故障通知消息发送给ed2,故障通知消息中携带ed组2的组地址3.3.3.3。ed2收到ed1发送的故障通知消息,则将已经收到的所有以3.3.3.3为下一跳的ip/mac通告路由的下一跳修改为ed2的私有地址1.1.1.3,比如vm2的ip/mac通告路由;并将3.3.3.3添加到地址列表中。ed2将修改后的vm2的ip/mac通告路由发送给vtep1设备,以更新vtep1上的转发表项。vtep1收到ed2发送的修改后的vm2的ip/mac通告路由后,新建vxlan隧道3,源地址为1.1.1.1,目的地址为1.1.1.3;并将本地到vm2转发表项的出接口切换为到ed2的私有地址的vxlan隧道3。这样在vtep1上,到vm2的转发表项的出接口为vxlan隧道3;到vm3的转发表项仍然维持初始的vxlan隧道2。dc1内,vm1访问vm2的流量只通过ed2进行转发;而vm1访问vm3的流量仍然通过ed组1的ed1和ed2进行负载分担。当ed1发现自己与ed组2的两个ed设备(ed3和ed4)之间的链路恢复正常,则ed1向ed2发送故障恢复通知消息,故障恢复通知消息中携带ed组2的组地址3.3.3.3。ed2收到ed1发送的故障恢复通知消息,则将已经收到的所有以3.3.3.3为下一跳的ip/mac通告路由的下一跳重新修改为ed2的组地址2.2.2.2,比如vm2的ip/mac通告路由;并将3.3.3.3从地址列表中删除。ed2将修改后的vm2的ip/mac通告路由发送给vtep1设备,以更新vtep1上的转发表项。vtep1收到ed2发送的修改后的vm2的ip/mac通告路由后,将本地到vm2转发表项的出接口再次切换为vxlan隧道2。vm1到vm2的流量可以重新在ed组1的ed1和ed2进行负载分担。以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述。参见图6,为本申请提供的一种路由管理装置,所述装置应用于第一dc的第一ed,所述第一ed与第二ed属于一个ed组,所述装置可以包括:接收单元601,用于接收所述第二ed发送的故障通知消息,所述故障通知消息用于指示所述第二ed到第三ed的vxlan隧道出现故障,所述第三ed为第二dc的边缘设备,所述故障通知消息携带所述第三ed的地址;路由管理单元602,用于针对收到的以所述第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳地址修改为所述第一ed的私有地址后,转发给所述第一dc内的vtep设备;使得第一dc内的vtep设备基于修改后的ip/mac通告路由生成转发表项,并基于生成的转发表项将发往所述第二dc的报文通过所述第一ed转发。在其中一种实施方式中,所述路由管理单元602,用于:针对在接收所述故障通知消息之前收到的、以所述第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳修改为所述第一ed的私有地址,并转发给所述第一dc内的vtep设备;以及在接收所述故障通知消息之后,将所述第三ed的地址添加到已建立的地址列表中;所述地址列表用于匹配所述第一ed收到的ip/mac通知路由的下一跳,若匹配则所述路由管理单元将该ip/mac通告路由的下一跳修改为所述第一ed的私有地址,并转发给所述第一dc内的vtep设备。在其中一种实施方式中,该转发表项的匹配项为修改后的ip/mac通告路由中的终端地址;该转发表项的出接口为以所述第一dc内的vtep设备的地址为源地址、以所述第一ed的私有地址为目的地址的vxlan隧道。在其中一种实施方式中,所述接收单元601,还用于接收所述第二ed发送的故障恢复通知消息,所述故障恢复通知消息用于指示所述第二ed到所述第三ed的vxlan隧道恢复正常,所述故障恢复通知消息携带所述第三ed的地址;所述路由管理单元602,还用于针对在接收所述故障恢复通知消息之前收到的、以所述第三ed的地址为下一跳的ip/mac通告路由,将该ip/mac通告路由的下一跳修改为所述第一ed的组地址,并转发给所述第一dc内的vtep设备;以及在接收所述故障恢复通知消息之后,将所述第三ed的地址从已建立的地址列表中删除。在其中一种实施方式中,所述装置还包括:发送单元,用于在检测到本地到第四ed的vxlan隧道出现故障时,向第一ed所属ed组的其它ed发送故障通知消息,所述第四ed为第三dc的边缘设备;在检测到本地到第四ed的vxlan隧道恢复正常时,向第一ed所属ed组的其它ed发送故障恢复通知消息。在其中一种实施方式中,所述发送单元,还用于在检测到本地到第四ed的vxlan隧道出现故障之后,在检测到本地到第四ed的vxlan隧道恢复正常之前,如果所述第一ed到第五ed的vxlan隧道正常,所述第五ed为第四dc的边缘设备,则向所述第四dc转发来自所述第一dc的报文,以及向所述第一dc转发来自所述第四dc的报文。需要说明的是,本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。至此,完成图6所示装置的功能模块描述。对应地,本申请还提供了图6所示装置的硬件结构。参见图7,图7为本申请提供的图6所示路由管理装置所在ed的硬件结构示意图,该ed包括:通信接口701、处理器702、存储器703和总线704;其中,通信接口701、处理器702、存储器703通过总线704完成相互间的通信。上述总线704可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该总线704可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口701用于与其他设备的通信。存储器703可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。存储器703中可以存储有路由管理逻辑指令。处理器702可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。处理器702可以执行存储器703中存储的路由管理逻辑指令,以实现上述图4所示的方法。至此,完成图7所示装置的硬件结构描述。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1