具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
SDN网络涉及包括多个转发设备和一个控制器。所述控制器能够对网络进行管辖。所述控制器管辖的网络包括所述多个转发设备。所述多个转发设备中每个转发设备可以是运营商边缘(英文:provider edge,简称:PE)设备。每个转发设备是一个转发节点,用于对流量进行转发。其中,所述多个转发设备中可以包括至少一个转发设备承担出口节点的角色。在所述控制器管辖的网络包含出口节点的场景中,所述控制器管辖的网络的流量只能通过出口节点到达所述控制器管辖的网络的外部网络。所述控制器管辖的网络的流量可能是所述控制器管辖的网络中的转发设备生成的,也可能是所述控制器管辖的网络中的转发设备接收到的。所述外部网络不包括所述控制器。另外,所述控制器管辖的网络的流量的目的地可以是用户边缘(英文:customer edge;简称:CE)设备。
所述控制器用于为所述控制器管辖的网络内的每个转发设备计算到相应目的地的路由以生成转发表项,并向每个转发设备发送对应的转发表项。每个转发设备接收到对应的转发表项后,将接收到的转发表项加载到转发设备的转发平面。转发设备接收到到达目的地的流量后,可以按照加载的转发表项进行转发。
举例来说,如图1c,示例性的描述了一种SDN网络系统图。该SDN网络包括控制器C1,和转发节点R3-转发节点R7。转发节点R3-转发节点R7都与所述控制器C1相连接。所述转发节点R7承担出口节点的角色。R7用于转发到达目的地1的流量。
基于上述的SDN网络,图2为本发明实施例提供的一种发送转发表项的方法的示意图。该方法执行主体为控制器。结合图2,该方法包括:
201、控制器根据新转发路径确定第一节点到第二节点的第一转发路径。其中,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
其中,由于某种原因,如因外部的AS(Autonomous System,自治系统)发布的路由变化,将流量转发至外部网络的目的地的出口节点发生了变化。原转发路径中通过原出口节点将流量转发至所述外部网络的目的地,现在则需要通过另一个出口节点将所述流量转发至所述外部网络的目的地。
例如,由于AS发布的路由发生变化,如图3a中,所述第一节点为转发节点R7,在原转发路径中将流量转发至外部网络的目的地1的出口节点R7被替换为转发节点R4。转发节点R4作为第二节点,R4作为新转发路径中的出口节点将流量转发至所述目的地1。
当将流量转发至所述目的地的出口节点发生变化时,所述控制器生成新转发路径。
如图3b所示,在转发节点R4承担所述转发节点R7在原转发路径中作为出口节点的角色后,所述控制器生成的新的转发路径。
具体的,所述图3a和图3b所示的原转发路径和新转发路径都承载在所述控制器管辖的网络上。
需要说明的是,所述新转发路径包含所述第一转发路径。所述第二节点可以在控制器生成的原转发路径中承担出口节点的角色,所述第二节点也可以在控制器生成的原转发路径中不承担出口节点的角色。当所述第二节点在原转发路径中承担出口节点的角色时,所述第二节点在原转发路径中所承担的出口节点的角色与在所述新转发路径中所承担的出口节点的角色不同。
举例来说,在原转发路径中,所述第二节点承担出口节点的角色,所述第一节点R7承担出口节点角色所对应的目的地为目的地1,所述第二节点R4承担出口节点角色所对应的目的地为目的地2。在新转发路径中,所述第二节点R4承担第一节点R7在所述原转发路径中作为出口节点的角色,所述第二节点承担出口节点角色所对应的目的地为目的地1。
所述第一节点可以在所述控制器生成的新转发路径中承担出口节点的角色,也可以在所述新转发路径中不承担出口节点的角色。如果所述第一节点在新转发路径中承担出口节点的角色,所述第一节点在所述新转发路径中所承担的出口节点的角色与所述第一节点在原转发路径中所承担的出口节点的角色不同。
举例来说,在原转发路径中,所述第一节点R7承担出口节点角色所对应的目的地为目的地1,在新转发路径中,所述第一节点所承担的出口节点所对应的目的地为目的地1之外的其他目的地。
在所述控制器生成新的转发路径后,所述控制器根据新转发路径确定一条第一节点到第二节点的第一转发路径。
如图3b所示,所述控制器从所述新转发路径中确定R7到R4的一条转发路径作为第一转发路径。例如,该第一转发路径可以为R7→R6→R4。
需要说明的是,原转发路径中的出口节点到新转发路径中的出口节点的转发路径可能不止一条。在新转发路径,如图3b所示,由于原转发路径中的出口节点R7到新转发路径中的出口节点R4的转发路径有三条,除了R7→R6→R4,还有R7→R5→R6→R4和R7→R5→R3→R4。所述控制器先下发任意一条原转发路径的出口节点到新转发路径的出口节点的第一转发路径上的除所述第二转发节点之外的各个转发节点的转发表项,当所述第一路径中除所述第二节点之外的各个转发节点将接收到的转发表项加载到转发平面后,都可以使业务得到恢复,缩短路由收敛时间。基于此,如图3b所示,R7→R6→R4,R7→R5→R6→R4和R7→R5→R3→R4中的任意一条第一节点R7到第二节点R4的路径都可以作为所述第一转发路径。
具体的,当原转发路径的出口节点到新转发路径的出口节点不只一条时,假设为N条,可以在所述N条路径中确定一条原转发路径的出口节点到新转发路径的出口节点中最短的一条路径。假设为路径i,可以先下发路径i中除所述第二节点之外的各个节点的转发表项,与先下发其他N-1条转发路径中的一条转发路径中除所述第二节点之外的各个转发节点的转发表项相比,先下发路径i的各个节点的转发表项可以在保证恢复业务的同时达到路由收敛时间最短。
202、所述控制器向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到达目的地的流量的转发表项,其中,所述控制器向节点A发送的转发表项包含所述目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。
需要说明的是,所述第一转发路径中的所述第二节点优先接收并加载其他设备下发的所述第二节点的转发表项,所述控制器不向所述第二节点发送转发表项。
当所述控制器根据生成的新转发路径确定了所述第一节点到所述第二节点的第一转发路径后,向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到目的地的流量的转发表项。
举例来说,结合图3b,所述控制器根据新转发路径确定一条第一节点R7到第二节点R4的第一转发路径为R7→R6→R4。所述新转发路径中承担出口节点角色的节点R4的转发表项首先由控制器之外的其他设备下发,所述出口节点R4将其转发表项加载至其转发平面。当所述出口节点R4的转发表项加载至所述节点R4的转发平面后,所述控制器向所述第一转发路径上的除了所述第二节点之外的每个节点,即节点R6和节点R7发送转发表项。
需要说明的是,所述控制器向所述第一转发路径上除了所述第二节点之外的转发节点A发送的转发表项包含目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。
举例来说,结合图3b,所述控制器向R6和R7下发转发表项。所述节点R6的转发表项中包含所述目的地的IP地址和所述R6在所述第一转发路径中的下一跳,即也是R4的IP地址。所述节点R7的转发表项中包含所述目的地的IP地址和所述R7在所述第一转发路径的下一跳,即R6的IP地址。
所述控制器先下发R7→R6→R4这条路径上除所述第二节点之外的各个节点,即节点R7和节点R6的转发表项。当节点R7和节点R6都将自身的转发表项加载至自身的转发平面(forwarding plane)后,此时的更新了所述第一转发路径各个节点的转发表项的转发路径如图3c所示。由图3c可以看出,当第一转发路径更新之后,虽然网络中的很多路径还没有更新,结合新转发路径3b和3c,rt4和rt6还未增加,R7→R5→R3的路径还未更新,但网络中所有的节点都有到达新出口节点的路径。R3可以通过R3→R5→R7→R6→R4到达新根R4,R5可以通过R5→R7→R6→R4到达新根R4,R7可以通过R7→R6→R4到达R4,R6可以通过R6→R4到达R4。新转发路径中的各个节点的业务得到恢复。
需要说明的是,所述控制器在下发所述第一转发路径上除所述第二节点外的节点A的转发表项时,可以同时下发所述节点A的负载分担项和/或所述节点A的备份路径转发表项。
具体的,所述负载分担项包括到所述新转发路径的出口节点的至少一个路径的下一跳节点。所述至少一个路径的下一跳节点不包括所述转发表项包括的下一跳节点。这样,当负载分担项一起下发后,可以使得所述节点A到所述第二节点的所有路径带宽等于所述控制器生成的新转发路径中的所有节点的转发表项加载至转发平面后的所有路径的带宽,不会因为负载分担项的下发的先后顺序而造成部分流量因带宽小而丢失。
所述备份路径转发表项包括到所述第二节点至少一个备份路径的下一跳节点。这样可以使所述节点A在接收到所述控制器发送的转发表项和备份路径转发表项,并将其加载至自身转发平面后,当所述节点A到所述第二节点的路径中出现故障时,所述节点A能够采用备份路径转发而不必等到下一次协议完成后再转发流量,从而提高了路由收敛速度。
本发明实施例提供了一种发送转发表项的方法,该方法包括:控制器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色,所述控制器向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到达目的地的流量的转发表项,其中,所述控制器向节点A发送的转发表项包含所述目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。上述技术方案中,第一节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第一节点的转发表项。控制器向第一转发路径上除了第二节点之外的每个节点发送用于指导沿着第一转发路径转发到达目的地的流量的转发表项。第一转发路径上除了第二节点之外的每个节点能够根据接收到的转发表项将第一节点收到的流量逐步转发至第二节点。上述技术方案中,控制器只需要更新控制器管辖的网络中第一转发路径上除了第二节点之外的每个节点的转发表项即可,不需要更新控制器管辖的网络中的其他节点的转发表项,因此,上述技术方案有助于提高路由收敛的速度。
基于上述的SDN网络,图4为本发明实施例提供的一种发送转发表项的方法的示意图。该方法的执行主体为控制器。结合图4,该方法包括:
401、控制器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定在原转发路径上所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,在所述原转发路径上所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述新转发路径中承担出口节点的角色。
当在原转发路径中,第一节点到第一节点的下一跳节点的路径出现故障后,所述控制器生成新转发路径。其中,在所述原转发路径中所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到第二节点的路径。所述第二节点是在原转发路径和在新转发路径中都承担出口节点角色的路径。所述第二节点在所述原转发路径和在所述新转发路径中对应的目的地相同。
具体的,所述原转发路径和所述新转发路径都加载在所述控制器管辖的网络上。
举例来说,控制器生成的原转发路径如图3d所示。所述第二节点为出口节点R7,所述原转发路径中的转发节点的流量通过出口节点R7将流量转发至外部网络,最终到达目的地1。
当原转发路径中的第二节点R3与所述第一节点R3到第二节点R7的第二路径R3→R5→R7上的下一跳节点R5之间发生故障时,所述控制器生成一个新转发路径。所述新转发路径如图3e所示,在新转发路径中,所述节点R7仍承担出口节点的角色。所述节点R7在原转发路径中对应的目的地与在新转发路径中对应的目的地相同,假设都为目的地1。
在所述控制器生成新的转发路径后,所述控制器根据新转发路径确定一条第一节点到第二节点的第一转发路径。
举例来说,结合图3e,所述控制器根据新转发路径确定一条第一节点R3到第二节点R7的路径作为第一转发路径,例如,所述第一转发路径可以为R3→R4→R6→R7。
需要说明的是,在原转发路径的第二转发路径中,所述第二节点可能是所述第一节点的下一跳节点,也可能不是所述第一节点的下一跳节点。具体的,本发明实施例对此不做限定。
需要说明的是,新转发路径中的第一节点到新转发路径中的第二节点的转发路径可能不止一条。在新转发路径中,如图3e所示,所述第一节点R3到所述第二节点R7的路径有两条,除了R3→R4→R6→R7,还有R3→R4→R5→R7。所述控制器先下发R3→R4→R6→R7或R3→R4→R5→R7任意一条原转发路径上除所述第二节点之外的各个节点的转发表项,当所述第一转发路径上除所述第二节点之外的各个节点将接收到的转发表项加载至自身转发平面后,都可以使业务得到恢复,缩短路由收敛时间。基于此,如图3e所示,R3→R4→R6→R7和R3→R4→R5→R7中的任一条第一节点R3到第二节点R7的路径都可以作为所述第一转发路径。
具体的,当根据新转发路径,当所述第一节点到所述第二节点的转发路径不止一条时,假设为N条,可以在所述N条路径中确定一条所述第一节点到所述第二节点的所有路径中最短的一条路径。假设所述N条第一节点到第二节点的路径中的最短路径为路径i,作为所述第一转发路径,所述控制器先下发所述路径i中除所述第二节点之外的各个节点的转发表项,与先下发其他N-1条转发路径中的一条转发路径中除所述第二节点之外的各个转发节点的转发表项相比,先下发路径i的除所述第二节点之外的各个节点的转发表项可以在保证恢复业务的同时达到路由收敛时间最短。
402、所述控制器向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到达目的地的流量的转发表项,其中,所述控制器向节点A发送的转发表项包含所述目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。
需要说明的是,所述第一转发路径中的所述第二节点优先接收并加载其他设备下发的所述第二节点的转发表项,所述控制器不向所述第二节点发送转发表项。
当所述控制器根据生成的新转发路径确定了所述第一节点到所述第二节点的第一转发路径后,向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到目的地的流量的转发表项。
举例来说,结合图3e,所述控制器根据新转发路径确定一条第一节点R3到第二节点R7的第一转发路径为R3→R4→R6→R7。所述新转发路径中承担出口节点角色的节点R7的转发表项首先由控制器之外的其他设备下发,所述出口节点R7将其转发表项加载至其转发平面。当所述出口节点R7的转发表项加载至所述节点R7的转发平面后,所述控制器向所述第一转发路径上的除所述第二节点之外的每个节点,即节点R4,节点R4和节点R6发送转发表项。
需要说明的是,所述控制器向所述第一转发路径上除了所述第二节点之外的转发节点A发送的转发表项包含目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。
举例来说,结合图3e,所述控制器向R3、R4和R6下发转发表项。所述节点R6的转发表项中包含目的地的IP地址和所述R6在所述第一转发路径中的下一跳,即也是R7的IP地址。所述节点R4的转发表项中包含目的地的IP地址和所述R4在所述第一转发路径的下一跳,即R6的IP地址。所述节点R3的转发表项中包含目的地的IP地址和所述节点R3在所述第一转发路径的下一跳,即R4的IP地址。
控制器向所述第一转发路径R3→R4→R6→R7上除所述第二节点R7之外的各个节点,即节点R4,节点R4和节点R6发送转发表项。当节点R4,节点R4和节点R6将自身的转发表项加载至自身的转发平面后,此时的更新了所述第一转发路径各个节点的转发表项的转发路径如图3f所示。由图3f可以看出,先下发R3→R4→R6→R7这条路径上各个节点的转发表项后,虽然网络中的很多路径还没有更新,结合新转发路径3e和更新了第一转发路径各个节点转发表项的转发路径3f,rt6还未增加,但所述新转发路径中的各个转发节点都有到达所述出口节点R7的路径。R3可以通过R3→R4→R6→R7到达出口节点R7,R4可以通过R4→R6→R7到达出口节点R7。R6可以通过R6→R7到达R7,R5可以通过R5→R7到达R7,新转发路径中的各个节点的业务得到恢复。
需要说明的是,所述控制器在下发所述第一转发路径上除所述第二节点外的节点A的转发表项时,可以同时下发所述节点A的负载分担项和/或所述节点A的备份路径转发表项。
本发明实施例提供了一种发送转发表项的方法,该方法包括:控制器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定在原转发路径上所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,在所述原转发路径上所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述新转发路径中承担出口节点的角色;所述控制器向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到达目的地的流量的转发表项,其中,所述控制器向节点A发送的转发表项包含所述目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。上述技术方案中,第二节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第二节点的转发表项。控制器向第一转发路径上除了第二节点之外的每个节点发送用于指导沿着第一转发路径转发到达目的地的流量的转发表项。第一转发路径上除了第二节点之外的每个节点能够根据接收到的转发表项将第一节点接收到的流量逐步转发至第二节点。上述技术方案中,控制器只需要更新控制器管辖的网络中第一转发路径上除了第二节点之外的每个节点的转发表项即可,不需要更新控制器管辖的网络中的其他节点的转发表项,因此,上述技术方案有助于提高路由收敛的速度。
基于上述SDN网络,图5为本发明实施例提供的一种发送转发表项的方法的示意图。图5所示的方法对应的实施例是在图2所示的方法对应的实施例的基础上,提供的又一种发送转发表项的方法。图5所示的方法的执行主体为控制器。结合图5,该方法包括:
501、控制器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
具体的,步骤501的详细实施过程可参见上述实施例中的步骤201,本发明实施例对此不再赘述。
502、所述控制器确定所述第一转发路径上除了所述第二节点之外的每个节点的深度值,其中,节点B的深度值为沿着所述第一转发路径,所述节点B到所述第二节点的跳数,所述节点B为所述第一转发路径上的节点。
当所述控制器确定了所述第一节点到所述第二节点的第一转发路径后,若所述第一转发路径上除了所述第二节点之外的其他节点加载转发表项的先后顺序不正确,可能会出现流量环路的问题,导致数据的丢包。
举例来说,当所述控制器根据图3b所示的新转发路径确定了所述第一节点R7到所述第二节点R4的第一转发路径R7→R6→R4后,所述节点R7接收到所述控制器下发的转发表项,所述转发表项包含目的地的IP地址,和所述R7在所述第一转发路径R7→R6→R4的下一跳节点,即节点R6的IP地址。所述R7接收到所述R7的转发表项后,先于节点R6将转发表项下发至自身的转发平面,此时R6还未将接收到的所述控制器发送的包含所述目的地的IP地址和所述节点R6在所述第一转发路径的下一跳节点的,即节点R4的IP地址的转发表项加载至转发平面,或者所述节点R6还未接收到所述控制器发送的转发表项。此时,所述节点R7根据所述加载完成的转发表项沿着所述第一转发路径将流量发送至R6。但结合图3a所示的原转发路径,所述R6还未将所述控制器发送的转发表项加载至自身的转发平面,所述R6将按照原转发路径中的路径R6→R7将流量发送至节点R7。这样,流量就会在R6和R7之间来回传送,造成流量环路现象,容易导致数据的丢包。
为避免流量环路的现象,所述第一转发路径中除所述第二节点外的其他节点的转发表项需要按照一定的顺序将自身的转发表项加载至转发平面。
举例来说,控制器在确定了所述第一转发路径后,可以按照一定的顺序下发所述第一转发路径上除所述第二节点外的其他节点的转发表项。结合图3b,所述控制器确定了所述第一节点R7到所述第二节点R4的第一转发路径R7→R6→R4后,由于所述第二节点R4已接收其他设备下发的所述节点R4的转发表项并将其加载至自身的转发平面,此时,为避免流量环路现象,所述控制器先下发R6的转发表项,所述转发表项中包含所述目的地的IP地址,和所述节点R6在所述第一转发路径的下一跳节点,即节点R4的IP地址。所述节点R6接收到所述控制器发送的转发表项后立刻将所述转发表项加载至自身转发平面。所述控制器再下发所述节点R7的转发表项,所述转发表项中包含所述目的地的IP地址和所述节点R7在所述第一转发路径的下一跳节点,即节点R6的IP地址。所述节点R7将接收到的所述控制器发送的转发表项加载至自身转发平面后,所述第一转发路径的各个节点都已经将自身转发表项加载至自身的转发平面,所述第一转发路径更新完成,。各个相关节点的都有到达所述第二节点的路径,且在所述第一转发路径更新的过程中没有流量环路现象的产生。
具体的,所述控制器可以通过设定所述第一转发路径上除所述第二节点外的各个节点的深度值来确定下发除所述第二节点外的各个节点的转发表项的顺序。其中,节点B的深度值为沿着所述第一转发路径,所述节点B到所述第二节点的跳数,所述节点B为所述第一转发路径上除所述第二节点的转发节点。
举例来说,结合图3b,所述控制器确定所述第一转发路径为R7→R6→R4,则所述控制器确定所述R7→R6→R4中除第二节点R4的其他节点的深度值。所述节点R6沿着所述第一转发路径R7→R6→R4到所述第二节点R4的跳数为1。所述节点R7沿着所述第一转发路径R7→R6→R4到所述第二节点R4的跳数为2。因此,所述节点R6的深度值1,所述节点R7的深度值为2。
结合图3b,根据新转发路径,所述第一节点到所述第二节点的路径不只一条,除了R7→R6→R4外还有R7→R5→R6→R4和R7→R5→R3→R4。具体的,所述控制器可以确定其中的任一条为所述第一转发路径,本发明实施例对此不做限定。
举例来说,当所述控制器确定所述R7→R5→R6→R4为所述第一转发路径时,所述控制器确定所述R7→R5→R6→R4中除第二节点R4的其他节点的深度值。所述节点R6沿着所述第一转发路径R7→R5→R6→R4到所述第二节点R4的跳数为1。所述节点R5沿着所述第一转发路径R7→R5→R6→R4到所述第二节点R4的跳数为2。所述节点R7沿着所述第一转发路径R7→R5→R6→R4到所述第二节点R4的跳数为3。因此,所述节点R6的深度值1,所述节点R5的深度值为2,所述节点R7的深度值为3。
当所述控制器确定所述R7→R5→R3→R4为所述第一转发路径时,所述控制器确定所述R7→R5→R3→R4中除第二节点R4的其他节点的深度值。所述节点R3沿着所述第一转发路径R7→R5→R3→R4到所述第二节点R4的跳数为1。所述节点R5沿着所述第一转发路径R7→R5→R3→R4到所述第二节点R4的跳数为2。所述节点R7沿着所述第一转发路径R7→R5→R3→R4到所述第二节点R4的跳数为3。因此,所述节点R3的深度值1,所述节点R5的深度值为2,所述节点R7的深度值为3。
需要说明的是,上述方法只是设置所述第一转发路径中除所述第二节点的各个节点的深度值的一种方法。所述控制器也可以在计算出每个节点的深度值之后,按照深度值从小到大的顺序依次给每个节点分配一个数字。所分配的数字不与所述第一转发路径节点的深度值大小重复,深度值小的节点对应的数字较小,深度值大的节点对应的数字大,深度值相同的节点分配相同的数字。
例如,所述控制器确定所述第一转发路径为R7→R6→R4,所述控制器按照上述方法计算出R7的深度值为2,R6的深度值为1后,为R7和R6各分配一个数字a和b作为所述节点R7和R6的深度值,其中,a>b。
任何基于本发明思想的,可轻易想到的对所述节点进行深度值设定的实施方式,都在本发明的保护范围之内。
503、所述控制器向所述第一转发路径上除了所述第二节点之外的每个节点发送转发表项,其中,所述控制器向节点X发送的转发表项的时间晚于向节点Y发送的转发表项的时间,节点X的深度值大于节点Y的深度值。
在确定了所述第一转发路径除所述第二节点的各个节点的深度值后,所述控制器按照所述第一转发路径除所述第二节点的各个节点的深度值下发所述各个节点的转发表项。具体的,所述控制器向节点X发送的转发表项的时间晚于向节点Y发送的转发表项的时间。节点X的深度值大于节点Y的深度值。所述节点X与所述节点Y都是所述第一转发路径上除所述第二节点之外的转发节点。
举例来说,所述控制器根据图3b所示的新转发路径确定所述第一节点到所述第二节点的第一转发路径为R7→R6→R4,确定所述第一转发路径中除所述第二节点的其他节点的深度值:节点R6的深度值为1,节点R7的深度值为2。所述控制器下发深度值较大的节点R7的转发表项的时间晚于下发深度值较小的节点R6的转发表项。
即,所述控制器先下发深度值为1的节点R6的转发表项,所述转发表项中包含目的地的IP地址和所述节点R6在所述第一转发路径的下一跳,即也是节点R4的IP地址,。所述节点R6接收到所述转发表项后将所述转发表项加载至自身的转发平面;。所述控制器下发完所述节点R6的转发表项后,再下发深度值为2的节点R7的转发表项,所述转发表项包含所述目的地的IP地址,和所述节点R7在所述第一转发路径的下一跳节点,即节点R6的IP地址,。所述节点R7接收到所述转发表项后将所述转发表项加载至自身转发平面。
这样,所述第一转发路径上各个节点的转发表项加载完成,图3b中的各个节点都有到达出口节点R4的路径。虽然有些路径还未达到最优路径,但各个节点的业务得到恢复,在避免流量环路的同时提高了路由收敛速度。
具体的,所述控制器在向所述第一转发路径中除所述第二节点之外的节点A下发转发表项的同时,也可以向所述节点A下发所述节点A下发所述节点A的负载分担项和/或备份路径转发表项。
需要说明的是,所述控制器根据新转发路径确定所述第一节点到所述第二节点的第一转发路径。结合图3b,所述控制器确定的所述第一节点R7到所述第二节点R4的第一转发路径为R7→R6→R4,当所述节点R4、R6和R7依次将接收到的控制器下发的转发表项加载至转发平面后,所述图3b中各个转发节点的业务得到恢复。但是,还有一些路径没有更新,一些节点到所述第二节点的路径不是最优路径。此时,为使路由达到所述新转发路径所示的最优状态,所述控制器向所述新转发路径中除所述第二节点之外的每个节点发送转发表项,所述转发表项包括目的地的IP地址和所述每个节点的下一跳节点的IP地址。
为避免流量环路,所述控制器在下发新转发路径中除所述第一转发路径节点的转发表项时,也可以先计算每个节点的深度值,再按照每个节点深度值由小到大的顺序下发每个节点的转发表项。
可以将所述控制器根据深度值下发所述第一转发路径中除所述第二节点外的其他节点的转发表项的过程看作第一阶段,将所述控制器在完成所述第一阶段后,计算新转发路径中除所述第二节点之外的其他节点的深度值以及按照所述深度值下发所述新转发路径中除所述第二节点之外的其他节点的转发表项的过程看作第二阶段。
具体的,所述新转发路径中其他路径节点的深度值就是所述其他路径节点到出口节点的所有路径中跳数最大的路径的跳数,具体计算方法如下:
在一个新的转发路径中,将所有节点的深度值设置为0,用集合A代表所有的出口节点集合,用集合B代表除出口节点以外的其他节点的集合;
对于集合B中的任一节点,在新转发路径中找到该节点到集合A中所有节点的路径,判断所述路径中所有出边的对端节点都在集合A中,则将所述节点的深度值加1。在所有节点判断完成一次后将所有该类节点将其从集合B转移到集合A中,同时将B集合中其他节点的深度值加1。举例来说,结合图3b,集合B中的节点R6到结合A中的出口节点R4的路径只有R6→R4这一条路径,R6→R4这条路径的对端节点就是R4,在结合A中,则节点R6的深度值就是0+1=1。
判断所述路径中所有出边的对端节点不全在集合A中,则保持该节点在集合B中不变,直到其所有对边节点都在A中为止。
举例来说,结合图3b,示例性的描述了当SDN网络中的出口节点发生变化,从原出口节点R7变为新出口节点R4后控制器计算出的新转发路径,其中,所述节点R4在所述新转发路径中所述承担的出口节点的角色与所述节点R7在原转发路径中所承担的出口节点的角色相同。当第一转发路径R7→R6→R4中所有节点的转发表项下发完成后,该网络中的业务已经恢复,但有些路径还不是最优路径,需要进行优化,这时,需要计算所述新转发路径中除所述第二节点之外的所有节点的深度值。
首先,将图3b所示的网络中的所有节点的深度值设为0,将出口节点R4放在集合A中,将除出口节点以外的其他节点放在集合B中,即:A={R4},B={R3,R5,R6,R7};
判断集合B中的节点到集合A中的节点的所有路径,R3到R4的路径为rt4,则R3到R4的路径中的边只有rt4,rt4的出边的对端节点为R4,R4在集合A中,所以将R3的深度值加1,即此时R3的深度值为0+1=1。
R5到R4的路径为R5→R3→R4以及R5→R6→R4,则R5到R4的路径的边有rt3-rt6,其出边的对端节点有R4,R3,R6,这三个节点只有R4在集合A中,则保持R5在集合B中不变;
R6到R4的路径为rt5,则R6到R4的路径中的边只有rt5,rt5的出边的对端节点为R4,R4在集合A中,所以将R6的深度值加1,即此时R6的深度值为0+1=1。
R7到R4的路径有三条,为R7→R6→R4、R7→R5→R6→R4和R7→R5→R3→R4,其路径的出边的对端节点有R3-R6,这四个节点只有R4在集合A中,则保持R7在集合B中不变。
这样,第一次判断完成,R3和R6到出口节点R4的所有路径的出边的对端节点都在集合A中,因此将R3和R6的深度值加1,即R3和R6的深度值从0变为1,这时,将R3和R6从集合B转移到集合A中,同时将B中剩余的节点R5和R7的深度值加1;
再次对R5和R7的出边的对端节点做判断:
R5到集合A中三个节点R4、R3和R6的所有路径的边为rt3-rt6,其对端节点都在集合A中,因此将R5的深度值加1,即此时R5的深度值为1+1=2;
R7到集合A中三个节点R4、R3和R6的所有路径的边为rt1-rt6,但其中rt1的对端节点为R5,R5不在集合A中,因此保持R7在集合B中不变。
这样,第二次判断完成,R5到集合A中的所有节点的所有路径的出边的对端节点都在集合A中,因此将R5的深度值加1,即R5的深度值由1变为2,这时,将R5从集合B转移到集合A中,同时将集合B中剩余的节点R7的深度值加1;
再次对集合B中的剩余节点R7的出边的对端节点做判断,R7到集合A中四个节点R3-R6的所有路径的边为rt1-rt6,所有出边的对端节点为R3-R6,都在集合A中,因此将R7的深度值加1,即R7的深度值从2变为3,同时将R7从集合B转移到集合A中。
这样,经过三次判断,新的转发路径中除所述第二节点的所有的节点的深度值都已经算出,即,R3和R6的深度值为1,R5的深度值为2,R7的深度值为3。
但是,考虑到在下发第一转发路径节点深度值时,R6的深度值为1,R7的深度值为2,为避免其他路径节点的转的深度值与第一转发路径节点的深度值相同,导致转发表项的下发发生顺序混乱,可以把所有其他路径节点的深度值在上述计算出的结果之上,加上所述第一转发路径除了所述第二节点之外的其他节点的最大深度值。
例如,在上述计算出每个节点的深度值为R3和R6的深度值为1,R5的深度值为2,R7的深度值为3,为避免与所述第一转发路径每个节点的深度值相同,在此基础上R3-R7每个节点的深度值都需要在上述计算出的深度值基础上加上第一转发路径的最大深度值2,则此时所有节点的深度值为:R3和R6的深度值为3,R5的深度值为4,R7的深度值为5。
通过上述方法,可以得到新转发路径中除所述第二节点之外的所有节点的深度值。
对于图3b所示的新的转发路径,可以较直观的获得每个节点的深度值,但是实际的SDN网络较为复杂,采用本方案提供的深度值的计算方法可以准确的计算出每个节点的深度值。
当然,对于深度值的计算,本领域技术人员还可以采用本领域的其他公知技术获得,凡是基于本发明思路可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
当所述第一转发路径的各个节点的转发表项已下发至自身的转发平面。控制器在确定了图3b所示的新转发路径中的各个节点的深度值:R3和R6的深度值为3,R5的深度值为4,R7的深度值为5之后,所述控制器按照所述新转发路径中除所述第二节点之外的各个节点的深度值确定下发转发表项的先后顺序:所述控制器先下发深度值为3的节点R3和R6的转发表项。其中,所述节点R3的转发表项包含所述目的地的IP地址和所述节点R3的下一跳节点,即节点R4的IP地址。所述节点R6的转发表项包含所述目的地的IP地址和所述节点R6的下一跳节点,即节点R4的IP地址。所述节点R3和节点R6在接收到所述转发表项后将其加载至自身转发平面。
具体的,由于所述节点R6在所述控制器下发所述第一转发路径中除所述第二节点之外的其他节点的转发表项时,就已把包含所述R6的目的地的IP地址和所述R6在所述第一转发路径的下一跳,即R4的IP地址的转发表项加载完成,所述控制器在第二阶段可以不向所述R6下发转发表项或所述节点R6在第二阶段接收到所述控制器发送的转发表项后不将其加载至自身转发平面。并且,所述控制器在下发深度值相同的节点R3和节点R6的转发表项时没有先后顺序,可以并行下发,以提高路由收敛速度。
所述控制器再下发深度值为4的节点R5的转发表项,所述转发表项包含所述目的地的IP地址和所述节点R5的下一跳节点,即节点R3和节点R6的IP地址。所述节点R5将接收到的转发表项加载至自身转发平面;
所述控制器再下发深度值为5的节点R7的转发表项,所述转发表项包含所述节点R7的目的地的IP地址和所述节点R7的下一跳节点,即节点R5和节点R6的IP地址。所述节点R7将接收到的转发表项加载至自身转发平面。具体的,所述节点R7已将包含所述目的地的IP地址和所述节点R7在所述第一转发路径的下一跳,即节点R6的IP地址的转发表项加载至自身转发平面,控制器可以在第二阶段向R7发送包含目的地的IP地址和所述节点R7的下一跳为R5的转发表项,或所述节点R7接收到的所述控制器发送的转发表项为所述目的地的IP地址和所述节点R7的所有下一跳的IP地址,但所述节点R7所加载的转发表项只包含所述目的地的IP地址和所述R7的下一跳的IP地址,其中,所述下一跳不包含所述R7在所述第一转发路径上的下一跳R6。
需要说明的是,在所述第二阶段,为减少控制器和转发节点的负载,避免同一路径的重复更新带来的资源浪费,本发明实施例提供如下解决方案:
对于在新转发路径中除所述第二节点外的节点X,所述控制器判断所述节点X在所述第一转发路径上,且所述节点X有唯一的下一跳在所述第一转发路径上。所述控制器在第二阶段可以不向所述节点X发送所述节点X的转发表项,或所述节点X在第二阶段接收到所述控制器发送的转发表项,但不将其加载至自身转发平面;
所述控制器判断所述节点X既在所述第一转发路径,且所述节点X有不止一个下一跳节点,所述不止一个下一跳节点中有一个节点在所述第一转发路径上。所述控制器向所述节点X发送转发表项,所述转发表项包含目的地的IP地址和所述节点X在新转发路径中的下一跳的IP地址,所述下一跳不包含所述节点X在所述第一转发路径的下一跳。或所述控制器向所述节点X下发的转发表项包含所述目的地的IP地址和所述节点X在新转发路径中所有的下一跳节点的IP地址,但所述节点X加载至自身转发平面的转发表项只包含目的地的IP地址和下一跳的IP地址,所述下一跳不包含所述节点X在所述第一转发路径的下一跳。这种转发表的加载方式为增量式加载,即已经更新过的路径不再重复更新。
这样,图3b所示的新转发路径中的所有转发节点都按照所述新转发路径进行流量的转发,路由达到最优状态。
本发明实施例提供了一种发送转发表项的方法,在该方法中,第一节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第一节点的转发表项。控制器向第一转发路径上除了第二节点之外的每个节点发送用于指导沿着第一转发路径转发到达目的地的流量的转发表项。第一转发路径上除了第二节点之外的每个节点能够根据接收到的转发表项将第一节点接收到的流量逐步转发至第二节点。上述技术方案中,控制器只需要更新控制器管辖的网络中第一转发路径上除了第二节点之外的每个节点的转发表项即可,不需要更新控制器管辖的网络中的其他节点的转发表项,因此,上述技术方案有助于提高路由收敛的速度。
并且,所述控制器根据所述第一转发路径上除了所述第二节点之外的其他节点的深度值,按照一定的顺序向所述第一转发路径上除了所述第二节点之外的其他节点发送转发表项,减少了环路的产生。
因此,通过该方法,不但有助于提高路由的收敛速度,并且可以减少环路的产生。
基于上述SDN网络,图6为本发明实施例提供的一种发送转发表项的方法的示意图。图6所示的方法对应的实施例是在图4所示的方法对应的实施例的基础上,提供的又一种发送转发表项的方法。图6所示的方法的执行主体为控制器。结合图6,该方法包括:
601、控制器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定在原转发路径上所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,在所述原转发路径上所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述新转发路径中承担出口节点的角色。
具体的,步骤601的详细实施过程可参见上述实施例中的步骤401,本发明实施例对此不再赘述。
602、所述控制器确定所述第一转发路径上除了所述第二节点之外的每个节点的深度值,其中,节点B的深度值为沿着所述第一转发路径,所述节点B到所述第二节点的跳数,所述节点B为所述第一转发路径上的节点。
当所述控制器确定了所述第一节点到所述第二节点的第一转发路径后,若所述第一转发路径上除了所述第二节点之外的其他节点加载转发表项的先后顺序不正确,可能会出现流量环路的问题,导致数据的丢包。
为避免流量环路现象,所述第一转发路径中除所述第二节点外的其他节点的转发表项需要按照一定的顺序将自身的转发表项加载至转发平面。
所述控制器需要按照一定的顺序下发所述第一转发路径上除了所述第二节点之外的每个节点的转发表项。
具体的,所述控制器可以通过设定所述第一转发路径上除所述第二节点外的各个节点的深度值来确定下发除所述第二节点外的各个节点的转发表项的顺序。其中,节点B的深度值为沿着所述第一转发路径,所述节点B到所述第二节点的跳数。所述节点B为所述第一转发路径上除所述第二节点的转发节点。
举例来说,结合图3e,所述控制器确定所述第一转发路径为R3→R4→R6→R7,所述控制器确定除了所述第二节点R7以外的其他节点,节点R3,节点R4和节点R6的深度值。所述节点R3沿着所述第一转发路径R3→R4→R6→R7到所述第二节点R7的跳数为3。所述节点R4沿着所述第一转发路径R3→R4→R6→R7到所述节点R7的跳数为2。所述节点R6沿着所述第一转发路径R3→R4→R6→R7到所述节点R7的跳数为1。对应的,所述节点R3,节点R4和节点R6的深度值依次为3、2、1。
603、所述控制器向所述第一转发路径上除了所述第二节点之外的每个节点发送转发表项,其中,所述控制器向节点X发送的转发表项的时间晚于向节点Y发送的转发表项的时间,节点X的深度值大于节点Y的深度值。
在确定了所述第一转发路径除所述第二节点的各个节点的深度值后,所述控制器按照所述第一转发路径除所述第二节点的各个节点的深度值下发所述各个节点的转发表项。具体的,所述控制器向节点X发送的转发表项的时间晚于向节点Y发送的转发表项的时间。节点X的深度值大于节点Y的深度值。所述节点X与所述节点Y都是所述第一转发路径上除所述第二节点之外的转发节点。
举例来说,结合图3e,所述控制器确定所述第一转发路径为R3→R4→R6→R7,并确定所述第一转发路径上除R7外的其他节点,即节点R3,节点R4和节点R6的深度值依次为3、2、1。所述控制器下发节点R3,节点R4和节点R6的先后顺序是:先下发所述节点R6的转发表项,再下发所述节点R4的转发表项,最后下发所述节点R3的转发表项。
具体的,所述控制器先下发深度值为1的节点R6的转发表项,所述转发表项包含所述目的地的IP地址,和所述节点R6在所述第一转发路径的下一跳节点,即节点R7的IP地址。所述节点R6接收到所述控制器发送的转发表项后,将所述转发表项加载至自身转发平面。
所述控制器再下发深度值为2的节点R4的转发表项,所述转发表项包含所述目的地的IP地址,和所述节点R4在所述第一转发路径的下一跳节点,即节点R6的IP地址。所述节点R4接收到所述控制器发送的转发表项后,将所述转发表项加载至自身转发平面。
所述控制器最后下发深度值为3的节点R3的转发表项,所述转发表项包含所述目的地的IP地址,和所述节点R3在所述第一转发路径的下一跳节点,即节点R4的IP地址。所述节点R3接收到所述控制器发送的转发表项后,将所述转发表项加载至自身转发平面。
这样,所述第一转发路径的各个节点的转发表项加载完成,所述图3e中的各个节点都有到达所述第二节点R7的路径。虽然有些路径还未达到最优路径,但各个节点的业务得到恢复,在避免流量环路的同时提高了路由收敛速度。
具体的,所述控制器在向所述第一转发路径中除所述第二节点之外的节点A下发转发表项的同时,也可以向所述节点A下发所述节点A下发所述节点A的负载分担项和/或备份路径转发表项。
当然,根据图3e所述的新转发路径和图3f所示的所述第一转发路径节点加载所述控制器下发的转发表项至自身转发平面后的转发路径,虽然各个节点的业务都已恢复,但还有部分路径没有更新,路由没有达到最优。此时所述控制器计算图3e中所有节点的深度值:节点R5和节点R6的深度值为4,节点R4的深度值为5,节点R3的深度值为6。所述控制器按照深度值由小到大的顺序依次下发各个节点的转发表项,深度值相同的节点的转发表项可以并行下发,从而提高路由的收敛速度。
具体的,可以将所述控制器根据深度值下发所述第一转发路径中除所述第二节点外的其他节点的转发表项的过程看作第一阶段,将所述控制器在完成所述第一阶段后,计算新转发路径中除所述第二节点之外的其他节点的深度值以及按照所述深度值下发所述新转发路径中除所述第二节点之外的其他节点的转发表项的过程看作第二阶段。
在第二阶段,所述控制器先下发深度值为4的节点R5和节点R6的转发表项,所述节点R5的转发表项包含所述目的地的IP地址和所述节点R5的下一跳,即节点R7的IP地址。所述节点R6的转发表项包含所述目的地的IP地址和所述节点R6的下一跳,即节点R7的IP地址。由于所述转发节点R6已将包含所述目的地的IP地址和所述节点R6的下一跳R7的IP地址的转发表项加载至自身转发平面,所述控制器在第二阶段可以不向所述节点R6发送转发表项,或所述节点R6在第二阶段不将接收到的转发表项进行加载。并且,所述控制器在下发所述节点R5的节点R6的转发表项时,没有先后顺序,为提高路由收敛速度,可以并行下发。
所述控制器再下发深度值为5的节点R4的转发表项,所述节点R4的转发表项包含所述目的地的IP地址和所述节点R4的下一跳,即节点R5和节点R6的IP地址。具体的,所述节点R4在第一阶段已将包含所述目的地的IP地址和所述节点R4的下一跳R6的IP地址的转发表项加载至自身转发平面。所述控制器在第二阶段可以向所述节点R4下发包含目的地的IP地址和所述节点R4的下一跳R5的IP地址的转发表项。
所述控制器最后下发深度值为6的节点R3的转发表项,所述节点R3的转发表项包含所述目的地的IP地址和所述节点R3的下一跳,即节点R4的IP地址。具体的,所述节点R3在第一阶段已将包含所述目的地的IP地址和所述节点R3的下一跳R4的IP地址的转发表项加载至自身转发平面。所述控制器在第二阶段可以不向所述节点R3发送转发表项,或所述节点R3在第二阶段不将接收到的转发表项进行加载。
需要说明的是,在第二阶段,为减少控制器和转发节点的负载,避免同一路径的重复更新带来的资源浪费,本发明实施例提供如下解决方案:
对于在新转发路径中除所述第二节点外的节点X,所述控制器判断所述节点X在所述第一转发路径上,且所述节点X有唯一的下一跳在所述第一转发路径上。所述控制器在第二阶段可以不向所述节点X发送所述节点X的转发表项,或所述节点X在第二阶段接收到所述控制器发送的转发表项,但不将其加载至自身转发平面;
所述控制器判断所述节点X既在所述第一转发路径,且所述节点X有不止一个下一跳节点,所述不止一个下一跳节点中有一个节点在所述第一转发路径上。所述控制器向所述节点X发送转发表项,所述转发表项包含目的地的IP地址和所述节点X在新转发路径中的下一跳的IP地址,所述下一跳不包含所述节点X在所述第一转发路径的下一跳,或所述控制器向所述节点X下发的转发表项包含所述目的地的IP地址和所述节点X在新转发路径中所有的下一跳节点的IP地址,但所述节点X加载至自身转发平面的转发表项只包含目的地的IP地址和下一跳的IP地址,所述下一跳不包含所述节点X在所述第一转发路径的下一跳。这种转发表的加载方式为增量式加载,即已经更新过的路径不再重复更新。
这样,图3e所示的新转发路径中的所有转发节点都按照所述新转发路径进行流量的转发,路由达到最优状态。
本发明实施例提供了一种发送转发表项的方法,在该方法中,第二节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第二节点的转发表项。控制器向第一转发路径上除了第二节点之外的每个节点发送用于指导沿着第一转发路径转发到达目的地的流量的转发表项。第一转发路径上除了第二节点之外的每个节点能够根据接收到的转发表项将第一节点接收到的流量逐步转发至第二节点。上述技术方案中,控制器只需要更新控制器管辖的网络中第一转发路径上除了第二节点之外的每个节点的转发表项即可,不需要更新控制器管辖的网络中的其他节点的转发表项,因此,上述技术方案有助于提高路由收敛的速度。
并且,所述控制器根据所述第一转发路径上除了所述第二节点之外的其他节点的深度值,按照一定的顺序向所述第一转发路径上除了所述第二节点之外的其他节点发送转发表项,减少了环路的产生。
因此,通过该方法,不但有助于提高路由的收敛速度,并且可以减少环路的产生。
基于上述SDN网络,图7为本发明实施例提供的一种发送转发表项的方法的示意图。图7所示的方法对应的实施例是对在图2所示的方法对应的实施例的基础上,提供的又一种发送转发表项的方法。图7所示的方法的执行主体是控制器。结合图7,该方法包括:
701、控制器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
702、所述控制器确定所述第一转发路径上除了所述第二节点之外的每个节点的深度值,其中,节点C的深度值为沿着所述第一转发路径,所述节点C到所述第二节点的跳数,所述节点C为所述第一转发路径上的节点。
具体的,步骤701和步骤702的详细实施过程请参见上述实施例中的步骤501和步骤502,本发明实施例对此不再赘述。
703、所述控制器向所述第一转发路径上的除了所述第二节点之外的每个节点发送深度值,其中,所述控制器向节点W发送的深度值为所述节点W的深度值。
所述第一转发路径上除了所述第二节点之外的其他节点加载转发表项的先后顺序不正确,会导致流量环路的现象。为避免这一现象,所述控制器确定所述第一转发路径上除了所述第二节点之外的各个节点的深度值,所述控制器在下发所述节点的转发表项的同时下发所述节点的深度值。所述第一转发路径上除了所述第二节点之外的各个节点接收到所述控制器发送的转发表项和深度值后,按照深度值依次将自身转发表项加载至转发平面,从而避免流量环路的产生。
举例来说,结合图3b,所述控制器根据新转发路径确定第一转发路径为R7→R6→R4,除了第二节点R4之外的其他节点的深度值:R6的深度值为1,R7的深度值为2。所述控制器向所述节点R6下发所述节点R6的转发表项和所述节点R6的深度值1。所述节点R6的转发表项包含所述节点R6的目的地的IP地址和所述节点R6在所述第一转发路径的下一跳节点,即节点R4的IP地址。
所述控制器向所述节点R7下发所述节点R7的转发表项和所述节点R7的深度值2。所述节点R7的转发表项包含所述节点R7的目的地的IP地址和所述节点R7在所述第一转发路径的下一跳节点,即节点R6的IP地址。
具体的,所述控制器在下发所述节点R6的深度值和所述节点R6的转发表项,与下发所述节点R7的深度值和所述节点R7的转发表项之间没有先后顺序。可以先向R6下发所述R6的深度值和所述R6的转发表项,或先向R7下发所述R7的深度值和所述R7的转发表项。为提高收敛速度,也可以并行向所述节点R6发送所述R6的深度值和所述R6的转发表项,和向R7发送所述R7的深度值和所述R7的转发表项。
所述节点R6和所述节点R7接收到所述转发表项后,暂不将所述转发表项加载至自身转发平面,而是根据深度值信息,判断在满足一定触发条件后,再将接收到的转发表项加载至转发平面。
当所述第一转发路径节点都将接收到的转发表项加载至自身转发平面后,所述第一转发路径得到更新。图3b所示的新转发路径中的每个节点都有到达出口节点的路径,业务得到恢复。
具体的,所述控制器在向所述第一转发路径中除所述第二节点之外的转发节点A下发转发表项和深度值的同时,可以向所述转发节点A发送所述节点A的负载分单项和/或备份路径转发表项。
当所述第一转发路径节点将自身转发表项加载至自身转发平面完成后,新转发路径中的所有节点的业务得到恢复,但有些路径还不是最优路径,需要进行进一步的更新。所述控制器计算新转发路径中除所述第二节点之外的所有节点的深度值,并向除所述第二节点之外的所有节点下发转发表项和深度值。当所述新转发路径中除所述第二节点之外的所有节点按照深度值依次下发自身的转发表项至转发平面,所述新转发路径中的所有路径得到更新。
具体的,可以将所述控制器发送所述第一转发路径中除所述第二节点外的其他节点的转发表项和深度值的过程看作第一阶段,将所述控制器在完成所述第一阶段后,计算新转发路径中除所述第二节点之外的其他节点的深度值以及发送所述新转发路径中除所述第二节点之外的其他节点的转发表项和深度值的过程看作第二阶段。
举例来说,在所述控制器完成第一阶段后,结合新转发路径图3b,计算除所述第二节点之外的所有节点的深度值。R3和R6的深度值为3,R5的深度值为4,R7的深度值为5。
所述控制器向所述新转发路径中除所述第二节点之外的所有节点下发转发表项和深度值。具体的,所述控制器向所述节点R3、R5、R6和R7下发转发表项和深度值没有先后顺序,可以并行下发。
为避免流量环路,所述节点R3、R5、R6和R7接收到所述转发表项和深度值后,暂不将接收到的转发表项加载到自身转发平面,而是根据深度值在满足一定的触发条件后,再将自身转发表项加载至自身转发平面。
需要说明的是,在所述第二阶段,为减少控制器和转发节点的负载,避免同一路径的重复更新带来的资源浪费,本发明实施例提供如下解决方案:
对于在新转发路径中除所述第二节点外的节点X,所述控制器判断所述节点X在所述第一转发路径上,且所述节点X有唯一的下一跳在所述第一转发路径上。所述控制器在第二阶段可以不向所述节点X发送所述节点X的转发表项,或所述节点X在第二阶段接收到所述控制器发送的转发表项,但不将其加载至自身转发平面;
所述控制器判断所述节点X既在所述第一转发路径,且所述节点X有不止一个下一跳节点,所述不止一个下一跳节点中有一个节点在所述第一转发路径上。所述控制器向所述节点X发送转发表项,所述转发表项包含目的地的IP地址和所述节点X在新转发路径中的下一跳的IP地址,所述下一跳不包含所述节点X在所述第一转发路径的下一跳。或所述控制器向所述节点X下发的转发表项包含所述目的地的IP地址和所述节点X在新转发路径中所有的下一跳节点的IP地址,但所述节点X加载至自身转发平面的转发表项只包含目的地的IP地址和下一跳的IP地址,所述下一跳不包含所述节点X在所述第一转发路径的下一跳。这种转发表的加载方式为增量式加载,即已经更新过的路径不再重复更新。
当所述新转发路径中除所述第二节点外的其他节点根据深度值信息,按照一定的顺序将转发表项加载至自身转发平面后,所述新转发路径收敛完成,路由达到最优。
本发明实施例提供了一种发送转发表项的方法,在该方法中,第一节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第一节点的转发表项。控制器向第一转发路径上除了第二节点之外的每个节点发送用于指导沿着第一转发路径转发到达目的地的流量的转发表项。第一转发路径上除了第二节点之外的每个节点能够根据接收到的转发表项将第一节点接收到的流量逐步转发至第二节点。由于上述技术方案中,控制器只需要更新控制器管辖的网络中第一转发路径上除了第二节点之外的每个节点的转发表项即可,不需要更新控制器管辖的网络中的其他节点的转发表项,因此,上述技术方案有助于提高路由收敛的速度。
并且,所述控制器在向所述第一转发路径上除了所述第二节点之外的其他节点发送转发表项的同时,还向所述节点发送所述节点发送所述节点所对应的深度值,以使得所述第一转发路径上除了所述第二节点之外的其他节点根据所述深度值,按照一定的顺序将接收到的转发表项加载完成,从而减少了环路的产生。
因此,通过该方法,不但有助于提高路由的收敛速度,并且可以减少环路的产生。
图8为本发明实施例提供的一种发送转发表项的方法的示意图。图8所示的方法对应的实施例是在图4所示的方法对应的实施例的基础上,提供的又一种发送转发表项的方法,结合图8,该方法包括:
801、控制器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定在原转发路径上所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,在所述原转发路径上所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述新转发路径中承担出口节点的角色。
802、所述控制器确定所述第一转发路径上除了所述第二节点之外的每个节点的深度值,其中,节点C的深度值为沿着所述第一转发路径,所述节点C到所述第二节点的跳数,所述节点C为所述第一转发路径上的节点。
具体的,步骤801和步骤802的详细实施过程可参见上述实施例中的步骤601和步骤602,本发明实施例对此不再赘述。
803、所述控制器向所述第一转发路径上的除了所述第二节点之外的每个节点发送深度值,其中,所述控制器向节点W发送的深度值为所述节点W的深度值。
所述第一转发路径上除了所述第二节点之外的其他节点加载转发表项的先后顺序不正确,会导致流量环路的现象。为避免这一现象,所述控制器确定所述第一转发路径上除了所述第二节点之外的各个节点的深度值。所述控制器在下发所述节点的转发表项的同时下发所述节点的深度值。所述第一转发路径上除了所述第二节点之外的各个节点接收到所述控制器发送的转发表项和深度值后,按照深度值依次将自身转发表项加载至转发平面,从而避免流量环路的产生。
举例来说,结合图3e,所述控制器根据新转发路径确定第一转发路径为R3→R4→R6→R7,除了第二节点R7之外的其他节点的深度值:R6的深度值为1,R4的深度值为2,R3的深度值为3。所述控制器向所述节点R6下发所述节点R6的转发表项和所述节点R6的深度值1。所述节点R6的转发表项包含所述节点R6的目的地的IP地址和所述节点R6在所述第一转发路径的下一跳节点,即节点R4的IP地址。
所述控制器向所述节点R4下发所述节点R4的转发表项和所述节点R4的深度值2。所述节点R4的转发表项包含所述节点R4的目的地的IP地址和所述节点R4在所述第一转发路径的下一跳节点,即节点R6的IP地址。
所述控制器向所述节点R3下发所述节点R3的转发表项和所述节点R3的深度值3。所述节点R3的转发表项包含所述节点R3的目的地的IP地址和所述节点R3在所述第一转发路径的下一跳节点,即节点R4的IP地址。
具体的,所述控制器在下发所述节点R6的深度值和所述节点R6的转发表项,与下发所述节点R4的深度值和所述节点R4的转发表项和所述节点R3的深度值和所述节点R3的转发表项之间没有先后顺序。可以依次下发R3、R4和R6的转发表项和深度值,为提高路由收敛速度,也可以并行下发,本发明实施例对此不做限定。
为避免流量环路,所述节点R6、节点R4和所述节点R3接收到所述转发表项后,暂不将所述转发表项加载至自身转发平面,而是根据深度值信息,在满足一定触发条件后,再将接收到的转发表项加载至自身转发平面。
当所述第一转发路径节点都将接收到的转发表项加载至自身转发平面后,所述第一转发路径得到更新。图3e所示的新转发路径中的每个节点都有到达出口节点的路径,业务得到恢复。
具体的,所述控制器在向所述第一转发路径中除所述第二节点之外的转发节点A下发转发表项和深度值的同时,可以向所述转发节点A发送所述节点A的负载分单项和/或备份路径转发表项。
当所述第一转发路径节点将自身转发表项加载至自身转发平面完成后,新转发路径中的所有节点的业务得到恢复,但有些路径还不是最优路径,需要进行进一步的更新。所述控制器计算新转发路径中除所述第二节点之外的所有节点的深度值,并向除所述第二节点之外的所有节点下发转发表项和深度值。当所述新转发路径中除所述第二节点之外的所有节点按照深度值依次下发自身的转发表项至转发平面,所述新转发路径中的所有路径得到更新。
具体的,可以将所述控制器发送所述第一转发路径中除所述第二节点外的其他节点的转发表项和深度值的过程看作第一阶段,将所述控制器在完成所述第一阶段后,计算新转发路径中除所述第二节点之外的其他节点的深度值以及发送所述新转发路径中除所述第二节点之外的其他节点的转发表项和深度值的过程看作第二阶段。
举例来说,在所述控制器完成第一阶段后,结合新转发路径图3e,计算除所述第二节点之外的所有节点的深度值。R5和R6的深度值为4,R4的深度值为5,R3的深度值为6。
所述控制器向所述新转发路径中除所述第二节点之外的所有节点下发转发表项和深度值。具体的,所述控制器向所述节点R3、R4、R5和R6下发转发表项和深度值没有先后顺序,可以并行下发。
为避免流量环路,所述节点R3、R4、R5和R6接收到所述转发表项和深度值后,暂不将接收到的转发表项加载到自身转发平面,而是根据深度值在满足一定的触发条件后,再将自身转发表项加载至自身转发平面。
需要说明的是,在第二阶段,为减少控制器和转发节点的负载,避免同一路径的重复更新带来的资源浪费,本发明实施例提供如下解决方案:
对于在新转发路径中除所述第二节点外的节点X,所述控制器判断所述节点X在所述第一转发路径上,且所述节点X有唯一的下一跳在所述第一转发路径上。所述控制器在第二阶段可以不向所述节点X发送所述节点X的转发表项,或所述节点X在第二阶段接收到所述控制器发送的转发表项,但不将其加载至自身转发平面;
所述控制器判断所述节点X既在所述第一转发路径,且所述节点X有不止一个下一跳节点,所述不止一个下一跳节点中有一个节点在所述第一转发路径上。所述控制器向所述节点X发送转发表项,所述转发表项包含目的地的IP地址和所述节点X在新转发路径中的下一跳的IP地址,所述下一跳不包含所述节点X在所述第一转发路径的下一跳,或所述控制器向所述节点X下发的转发表项包含所述目的地的IP地址和所述节点X在新转发路径中所有的下一跳节点的IP地址,但所述节点X加载至自身转发平面的转发表项只包含目的地的IP地址和下一跳的IP地址,所述下一跳不包含所述节点X在所述第一转发路径的下一跳。这种转发表的加载方式为增量式加载,即已经更新过的路径不再重复更新。
当所述新转发路径中除所述第二节点外的其他节点根据深度值信息按照一定的顺序将转发表项加载至自身转发平面后,所述新转发路径收敛完成,路由达到最优。
本发明实施例提供了一种发送转发表项的方法,在该方法中,第二节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第二节点的转发表项。控制器向第一转发路径上除了第二节点之外的每个节点发送用于指导沿着第一转发路径转发到达目的地的流量的转发表项。第一转发路径上除了第二节点之外的每个节点能够根据接收到的转发表项将第一节点接收到的流量逐步转发至第二节点。由于上述技术方案中,控制器只需要更新控制器管辖的网络中第一转发路径上除了第二节点之外的每个节点的转发表项即可,不需要更新控制器管辖的网络中的其他节点的转发表项,因此,上述技术方案有助于提高路由收敛的速度。
并且,所述控制器在向所述第一转发路径上除了所述第二节点之外的其他节点发送转发表项的同时,还向所述节点发送所述节点发送所述节点所对应的深度值,以使得所述第一转发路径上除了所述第二节点之外的其他节点根据所述深度值,按照一定的顺序将接收到的转发表项加载完成,从而减少了环路的产生。
因此,通过该方法,不但有助于提高路由的收敛速度,并且可以减少环路的产生。
基于上述SDN网络,图9为本发明实施例提供的一种转发表项的加载方法的示意图。该方法的执行主体为转发节点。图9所示的方法所涉及的技术特征可以参考图2所示的方法所对应的实施例。结合图9,该方法包括:
901、转发节点接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
当控制器根据新转发路径确定第一节点到第二节点的所述第一转发路径后,所述控制器向所述第一转发路径上的除第二节点之外的转发节点发送用于指导所述转发节点转发到目的地的流量的第一转发表项。所述转发节点接收所述第一转发表项,其中,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色。在所述新转发路径中,所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色,并且,所述原转发路径与所述新转发路径都承载在所述控制器管辖的网络上。
例如,由于AS发布的路由发生变化,如图3a中,所述第一节点为转发节点R7,在原转发路径中将流量转发至外部网络的目的地1的出口节点R7被替换为转发节点R4。转发节点R4作为第二节点,R4作为新转发路径中的出口节点将流量转发至所述目的地1。
当将流量转发至所述目的地的出口节点发生变化时,所述控制器生成新转发路径。在转发节点R4承担所述转发节点R7在原转发路径中作为出口节点的角色后,所述控制器生成新转发路径,所述新转发路径如图3b所示。
所述控制器根据所述新转发路径确定一条第一节点R7到第二节点R4的路径作为第一转发路径。例如,所述控制器确定R7→R6→R4为所述第一转发路径。
所述第二节点R4的转发表项由其他设备,例如用户边缘设备(customer edge,CE)优先下发。所述第二节点接收到所述第二节点的转发表项后,将所述转发表项加载至所述第二节点转发平面。
当所述第二节点的转发表项加载完成之后,所述控制器向所述第一转发路径R7→R6→R4中除所述第二节点R4之外的其他节点,即R6和R7分别下发所述节点R6和R7的第一转发表项。所述第一转发表项是用于指导所述转发节点R6和R7转发到达目的地的流量的第一转发表项。到达目的地的流量将被沿着第一转发路径R7→R6→R4传输。
所述转发节点R6和R7接收所述控制器发送的所述第一转发表项,所述节点R6到达目的地的流量将沿着R6→R4进行传输,所述节点R7到达目的地的流量将沿着R7→R6→R4进行传输。
902、所述转发节点将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。
当所述第一转发路径的除所述第二节点之外的转发节点接收到所述控制器发送的所述用于指导所述转发节点转发到达目的地的流量的第一转发表项后,所述转发节点将所述第一转发表项加载到所述转发节点的转发平面。
具体的,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。
举例来说,结合图3b所述第一转发路径上的节点R6接收到的所述第一转发表项包含所述R6的目的地的IP地址,和所述R6在所述第一转发路径R7→R6→R4的下一跳,即节点R4的IP地址。所述第一转发路径上的节点R7接收到的所述第一转发表项包含所述R7的目的地的IP地址和所述节点R7在所述第一转发路径R7→R6→R4的下一跳,即节点R6的IP地址。
所述第一转发路径上的所述第二节点首先将所述第二节点的转发表项加载到自身的转发平面。当所述第一转发路径上除所述第二节点外的转发节点接收到控制器下发的所述第一转发表项并将所述第一转发表项加载至自身的转发平面后,所述第一转发路径的路由更新完成,所述第一转发路径上除所述第二节点外的其他转发节点都沿着所述第一转发路径,将流量转发至目的地。
此时,结合图3c,所有转发节点都有到达在新转发路径中承担出口节点角色的R4的单向路径,所有转发节点的业务得到恢复。
具体的,所述第一转发路径中除所述第二节点外的其他节点A还可以接收控制器发送的所述节点A的负载分担项和/或备份路径转发表项,并将其加载至自身转发平面。
本发明实施例提供了一种转发表项的加载方法,该方法包括:转发节点接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色;所述转发节点将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。上述技术方案中,第一节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第一节点的转发表项。第一转发路径上除了第二节点之外的每个节点接收控制器发送的用于指导沿着第一转发路径到达目的地的流量的转发表项,并将所述转发表项加载至转发平面。第一转发路径上除了第二节点之外的每个节点能够根据加载的转发表项将第一节点接收到流量逐步转发至第二节点。由于在上述技术方案中,只需要第一转发路径上除了所述第二节点之外的每个节点接收并加载控制器发送的转发表项即可,不需要其他节点接收并加载转发表项,因此,上述方案有助于提高路由收敛的速度。
基于上述SDN网络,图10为本发明实施例提供的一种转发表项的加载方法的示意图。该方法的执行主体为转发节点。图10所示的方法所涉及的技术特征可以通过参考图4所示所对应的实施例。结合图10,该方法包括:
1001、转发节点接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色。
当控制器根据新转发路径确定第一节点到第二节点的所述第一转发路径后,所述控制器向所述第一转发路径上的除第二节点之外的转发节点发送用于指导所述转发节点转发到目的地的流量的第一转发表项,所述转发节点接收所述第一转发表项。
其中,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径。所述新转发路径承载在被所述控制器管辖的网络上。所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的。所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径。所述原转发路径承载在所述网络上。所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色。
例如图3d中,在第一节点R3到第二节点,即出口节点R7的第二转发路径R3→R5→R7中,R3→R5的路径发生故障,所述控制器生成新转发路径。所述新转发路径如图3e所示。
所述控制器根据所述新转发路径确定一条所述第一节点到所述第二节点的路径作为第一路径。根据图3e,所述控制器确定R3→R4→R6→R7为所述第一转发路径。
所述第一转发路径中的第二节点R7的转发表项由其他设备,例如用户边缘设备(customer edge,CE)优先下发。所述第二节点R7接收到所述第二节点R7的转发表项后,将所述转发表项加载至所述第二节点R7的转发平面。
当所述第二节点的转发表项加载完成之后,所述控制器向所述第一转发路径R3→R4→R6→R7中除所述第二节点R4之外的其他节点,即R3、R4和R6分别下发所述节点R3、R4和R6的第一转发表项。所述第一转发表项是用于指导所述转发节点R3、R4和R6转发到达目的地的流量的第一转发表项。到达目的地的流量将被沿着第一转发路径R3→R4→R6→R7传输。
所述转发节点R3、R4和R6接收所述控制器发送的所述第一转发表项。所述节点R3到达目的地的流量将沿着R3→R4→R6→R7传输。所述节点R4到达目的地的流量将沿着R4→R6→R7传输。所述节点R6到达目的地的流量将沿着R6→R7传输。
1002、所述转发节点将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。
当所述第一转发路径的除所述第二节点之外的转发节点接收到所述控制器发送的所述用于指导所述转发节点转发到达目的地的流量的第一转发表项后,所述转发节点将所述第一转发表项加载到所述转发节点的转发平面。
具体的,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址。所述转发节点的下一跳节点为所述第一转发路径上的节点。
举例来说,结合图3e所示的控制器生成的新转发路径,所述第一转发路径上的转发节点R3接收到的所述控制器发送的第一转发表项包含所述节点R3的目的地的IP地址和所述节点R3在所述第一转发路径R3→R4→R6→R7的下一跳,即节点R4的IP地址。所述第一转发路径上的转发节点R4接收到的所述控制器发送的第一转发表项包含所述节点R4的目的地的IP地址和所述节点R4在所述第一转发路径R3→R4→R6→R7的下一跳,即节点R6的IP地址。所述第一转发路径上的转发节点R6接收到的所述控制器发送的第一转发表项包含所述节点R6的目的地的IP地址和所述节点R6在所述第一转发路径R3→R4→R6→R7的下一跳,即节点R7的IP地址。
所述第一转发路径上的所述第二节点首先将所述第二节点的转发表项加载到自身的转发平面。当所述第一转发路径上除所述第二节点外的转发节点接收到控制器下发的所述第一转发表项并将所述第一转发表项加载至自身的转发平面后,所述第一转发路径的路由更新完成。所述第一转发路径上除所述第二节点外的其他转发节点都沿着所述第一转发路径,将流量转发至目的地。
此时,结合图3f,所有转发节点都有到达在新转发路径中承担出口节点角色的R7的单向路径。所有转发节点的业务得到恢复。
具体的,所述第一转发路径中除所述第二节点外的其他节点A还可以接收控制器发送的所述节点A的负载分担项和/或备份路径转发表项,并将其加载至自身转发平面。
本发明实施例提供了一种转发表项的加载方法,该方法包括:转发节点接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色;所述转发节点将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。上述技术方案中,第二节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第二节点的转发表项。第一转发路径上除了第二节点之外的每个节点接收控制器发送的用于指导沿着第一转发路径到达目的地的流量的转发表项,并将所述转发表项加载至转发平面。第一转发路径上除了第二节点之外的每个节点能够根据加载的转发表项将流量逐步转发至第二节点。由于在上述技术方案中,只需要第一转发路径上除了所述第二节点之外的每个节点接收并加载控制器发送的转发表项即可,不需要其他节点接收并加载转发表项,因此,上述方案有助于提高路由收敛的速度。
基于上述SDN网络,图11为本发明实施例提供的一种转发表项加载的方法的示意图,图11所示的方法对应的实施例是在图9所示的方法对应的实施例的基础上,提供的又一种转发表项加载的方法。图11所示的方法所涉及的技术特征可以参考图2所示的方法所对应的实施例,结合图11,该方法包括:
1101、转发节点接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
具体的,步骤1101的详细实施过程可参见上述实施例中的步骤901,本发明实施例对此不再赘述。
1102、所述转发节点将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。
举例来说,所述控制器根据图3b所示的新转发路径确定所述第一转发路径为R7→R6→R4。所述第一转发路径中除所述第二节点外的其他转发节点,即节点R6和节点R7接收所述控制器下发的转发表项。若所述节点R6和所述节点R7加载转发表项的先后顺序不正确,可能会导致流量环路的现象。
结合图3b,举例来说,当所述节点R6和所述节点R7接收到所述控制器发送的转发表项之后,所述节点R7将所述节点R7的转发表项加载至所述节点R7的转发平面的时间早于所述节点R6将所述节点R6的转发表项加载至所述节点R6的转发平面的时间,此时,所述节点R7按照所述转发表项将流量沿着R7→R6进行转发。即所述节点R7将流量转发至节点R6。但此时所述节点R6还未将所述节点R6的转发表项加载至所述节点R6的转发平面。结合图3a,所述节点R6依然按照原转发路径中的转发表项沿着R6→R7将流量进行转发。这样,就造成如下结果:R7将流量转发至R6,R6将流量转发至R7,造成了流量在R6和R7之间的环路现象,可能会造成数据的丢失。
具体的,为避免流量环路的产生,所述第一转发路径上除了所述第二节点的其他节点应按照一定的顺序进行转发表项的加载。例如,结合图3b,R6将所述节点R6的转发表项加载至所述节点R6的转发平面的时间应早于所述节点R7将自身的转发表项加载至所述节点R7的转发平面的时间。
具体的,所述第一转发路径除所述第二节点之外的其他转发节点接收到所述控制器发送的转发表项后,将第二节点的IP地址与所述转发节点在所述转发表项的下一跳节点的IP地址进行比较。若所述转发表项的目的地IP地址和所述转发节点在所述第一转发路径的下一跳节点的IP地址相同,则所述转发节点将所述转发表项加载至自身的转发平面。
具体的,所述第一转发路径中除所述第二节点外的其他转发节点获得所述第二节点的IP地址是本领域技术人员的公知技术,本发明实施例对此不再赘述。
举例来说,结合图3b,所述第一转发路径上除所述第二节点R4之外的其他转发节点R6和R7在接收到所述控制器发送的转发表项后,将所述第二节点的IP地址与所述转发节点在所述转发表项的下一跳节点的IP地址进行比较:所述R6在所述第一转发路径R7→R6→R4的下一跳节点的IP地址为所述节点R4的IP地址;所述R7在所述第一转发路径R7→R6→R4的下一跳节点的IP地址为所述节点R6的IP地址。所述节点R6在所述第一转发路径的下一跳的IP地址与所述第二节点的IP地址相同。所述转发节点R6将所述R6的转发表项,即第一转发表项,加载到自身转发平面。所述节点R7在所述第一转发路径的下一跳的IP地址与所述第二节点的IP地址不相同。所述转发节点R7暂不将所述R7的转发表项加载到自身转发平面。
1103、所述转发节点向所述网络中的第三节点发送转发表项加载完成消息,所述转发表项加载完成消息携带所述转发节点的IP地址,所述转发表项加载完成消息用于通告所述转发节点已经将所述第一转发表项加载到所述转发节点的转发平面,所述转发表项加载完成消息用于触发所述第三节点确定所述第三节点收到的所述控制器发送的第二转发表项中的所述第三节点的下一跳节点的IP地址与所述转发节点的IP地址相同,并基于所述确定的结果将所述第二转发表项加载到所述第三节点的转发平面,所述第二转发表项用于指导所述第三节点转发到达所述目的地的流量,所述第二转发表项包含所述目的地的IP地址和所述第三节点的下一跳节点的IP地址,所述第三节点是所述第一转发路径上的节点。
所述转发节点将所述第一转发表项加载完成之后,向邻居节点发送转发表项加载完成的消息。所述转发表项加载完成消息中携带所述转发节点的IP地址。所述邻居节点为与所述转发节点在物理上相邻的节点。
所述邻居节点中的所述转发节点在所述第一转发路径中的上一跳节点,即第三节点接收到所述转发节点发送的转发表项加载完成消息之后,所述第三节点根据接收到的控制器发送的第二转发表项,确定所述第二转发表项中包含的所述第三节点在所述第一转发路径的下一跳节点的IP地址与所述转发节点的IP地址相同。所述第三节点基于这一确定结果将所述第三节点接收到的控制器发送的第二转发表项加载至所述第三节点的转发平面,以替代所述第三节点的转发平面中存储的用于指导所述第三节点将流量转发到达目的地的转发表项。
举例来说,结合图3b,当所述第一转发路径的转发节点R6将接收到的所述控制器发送的第一转发表项加载至自身的转发平面后,所述节点R6向所述节点R7发送转发表项加载完成消息。所述转发表项加载完成消息中携带有所述转发节点R6的IP地址。具体的,所述节点R6可以通过内部网关协议向所述节点R7发送一个报文消息,所述报文消息中包含所述节点R6的转发表项已加载完成的消息。
所述节点R7接收到所述R6发送的转发表项加载完成消息后,所述节点R7确定所述节点R7接收到的所述控制器发送的第二转发表项中的下一跳的IP地址与所述节点R6的IP地址相同。所述节点R7基于这一确定结果将所述节点R7接收到的所述控制器发送的所述第二转发表项加载至所述R7的转发平面。具体的,所述第二转发表项包含所述节点R7的目的地的IP地址和所述节点R7在所述第一转发路径的下一跳节点,即节点R6的IP地址。
当所述第一转发路径中各个节点将所述控制器下发的转发表项加载到自身的转发平面后,所述新转发路径中的节点都有到达所述第二节点的单向路径,业务得到恢复,且没有流量环路的产生。
具体的,所述第一转发路径上除所述第二节点之外的其他节点在接收所述控制器发送的转发表项的同时,也可以接收所述控制器发送的负载分担项和备份路径转发表项。
当所述第一路径上除所述第二节点之外的其他节点都将所述控制器发送的转发表项加载到自身的转发平面后,所述新转发路径中的各个节点的业务得到恢复。但是新转发路径中的部分路径还没有得到更新,路由还没有达到最优状态。
可以将所述第一转发路径上除所述第二节点之外的其他节点接收所述控制器发送的转发表项并将所述转发表项加载至自身转发平面的过程看作第一阶段,将所述新转发路径中除所述第二转发节点之外的其他节点接收所述控制器发送的转发表项并将其加载至自身转发平面的过程看作第二阶段。
在第二阶段,所述新转发路径中除所述第二转发节点之外的其他节点接收所述控制器发送的转发表项。所述转发表项包含所述目的地的IP地址和所述转发节点的下一跳的IP地址。
举例来说,结合图3b,所述R7接收到的转发表项包含目的地的IP地址和所述R7的下一跳的IP地址,即节点R5和节点R6的IP地址。所述节点R5接收到的转发表项为所述目的地的IP地址和所述节点R5的下一跳的IP地址,即节点R3和节点R6的IP地址。所述节点R3接收到的转发表项包含所述目的地的IP地址和所述节点R3的下一跳的IP地址,即节点R4的IP地址。所述节点R6接收到的转发表项包含所述目的地的IP地址和所述节点R6的下一跳的IP地址,即节点R4的IP地址。
所述节点R3和节点R6根据接收到的转发表项的下一跳节点的IP地址与出口节点R4的IP地址相同,将自身的转发表项加载到自身转发平面。所述节点R3和节点R6加载完成后向邻居节点发送转发表项加载完成消息;
所述节点R5接收到所述节点R3和节点R6的转发表项加载完成消息。所述节点R5根据所述节点R3和节点R6发送的转发表项加载完成消息判断所述节点R3和所述节点R6的转发表项加载完成。此时,所述节点R5可以通过如下两种方案将自身转发表项加载至所述节点R5的转发平面:
方案一:所述节点R5根据转发表项中的下一跳节点的IP地址确定下一跳节点为R3和R6。所述节点R5接收到所述节点R3或节点R6中的任一个节点的转发表项加载完成消息后,就加载一次转发表项。例如,所述节点R5先接收到节点R3发送的转发表项加载完成消息,就加载一次转发表项,所述转发表项包含目的地的IP地址和下一跳节点R3的IP地址。所述节点R5接收到节点R6的转发表项加载完成消息后,再加载一次转发表项,所述转发表项包含目的地的IP地址和下一跳R6的IP地址。
方案二:所述节点R5根据转发表项中的下一跳节点的IP地址确定下一跳节点为R3和R6。所述节点R5将所述节点R3和R6的转发表项加载完成消息都接收到以后,再加载所述转发表项至自身转发平面。所述转发表项包含目的地的IP地址和下一跳R3和R6的IP地址。
所述节点R5按照方案一的实施方式,在第一次加载完成之后,就向邻居节点发送转发表项加载完成消息。所述节点R5按照方案二的实施方式,将所述转发表项加载完成后,向邻居节点发送转发表项加载完成消息。
比较方案一和方案二,不难得出通过方案一能更快的收敛路由。
所述节点R7有两个下一跳节点,所述节点R7也可以通过上述方案一和上述方案二中的任一种实施方式对所述R7的转发表项进行加载。
需要说明的是,为减少所述控制器和所述转发节点的负载,当所述新转发路径中除所述第二节点之外的转发节点X在第一转发路径上且只有一个下一跳节点,该下一跳节点也在所述第一转发路径上时,所述节点X在第二阶段可以不接收所述控制器发送的转发表项,或所述节点X在第二阶段接收到所述控制器发送的转发表项,但是不将所述转发表项加载至转发平面。当所述节点X在第一转发路径上,且所述节点有不止一个下一跳,其中一个下一跳在第一转发路径上时,所述节点X在第二阶段接收到的转发表项包含目的地的IP地址和所述节点的下一跳的IP地址,所述下一跳不包含所述节点在所述第一转发路径上的下一跳,或所述节点X接收到的所述控制器发送的转发表项中包含所述目的地的IP地址和所有下一跳的IP地址,但所述转发节点X在加载的过程中只加载包含目的地的IP地址和除所述节点X在所述第一转发路径上的下一跳的其他下一跳的IP地址的转发表项。
举例来说,结合图3b,所述节点R6在第一转发路径上,且所述节点R6只有一个下一跳R4,所述R4也在第一转发路径上,所述节点R6在第二阶段可以不接收所述控制器发送的转发表项,或所述控制器在第二阶段不向所述R6发送转发表项。此时,节点R5的转发表项的加载只能通过方案一,但是此时R5→R6这条路径可能无法更新。基于此,所述R6可以在第二阶段不进行转发表项加载的过程,但需要向邻居节点发送转发表项加载完成的消息,所述加载完成消息中携带所述节点R6的IP地址。
所述节点R7在第一转发路径上,所述节点R7在新转发路径上有两个下一跳,分别为节点R6和节点R5,所述节点R7在第二阶段接收到的控制器发送的转发表项可以只包含所述目的地的IP地址和所述节点R7的下一跳R5的IP地址,此时,所述节点R7接收到所述节点R5发送的转发表项加载完成消息后,就可以将自身转发表项加载至转发平面。
当在第二阶段所述新转发路径中除所述第二转发节点之外的其他节点都将接收到的转发表项加载完成后,路径达到最优,且在这一过程中没有流量环路的产生。
本发明实施例提供了一种转发表项加载的方法,在该方法中,所述第一节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第一节点的转发表项。第一转发路径上除了所述第二节点之外的其他节点接收控制器发送的用于指导沿着所述第一转发路径到达目的地的流量的转发表项。所述第一转发路径上除了所述第二节点之外的其他节点将接收到的转发表项加载完成后,所述第一转发路径上除了第二节点之外的每个节点能够根据加载的转发表项将第一节点接收到的流量逐步转发至第二节点。由于在上述方法中,只需要第一转发路径上除了所述第二节点之外的转发节点接收并加载控制器发送的转发表项,不需要其他转发节点接收并加载转发表项,因此,通过该方法,有助于提高路由的收敛速度。
并且,所述第一转发路径上除了所述第二节点之外的每个节点根据接收到的转发表项中的IP地址信息,按照一定的顺序将接收到的转发表项加载至转发平面,从而减少了环路的产生。
因此,上述方案不但有助于提高路由的收敛速度,并且可以减少环路的产生。
基于上述SDN网络,图12为本发明实施例提供的一种转发表项加载的方法的示意图,图11所示的方法对应的实施例是在图10所示的方法对应的实施例的基础上,提供的又一种转发表项加载的方法。图12所示的方法所涉及的技术特征可以参考图4所示的方法所对应的实施例。结合图12,该方法包括:
1201、转发节点接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色。
具体的,步骤1201的详细实施过程可参见上述实施例中的步骤1001,本发明实施例对此不再赘述。
1202、所述转发节点将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。
举例来说,所述控制器根据图3e所示的新转发路径确定所述第一转发路径为R3→R4→R6→R7。所述第一转发路径中除所述第二节点,即节点R7之外的其他转发节点,即节点R3、节点R4和节点R6接收所述控制器下发的转发表项。若所述节点节点R3、节点R4和节点R6加载转发表项的先后顺序不正确,可能会导致流量环路的现象。
结合图3e,举例来说,当所述节点R3和所述节点R4接收到所述控制器发送的第一转发表项之后,所述节点R3将所述节点R3的转发表项加载至所述节点R3的转发平面的时间早于所述节点R4将所述节点R4的转发表项加载至所述节点R4的转发平面的时间。此时,所述节点R3按照所述转发表项将流量沿着R3→R4进行转发,即所述节点R3将流量转发至节点R4。但此时所述节点R4还未将所述节点R4的转发表项加载至所述节点R4的转发平面。结合图3d,所述节点R4依然按照原转发路径中的转发表项沿着R4→R3将流量进行转发。这样,就造成如下结果:R3将流量转发至R4,R4将流量转发至R3,造成了流量在R3和R4之间的环路现象,可能会造成数据的丢失。
具体的,为避免流量环路的产生,所述第一转发路径上除了所述第二节点的其他节点应按照一定的顺序进行转发表项的加载。例如,结合图3e,按照加载时间由前到后的顺序,节点R6、节点R4和节点R3依次进行转发表项的加载。
具体的,所述第一转发路径除所述第二节点之外的其他转发节点接收到所述控制器发送的转发表项后,将第二节点的IP地址与所述转发节点在所述转发表项的下一跳节点的IP地址进行比较。判断所述转发表项的目的地IP地址和所述转发节点在所述第一转发路径的下一跳节点的IP地址相同,则所述转发节点将所述转发表项加载至自身的转发平面。
具体的,所述第一转发路径中除所述第二节点外的其他转发节点获得所述第二节点的IP地址是本领域技术人员的公知技术,本发明实施例对此不再赘述。
举例来说,结合图3e,所述第一转发路径上除所述第二节点R7之外的其他转发节点R3、R4和R6在接收到所述转发表项后,将将所述第二节点的IP地址与所述转发节点在所述转发表项的下一跳节点的IP地址进行比较:所述R6在所述第一转发路径R3→R4→R6→R7的下一跳节点的IP地址为所述节点R7的IP地址;所述R4在所述第一转发路径R3→R4→R6→R7的下一跳节点的IP地址为所述节点R6的IP地址,所述R3在所述第一转发路径R3→R4→R6→R7的下一跳节点的IP地址为所述节点R4的IP地址。所述节点R6在所述第一转发路径的下一跳的IP地址与所述第二节点的IP地址相同。所述转发节点R6将所述R6的第一转发表项加载到自身转发平面。所述节点R3和所述节点R4在所述第一转发路径的下一跳的IP地址与所述第二节点的IP地址不相同。所述转发节点R3和节点R4暂不将接收到的转发表项加载到自身转发平面。
1203、所述转发节点向所述网络中的第三节点发送转发表项加载完成消息,所述转发表项加载完成消息携带所述转发节点的IP地址,所述转发表项加载完成消息用于通告所述转发节点已经将所述第一转发表项加载到所述转发节点的转发平面,所述转发表项加载完成消息用于触发所述第三节点确定所述第三节点收到的所述控制器发送的第二转发表项中的所述第三节点的下一跳节点的IP地址与所述转发节点的IP地址相同,并基于所述确定的结果将所述第二转发表项加载到所述第三节点的转发平面,所述第二转发表项用于指导所述第三节点转发到达所述目的地的流量,所述第二转发表项包含所述目的地的IP地址和所述第三节点的下一跳节点的IP地址,所述第三节点是所述第一转发路径上的节点。
所述转发节点将所述第一转发表项加载完成之后,向邻居节点发送转发表项加载完成的消息。所述转发表项加载完成消息中携带所述转发节点的IP地址。所述邻居节点为与所述转发节点在物理上相邻的节点。
所述邻居节点中的所述转发节点在所述第一转发路径中的上一跳节点,即第三节点接收到所述转发节点发送的转发表项加载完成消息之后,所述第三节点根据接收到的控制器发送的第二转发表项。确定所述第二转发表项中包含的所述第三节点在所述第一转发路径的下一跳节点的IP地址与所述转发节点的IP地址相同。所述第三节点基于这一确定结果将所述第三节点接收到的控制器发送的第二转发表项加载至所述第三节点的转发平面,以替代所述第三节点的转发平面中存储的用于指导所述第三节点将流量转发到达目的地的转发表项。
举例来说,结合图3e,当所述第一转发路径的转发节点R6将接收到的所述控制器发送的第一转发表项加载至自身的转发平面后,所述节点R6向所述节点R4发送转发表项加载完成消息。所述转发表项加载完成消息中携带有所述转发节点R6的IP地址。具体的,所述节点R6可以通过内部网关协议向所述节点R4发送一个报文消息,所述报文消息中包含所述节点R6的转发表项已加载完成的消息,并携带有所述节点R6的IP地址。
所述节点R4接收到所述R6发送的转发表项加载完成消息后,所述节点R4确定所述节点R4接收到的所述控制器发送的第二转发表项中的下一跳的IP地址与所述节点R6的IP地址相同。所述节点R4基于这一确定结果将所述节点R4接收到的所述控制器发送的所述第二转发表项加载至所述R4的转发平面。具体的,所述第二转发表项包含所述节点R4的目的地的IP地址和所述节点R4在所述第一转发路径的下一跳节点,即节点R6的IP地址。
所述节点R4将所述控制器发送的所述第二转发表项加载至自身的转发平面后,所述节点R4向所述节点R3发送转发表项加载完成消息。所述转发表项加载完成消息中携带有所述节点R4的IP地址。
所述节点R3接收到所述R4发送的转发表项加载完成消息后,所述节点R3确定所述节点R3接收到的所述控制器发送的第二转发表项中的下一跳的IP地址与所述节点R4的IP地址相同。所述节点R3基于这一确定结果将所述节点R3接收到的所述控制器发送的所述第二转发表项加载至所述R3的转发平面。具体的,所述第二转发表项包含所述节点R3的目的地的IP地址和所述节点R3在所述第一转发路径的下一跳节点,即节点R4的IP地址。
当所述第一转发路径中各个节点将所述控制器下发的转发表项加载到自身的转发平面后,所述新转发路径中的节点都有到达所述第二节点的单向路径,业务得到恢复,且没有流量环路的产生。
具体的,所述第一转发路径上除所述第二节点之外的其他节点在接收所述控制器发送的转发表项的同时,可以接收所述控制器发送的负载分担项和/或备份组转发表项并将其加载至自身转发平面。
当所述第一路径上除所述第二节点之外的其他节点都将所述控制器发送的转发表项加载到自身的转发平面后,所述新转发路径中的各个节点的业务得到恢复。但是新转发路径中的部分路径还没有得到更新,路由还没有达到最优状态。
可以将所述第一转发路径上除所述第二节点之外的其他节点接收所述控制器发送的转发表项并将所述转发表项加载至自身转发平面的过程看作第一阶段,将所述新转发路径中除所述第二转发节点之外的其他节点接收所述控制器发送的转发表项并将其加载至自身转发平面的过程看作第二阶段。
举例来说,结合图3e,R3、R4、R5和R6在第二阶段将转发表项加载至自身转发平面的过程看参见上述实施例中的步骤1103,本发明实施例对此不再赘述。
本发明实施例提供了一种转发表项加载的方法,在该方法中,所述第二节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第二节点的转发表项。第一转发路径上除了所述第二节点之外的其他节点接收控制器发送的用于指导沿着所述第一转发路径到达目的地的流量的转发表项。所述第一转发路径上除了所述第二节点之外的其他节点将接收到的转发表项加载完成后,所述第一转发路径上除了第二节点之外的每个节点能够根据加载的转发表项将第一节点接收到的流量逐步转发至第二节点。由于在上述方法中,只需要第一转发路径上除了所述第二节点之外的转发节点接收并加载控制器发送的转发表项,不需要其他转发节点接收并加载转发表项,因此,通过该方法,有助于提高路由的收敛速度。
并且,所述第一转发路径上除了所述第二节点之外的每个节点根据接收到的转发表项中的IP地址信息,按照一定的顺序将接收到的转发表项加载至转发平面,从而减少了环路的产生。
因此,上述方案不但有助于提高路由的收敛速度,并且可以减少环路的产生。
基于上述SDN网络,图13为本发明实施例提供的一种转发表项加载的方法的示意图,图13所示的方法对应的实施例是在图9所示的方法对应的实施例的基础上,提供的又一种转发表项加载的方法。图13所示的方法所涉及的技术特征可以参考图7所示的方法所对应的实施例。结合图13,该方法包括:
1301、转发节点接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
具体的,步骤1301的详细实施过程可参见上述实施例中的步骤901,本发明实施例对此不再赘述。
1302、所述转发节点还接收所述控制器发送的所述转发节点的深度值,所述转发节点的深度值为沿着所述第一转发路径,所述转发节点到所述第二节点的跳数。
具体的,所述转发节点接收所述控制器发送的第一转发表项与接收所述控制器发送的所述转发节点的深度值没有先后顺序,本发明实施例对此不做限定。
举例来说,结合图3b,所述控制器根据新转发路径确定所述第一节点R7到第二节点R4的第一转发路径为R7→R6→R4。所述第二节点R4先于其他节点接收其他设备,例如用户边缘设备下发的所述第二节点的转发表项,并将所述第二节点的转发表项加载至自身转发平面。所述第一转发路径中除所述第二节点外的其他转发节点,即节点R7和节点R6接收所述控制器下发的转发表项和所述节点的深度值。
所述节点R6接收到的转发表项包含所述节点R6的目的地的IP地址和所述节点R6在所述第一转发路径的下一跳节点,即节点R4的IP地址。所述转发节点R6接收到的所述节点R6的深度值为1。所述节点R7接收到的转发表项包含所述节点R7的目的地的IP地址和所述节点R7在所述第一转发路径的下一跳节点,即节点R6的IP地址。所述转发节点R7接收到的所述节点R7的深度值为2。
1303、所述转发节点确定所述转发节点的深度值为1,所述转发节点基于所述确定的结果将所述第一转发表项加载到所述转发节点的转发平面。
为避免流量环路现象,所述节点R6应先用节点R7将接收到的所述控制器发送的转发表项加载至自身转发平面。
所述节点R6接收到所述控制器发送的第一转发表项和所述控制器发送的所述节点R6的深度值为1后,所述节点R6根据所述节点R6的深度值为1,将所述控制器发送的第一转发表项加载至自身的转发平面。
1304、所述转发节点向第三节点发送转发表项加载完成消息,所述转发表项加载完成消息用于通告所述转发节点已经将所述第一转发表项加载到所述转发节点的转发平面,所述转发表项加载完成消息携带所述转发节点的深度值,所述转发表项加载完成消息用于触发所述第三节点确定所述第三节点收到的所述控制器发送的所述第三节点的深度值与所述转发节点的深度值的差为1,并将所述第三节点收到的所述控制器发送的第三转发表项加载到所述第三节点的转发平面,所述第三转发表项用于指导所述第三节点转发到达所述目的地的流量,所述第三节点的深度值为沿着所述第一转发路径,所述第三节点到所述第二节点的跳数,所述第三转发表项包含所述目的地的IP地址以及所述第三节点的下一跳节点的IP地址,所述第三节点的下一跳节点是所述转发节点。
具体的,举例来说,所述转发节点R6根据自身的深度值为1,将自身的第一转发表项加载至转发平面后,所述节点R6向第三节点,即所述节点R7发送转发表项加载完成消息。所述转发表项加载完成消息中携带所述节点R6的深度值为1的消息。
所述节点R7接收到所述节点R6发送的转发表项加载完成消息后,确定所述节点R6已将所述节点R6的转发表项加载完成。所述节点R7根据所述节点R7的深度值2与接收到的所述节点R6的深度值1的差值为1,将所述节点R7的转发表项加载至自身转发平面。
再举例来说,结合图3b,当所述控制器根据所述新转发路径确定所述第一转发路径为R7→R5→R6→R4。所述第一转发路径中除所述第二节点之外的其他转发节点中,R6接收到的转发表项包含所述节点R6的目的地的IP地址和所述节点R6在所述第一转发路径的下一跳节点,即节点R4的IP地址。所述节点R6接收到的所述节点R6的深度值为1。R5接收到的转发表项包含所述节点R5的目的地的IP地址和所述节点R5在所述第一转发路径的下一跳节点,即节点R6的IP地址。所述节点R5接收到的所述节点R5的深度值为2。R7接收到的转发表项包含所述节点R7的目的地的IP地址和所述节点R7在所述第一转发路径的下一跳节点,即节点R5的IP地址。所述节点R7接收到的所述节点R7的深度值为3。
所述转发节点R6根据自身的深度值为1,将接收到的第一转发表项加载至自身转发平面。所述节点R6加载完成后向所述节点R5发送转发表项加载完成消息。所述节点R5接收到所述R6发送的转发表项加载完成消息后,确定所述转发节点R6已将所述R6的转发表项加载完成。所述节点R5根据自身的深度值2,与R6的深度值1的差值为1,将自身的转发表项加载至所述节点R5的转发平面。所述节点R5将自身的转发表项加载完成后,向所述节点R7发送转发表项加载完成消息。所述节点R7接收到所述节点R5发送的转发表项加载完成消息后,确定所述节点R5已将所述R5的转发表项加载完成。所述节点R7根据自身的深度值3与所述节点R5的深度值2的差值为1,将所述节点R7的转发表项加载至自身转发平面。
这样,所述第一转发路径的各个节点都将自身的转发表项加载至自身转发平面,所述第一转发路径更新完成。所述新转发路径中的节点都有到达所述第二节点的单向路径,业务得到恢复,且在第一转发路径上除了所述第二节点之外的其他节点在进行转发表项加载的过程中,没有环路的产生。
具体的,所述第一转发路径上除所述第二节点之外的其他节点在接收所述控制器发送的转发表项和深度值时,可以同时接收所述控制器发送的负载分担项和/或备份组转发表项。
具体的,当所述第一转发路径收敛完成之后,新转发路径中各个节点的业务得到恢复,但部分路径还未更新,路由还未达到最优状态。
具体的,所述第一路径上除所述第二节点外的其他节点接收所述控制器发送的转发表项并将所述转发表项加载至转平面的过程可以看作第一阶段,在第一阶段结束后,所述新转发路径中除所述第二节点外的转发节点接收控制器发送的转发表项和深度值的过程为第二阶段。其中,所述转发节点在第二阶段接收到的转发表项包含所述目的地的IP地址和所述转发节点的下一跳的IP地址。
举例来说,结合图3b所示的新转发路径,当所述第一转发路径R7→R6→R4的第一转发路径上除所述第二节点之外的其他节点都将在第一阶段接收到的转发表项加载至自身转发平面后,所述新转发路径中除所述第二节点之外的其他节点在第二阶段接收所述控制器发送的转发表项和深度值。
R3和R6的深度值为3,R5的深度值为4,R7的深度值为5。R3和R6根据深度值3是第二阶段预设的深度值的最小值,将R3和R6的转发表项下发至自身转发平面。所述R3的转发表项包含目的地的IP地址和所述R3的下一跳R4的IP地址。所述R6的转发表项包含所述目的地的IP地址和所述R6的下一跳R4的IP地址。所述节点R3和节点R6将转发表项加载完成后向邻居节点发送转发表项加载完成消息。所述转发表项加载完成消息中包含所述节点R3和节点R6的深度值。
所述节点R5接收到所述节点R3和节点R6的转发表项加载完成消息后,所述节点R5根据自身的转发表项中的下一跳节点有两个,且R3和R6的深度值都比R5的深度值小1,所述节点R5将自身转发表项加载至自身转发平面。所述节点R5加载完成后向邻居节点R7发送转发表项加载完成消息。所述转发表项加载完成消息中携带所述节点R5的深度值4,比所述节点R7的深度值小1,所述节点R7将第二阶段接收到的转发表项加载至自身转发平面。
需要说明的是,在第二阶段,为减少控制器和转发节点的负载,当所述新转发路径中除所述第二节点之外的转发节点X在第一转发路径上且只有一个下一跳节点,该下一跳节点也在所述第一转发路径上时,所述节点X在第二阶段可以不接收所述控制器发送的转发表项或不对所述转发表项进行加载,但需要接收所述控制器发送的深度值。当所述节点X在第一转发路径上,且所述节点X有不止一个下一跳,其中一个下一跳在第一转发路径上时,所述节点X在第二阶段加载的转发表项包含目的地的IP地址和所述节点的下一跳的IP地址,所述下一跳不包含所述节点在所述第一转发路径上的下一跳。
举例来说,结合图3b,所述节点R6在第一转发路径上,且所述节点R6只有一个下一跳R4,所述R4也在第一转发路径上,所述节点R6在第二阶段可以不接收所述控制器发送的转发表项,或所述控制器在第二阶段不向所述R6发送转发表项。但此时所述节点R6可以根据自身的深度值为第二阶段预设的最小值,不进行转发表项加载的过程,但是向邻居节点发送转发表项加载完成消息,所述加载完成消息中携带所述节点R6的深度值。这样,R5还可以按照上述方法,在接收到比自身深度值小1的节点发送的转发表项加载完成消息后,将自身转发表项加载至转发平面。
需要说明的是,在新转发路径中,节点R7有两个下一跳,R6的深度值比R7小2,R5的深度值比R7小1,R7无法接收到两个比自己深度值小1的转发节点发送的加载完成消息,因此,在第二阶段,所述转发节点只根据自身的深度值和接收到的邻居节点的转发表项加载完成消息中携带的深度值,不能很好的进行转发表项的加载,在实施的过程中可能出现一些路径不能及时更新的现象。
本发明实施例提供了一种转发表项加载的方法,在该方法中,所述第一节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第一节点的转发表项。第一转发路径上除了所述第二节点之外的其他节点接收控制器发送的用于指导沿着所述第一转发路径到达目的地的流量的转发表项。第一转发路径上除了所述第二节点之外的其他节点接收控制器发送的用于指导沿着所述第一转发路径到达目的地的流量的转发表项,并将所述转发表项加载至转发平面。所述第一转发路径除了所述第二节点之外的其他节点将所述转发表项加载完成之后,所述第一转发路径上除了所述第二节点之外的每个节点能够根据加载的转发表项将第一节点接收到的流量逐步转发至第二节点。由于只需要第一转发路径上除了所述第二节点之外的其他节点接收并加载所述控制器发送的转发表项,其他转发节点不需要接收和加载转发表项,因此,上述方案有助于提高路由的收敛速度。
并且,所述第一转发路径上除了所述第二节点之外的其他节点除了接收所述控制器发送的转发表项外,还接收所述控制器发送的深度值,所述第一转发路径上除了所述第二节点之外的其他节点根据所述深度值,按照一定的顺序将转发表项加载至转发平面,从而减少了环路的产生。
因此,上述方案不但有助于提高路由的收敛速度,并且可以减少环路的产生。
基于上述SDN网络,图14为本发明实施例提供的一种转发表项加载的方法示意图,图13所示的方法对应的实施例是在图10所示的方法对应的实施例的基础上,提供的又一种转发表项加载的方法。图14所示的方法所涉及的技术特征,可以参考图8所示的方法所对应的实施例。结合图14,该方法包括:
1401、转发节点接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色。
具体的,步骤1401的具体实施方式可参见上述实施例中的步骤1001,本发明实施例对此不再赘述。
1402、所述转发节点还接收所述控制器发送的所述转发节点的深度值,所述转发节点的深度值为沿着所述第一转发路径,所述转发节点到所述第二节点的跳数。
具体的,所述转发节点接收所述控制器发送的第一转发表项与接收所述控制器发送的所述转发节点的深度值没有先后顺序,本发明实施例对此不做限定。
举例来说,结合图3e,所述控制器根据新转发路径确定所述第一节点R3到第二节点R7的第一转发路径为R3→R4→R6→R7。所述第一转发路径中除所述第二节点R7之外的其他转发节点,即节点R3、R4和R6接收所述控制器发送的转发表项和深度值。
具体的,所述节点R3接收到的转发表项包含所述节点R3的目的地的IP地址和所述节点R3在所述第一转发路径的下一跳,即节点R4的IP地址。所述节点R3接收到的所述节点R3的深度值为3。所述节点R4接收到的转发表项包含所述节点R4的目的地的IP地址和所述节点R4在所述第一转发路径的下一跳,即节点R6的IP地址。所述节点R4接收到的所述节点R4的深度值为2。所述节点R6接收到的转发表项包含所述节点R6的目的地的IP地址和所述节点R6在所述第一转发路径的下一跳,即节点R7的IP地址。所述节点R6接收到的所述节点R6的深度值为1。
1403、所述转发节点确定所述转发节点的深度值为1,所述转发节点基于所述确定的结果将所述第一转发表项加载到所述转发节点的转发平面。
为避免流量环路现象,所述节点R3、R4和R6将转发表项加载到自身转发平面的顺序应该是:R6首先将自身转发表项加载到自身转发平面,之后R4将所述R4的转发表项加载到自身转发平面,R3最后将所述R3的转发表项加载到自身转发平面。
所述节点R6接收到所述控制器发送的第一转发表项和所述控制器发送的所述节点R6的深度值为1后,所述节点R6根据所述节点R6的深度值为1,将所述控制器发送的第一转发表项加载至自身的转发平面。
1404、所述转发节点向第三节点发送转发表项加载完成消息,所述转发表项加载完成消息用于通告所述转发节点已经将所述第一转发表项加载到所述转发节点的转发平面,所述转发表项加载完成消息携带所述转发节点的深度值,所述转发表项加载完成消息用于触发所述第三节点确定所述第三节点收到的所述控制器发送的所述第三节点的深度值与所述转发节点的深度值的差为1,并将所述第三节点收到的所述控制器发送的第三转发表项加载到所述第三节点的转发平面,所述第三转发表项用于指导所述第三节点转发到达所述目的地的流量,所述第三节点的深度值为沿着所述第一转发路径,所述第三节点到所述第二节点的跳数,所述第三转发表项包含所述目的地的IP地址以及所述第三节点的下一跳节点的IP地址,所述第三节点的下一跳节点是所述转发节点。
具体的,举例来说,所述转发节点R6根据自身的深度值为1,将自身的第一转发表项加载至转发平面后,所述节点R6向第三节点,即所述节点R4发送转发表项加载完成消息,所述转发表项加载完成消息中携带所述节点R6的深度值为1的消息。
所述节点R4接收到所述节点R6发送的转发表项加载完成消息后,确定所述节点R6已将所述节点R6的转发表项加载完成。所述节点R4根据所述节点R4的深度值2与接收到的所述节点R6的深度值1的差值为1,将所述节点R4的转发表项加载至自身转发平面,并向所述节点R3发送转发表项加载完成消息。所述转发表项加载完成消息中携带所述节点R4的深度值为2的消息。
所述节点R3接收到所述节点R4发送的转发表项加载完成消息后,确定所述节点R4已将所述节点R4的转发表项加载完成。所述节点R3根据所述节点R3的深度值3与接收到的所述节点R4的深度值2的差值为1,将所述节点R3的转发表项加载至自身转发平面。
这样,所述第一转发路径的各个节点都将自身的转发表项加载至自身转发平面,所述第一转发路径更新完成,所述新转发路径中的节点都有到达所述第二节点的单向路径,业务得到恢复,且在所述第一转发路径上除了所述第二节点之外的其他几点在进行转发表项加载的过程中没有环路的产生。
具体的,所述第一转发路径上除所述第二节点之外的各个节点在接收所述控制器发送的转发表项和深度值的同时,也可以接收所述控制器发送的负载分单项和/或备份组转发表项。
具体的,在所述第一转发路径上除所述第二节点之外的各个节点都将控制器发送的转发表项加载至转发平面后,新转发路径中的各个节点的业务都已恢复,但是路由还未达到最优状态,一些路径还未更新。具体的,其他路径的更新过程看参见上述实施例中的步骤1304,本发明实施例对此不再赘述。
本发明实施例提供了一种转发表项加载的方法,在该方法中,所述第二节点在原转发路径中承担出口节点的角色。控制器管辖的网络中的节点维护了能够将流量转发至第二节点的转发表项。第一转发路径上除了所述第二节点之外的其他节点接收控制器发送的用于指导沿着所述第一转发路径到达目的地的流量的转发表项,并将所述转发表项加载至转发平面。所述第一转发路径除了所述第二节点之外的其他节点将所述转发表项加载完成之后,所述第一转发路径上除了所述第二节点之外的每个节点能够根据加载的转发表项将第一节点接收到的流量逐步转发至第二节点。由于只需要第一转发路径上除了所述第二节点之外的其他节点接收并加载所述控制器发送的转发表项,其他转发节点不需要接收和加载转发表项,因此,上述方案有助于提高路由的收敛速度。
并且,所述第一转发路径上除了所述第二节点之外的其他节点除了接收所述控制器发送的转发表项外,还接收所述控制器发送的深度值,所述第一转发路径上除了所述第二节点之外的其他节点根据所述深度值,按照一定的顺序将转发表项加载至转发平面,从而减少了环路的产生。
因此,上述方案不但有助于提高路由的收敛速度,并且可以减少环路的产生。
图15为本发明实施例提供的一种控制器的示意图。图15所示的控制器可以用于执行图2、图4-图8所示的方法。结合图15,所述控制器包括:确定单元1501和发送单元1502。
所述确定单元1501,用于根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
或,
所述确定单元1501,用于根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定在原转发路径上所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,在所述原转发路径上所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述新转发路径中承担出口节点的角色。
所述发送单元1502,用于向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到达目的地的流量的转发表项,其中,所述控制器向节点A发送的转发表项包含所述目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。
可选的,所述确定单元1501还用于:确定所述第一转发路径上除了所述第二节点之外的每个节点的深度值,其中,节点B的深度值为沿着所述第一转发路径,所述节点B到所述第二节点的跳数,所述节点B为所述第一转发路径上的节点;
所述发送单元1502具体用于:向所述第一转发路径上除了所述第二节点之外的每个节点发送转发表项,其中,所述控制器向节点X发送的转发表项的时间晚于向节点Y发送的转发表项的时间,节点X的深度值大于节点Y的深度值。
可选的,所述确定单元1501还用于:确定所述第一转发路径上除了所述第二节点之外的每个节点的深度值,其中,节点C的深度值为沿着所述第一转发路径,所述节点C到所述第二节点的跳数,所述节点C为所述第一转发路径上的节点;
所述发送单元1502具体用于:向所述第一转发路径上的除了所述第二节点之外的每个节点发送深度值,其中,所述控制器向节点W发送的深度值为所述节点W的深度值。
本发明实施例提供了一种控制器,所述控制器包括:确定单元和发送单元,所述确定单元根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色;或,所述确定单元根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定在原转发路径上所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,在所述原转发路径上所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述新转发路径中承担出口节点的角色;所述发送单元向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到达目的地的流量的转发表项,其中,所述控制器向节点A发送的转发表项包含所述目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。上述控制器向第一转发路径上除了第二节点之外的每个节点发送用于指导沿着第一转发路径转发到达目的地的流量的转发表项。第一转发路径上除了第二节点之外的每个节点能够根据接收到的转发表项将第一节点接收到的流量逐步转发至第二节点。由于上述控制器只需要更新控制器管辖的网络中第一转发路径上除了第二节点之外的每个节点的转发表项即可,不需要更新控制器管辖的网络中的其他节点的转发表项,因此,通过上述控制器,有助于提高路由收敛的速度。
图16为本发明实施例提供的一种转发节点的示意图。图16所示的转发节点可以用于执行图9和图10所示的方法,结合图16,所述转发节点包括:接收单元1601和加载单元1602。
所述接收单元1601,用于接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
或,
所述接收单元1601,用于接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色。
所述加载单元1602,用于将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。
可选的,结合图17,该转发节点还包括:第一发送单元1603。图17所示的转发节点可以用于执行图11和图12所示的方法。
所述发送单元1603,用于向所述网络中的第三节点发送转发表项加载完成消息,所述转发表项加载完成消息携带所述转发节点的IP地址,所述转发表项加载完成消息用于通告所述转发节点已经将所述第一转发表项加载到所述转发节点的转发平面,所述转发表项加载完成消息用于触发所述第三节点确定所述第三节点收到的所述控制器发送的第二转发表项中的所述第三节点的下一跳节点的IP地址与所述转发节点的IP地址相同,并基于所述确定的结果将所述第二转发表项加载到所述第三节点的转发平面,所述第二转发表项用于指导所述第三节点转发到达所述目的地的流量,所述第二转发表项包含所述目的地的IP地址和所述第三节点的下一跳节点的IP地址,所述第三节点是所述第一转发路径上的节点。
可选的,所述接收单元1601还用于:接收所述控制器发送的所述转发节点的深度值,所述转发节点的深度值为沿着所述第一转发路径,所述转发节点到所述第二节点的跳数;
所述加载单元1602具体用于:确定所述转发节点的深度值为1,基于所述确定的结果将所述第一转发表项加载到所述转发节点的转发平面;
具体的,结合图18,该转发节点还包括:第二发送单元1604。图18所示的转发节点可以用于执行图13和图14所示的方法
所述第二发送单元1604,用于向第三节点发送转发表项加载完成消息,所述转发表项加载完成消息用于通告所述转发节点已经将所述第一转发表项加载到所述转发节点的转发平面,所述转发表项加载完成消息携带所述转发节点的深度值,所述转发表项加载完成消息用于触发所述第三节点确定所述第三节点收到的所述控制器发送的所述第三节点的深度值与所述转发节点的深度值的差为1,并将所述第三节点收到的所述控制器发送的第三转发表项加载到所述第三节点的转发平面,所述第三转发表项用于指导所述第三节点转发到达所述目的地的流量,所述第三节点的深度值为沿着所述第一转发路径,所述第三节点到所述第二节点的跳数,所述第三转发表项包含所述目的地的IP地址以及所述第三节点的下一跳节点的IP地址,所述第三节点的下一跳节点是所述转发节点。
可选的,所述接收单元1601还用于:接收所述控制器发送的所述转发节点的深度值,所述转发节点的深度值为沿着所述第一转发路径,所述转发节点到所述第二节点的跳数;
具体的,所述接收单元1601还用于:接收第三节点发送的转发表项加载完成消息,所述转发表项加载完成消息用于通告所述第三节点已经将所述第三节点接收到的所述控制器发送的第二转发表项加载到所述转发节点的转发平面,所述第二转发表项用于指导所述第三节点转发到达所述目的地的流量,所述转发表项加载完成消息携带所述第三节点的深度值,所述第三节点的深度值为沿着所述第一转发路径,所述第三节点到所述第二节点的跳数,所述第二转发表项包含所述目的地的IP地址以及所述第三节点的下一跳节点的IP地址,所述第三节点的下一跳节点为所述第一转发路径上的节点;
所述加载单元1602具体用于:确定所述转发节点的深度值与所述第三节点的深度值的差为1;
将所述第一转发表项加载到所述转发节点的转发平面,所述转发节点的下一跳节点是所述第三节点。
本发明实施例提供了一种转发节点,该转发节点包括:接收单元和加载单元。所述接收单元接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色;或,所述接收单接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色;所述加载单元将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。上述转发节点为第一转发路径上除了第二节点之外的节点,上述节点接收控制器发送的用于指导沿着第一转发路径到达目的地的流量的转发表项,并将所述转发表项加载至转发平面。上述节点能够根据加载的转发表项将第一节点接收到的流量逐步转发至第二节点。由于只需要上述节点接收控制器发送的转发表项并将其加载至转发平面,不需要其他节点接收并加载转发表项,因此,上述转发节点有助于提高路由收敛的速度。
图19为本发明实施例提供的一种控制器的示意图,图19所示的控制器可以用于执行图2、图4-图8所示的方法。结合图19,该控制器包括:处理器1901和发送器1902。
所述处理器1901,用于根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
或,
所述处理器1901,用于根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定在原转发路径上所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,在所述原转发路径上所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述新转发路径中承担出口节点的角色。
所述发送器1902,用于向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到达目的地的流量的转发表项,其中,所述控制器向节点A发送的转发表项包含所述目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。
可选的,所述处理器1901还用于:确定所述第一转发路径上除了所述第二节点之外的每个节点的深度值,其中,节点B的深度值为沿着所述第一转发路径,所述节点B到所述第二节点的跳数,所述节点B为所述第一转发路径上的节点;
所述发送器1902具体用于:向所述第一转发路径上除了所述第二节点之外的每个节点发送转发表项,其中,所述控制器向节点X发送的转发表项的时间晚于向节点Y发送的转发表项的时间,节点X的深度值大于节点Y的深度值。
可选的,所述处理器1901还用于:确定所述第一转发路径上除了所述第二节点之外的每个节点的深度值,其中,节点C的深度值为沿着所述第一转发路径,所述节点C到所述第二节点的跳数,所述节点C为所述第一转发路径上的节点;
所述发送器1902具体用于:向所述第一转发路径上的除了所述第二节点之外的每个节点发送深度值,其中,所述控制器向节点W发送的深度值为所述节点W的深度值。
本发明实施例提供了一种控制器,该控制器包括:处理器和发送器。所述处理器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色;或,所述处理器根据新转发路径确定第一节点到第二节点的第一转发路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定在原转发路径上所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,在所述原转发路径上所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径上所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述新转发路径中承担出口节点的角色;所述发送器向所述第一转发路径上除了所述第二节点之外的每个节点发送用于指导沿着所述第一转发路径转发到达目的地的流量的转发表项,其中,所述控制器向节点A发送的转发表项包含所述目的地的IP地址以及所述节点A的下一跳节点的IP地址,所述节点A的下一跳节点为所述第一转发路径上的节点。上述控制器向第一转发路径上除了第二节点之外的每个节点发送用于指导沿着第一转发路径转发到达目的地的流量的转发表项。第一转发路径上除了第二节点之外的每个节点能够根据接收到的转发表项将第一节点接收到的流量逐步转发至第二节点。由于上述控制器只需要更新控制器管辖的网络中第一转发路径上除了第二节点之外的每个节点的转发表项即可,不需要更新控制器管辖的网络中的其他节点的转发表项,所有节点的业务就可以得到恢复,因此,通过上述控制器,有助于提高路由收敛的速度。
图20为本发明实施例提供的一种转发节点的示意图。图20所示的转发节点可以用于执行图9-图14所示的方法。结合图20,该转发节点包括:收发器2001和处理器2002。
所述收发器2001,用于接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色。
或,
所述收发器2001,用于接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色。
所述处理器2002,用于将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。
可选的,所述收发器2002还用于向所述网络中的第三节点发送转发表项加载完成消息,所述转发表项加载完成消息携带所述转发节点的IP地址,所述转发表项加载完成消息用于通告所述转发节点已经将所述第一转发表项加载到所述转发节点的转发平面,所述转发表项加载完成消息用于触发所述第三节点确定所述第三节点收到的所述控制器发送的第二转发表项中的所述第三节点的下一跳节点的IP地址与所述转发节点的IP地址相同,并基于所述确定的结果将所述第二转发表项加载到所述第三节点的转发平面,所述第二转发表项用于指导所述第三节点转发到达所述目的地的流量,所述第二转发表项包含所述目的地的IP地址和所述第三节点的下一跳节点的IP地址,所述第三节点是所述第一转发路径上的节点。
可选的,所述收发器2001还用于:接收所述控制器发送的所述转发节点的深度值,所述转发节点的深度值为沿着所述第一转发路径,所述转发节点到所述第二节点的跳数;
所述处理器2002具体用于:确定所述转发节点的深度值为1,基于所述确定的结果将所述第一转发表项加载到所述转发节点的转发平面;
具体的,所述收发器2001还用于:向第三节点发送转发表项加载完成消息,所述转发表项加载完成消息用于通告所述转发节点已经将所述第一转发表项加载到所述转发节点的转发平面,所述转发表项加载完成消息携带所述转发节点的深度值,所述转发表项加载完成消息用于触发所述第三节点确定所述第三节点收到的所述控制器发送的所述第三节点的深度值与所述转发节点的深度值的差为1,并将所述第三节点收到的所述控制器发送的第三转发表项加载到所述第三节点的转发平面,所述第三转发表项用于指导所述第三节点转发到达所述目的地的流量,所述第三节点的深度值为沿着所述第一转发路径,所述第三节点到所述第二节点的跳数,所述第三转发表项包含所述目的地的IP地址以及所述第三节点的下一跳节点的IP地址,所述第三节点的下一跳节点是所述转发节点。
可选的,所述收发器2001还用于:接收所述控制器发送的所述转发节点的深度值,所述转发节点的深度值为沿着所述第一转发路径,所述转发节点到所述第二节点的跳数;
接收第三节点发送的转发表项加载完成消息,所述转发表项加载完成消息用于通告所述第三节点已经将所述第三节点接收到的所述控制器发送的第二转发表项加载到所述转发节点的转发平面,所述第二转发表项用于指导所述第三节点转发到达所述目的地的流量,所述转发表项加载完成消息携带所述第三节点的深度值,所述第三节点的深度值为沿着所述第一转发路径,所述第三节点到所述第二节点的跳数,所述第二转发表项包含所述目的地的IP地址以及所述第三节点的下一跳节点的IP地址,所述第三节点的下一跳节点为所述第一转发路径上的节点;
所述处理器2002具体用于:确定所述转发节点的深度值与所述第三节点的深度值的差为1;
将所述第一转发表项加载到所述转发节点的转发平面,所述转发节点的下一跳节点是所述第三节点。
本发明实施例提供了一种转发节点,该转发节点包括:收发器和处理器。所述收发器接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述第二节点在所述新转发路径中承担出口节点的角色,所述第一节点在原转发路径中承担出口节点的角色,所述原转发路径承载在所述网络上,所述新转发路径中所述第二节点承担所述第一节点在所述原转发路径中作为出口节点的角色;或,所述收发器接收控制器发送的用于指导所述转发节点转发到达目的地的流量的第一转发表项,到达目的地的流量将被沿着第一转发路径传输,所述转发节点是所述第一转发路径上的除第二节点之外的节点,所述第一转发路径为所述控制器根据新转发路径确定的第一节点到所述第二节点的路径,所述新转发路径承载在被所述控制器管辖的网络上,所述新转发路径是所述控制器确定原转发路径中所述第一节点到所述第一节点的下一跳节点的路径出现故障后所述控制器生成的,所述第一节点的下一跳节点是第二转发路径上的节点,所述第二转发路径是所述原转发路径中所述第一节点到所述第二节点的路径,所述原转发路径承载在所述网络上,所述第二节点在所述原转发路径以及在所述新转发路径中承担出口节点的角色;所述处理器将所述第一转发表项加载到所述转发节点的转发平面,其中,所述第一转发表项包含所述目的地的IP地址以及所述转发节点的下一跳节点的IP地址,所述转发节点的下一跳节点为所述第一转发路径上的节点。上述转发节点为第一转发路径上除了第二节点之外的节点,上述节点接收控制器发送的用于指导沿着第一转发路径到达目的地的流量的转发表项,并将所述转发表项加载至转发平面。上述节点能够根据加载的转发表项将第一节点接收到的流量逐步转发至第二节点。由于只需要上述节点接收控制器发送的转发表项并将其加载至转发平面,不需要其他节点接收和加载转发表项,因此,通过上述转发节点,有助于提高路由收敛的速度。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。