发明内容
本发明的主要目的是提供一种控制无线信道访问竞争的方法,以克服现有采用DCF协议的无线局域网系统中由于某些移动节点可以通过修改协议参数和策略,从而影响其他节点数据发送的缺点,实现无线信道访问的公平竞争,并保证网络安全。
本发明的另一个目的是提供一种控制无线信道访问竞争的装置,以保证无线局域网系统中各移动节点间对无线信道的合理占用,实现公平竞争。
为此,本发明提供如下的技术方案:
一种控制无线信道访问竞争的方法,所述方法包括以下步骤:
A、发送节点和接收节点在本次数据传输过程中协商确定发送节点下次发送数据使用的退避定时值;
B、如果发送节点在下次发送数据时出现竞争,则等待所述退避定时值后再请求向所述接收节点发送数据。
所述步骤A包括:
A1、发送节点和接收节点在基于MAC层协议发送数据的交互过程中分别选定退避定时参数并传送给对方;
A2、发送节点和接收节点分别根据所述退避定时参数确定发送节点下次发送数据使用的退避定时值。
发送节点在[0,CWmin]范围内选择随机数b1作为其选定的退避定时参数;
接收节点在[0,CWmin]范围内选择随机数b2作为其选定的退避定时参数;
所述CWmin为竞争窗最小值。
发送节点通过请求发送RTS消息将选定的退避定时参数b1传送给接收节点;
接收节点通过清除发送CTS消息将选定的退避定时参数b2传送给发送节点。
所述步骤A1进一步包括:
发送节点记录尝试发送数据的次数i,并将该次数i与所述退避时间参数b1一起传送给接收节点。
优选地,所述方法进一步包括:
接收节点根据监测到的发送节点的本次实际退避定时值确定对该发送节点的惩罚值,并将其传送给发送节点。
所述接收节点确定对该发送节点的惩罚值的步骤具体为:
根据以下公式计算惩罚值P:
P=(Bnext-Breal)*F1+P0*F2,其中,
F1、P0、F2为任意常数;
Bnext为计算得到的发送节点本次发送数据使用的退避定时值;
Breal为接收节点监测到的发送节点本次发送数据使用的实际退避定时值。
接收节点通过确认ACK消息将所述惩罚值传送给发送节点。
所述步骤A2具体为:
设定中间值Bh=G(b1,b2,NodeID(N-S),NodeID(N-R),i)+P;i=0,1,2,....;
如果Bh<CWmax,则发送节点下次发送数据使用的退避定时值Bnext=Bhmod CWmax;
如果Bh>=CWmax,则发送节点下次发送数据使用的退避定时值Bnext=F*CWmax+(Bh mod((1-F)*CWmax));
其中,NodeID(N-S)为发送节点标识,NodeID(N-R)为接收节点标识;
G为由b1,b2,NodeID(N-S),NodeID(N-R),i参数确定的一个随机值;
i为发送节点记录尝试发送数据的次数;
F为固定系数;
P为惩罚值;
CWmax为竞争窗最大值。
一种控制无线信道访问竞争的装置,所述装置位于无线局域网内的各节点上,包括:
退避定时值确定模块,用于在本次数据传输过程中与对方节点协商确定发送节点下次发送数据使用的退避定时值;
数据发送控制模块,与所述退避定时值确定模块相连,用于在本节点出现竞争时根据所述退避定时值控制本节点数据的发送。
所述退避定时值确定模块包括:
感知模块,用于获取本节点与对方节点选定的退避定时参数;
计算模块,与所述感知模块相连,用于根据所述退避定时参数计算本节点或对方节点下次发送数据使用的退避定时值。
所述退避定时值确定模块还包括:
监测模块,用于监测对方节点的实际退避定时值;
信用管理模块,分别与所述监测模块及所述计算模块相连,用于根据监测模块监测到的对方节点的实际退避定时值确定对所述对方节点的惩罚值。
所述感知模块包括:
参数选择模块,用于在[0,CWmin]范围内选择退避定时参数;
参数获取模块,用于获取对方节点为本节点选择的退避定时参数;
所述CWmin为竞争窗最小值。
所述感知模块进一步包括:
尝试次数记录模块,用于记录本节点尝试发送数据的次数。
由以上本发明提供的技术方案可以看出,本发明在无线局域网的各节点中设置控制无线信道访问竞争的装置来控制各节点对无线信道的竞争,可以有效地避免某些恶意的节点抢占其他正常运行节点的带宽来增加其访问有限的无线媒体资源机会,从而导致对其他节点的DoS攻击的现象。由于发送节点和接收节点采用相同的算法及参数来确定发送节点所使用的退避定时值,从而使接收节点能够根据该确定值来监测发送节点的行为,并根据发送节点的行为来确定对该节点下一次通信的惩罚值。接收节点可以通过该惩罚值来影响发送节点的退避定时值,从而惩罚恶意发送节点通过修改退避定时值来增加访问无线媒体资源机率的行为。如果恶意发送节点不断地违反本协议,则恶意发送节点的所有邻居节点可以在检测到一定次数的攻击后,集体拒绝与该节点通信,从而保证了整个网络通信的安全。
具体实施方式
本发明的核心是在本次数据传输过程中由发送节点和接收节点协商确定发送节点下次发送数据使用的退避定时值,如果发送节点在下次发送数据时出现竞争,则等待退避定时值后再请求向接收节点发送数据。为了确定一个合理的退避定时值,可以由发送节点和接收节点在数据发送的交互过程中分别选定退避定时参数并传送给对方,接收节点监测发送节点的实际行为是否遵守了该确定的退避定时值,并根据监测结果制定对该发送节点的惩罚策略,使发送节点根据双方各自选定的退避定时参数及该惩罚策略确定下一次数据传送需要的退避定时值。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明作进一步的详细说明。
参照图3,图3示出了本发明方法的一个实施例的实现流程,包括以下步骤:
步骤301:发送节点和接收节点在基于MAC(媒体接入控制)层协议发送数据的交互过程中分别选定退避定时参数并传送给对方。
假设根据接收方接收环境等因素,设定竞争窗的最大值为CWmax,最小值为CWmin。当然,也可以采用802.11WLAN DCF协议中规定的竞争窗的最大值和最小值。
在确定了CWmax和CWmin后,发送节点和接收节点可以分别随机地在[0,CWmin]范围内选择一个退避定时参数,并将各自选定的退避定时参数发送给对方。
比如,发送节点在[0,CWmin]范围内选择随机数b1,并在发送RTS消息时携带该参数;接收节点在[0,CWmin]范围内选择随机数b2,并在发送CTS消息时携带该参数。当然,也可以通过其他消息将b1、b2传送给对方。
这些参数用于计算发送节点下一次请求发送数据所需的退避定时值。为了进一步优化退避定时值的计算,以便得到更合理的退避时间,发送节点还可以记录其尝试发送数据的次数i,并将其与选择的随机数b1一起传送给接收节点,以便在计算发送节点下一次请求发送数据所需的退避定时值时,也将该因素考虑在内。
步骤302:接收节点监测发送节点的实际发送行为,并根据监测到的发送节点本次的实际退避定时值确定对该发送节点的惩罚值。
在发送节点第一次发送数据时,如果产生竞争,可以使用默认的退避定时值,当退避定时器时间到达后,发送节点向接收节点发送数据。接收节点收到该数据后,计算对该发送节点的惩罚值。
可以根据以下公式计算惩罚值P:
P=(Bnext-Breal)*F1+P0*F2,其中,
F1、P0、F2为任意常数;
Bnext为发送节点上一次的退避定时值;
Breal为接收节点监测到的发送节点上一次的实际退避定时值。
其中,P0为基于其他信息确定的惩罚参数,比如,可以根据b1和b2的随机性来确定;
F1和F2为加权系数。
对于第一次数据发送,可以认为Bnext与Breal相等。如果考虑发送节点的退避行为时,可以使P0=0,F1=1,F2=0。
由上式可以看出,如果Bnext>Breal,则发送节点会在下一次退避等待时被惩罚。
本发明并不只局限于上述公式来计算惩罚值P,也可以记录发送节点每次的发送行为,综合考虑这些信息来计算惩罚值P。
步骤303:接收节点将确定的惩罚值发送给发送节点。
可以通过专用消息来发送,为了节点间的信息交互过程,可以由ACK消息携带该惩罚值,传送给发送节点。
步骤304:发送节点和接收节点分别根据退避定时参数及惩罚值确定发送节点下次发送数据使用的退避定时值。
可以按照以下方式来确定发送节点下次发送数据使用的退避定时值:
设定Bh=G(b1,b2,NodeID(N-S),NodeID(N-R),i)+P;i=0,1,2,....;
如果Bh<CWmax,则发送节点的退避定时值Bnext=Bh mod CWmax;
如果Bh>=CWmax,则发送节点的退避定时值Bnext=F*CWmax+(Bh mod((1-F)*CWmax));
其中,NodeID(N-S)为发送节点标识,NodeID(N-R)为接收节点标识;F为一固定系数;G为输入参数b1,b2,NodeID(N-S),NodeID(N-R),i的一个函数,其值在[0,CWi]范围内的一个随机值,CWi是第i次竞争后按照指数算法增加的竞争窗,CWi=2i*(CWmin+1)。
比如,可以利用应用最广泛的Hash算法SHA1或MD5来生成中间值Bh。MD5(Message Digest第5版本)Hash文件的数字文摘通过Hash函数计算得到。不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。而SHA1可以对长度小于264的输入,产生长度为160bit的散列值。
由上式可见,如果一个发送节点被检测到有恶意行为,接收节点将会确定对该节点的惩罚值,通过该惩罚值,可以将发送节点下一次的退避定时值(即Bnext)调整到CWmax,也就是说,计算出的下一次的退避定时值将处于[0,CWmax]范围内。如果根据函数G得到的中间值Bh超过了竞争窗的最大值,此时,将强迫Bnext回到位于[0,CWmax]范围内的一个最高上限值。
比如,设定F=1/2,
如果Bh<CWmax,则Bnext=Bh mod CWmax,i=0,1,2,...,
如果Bh>=CWmax,则Bnext=(Bh mod(CWmax/2))+CWmax/2,i=0,1,2,...,
这样,既保证了发送节点被惩罚,又保证了Bnext在[0,CWmax]范围内,并且大于CWmax/2。
在实际应用中,为了减轻节点设备的处理压力,也可以省略上述步骤302和步骤303,也就是说不考虑对发送节点的惩罚,只根据输入参数b1,b2,NodeID(N-S),NodeID(N-R),i来获得Bh,从而确定下一次的退避定时值Bnext。
参照图4,图4示出了本发明装置一个实施例的原理框图:
在该实施例中,本发明装置包括:退避定时值确定模块S0和数据发送控制模块S3。该装置位于无线局域网内的各节点上。其中,退避定时值确定模块S0用于在本次数据传输过程中与对方节点协商确定发送节点下次发送数据使用的退避定时值;与其相连的数据发送控制模块S3用于在本节点出现竞争时根据所述退避定时值控制本节点数据的发送。
为了得到合理的退避定时值,本发明装置中的退避定时值确定模块S0包括:相互连接的感知模块S1和计算模块S2。其中,感知模块S1用于获取本节点与对方节点选定的退避定时参数;计算模块S2用于根据所述退避定时参数计算本节点或对方节点下次发送数据使用的退避定时值。
两个节点在建立会话过程中可以分别选定退避定时参数并传送给对方,为此,由感知模块S1中的参数选择模块S11在[0,CWmin](CWmin为竞争窗最小值)范围内选择退避定时参数。如果该装置所在的节点是作为发送节点,则参数选择模块S11选择本节点的退避定时参数;如果该装置所在的节点是作为接收节点,则参数选择模块S11为对方节点选择退避定时参数。
感知模块S1中的参数获取模块S12用于获取对方节点为本节点选择的退避定时参数。
退避定时参数的发送可以分别通过RTS和CTS消息或其他消息来完成。
这样,计算模块S2就可根据感知模块S1将自己选定的、以及获取的对方节点选定的退避定时参数来确定其所在节点或对方节点需要使用的退避定时值。
比如,计算模块S2可以按以下方式来得到所需的退避定时值:
设定中间值Bh=G(b1,b2,NodeID(N-S),NodeID(N-R));i=0,1,2,....;
如果Bh<CWmax,则发送节点的退避定时值Bnext=Bh mod CWmax;
如果Bh>=CWmax,则发送节点的退避定时值Bnext=F*CWmax+(Bh mod((1-F)*CWmax));
其中,NodeID(N-S)为发送节点标识,NodeID(N-R)为接收节点标识;
G为由b1,b2,NodeID(N-S),NodeID(N-R)参数确定的一个随机值。
对于数据收、发节点来说,都需要计算该值,而且依据相同的算法,因此,接收节点就可以根据该值来监测发送节点的行为。如果发现发送节点下次未等到计算出退避定时值的时刻到达即发送了数据,可以采取相应的措施,比如增加惩罚值,或在监测到发送节点一定次数的违规行为后,丢弃该节点发送的数据等。
为了使收、发节点确定的退避定时值更合理,还可以在感知模块S1中设置一个尝试次数记录模块S13,用于记录本节点尝试发送数据的次数,并将该尝试次数连同选定的退避定时参数值一起发送给对方节点。这样,参数获取模块S12在得到对方节点为本节点选择的退避定时参数的同时,也会得到该尝试次数。计算模块S2在确定其所在节点或对方节点需要使用的退避定时值时,可以将该因素考虑进去,从而得到更合理的退避定时值。
参照图5,图5示出了本发明装置的另一个实施例的原理框图:
与图4所示实施例相比,在该实施例中,退避定时值确定模块S0还包括:监测模块S4和信用管理模块S5。其中,监测模块S4用于监测对方节点的实际退避定时值;信用管理模块S5分别与监测模块S4和计算模块S2相连,用于根据监测模块监测到的对方节点的实际退避定时值确定对所述对方节点的惩罚值。
在发送节点第一次发送数据时,如果产生竞争,可以使用默认的退避定时值,当退避定时器时间到达后,发送节点向接收节点发送数据。接收节点收到该数据后,计算对该发送节点的惩罚值。
监测模块S4监测对方节点的行为,比如,接收节点在收到发送节点发送的数据后,向发送节点回应ACK消息。在ACK消息发出后,由监测模块S4开始计时,如果在计算模块得到的上一次的退避定时值之前,接收节点又收到了发送节点的RTS消息,则说明发送节点没有遵守双方约定的退避定时值。此时,监测模块S4将监测结果通知信用管理模块S5。信用管理模块S5可以根据以下公式计算对发送节点的惩罚值P:
P=(Bnext-Breal)*F1+P0*F2,其中,
F1、P0、F2为任意常数;
Bnext为发送节点上一次的退避定时值;
Breal为接收节点监测到的发送节点上一次的实际退避定时值。
其中,P0为基于其他信息确定的惩罚参数,比如,可以根据b1和b2的随机性来确定;
F1和F2为加权系数。
对于第一次数据发送,可以认为Bnext与Breal相等。如果考虑发送节点的退避行为时,可以使P0=0,F1=1,F2=0。
接收节点可以通过确认ACK消息将该惩罚值传送给发送节点,同时需要将该惩罚值通知本节点上的计算模块S2,计算模块S2在计算发送节点下一次发送的退避定时值时考虑该惩罚值。
比如,设定中间值Bh=G(b1,b2,NodeID(N-S),NodeID(N-R),i)+P;i=0,1,2,....;
如果Bh<CWmax,则发送节点的退避定时值Bnext=Bh mod CWmax;
如果Bh>=CWmax,则发送节点的退避定时值Bnext=F*CWmax+(Bh mod((1-F)*CWmax));
其中,NodeID(N-S)为发送节点标识,NodeID(N-R)为接收节点标识;
G为由b1,b2,NodeID(N-S),NodeID(N-R),i参数确定的一个随机值;
i为发送节点记录尝试发送数据的次数;
F为固定系数;
P为惩罚值。
本发明装置可应用于各用使用DCF协议的WLAN中,比如,将其集成到Ad Hoc网络设备的网卡上,不仅可以使通信双方能够起到监测作用,而且还可以使第三方节点对通信双方起到监测作用,为Ad Hoc网络提供更安全、公平的网络访问。
如图6所示,在Ad Hoc网络中,节点A和节点B相互通信,并能彼此监测对方的发送行为。这两个节点的无线信号传播区域均为半径为R的圆。节点C和节点D位于节点A和节点B的信号区域内,它们能够接收到节点A和节点B之间传送的所有消息。因此也可以监测节点A和节点B的发送行为。
节点E能够接收节点A的消息,但不能接收节点B消息。但节点E与节点A通信时可以通过监测节点A的退避定时值的随机性而决定对其的处罚值。
这样,节点A和节点B不仅可以相互监测对方的发送行为,而且其邻居节点C、节点D和节点E也能起到对节点A和节点B的监测作用。如果邻居节点检测到某节点的攻击达到一定次数,可以拒绝与该节点通信,从而保证整个网络通信的安全。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。