好吧,这是09年七月发布在IEEE Communications Magazine的一篇文章。

核心二个词:overlay cognitive radio network,tcp

讲的是,在认知无线网中TCP协议性能受影响的问题:为什么受影响,受到怎么样的影响,到什么程度。然后用NS2模拟,给出了一些结论。

总归的一些结论是:tcp在dsa网路中性能受影响的因素比传统网络多了一个,叫service interupption。其实就是由于Primer User的介入而导致的Second User的通信中断,最后导致tcp整体的吞吐量的下降。

正如文中提到的,tcp本来是设计用于有线网络的,可以控制网络拥塞,来提供可靠地、非实时地数据传输服务;后来用到无线网中,做了些优化调整;现在,到了Dsa网络中,也需要做些优化。至于怎么优化,肯定就要先了解是哪方面受到了哪些影响。然后可以对症下药。

好了,文章都讲了些什么呢?

首先是CR网络的发展演变史,就是本来无线频段稀少,后来FCC的报告提出注册的无线频谱段利用率低,可以利用。然后就扯出了软件自定义无线电(SDR)、米勒教授的认知无线电(CR)。因为涉及到对已注册频段的”侵入“/使用,这个频段是属于已注册人的财产,进入就有了相关法律法规的讨论,美国的个人财产权利什么的。

其次是CR的体系架构、技术之类的。就介入方式而言(access technique),可以是overlay的或是underlay的。overlay是寻找频谱空洞、伺机利用。underlay则是可以利用所有的频谱,但是是以低于Primer User的噪声阈值为代价的。文中后面的研究都是基于overlay的。至于架构,是可以中心化或者分布式的,分布式就类似于Ad hoc网络了。文中后面的研究也都是基于分布式的。

再然后就是说明了CR网与传统网路中TCP面临的不同问题,阐述研究的必要性。对TCP性能有影响的关键有几点:1、网络拥塞、缓冲区溢出,且被认为是相关的。这在传统网络中是最常见的。2、信道错误。主要在无线网中,跟信道特点有关,比如终端移动的快慢、信道本身的性能等等。也可以被认为是相关的或独立的。3、是多用户间的碰撞冲突,跟MAC机制有关(CSMA/CA,802.11x系列采用的介质访问策略)。这些在有线及一般的无线网中都是常见的,且都被充分研究过了。然后,对于CR网络,多了一个:PU的介入导致的SU通信的中断。这是对CR网络中TCP性能影响的新的重要因素,也是后面研究的原因。

最后就是NS2的模拟了,主要的几个变量是PU的个数、SU的个数、信道的数量、PU的load factor (A)、TCP的整体吞吐量

首先是实验的model

Tuning Radio Resource in an Overlay Cognitive Radio Network for TCP: Greed Isn’t Good-LMLPHP

控制变量、得出了几组结果

1.在没有PU的情况下,SU可用的信道越多(Ls),TCP整体的吞吐量越大,也符合Ad hoc网络的情形。

Tuning Radio Resource in an Overlay Cognitive Radio Network for TCP: Greed Isn’t Good-LMLPHP

2.在存在PU的情形下,并不是SU可用的信道越多,TCP整体的吞吐量越大,这就是对应了论文题目中的(Greed Isn't Good)

Tuning Radio Resource in an Overlay Cognitive Radio Network for TCP: Greed Isn’t Good-LMLPHP

3.load factor(A)可以理解为PU出来捣乱的概率大小。PU越大,SU受到的service interupption越多,其TCP性能就会降低

Tuning Radio Resource in an Overlay Cognitive Radio Network for TCP: Greed Isn’t Good-LMLPHP

4.在二中我们看到会有一个最优的Ls存在,这里就是探究load factor(A)对Ls的影响。

Tuning Radio Resource in an Overlay Cognitive Radio Network for TCP: Greed Isn’t Good-LMLPHP

最后再总结一句呢,DSA网络中的TCP性能受到PU介入引起的service interruption的影响,导致性能下降;同时存在一个SU要使用的最优的信道个数。正如题目所言,Greed Isn't Good。

-------------------------------------------------------------------------------------------------------

update.2013.11.05

论文中对DSA的模拟是这样的。总共有X个信道,其中SU至多占有Y个,(X>Y),即,始终有X-Y个信道是对PU可用的。那么当PU选择信道时,如果预留信道有空闲,那么就选取一个预留信道;如果预留信道全部已被其他PU占有,那么其选取一个空闲的Y个信道中的一个;如果Y个信道全部被占用,那么其就强迫一个SU停止传输数据,并使用其信道(这就涉及到,每个信道都要标记当前使用者是PU,还是SU,是可以被识别)。

但是这种模型,应该是很不符合实际场景的。DSA的核心就是:在不打扰PU的情形下,SU伺机占有空闲信道;一旦SU检测到PU的信号,便空出信道,转到其他可用信道。所以,这其中:

1.PU是不需要做任何事情的,PU只需要保持当前的策略使用即可。不需要在协议、体系上做任何修改。

2.不存在预留信道的问题。不管PU之间是否有竞争,SU的存在对其都应该是不可见的。信道对其都应该是可用的。

问题的关键在SU:

1.如何判断信道空闲。

2.如何判断PU的出现。

3.如何区分PU和其他SU?

4.SU之间的共享。

还不清楚的是:PU多个信道的选择,PU之间的竞争。

猜测应该是:PU在任一个信道上传输,是采用CSMA/CA协议,因而多个PU之间的竞争是介质共享的。至于信道的选择,就只取决于自身的策略。

对于SU之间的共享,论文中其实是每个SU单独占有一个信道。这样,就不用考虑共享的问题了。如果忽略共享,要模拟一个典型的DSA网络,应该具有以下特点:

1.多个(授权频段)信道,(单个授权频段应该会有多个信道。另外,非授权频段始终对SU可用,可以用来传递控制信息)

2.每个信道,PU随机接入的模拟。

3.SU周期性嗅探和发送数据。嗅探时,维护空闲信道列表(既没有被PU、也没有被SU占用的信道)。发送时,从维护的信道列表中选取一个信道发送数据。发送数据时,如果检测到PU(HOW?单从模拟实现上,信道状态设为ON OFF两个,然后在发送的时候,检测信道状态,如果ON,则重新进入嗅探周期;否则发送。),迅速停止发送,马上进入嗅探周期。没有检测到PU,发送周期结束,同样进入嗅探周期,循环。

那我的一个问题是:发送的时候,如何检测到PU的到来,又怎么区分SU、PU?

但其实,实际的DSA分为基站式的,Ad-hoc网络的。

在Ad-hoc网络中,实际的问题还包括:

1.两个节点发送数据时,上一个节点要和下一个节点协商使用哪个信道,要有一个协商过程,然后才能开始传输。如何设计这个过程,以及信息的涉及、包的设计。

2.多个节点路由时,中间节点既要和上一个节点协商使用哪个信道,又要和下一个节点协商使用哪个信道。一个节点可以同时使用不同信道,还是其他方式,这是如何实现的?

3.路由呢,路由协议使用哪个信道通信呢(非授权频段的信道?)?建立完路由后,在实际数据传输的时候相邻节点之间再协商具体使用哪个信道?

如果使用非授权频段信道建立路由,但在数据传输的时候,根本没有可用的授权频段用来传输数据,那该怎么办?

基站式呢,(待补充。)

另外,上面考虑的是单个信道只有一个SU的情况,如果是共享呢,会不会带来更大的复杂性(比如信道占用者身份的区分,SU?PU?以便做出是否空出信道的决策),还是说不会有很大策略上的变化。

最后,如果我只是单纯的模拟信道切换对传输层带来的变化。我是不是可以这样简化模拟的模型:

1.一对节点相互通信(忽略掉路由设计),多个授权频段信道。每个信道施加数学模型,模拟ON、OFF两种状态。发送节点维持嗅探、发送周期(引申出的另外的问题:接受节点需要嗅探么?Ad-hoc中每个节点都要嗅探?因为既作为发送节点,又作为接受节点,根本因为每个节点都是是路由节点、中间节点。基站式呢?)。全局维持一个变量,记录发送节点选择的信道。再维持一个列表,记录每个信道的ON、OFF状态。发送节点在每次发送时,检测列表中选定信道的占用状态,如果空,则发送;否则,则进入嗅探期,更新可用信道列表(或者直接查询全局信道列表),选择一个空闲信道,更新全局变量。然后在嗅探期结束后,在新信道发送数据。接受节点在每次接受时,查询全局变量,,在全局变量指定的信道接受数据。

这样,模拟了频谱的动态切换,可以用来测量频谱切换对传输层性能的影响。(这里面,频谱切换本身的时间是忽略不计了的,只有嗅探周期带来的开销。此时链路层简单的drop包(维持一个时钟,时钟范围内,drop包),因而上层TCP会自然的会做出反馈)

2.如果是多对节点通信呢。在1的基础上拓展的话,再实现一个全局列表,记录当前信道是否被占用(第二个信道列表,第一个只记录PU产生的占用信息),如果占有,被哪个节点占有的信息(0为没有占有,大于0的数代表占用的节点)。在脚本构建拓扑的时候,对接收节点,指定发送节点是谁,并记录到节点的一个变量。

这样,在发送时,由发送节点选择信道,(考虑全局信道列表的占用,如果空,再考虑第二个全局信道列表的占用,如果也空,即没被另外的SU占用,则可以选择。)

在接收时,根据记录的发送节点,查询第二全局信道列表,查到使用的信道,然后在此信道接收。

3.如果使用包策略,让节点通信,交流信道选择信息呢,如何实现?设想如下:

嗅探期,发送者嗅探信道,选择空闲信道,然后向下一跳节点发送packet,包含有以选择的包信息;接收方在接收到包后,根据自身的无线环境进行决策,决定是否接受发送方的发包要求。如果接受,则发送反馈信息给发送方,并做好接包准备(在一段时期内不进行其他传输?实际情况是怎么样的呢?);如果不接受,同样发送反馈信息给发送方。

发送方在接收到反馈信息后,如果接收方接受,则等待嗅探期结束后,开始发包;如果发送方不接受,则重新选择,再发送请求;如果没有空闲信道,则等待。(此时链路逻辑断开)

(或者在发送方向接收方发送所选择的信道时,可以发送一个可选信道的列表而不是一个信道,这样接收方选择的范围更大,接受的可能性更大,建立连接的可能性更大。)

问题:实际当中,多个SU是如何避免碰撞的。相互之间是如何合作的。

当然,模拟的时候,可以不考虑那么多,只采用包策略来传输信道选择信息。就能满足我们的需求了(信道切换对传输层性能的影响)。

最后,总而言之,我们可以用最后提到的模拟方案,来模拟我们的实验。至于关于DSA更多外延的问题,比如上面红字提到的,对PU的检测、PU/SU的分辨、路由的设计与信道选择,是实际真是网络环境下需要考虑的问题。可以慢慢再去了解。

05-11 15:13