一种提高无线Mesh骨干网可靠性的拜占庭容错方法

文档序号:7743318阅读:144来源:国知局

专利名称::一种提高无线Mesh骨干网可靠性的拜占庭容错方法
技术领域
:本发明涉及无线网络
技术领域
、可信计算领域,具体来说是一种提高无线Mesh骨干网可靠性的拜占庭容错策略。
背景技术
:无线Mesh网(WirelessMeshNetwork,简称WMN)是以移动Adhoc网络为基础研究开发的一种基于多条路由、支持多点对多点技术的新型网络结构,具有动态扩展、自组网、自管理、自动修复、自我平衡、移动宽带的特性,是一种大容量、高速率、覆盖范围广的网络,可以成为宽带接入的一种有效手段。其先期投入低、渐进部署、易维护、网络健壮以及可靠的服务范围等等这些特点更有助于无线Mesh网成为未来的核心通信网络之一。无线Mesh网良好的发展前景使得对其可靠性的研究显得尤为重要,刨除硬件因素,良好的路由协议是其可靠性的重要保证。在无线Mesh网路由协议可靠性设计方面,需要考虑以下因素(1)路由判据。许多已有的Adhoc网络路由协议均以最小跳数作为路由判据,但在大多数情况下,这种路由判据的性能在无线Mesh网中并不是最优的,由于干扰冲突、通信距离等因素的影响,基于这种路由判据生成的路径链路质量将会恶化,从源节点到目的节点的端到端的吞吐量、误码率等性能将变得非常差。为了解决这种问题,就要求无线Mesh网采用一些新的路由判据,而且该判据能正确反映出链路质量对各指标的影响。(2)负载均衡。在无线Mesh网中,所有节点通过路由协议共享网络资源。因此,无线Mesh网路由协议必须满足负载均衡的这一要求。例如当网络中某些节点发生拥塞,并成为整个网络的瓶颈节点(Mesh路由器)时,新的业务流应能“绕过”该节点,自动选择其他路径进行数据传输。路由判据也需要在一定程度上满足负载均衡的要求。(3)路由容错在无线Mesh网中,路由节点相对固定,但有时会因为数据冲突而产生路由错误,而移动节点的不确定性也会影响链路的联通状况,甚至导致链路失效,这就需要无线Mesh网的路由协议在路由发生错误时,尽快完成路由重建,以避免服务中断;或是因新的可用节点出现而生成新的链路。(4)路由安全一个高效的路由协议如果得不到很好的保护,恶意的攻击者可能对路由协议造成破坏甚至使路由协议完全瘫痪。在无线Mesh网中,由于Mesh客户端也具有路由的角色,Mesh节点可以根据路由信息创建、删除或者更新网络中路由路径。这个事实也是无线Mesh网和Adhoc网路由协议中的一个共同的重要弱点,因为恶意节点可以产生错误的路由信息改变路由的方向或者是简单地截断路由。另外,攻击者可以通过攻击路由协议来误导路由,从而导致网络的崩溃。提高路由协议的安全性,也是对路由容错性能的更高要求。由于在现有的很多应用情况下,无线Mesh网的无线设备布置的区域离人群较近容易受到人为的破坏,网络节点本身也极易遭受其它节点的攻击、干扰、窃听,所以安全是无线Mesh网必须解决的重要问题之一。为了提高无线Mesh网的可靠性,需要对现有的路由协议进行改进,当前的改进策略主要是通过对合法节点信息的加密、认证等方式等来提高网络协议的安全性能,从而提高无线Mesh网的可靠性。拜占庭原理是可信计算中的一个容错原理,该原理可以使得系统能够在一个或者多个系统部件工作异常的情况下,仍然能够不受影响的正常工作。该原理在可信计算、容错以及网络安全等方面有非常广泛的应用。拜占庭原理的本质是保持并行计算中数据一致性问题的一种抽象的表达,是以数据备份作为基础来实现的,即一个系统中的各个组成部分就某一数据或指令信息彼此进行交换,最终系统中的有效部分将收到的信息以少数服从多数的原则选出正确的数据或指令,从而保证系统的可靠性。
发明内容本发明的目的在于提供一种能增强网络的容错能力,使得无线Mesh骨干网的可靠性得到提升的提高无线Mesh骨干网可靠性的拜占庭容错方法。本发明的目的是这样实现的包括拜占庭单元的查找和建立以及数据备份与容讲T曰;(1)拜占庭单元的查找和建立①取出收到路由包中的NoNnode地址和邻节点地址信息;②路由请求包中加入NoNnode地址信息,即节点在广播路由包时,除了发送自身节点地址信息外,同时将自身收到的邻节点地址信息封装到路由包中一起进行发送;③遍历双邻节点表N-Nform,查找收到的节点信息在表中是否存在,若不存在相同节点信息,则将收到的节点信息存入双邻节点表N-Nform中;④判断等待时间t是否小于TB,是则返回第①步;⑤遍历双邻节点表,取出不相同的三个邻节点地址;⑥查找双邻节点表,判断所取的三个节点是否互为邻节点,如果是,首先查找拜占庭单元索引表,查看该节点组是否已经记录,如果没有则将三个节点地址存入索引表,同时自定义单元号存于表中;⑦分别以三个节点为目的节点,转发自身以及除目的节点外其它两个节点的地址,同时附带拜占庭单元序号;⑧如收到附带拜占庭单元号的节点地址,查看拜占庭单元索引表中该节点组是否已经记录,如果没有,则将收到的三个节点地址,连同拜占庭单元号存入拜占庭单元索引表;⑨双邻节点表是否遍历完,如果没有,则继续选取不同的三个邻节点地址,返回第⑤步;⑩拜占庭单元的查找和建立结束;(2)数据备份与容错策略①选择需要备份的自身节点数据信息;②查找拜占庭单元索引表,将数据信息分别发送给拜占庭单元号相同的3个节占.^\\\③对收到的节点数据信息进行判断,如果消息来源与数据信息所属节点为同一节点,将该数据信息存入数据信息备份表,权值记为1;同时查找拜占庭单元索引表,找出与消息来源节点的拜占庭单元号相同的两个节点,将数据信息分别转发给这两个节点;④如果消息来源与数据信息所属节点不同,则该信息为非信息所属节点转发的节点信息,此数据信息在数据信息备份表中已经存在,则在数据信息备份表中找到该信息,将其权值加1;⑤如果接收到的转发信息与已存储的数据信息不同,则判断已存储信息的权值是否大于1,是,则丢弃当前收到的数据信息;否则,将收到的数据信息存入数据备份表,权值记为1;⑥遍历信息备份表,如果信息备份表中存在节点名称相同但数据信息不同的项,则判断这些项的权值,以权值高的数据信息作为正确的备份信息,同时删除其它的同名信息;如果这些项的权值相同,则以最新增长权值的数据信息作为正确的备份信息,删除其它的同名信息;⑦如果接收数据未完成,则返回到第③步;⑧结束。本发明根据无线Mesh网的结构特点,首先提出无线Mesh网应用拜占庭原理的适应性网络结构,然后以拜占庭原理中“口头协议”解决方案为基础,给出了适合应用于无线Mesh网的拜占庭算法。该算法包括无线Mesh网骨干网节点的拜占庭单元的查找和建立,以及选择备份的数据信息的存储与容错判断两部分。最后给出原理实际应用中的特殊情况的对应策略。本发明的方法中涉及到的技术术语的定义为(1)拜占庭单元(ByzantineUnit,UB)如果网络中的4个节点,它们彼此都能够一跳可达,即彼此互为邻节点,我们将这4个节点组成一个分组,称为拜占庭单元(见图1)。(2)邻节点的邻节点(TheNeighboroftheNeighborNode,NoNnode)在无线Mesh网中,如果存在这样的三个节点a、b、c,a是b的邻节点,b是c的邻节点,数据信息从a经由b发送到c,我们定义节点a为节点c的邻节点的邻节点。(3)ι^(NeighborandNeighborFrom,N-Nform)该表用来存储节点收到的邻节点地址及NoNnode地址的信息(表1)。表1双邻节点表结构邻节点的邻节点地址邻节点地址--NoNnodeAddressNeighborNodeAddress该表的数据结构为structN-Nform{char*NoNnode_Address;char氺Neighbor_Node_Address;};(4)手羊(jJjgi^Tli胃弓L(ByzantineUnitForm,Bform)该表用来存储节点所在的拜占庭单元节点地址及拜占庭单元号(表2)。表2拜占庭单元索引表结构节点地址拜占庭单元号该表的数据结构为structBform{char*IP;char*Byzantine_Unit_num;};(5)触发周期(ByzantineTime,TB)触发周期指节点自收到第一个路由包开始等待执行拜占庭查找算法的时间。如果该无线Mesh网中节点的最大度数为N,则Tb大小设定为一跳数据传输最大时延的N倍,以确保在Tb时间时,节点存储了足够的地址信息。(6)数据的权值(Thequantityofdata,QoD)在拜占庭原理的执行过程中,每个节点将不断的接收、发送数据,同样的数据可能接收多次,我们将该节点接收到相同数据信息的数量定义为这个数据的权值。(7)数据信息备份表(DataForm,Dform)该表用来存储选择备份的数据信息,同时记录该数据信息所属的节点名称和数据的权值(表3)。表3数据信息备份表结构节点名称备份的数据信息数据的权值更新时间该表的数据结构为structDform{char*Node_Name;char*Data;char氺Data—Quantity;char氺Time;};本发明中的无线Mesh网适应性结构为将拜占庭容错原理应用于网络可靠性,对无线Mesh网的结构要有一定的要求。为了更好的发挥拜占庭原理的作用,考虑到无线Mesh网中用户节点的移动性,拜占庭算法将只针对无线Mesh网的骨干节点。首先提出在无线Mesh网中应用拜占庭原理的适应性结构约束,包括以下两点①结构下限网络节点数量是4,且所有的节点彼此均能一跳可达。②适应性要求网络中的任意节点(Internet接入点除外)至少保证有3个邻居节点一跳可达,且这3个节点彼此能够一跳可达。即网络中的任意节点都要至少包含在一个“拜占庭单元”中。本发明基于拜占庭原理,给出提高无线Mesh骨干网可靠性的拜占庭容错策略,应用提出的拜占庭算法对现有路由协议进行改进,主要用来提高无线Mesh骨干网针对节点的容错及入侵容忍能力,和能够容忍因节点故障或攻击行为导致的链路失效或错误的链路状况判断的能力。改进后的路由协议将具有以下优点(1)提高无线Mesh网路由协议可靠性的策略不同于以往的节点、数据加密和认证的方式,而是采取网络节点彼此进行信息备份的方法,无需数据的加解密过程,实现方式更为简单快捷。(2)通过拜占庭算法的数据备份机制,改进后的路由协议,当链路中的某一节点因链路故障、自身异常或遭受攻击而出现数据错传或丢包时,使数据传输能够正确进行,不需要像传统路由协议那样选择重传数据包或用新的链路进行传输。改进后的路由协议与传统路由协议相比在执行效率和效果方面具有明显的优势。(3)通过拜占庭算法的数据容错机制,改进后的路由协议可以辨识出因攻击而导致的虚假链路失效数据包,从而避免了不必要的重新发起链路过程。(4)改进后的路由协议与改进之前相比,容错能力明显提高(见图6、图7),因此达到了提高无线Mesh骨干网可靠性的目的。图Ia和图Ib拜占庭单元基本型;图2a_图2c拜占庭单元建立过程模拟;其中图2a.WMN骨干节点、图2b.—跳链路拓扑结构、图2c.拜占庭单元建立;图3拜占庭单元建立过程样例;图4拜占庭原理实际应用中遇到的特殊情况;图5节点信息的备份;图6改进后的BAODV协议与AODV协议随网络失效节点数增加的包传输率对比;图7改进后的BDSR协议与DSR协议随网络失效节点数增加的包传输率对比;图8数据传输时的拜占庭容错情况;图9Wormhole攻击;图10拜占庭容错后的Wormhole攻击;图11链路失效包(RERR)的拜占庭容错。具体实施例方式下面结合附图举例对本发明做更详细地描述(1)拜占庭单元的查找和建立算法的作用是在无线Mesh网骨干网节点中,找到拜占庭单元结构,同时处在单元中的节点记录该单元的地址信息,为接下来的数据备份做准备(见图2)。该部分拜占庭算法执行时将依据以下两种节点信息①NoNnode地址;②邻节点地址。需要注意的是,现有的路由协议的路由数据包中并不含有NoNnode地址信息,因此在算法应用时要对现有的路由协议路由数据包信息进行修改,加入NoNnode地址信息。现在将拜占庭单元查找和建立的算法思想描述如下①取出收到路由包中的NoNnode地址和邻节点地址信息。②路由请求包中加入NoNnode地址信息,即节点在广播路由包时,除了发送自身节点地址信息外,同时将自身收到的邻节点地址信息封装到路由包中一起进行发送。③遍历双邻节点表N-Nform,查找收到的节点信息在表中是否存在(表元素要按位对应查找),若不存在相同节点信息,则将收到的节点信息存入双邻节点表N-Nform中。④判断等待时间t是否小于TB,是则返回第①步。⑤遍历双邻节点表,取出不相同的三个邻节点地址。⑥查找双邻节点表,判断所取的三个节点是否互为邻节点,如果是,首先查找拜占庭单元索引表,查看该节点组是否已经记录,如果没有则将三个节点地址存入索引表,同时自定义单元号存于表中。⑦分别以三个节点为目的节点,转发自身以及除目的节点外其它两个节点的地址,同时附带拜占庭单元序号。⑧如收到附带拜占庭单元号的节点地址,查看拜占庭单元索引表中该节点组是否已经记录,如果没有,则将收到的三个节点地址,连通拜占庭单元号存入拜占庭单元索引表。⑨双邻节点表是否遍历完,如果没有,则继续选取不同的三个邻节点地址,返回第⑤步。⑩拜占庭单元的查找和建立结束;现在举例说明该部分算法的执行过程。如图3,路由请求包从E点广播。经过TB时间之后,以节点D为参照,该节点的双邻节点表内容如下表4节点D的双邻节点表<table>tableseeoriginaldocumentpage9</column></row><table>首先取出表中不相同的三个邻节点地址A、B、C,然后判断这三个节点是否互为一跳的邻节点,即三个节点中任意两个节点的地址是否同时出现在表中的某一行。通过判断,得出A、B、C三个节点满足要求,因此A、B、C以及当前节点D构成拜占庭单元,D节点将A、B、C三个节点的地址存入拜占庭单元索引表中,同时生成拜占庭单元号,并分别向A转发B、C、D;向B转发A、C、D;向C转发A、B、D节点信息以及拜占庭单元号。算法伪代码如下Dwhile(t<Tb)/*双邻节点地址的存储与转发*/2)receivedata,saveinRREQ;3)sendSelfAddressandNeighborNodeAddress;4)if(NoNnodeAddressNeighborNodeAddressnotinN-Nform[])5)N-Nform[].NoNnode_Address=NoNnodeAddress;6)N-Nform[]·Neighbor_Node_Address=NeighborNodeAddress;7)endif/*查找当前NoNnode和邻节点地址在N-Nform中是否存在,否,则存入*/8)endwhile9)while(N-Nform[]!=NULL)10)selectN-Nform[i],N-Nform[j],N-Nform[k];11)if(N-Nform[i].Neighbor_Node_Address!=N-Nform[j].Neighbor_Node_Address!=N-Nform[k].Neighbor_Node_Address)12)char*A=N-Nform[i].Neighbor_Node_Address;13)char*B=N-Nform[j]·Neighbor_Node_Address;14)char*C=N-Nform[k].Neighbor_Node_Address;15)if((ABIIBAeN-Nform[])&&(AC||CAeN-Nform[])&&(BCIICBeN-Nform[]))/*判断ABC是否互为邻节点*/16)A,B,C—Bform[].IP;17)num—Bform[].Byζantiηe_Unit_num;18)char*D=SelfNodeAddress;19)sendB,C,D&numtonodeA;20)sendA,C,D&numtonodeB;21)sendA,B,D&numtonodeC;/*存储并转发拜占庭单元信息*/22)endif23)else24)break25)endif26)endwhile27)while(receiveIP&num)/*接收转发的拜占庭单元信息“28)if(IP&numnotinBform[])29)IP&num—Bform□;30)endwhile(2)数据备份与容错拜占庭单元查找、建立完成之后,就要进行数据信息的备份过程,这也是拜占庭算法容忍网络节点异常的主要策略。针对不同情况的网络攻击行为,选择相应的节点数据信息进行备份,当攻击行为出现,遭受攻击的节点某些信息被窜改,或者在网络中出现冒充节点时,融入拜占庭原理的路由协议就会通过判断异常节点所在拜占庭单元中其它节点的备份信息,得出正确的节点信息,从而排除干扰。现将该部分算法描述如下①选择需要备份的自身节点数据信息。②查找拜占庭单元索引表,将数据信息分别发送给拜占庭单元号相同的3个节点ο③对收到的节点数据信息进行判断,如果消息来源与数据信息所属节点为同一节点,将该数据信息存入数据信息备份表,权值记为1。同时查找拜占庭单元索引表,找出与消息来源节点的拜占庭单元号相同的两个节点,将数据信息分别转发给这两个节点。④如果消息来源与数据信息所属节点不同,则该信息为非信息所属节点转发的节点信息,此数据信息在数据信息备份表中已经存在(1跳信息先于2跳信息到达),则在数据信息备份表中找到该信息,将其权值加1。⑤如果接收到的转发信息与已存储的数据信息不同,则判断已存储信息的权值是否大于1,是,则丢弃当前收到的数据信息。否则,将收到的数据信息存入数据备份表,权值记为1。⑥遍历信息备份表,如果信息备份表中存在节点名称相同但数据信息不同的项,则判断这些项的权值,以权值高的数据信息作为正确的备份信息,同时删除其它的同名信息。如果这些项的权值相同,则以最新增长权值的数据信息作为正确的备份信息,删除其它的同名信息。⑦如果接收数据未完成,则返回到第③步⑧结束下面举例说明该部分算法的执行过程,如图5,假设当前需要备份的信息为节点的IP地址。则节点1查找自身的拜占庭单元索引表,将自己的IP地址发送给节点2、3、M,M节点将收到的节点1的IP地址存入数据信息备份表中,权值记为1,同时将节点1的IP地址转发给节点2、3,节点2收到节点1发来的数据信息,同时也会接收到来自M节点转发的节点1的IP地址,则节点2将数据信息备份表中节点1的IP信息权值加1(假设此时节点2还未收到节点3转发的数据信息)。同理,节点M、2、3也同样将自身IP地址发送给同单元的其它节点(M节点同属两个拜占庭单元,因此将对两个单元的6个节点全部发送自身的备份信息),收到信息的节点同样进行信息的判断、存储和转发。如果在整个备份过程中没有出现异常(节点自身故障或外来攻击),以拜占庭单元α为例,最终其单元节点1、2、3、Μ的数据信息备份表内容如下表5节点1的数据信息备份表内容节点名称备份的数据信息数据的权值更新时间22IP3201001********----33IP3201001********MMIP3201001********表6节点2的数据信息备份表内容<table>tableseeoriginaldocumentpage12</column></row><table>表7节点3的数据信息备份表内容<table>tableseeoriginaldocumentpage12</column></row><table>表8节点M的数据信息备<table>tableseeoriginaldocumentpage12</column></row><table>算法伪代码如下1)while(data,scopynotfinish)2)selectA.IP,B.IP,C.IPfromBform[],whereA.Byzantine—Unit—num=B.Byzantine—Unit—num=C.Byzantine—Unit—num;3)sendselfdatatonodeA,nodeB,nodeC;4)while(receivedatanotfinish)/*从同一拜占庭单元的其它节点处接收备份数据*/5)if(data,name==node,name)6)savedatainDform[];7)Dform[],Data_Quantity=1;8)selectA.IP,B.IPfromBform[],whereA.Byzantine_Unit_num=B.Byζantiηe_Unit_num=node.Byζantiηe_Unit_num;9)senddatatonodeA,nodeB;10)endif/*源节点备份数据的处理*/11)else12)for(i=1;i<=η;i++)13)if(Dform[i],Node_Name==data.name&&Dform[i].Data==data)14)Dform[i]·Data—Quantity++;15)break;16)endif17)endfor18)if(i>n)19)for(i=1;i<=η;i++)20)if(Dform[i].Node_Name==data.name&&Dform[i]·Data!=data)21)if(Dform[i],Data_Quantity==1)22)savedatainDform[];23)Dform[],Data_Quantity=1;24)break;25)endif26)endif27)endfor28)endif29)if(i>n)30)savedatainDform[];31)Dform[],Data_Quantity=1;32)endif33)endelse/*转发节点发送备份数据的处理*/34)selectA,BfromDform[],whereA.Node_Name=B.Node_NameandA.time>B.time;/*数据A比数据B新*/35)if(A.Data_Quantity<B.Data_Quantity)36)deleteA;37)else38)deleteB;39)endwhile40)endwhile异常情况的处理我们知道,在“口头协议”情况中,如果失效个体数小于总个体数量1/3,我们认为这样的系统可以容忍拜占庭问题,或者说此时拜占庭问题可解。但在实际应用中,若直接使用拜占庭容错原理,在失效节点数量小于总节点数量1/3时,仍然存在特殊情况(图4)。从图中我们看出,当信息发起点异常时,“司令”分别向三个“副官”发出“进攻”、“待命”、“撤退”三个完全不同的命令,执行拜占庭算法后,三个“副官”得到的指令集均为(“进攻”、“待命”、“撤退”),拜占庭原理中定义所有忠诚的“副官”遵守同一个命令,则我们认为该种情况为可解的拜占庭问题,以此作为依据,似乎三个“副官”达成了一致;但事实上,每一个副官都不能做出正确的行动。当拜占庭单元中的某一节点出现异常时,以备份节点IP地址为例,异常节点向同处一个单元的其它三个节点发送自己的IP地址,待节点彼此交互信息完成之后,其它三个节点都无法得到该节点的正确IP地址,因为每个节点都得到该节点完全不同的三种IP地址,且地址信息的权值均为1。另一种情况,拜占庭单元中的某一节点并未出现异常,但处在运动状态中(尽管无线Mesh网中骨干网节点移动性相对较低,相对固定,但仍存在这种可能),因运动而导致该节点的某些信息发生变化(如物理地址),那么正确当节点在移动过程中向所在拜占庭单元的其它节点发送不断变化的数据信息,其它三个节点也无法得出需要备份的该节点的正确信息。因此,需要对提出的算法进行改进,以应对备份信息的发起点出现异常时的情况。改进策略①如果网络中的某个节点处于经常移动的状态,则在该节点中加入定时广播信息机制,提高该节点信息备份的频率。②如果拜占庭单元中的节点长时间无法得到某节点的相同信息(即节点信息的权值始终为1),则从备份信息表中删除该节点的备份信息。直接将该节点视为无效节点,从拜占庭单元索引表中删除该节点及与其同单元的节点,重新发起拜占庭单元查找过程。对无线Mesh网节点的容错不仅要考虑节点因硬件原因导致的拥塞、失效等问题,还应考虑移动节点的主动攻击、网络欺骗、拥塞链路等人为入侵因素。基于拜占庭原理的可靠路由协议将主要针对这些影响网络可靠性的因素,在原有路由协议中加入拜占庭算法,从而达到提升整个网络的可靠性的目的。为了应对节点的攻击行为,我们选择备份节点的信息可以包括节点的ID、路由表、节点跳数信息、链路拥塞判断信息等。因此,我们针对不同的节点备份信息,选择相应的现有路由协议进行改进。提出拜占庭算法的目的就是将拜占庭容错原理普适化,即将该算法作为一种增强现有网络路由协议可靠性的通用方法,一种补充性的协议单元,因此,对于现有的实用性网络协议(Adhoc网络经典协议以及无线Mesh网原创性协议),我们都可以用来进行融入拜占庭算法的改进,从而提高现有路由协议的可靠性。下面以AODV协议和DSR协议为例,将拜占庭算法融入两种路由协议中,给出改进的策略和选择不同备份信息的实例效果分析。1.针对节点容错情况的改进协议BAODV(ByzantineAdhocOn-demandDistanceVectorRouting)(1)改进策略拜占庭算法首先要进行无线Mesh网骨干网节点的拜占庭单元的查找和建立。该部分算法依据的节点信息为①NoNnode地址;②邻节点地址。拜占庭单元的查找与建立的过程应该在网络拓扑结构形成的过程中同时进行。因此,先对AODV协议源节点用于发现到目的节点的路由而进行广播的路由请求包中的信息进行改进。路由请求包(RREQ)信息包括源节点地址、源节点序列号、路由请求包用序列号、目的节点地址、目的节点序列号以及跳数值。现在将中间节点转发的RREQ信息包结构进行修改即,在源节点地址后,加入当前节点收到RREQ请求的“邻节点地址”和“当前节点地址”。然后,修改AODV协议对数据包进行判断操作的次序,即在接收到RREQ时,首先判断该节点是否拥有到达目的节点的路由或者就是目的节点本身,如果是,则判断收到该包的次数,如果是第一次收到,则执行拜占庭算法的第一部分,在这个过程中,RREQ的第二、三项值被取出,第二项为其NoNnode地址,第三项为其邻节点地址,将取出的信息存入Bform;然后RREQ的第二、三项值被当前节点修改,节点将修改后的RREQ进行广播发送,待拜占庭算法的第一步完成之后,再继续执行AODV协议的原有算法流程。如果该包是目的节点或拥有到达目的节点路由的中间节点第二次收到,则直接执行AODV协议。若该节点不是目的节点,则首先执行拜占庭算法的第一部分,然后执行AODV协议。待拜占庭算法的第一步执行结束后,进行算法的第二步选择备份的数据信息的存储与容错判断。备份的信息可以按照实际的需求进行选取,当然,同时备份节点的多种信息也是可以的,但是需要对节点的数据信息备份表Dform进行相应的修改,加入相应的表项。在原AODV协议中,当节点收到与之前备份的不同信息时,会直接用收到的信息对原信息进行替换,如果当前节点收到的信息是消息发送节点受到攻击后发出的错误信息或由攻击节点直接发出的干扰信息,那么正确的信息将被错误信息替代。加入拜占庭算法后,当节点要更改相应的记录信息时,首先在自身的Dform中进行查找,然后判断原备份信息的权值,当权值大于1时,不会修改该信息,只是将收到的信息存入Dform中,权值记为1。只有新收到的信息在其Dform中的权值大于1时(执行拜占庭算法第二部分,拜占庭单元内节点彼此交互信息后),才会以该信息为准,对原信息进行修改,同时将原信息在Dform中的备份删除。(2)实例分析①数据传输的容错在正常的无线Mesh网数据传输时,如果链路中的某一节点因链路故障、自身异常或遭受攻击而出现错传或丢包,会导致目标节点收到错误的数据,甚至无法收到数据。对于丢包的情况,传统的无线Mesh网路由协议是在没有收到确认帧后定时重传数据,或选择新的链路进行传输,而对于目的节点收到错误数据的情况,只有带目标节点重新发起数据请求时,才会将所要的数据重新发送,而且不能保证重发的数据能够正确的到达目的节点。基于以上情况,我们可以在利用拜占庭算法时,将所传输的数据作为节点的备份fn息ο如图8所示,源节点A向节点B发送数据信息,链路中间节点为1、2、3、4。通常情况下,当节点2因链路原因未能收到节点1发来的数据,或节点2因自身故障、遭受攻击等原因,将错误的信息发给节点3,节点3都无法将正确的数据信息传输给节点B。利用拜占庭算法将路由协议进行改进后,传输的数据作为节点的备份信息,我们假设正确信息为T,错误信息为F,数据T在传输到节点1时,通过执行拜占庭算法的第二部分,节点1将数据T分别转发给同一拜占庭单元中的节点2、3、5,节点2、3、5在收到数据后存入Dform中,又将数据进行转发,最后,节点3的Dform中存储的数据为T(权值2)、F(权值1),因为T、F均为源节点A发送的数据,属于同名信息的不同值,比较其权值后,以数据T作为正确信息进行发送,这样,尽管节点2传输的是错误信息,节点B仍能收到正确信息T。当然,选取传输的数据作为备份信息时,为了得到正确信息,同时处于拜占庭单元和链路中的节点,除备份信息来源点外,都要等待备份周期的完成,对收到的数据做出判断后才能继续发送,因此数据的传输时间将会延长,传输效率会降低。②特殊攻击的容错特殊攻击的容错情况以Wormhole攻击为例。Wormhole,虫洞。顾名思义,这种攻击是两个节点将数据包以隧道方式传送到非一跳节点,然后再让数据包在合法的链路中继续传输,造成链路中某一部分路由节点间的跳数不超过两跳的假象。如图9,在AODV协议中,当节点间通过传递Hello消息进行路由维护时,攻击节点A、B分别将节点2和节点4的Hello消息通过隧道方式传送给对方,这样造成节点2和节点4误以为彼此是邻节点,而事实上他们根本就不是邻节点,因此造成节点存储信息(邻节点表等)的错误,当有数据通过该链路(链路节点为1、2、4)传递时,数据无法从节点2发送到节点4,因为它们不是邻节点,不存在一跳链路。如果节点4与节点5、6、7构成拜占庭单元(图10),当节点A、B进行Wormhole攻击时,通过Hello包的传递,告知节点2节点4为其邻节点,节点2首先查找自身邻节点表,发现没有节点4,节点2会继续查找其双邻节点表N-Nform,如果节点4确实为其邻节点,则在拜占庭单元建立时,通过RREQ数据包的广播,节点2的N-Nform中一定会存有信息(5,4)、(6,4)、(7,4),但节点2无法在其N-Nform中找到这些信息,因此节点2能够判断出“节点4为其邻节点”的信息是错误的,不会将该节点存入其邻节点表中,正确的链路仍为1、2、3、4。2.针对链路容错情况的改进协议BDSR(ByzantineDynamicSourceRoutingProtocol)(1)改进策略与改进AODV协议的思路类似,首先对DSR协议的源节点为查找路由而进行广播的路由请求包中的信息进行改进。DSR路由请求包(RREQ)信息包括源节点地址、目的节点地址、唯一的标志号以及中间节点列表。现在将中间节点进行转发的RREQ信息包结构进行修改在源节点地址后,加入当前节点收到RREQ请求的“邻节点地址”和“当前节点地址”。然后,修改DSR协议对收到数据包进行判断与操作的次序在接收到RREQ时,首先判断该节点是否为目的节点或缓存了到目的节点的路由,如果是,则判断收到该包的次数,如果是第一次收到,则执行拜占庭算法的第一部分,再继续执行DSR协议的原有算法流程。如果该包是目的节点或缓存有到目的节点路由的中间节点第二次收到,则直接执行DSR协议。若该节点不是目的节点或者其缓存中没有到达目的节点的路由,则首先执行拜占庭算法的第一部分,然后执行DSR协议。待拜占庭算法的第一步执行结束后,进行算法的第二步选择备份的数据信息的存储与容错判断。备份的信息同样可以按照实际的需求进行选取,如果多种信息同时备份,则对节点的数据信息备份表Dform进行相应的修改,加入相应的表项。加入拜占庭算法后,当节点要更改相应的记录信息时,首先查找自身的Dform,然后对原备份信息的权值进行判断,如果权值大于1,不修改该信息,但会将收到的信息存入Dform中,权值记为1。只有新收到的信息在其Dform中的权值大于1时,才会用该信息替代原信息,并删除原信息在Dform中的备份。(2)实例分析①拓扑结构本身的容错能力我们知道,满足拜占庭原理适用性结构约束第二条的无线Mesh网,除其连接Internet的网关节点外,网络中的骨干节点都至少包含在一个拜占庭单元中,这样的无线Mesh网骨干节点的拓扑结构本身就要比一般情况下的无线Mesh网联通性更强,可使用的链路更多,网络本身的容错能力优于普通的无线Mesh网(如图2中b所示)。②节点攻击导致的链路失效为了达到独占某条链路资源的目的,攻击节点会向链路的前驱节点发送假冒的链路失效数据包。DSR协议在通信过程中,当中间节点收到攻击节点向其发出的虚假的RERR数据包时,误认为该RERR数据包中标注的失效链路为真,将自身路由表中使用了该条中断链的全部链路删除,并向当前链路的源节点方向继续传输RERR包,致使最终源节点重新发起链路查找过程,且该查找过程将避开RERR包中标注的失效链路。我们将RERR数据包作为备份信息,如图11,当链路S—A—1—B—4—5中,节点B发现节点4异常导致后续链路中断时,首先向其所在的拜占庭单元中的其它节点1、2、3发送该RERR,这些节点在收到RERR后彼此转发该RERR,链路中节点B的前驱节点1在收到RERR后存入其Dform中,如果该RERR为真,则通过B所在的拜占庭单元节点彼此转发后,节点1的Dform中该RERR包权值必会大于1,此时,节点1才会将该RERR包进行分析,处理,然后继续向链路前驱节点A转发。当攻击节点C发出伪造的RERR时,收到该RERR包的节点1不会收到其它节点转发的相同RERR,故该包的权值始终为1,据此,节点1能够做出该RERR包为假的正确判断,将该RERR包丢弃。权利要求一种提高无线Mesh骨干网可靠性的拜占庭容错方法,包括拜占庭单元的查找和建立以及数据备份与容错,其特征是(1)拜占庭单元的查找和建立①取出收到路由包中的NoNnode地址和邻节点地址信息;②路由请求包中加入NoNnode地址信息,即节点在广播路由包时,除了发送自身节点地址信息外,同时将自身收到的邻节点地址信息封装到路由包中一起进行发送;③遍历双邻节点表N-Nform,查找收到的节点信息在表中是否存在,若不存在相同节点信息,则将收到的节点信息存入双邻节点表N-Nform中;④判断等待时间t是否小于TB,是则返回第①步;⑤遍历双邻节点表,取出不相同的三个邻节点地址;⑥查找双邻节点表,判断所取的三个节点是否互为邻节点,如果是,首先查找拜占庭单元索引表,查看该节点组是否已经记录,如果没有则将三个节点地址存入索引表,同时自定义单元号存于表中;⑦分别以三个节点为目的节点,转发自身以及除目的节点外其它两个节点的地址,同时附带拜占庭单元序号;⑧如收到附带拜占庭单元号的节点地址,查看拜占庭单元索引表中该节点组是否已经记录,如果没有,则将收到的三个节点地址,连同拜占庭单元号存入拜占庭单元索引表;⑨双邻节点表是否遍历完,如果没有,则继续选取不同的三个邻节点地址,返回第⑤步;⑩拜占庭单元的查找和建立结束;(2)数据备份与容错策略①选择需要备份的自身节点数据信息;②查找拜占庭单元索引表,将数据信息分别发送给拜占庭单元号相同的3个节点;③对收到的节点数据信息进行判断,如果消息来源与数据信息所属节点为同一节点,将该数据信息存入数据信息备份表,权值记为1;同时查找拜占庭单元索引表,找出与消息来源节点的拜占庭单元号相同的两个节点,将数据信息分别转发给这两个节点;④如果消息来源与数据信息所属节点不同,则该信息为非信息所属节点转发的节点信息,此数据信息在数据信息备份表中已经存在,则在数据信息备份表中找到该信息,将其权值加1;⑤如果接收到的转发信息与已存储的数据信息不同,则判断已存储信息的权值是否大于1,是,则丢弃当前收到的数据信息;否则,将收到的数据信息存入数据备份表,权值记为1;⑥遍历信息备份表,如果信息备份表中存在节点名称相同但数据信息不同的项,则判断这些项的权值,以权值高的数据信息作为正确的备份信息,同时删除其它的同名信息;如果这些项的权值相同,则以最新增长权值的数据信息作为正确的备份信息,删除其它的同名信息;⑦如果接收数据未完成,则返回到第③步;⑧结束。2.根据权利要求1所述的一种提高无线Mesh骨干网可靠性的拜占庭容错方法,其特征是如果网络中的某个节点处于经常移动的状态,则在该节点中加入定时广播信息机制。3.根据权利要求1所述的一种提高无线Mesh骨干网可靠性的拜占庭容错方法,其特征是如果拜占庭单元中的节点长时间无法得到某节点的相同信息即节点信息的权值始终为1,则从备份信息表中删除该节点的备份信息,直接将该节点视为无效节点,从拜占庭单元索引表中删除该节点及与其同单元的节点,重新发起拜占庭单元查找过程。全文摘要本发明提供的是一种提高无线Mesh骨干网可靠性的拜占庭容错方法。包括拜占庭单元的查找和建立以及数据备份与容错。应用提出的拜占庭算法对现有路由协议进行改进,针对不同情况的网络攻击行为,或者节点本身的异常情况,选择相应的节点数据信息进行备份。当攻击行为出现,遭受攻击的节点某些信息被窜改,或者在网络中出现冒充节点,以及节点出现人为故障时,融入拜占庭原理的路由协议就会通过判断异常节点所在拜占庭单元中其它节点的备份信息,得出正确的节点信息,从而排除干扰,增强网络的容错能力,使得无线Mesh骨干网的可靠性得到提升。文档编号H04W40/22GK101835195SQ20101012152公开日2010年9月15日申请日期2010年3月11日优先权日2010年3月11日发明者王吉喆,要彬彦,赵藴龙申请人:哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1