具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本申请作进一步详细说明。
本发明提出一种在边缘设备(ED)上的链路备份方法,应用于基于虚拟链路实现各站点网络之间二层互联的ED中。在主用ED确定主用链路发生故障时,立即通知站点内受故障影响的CE进行流量切换,由备用ED从备用链路进行转发。也就是说,如果主用链路发生故障,CE不必等待ARP表项老化后重新学习,按照重新学习的ARP信息来触发VLAN流量的切换,而是由主用ED主动通知CE进行流量切换,加快了流量切换的速度,减少流量丢失的风险。
下面先对本发明的ED进行详细说明:
图2是本发明ED内部结构示意图。如图2所示,该设备作为一种路由设备,至少包括主控单元201、转发芯片202和接口单元203。实际应用中,主控单元201由CPU等硬件实现;转发芯片202与现有技术中的转发芯片一样,保存有MAC硬件表,主要负责报文转发时的地址查询等工作;而接口单元203主要指ED对外的接口,包括物理端口或逻辑接口。其中,
主控单元201:在ED作为主用ED时,通过接口单元203将配置的主备信息通知给自身站点内的CE,所述CE为指定VLAN下的CE;确定主用链路发生故障时,从指定VLAN下的CE中确定受故障影响的CE,并通过接口单元通知受故障影响的CE进行流量切换;在ED作为备用ED时,负责监听指定VLAN的流量。
转发芯片202,在ED作为主用ED时,负责从主用链路转发指定VLAN的流量;在ED作为备用ED时,将监听到的受故障影响的CE的VLAN流量从备用链路转发。
接口单元203,用于本ED与外界的报文收发。
也就是说,本发明所述的ED可以作为主用ED,也可以作为备用ED。当作为主用ED时,主控单元201需要将组网时确定的主备信息通过接口单元203通知给自身站点下的CE,并由转发芯片202负责指定VLAN流量的转发。一旦确定主用链路发生了故障,主控单元201将立即通知受故障影响的CE进行流量切换。当作为备用ED时,在主用链路正常的情况下,主控单元201仅监听主用ED指定的VLAN流量,一旦监听到受故障影响的CE的VLAN流量,则由转发芯片202从备用链路进行转发。
为了更好地描述本发明方案,下面再用较佳实施例进行详细说明。
实施例一
图3是本实施例的EVI网络组网结构图。如图3所示,站点1设置了两个ED,ED1和ED2。其中,ED1下挂CE1和CE3,ED2下挂CE2和CE4。本实施例的ED之间采用全连接架构,ED1、ED2分别通过隧道与异地站点2和站点3相连。站点2的边缘设备为ED3,下挂服务器3,其MAC地址为MAC3。站点3的边缘设备为ED4,下挂服务器4,其MAC地址为MAC4。ED1和ED2同属一个EVI实例,ED1作为主用ED负责VLAN1~VLAN10的流量转发,ED2仅对VLAN1~VLAN10进行监听。同时,ED2还可以作为主用ED负责VLAN11~VLAN20的流量转发,ED1仅对VLAN11~VLAN20进行监听。也就是说,一个ED担当主用或备用的角色是针对其是否承担某个VLAN流量转发工作来决定的,对于某个VLAN来说,该ED可能是主用ED,但对于另一个VLAN来说,该ED却可能是备用ED。
本实施例中,假设VLAN1中的CE1访问站点3中的服务器4,VLAN1的流量将通过主用链路(ED1—>ED3—>ED4)到达服务器4。
本实施例中,ED需要将主备信息通知给CE,还需要在故障发生时指示CE进行切换,ED之间也可能交互,即:ED和CE之间,ED和ED之间需要交互。本实施例利用了中间系统到中间系统(ISIS)协议中的ISIS HELLO报文,将其作为ED和CE之间以及ED和ED之间交互的报文。为了便于携带主备信息或链路故障等信息,可以在现有的ISIS HELLO报文中增加一个代码长度值(Code-Length-Value,CLV),其格式如表一所示。
CODE |
LENGTH |
MESSAGE TYPE |
XID |
VALUE |
表一
其中,“CODE”字段表示新增CLV的标识;“LENGTH”字段表示CLV的字节长度;“MESSAGE TYPE”字段表示报文的类型,并规定值为1时表示该报文为ED发送给CE的请求报文,值为2时表示CE返回给ED的响应报文,值为3时表示该报文为ED之间的交互;“XID”字段表示ED发起一次请求时产生的随机数,可标识一次主备流量切换请求过程;“VALUE”字段表示发送方通知给接收方的信息,并规定:当MESSAGE TYPE为1时,本字段可以携带主备信息,比如设备的ISIS的系统标识(SYSTEM ID),以通知CE当前的主备信息;当MESSAGE TYPE为1时,本字段还可以携带流量切换指示,以通知CE进行切换;在MESSAGE TYPE为2时,本字段缺省或者说为空;在MESSAGE TYPE为3时,携带故障点两端的ISIS的SYSTEM ID,以指明故障发生的位置。当然,实际应用中也可以采用其它形式的报文用于交互,并不限于本实施例新增CLV的ISISHELLO报文。
也就是说,本实施例在ED和CE之间,以及ED和ED之间交互的ISIS HELLO报文至少有这样几类:
1、用于ED向CE通知主备信息的ISIS HELLO报文。其中,“MESSAGETYPE”字段为1,“VALUE”字段携带主备信息。
2、用于ED向CE指示流量切换的ISIS HELLO报文。其中,“MESSAGETYPE”字段为1,“VALUE”字段携带流量切换指示。
3、用于ED和ED之间故障通知的ISIS HELLO报文。其中,“MESSAGETYPE”字段为3,“VALUE”字段携带故障点两端的ISIS的SYSTEMID。
4、用于CE向ED反馈的ISIS HELLO响应报文。其中,“MESSAGE TYPE”字段为2,“VALUE”字段缺省。
假设某时刻ED1和ED3之间部分的链路发生故障,本实施例实现流量切换的流程包括以下步骤:
步骤S1:ED1将配置的主备信息通知给自身站点内的CE1和CE2,所述ED1为主用ED,负责VLAN1~VLAN10的流量转发;同时,ED2为备用ED,对VLAN1~VLAN10进行监听。
实际应用中,本步骤可以由ED1的主控单元201来实现。另外,ED1向CE1和CE2发送的ISIS HELLO报文中“MESSAGE TYPE”字段为1,“VALUE”字段携带ED1和ED2的设备信息,以便通知CE1谁作为主用ED,谁作为备用ED。
步骤S2:CE1和CE2向ED1返回响应报文。这里,响应报文也是ISIS HELLO报文,但其中“MESSAGE TYPE”字段为2,“VALUE”字段缺省。
上述步骤S1和S2实现了主备环境的配置。实际应用中,主用ED和备用ED之间还可以进一步交互确定主备关系,CE也可以同时将响应报文反馈给备用ED,如何实施可以由应用本实施例方案的用户自行确定,只要配置好主备关系即可。
步骤S3:ED1向ED2、ED3和ED4发送用于维持邻居关系的ISIS HELLO报文,在响应超时的情况下确定ED1自身和ED3之间的部分发生故障。
这里所述的ISIS HELLO报文可以是没有增加CLV的现有的ISIS HELLO报文,也可以是增加CLV的本实施例的ISIS HELLO报文,只要定义了表示维护邻居关系的含义即可。比如,可以定义上述CLV的“MESSAGE TYPE”字段值为4,“VALUE”字段缺省时表示该ISIS HELLO报文用于维护邻居关系。当然,实际应用中还可以在ISIS HELLO报文中作其他形式的定义,或者说利用其它报文,只要达到维护邻居关系的目的即可。比如,ED1可以向ED3发送双向转发检测(BFD)报文,这样,在响应超时的情况下,ED1也可以确定自身和邻居之间的部分发生故障。
如果ED1向ED3发送用于维持邻居关系的ISIS HELLO报文,那么ED1中的ISIS协议可以直接感知链路发生了故障,并执行后续步骤。如果ED1向ED3发送BFD报文,那么ED1中的BFD协议还需要上报给ISIS协议,使之感知到链路发生了故障。感知到自身和邻居之间的部分链路发生故障之后,主用ED还可以进一步生成用于故障通知的ISIS HELLO报文,并泛洪给其他ED。
本步骤仅描述了ED1向自身的邻居发送维持邻居关系的报文,实际应用中,网络中的其他ED也会向自身邻居发送同样的维持邻居关系的报文,此情况将在下述实施例二中详细介绍。
步骤S4:ED1确定MAC4是受访问影响的MAC地址,并确定VLAN1包含受访问影响的MAC4,从而将VLAN1下的CE1和CE2确定为受故障影响的CE。
这里,由于ED1和ED3之间的链路发生了故障,那么,如果某些VLAN需要通过该链路对其他站点下的MAC地址进行访问,这些访问都将受到影响。显然,这些VLAN下的CE也就是受影响的CE。实际应用中,至于如何确定受访问影响的MAC地址,以及哪些VLAN包含受访问影响的MAC地址等比较容易实现。比如,ED1中保存有其他站点下的MAC地址,并记录了这些MAC地址所属的VLAN,通过这些信息就可以确定受影响的MAC地址以及VLAN,从而确定受故障影响的CE。这里仅仅是以服务器4的地址MAC4和VLAN1为例进行说明的,实际应用中还可能有其他MAC地址以及相关的VLAN受到影响,可根据实际情况确定。
本实施例中,上述步骤S3和S4如何确定受故障影响的CE,以及泛洪用于故障通知的ISIS HELLO报文等,可由ED1的主控单元201实现。
步骤S5:ED1向CE1和CE2发送用于指示流量切换的ISIS HELLO报文。这里ISIS HELLO报文携带有CLV,其中,“MESSAGE TYPE”的值为1,“VALUE”字段携带流量切换指示,表示此消息为ED向CE发起的请求消息,请求CE进行流量切换。
实际应用中,本步骤可以由ED1的主控单元201实现,以通知受故障影响的CE进行流量切换。
步骤S6:CE1和CE2向ED1返回响应报文。
步骤S7:CE1和CE2切换流量,原来发送给ED1的VLAN1流量转而发送给ED2。
步骤S8:ED2监听到受故障影响的VLAN1的流量,将其从备用链路转发出去。实际应用中,ED2中的主控单元201可以监听受故障影响的VLAN流量,并由转发芯片202从备用链路转发。
至此,ED1成功地感知到主用链路发生了故障,并指示CE1和CE2进行流量切换,加快了流量切换的速度,避免流量丢失。
实施例二
图4是本实施例的EVI网络组网结构图。如图4所示,站点1设置了两个ED,ED1和ED2。其中,ED1下挂CE1和CE3,ED2下挂CE2和CE4。本实施例的ED之间采用全连接架构,ED1、ED2分别通过隧道与异地站点2和站点3相连。站点2的边缘设备为ED3,下挂服务器3,其MAC地址为MAC3。站点3的边缘设备为ED4,下挂服务器4,其MAC地址为MAC4。ED1和ED2同属一个EVI实例,ED1作为主用ED负责VLAN1~VLAN10的流量转发,ED2则仅对VLAN1~VLAN10进行监听。同时,ED2作为主用ED负责VLAN11~VLAN20的流量转发,ED1仅对VLAN11~VLAN20进行监听。
本实施例中,假设VLAN11中的CE2访问站点2中的服务器3,VLAN11的流量通过主用链路(ED2—>ED4—>ED3)到达服务器3。
本实施例中,ED和CE之间以及ED之间仍采用增加了CLV的ISIS HELLO报文进行交互,其定义与实施例一相同,此处不再赘述。
假设某时刻ED3和ED4之间的链路发生故障,本实施例实现流量切换的流程包括以下步骤:
步骤T1:ED2将配置的主备信息通知给自身站点内的CE1和CE2,所述ED2为主用ED,负责VLAN11~VLAN20的流量转发;同时,ED1为备用ED,对VLAN11~VLAN20进行监听。
步骤T2:CE1和CE2向ED2返回响应报文,其中“MESSAGE TYPE”字段为2,“VALUE”字段缺省。
上述步骤T1和T2与实施例一中的步骤S1和S2相似,可以由ED2中的主控单元201实现,此处不再赘述。
步骤T3:ED4向ED1、ED2和ED3发送用于维持邻居关系的BFD报文,在响应超时的情况下确定ED4自身和ED3之间的部分发生故障。
与实施例一的步骤S3不同的是,ED4向邻居发送的是BFD报文,而不是ISISHELLO报文,可以更快地感知到链路故障。当然,本实施例仅描述了ED4维持邻居关系的情况,其余ED也需要维持自身的邻居关系,此处不再一一列举。
需要注意的是,当某个ED确定自身和邻居之间部分的链路发生故障时,可以将发生故障的信息泛洪出去,网络中其他ED可据此确定该链路发生了故障。本实施例中,ED4可以利用故障通知的ISIS HELLO报文将信息泛洪给其他ED,其中CLV中的“MESSAGE TYPE”字段为3,“VALUE”字段携带故障点两端的ISIS的SYSTEM ID,即ED3和ED4的SYSTEM ID,以表示故障点发生在ED3和ED4之间。
步骤T4:ED2接收到其他ED泛洪过来的用于故障通知的ISIS HELLO报文,根据ISIS最短路径树以及该ISIS HELLO报文确定主用链路中其他ED之间的部分发生故障,根据故障点确定MAC3为受访问影响的MAC地址,并确定VLAN11包含MAC3,于是将VLAN11下的CE1和CE2确定为受故障影响的CE。
本步骤确定受访问影响的CE的方法与实施例一类似,其区别在于:实施例一中,由于是ED1和邻居ED3之间的链路发生了故障,ED1可以直接确定故障点。本实施例二中是在ED3和ED4发生了故障,ED2无法直接感知,而是通过ED4泛洪过来的ISIS HELLO报文才知道故障的发生。但,EVI网络中的ED都保存有ISIS最短路径树,根据最短路径树和泛洪过来的报文中携带的SYSTEM ID就可以确定故障点的位置。至于确定受访问的MAC地址、确定包含受访问影响的MAC地址的VLAN,以及确定受故障影响的CE的方法则与实施例一相同。
实际应用中,上述步骤T3和T4确定受故障影响的CE的工作可由ED2的主控单元201实现。
步骤T5:ED2向CE1和CE2发送用于指示流量切换的ISIS HELLO报文。这里ISIS HELLO报文携带有CLV,其中,“MESSAGE TYPE”的值为1,“VALUE”字段携带流量切换指示,表示此消息为ED向CE发起的请求消息,请求CE进行流量切换。
实际应用中,本步骤可以由ED2的主控单元201实现,以通知受故障影响的CE进行流量切换。
步骤T6:CE1和CE2向ED2返回响应报文。
步骤T7:CE1和CE2切换流量,原来发送给ED2的VLAN11流量转而发送给ED1。
步骤T8:ED1监听到受故障影响的VLAN11的流量,将其从备用链路转发出去。实际应用中,ED1中的主控单元201可以监听受故障影响的VLAN流量,由转发芯片202从备用链路转发。
同样,本实施例的ED2也可以感知到主用链路发生了故障,并指示CE1和CE2进行流量切换,加快了流量切换的速度,避免流量丢失。
上述实施例一和实施例二的站点1中仅设置了一个主用ED和一个备用ED,而实际应用中,还可以设置多个备用ED。这种情况下,可以事先配置各个备用ED的优先级,使受故障影响的CE将VLAN流量切换到优先级最高的备用ED上。进一步地,CE在切换后,还可以触发其他备用ED进行选举,形成新的主备关系。
另外,当主用ED确定主用链路恢复正常之后,还可以通知CE将VLAN流量切换回来。进一步地,主用ED还可以重新计算路径并重新划分主用ED和备用ED,将主备信息通知给CE后,然后CE将VLAN流量切换到新的主用ED上。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。