一种检测以太网环路并且自动恢复的方法

文档序号:7839925阅读:359来源:国知局
专利名称:一种检测以太网环路并且自动恢复的方法
技术领域
本发明涉及以太网环路检测以及自动恢复的实现,由于需要将自定义的环路检测报文重定向到CPU进行处理,同时CPU还需要控制以太网交换芯片对报文的转发和过滤,因此要求以太网交换芯片能够支持报文的重定向和过滤功能,这项要求一般的以太网交换芯片都能满足,因此实现该功能和现有的0NU硬件相比没有任何改动。 图2给出了本发明的环路检测软件模块结构图,包括五个模块环路检测初始化模块、环路检测报文发送模块、环路检测报文接收模块、环路检测定时器模块、环路检测报 文防伪造模块。其中环路检测定时器模块包括环路检测接收定时器模块和环路检测自动恢 复定时器模块。这些模块中,环路检测报文发送模块、环路检测报文接收模块和环路检测定 时器模块需要周期性的运行,在本文中分别用任务来表示环路检测报文发送任务、环路检 测报文接收任务和环路检测报文定时器任务。环路检测初始化模块仅需要在初始时运行一 次,环路检测报文防伪造模块被环路检测报文接收模块所调用。 本发明基于图2所示的环路检测软件模块结构图,公开了一种检测以太网环路并 且自动恢复的方法,包括以下步骤 步骤l,环路检测初始化模块完成初始化,初始化的内容包括以太网交换芯片每 个用户端口的环路检测收发信息表、环路状态标记、受控状态标记、环路检测定时器超时时 间、环路检测执行的周期时间和以太网交换芯片的报文重定向规则,同时创建并运行三个 任务环路检测报文发送任务、环路检测报文接收任务和环路检测报文定时器任务;
步骤2,构造、收发、分析环路检测报文,判断是否存在环路环路检测报文发送模 块根据环路检测执行的周期时间周期性的为每个用户端口构造环路检测报文,并从每个用 户端口向以太网网络中发送该环路检测报文并记录发送信息到每个用户端口所对应的环 路检测收发信息表中;同时环路检测定时器模块调用环路检测接收定时器模块开始计时, 并且环路检测报文接收模块开始尝试从每个用户端口接收环路检测报文,如果超过环路检 测定时器超时时间后依然未收到环路检测报文,则认为该用户端口下不存在环路,如果在 环路检测定时器超时时间内收到环路检测报文,且经过环路检测报文防伪造模块检验确认 该环路检测报文真实有效,则认为该用户端口下存在环路,并记录接收信息到该用户端口 所对应的环路检测收发信息表中; 步骤3,标志位赋值,当用户端口下存在环路时,报文重定向到CPU并发出警告信 息;当用户端口下不存在环路时,环路检测定时器模块置该用户端口的环路状态标记为无 环路、置受控状态标记为不受控;当用户端口下存在环路时,依据以太网交换芯片的报文重 定向规则,环路检测报文被重定向到CPU,由环路检测报文接收模块处理;环路检测报文接 收模块置该用户端口的环路状态标记为有环路、置受控状态标记为受控,受控状态是指被 置为受控的用户端口除了环路检测报文的收发之外,丢弃掉其它报文;然后根据接收信息 逆向查找到发送该环路检测报文的用户端口,对发送和接收的用户端口进行比较,判断是 单端口环路故障还是多端口环路故障,同时报告告警信息; 步骤4,环路故障恢复情况监测及处理环路检测定时器模块调用环路检测自动 恢复定时器模块与环路检测接收定时器模块同步计时,环路检测报文接收模块开始尝试从 受控状态被置为受控的用户端口接收环路检测报文,如果超过环路检测定时器超时时间后 依然未收到环路检测报文,则认为该用户端口下不存在环路,环路检测定时器模块置该用 户端口的环路状态标记为无环路、置受控状态标记为不受控; 步骤5,重复步骤2到4,根据环路检测执行的周期时间周期性的检测用户端口是 否存在环路及存在环路的用户端口是否恢复正常。 在上述技术方案的基础上,步骤1中所说的环路检测收发信息表的表项包括用 户端口号、发送的Vlan ID、发送的时间戳、发送的随机序列号、发送的环路检测报文计数、 接收的Vlan ID、接收的时间戳、接收的随机序列号、接收的环路检测报文计数;环路检测收
7发信息表的表项以用户端口号为索引。 在上述技术方案的基础上,步骤1中所说的环路状态标记、受控状态标记分别被 初始化为无环路、不受控。 在上述技术方案的基础上,步骤1中所说的以太网交换芯片的报文重定向规则由
规则条件和规则动作构成,其具体内容为 规则条件1 :以太网类型=0x9001, 规则条件2 :目的MAC地址=广播地址, 规则条件3 :源MAC地址=0NU的MAC地址, 规则动作收到的报文重定向到CPU ; 上面3个规则条件需要同时满足,才执行规则动作。
以下通过一个具体实施例进一步说明本发明所述方法 环路检测初始化模块完成初始化的具体步骤可以如图5所示,具体步骤简述如 下 步骤1. l,环路检测初始化模块初始化以太网交换芯片每个用户端口的环路检测 收发信息表,该表的表项如图4所示;该表以用户端口号为索引,表项内容包括用户端口 号,发送的VLAN ID,发送的时间戳,发送的随机序列号、发送的环路检测报文计数、接收的 VLANID,接收的时间戳,接收的随机序列号、接收的环路检测报文计数;
步骤1. 2,初始化每个用户端口的环路状态标记和受控状态标记,其中环路状态标 记初始化为"不存在环路",受控状态标记初始化为"不受控"; 步骤1. 3,初始化用户端口的环路检测接收定时器和环路检测自动恢复定时器的
超时时间,分别记为Tl和T2 ;在本发明中Tl和T2针对所有用户端口都设置成相同的值,
如确有需求,采用现有技术还可以针对单个用户设置成不同的值,同时初始化环路检测报
文发送模块执行的周期T3和环路检测报文定时器模块执行的周期T4 ; 步骤1. 4,初始化以太网交换芯片的报文重定向规则; 规则的格式如下 规则=规则条件+规则动作; 规则条件=规则域+规则操作符+规则域的值+规则域掩码值;
规则动作={丢弃、重定向到某个端口等};
规则域=(用户端口号、目的MAC地址、源MAC地址、以太网类型、VLAN ID等};
规则操作符={ =、> = 、< = 、 !=等}; 规则域的值和规则域掩码值分别用数值表示,通常情况下分别用6个字节来表 示。 一条规则允许存在多个规则条件,各规则条件之间是"并且"的关系,只有当各规则条 件均成立时,才执行相应的规则动作。 根据上述格式,假设环路检测初始化模块初始化报文重定向规则如下 规则条件 (1)以太网类型=0x9001, (2)目的MAC地址二广播地址, (3)源MAC地址=0NU的MAC地址, 规则动作收到的报文重定向到CPU ;
上面3个规则条件对应的掩码值均为以下6个字节0xf f , 0xf f , Oxf f , Oxf f , Oxf f , 0xff,3个规则条件需要同时满足,才执行"收到的报文重定向到CPU"的规则动作。
步骤1. 5,同时创建并运行三个任务环路检测报文发送任务、环路检测报文接收 任务和环路检测报文定时器任务,这三个任务分别对应着环路检测报文发送模块、环路检 测报文接收模块以及环路检测定时器模块,并且是永远执行的,其中环路检测报文发送任 务和环路检测报文定时器任务是按环路检测执行的周期时间周期运行的,环路检测报文接 收任务则是收到了环路检测报文才开始运行,未收到环路检测报文时则处于等待状态。
本发明所述的环路检测报文格式如图3所示目的MAC地址+源MAC地址+VLAN 信息+以太网类型+净荷+填充字节+校验和,其中净荷部分的具体格式为源用户端口号 +源用户端口的VLAN ID+时间戳+随机序列号;所构造的环路检测报文中,VLAN信息中的 VLAN ID和净荷部分的源用户端口的VLAN ID相同。所述VLAN信息是从其它配置模块中获 取的,该模块并没有在本发明的软件模块结构图中标识出来,VLAN信息的获取可以采用现 有技术实现。如果没有获取到VLAN信息,则报文中源MAC地址之后的VLAN信息不填写,净 荷部分的源用户端口的VLAN ID填写为O。净荷部分的随机序列号针对每个端口是唯一的 和随机的。 图6是环路检测报文发送模块/接收模块/定时器模块的处理流程,其中环路检 测报文发送模块的具体工作步骤如下 步骤1.环路检测报文发送模块周期性的为每个用户端口构造环路检测报文,并 向该用户端口发送。这里的周期发送的间隔时间记为T3, T3可调,但是需要满足T3 > Tl 这个条件。 步骤2.生成环路检测报文环路检测报文发送模块为每个用户端口构造环路检 测报文时需要生成一个随机数,按照图3的格式生成环路检测报文。 步骤3.环路检测报文发送模块为每个用户端口生成环路检测报文后,发送至以 太网交换芯片对应的用户端口。 步骤4.环路检测报文发送模块发送环路检测报文后,将环路检测报文中净荷部 分的信息填写到对应用户端口的环路检测发送信息中。例如填写的信息为用户端口号 =P0RT1 ,发送的VLAN ID = VLAN1 ,发送的时间戳=TIMESTAMP1 ,发送的随机序列号= SESSI0N1。同时将用户端口 P0RT1的环路检测报文发送计数记为l,环路检测报文接收计数 记为0。这样记录的目的是为了检测在一个发送周期内,环路检测报文接收的计数是否超过 发送的计数以便判断环路检测报文是否是伪造的。
环路检测报文接收模块的具体工作步骤如下 步骤1.环路检测报文接收模块等待接收、处理环路检测报文以太网交换芯片收 到环路检测报文后,将符合报文重定向规则的环路检测报文重定向到CPU,由环路检测报文 接收模块处理。 步骤2.环路检测报文接收模块分析环路检测报文的净荷,净荷中的内容包括发 送的用户端口号=PORT 1 ,发送的VLAN ID = VLAN1 ,发送的时间戳=TIMESTAMP1 ,发送的随 机序列号=SESSIONl。 步骤3.环路检测报文接收模块记录环路检测报文接收时的状态信息,例如接 收到环路检测报文的用户端口号=P0RT2,接收的VLANID = VLAN2,接收的时间戳=TMESTAMP2,接收的随机序列号二 SESSI0N2,同时P0RT2接收的环路检测报文计数加1。其 中接收到环路检测报文的用户端口号来自该报文重定向到CPU时以太网交换芯片通知CPU 的附加信息,接收的VLAN信息来自环路检测报文中的VLAN信息而不是净荷中的VLAN信 息。接收的时间戳是指环路检测报文接收处理模块执行至此时所获取的系统当前时间。接 收的随机序列号来自环路检测报文净荷中的随机序列号。 步骤4.环路检测报文接收模块按照图7所示的方法判断接收到的环路检测报文 是否是伪造的,如果是伪造的,则直接丢弃该报文并转至步骤1等待接收下一个环路检测 报文,否则转至步骤5; 步骤5.判断该报文净荷的P0RT1与接收到环路检测报文的用户端口号P0RT2是 否相等,如果相等,则认为是单端口环路故障,转至步骤6,否则认为是双端口环路故障,转 至步骤7。 步骤6.如果P0RT1存在单端口环路故障,可以进一步判断单端口是在一个VLAN
内部发生了环路故障还是在多个VLAN内部。如果接收到的环路检测报文中的VLAN信息
(例如VLAN2)与净荷中发送的VLAN ID(例如VLAN1)相等,则认为是在单个VLAN内部发生
了环路故障,否则认为是在多个VLAN内部发生了环路故障。转至步骤8。 步骤7.如果P0RT1下存在双端口环路故障,即从P0RT1发送出去的环路检测报文
从P0RT2收到了 ,同时从P0RT1发送的VLAN信息为VLAN1,而从P0RT2收到的VLAN信息为
VLAN2,则此时向网管报告P0RT1的VLAN1与P0RT2的VLAN2形成了环路。 步骤8.出现环路故障后,不论是单端口环路故障还是多端口环路故障,都进行相
关的告警处理,同时将接收端口 P0RT2的环路状态标记为"存在环路",将受控状态标记置
为"受控"状态,在TL00P表中索引到P0RT2的记录表项,记录相应的接收VLAN信息,接收
的时间戳,接收的随机序列号。 步骤9.在以太网交换芯片上对应于P0RT2增加"不是环路检测的报文全部丢弃" 的规则,即P0RT2只能通过环路检测报文,其它的报文都将被丢弃。这里需要使用两条不同 优先级的规则联合来实现 (1)高优先级规则同环路检测初始化流程中步骤1. 4中的规则。 [OOSS] (2)低优先级规则
规则条件 用户端口号=P0RT2,源MAC地址二 00:00:00:00:00:01,值掩码为0x00,0x00, 0x00, 0x00, 0x00, 0x00,实际上任意报文都可以匹配该规则的条件,因此可以理解该规则的
条件为一任意的条件。
规则的动作丢弃。 以太网交换芯片首先匹配高优先级的规则,即将环路检测报文重定向到CPU ;对 于其他不匹配高优先级规则的报文,以太网交换芯片则会匹配到低优先级的规则,而任何 报文都会匹配到该低优先级的规则,因此实现了 "不是环路检测的报文全部丢弃"的规则。
如果仅隔离单个VLAN内的报文,即需要将特定VLAN内的报文丢弃,则需要将低优 先级规则的条件改为 用户端口号=P0RT2并且VLAN ID = VLAN1,值掩码均为0xff ,0xff ,0xff ,0xff , 0xff,0xff。
环路检测定时器模块的具体工作步骤如下 步骤1.环路检测定时器模块周期性逐一对用户端口进行下面的操作步骤2 步
骤8,周期的间隔时间为T4, T4可调,需要满足T4 < Tl并且T4 < T2这两个条件。 步骤2.检测用户端口的环路检测报文接收定时器是否超时,以P0RT1为例,其判
断条件如下,两个条件需要同时满足 (1) P0RT1的环路状态标记为"不存在环路"; (2)当前时间戳-PORTl的发送时间戳>=环路检测定时器接收超时时间11。当 前时间戳是指环路检测定时器模块执行此时所获取的系统当前时间。 步骤3.如果满足上述条件,则判定P0RT1下面没有环路,将P0RT1的环路状态标 记为"不存在环路",转至步骤4。否则表示收到了环路检测报文,这在环路检测报文接收模 块中已经处理了。 步骤4.设置P0RT1的受控状态标记为"不受控",转至步骤1继续下一个用户端口 的判断。 步骤5.检测用户端口的环路检测自动恢复定时器是否超时,以P0RT1为例,其判
断条件如下,两个条件需要同时满足 (l)PORTl的环路状态标记为"存在环路", (2)当前时间戳-PORTl的接收时间戳>=环路检测自动恢复定时器超时时间丁2。
步骤6.如果满足上述条件,则认为P0RT1下的环路已经消除。转至步骤7。否则 认为该端口下的环路没有消除。转至步骤8。 步骤7.如果P0RT1下的环路已经消除,则可以解除端口的"受控"状态,删除该端
口上对应的低优先级的规则,从而使数据可以正常转发。P0RT1的受控标记置为"不受控"。 步骤8.如果P0RT1下的环路没有消除,即在超时时间T2内环路检测报文接收模
块仍然接收到该报文,则不做处理,P0RT1需要继续处于"受控"状态。 图7给出了判断是否存在伪造的环路检测报文的处理流程,具体步骤为 步骤1.环路检测报文接收模块接收到环路检测报文并且进行解析后,获取报文
净荷中的发送端口号,发送VLAN信息,发送的时间戳和发送的随机标识符信息。 步骤2.以报文净荷中的发送端口号为索引,匹配TLOOP中的内容,匹配条件是报
文净荷中的随机序列号和TL00P中对应用户端口表项的随机序列号相等。若不等,则直接
丢弃该环路检测报文。若相等,则转至步骤3。 步骤3.比较报文净荷中的时间戳信息与TL00P表项中记录的该端口的时间戳信 息的差值是否在预设的接收超时时间(Tl)内,若不在该范围内,则直接丢弃该环路检测报 文。若在相应的范围内,则转至步骤4。 步骤4.比较该用户端口至上次发送以后端口未被"受控"之前所接收到的环路检 测报文的个数是否大于l,若满足该条件,则认为该端口下的设备在伪造环路检测报文,否 则不是。对于伪造的环路检测报文,也需要报告给网管。 以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原 则之内所做的任何修改、等同替换和改进等,均含于本发明的保护范围之内。
权利要求
一种检测以太网环路并且自动恢复的方法,其特征在于包括以下步骤步骤1,环路检测初始化模块完成初始化,初始化的内容包括以太网交换芯片每个用户端口的环路检测收发信息表、环路状态标记、受控状态标记、环路检测定时器超时时间、环路检测执行的周期时间和以太网交换芯片的报文重定向规则,同时创建并运行三个任务环路检测报文发送任务、环路检测报文接收任务和环路检测报文定时器任务;步骤2,构造、收发、分析环路检测报文,判断是否存在环路环路检测报文发送模块根据环路检测执行的周期时间周期性的为每个用户端口构造环路检测报文,并从每个用户端口向以太网网络中发送该环路检测报文并记录发送信息到每个用户端口所对应的环路检测收发信息表中;同时环路检测定时器模块调用环路检测接收定时器模块开始计时,并且环路检测报文接收模块开始尝试从每个用户端口接收环路检测报文,如果超过环路检测定时器超时时间后依然未收到环路检测报文,则认为该用户端口下不存在环路,如果在环路检测定时器超时时间内收到环路检测报文,且经过环路检测报文防伪造模块检验确认该环路检测报文真实有效,则认为该用户端口下存在环路,并记录接收信息到该用户端口所对应的环路检测收发信息表中;步骤3,标志位赋值,当用户端口下存在环路时,报文重定向到CPU并发出警告信息;当用户端口下不存在环路时,环路检测定时器模块置该用户端口的环路状态标记为无环路、置受控状态标记为不受控;当用户端口下存在环路时,依据以太网交换芯片的报文重定向规则,环路检测报文被重定向到CPU,由环路检测报文接收模块处理;环路检测报文接收模块置该用户端口的环路状态标记为有环路、置受控状态标记为受控,受控状态是指被置为受控的用户端口除了环路检测报文的收发之外,丢弃掉其它报文;然后根据接收信息逆向查找到发送该环路检测报文的用户端口,对发送和接收的用户端口进行比较,判断是单端口环路故障还是多端口环路故障,同时报告告警信息;步骤4,环路故障恢复情况监测及处理环路检测定时器模块调用环路检测自动恢复定时器模块与环路检测接收定时器模块同步计时,环路检测报文接收模块开始尝试从受控状态被置为受控的用户端口接收环路检测报文,如果超过环路检测定时器超时时间后依然未收到环路检测报文,则认为该用户端口下不存在环路,环路检测定时器模块置该用户端口的环路状态标记为无环路、置受控状态标记为不受控;步骤5,重复步骤2到4,根据环路检测执行的周期时间周期性的检测用户端口是否存在环路及存在环路的用户端口是否恢复正常。
2. 如权利要求1所述的检测以太网环路并且自动恢复的方法,其特征在于步骤1中所说的环路检测收发信息表的表项包括用户端口号、发送的Vlan ID、发送的时间戳、发送的随机序列号、发送的环路检测报文计数、接收的Vlan ID、接收的时间戳、接收的随机序列号、接收的环路检测报文计数;环路检测收发信息表的表项以用户端口号为索引。
3. 如权利要求1所述的检测以太网环路并且自动恢复的方法,其特征在于步骤1中所说的环路状态标记、受控状态标记分别被初始化为无环路、不受控。
4. 如权利要求1所述的检测以太网环路并且自动恢复的方法,其特征在于步骤1中所说的以太网交换芯片的报文重定向规则由规则条件和规则动作构成,其具体内容为规则条件1 :以太网类型=0x9001,规则条件2 :目的MAC地址=广播地址,规则条件3 :源MAC地址=0NU的MAC地址,规则动作收到的报文重定向到CPU ;上面3个规则条件需要同时满足,才执行规则动作。
全文摘要
一种检测以太网环路并且自动恢复的方法,涉及以太网环路的检测与恢复,包括以下步骤步骤1,环路检测初始化模块完成初始化;步骤2,构造、收发、分析环路检测报文,判断是否存在环路;步骤3,标志位赋值,当存在环路时报文重定向到CPU并发出警告信息;步骤4,环路故障恢复情况监测及处理;步骤5,重复步骤2到4。本发明所述的检测以太网环路并且自动恢复的方法,可以检测单端口与双端口的环路故障,也可以检测到环路并且能够判断相应的环路是否消除从而将环路恢复,同时提供了防止用户伪造环路检测报文来造成环路阻塞的假象的解决策略,具有对以太网交换芯片的硬件配置要求低,实现简单的特点。
文档编号H04L12/26GK101707538SQ200910223878
公开日2010年5月12日 申请日期2009年11月25日 优先权日2009年11月25日
发明者曾颜, 杨晓 申请人:烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1