多环网多根交换机的检测和自愈算法的制作方法

文档序号:7887011阅读:431来源:国知局
专利名称:多环网多根交换机的检测和自愈算法的制作方法
技术领域
本发明涉及工业以太网中数据链路层的多环路多根交换机的检测和自愈算法,采用主从式架构,可以快速的判断链路是否成环,并在成环后可以快速禁用一个端口阻止成环,在链路故障的时候可以打开备用端口,恢复通信。本算法可以检测数据链路检测是否成环,成环后快速禁用一个特定的交换机端口,并且在链路故障后打开禁用的端口使链路重新恢复正常。同时本算法中支持链路中存在多个环路,每个环路都可以检测和自愈。
背景技术
通讯领域中交换机的链接一般是树形拓扑结构,树形拓扑结构造成一条链路故障后网络的各个部分失去联系。工业现场中的交换机的拓扑结构经常是环形的,任意交换机之间有2个线路可达。环形的拓扑结构会造风暴,引发交换机的MAC地址表异常,所以在工业通讯领域,需要一套检测交换机成环,并且成环后可以快速禁用交换机的端口,阻止链路成环的算法,同时在链路产生故障的时候,可以打开禁用的端口,让通信回复正常。同时链路中的环路不止一条,需要区分和分别加以检测和自愈。

发明内容
相互连接的交换机如果形成环路,造成一种现象就是A交换机发出的报文,最后会被A交换机接收,此时只需要该环路中的一台交换机断开一条链路就可以阻止成环。本算法选择环路中MAC地址最小的交换机,让该交换机负责禁用自己的一个端口阻止环路。 假设交换机A的1 口,发送的数据,最后回到交换机A的2 口,同时交换机的MAC地址在环路中最小,就决定禁用端口编号大的端口。环路中的MAC地址最小的交换机是根交换机。网络中存在多个环,就有多个根交换机。每个环中的每个根交换机分别负责自己所在环的链路检测和自愈。通过这种方法,可以把一个大的网络划分成几个独立的小环。根交换机检测出成环以后,配置根端口,然后在成环的两个端口分别发出链路成环确认报文,该报文中包括根交换机的MAC地址,链路编号,链路的深度(初始为0),发送的方向(根端口的报文时正方向,另外一个端口是负方向)。环路中的交换机接收这两个报文,设置自己的属性,该属性包含自己在环路中的向上的端口,向下的端口,链路的深度等等。同时这些报文会被接收的交换机进行转发,转发时深度加1。在一个环路中交换机的角色和端口的角色是不同的,它们的作用和收发报文的类型也不相同。具体的介绍如下交换机角色和端口角色交换机的角色有两种,分别是根交换机和普通交换机。1、根交换机在一个成环的网络中,MAC地址最小的交换机是根交换机,它负责禁用自己的端口,阻止链路成环,同时在链路故障时,负责打开被禁用的端口。2、普通交换机除根交换机以外的交换机都是普通交换机。根交换机的端口角色四种1、根端口 根交换机中连接成环的端口
2、普通端口 根交换机中非连接成环的端口。3、叶子端口 连接终端设备的端口(需要特别指定)4、阻塞端口 根交换机中被禁用的端口普通交换机的端口角色有四种1、向上端口 向上连接到根交换机中连接成环的端口2、叶子端口 连接终端设备的端口(需要特别指定)3、向下端口 出了 1和2的端口外其他类型的端口。4、待定端口 不是上述三种端口的任何一种环路中的交换机它们的角色不同,它们保留了不同的端口属性,普通交换机的端口属性包含根MAC地址,向上的MAC地址,链路编号,深度编号(从根交换机到本交换机的中间经过的交换机的个数)。可以根据根MAC和链路编号区分出各个不同的环。所有属性在初始化时都是0,然后收到根交换机发出的链路成环的确认报文,进行计算和更新。交换机可能参与了多个环,链路编号和深度编号不相等,根MAC地址和向上的 MAC地址不相等。发送报文的类型1、链路连上的hello报文交换机的端口打开,相邻的两台交换机之间发送的报文,该报文不会被接受方转发。该报文包含交换机的属性。2、链路连上通知报文交换机的端口打开,打开的端口发送的报文,该报文会被接受方接受转发和修改。3、检测成环确认报文环路检测出成环以后,根交换机发出确认成环报文,报文包含根MAC地址,链路编号和方向等信息。相连的交换机会接收,修改转发。检测成环确认报文中有方向字段,方向包含正方向和负方向两种可能,分别从两个不同的端口发出来。4、链路断开的通知报文检测出链路断开的交换机发出,它顺着交换机的向上的端口进行转发,该报文传到根交换机后,根交换机以前被打开被阻塞的端口。5、请求链路断开报文链路成环以后,链路中的链路连上通知报文,最终会被发送方接受,但是如果接收方的MAC地址不是链路中的最小的MAC地址,它没有权利禁用自己端口,但是它会发送链路断开的请求报文,该报文会被收到并转发,最终会被环路中的MAC地址最小的交换机接收并处理。检测成环根据的hello报文和链路连上的通知报文确定的。第一种情况是链路没有检测出成环,根据链路连上通知报文判断,当交换机的端口连上时对自己所有的端口发出链路连上通知报文(报文的内容是自己的MAC,连上的端口,最小的MAC,刚开始等于自己的MAC),对端交换机接收以后,根据自己的MAC和最小的MAC比较,修改最小的MAC,然后转发出去。报文在链路中被转发,如果线路成环,最终该报文会被最开始的发送方接受,此时判断接收的MAC和自己的MAC是否相等,并且自己的MAC和最小的MAC相等,处理是下面的步骤A的描述。如果接收的MAC和自己的MAC相等,但是自己的MAC不是最小的MAC,参考步骤B的描述。1、步骤A说明环路中最小MAC地址的交换机在接收端口和最开始的发送端口发出检测成环确认报文(一个正方向的报文,一个负方向的报文),接受交换机根据这两种报文设置自己的属性和确认自己的向上的端口和向下的端口,比如收到正方向的报文,转发负方向的报文,则该端口是向上的端口,反之则是向下的借口,如果只满足一种,那么该端口没有参与成环。2、步骤B的说明链路检测出成环了,但是检测出来的交换机的MAC地址在链路环路中并不是最小的,此时它发出链路断开请求报文,该请求报文被转发,然后被链路中MAC 地址最小的交换机收到,它发现自己的MAC和最小的MAC相等,然后它的接收端口发出链路连上的通知报文,最后被自己的其他端口收到,处理过程和步骤A完全相同。第二种方法是链路成环后,链路中的交换机的属性已经正确设置完成后。环路中的交换机有新的端口加入进来了,新加入的端口和直接相连的交换机之间发送hello报文。可以按照hello中携带的交换机属性信息判断链路是否成环,如果收到的hello报文中根MAC和交换机保存的交换机属性集合中的根MAC相等同时链路编号一样,那么肯定成环,此时可以禁用最新打开的那个端口。上面两种检测的方式看出在最好情况下通过相连的交换机的2次hello报文的发送和接收和一次交换机的内部的比较和判断,检测成环的时间程度取决于链路扫描的时间间隔。同时在最差情况小,链路的连上通知报文需要在链路环上循环一周,如果环路中的交换机个数越多则检测的时间则越长。同时链路中的交换机端口每次连上都发出通知报文, 该报文会被转发的,所以在刚开始是链路中会有多个链路连上的通知报文在链路中传递。交换机内部有一个定时线程,它周期性扫描交换机的每个端口,如果发现交换机的某个交换机的端口断开,进行判断该端口的角色,如果该端口是个叶子端口(该端口连接的是终端设备),则不作任何处理。否则判断交换机的在链路中的角色,如果交换机是根交换机,而且断开的端口是根端口,打开交换机的阻塞端口,如果断开的端口是阻塞端口, 那么可以不作任何处理。如果该端口是普通端口(没有连接终端,没有参与成环的端口), 那么发出链路断开的通知报文。上面的检测断开的方法是针对的根交换机,针对普通交换机的检测方法比较简单扫描发现交换机的端口,如果端口是叶子端口,则不作任何处理,如果是向下的端口,则从向上的端口发送链路断开的通知报文(同时清空MAC地址库),该报文沿着向上的链路转发,最终转发到根交换机,然后跟交换机根据报文的内容打开阻塞大端口。根据上面小结的检测的链路端口断开和自愈的方法,可以使链路重新自愈,但是前提是该链路以前被检测出成环,根交换机禁用了引发阻塞的一个端口。它在最好的情况是断开的端口刚好是叶子端口,此时交换机可以不作任何处理。如果断开的端口是根交换机的根端口,只需要打开禁用的端口接口,自愈时间很短决定于端口的扫描时间间隔。如果是非根交换机的端口,如果是叶子则不用处理,如果是向下的端口,那么需要沿着向上的端口发送链路断开的更新通知消息,该消息被接收的交换机向上转发,一直到根交换机,然后根交换机打开以前被禁用的端口,自愈时间由断开的交换机到根交换机的深度决定,深度越深则自愈时间越长。


图1环网检测示图2交换机的角色和端口角色图3交换机属性设置的过程
图4通知报文判断链路成环的前半部分图5通知报文判断链路成环的后半部分图6 hello报文通知判断链路成环图7根交换机的端口检测和自愈
图8普通交换机的的端口检测和自愈
具体实施例方式两台交换机连上首先两个交换机之间通过hello报文发送自己的交换机的属性, 收到报文后进行判断,如果它们的根交换机MAC相等和链路的编号相等且两种都不是零, 它们以前在一个环路中,它们连上则肯定成环,该端口立即被禁用。否则发出链路连上通知报文,该报文被交换机进行转发,最后回到源发送方进行判断如果它的MAC最小,那么在收到和发出的两个端口上发出方向相反的链接成环确认报文,接收报文的交换机根据报文的内容设置自己的属性。源发送方接收到自己发送的报文后,禁用端口中编号大的端口。链路断开的时候,交换机判断自己的角色和端口的角色,如果是根交换机,断掉的端口是根端口,那个它打开禁用的端口。如果它是普通交换机,断掉的端口是向下的端口, 它向上发出链路断开通知报文,该报文一直被转发,同时接收的交换机情况接收端口的MAC 地址库,直到被根交换机接收到,然后根交换机打开禁用的端口,链路恢复正常。
权利要求
1.工业以太网中数据链路层的多环路多根交换机的检测和自愈算法,其特征是采用主从式架构,可快速判断链路是否成环,并在成环后可快速禁用一个端口阻止成环,同时在链路故障的时候可以打开备用端口,恢复通信。
2.根据权利要求说明书1所述的多环路检测和自愈方法,其特征是链路成环后,成环链路中MAC最小的交换机设成根交换机,由它负责链路的检测和自愈。
3.根据权利要求说明书1和2所述的多环路检测方法,其特征是如果存在多个环则有多个根交换机,每个单独的环可以看成一个独立的系统,链路的检测和自愈在每个独立的环中进行检测和自愈,不会涉及到其它的环。
4.根据权利要求说明书1所述的多环路检测和自愈方法,其特征是根交换机在成环的两个端口分别发出方向不同的成环确认报文,环路中的交换机收到这两个报文后,可以设置自己的向上的端口和向下的端口,同时设置交换机的相关属性。
5.根据权利要求说明书1所述的多环路检测和自愈方法,其特征是交换机端口接上后,交换机之间交换各自的属性,根据属性报文可以快速判断是否成环,如果判断出成环则可以禁用刚才接上的端口,否则发出链路接上的探测报文,该探测报文被转发,如果被自己收到则链路成环,然后通知链路中最小的MAC地址的交换机执行环路检测和自愈算法。
6.根据权利要求说明书1所述的多环路检测和自愈方法,其特征是链路断开后,交换机通过向上的端口,发送链路断开报文,该报文通过向上的端口进行转发,直到被根交换机收到,然后根交换机负责执行自愈算法,打开以前被禁用的端口。
全文摘要
本发明提出一种运行在数据链路层的二层以太网交换机之间的环路检测和自愈算法,用于提供冗余链路,支持链路备份。该算法包括1、检测数据链路层的是否成环。2、检测成环后根据策略,断开链路,阻止成环。3、检测链路中的链路断开。4、链路端口后,打开备用的链路。
文档编号H04L29/12GK102546346SQ20121000756
公开日2012年7月4日 申请日期2012年1月11日 优先权日2012年1月11日
发明者周厚明, 崔磊 申请人:武汉迈威光电技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1