[0006] 本发明提供一种检测AP的LAN口环路的方法及系统,用以解决AP上两个LAN口由于短接出现环路难以被发现的问题。
[0007] 本发明一种检测AP的LAN口环路的方法,包括:
[0008] S100判断AP的待测第一LAN口、待测第二LAN口是否均处于启用状态,若是则进入下一步骤;
[0009] S200启动环路检测轮询机制,控制所述待测第一LAN口按照预设的检测周期定时发送环路检测数据帧;
[0010] S300判断所述待测第二LAN口接收并预备转发的数据帧是否与所述环路检测数据帧一致,若是,则进入步骤S400,否则进入步骤S500;
[0011] S400判断所述待测第一LAN口、所述待测第二LAN口出现环路;
[0012] S500判断所述待测第一LAN口、所述待测第二LAN口未出现环路,关闭所述环路检测轮询机制,停止环路检测。
[0013] 通过发送检测数据帧,来检测AP的两个LAN口是不是因为网线短接造成了环路。方法简单有效,可操作性强。
[0014] 进一步地,在所述步骤S400之后还包括步骤:
[0015] S450发送环路报警信号,关闭所述待测第二LAN口。
[0016] 若出现环路,则及时发出报警信号,通知用户。在两个LAN口出现环路时,关闭任意一个LAN口,则这两个LAN口不存在环路,环路检测功能也会关闭。
[0017] 进一步地,在所述步骤S200之前还包括步骤:
[0018] S150分别获取所述待测第一LAN口、所述待测第二LAN口启用的绝对时间值;并获取所述待测第二LAN口启用的绝对时间值与所述待测第一LAN口启用的绝对时间值的时间差;
[0019] S160判断所述时间差是否小于预设的启用时间间隔,若是,则进入步骤S200。
[0020] 前面方案采用的是只要两个LAN口都启用的情况下,就定时发送检测数据帧方法,所以会较大的消耗AP的CPU资源。事实上,AP作为接入的最后一个环节,环路最大的可能性是非技术人员把两个口直接用网线相连。而一般来说,AP后面不会再接交换机。所以这里提出了一种改进思路,只检测两个口直接用网线相连造成的环路。考虑到非技术人员用网线把以太网的两个口直接相连的情况,则理论上,应该存在两个以太网口同时up,考虑到在实际情况中,硬件和软件的处理不可能完全同步,所以我们考虑如果出现两个以太网口up的时间间隔小于B秒,则我们进行环路检测,在其他情况下,我们完全不必进行环路检测。当然当AP开机时,我们必须做一次环路检测。因为我们只在极少数的情况下检测环路,所以CPU的负担忽略不计。这里的绝对时间值,指LAN口打开启用的时间点,一般两个LAN口被短接的时候,其实启用的时间点还是有较小差别的,并不是理论上的同时打开启用,但由于差别较小,因此我们可以合理设定一个启用时间间隔,如果两个LAN口打开启用的时间间隔在这个预设的启用时间间隔内,则进行环路检测,否则的话则说明这两个LAN口没有被短接,也就不需要进行环路检测了。
[0021] 进一步地,在步骤S450之后还包括步骤:
[0022] S460控制所述待测第一LAN口继续按照所述预设的检测周期定时发送环路检测数据帧,根据预设的放开间隔时间放开所述待测第二LAN口,控制所述待测第二LAN口只接收报文,无法转发报文;
[0023] S470判断所述待测第二LAN口上接收的数据帧是否与所述待测第一LAN口发送的环路检测数据帧一致,若是,则进入步骤S480,否则进入步骤S490;
[0024] S480关闭所述待测第二LAN口,返回步骤S460;
[0025] S490解除环路报警,启用所述待测第二LAN口,进入步骤S500。
[0026] 假如AP的两个LAN口已被发现存在环路情况,但是系统不知道环路什么时候会被解除,因此,还需要定期检测环路是否被解除。具体地,待测第一LAN口还是会继续定时发送环路检测数据帧,而待测第二LAN口也会按照预设的放开间隔时间定时被放开,这里的放开是指该待测第二LAN口可以接收报文,但不做任何转发。如果检测到待测第二LAN口收到的数据帧就是待测第一LAN口发出的环路检测数据帧,那么就说明这两个LAN口的环路还是存在,没有被解除,因此,还是关闭待测第二LAN口,等到下一个放开时间到来时,再触发放开待测第二LAN口,继续进行环路检测。如果判断这两个LAN口的环路不存在了,则解除警报,LAN口正常工作。
[0027] 进一步地,所述步骤S300包括步骤:
[0028] S310判断所述待测第二LAN口接收的数据帧与所述环路检测数据帧的长度、目的MAC、有效载荷是否一致,若是,则进入步骤S400,否则进入步骤S500。
[0029] 本发明还提供一种检测AP的LAN口环路的系统,包括AP的待测第一LAN口、所述AP的待测第二LAN口、检测控制单元,所述检测控制单元分别与所述待测第一LAN口、所述待测第二LAN口相连,所述检测控制单元包括状态检测模块、控制模块、操作模块,所述控制模块分别与所述状态检测模块、操作模块相连,其中:所述状态检测模块检测判断所述待测第一LAN口、所述待测第二LAN口是否均处于启用状态;若是,则所述操作模块在所述控制模块的控制下启动环路检测轮询机制,所述待测第一LAN口在所述控制模块的控制下按照预设的检测周期定时发送发送环路检测数据帧;所述控制模块判断所述待测第二LAN口接收并预备转发的数据帧是否与所述环路检测数据帧一致,若是,则判断所述待测第一LAN口、所述待测第二LAN口出现环路;否则,判断所述待测第一LAN口、所述待测第二LAN口未出现环路,所述操作模块关闭所述环路检测轮询机制,停止环路检测。
[0030] 进一步地,所述检测控制单元还包括警报模块,所述警报模块与所述控制模块电连接,其中:当所述控制模块判断所述待测第一LAN口、待测第二LAN口出现环路时,所述警报模块发送环路报警信号,所述操作模块关闭所述待测第二LAN口。
[0031] 进一步地,所述检测控制单元还包括获取模块,所述获取模块与所述控制模块相连,其中:所述获取模块分别获取所述待测第一LAN口、所述待测第二LAN口启用的绝对时间值;并获取所述待测第二LAN口启用的绝对时间值与所述待测第一LAN口启用的绝对时间值的时间差;所述控制模块判断所述时间差是否小于预设的启用时间间隔,若是,则所述操作模块在所述控制模块的控制下启动环路检测轮询机制。
[0032] 进一步地,当所述控制模块判断所述待测第一LAN口、所述待测第二LAN口出现环路,且所述警报模块发送环路报警信号,所述操作模块关闭所述待测第二LAN口后,所述待测第一LAN口在所述控制模块的控制下继续按照所述预设的检测周期定时发送环路检测数据帧,所述操作模块根据预设的放开间隔时间放开所述待测第二LAN口,控制所述待测第二LAN口只接收报文,无法转发报文;所述控制模块判断所述待测第二LAN口上接收的数据帧是否与所述待测第一LAN口发送的环路检测数据帧一致,若是,则所述操作模块关闭所述待测第二LAN口,等待下一个预设的放开间隔时间再放开所述待测第二LAN口,进行环路检测;否则所述操作模块解除环路报警,启用所述待测第二LAN口。
[0033] 进一步地,所述控制模块判断所述待测第二LAN口接收并预备转发的数据帧是否与所述环路检测数据帧一致包括:所述控制模块判断所述待测第二LAN口接收的数据帧与所述环路检测数据帧的长度、目的MAC、有效载荷是否一致。
[0034] 本发明通过定时发送环路检测帧来检测判断AP的两个LAN口之间是否出现环路,方法简单,可操作性强。当存在环路时也能有效地将环路状态进行屏蔽,可以基本杜绝陷入到环路风暴的危险。此外,在定时发送环路检测帧之前,设定事件触发条件,通过判读两个以太口Up的时间间隔,来改进环路检测,减少了系统运行的负担。