一种IPv6重复地址检测的方法及系统转让专利

申请号 : CN200710176181.3

文献号 : CN101136948B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 翁建钢杨长江杨茂彬

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种IPv6重复地址检测的方法:中央控制单元收到IPv6地址配置请求后,进行重复地址检测请求发起处理,并将处理产生的该IPv6地址的重复地址检测请求发送给协议处理单元;协议处理单元收到来自中央控制单元的重复地址检测请求后,按照邻节点发现协议对该IPv6地址进行重复地址检测,并将检测结果发送给中央控制单元;中央控制单元接收并解析该检测结果,根据该检测结果进行重复地址检测结果处理。同时还公开了一种IPv6重复地址检测的系统,包括中央控制单元和协议处理单元。通过本发明实现了在分布式系统中正确而有效地进行IPv6地址的重复地址检测,从而大大提高了节点设备的工作能力。

权利要求 :

1.一种IPv6重复地址检测的方法,其特征在于,包括:

A.中央控制单元收到IPv6地址配置请求后,进行重复地址检测请求发起处理,并将处理产生的该IPv6地址的重复地址检测请求发送给协议处理单元;

所述重复地址检测请求发起处理包括以下步骤:

A1.中央控制单元根据IPv6地址配置请求的IPv6地址所属接口找到该接口所属的协议处理单元,将该协议处理单元设定为重复地址检测请求输出目的协议处理单元,执行步骤A2;

A2.检查该IPv6地址所属接口是否处于工作状态,如果是,则执行步骤A3;否则,退出当前处理;

A3.检查该IPv6地址所属接口是否为隧道接口,如果是,则执行步骤A4;否则,执行步骤A6;

A4.检查该隧道接口所依托的实际出接口是否处于工作状态,如果是,则执行步骤A5;

否则,退出当前处理;

A5.设定该隧道接口所依托的实际出接口所属的协议处理单元为重复地址检测请求的输出目的协议处理单元,执行步骤A6;

A6.检查重复地址检测请求队列中是否存在对该IPv6地址的检测请求,如果是,则执行步骤A7;否则,执行步骤A11;

A7.检查该地址检测请求所属接口是否与本次地址检测请求所属接口一致,如果是,则执行步骤A8;否则,执行步骤A10;

A8.检查该IPv6地址所属接口是否为隧道接口,如果是,则执行步骤A9;否则,退出当前处理;

A9.检查该隧道接口所依托的实际出接口和本次地址检测请求所依托的实际出接口是否一致,如果是,则退出当前处理;否则,执行步骤A10;

A10.删除队列中存在的对该IPv6地址的检测请求,执行步骤A11;

A11.为该IPv6地址建立新的重复地址检测请求,记录该IPv6地址、该次地址检测请求所属的接口,如果是隧道接口,则记录该隧道所依托的实际出接口,并设定检测超时时间,将该重复地址检测请求插入检测请求队列尾部,重新设定检测超时定时器,退出当前处理;

B.协议处理单元收到来自中央控制单元的重复地址检测请求后,按照邻节点发现协议对该IPv6地址进行重复地址检测,并将检测结果发送给中央控制单元;

C.中央控制单元接收并解析该检测结果,根据该检测结果进行重复地址检测结果处理。

2.根据权利要求1所述的方法,其特征在于,步骤C所述进行重复地址检测结果处理包括以下步骤:C1.中央控制单元接收协议处理单元返回的检测请求回应消息,得到重复地址检测请求检测结果,执行步骤C2;

C2.检查该检测结果所属地址是否处于重复地址检测队列中,如果是,则执行步骤C3;

否则,退出当前处理;

C3.检查该重复地址检测队列中与检测结果所属地址对应的检测请求所属接口和检测结果所属接口是否一致且处于工作状态,如果是,则执行步骤C4;否则,执行步骤C9;

C4.检查该检测结果所属接口是否为隧道接口,如果是,则执行步骤C5;否则,执行步骤C6;

C5.检查该检测结果所属的隧道接口所依托的实际出接口与检测请求队列中所对应的检测请求所依托的实际出接口是否一致且处于工作状态,如果是,则执行步骤C6;否则,执行步骤C9;

C6.检查检测结果表明该IPv6地址是否为重复地址,如果是,则执行步骤C7;否则,执行步骤C8;

C7.向用户告警,并将该IPv6地址放入冲突地址队列,执行步骤C9;

C8.将该IPv6地址状态设定为有效地址状态,并通知中央控制单元中的其它模块该IPv6地址为有效可用状态,执行步骤C9;

C9.将该重复地址检测请求从检测请求队列中删除并退出当前处理。

3.根据权利要求1所述的方法,其特征在于,所述步骤A与步骤B之间还包括:D.重复地址检测请求超时处理过程,包括以下步骤:

D1.中央控制单元在每次发起重复地址检测请求之后,通过设置检测超时定时器为该次地址检测设定预定检测超时时间,检测超时定时器每完成一次计时后,执行步骤D2;

D2.检查当前重复地址检测队列中是否存在需要处理的重复地址检测请求,如果是,则执行步骤D3;否则,退出当前处理;

D3.从当前重复地址检测队列中取出下一个待处理的重复地址检测请求,检查该请求是否已经超时,如果已超时,则执行步骤D4,否则返回执行步骤D2;

D4.检查该重复地址检测请求所属接口是否处于工作状态,如果是,则执行步骤D5;否则,执行步骤D8;

D5.检查该地址所属接口是否为隧道接口,如果是,则执行步骤D6;否则,执行步骤D7;

D6.检查该地址所属隧道接口所依托的实际出接口是否处于工作状态,如果是,则执行步骤D7;否则,执行步骤D8;

D7.当该次重复地址检测已经到达超时时间,但仍然未收到协议处理单元返回的检测请求回应消息,则重新向重复地址检测请求输出目的单板发送该重复地址检测请求,执行步骤D2;

D8.确定该重复地址检测请求为无效检测请求,将该无效检测请求从重复地址检测队列中删除,返回执行步骤D2。

4.根据权利要求1所述的方法,其特征在于,步骤B所述协议处理单元收到来自中央控制单元的重复地址检测请求消息后还包括:协议处理单元检查该重复地址检测请求消息是否在协议处理单元的重复地址请求队列中,如果是,则退出当前处理;否则,将该次重复地址检测请求放入重复地址请求队列中,按照标准协议进行重复地址检测。

5.根据权利要求1所述的方法,其特征在于,所述步骤C后还包括地址冲突处理过程,该过程包括:中央控制单元检测确定该IPv6地址为重复地址后,将该IPv6地址放入冲突地址队列中,通过冲突地址检测定时器定时对冲突地址队列中的IPv6地址进行再次检测,冲突地址检测定时器每完成一次计时后,检查冲突地址队列是否存在待处理的IPv6地址,如果是,对当前冲突地址进行重复地址检测;否则,退出当前处理。

6.一种IPv6重复地址检测的系统,其特征在于,包括:

中央控制单元,用于在收到IPv6地址配置请求后进行重复地址检测请求发起处理,将处理产生的重复地址检测请求发送给协议处理单元,以及接收并解析来自协议处理单元的检测结果,根据该检测结果进行重复地址检测结果处理;

所述中央控制单元包括:

检测请求发起处理模块,用于执行A1至A10,其中,

A1.根据IPv6地址配置请求的IPv6地址所属接口找到该接口所属的协议处理单元,将该协议处理单元设定为重复地址检测请求输出目的协议处理单元,执行A2;

A2.检查该IPv6地址所属接口是否处于工作状态,如果是,则执行A3;否则,退出当前处理;

A3.检查该IPv6地址所属接口是否为隧道接口,如果是,则执行A4;否则,执行A6;

A4.检查该隧道接口所依托的实际出接口是否处于工作状态,如果是,则执行A5;否则,退出当前处理;

A5.设定该隧道接口所依托的实际出接口所属的协议处理单元为重复地址检测请求的输出目的协议处理单元,执行A6;

A6.检查重复地址检测请求队列中是否存在对该IPv6地址的检测请求,如果是,则执行A7;否则,执行A11;

A7.检查该地址检测请求所属接口是否与本次地址检测请求所属接口一致,如果是,则执行A8;否则,执行A10;

A8.检查该IPv6地址所属接口是否为隧道接口,如果是,则执行A9;否则,退出当前处理;

A9.检查该隧道接口所依托的实际出接口和本次地址检测请求所依托的实际出接口是否一致,如果是,则退出当前处理;否则,执行A10;

A10.删除队列中存在的对该IPv6地址的检测请求,执行A11;

A11.为该IPv6地址建立新的重复地址检测请求,记录该IPv6地址、该次地址检测请求所属的接口,如果是隧道接口,则记录该隧道所依托的实际出接口,并设定检测超时时间,将该重复地址检测请求插入检测请求队列尾部,重新设定检测超时定时器,退出当前处理;

协议处理单元,用于收到来自中央控制单元的重复地址检测请求后,按照邻节点发现协议对该IPv6地址进行重复地址检测,并将检测结果发送给中央控制单元。

7.根据权利要求6所述的系统,其特征在于,所述中央控制单元包括:检测结果处理模块,用于执行C1至C9,其中,

C1.接收协议处理单元返回的检测请求回应消息,得到重复地址检测请求检测结果,执行C2;

C2.检查该检测结果所属地址是否处于重复地址检测队列中,如果是,则执行C3;否则,退出当前处理;

C3.检查该重复地址检测队列中与检测结果所属地址对应的检测请求所属接口和检测结果所属接口是否一致且处于工作状态,如果是,则执行C4;否则,执行C9;

C4.检查该检测结果所属接口是否为隧道接口,如果是,则执行C5;否则,执行C6;

C5.检查该检测结果所属的隧道接口所依托的实际出接口与检测请求队列中所对应的检测请求所依托的实际出接口是否一致且处于工作状态,如果是,则执行C6;否则,执行C9;

C6.检查检测结果表明该IPv6地址是否为重复地址,如果是,则执行C7;否则,执行C8;

C7.向用户告警,并将该IPv6地址放入冲突地址队列,执行C9;

C8.将该IPv6地址状态设定为有效地址状态,并通知中央控制单元中的其它模块该IPv6地址为有效可用状态,执行C9;

C9.将该重复地址检测请求从检测请求队列中删除并退出当前处理。

8.根据权利要求6所述的系统,其特征在于,所述中央控制单元包括:检测请求超时处理模块,用于执行D1至D8,其中,

D1.在每次发起重复地址检测请求之后,通过设置检测超时定时器为该次地址检测设定预定检测超时时间,检测超时定时器每完成一次计时后,执行D2;

D2.检查当前重复地址检测队列中是否存在需要处理的重复地址检测请求,如果是,则执行D3;否则,退出当前处理;

D3.从当前重复地址检测队列中取出下一个待处理的重复地址检测请求,检查该请求是否已经超时,如果已超时,则执行D4,否则返回执行D2;

D4.检查该重复地址检测请求所属接口是否处于工作状态,如果是,则执行D5;否则,执行D8;

D5.检查该地址所属接口是否为隧道接口,如果是,则执行D6;否则,执行D7;

D6.检查该地址所属隧道接口所依托的实际出接口是否处于工作状态,如果是,则执行D7;否则,执行D8;

D7.当该次重复地址检测已经到达超时时间,但仍然未收到协议处理单元返回的检测请求回应消息,则重新向重复地址检测请求输出目的单板发送该重复地址检测请求,执行D2;

D8.确定该重复地址检测请求为无效检测请求,将该无效检测请求从重复地址检测队列中删除,返回执行D2。

9.根据权利要求6所述的系统,其特征在于,所述协议处理单元,还用于检查该重复地址检测请求消息是否在协议处理单元的重复地址请求队列中,如果是,则退出当前处理;否则,将该次重复地址检测请求放入重复地址请求队列中,按照标准协议进行重复地址检测。

10.根据权利要求6所述的系统,其特征在于,所述中央控制单元包括:地址冲突处理模块,用于在确定该IPv6地址为重复地址后,将该IPv6地址放入冲突地址队列中,通过冲突地址检测定时器定时对冲突地址队列中的IPv6地址进行再次检测,冲突地址检测定时器每完成一次计时后,检查冲突地址队列是否存在待处理的IPv6地址,如果是,对当前冲突地址进行重复地址检测;否则,退出当前处理。

说明书 :

一种IPv6重复地址检测的方法及系统

技术领域

[0001] 本发明涉及分布式处理领域,尤其涉及一种IPv6(Internet Protocol Version6)重复地址检测(DAD,Duplicate Address Detection)的方法及系统。

背景技术

[0002] 随着网络通信技术的不断发展,各种新型的通信应用业务层出不穷,网络通信服务已融入到社会生活的各个领域。蓬勃发展的通信业务需求促进了通信技术的发展,同时也对通信设备的处理能力提出了新的挑战。为了应付这种不断增长的应用需求,单CPU集中处理事务模式的通信系统设计已不能满足大容量通信节点设备的技术要求。 [0003] 于是各制造商纷纷采用分布式处理技术,将通信业务的处理流程分散到多个模块、多个CPU、甚至多台主机上,各模块之间采用流水化作业模式,充分挖掘各模块的处理潜能,从而使整体设备的处理能力跃上一个新台阶。
[0004] 目前,在分布式处理系统中,还没有关于IPv6重复地址检测的具体实现方案。 发明内容
[0005] 有鉴于此,本发明的目的在于提供一种IPv6重复地址检测的方法及系统。通过该方法及系统,达到在主从式分布式系统上正确进行IPv6重复地址检测的目的。 [0006] 本发明提供了一种IPv6重复地址检测的方法,包括以下步骤: [0007] A.中央控制单元收到IPv6地址配置请求后,进行重复地址检测请求发起处理,并将处理产生的该IPv6地址的重复地址检测请求发送给协议处理单元;
[0008] B.协议处理单元收到来自中央控制单元的重复地址检测请求后,按照邻节点发现协议对该IPv6地址进行重复地址检测,并将检测结果发送给中央控 制单元; [0009] C.中央控制单元接收并解析该检测结果,根据该检测结果进行重复地址检测结果处理。
[0010] 该方法步骤A所述重复地址检测请求发起处理包括以下步骤:
[0011] A1.中央控制单元根据IPv6地址配置请求的IPv6地址所属接口找到该接口所属的协议处理单元,将该协议处理单元设定为重复地址检测请求输出目的协议处理单元,执行步骤A2;
[0012] A2.检查该IPv6地址所属接口是否处于工作状态,如果是,则执行步骤A3;否则,退出当前处理;
[0013] A3.检查该IPv6地址所属接口是否为隧道接口,如果是,则执行步骤A4;否则,执行步骤A6;
[0014] A4.检查该隧道接口所依托的实际出接口是否处于工作状态,如果是,则执行步骤A5;否则,退出当前处理;
[0015] A5.设定该隧道接口所依托的实际出接口所属的协议处理单元为重复地址检测请求的输出目的协议处理单元,执行步骤A6;
[0016] A6.检查重复地址检测请求队列中是否存在对该IPv6地址的检测请求,如果是,则执行步骤A7;否则,执行步骤A11;
[0017] A7.检查该地址检测请求所属接口是否与本次地址检测请求所属接口一致,如果是,则执行步骤A8;否则,执行步骤A10;
[0018] A8.检查该IPv6地址所属接口是否为隧道接口,如果是,则执行步骤A9;否则,退出当前处理;
[0019] A9.检查该隧道接口所依托的实际出接口和本次地址检测请求所依托的实际出接口是否一致,如果是,则退出当前处理;否则,执行步骤A10;
[0020] A10.删除队列中存在的对该IPv6地址的检测请求,执行步骤A11; [0021] A11.为该IPv6地址建立新的重复地址检测请求,记录该IPv6地址、该次地址检测请求所属的接口,如果是隧道接口,则记录该隧道所依托的实际出接口,并设定检测超时时间,将该重复地址检测请求插入检测请求队列尾部,重新设定检测超时定时器,退出当前处理。
[0022] 该方法步骤C所述进行重复地址检测结果处理包括以下步骤:
[0023] C1.中央控制单元接收协议处理单元返回的检测请求回应消息,得到重复地址检测请求检测结果,执行步骤C2;
[0024] C2.检查该检测结果所属地址是否处于重复地址检测队列中,如果是,则执行步骤C3;否则,退出当前处理;
[0025] C3.检查该重复地址检测队列中与检测结果所属地址对应的检测请求所属接口和检测结果所属接口是否一致且处于工作状态,如果是,则执行步骤C4;否则,执行步骤C9; [0026] C4.检查该检测结果所属接口是否为隧道接口,如果是,则执行步骤C5;否则,执行步骤C6;
[0027] C5.检查该检测结果所属的隧道接口所依托的实际出接口与检测请求队列中所对应的检测请求所依托的实际出接口是否一致且处于工作状态,如果是,则执行步骤C6;否则,执行步骤C9;
[0028] C6.检查检测结果表明该IPv6地址是否为重复地址,如果是,则执行步骤C7;否则,执行步骤C8;
[0029] C7.向用户告警,并将该IPv6地址放入冲突地址队列,执行步骤C9; [0030] C8.将该IPv6地址状态设定为有效地址状态,并通知中央控制单元中的其它模块该IPv6地址为有效可用状态,执行步骤C9;
[0031] C9.将该重复地址检测请求从检测请求队列中删除并退出当前处理。 [0032] 该方法所述步骤A与步骤B之间还包括重复地址检测请求超时处理过程,该过程包括以下步骤:
[0033] D1.中央控制单元在每次发起重复地址检测请求之后,通过设置检测超时定时器为该次地址检测设定预定检测超时时间,检测超时定时器每完成一次计时后,执行步骤D2;
[0034] D2.检查当前重复地址检测队列中是否存在需要处理的重复地址检测请求,如果是,则执行步骤D3;否则,退出当前处理;
[0035] D3.从当前重复地址检测队列中取出下一个待处理的重复地址检测请求,检查该请求是否已经超时,如果已超时,则执行步骤D4,否则返回执行步骤D2; [0036] D4.检查该重复地址检测请求所属接口是否处于工作状态,如果是,则执 行步骤D5;否则,执行步骤D8;
[0037] D5.检查该地址所属接口是否为隧道接口,如果是,则执行步骤D6;否则,执行步骤D7;
[0038] D6.检查该地址所属隧道接口所依托的实际出接口是否处于工作状态,如果是,则执行步骤D7;否则,执行步骤D8;
[0039] D7.当该次重复地址检测已经到达超时时间,但仍然未收到协议处理单元返回的检测请求回应消息,则重新向重复地址检测请求输出目的单板发送该重复地址检测请求,执行步骤D2;
[0040] D8.确定该重复地址检测请求为无效检测请求,将该无效检测请求从重复地址检测队列中删除,返回执行步骤D2。
[0041] 该方法步骤B所述协议处理单元收到来自中央控制单元的重复地址检测请求消息后还包括:
[0042] 协议处理单元检查该重复地址检测请求消息是否在协议处理单元的重复地址请求队列中,如果是,则退出当前处理;否则,将该次重复地址检测请求放入重复地址请求队列中,按照标准协议进行重复地址检测。
[0043] 该方法所述步骤C后还包括地址冲突处理过程,该过程包括:
[0044] 中央控制单元检测确定该IPv6地址为重复地址后,将该IPv6地址放入冲突地址队列中,通过冲突地址检测定时器定时对冲突地址队列中的IPv6地址进行再次检测,冲突地址检测定时器每完成一次计时后,检查冲突地址队列是否存在待处理的IPv6地址,如果是,对当前冲突地址进行重复地址检测;否则,退出当前处理。
[0045] 本发明还提供了一种IPv6重复地址检测的系统,包括:
[0046] 中央控制单元,用于在收到IPv6地址配置请求后进行重复地址检测请求发起处理,将处理产生的重复地址检测请求发送给协议处理单元,以及接收并解析来自协议处理单元的检测结果,根据该检测结果进行重复地址检测结果处理;
[0047] 协议处理单元,用于收到来自中央控制单元的重复地址检测请求后,按照邻节点发现协议对该IPv6地址进行重复地址检测,并将检测结果发送给中央控制单元。 [0048] 该系统所述中央控制单元包括:
[0049] 检测请求发起处理模块,用于根据IPv6地址配置请求的IPv6地址所属接口找到该接口所属的协议处理单元,将该协议处理单元设定为重复地址检测请求输出目的协议处理单元,检查该IPv6地址所属接口是否处于工作状态,检查该IPv6地址所属接口是否为隧道接口,检查该隧道接口所依托的实际出接口是否处于工作状态,设定该隧道接口所依托的实际出接口所属的协议处理单元为重复地址检测请求的输出目的协议处理单元,检查重复地址检测请求队列中是否存在对该IPv6地址的检测请求,检查该地址检测请求所属接口是否与本次地址检测请求所属接口一致,检查该IPv6地址所属接口是否为隧道接口,检查该隧道接口所依托的实际出接口和本次地址检测请求所依托的实际出接口是否一致,删除队列中存在的对该IPv6地址的检测请求,为该IPv6地址建立新的重复地址检测请求,记录该IPv6地址、该次地址检测请求所属的接口,记录该隧道所依托的实际出接口,并设定检测超时时间,将该重复地址检测请求插入检测请求队列尾部,重新设定检测超时定时器。 [0050] 该系统所述中央控制单元包括:
[0051] 检测结果处理模块,用于接收协议处理单元返回的检测请求回应消息,得到重复地址检测请求检测结果,检查该检测结果所属地址是否处于重复地址检测队列中,检查该重复地址检测队列中与检测结果所属地址对应的检测请求所属接口和检测结果所属接口是否一致且处于工作状态,检查该检测结果所属接口是否为隧道接口,检查该检测结果所属的隧道接口所依托的实际出接口与检测请求队列中所对应的检测请求所依托的实际出接口是否一致且处于工作状态,检查检测结果表明该IPv6地址是否为重复地址,向用户告警,并将该IPv6地址放入冲突地址队列,将该IPv6地址状态设定为有效地址状态,并通知中央控制单元中的其它模块该IPv6地址为有效可用状态,将该重复地址检测请求从检测请求队列中删除。
[0052] 该系统所述中央控制单元包括:
[0053] 检测请求超时处理模块,用于在每次发起重复地址检测请求之后,通过设置检测超时定时器为该次地址检测设定预定检测超时时间,检测超时定时器每完成一次计时后,检查当前重复地址检测队列中是否存在需要处理的重复地址 检测请求,从当前重复地址检测队列中取出下一个待处理的重复地址检测请求,检查该请求是否已经超时,检查该重复地址检测请求所属接口是否处于工作状态,检查该地址所属接口是否为隧道接口,检查该地址所属隧道接口所依托的实际出接口是否处于工作状态,当该次重复地址检测已经到达超时时间,但仍然未收到协议处理单元返回的检测请求回应消息,重新向重复地址检测请求输出目的单板发送该重复地址检测请求,确定该重复地址检测请求为无效检测请求,将该无效检测请求从重复地址检测队列中删除。
[0054] 该系统所述协议处理单元,还用于检查该重复地址检测请求消息是否在协议处理单元的重复地址请求队列中,如果不在,将该次重复地址检测请求放入重复地址请求队列中,按照标准协议进行重复地址检测。
[0055] 该系统所述中央控制单元包括:
[0056] 地址冲突处理模块,用于在确定该IPv6地址为重复地址后,将该IPv6地址放入冲突地址队列中,通过冲突地址检测定时器定时对冲突地址队列中的IPv6地址进行再次检测,冲突地址检测定时器每完成一次计时后,检查冲突地址队列是否存在待处理的IPv6地址,如果是,对当前冲突地址进行重复地址检测。
[0057] 本发明所述的IPv6重复地址检测的方法及系统,通过功能互相独立的中央控制单元(RPU,Route Protocol Unit)和协议处理单元(EPU,Epilogue Protocol Unit)之间的互相协作,由中央控制单元负责地址配置管理和路由管理,由协议处理单元负责邻节点发现协议(Neighbour Discovery Protocol)过程处理,从而在分布式系统中正确而有效地实现IPv6地址的重复地址检测,极大地提高了节点设备的工作能力。

附图说明

[0058] 图1为本发明中IPv6重复地址检测系统结构图;
[0059] 图2为本发明中RPU侧重复地址检测请求发起处理的方法流程图; [0060] 图3为本发明中RPU侧重复地址检测请求超时处理的方法流程图; [0061] 图4为本发明中RPU侧重复地址检测请求结果返回处理的方法流程图; [0062] 图5为本发明中RPU侧重复地址检测地址冲突处理的方法流程图; [0063] 图6为本发明中EPU侧重复地址检测的方法流程图。

具体实施方式

[0064] 本发明所述的IPv6重复地址检测系统是一种具备分布式处理能力的IPv6路由节点设备,该节点设备采用主从分布模式,包括中央控制单元RPU和协议处理单元EPU。其中,中央控制单元RPU负责设备的配置管理以及数据的集中分析,协议处理单元EPU负责业务的转发处理。
[0065] 本发明所描述的IPv6重复地址检测方法正是基于这种主从分布式系统中实现的。在该分布式系统中,地址配置管理在中央控制单元RPU完成,而邻节点请求报文的处理则是在协议处理单元EPU中完成,然后依靠中央控制单元RPU和协议处理单元EPU之间的消息通道进行信息交互,实现重复地址检测。
[0066] 本发明所述的IPv6重复地址检测的基本原理如下:
[0067] IPv6节点设备通过邻节点请求报文检测本地链路上是否有正在使用的重复IPv6地址。其中,EPU作为请求端发送包含检测地址信息的邻节点请求报文,如果在设定的检测时间间隔之内,没有收到来自本链路其他IPv6节点发出的包含阻止其使用请求IPv6地址信息的邻节点公告报文,则认为待检测的IPv6地址是可用地址;反之,如果在设定的检测时间间隔之内,收到来自本 链路其他IPv6节点发出的包含阻止其使用请求IPv6地址信息的邻节点公告报文,则认为待检测的IPv6地址是重复地址。
[0068] 此外,还需要在RPU中设置配套的地址配置管理模块,以实现在各种不同的地址配置操作情况下进行正确的IPv6重复地址检测处理。
[0069] 本发明所述分布式系统的IPv6重复地址检测方法主要以RPU的地址配置管理模块为核心,具体包括中央控制单元RPU侧的处理流程和协议处理模块EPU侧的处理流程。其中,中央控制单元RPU侧的处理流程包括:
[0070] 1.检测请求发起处理流程
[0071] 当RPU收到IPv6地址的重复检测请求时,首先,需要检查该IPv6地址所属的接口是否正常工作,检查该IPv6地址所属的接口是否为隧道接口,检查该IPv6地址所属隧道接口所依托的实际出接口是否正常工作;其次,需要检查该IPv6地址是否已经发起过检测请求,以避免产生不断的冗余检测,如果找到完全相同的请求,则忽略当前检测请求,如果找到的检测请求的IPv6地址和当前请求地址相同,但两者所属接口不同,则以最新的检测请求为准,将旧检测请求删除,发起新的检测请求;最后,由于RPU侧不执行邻节点请求协议处理,因此,如果需要发起新请求,则将该检测请求发往该IPv6地址所属接口所在的EPU,由EPU负责进行邻节点发现协议处理。
[0072] 2.检测定时器超时处理流程
[0073] RPU必须收到EPU的检测请求回应消息,才能得到IPv6地址的检测结果。为了确保每个发往EPU的检测请求能够到达EPU,RPU记录下每个IPv6地址的检测请求发往EPU的时间,并定时将这些检测请求的发起时间和当前系统时间进行比较,当发现某个检测请求在超过了预定时间后仍然未收到来自EPU的检测结果回应消息,RPU则认为该检测请求未到达EPU,对该IPv6地址发起新的检测请求。
[0074] 3.重复地址检测结果处理流程
[0075] 当RPU得到某个IPv6地址检测请求的检测结果时,首先需要判断该检测请求是否还有效,例如,在该IPv6地址已经被删除,或者该IPv6地址所属接口未正常工作等情况下,RPU将不处理该IPv6地址的检测结果;其次,如果该IPv6地址检测请求仍然有效,则对该IPv6地址的检测结果进行判断,对于 结果为有效的IPv6地址,则通知路由管理模块等其它模块该IPv6地址有效,如果检测结果为重复的IPv6地址,则将该IPv6地址方到重复IPv6地址队列当中,等待后续处理。
[0076] 4.地址冲突处理流程
[0077] 每隔预定时间,系统对已经配置的冲突地址重新进行检测,检测已发起的检测请求处理流程是否存在地址冲突以及重新发起检测请求处理流程。
[0078] 另外,协议处理模块EPU侧的处理流程如下所述:
[0079] EPU收到来自RPU的地址检测请求后,按照IPv6邻节点发现协议,通过邻节点请求报文,对该IPv6地址进行重复检测,待检测结果出来之后,以检测请求回应消息形式返回给RPU进行集中处理。
[0080] 上述EPU常采用单板结构,因此,也称作EPU单板。
[0081] 下面结合附图分别对上述流程进行详细描述。
[0082] 图1为本发明中IPv6重复地址检测系统结构图,包括:
[0083] 中央控制单元101,用于在收到IPv6地址配置请求后进行重复地址检测请求发起处理,将处理产生的重复地址检测请求发送给协议处理单元,以及接收并解析来自协议处理单元的检测结果,根据该检测结果进行重复地址检测结果处理。中央控制单元101包括检测请求发起处理模块1011、检测结果处理模块1012、检测请求超时处理模块1013和地址冲突处理模块1014,其中,
[0084] 检测请求发起处理模块1011,用于根据IPv6地址配置请求的IPv6地址所属接口找到该接口所属的协议处理单元,将该协议处理单元设定为重复地址检测请求输出目的协议处理单元;检查该IPv6地址所属接口是否处于工作状态;检查该IPv6地址所属接口是否为隧道接口;检查该隧道接口所依托的实际出接口是否处于工作状态;设定该隧道接口所依托的实际出接口所属的协议处理单元为重复地址检测请求的输出目的协议处理单元;检查重复地址检测请求队列中是否存在对该IPv6地址的检测请求;检查该地址检测请求所属接口是否与本次地址检测请求所属接口一致;检查该IPv6地址所属接口是否为隧道接口;检查该隧道接口所依托的实际出接口和本次地址检测请求所依托的实际出接口是否一致;删除队列中存在的对该IPv6地址的检测请求,为该IPv6地址建立新的重复地址检测请求,记录该IPv6地址、该次地址检测请求所属的接 口;记录该隧道所依托的实际出接口,并设定检测超时时间,将该重复地址检测请求插入检测请求队列尾部,重新设定检测超时定时器。
[0085] 检测结果处理模块1012,用于接收协议处理单元返回的检测请求回应消息,得到重复地址检测请求检测结果;检查该检测结果所属地址是否处于重复地址检测队列中;检查该重复地址检测队列中与检测结果所属地址对应的检测请求所属接口和检测结果所属接口是否一致且处于工作状态;检查该检测结果所属接口是否为隧道接口;检查该检测结果所属的隧道接口所依托的实际出接口与检测请求队列中所对应的检测请求所依托的实际出接口是否一致且处于工作状态;检查检测结果表明该IPv6地址是否为重复地址;向用户告警,并将该IPv6地址放入冲突地址队列;将该IPv6地址状态设定为有效地址状态,并通知中央控制单元中的其它模块该IPv6地址为有效可用状态;将该重复地址检测请求从检测请求队列中删除。
[0086] 检测请求超时处理模块1013,用于在每次发起重复地址检测请求之后,通过设置检测超时定时器为该次地址检测设定预定检测超时时间;检测超时定时器每完成一次计时后,检查当前重复地址检测队列中是否存在需要处理的重复地址检测请求;从当前重复地址检测队列中取出下一个待处理的重复地址检测请求,检查该请求是否已经超时;检查该重复地址检测请求所属接口是否处于工作状态;检查该地址所属接口是否为隧道接口;检查该地址所属隧道接口所依托的实际出接口是否处于工作状态;当该次重复地址检测已经到达超时时间,但仍然未收到协议处理单元返回的检测请求回应消息,重新向重复地址检测请求输出目的单板发送该重复地址检测请求;确定该重复地址检测请求为无效检测请求,将该无效检测请求从重复地址检测队列中删除。
[0087] 地址冲突处理模块1014,用于在确定该IPv6地址为重复地址后,将该IPv6地址放入冲突地址队列中,通过冲突地址检测定时器定时对冲突地址队列中的IPv6地址进行再次检测,冲突地址检测定时器每完成一次计时后,检查冲突地址队列是否存在待处理的IPv6地址,如果是,对当前冲突地址进行重复地址检测。
[0088] 协议处理单元102,用于收到来自中央控制单元的重复地址检测请求后,按照邻节点发现协议对该IPv6地址进行重复地址检测,并将检测结果发送给 中央控制单元。 [0089] 另外,协议处理单元102还用于检查该重复地址检测请求消息是否在协议处理单元的重复地址请求队列中,如果不在,将该次重复地址检测请求放入重复地址请求队列中,按照标准协议进行重复地址检测。
[0090] 图2为本发明中RPU侧重复地址检测请求发起处理的方法流程图,具体实施步骤如下:
[0091] 步骤201,RPU收到用户配置的IPv6地址,根据该IPv6地址所属接口找到该接口所属的EPU单板,将该EPU单板设定为重复地址检测请求输出目的单板,执行步骤202; [0092] 步骤202,检查该IPv6地址所属接口是否处于工作状态,如果是,则执行步骤203;否则,执行步骤212;
[0093] 步骤203,检查该IPv6地址所属接口是否为隧道接口,如果是,则执行步骤204;否则,执行步骤206;
[0094] 步骤204,检查该隧道接口所依托的实际出接口是否处于工作状态,如果是,则执行步骤205;否则,执行步骤212;
[0095] 步骤205,将该隧道接口所依托的实际出接口所属的EPU单板设定为重复地址检测请求的输出目的单板,然后执行步骤206;
[0096] 步骤206,检查已有重复地址检测请求队列中是否存在对该IPv6地址的检测请求,如果是,则执行步骤207;否则,执行步骤211。
[0097] 步骤207,检查已有地址检测请求所属的接口是否与本次地址检测请求所属接口一致,如果是,则执行步骤208;否则,执行步骤210;
[0098] 步骤208,检查该IPv6地址所属接口是否为隧道接口,如果是,则执行步骤209;否则,执行步骤212;
[0099] 步骤209,检查该隧道接口所依托的实际出接口和本次地址检测请求所依托的实际出接口是否一致,如果是,则执行步骤212;否则,执行步骤210;
[0100] 步骤210,删除队列中已经存在的对该IPv6地址的检测请求,然后执行步骤211; [0101] 步骤211,为该IPv6地址建立新的重复地址检测请求,除该IPv6地址本身外,还需记录该次地址检测请求所属的接口,如果是隧道接口还需记录下该 隧道所依托的实际出接口,并设定检测超时时间,接着将该重复地址检测请求插入检测请求队列尾部,重新设定检测超时定时器,然后执行步骤212;
[0102] 步骤212,退出当前处理。
[0103] 图3为本发明中RPU侧重复地址检测请求超时处理的方法流程图,具体实施步骤如下:
[0104] 步骤301,RPU在每次发起重复地址检测请求之后,通过设置检测超时定时器为该次地址检测设定预定检测超时时间,检测超时定时器每完成一次计时后,执行步骤302; [0105] 步骤302,检查当前重复地址检测队列中是否存在需要处理的重复地址检测请求,如果是,则执行步骤303;否则,执行步骤309;
[0106] 步骤303,从当前重复地址检测队列中取出下一个待处理的重复地址检测请求,检查该请求是否已经超时,如果已超时,则执行步骤304,否则返回执行步骤302; [0107] 步骤304,检查该重复地址检测请求所属接口是否处于工作状态,如果是,则执行步骤305;否则,执行步骤308;
[0108] 步骤305,检查该地址所属接口是否为隧道接口,如果是,则执行步骤306;否则,执行步骤307;
[0109] 步骤306,检查该地址所属隧道接口所依托的实际出接口是否处于工作状态,如果是,则执行步骤307;否则,执行步骤308;
[0110] 步骤307,当该次重复地址检测已经到达超时时间,但仍然未收到EPU返回的检测请求回应消息,则重新向重复地址检测请求输出目的单板发送该重复地址检测请求,然后执行步骤302;
[0111] 步骤308,确定该重复地址检测请求为无效检测请求,将该无效检测请求从重复地址检测队列中删除,然后返回执行步骤302;
[0112] 步骤309,退出当前处理。
[0113] 图4为本发明中RPU侧重复地址检测请求结果返回处理的方法流程图,具体实施步骤如下:
[0114] 步骤401,RPU接收EPU返回的检测请求回应消息,得到重复地址检测请求检测结果,执行步骤402;
[0115] 步骤402,检查该检测结果所属地址是否处于重复地址检测队列中,如果是,则执行步骤403;否则,执行步骤410;
[0116] 步骤403,检查该重复地址检测队列中与检测结果所属地址对应的检测请求所属接口和检测结果所属接口是否一致且处于工作状态,如果是,则执行步骤404;否则,执行步骤409;
[0117] 步骤404,检查该检测结果所属接口是否为隧道接口,如果是,则执行步骤405;否则,执行步骤406;
[0118] 步骤405,检查该检测结果所属的隧道接口所依托的实际出接口与检测请求队列中所对应的检测请求所依托的实际出接口是否一致且处于工作状态,如果是,则执行步骤406;否则,执行步骤409;
[0119] 步骤406,检查检测结果表明该IPv6地址是否为重复地址,如果是,则执行步骤407;否则,执行步骤408;
[0120] 步骤407,向用户告警,并将该IPv6地址放入冲突地址队列,执行步骤409; [0121] 步骤408,将该IPv6地址状态设定为有效地址状态,并通知RPU中的其它模块该IPv6地址为有效可用状态,执行步骤409;
[0122] 步骤409,将该重复地址检测请求从检测请求队列中删除,执行步骤410; [0123] 步骤410,退出当前处理。
[0124] 图5为本发明中RPU侧重复地址检测地址冲突处理的方法流程图,具体实施步骤如下:
[0125] 步骤501,当该IPv6地址被检测确定为重复地址后,RPU将该IPv6地址放入一个冲突地址队列中,通过冲突地址检测定时器定时对冲突地址队列中的IPv6地址进行再次检测,冲突地址检测定时器每完成一次计时后,执行步骤502;
[0126] 步骤502,检查当前冲突地址队列是否存在待处理的IPv6地址,如果是,则执行步骤503;否则,执行步骤504;
[0127] 步骤503,按照RPU侧重复地址检测请求发起流程对该IPv6地址进行重复地址检测,然后执行步骤502;
[0128] 步骤504,退出当前处理。
[0129] 图6为本发明中EPU侧重复地址检测的方法流程图,具体实施步骤如下: [0130] 步骤601,EPU收到来自RPU侧发来的IPv6重复地址检测请求,执行步骤602; [0131] 步骤602,检查该重复地址检测请求是否已经在EPU的重复地址请求队列中,如果是,则执行步骤604;否则,执行步骤603;
[0132] 步骤603,将该次重复地址检测请求放入重复地址请求队列中,然后按照标准协议进行重复地址检测,执行步骤604;
[0133] 步骤604,退出当前处理。
[0134] 综上所述,通过本发明可以保证主从分布式系统,在地址管理模块和邻节点发现协议模块分布在不同处理单元的情况下,实现IPv6地址的重复地址检测功能。 [0135] 另外,本发明所述的IPv6重复地址检测系统包括一个中央控制单元,但可以包括个协议处理单元。采用这种中央控制单元和协议处理单元分离的分布式处理方式,极大的提高了节点设备的工作能力。
[0136] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。