好吧,这是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

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

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

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

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

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

最后再总结一句呢,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的分辨、路由的设计与信道选择,是实际真是网络环境下需要考虑的问题。可以慢慢再去了解。

Tuning Radio Resource in an Overlay Cognitive Radio Network for TCP: Greed Isn’t Good的更多相关文章

  1. CRAHNs: Cognitive radio ad hoc networks

    2009 Elsevier 综述了认知无线AD Hoc网络中的各个方面的研究进展及面临的挑战.包括传输层.网络层.链路层的协议设计. 根据CCC(common control channel)的实现思 ...

  2. PhD Positions opening at University of Nevada, Reno (Wireless Networking / Cognitive Radio / Wireless Security)

    PhD Positions opening at University of Nevada, RenoDept. of Computer Science and Engineering Researc ...

  3. A Distributed Multichannel MAC Protocol for Multihop Cognitive Radio Networks

    2010 这个呢,就是time slotted的DSA网络MAC层协议. 跟上一篇单纯的Multi Channel实现类似,不过这里是CR网络,因为多了嗅探等操作. 简单的说,time slotted ...

  4. Cognitive Radio Emergency Networks – Requirements and Design

    2005 IEEE 这是一个典型的Ad hoc场景.紧急情况下的临时自组网络.虽然之前的论文中把它标记为out-of-band global coverage,但这个也是分组的,每个组有个gatewa ...

  5. OSA-MAC: A MAC Protocol for Opportunistic Spectrum Access in Cognitive Radio Networks

    This full text paper was peer reviewed at the direction of IEEE Communications Society subject matte ...

  6. html 的radio单选框如何实现互斥------radio只是input的type属性

    先看看没有互斥的情况: <html> <body> 男性:<input type="radio" id="male" /> ...

  7. Docker - 运行 containers 使用在 swarm 模式下创建的 overlay 模式的 network

    前言 在Docker engine v1.12, 使用Swarm可以方便的创建overlay模式的网络,但是它只能被swarm下面的service所使用的,相对于container,这个网络是完全隔离 ...

  8. Smart internet of things services

    A method and apparatus enable Internet of Things (IoT) services based on a SMART IoT architecture by ...

  9. JQuery radio(单选按钮)操作方法汇总

    这篇文章主要介绍了JQuery radio(单选按钮)操作方法汇总,本文讲解了获取选中值.设置选中值.根据Value值设置选中.删除Radio.遍历等内容,需要的朋友可以参考下   随着Jquery的 ...

随机推荐

  1. c++ 字符类型总结区别wchar_t,char,WCHAR(转)

    1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数.   UNICODE:wch ...

  2. IIC总线协议---以存储芯片at24c64为例

    IIC总线协议 前言:年前给老师做个红外抄表系统,,现在对当中用到的一些模块总结一下. 1.只有在总线空闲时才允许启动数据传送. 2.在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允 ...

  3. WCF服务实现客户端Cookie共享,表单验证的解决方案

    基于前几篇的文章,如果理解了通道 拦截器  服务转发的概念,相信你肯定也能理解咋的玩了. 说白了就是创建客户端的拦截器: 实现接口:IClientMessageInspector. 里面的方法就是客户 ...

  4. Cmake调用NSIS(一个可执行文件,其实就是一个编译器)编译NSIS脚本问题研究

    技术经理说,可以用Cmake当中的add_custom_command,add_custom_target命令来使用. 我初次研究了下,add_custom_command应该用官方文档中说明的第二种 ...

  5. 给logstash 模板添加触发器

  6. java开发经验分享(三)

    三. 项目开发 1. 需求: 1) 需求最终需要开发人员在产品中实现,开发不合理的设计会浪费时间,开发技术无法实现的设计带来最大的痛苦:失败.所以,开发人员要重视需求以及需求评审,提出自己能够想到的所 ...

  7. Quartz定时调度CronTrigger时间配置格式说明与实例

    1.   CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ...

  8. 应用Observer接口实践Observer模式

    原文:http://zhangjunhd.blog.51cto.com/113473/68949/ 在Java中通过Observable类和Observer接口实现了观察者模式.Observer对象是 ...

  9. 泛型 Field 和 SetField 方法 (LINQ to DataSet)

    LINQ to DataSet 为 DataRow 类提供用于访问列值的扩展方法:Field 方法和 SetField 方法.这些方法使开发人员能够更轻松地访问列值,特别是 null 值.DataSe ...

  10. c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系

    1.      引用本身是有指针实现的:引用为只读指针 例子: int d=123; int& e=d;    //引用 int * const e=d; //只读指针,e指向d,不可修改e指 ...