1. 引言
随着互联网+、未来智慧城市、下一代移动通信网络信息化时代的到来,人们对无线频谱资源的需求与有限的无线频谱资源之间的供需矛盾日益加剧,而认知无线电 [1] (Cognitive Radio, CR)技术的提出,为缓解这一矛盾提供了新的解决方案。认知用户(Cognitive Radio Users)自适应地感知周围目标授权频段,推断主用户(Primary Users,PU,也称授权用户)是否在该目标频段工作,若主用户不工作,认知用户可以“伺机”接入这些空闲频谱。而一旦主用户需要使用该频段,认知用户必须立刻采取退避措施,退出该频段,以避免对主用户产生干扰 [2] 。认知无线电技术通过对授权频谱在空间、时间、频率等多维度上进行见缝插针的“二次利用”,可以有效解决有限的频谱资源的动态使用问题,极大提高频谱资源复用率。
认知无线电的功能及可用频谱的动态性决定了其网络模拟仿真工具的复杂性,这给研究者带来很大挑战。目前,关于认知无线电网络模拟工具的设计和实现方面,国内研究还较少,国外的研究仿真工具主要有OPNET,OMNeT++,NS2等。文献 [3] 和 [4] 中,作者利用OPNET软件工具仿真分析了所提的认知无线电媒体接入(medium access control, MAC)层协议。文献 [5] 中,作者利用OMNeT++网络仿真工具提出一个CR仿真扩展模块,该扩展模块每个节点多个接口,主要评估认知无线电MAC层协议。文献 [6] 中,作者利用NS2网络仿真工具设计了一个认知无线电认知网络(Cognitive Radio Cognitive Network, CRCN)仿真器扩展模块,该仿真器扩展模块提供了返回信息的应用程序接口APIs (application programming interfaces)、多射频多信道的节点和信道切换机制。文献 [7] 中,作者利用NS2网络仿真工具研究了一个认知无线电扩展模块CogNS,该模块中每个节点配有一个网络接口用于感知主用户的活动,并根据所提频谱判决算法推断出可用空闲信道,扩展模块中的认知节点不支持多射频。然而,上述这些仿真工具存在各种不足之处,尚不能准确模拟实际大规模无线通信网络环境以实现认知无线电的功能。
针对上述难题,美国华盛顿大学Thomas R. Henderson教授及其项目组研究了新的网络模拟工具NS3 (network simulator 3) [8] ,可以更加有效和准确的模拟现代通信网络,这为认知无线电仿真平台的设计提供了新途径。文献 [9] 首次提出将认知无线电扩展到NS-3网络模拟器中,提出了CRE-NS3认知无线电扩展模块。该CRE-NS3扩展模块适合大规模的网络模拟,可以实现认知无线电频谱感知、主用户检测、频谱切换等功能,并可在此基础上进一步扩展新的功能。本文深入研究了CRE-NS3扩展模块的相关功能,并进一步扩展了认知无线网络跨层协作的功能。
2. 认知网络NS3仿真模型
2.1. 认知网络
观察、学习和优化网络的行为是认知无线电网络的主要目的,其基本目标是使终端的性能提高。为了满足这个要求,认知无线网络不仅需要配备有对周围环境的感知能力,而且还要采取相应的措施适应环境,然后根据自身的学习能力以及记忆能力,对当前的情况进行相应的推导和定论,继而能够将之前所获取到的全部储备知识都应用于将来的决策之中。现如今,对于认知无线电技术的相关方向的研究大都集中在以下几个方面:MAC层、物理层及网络层,具体包括对功率的控制、无线频谱感知技术、无线频谱的共享、频谱移动性的管理、认知无线电的跨层设计以及认知无线电的安全技术。
2.2. NS3仿真平台介绍
NS3不是NS2的升级版,而是一个全新的基于离散事件的网络模拟仿真软件。虽然目前它所支持的网络协议还没有NS2全面,但很多网络协议库正从NS-2转移到NS-3,它将是NS2的最终替代版。它不但摈弃了当前主流网络仿真软件OPNET和NS-2的缺点,并兼具两者的优点,而且还具有其自身的优越性,主要体现在如下几个方面:
1) 一个全新的用C++编写的内核;
2) 专用于无线通信,能更准确模拟实际无线通信环境;
3) 所组成的模拟结构易扩展,且代码易移植到实际设备中工作;
4) 提供了适用于智慧城市车载网的移动性原理和高速公路移动扩展模块;
5) 网络接口和设备接口与实际网络具有高度一致性;
6) 具有高效的文档化属性系统;(NS3仿真平台的介绍)。
NS3包含大量的程序源代码和很多常用的网络协议模块,整个结构如图1所示。图中,核心模块(core)提供了常在各种协议、网络硬件等模块中使用的组件,是整个NS-3运行和开发的基础,其源代码在src/core文件夹下;网络模块(network)源代码包含了节点、网卡、地址类型、packet等抽象组件;软件层(Internet, Mobility, Devices, ……)提供一些常用网络协议、应用程序、设备、传播损耗模型,移动性模型等模块;在软件上层为用户提供了各模块的助手类(helper),用户编写仿真脚本时可以忽略模块实现的细节,利用各模块助手类中的API比较简便的调用模块提供的组件;测试类(test)包含了模块开发过程中软件测试相关的内容(图1,NS3的软件结构的介绍)。
2.3. CR-NS3扩展模块
虽然NS3有很多优势性,但目前尚缺少CR网络的支持模块,因此各协议层需要相应的修改。例如,一个设备需要多个无线网络接口发送、接收数据,与相邻的节点通信。那么,物理层则需感知和检测主用户,MAC层需决定是否进行信道切换,路由层需交换相邻节点当前的监听信道。此外,根据美国联邦通信委员会FCC的要求,所有CR用户使用一个集中的频谱数据库,因此CR扩展模块需有查询功能以便查询空闲可用信道。具体来说,NS3的CR扩展模块需有以下功能:
1) 首先必须具有频谱感知、主用户检测与决策、信道切换、频谱共享等功能;
2) 频谱数据库查询功能以获得主用户的活动状态结果;
3) 同一测试环境中能仿真认知节点和非认知节点;
4) 无缝支持多信道多射频节点的结构;
5) 提供全新的应用程序接口(APIs),通过Doxygen [11] 带来丰富的文档。
下面根据CR节点所具有的认知循环功能:频谱感知、频谱决策、频谱切换和频谱共享,设计CRE-NS3扩展模块 [9] ,如图2所示。图中的频谱管理模块(Spectrum Manager)相当于一个黑盒子,通过APIs、连接监听器与NS3的其他模块进行信息交互。此频谱管理模块含有频谱感知/数据库查询、频谱决策、频谱切换和频谱共享四个子模块,其功能分别为:
频谱感知/数据库查询(Spectrum Sensing/DB Query)模块:负责感知某一时段主用户是否占用某一给定的信道,根据所加载的静态PU数据库推测主用户的活动状态(ON/OFF)。仿真器中所加载的PU数据库是PU.txt文本文件,规定了主用户的数量、当前占用的信道、传输功率,ON/OFF时间列表。研究者可以根据主用户ON/OFF时间分布性质(如指数分布)产生和加载此PU.txt文件。

Figure 1. Software structure of NS3
图1. NS3的软件结构 [10]

Figure 2. Module of spectrum management
图2. 频谱管理模块 [9]
频谱决策(Spectrum Decision)模块:认知用户根据所给策略决定否切换信道和要切换到哪一个信道。注意这些策略是可扩展的,可同时执行几个不同策略。
频谱切换(Spectrum Mobility)模块:由物理层控制,在当前节点启动频谱切换协议。
频谱共享(Spectrum Sharing)模块:使用嵌入载波感知MAC 802_11标准来确保同一信道上传输的认知用户间可以无冲突共享可用频谱。
这些子模块间紧密关联,环环相扣。例如,若要启动频谱感知,可从任意网络层调用API:start Sensing And SwitchIf Necessary(),频谱感知模块则开始查询PU数据库,并调用频谱决策模块。如果频谱决策模块决定认知用户要切换到另一个空闲信道,就会调用频谱切换模块进行切换。认知循环一完成,监听器就会通知调用指令的同一网络层重新传输信号 [12] 。
2.4. NS3协议层的修改
本节详细讨论如何修改NS3每一层协议栈以实现CR节点功能。所修改的CR节点分层架构 [9] 如图3所示。由图可知,CR扩展模块对所有的网络层引入几个APIs和监听器,并充分利用NS3的标记功能,用一些信息标记一个数据包以决定这个数据包的内部路由,从而避免成本开销。接下来,将详细讨论每一层的具体修改。
1) 传输层:修改此层将所产生的包标记为DATA包,并由较低层控制其正确路由。此修改将影响传输层的所有协议,如TCP、UDP等。
2) 网络层:CRs网络配置为认知无线自组织网络,AODV路由协议。由AODV协议产生的包标识为CTRL(控制包),较低层将标识为CTRL包路由到相应的MAC接口。此外,地址解析协议(APR)被扩展,以将所标识的包路由到目的节点的MAC接口。
3) 链路和物理层:在这两层做了大量修改。首先,定义了新的认知接口Cognitive Interface,每个认知节点可以定义多个这种接口。如图3所示,每个认知接口有3个独立的MAC-PHY层。第一个是控制接口CTRL,用于传输公共控制信道的控制分组信息,如,AODV和ARP。第二个是发送接口TX,用来向相邻节点传输数据消息。此接口可以在不同信道间切换,将队列数据包发送给不同节点。第三个是一个可切换的接收接口RX,负责感知主用户的活动状态,当主用户活动时切换信道,通过AODV的HELLO包通知邻节点所选择的新信道。需要强调的是认知接口通过频谱管理模块进行新的调用,比较容易实现了跨层协作。其次,修改了发送接口的分布式协调功能(DCF),以使队列包存储到其发送信道的不同MAC队列,有助于TX接口在频谱切换时选择所需发送的数据包。另外,在物理层增加了新的感知状态。物理层的感知状态利用频谱管理APIs来判决PU的活动状态。感知和切换次数可由NS-3属性系统定义。注意物理层可在所定义的信道切换。这些信道有不同的频率,传播路径损耗和延迟模型,是NS-3模拟器默认的设置。
RX认知接口按照图4描述的认知环进行工作。RX接口首先进行感知(Sense),如果检测到主用户没有活动,RX就进入发送(Transmit)状态,在预设的时间周期内传输完数据,就返回到感知状态。如果检测到主用户活动,RX就进入决策(Decision)状态。若决策继续停留在主用户所占用的信道,则不需要传输数据,立即返回到感知状态;若决策切换信道,则需确定切换到哪一信道,然后转到切换(Handoff)状态。切换完成,便返回感知状态,整个循环又回到初始状态。
3. CR-NS3的实现与性能评估
NS-3的实现过程已有很多成果,本文不再详述。本节主要描述CRE-NS3扩展模块如何在NS-3仿真平台实现,并通过相应的仿真性能分析来验证。仿真环境配置为ubuntu12.04 Linux操作系统,NS-3采用最新版本NS-3.25。仿真参数设置:所有主用户ON/OFF时间服从参数为0.5、0.1的指数分布,启用ON

Figure 3. Layered architecture of an NS-3 CR node
图3. NS3中CR节点的层次结构 [9]

Figure 4. State machine of the RX interface
图4. RX接口的状态认知环
的次数为21,主用户所占用信道数为10,每个主用户射频覆盖范围110米。
认知扩展模块CRE-NS3的实现过程。在ubuntu12.04 Linux操作系统安装好最新版的NS-3.25后,用所扩展的CRE-NS3文件包替换在ns-3-allinone路径下的ns-3.25文件包,并更名为ns-3.25。然后在ns-3-allinone路径下运行build.py进行编译以完成认知网络环境配置,接下来在ns-3-allinone/ns-3.25路径下执行waf编译,若无错误出现,则CRE-NS3安装成功。
下面通过一个具体例子验证认知扩展模块CRE-NS3的正确性。首先搭建一个小型认知网络:主用户数 = 2,认知用户数 = 3,认知用户间在彼此的通信覆盖范围内,并满足AODV路由协议。执行动画演示工具NetAnim可得认知网络动态工作拓扑结构图和用户之间进行数据包传输的动画过程。图5描述了不同时刻3个认知用户0,1,2在主用户影响下的通信过程。由图5(a)可知,在某一时刻t,感知到认知用户0和1,0和2间的信道不受主用户活动影响,有空闲可用信道用来数据传输,而认知用户1和2间的信道全被主用户占用,无法传输数据;在t + Δt1时刻,感知到认知用户0和2间的信道突然全被主用户占用,数据传输中断,而认知用户1和2间出现了空闲可用信道,可以进行数据传输,如图5(b)所示;在t + Δt2时刻,感知到认知用户0和1间的信道突然全被主用户占用,数据传输中断,而认知用户0和2间出现了空闲可用信道,恢复数据传输,如图5(c)所示。由分析可知,整个工作符合认知无线网络的基本功能与思想,从而验证了CRE-NS3的合理性。
图6描述了认知网络吞吐量与认知用户数之间的性能曲线图。仿真参数设置:主用户数 = 2,主用
(a) CR用户1,2受PU影响 (b) CR用户0,2受PU影响 (c) CR用户0,1受PU影响
Figure 5. Topological graph of dynamic CR network
图5. 认知网络动态工作拓扑图
户信道数 = 10,认知用户数由2逐渐增加到50。由图可知,当认知用户数增加到20时,吞吐量突然增加到最大值约为1.2 × 10^7 bytes;当认知用户数继续增加到35时,吞吐量基本保持在最大值(认知用户数为30时除外,此时吞吐量下降,可能受用户位置随机分布影响);认知用户数为40时,吞吐量突然下降到约10^7 bytes,之后随着用户数的增加,吞吐量缓慢增加。因此,可以得出认知网络吞吐量并不是随认知用户数的增加而线性增加,而是呈凸函数形式有一个最优值,当选择最佳用户数时,可以实现最优的吞吐量。
4. 结束语
本文重点研究分析了如何在NS-3仿真平台中扩展认知网络模块CRE-NS3,并给出了具体的仿真实现过程。同时,构建了一个小型认知网络以验证所研究的认知网络仿真平台的合理性。实验结果表明,CRE-NS3仿真平台可模拟实际射频环境,实现不同通信协议、算法和关键参数的仿真和验证,而且可以进一步扩展到大规模认知无线网络的仿真应用,为下一代无线网络关键技术的研究提供了重要验证工具。