system: [SYSTEM]

user: 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文件。 图1. NS3的软件结构 [ 10 ] 图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)状态。切换完成，便返回感知状态，整个循环又回到初始状态。