一种自动中继路由方法转让专利

申请号 : CN201010619625.8

文献号 : CN102076052B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王东林洪佩琳薛开平熊宛星李中南

申请人 : 深圳市北川电子有限公司

摘要 :

本发明公开一种自动中继路由方法,该方法在主节点向目标节点下发洪泛包的过程中,所述洪泛包每经过一个中间节点,该中间节点根据所述洪泛包的重发次数和接收信号强度判断是否满足中继条件,如果满足,则该中间节点根据自身的节点标识更新所述洪泛包的路由信息,并继续转发所述洪泛包,目标节点根据接收到的洪泛包中的路由信息发送回复包给主节点,本发明通过以上技术方案,解决了现有技术下行以洪泛作为寻路方式,上行按相反路径返回的自动中继模型中,参与中继的节点间竞争激烈,信号碰撞严重,寻路效率低的问题。

权利要求 :

1.一种自动中继路由方法,其特征在于,包括:

在主节点向目标节点下发洪泛包的过程中,所述洪泛包每经过一个中间节点,该中间节点根据所述洪泛包的重发次数和接收信号强度判断是否满足中继条件;其判断方法为:获取预设的所述洪泛包的最大发送次数N,获取所述洪泛包的当前重发次数K,K的取值范围为[0,N-1],获取所述洪泛包接收有效的信号强度值范围为Qthre_min到Qthre_max;计算中继选择区间,所述中继选择区间为Qthre_min到Qthre_min+(K+1)*(Qthre_max-Qthre_min)/N;获取所述洪泛包的接收信号强度测量值Q,如果所述洪泛包的接收信号强度测量值Q在所述中继选择区间内,则判断所述中间节点满足中继条件;

如果满足,则该中间节点根据自身的节点标识更新所述洪泛包的路由信息,并继续转发所述洪泛包;

目标节点根据接收到的洪泛包中的路由信息发送回复包给主节点。

2.如权利要求1所述的方法,其特征在于,还包括:在所述中间节点配置待转发列表、不转发列表和自转发列表,所述待转发列表用于存储需要继续转发的洪泛包,所述不转发列表用于存储已经转发成功的洪泛包和回复包,所述自转发列表用于存储需要继续转发的回复包。

3.如权利要求2所述的方法,其特征在于,满足中继条件的中间节点在转发洪泛包之前,还包括:在所述不转发列表中查找是否存在相同的洪泛包,如果存在,则将该洪泛包丢弃,如果不存在,则在所述待转发列表中查找是否存在相同的洪泛包,如果所述待转发列表中存在相同的洪泛包,则将该洪泛包丢弃,并更新所述待转发列表中相同洪泛包的重发次数和路由信息,如果所述待转发列表中不存在相同的洪泛包,则将该洪泛包放入所述待转发列表,并将该洪泛包继续转发。

4.如权利要求2所述的方法,其特征在于,回复包路径中的中间节点转发回复包之前,还包括:在所述不转发列表中查找是否存在相同的回复包,如果存在,则将该回复包丢弃,如果不存在,则在所述自转发列表中查找是否存在相同的回复包,如果存在,则将该回复包丢弃,如果不存在,则将该回复包放入所述自转发列表中,并将该回复包继续转发。

5.如权利要求1所述的方法,其特征在于,所述满足中继条件的中间节点继续转发洪泛包之前,还包括:计算洪泛包的退避时间,直到所述退避时间结束,该中间节点继续转发洪泛包。

6.如权利要求5所述的方法,其特征在于,计算洪泛包的退避时间的方法具体为:

计算第一时间单元系数=(Q-Qthre_min)/Q_level*Time_level,其中Q_level和Time_level为预设值;

获取预设的时间单元值;

计算洪泛包的第一退避时间=第一时间单元系数*时间单元值。

7.如权利要求6所述的方法,其特征在于,当两个或多个中间节点计算得到的第一退避时间相同时,还包括:对各中间节点选取一个随机整数ε,随机整数ε的取值范围为[0,Time_level-1];

计算各中间节点的第一时间单元系数=(Q-Qthre_min)/Q_level*Time_level+ε。

8.如权利要求6或7所述的方法,其特征在于,计算退避时间的方法还包括:设定一用于优先发送回复包的第二退避时间,根据所述第一退避时间和第二退避时间之和确定所述洪泛包的退避时间。

9.如权利要求1所述的方法,其特征在于,还包括:当回复包路径周围的其他节点侦听到回复包时,该其他节点停止转发洪泛包。

说明书 :

一种自动中继路由方法

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种自动中继路由方法。

背景技术

[0002] 低压载波主从式网络,是在低压部分通过载波技术构建的通信网络,一般采用主从式结构,比如,在变压器的低压侧安装主节点,在各用户处安装从节点,由主节点对从节点的信息进行采集。其中,由主节点将数据包发向从节点是下行过程,反之,由从节点回复数据包到主节点的过程是上行过程。
[0003] 低压电网存在固有的限制,导致主从节点间载波通信的困难,故主从节点的通信需要中继的参与,目前中继技术被分为两种类型,人工中继和自动中继。人工中继是一种静态的中继模型,随着载波技术的发展,载波的传输范围有所提升,可靠性也有明显增强,但是因为低压电网的情况多样,这种简单的模式仍不能适应通信环境的动态变化;一种自动中继的路由模型是通过以集中器作为根的树状搜索来完成的,通常,这个搜索树是通过遍历和贪心方式来实现的,路由表是由集中器开始一步一步建立的,这种方式看似能解决在传输距离上的限制,但这种无尽的搜索相当消耗时间,而且一旦网络发生变动,则需要花费大量的时间对网络节点进行重组,开销较大,效率不高,灵活性不够;另外一种自动中继的路由模型则是利用了载波的广播特性,下行以洪泛方式作为寻路方式,上行按相反路径返回,其优势在于能实现即时寻路,缺陷在于参与中继的节点间竞争激烈,信号碰撞严重,寻路效率较低。

发明内容

[0004] 本发明提供一种自动中继路由方法,解决现有技术下行以洪泛作为寻路方式,上行按相反路径返回的自动中继模型中,参与中继的节点间竞争激烈,信号碰撞严重,寻路效率低的问题。
[0005] 为解决上述技术问题,本发明采用以下技术方案:
[0006] 一种自动中继路由方法,包括:
[0007] 在主节点向目标节点下发洪泛包的过程中,所述洪泛包每经过一个中间节点,该中间节点根据所述洪泛包的重发次数和接收信号强度判断是否满足中继条件;
[0008] 如果满足,则该中间节点根据自身的节点标识更新所述洪泛包的路由信息,并继续转发所述洪泛包;
[0009] 目标节点根据接收到的洪泛包中的路由信息发送回复包给主节点。
[0010] 根据所述洪泛包的重发次数和接收信号强度判断中间节点是否满足中继条件的方法具体为:
[0011] 获取预设的所述洪泛包的最大发送次数N,获取所述洪泛包的当前重发次数K,K的取值范围为[0,N-1],获取所述洪泛包接收有效的信号强度值范围为Qthre_min到Qthre_max;
[0012] 计 算 中 继 选 择 区 间,所 述 中 继 选 择 区 间 为 Qthre_min到 Qthre_min+(K+1)*(Qthre_max-Qthre_min)/N;
[0013] 获取所述洪泛包的接收信号强度测量值Q,如果所述洪泛包的接收信号强度测量值Q在所述中继选择区间内,则判断所述中间节点满足中继条件。
[0014] 还包括:在所述中间节点配置待转发列表、不转发列表和自转发列表,所述待转发列表用于存储需要继续转发的洪泛包,所述不转发列表用于存储已经转发成功的洪泛包和回复包,所述自转发列表用于存储需要继续转发的回复包。
[0015] 满足中继条件的中间节点在转发洪泛包之前,还包括:在所述不转发列表中查找是否存在相同的洪泛包,如果存在,则将该洪泛包丢弃,如果不存在,则在所述待转发列表中查找是否存在相同的洪泛包,如果所述待转发列表中存在相同的洪泛包,则将该洪泛包丢弃,并更新所述待转发列表中相同洪泛包的重发次数和路由信息,如果所述待转发列表中不存在相同的洪泛包,则将该洪泛包放入所述待转发列表,并将该洪泛包继续转发。
[0016] 回复包路径中的中间节点转发回复包之前,还包括:在所述不转发列表中查找是否存在相同的回复包,如果存在,则将该回复包丢弃,如果不存在,则在所述自转发列表中查找是否存在相同的回复包,如果存在,则将该回复包丢弃,如果不存在,则将该回复包放入所述自转发列表中,并将该回复包继续转发。
[0017] 所述满足中继条件的中间节点继续转发洪泛包之前,还包括:计算洪泛包的退避时间,直到所述洪泛包的退避时间结束,该中间节点继续转发洪泛包。
[0018] 计算洪泛包的退避时间的方法具体为:
[0019] 计算第一时间单元系数=(Q-Qthre_min)/Q_level*Time_level,其中[0020] Q_level和Time_level为预设值;
[0021] 获取预设的时间单元值;
[0022] 计算洪泛包的第一退避时间=第一时间单元系数*时间单元值。
[0023] 当两个或多个中间节点计算得到的第一退避时间相同时,还包括:对各中间节点选取一个随机整数ε,随机整数ε的取值范围为[0,Time_level-1];计算所述各中间节点的第一时间单元系数=(Q-Qthre_min)/Q_level*Time_level+ε。
[0024] 计算洪泛包的退避时间的方法还包括:设定一用于优先发送回复包的第二退避时间,根据第一退避时间和第二退避时间之和确定所述洪泛包的退避时间。
[0025] 还包括:当回复包路径周围的其它节点侦听到回复包时,该其他节点停止转发洪泛包。
[0026] 本发明提供一种自动中继路由方法,该方法设置了弱化中继竞争的机制,即通过设置中继条件,只有满足中继条件的中间节点才有资格中继,因此,本发明的该技术方案对以洪泛作为寻路方式的路由模型来说,起到了弱化中继竞争的作用;另外,本发明还将洪泛包的重发次数作为判断是否满足中继条件的一个考量参数,比起单纯的仅根据数据包的接收信号强度来判断是否满足中继条件,该技术方案更加周全,缩小了中继选择范围,弱化中继竞争的同时,也有效避免了因参与中继选择的节点不足导致寻路失败的问题。

附图说明

[0027] 图1为本发明实施例一种自动中继路由方法的流程图;
[0028] 图2a为本发明实施例最大发送次数N为3,当前重发次数K为0时的中继选择区间的示意图;
[0029] 图2b为本发明实施例最大发送次数N为3,当前重发次数K为1时的中继选择区间的示意图;
[0030] 图2c为本发明实施例最大发送次数N为3,当前重发次数K为2时的中继选择区间的示意图;
[0031] 图3为本发明实施例冲突避让机制的示意图。

具体实施方式

[0032] 下面通过具体实施方式结合附图对本发明作进一步详细说明。
[0033] 实施例一:
[0034] 本实施例中,变压器下安装有主节点,各用户处安装有从节点,主节点负责路径发现、信息收集等任务。主节点发送洪泛包,每跳的接收节点不只一个,由主节点开始,依次按照中继条件确定下级中继,满足中继条件的从节点在竞争到信道后把自身的节点标识加入到洪泛包,再进行转发,直到洪泛包到达目标节点,从节点自身的节点标识可以是从节点的地址等,本实施例将主节点向目标节点下发洪泛包的过程中,洪泛包每经过的一个从节点称作中间节点。
[0035] 图1为本发明实施例一种自动中继路由方法的流程图,请参考图1:
[0036] S001、中间节点有效接收到一个数据包,根据该数据包的标识对待转发列表、不转发列表和自转发列表中的其他数据包进行清理。清理列表的作用是为了能重复使用有限的列表,清理的方式包括:按包序号的新旧情况,包序号新的数据包清理掉包序号旧的数据包,当包序号相同时,按当前重发次数K来清理,当前重发次数K大的数据包清理掉当前重发次数K小的数据包,当包序号和当前重发次数K均相同时,由于实际应用中,上行回复包是维持原有下行洪泛包的包序号和当前重发次数的,因此按照上行包清理掉对应的下行包;
[0037] S002、判断目标节点是否为本节点或路由节点中是否包含本节点,如果是则执行S003,如果不是,则执行S004;
[0038] S003、进行相关处理:如果目标节点是本节点,则本节点直接生成回复包,并将其发送给主节点,如果路由节点中包含本节点,则本节点将该数据包转发给主节点;
[0039] S004、判断是否为上行,如果是,则执行S005,如果不是,则执行S008;
[0040] S005、判断是否需要洪泛,如果是,则执行S006,如果不是,则执行S007;
[0041] S006、将预先配置的待转发列表中所有目的地址到该包源节点的下行数据包放入不转发列表中,执行S008;
[0042] S007、直接丢弃。
[0043] S008、根据预设的该数据包的最大发送次数N、该数据包当前的重发次数K及该数据包接收有效的信号强度值范围(Qthre_min到Qthre_max)计算中继选择区间,并判断该数据包的接收信号强度测量值Q是否在该中继选择区间内,如果是,则执行S009,如果不是,则执行S015;
[0044] S009、判断该数据包的剩余转发次数是否为0,则执行S016,如果不为0,则执行S010;
[0045] S010、判断不转发列表中是否存在相同的数据包,如果存在,则执行S016,如果不存在,则执行S011;
[0046] S011、判断待转发列表中是否存在相同的数据包,如果存在,则执行S012,如果不存在,则执行S013;
[0047] S012、将该数据包放入待转发列表,替换待转发列表中的相同数据包,或者也可以将该数据包丢弃,并更新待转发列表中相同洪泛包的重发次数和路由信息,执行S014;
[0048] S013、将该数据包加入待转发列表;
[0049] S014、侦听信道,发送数据包,再将待转发列表中的该数据包移至不转发列表中。
[0050] S015、判断是否满足中继节点淹没条件,即判断该数据包的接收信号强度测量值Q是否高于中继选择区间的上限值,如果是,则执行S017,如果不是,则执行S016;
[0051] S016、直接丢弃。
[0052] S017、则将该数据包放入不转发列表,并检查待转发列表中是否存在与该数据包相同的数据包,如果存在,则清除待转发列表中的相同数据包。
[0053] 中继条件根据洪泛包的重发次数和接收信号强度来确定,本实施例中继条件的确定方法为:洪泛包的接收信号强度测量值以Q表示,Q值的范围为Q_min到Q_max,通常临近Q_min和临近Q_max的一定区域被视为接收无效的信号强度,接收有效的信号强度范围为Qthre_min到Qthre_max,是Q_min到Q_max的一部分,设定一个洪泛包的最大发送次数为N,把有效的信号强度值范围平均分为N部分,每份区间长为Q_Delta=(Qthre_max-Qthre_min)/N,设定主节点首次向目标节点下发洪泛包时,该洪泛包的当前重发次数K为零,当该洪泛包没有寻找到到目标节点的路径时,启动重发机制,该洪泛包每重发一次,重发次数K加1,则K=0,1,2......N-1,根据洪泛包当前重发次数K计算中继选择区间为Qthre_min到Qthre_min+(k+1)*Q_Dleta,获洪泛包的接收信号强度测量值Q,如果接收信号强度测量值Q低于该中继选择区间,则不处理该洪泛包,将其忽略,如果接收信号强度测量值Q高于该中继选择区间,则只处理而不转发该洪泛包,即将该洪泛包淹没,只有接收信号强度测量值Q在该中继选择区间内,则判断该中间节点满足中继条件,具有继续转发该洪泛包的资格。
[0054] 本实施例中,设定一洪泛包的最大发送次数N等于3,把有效的信号强度值范围平均分为3部分,每份区间长为Q_Delta=(Qthre_max-Qthre_min)/3,当该洪泛包的当前重发次数K为0时,其中继选择区间为Qthre_min到Qthre_min+1*(Qthre_max-Qthre_min)/3,见图2a,图2a为本发明实施例最大发送次数N为3,当前重发次数K为0时的中继选择区间的示意图;当该洪泛包的当前重发次数K为1时,其中继选择区间为Qthre_min到Qthre_min+2*(Qthre_max-Qthre_min)/3,见图2b,图2b为本发明实施例最大发送次数N为3,当前重发次数K为1时的中继选择区间的示意图;当该洪泛包的当前重发次数K为2时,其中继选择区间为Qthre_min到Qthre_min+3*(Qthre_max-Qthre_min)/3,即Qthre_min到Qthre_max,见图2c,图2c为本发明实施例最大发送次数N为3,当前重发次数K为
2时的中继选择区间的示意图。由此可见,当洪泛包没有寻找到到目标节点的路径时,会触发重发机制,该洪泛包的当前重发次数K越大,中继选择区间也就越大,即允许参与中继选择的中间节点越多,因此,本实施例避免了因潜在中继不足导致寻路失败的问题。
[0055] 本实施例还通过对三类不同类型转发列表的操作,进一步弱化中继竞争:在中间节点配置待转发列表、不转发列表和自转发列表,待转发列表用于存储需要继续转发的洪泛包,不转发列表用于存储已经转发成功的洪泛包和回复包,自转发列表用于存储需要继续转发的回复包。满足中继条件的中间节点,在继续转发洪泛包之前,在其配置的不转发列表中查找是否存在相同的洪泛包,如果存在,则将该洪泛包丢弃,如果不存在,则在待转发列表中查找是否存在相同的洪泛包,如果待转发列表中存在相同的洪泛包,则将该洪泛包丢弃,并更新待转发列表中相同洪泛包的重发次数和路由信息,如果待转发列表中不存在相同的洪泛包,则将该洪泛包放入待转发列表,并将该洪泛包继续转发;回复包路径中的中间节点将接收到的回复包继续转发之前,在不转发列表中查找是否存在相同的回复包,如果存在,则将该回复包丢弃,如果不存在,则在其配置的自转发列表中查找是否存在相同的回复包,如果存在,则将该回复包丢弃,如果不存在,则将该回复包放入自转发列表中,并将该回复包继续转发。
[0056] 该实施例中,判断是否为相同的数据包指的是判断数据包的包序号是否相同,具有相同包序号的数据包被认为是相同的数据包。当洪泛包的接收信号强度测量值Q高于中继区间,则淹没,将该洪泛包放入中间节点的不转发列表,并判断该中间节点的待转发列表中是否存在相同的洪泛包,如果存在,则从该中间节点的待转发列表中清除相同的洪泛包。
[0057] 本实施例还可以做进一步改进,图3为本发明实施例冲突避让机制的示意图,由图3所示,退避区间由三部分组成,第一部分是帧间隔,静默区间,用于不同节点间统一步调,第二部分用于数据包的退避,在退避时间内暂缓发送数据包,待退避时间结束后,再判断是否可以发送,如还不能发送,则再退避,第三部分是用于竞争到信道的节点发送数据包。第二部分数据包的退避时间由第一退避时间和第二退避时间构成,第一退避时间由满足中继条件的中间节点根据洪泛包的接收信号强度计算得到,根据洪泛包的接收信号强度计算第一退避时间的方法可以为:第一退避时间=第一时间单元系数*时间单元值,第一时间单元系数=(Q-Qthre_min)/Q_level*Time_level,其中Q_level和Time_level是两个预设值,本实施例中,假设Qthre_min=30,Q_level=10,Time_level=10,当中间节点接收洪泛包的信号强度测量值Q为73时,计算(Q-Qthre_min)/Q_level=43/10=4.3,优选的,舍弃小数点后面的数字,保留整数位,则计算结果为4,那么计算得到的第一时间单元系数=4*Time_level=40,根据目前通信领域50HZ的网宽,常规的时间单元值为20ms,但不局限于20ms,计算第一退避时间=第一时间单元系数*时间单元值=40*20ms=800ms。可见下行过程中,洪泛包的接收信号强度值Q小(离得远的)的节点先发送其所接收到的洪泛包。
[0058] 当同一时刻,出现两个或多个中间节点因接收洪泛包的信号强度测量值Q相同,计算得到的该两个或多个中间节点的第一时间单元系数相同,而导致该两个或多个中间节点的第一退避时间相同;或者出现两个或多个中间节点接收洪泛包的信号强度测量值Q相近,比如一个节点的信号强度测量值Q为73,计算(Q-Qthre_min)/Q_level=(73-30)/10=4.3,另一节点的信号强度测量值Q为78,计算(Q-Qthre_min)/Q_level=(78-30)/10=4.8,舍弃小数点后面的数字,保留整数位,而得到结果相同都是4,那么该两个节点的第一时间单元系数=(Q-Qthre_min)/Q_level*Time_level=4*Time_level=40,第一退避时间=第一时间单元系数*时间单元值=40*20ms=800ms,即第一退避时间相同。针对这些情况,本实施例还可以做进一步改进:针对上述第一退避时间相同的各节点选择一个随机数,所选择的随机数的取值范围为[0,Time_level-1],优选的选择一个随机整数ε,随机整数ε的取值范围为[0,Time_level-1],计算各节点的第一时间单元系数=(Q-Qthre_min)/Q_level*Time_level+ε。本实施例中,由Time_level=10可知,各节点选择的随机整数ε的范围为[0,9],假如某一节点选取的随机整数ε=5,则计算该节点的第一时间单元系数=(Q-Qthre_min)/Q_level*Time_level+ε=40+5=45,计算该节点的第一退避时间T=第一时间单元系数*时间单元值=45*20ms=900ms,这样就避免了两个或多个节点的洪泛包退避时间相同。
[0059] 由于设定回复包比洪泛包有更高的发送优先级,能保证回复包路径周围的其他节点优先侦听到回复包,从而即时停止中继选择,停止转发洪泛包,能够有效避免回复包路径周围的其他节点对上行过程造成的干扰,因此,本实施例中还设定一用于保证回复包具有更高的发送优先级的第二退避时间,第二退避时间是定长的为上行回复包的发送预留的一个时间,假设这个预留时间为10个时间单元值,上行发送回复包的退避时间为随机选择的[0,9]个时间单元值,下行发送洪泛包的退避时间则是10个时间单元值与上述第一退避时间之和,在本实例中等于10*20ms+900ms=1100ms。
[0060] 实际应用过程中,如果退避时间过长,则会有新的包序号的数据包出现,便可清理掉退避过长的旧包,如果退避过程中,数据包被取消发送,则该中间节点不再针对该数据包计算退避时间,也不用再发送该数据包。
[0061] 以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。