发明内容
本发明所要解决的技术问题,就是针对现有技术的上述缺点,提供一种网络故障切换方法,能在CE设备采用IPSec隧道接入MPLSVPN网络这种应用模式发生故障时,快速地完成数据传输通道的切换,保证通信的完成。
本发明解决所述技术问题采用的技术方案是,网络故障切换方法,包含:
第一CE设备,N台本端PE设备,至少1台远端PE设备以及第二CE设备;所述本端PE设备和远端PE设备处于同一MPLS VPN网络中,所述本端PE设备与远端PE设备通过VPN隧道连接;所述第一CE设备通过IPSec隧道与N台本端PE设备连接;所述第二CE设备与远端PE设备连接;
包括以下步骤:
a.第一CE设备在N台本端PE设备中,设定1台本端PE设备为主状态,其余本端PE设备为从状态;只有处于主状态的本端PE设备向远端PE设备发送到达第一CE设备的路由;
b.正常状态下,第一CE设备与第二CE设备间的数据传输仅通过处于主状态的本端PE设备进行;
c.发生故障时,第一CE设备发出命令,切换数据传输通道。
具体的是,所述故障包括:第一CE设备与处于主状态的本端PE设备间的IPSec隧道的故障、处于主状态的本端PE设备的故障以及处于主状态的本端PE设备的VPN隧道的故障。
进一步的是,所述步骤c包括:
c1.第一CE设备将发送数据的数据传输通道切换到某从状态本端PE设备所在的数据通道;
c2.第一CE设备从远端PE设备接收数据的数据传输通道,由原处于主状态的本端PE设备的数据传输通道,切换到步骤c1所述的从状态本端PE设备所在的数据通道。
更进一步的是,所述步骤c2又包括以下步骤:
c21.第一CE设备发出命令,将所述处于从状态的本端PE设备切换为主状态本端PE设备;
c22.该新的主状态本端PE设备向远端PE设备,发送一条到第一CE设备的高本地优先级的BGP路由;
c23.远端PE设备收到该路由信息后,根据BGP的选路原则,把这条路由选为最优的路由。
再进一步的是,以上切换还包括如下步骤:
c24.发生故障的原主状态本端PE设备恢复正常后,或第一CE与原主状态本端PE设备之间的IPSec隧道恢复正常后,第一CE设备向其发出命令,将其状态切换为从状态,并向远端PE设备通告删除步骤a中所述的路由;
c25.第一CE设备通知新的主状态本端PE设备,向远端PE设备发送一条到第一CE设备的默认本地优先级的BGP路由,取代步骤c22的高本地优先级路由。
更具体的是,所述CE设备为路由器或具有相应功能的PC机。
最简单的情况是,只有2台本端PE设备。
本发明的有益效果是,综合利用了IPSec隧道检测技术以及VPN隧道检测等技术,通过这些技术和BGP路由通告的联动,实现了BGP路由的受限通告,并巧妙地利用BGP路由的本地优先级(Local-Preference)属性来实现对远端PE设备的路由的控制,使本端PE设备和远端PE设备能很好的兼容,实现了设备无关性。
具体实施方式
结合说明书附图,对本发明作进一步的说明。如图1所示,第一CE设备控制与其连接的N台本端PE设备的主从状态。本发明的主从状态是指,一个本端PE设备相对于连接它的CE设备来说存在“主状态”和“从状态”这两个状态,当一个本端PE设备相对于一个CE设备处于“主状态”的时候,我们称这个本端PE设备为这个CE设备的主本端PE设备(简称MPE)。相对的,当一个本端PE设备相对于一个CE设备处于“从状态”的时候,我们称这个本端PE设备为这个CE设备的从本端PE设备(简称作SPE)。只有MPE才能向远端PE设备发送到第一CE设备的路由,任何SPE都不能向远端PE设备发送这条路由。初始状态,所有本端PE设备都默认处于“从状态”;由第一CE设备选择(通过配置指定或者常用的选举方法)作为主状态的本端PE设备。确定MPE后,第一CE设备发出的数据都发送到与MPE连接的IPSec隧道,这样,在正常情况下,进入和发出第一CE设备的数据都通过MPE进行转发,这条经过MPE转发的数据传输通道称为主通道。相对的,经过SPE转发的数据传输通道称为从通道,从通道在通常情况下并不转发数据。
当主通道发生故障的时候,第一CE设备的数据流量需要切换到从通道上。主通道故障包括:(1)第一CE设备和MPE之间IPSec隧道的故障;(2)MPE本身的故障;(3)MPE和远端PE之间VPN隧道的故障。对应上述故障的数据传输通道进行切换,包括两个方面:
1.第一CE设备需要把发送的数据流量都从原来的MPE上切换到原来的SPE上。这只需要第一CE设备,把发送的数据都发送到与原来的SPE连接的IPSec隧道上就行了。
2.远端PE设备需要把从第二CE设备到第一CE设备的数据流量从原来的MPE上切换到原来的SPE。
对于这种切换,需要由第一CE设备,通知原来的SPE,把进入第一CE设备的数据流量,全部切换到从通道上。切换过程是:根据第一CE设备的通知消息,原来的SPE把自己的状态切换为“主状态”,也就是原来的SPE变为了新的MPE。然后这个新的MPE向远端PE设备,发送一条到第一CE设备的高本地优先级(Local-Preference)的BGP路由,远端PE设备收到该路由信息后,根据BGP的选路原则,把这条路由选为最优的路由。这样远端PE设备到第一CE设备的数据流量,都被切换到从通道上。完成这些后,原来的从通道变为了新的主通道,进出第一CE设备的数据流量,都经过这条新的主通道进行转发。
在数据传输通道完成切换后,第一CE设备还需要通知原来的MPE变为新的SPE。这个时候原来的MPE可能已经发生故障或者到达它的网络不通,第一CE设备需要等到故障消除后才能进行通知。原来的MPE接到通知后,把自己的状态转为“从状态”,然后向远端PE设备发送路由删除的消息,变为新的SPE。
在上述过程完成后,第一CE设备通知新的MPE,向远端PE设备发送一条到第一CE设备的默认本地优先级(Local-Preference)的BGP路由,取代先前发送的高本地优先级(Local-Preference)路由,整个切换工作完成.
本发明解决了现有IPSec隧道接入MPLS网络方案中,当IPSec隧道、VPN隧道或者本端PE设备发生故障的时候,切换时间可能比较长的问题,提供了一个整体的解决方案。
实施例
参见图2,第一CE设备CE1通过Internet和两台本端PE设备PE1和PE2分别建立了IPSec隧道。两台本端PE设备都和一台远端PE设备PE3连接,之间运行MP-BGP路由协议。CE1需要和CE2进行通信。
CE1和两台本端PE设备PE1和PE2分别建立IPSec隧道后,两台本端PE设备都默认处于“从状态”。假设CE1选定PE1为MPE,将向PE1发送一个状态切换消息;PE1收到这条消息后,把自己置为“主状态”。PE1实现“从状态”到“主状态”的切换。
CE1发往CE2的数据,使用CE1和PE1连接的IPSec隧道,到达PE1的VRF中后,再由PE1把这些数据打上标签转发到MPLS网络中。IPSec隧道会在PE1和PE1的VRF中都生成一条到达CE1的静态路由,PE1因为处于“主状态”,会把这条路由通过MP-BGP发送给远端PE设备PE3。PE2因为处于“从状态”,不会把这条路由发送给PE3。PE1在发送路由的时候,会将路由的本地优先级(Local-Preference)设置为默认值。PE3收到这条路由后,把它作为最优路由装入自己的转发表。这样从CE2发往CE1的数据会先由PE3发送到PE1的VRF中,再由CE1与PE1连接的IPSec隧道发送到CE1。于是CE1←→PE1←→PE3←→CE2形成了正常情况下数据转发的主通道。
CE1需要对网络中的故障情况作出反应,包括三个故障点:(1)CE1和PE1之间IPSec隧道的故障,(2)PE1设备本身的故障,(3)PE1和PE3之间VPN隧道的故障。其中对故障(1)和故障(2)由CE1设备通过使用IPSec隧道的DPD机制进行检测,当故障发生的时候CE1能够感知。对故障(3)由PE1(MPE)使用MPLS网络已有的一些检测机制进行检测,当PE1检测到故障后会向CE1发送一条故障通知消息。
针对前述故障,CE1设备要进行切换动作,整个过程如图3所示,具体步骤如下:
1)CE1启用和PE2相连的IPSec隧道作为自己发送数据的数据传输通道。
2)如图3所示,CE1向PE2(SPE)发送一条状态切换消息,要求PE2进行从“从状态”到“主状态”的切换。PE2收到状态切换消息后,首先把自己的状态变为“主状态”,即变为新的MPE。然后把VRF中到CE1的静态路由通过MP-BGP发送给PE3,要注意的是,这条BGP路由的本地优先级(Local-Preference)属性被设置为比默认值高的一个值。PE3在收到这条路由后,根据BGP的选路原则,优选PE2发送的这条路由并将其装入到转发表中,这样CE2发往CE1的流量将经过PE3和PE2进行转发。综合步骤1,这就形成了CE1←→PE2←→PE3←→CE2这样一条新的主通道。完成了上述切换动作后,PE2向CE1发送一条状态切换完成消息。
3)如图3所示,在进行步骤2的同时,CE1向PE1也发送了一条状态切换消息,要求PE1进行从“主状态”到“从状态”的切换动作.注意,如果发生的是PE1和PE3之间VPN隧道的故障,这条状态切换消息可以立刻发送给PE1;但如果发生的是CE1和PE1之间IPSec隧道的故障或PE1设备本身的故障的话,那这个时候CE1和PE1之间是无法通信的,所以这个状态切换消息将在网络或PE1恢复后发送到PE1.PE1收到状态切换消息后,首先把自己的状态变为“从状态”,即变为新的SPE,然后向PE3发送路由删除的消息,删掉以前发送的通往CE1的路由.完成了上述切换动作后,PE2向CE1发送一条状态切换完成消息.
4)CE1在收到了PE1的状态切换完成消息后,要向PE2再发送一条状态切换完成消息。PE2收到这条消息后,向PE3发送一条到CE1的默认本地优先级(Local-Preference)的BGP路由,取代先前发送的高本地优先级(Local-Preference)路由。整个切换过程结束后,CE1和CE2之间的数据都通过新的主通道进行转发了。
如前所述,第一CE设备和本端PE设备之间存在三种消息:(1)状态切换消息,(2)状态切换完成消息,(3)故障通知消息。
在上述实施例中,第一CE设备同时接入到2个本端PE设备,其实本端PE设备的个数可以多于两个,即第一CE设备可以同时接入到多个本端PE设备。而可以处于“主状态”的本端PE设备的个数和远端PE设备的BGP配置有关。当远端PE设备在对应的VRF中配置了非等负载均衡或者没有配置负载均衡的时候,无论有多少个本端PE设备,有且仅有一个能处于“主状态”,其它的都处于“从状态”,发生故障时的切换过程和上面所述相同。当远端PE设备在对应的VRF中配置了普通的负载均衡的时候,可以有多个本端PE设备同时处于“主状态”,而发生故障时的切换过程和上面所述类似,只是在切换的时候,处于“主状态”的本端PE设备如果收到一条要求它切换到“主状态”的状态切换消息,应该保持自己的“主状态”,同时要向远端PE设备发送高本地优先级(Local-Preference)的路由。如果远端PE设备的配置不明,则推荐使用只有一个本端PE设备处于“主状态”的方案。
上述描述是以IPSec接入BGP/MPLS VPN为例子,运营商提供的三层VPN可能有多种的实现方式,比如LSP隧道可以用GRE隧道和IPSec隧道等代替。本发明在这些情况下同样适用。