一种STP切换时IP单播平滑切换的方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种STP切换时IP单播平滑切换的方法及装置。
背景技术
在目前的企业网以及各种园区网络中,对于用户侧出于双机备份和业务负载分担功能的考虑,而广泛采用VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)+STP(Spanning Tree Protocol,生成树协议)协议的典型组网,如图1所示。
其中,STP是在局域网中消除数据链路层(二层)物理环路的协议。运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某些端口进行阻塞,最终将环路网络结构修剪成无环路的树型网络结构,从而防止报文在环路网络中不断增生和无限循环,避免设备由于重复接收相同的报文造成的报文处理能力下降。
VRRP将可以承担网关功能的一组路由器加入到备份组中,形成一台虚拟路由器,由VRRP的选举机制决定哪台路由器承担转发任务,局域网内的主机只需将虚拟路由器配置为缺省网关。VRRP是一种容错协议,在提高可靠性的同时,简化了主机的配置。在具有多播或广播能力的局域网(如以太网)中,借助VRRP能在某台路由器出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息。
STP生成树示意图如图2所示,可知为了在网络拓扑中解决环路的问题,选择交换机A作为生成树的树根(ROOT),将交换机B、交换机C、交换机D作为生成树的叶子。其中,正方形代表指定端口,圆形代表根端口,菱形代表非指定端口。STP生成树通过阻塞网络中适当的端口来打破网络中的环路,从而能够保证数据的转发。同时如果某条链路出现故障则被阻塞的端口就会转换为转发状态,从而自动恢复数据的转发,起到自动修复网络的作用。
在STP中存在着两种BPDU(Bridge Protocol Data Unit,网桥协议数据单元):一种是Config BPDU(配置BPDU),用来进行选举和维持网络状态;一种是TCN(Topology Change Notification,STP拓扑变化消息)BPDU,用来告知网络拓扑变化。其中,TCN BPDU,只有Config BPDU的前3个字段,即Protocol、Version、Type,其余的字段均为填充字节,可以说是一个不带桥信息的BPDU。TCN的发送按照本地配置的Hello Time,不同于配置BPDU的Hello Time。
STP中网桥可以根据以下方式确定网络拓扑结构发生改变:原来处于转发状态的端口down了(处于Blocking状态,而不是disable状态);或一个端口由Blocking状态转移到了Forwarding状态,并且网桥在该Forwarding状态的端口路径上具有一个指定端口,可以形成新的转发路径。
其中,网络拓扑结构变化不是指物理上的拓扑变化,而是树结构的变化。只要以上两种情况之一发生,则认为是拓扑结构发生了变化,检测到拓扑结构变化的交换机会从自己的根端口向上发送TCN,上行的指定端口接收到TCN以后,会以本身的配置BPDU回送一个确认报文,并通过本身的根端口继续向上发送TCN,一直到达根桥为止。发送TCN的交换机收到确认报文以后将不再发送TCN,如果上层交换机的指定端口没有发回确认报文,则下层交换机的根端口会不断发送TCN。
当根桥收到TCN以后向全网泛洪TC(Topology Change,拓扑变化)位置1的配置BPDU,所有的交换机都会转发这个报文直到整个网络都知道拓扑结构发生了改变。根桥发送这个BPDU的时间是MaxAge+ForwardingTime的时间。TC正是通知各交换机将MAC地址老化时间更新。交换机收到TC以后开始删除MAC地址表并重新学习,正好完成状态的迁移。这样基于最新的二层网络拓扑生成的最短生成树就建立起来了。
根桥发送BPDU为了加快MAC(Media Access Control,介质访问控制)地址表的老化——一般情况下MAC地址表要等很久才能老化,而已经知道拓扑结构发生变化的情况下还要等上数分钟才能通过其他链路转发数据,这会在一段时间内造成报文的无法。
图1组网实现中,当链路故障导致二层网络拓扑发生变化时,能够触发STP进行重新计算,网络新的最短转发路径很快恢复正常;二层报文会在VLAN(Virtual Local Area Network,虚拟局域网)内广播,可以保证二层联通性;但三层报文可能由于ARP(Address Resolution Protocol,地址解析协议)/ND(Neighbor Discovery Protocol,邻居发现协议)的学习缓慢,报文还使用原来的端口进行转发。在没有正确学习到ARP/ND的期间,会导致IP单播转发大量的丢包,三层以上的业务应用中断。直到ARP重新学习之后,最终才能恢复单播业务,不能实现IP单播业务的平滑切换。
发明内容
本发明提供了一种STP切换时IP单播平滑切换的方法及装置,确保IP单播业务的应用不发生中断,保证网关的可靠性和平滑切换。
本发明提供了一种STP切换时IP单播平滑切换的方法,应用于具有二层数据转发和三层数据转发功能的网络设备中,所述方法包括以下步骤:
所述网络设备通过二层快速收敛协议检测二层网络是否发生变化;
如果发生变化,所述网络设备确定发生变化的二层网络,并且不删除该二层网络对应的ARP/ND转发表项,将所述转发表项修改为广播模式,通过所述广播模式对三层数据进行转发。
其中,所述通过广播模式对三层数据进行转发,之后还包括:
重新学习ARP/ND转发表项;
恢复三层单播转发模式,根据所述ARP/ND转发表项对三层数据进行转发。
其中,所述恢复三层单播转发模式,根据所述ARP/ND转发表项对三层数据进行转发,之前还包括:
重新学习二层MAC转发表项,进行STP切换。
其中,如果所述ARP/ND重新学习次数超过预设次数均失败后,删除所述ARP/ND转发表项。
其中,所述二层网络发生变化包括网络设备故障、链路故障或网络拓扑变化。
其中,所述二层快速收敛协议包括:STP、RSTP或MSTP。
本发明提供了一种STP切换时IP单播平滑切换的网络设备,应用于二层数据转发和三层数据转发的网络中,包括:
二层故障检测模块,用于通过二层快速收敛协议检测二层网络是否发生变化,并将所述变化情况通过通知消息发送给IP单播转发模块;
IP单播转发模块,与所述二层故障检测模块连接,用于如果发生变化,所述网络设备确定发生变化的二层网络,并且不删除该二层网络对应的ARP/ND转发表项,将所述转发表项修改为广播模式,通过所述广播模式对三层数据进行转发。
其中,还包括:
联动通知模块,分别与所述二层故障检测模块和所述IP单播转发模块连接,用于接收所述通知消息,将所述通知消息异步转发给所述IP单播转发模块。
其中,
所述IP单播转发模块,还用于重新学习ARP/ND转发表项,恢复三层单播转发模式,根据所述ARP/ND转发表项对三层数据进行转发。
其中,
所述IP单播转发模块,还用于当所述ARP/ND重新学习次数超过预设次数均失败后,删除所述ARP/ND转发表项。
其中,还包括:
二层切换模块,与所述二层故障检测模块连接,用于重新学习二层MAC转发表项,进行STP切换。
与现有技术相比,本发明具有以下优点:
本发明中,在启用了二层快速收敛协议的网络中,链路故障或者拓扑变化后,三层模块进行联动处理,ARP表项不立刻删除,使用定时器进行ARP解析,解析成功则不删除ARP对应表项,将相关三层转发表项修改为广播,
另外,三层单播报文广播转发和VRRP的链路备份同时部署,在链路故障或者拓扑变化后,实现最大限度网络转发保证。
附图说明
图1是现有技术中VRRP+MSTP典型组网图;
图2是现有技术中STP生成树示意图;
图3是本发明中一种STP切换时IP单播平滑切换的方法流程图;
图4是本发明中一种二层收敛协议中的应用示意图;
图5是本发明中二层收敛协议计算的无环网络和数据流示意图;
图6是本发明中拓扑消息变化后的数据转发流程示意图;
图7是本发明中二层快速收敛协议和单播转发模块关联的网络设备结构图。
具体实施方式
本发明的核心思路是:在启用了二层快速收敛协议的网络中,当设备故障、链路故障或增加减少设备导致二层网络拓扑发生变化时,网络设备中检测到该变化的实体与网络设备中的三层单播转发模块进行联动,让单播转发模块感知这一网络拓扑变化,并且不删除相关ARP/ND转发表项,而是将该ARP/ND转发表项改为在VLAN内广播。从而确保三层单播业务的稳定性,从而更好的保证了网关的切换不会对其下业务产生任何影响。
本发明提供了一种STP切换时IP单播平滑切换的方法,应用于具有二层数据转发和三层数据转发功能的网络设备中,所述方法如图3所示,包括以下步骤:
步骤301,所述网络设备通过二层快速收敛协议检测二层网络是否发生变化。
为了保证二层网络的快速收敛,本发明在二层网络中采用快速感知网络变化和收敛的机制,能够检测出本网络设备、链路的故障或者网络拓扑变化(网络设备加入或退出)。并且通过协议的交互能够保证整个网络拓扑的快速收敛。这种拓扑变化并不一定是本设备的故障或者变化,而是部署在整个二层网络的所有变化或者故障都能够快速感知。本发明并没有要求具体采用哪种快速收敛协议,可以采用STP、RSTP或者MSTP等生成树协议,以及采用各种私有的二层快速收敛协议,只有网络设备具备了这个功能,才能够在网络发生故障时,快速感知网络拓扑的变化并重新计算最短路径,使得整个二层网络快速收敛。本发明可以采用的二层快速收敛协议包括上述协议,但不仅限于此。
图4是一个启用二层收敛协议的组网,SwitchB和SwitchC以SwitchA为网关,数据通过SwitchA上行做三层转发,下行数据的三层转发也在SwitchA终结。由于启用二层收敛协议,这样有环路的网络肯定有一个边的连接端口会阻塞。假如SwitchA和SwitchC之间的端口阻塞,如图5,虚线表示数据的转发。
假如拓扑变化,SwitchA和SwitchB之间的链路断掉,二层收敛协议的拓扑变化消息最先通知全网。SwitchA和SwitchC之间的端口由阻塞状态转换为转发状态,如图6,虚线表示数据的转发。
步骤302,如果发生变化,所述网络设备确定发生变化的二层网络,并且不删除该二层网络对应的ARP/ND转发表项,将所述转发表项修改为广播模式,通过所述广播模式对三层数据进行转发。
所述通过广播模式对三层数据进行转发之后,重新学习ARP/ND转发表项;恢复三层单播转发模式,根据所述ARP/ND转发表项对三层数据进行转发。如果所述ARP/ND重新学习多次失败后,删除所述ARP/ND转发表项。
如果二层网络快速收敛协议发现了网络设备、链路的故障或者网络拓扑变化,本发明提出通过某种机制或者手段来通知本设备的三层单播转发模块感知这种故障并采取合理的处理。本发明并不限制具体通知故障的机制或者手段,例如模块间的消息队列或者任务间的通信等。但是要求这种机制必须满足下面的要求:
这种联动的机制要能够正确的传达哪一个二层网络发生故障的信息,这种故障会影响到网络拓扑的变化,并且已经快速恢复。这种机制并不需要说明具体哪一台设备或者哪一个链路发生故障,单播转发模块只需要知道这个二层网络发生故障需要联动即可。为了尽量减少三层转发丢包,在二层发生故障或者拓扑变化后,二层协议需要快速通知单播模块,而不是等到二层收敛后才通知。
本发明除了包括前面描述的联动技术和方法之外,还包括一种实现二层快速收敛协议和单播转发模块关联的网络设备,如图7所示,包括:
二层故障检测模块710,用于通过二层快速收敛协议检测二层网络是否发生变化,二层拓扑变化或链路发生故障后,将所述变化情况通过通知消息发送给IP单播转发模块720,具体使用的协议不限,例如模块间的消息队列或者任务间的通信等;
IP单播转发模块720,与所述二层故障检测模块连接,用于如果发生变化,所述网络设备确定发生变化的二层网络,并且不删除该二层网络对应的ARP/ND转发表项,将所述转发表项修改为广播模式,通过所述广播模式对三层数据进行转发。
IP单播转发模块720,还用于启用定时器,完成ARP/ND表项的重新解析,重新学习ARP/ND转发表项,恢复三层单播转发模式,根据所述ARP/ND转发表项对三层数据进行转发,如果所述ARP/ND重新学习多次失败后,删除所述ARP/ND转发表项。其中,定期器周期和重新解析次数可配,可以根据不同应用场合具体定制。
其中,ARP/ND重新学习过程例如:站点A和B所在网段都属于交换机上的直连网段,若站点A和站点B不在同一子网内,发送站A首先要向其“缺省网关”发出ARP请求报文,而“缺省网关”的IP地址其实就是三层交换机上站点A所属VLAN的IP地址。当发送站A对“缺省网关”的IP地址广播出一个ARP请求时,交换机就向发送站A回一个ARP回复报文,告诉站点A交换机此VLAN的MAC地址,同时可以通过软件把站点A的IP地址、MAC地址、与交换机直接相连的端口号等信息设置到交换芯片的三层硬件表项中。站点A收到这个ARP回复报文之后,进行目的MAC地址替换,把要发给B的包首先发给交换机。交换机收到这个包以后,同样首先进行源MAC地址学习,目的MAC地址查找,由于此时目的MAC地址为交换机的MAC地址,在这种情况下将会把该报文送到交换芯片的三层引擎处理。由于芯片内部的三层引擎中已经保存站点A、B的路由信息,以后站点A、B之间进行通信或其它网段的站点想要与A、B进行通信,交换芯片则会直接把包从三层硬件表项中指定的端口转发出去,而不必再把包交给CPU处理。
为了保证二层相关业务实时性,以及相关业务不被阻塞,二层故障检测单元发现故障后,不直接通知IP单播模块直接进行处理,而是借用联动通知模块730实现异步通知。联动通知模块730,分别与二层故障检测模块710和IP单播转发模块720连接,用于接收所述通知消息,将所述通知消息异步转发给所述IP单播转发模块720。
二层切换模块740,与二层故障检测模块710连接,用于重新学习二层MAC转发表项,进行STP切换。重新学习过程中不断收集信息去建立起新MAC地址表。这个表相基本上说明了某个MAC地址是在哪个端口上被发现的,这样当交换机收到一个以太网包时,便会查看一下该以太网包的目的MAC地址,核对一下自己的地址表以确认该从哪个端口把包发出去。但当交换机收到一个不认识的包时,也就是说如果目的MAC地址不在MAC地址表中,交换机便会把该包“扩散”出去,即从所有端口发出去。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。