CRCN认知无线电网络模拟器文档笔记

一、CRCN概述
Cognitive Radio Cognitive Network(CRCN)模拟器是基于ns2.31进行网络层级模拟的模拟器软件。支持动态频谱资源分配、功率控制算法和自适应认知组网协议(CR MAC和CR 路由协议)性能评估。这个模拟器使用NS2产生真实传输信息和拓扑模式。对于该模拟器中的每一个节点,有一个可用的可重配置multi-radio multi-channel物理层,可实现对频谱参数的定制(如传输功率和传播模型)。CRCN模拟器可以在不同协议层之间传递接口参数,用户仅需要根据NS-2协议设计要求将CRCN中已有的MAC和路由协议算法替换成自己设计的MAC和路由算法,完成对自己设计的算法性能评估。
二、CRCN功能概述
1)CR路由支持
*支持多radio多信道
*支持单radio多信道
*选择radio的接口(路由层特有)
*选择信道的接口
*异构radio和频谱环境(路由层特有)
*路由过程提供所需要的信息
2)CR MAC支持
*支持单radio多信道
*支持多radio多信道
*选择信道的接口
*动态频谱接入所需要的信息
3)CR PHY支持
*可重配置的频谱参数和radio参数
*干扰信息
*SINR/SNR物理层模型
4)CR路由/CR MAC算法
*CRCN仿真器提供了CR MAC和CR路由的示例算法,这些算法说明了如何使用该模拟器提供的功能。此外,这些算法提供了CR组网协议的仿真环境。用户可以通过用自己设计的算法替换这些组件来对自己的设计进行性能评估
5)CR算法性能评估
*该模拟器提供了对不同协议层算法进行性能评估的评估指标,如合计(summate)和干扰
6)图形用户界面
*提供一个用户友好的图形用户界面定义仿真场景。用户可以通过该图形用户界面选择不同的网络协议,不同的拓扑以及流量发生模型等等。此外,用户通过该GUI可以启动仿真并看到仿真结果图
三、CR路由设计
1)设计概述
用户通过TCL脚本配置所需要的radio数和信道数。根据用户的TCL脚本创建多radio或多信道的基本思想是实现对每个radio创建多个逻辑链路层、队列、MAC、网卡接口和信道的副本。
*radio数和信道数相同
对节点每一个网卡设备创建相同的信道数,注意这里一个网卡设备创建一个信道。
*单radio多信道
对节点仅有的一个网卡设备创建多个信道。虽然radio和信道相同情况下的路由协议通过检测使用的radios能够无须修改而应用到该单radio多信道节点中,但是ns2中已有的MAC协议需要修改以检测所使用的radios。相比而言,单radio多信道的设计能够将新设计的路由算法建立在ns2中已有的MAC协议上,这对用户来说非常方便。
*radio数和信道数不同
对节点每一个网卡设备创建相同的信道数,注意这里一个网卡设备创建两个以上信道。目前已有的多radio多信道设计存在的缺陷:(1)MAC层不知道为每一个网卡设备配置了多个信道,信道选择必须在路由层完成,这与当前大部分的MAC协议设计冲突。因此需要在MAC层支持多信道MAC。(2)MAC地址冲突(3)由于信道采用相同的方式创建,这些网卡接口和信道的频谱特性相同,无法支持异构CR网络的模拟仿真(4)每个网卡设备上的信道数相同,这无法支持基于公共控制信道的MAC和路由算法。
2)CR路由设计细节
该仿真器支持信道指派和CR路由协议,提供如下功能:
*支持创建CR多radio(单radio)多信道仿真环境。包括创建具备同构(异构)radio参数的radios,以及具备同构(异构)传播特性的频谱。这里radio参数包括对每一个radio预定义的传输功率。
*radio和信道决策接口
*信息传递接口
*信道利用信息
对于CR路由协议该仿真器支持的功能有:
*CRR(Channel decision/Radio selection/Route selection decision):信道决策包括信道数和对所选择信道使用的传输功率;radio选择即为选择哪个radio;路径决策即为选择哪个路径进行报文投递。这些决策通过该模拟器提供的支持多信道多radio(单radio)模块向下层协议进行传输。
*STICR(Spectrum Utilization Information,Traffic Information and Interference Information from the Channel and Radio selected by CR Routing):底层协议收集CR路由算法需要的信息并将这些信息传送到上层,这些信息在CRCN提供的Traffic estimation流量估计/Spectrum utilization estimation频谱使用估计/Interference estimation干扰估计这三个功能模块中处理。
3)创建多radio(单radio)多信道环境
(A)同构多radio多信道
同构radio和信道通过无线TCL仿真脚本进行配置,根据radio数和信道数之间的关系,CRCN提供三种结构以满足用户的不同需求。
(1)相同radio和信道数

在TCL脚本中配置同构radio和信道的API在下面四个部分展示,这四个部分代码需要用户添加到自己的仿真脚本中,如果使用GUI产生无线仿真脚本,这四个部分代码会自动写入脚本。这里只有路由层能够知道每一个radio和信道。
Component 1.Define the radio number in TCL script

...
set val(ni)    2    ;# 2 interface
...

Component 2. New channel objects according to the interface number provided in 1

for {set i 0 } { $i < $val(ni)} {incr i} {
set chan_($i) [new $val(chan)]    ; # new channel objects
}

Component 3. Configure the radio and channel option through the API provided

...
$ns_ node-config -adhocRouting $val(rp) \
...
-ifNum $val(ni)\    ; #configure the interface number for node
-channel $chan_(0)    ; # configure the first channel object
...

Component 4. Assign the channel objects to the simulator

for {set i 0} {$i < $val(ni) } {incr i} {
$ns_ add-channel $i $chan_($i)     ; # pass the channel objects into channel array
}

(2)单radio多信道
如何创建单radio多信道,用户可以参考CRMAC代码。来自CR路由层的信道决策仅仅需要存储到channelindex_,这是包头新添加的域。下层通过修改支持CR路由层的信道决策。
(3)不同radio和信道数
如何创建不同radio和信道数节点,用户可以参考CRMAC代码。
(B)异构多radio和多信道
和创建同构radio和信道一样,异构radio和信道也需要通过无线TCL脚本创建。这下面四部分代码需要用户添加到自己的TCL脚本中

前三项和同构多radio多信道相同,仅第四部分不同

Component 4. Assign different channel objects with different spectrum parameters to the simulator as follow

# configure the ns channel...
$ns_ add-channel-new-phy 0 $chan_(1) 0.4 Propagation/FreeSpace    

#update this information for node 1
set node_(1) [$ns_ node]    ;#apply the change on node
...
$ns_ add-channel-new-phy 0 $chan_(0) 0.4 default
...

add-channel-new-phy是新添加的API,0是radio序号,$chan_(1)是创建的信道对象,0.4是该信道的传输功率,Propagation/FreeSpace是传输模型。
4)Radio和信道决策
(A)Radio决策
在路由模块,radio决策存储于路由条目,例如AODV路由报文头域rt->rt_if。当你的路由协议准备向下传送报文,下面的代码需要添加。路由模块的修改示例请参看这里
Example for the radio or channel decision used in AODV protocol

...
                                 Handler*
Scheduler::instance().schedule(targetlist[rt->rt_if], p, 0.);
..
当节点在TCL脚本中配置时,Downtarget数组targetlist被创建,rt-rt_if时路由包指定的radio决策。对于多radio多信道的三种结构,radio决策的处理方法是相同的。

(B)信道决策

(1)radio和信道数相同,即一个radio只有一个信道
信道与radio绑定,在这种情况下信道决策等同于radio决策
(2)单radio多信道
对于单radio多信道或信道只对MAC协议是可见的,用户在创建TCL脚本程序时需要依据单radio多信道方法。来自CR路由层的信道决策仅需要存储在报文头的新域channelindex_中,底层协议已经更改支持该决策
(3)radio和信道数不同
信道决策需要CR路由算法在报文头channelindex_域中指定,底层已经修改支持该决策,并且底层的设计和单radio多信道底层设计相同
4)CR路由算法和信道指派需要的信息
(A)干扰信息
提供三类干扰信息(1)最小干扰的信道(2)特定信道上干扰的当前信息(3)特定信道上干扰的历史信息。访问这些信息,路由模块需要有当前节点对象的指针。
(1)最小干扰信道
代码
(2)特定信道上干扰的当前信息
由于干扰值在某些情况下非常小,需要进行数值放大操作
代码
(3)特定信道上干扰的历史信息
每个信道的干扰信息存储在仿真器产生文件ITfile中。ITfile文件内容格式如下:
代码
(B)噪声
通过TCL脚本程序可以设置物理层的噪声功率。通过噪声和干扰信息,用户可以根据自己的需要使用SNR和SINR接收模型
代码
(C)流量信息
对于CR路由,非常有必要感知当前的流量信息以预测邻居范围内将来的流量信息并作出最佳用户策略。仿真器提供两种获取流量信息的接口:(1)获取当前流量信息(2)获取流量历史信息
(1)获取当前流量信息
用户通过MobileNode指针获取流量信息,代码如下:
代码
(2)获取流量历史信息
流量历史信息存储于文件Trafficfile,其文件内容格式如下:
代码
(D)信道利用信息
对于某些路由算法,需要使用信道利用信息用于路由决策。对于需要获取信道利用信息的用户,需要在MAC层添加如下代码:
代码
四、CR MAC设计
1)CR MAC/PHY设计概览
MAC的上层设计和路由的设计结构相同,对于radio数和信道数相同情况,多信道对于MAC和PHY是透明的,因为这种情况下单个radio只有一个信道,而每个radio上的MAC和PHY实体只能感知到一个信道存在,因此只有单radio多信道和radio数和信道数不相同的情况下,MAC和PHY对于多信道环境是可感知的,因为这种情况下单个radio上有多个信道,每个radio上的MAC和PHY实体可以感知到该radio上的多个信道。在这两种情况下,通过TCL脚本程序创建多个信道对象,节点在仿真过程中可以切换到不同的信道对象中。
(A)单radio多信道
在设计上,节点只有单个radio和单个MAC和PHY实体。由于网络接口设备上有多个信道对象,MAC和PHY对于多信道环境是可知的。
(B)多radio多信道(radio上有多个信道)
在设计上,整合单radio多信道和多radio多信道(radio上只有一个信道)的软件架构,是一种混合设计。
该仿真器提供的CR MAC功能有(1)CR 多radio[单radio]多信道仿真环境(2)信道决策接口(3)传输功率决策接口(4)干扰信息(5)流量信息
(1)基于竞争的MAC
开始于CR MAC,接口参数:
*传输功率和信道选择(TC,Transmission power and Channel selection)
在CR MAC作出传输功率和信道选择决策后,仿真器将这些信息向下传输给多信道支持功能模块,没有多信道支持功能模块,MAC只能察觉单个信道。
*特定信道上的流量信息和干扰信息以及公共控制信道上的通信信息(TICC,Transmission information and Interference information over specific Channel, Communication information over common control channel)
物理层通过信息模块向上层传输流量信息,干扰信息和通信信息。
(2)无冲突MAC
开始于DSA,接口参数:
*传输功率和信道选择(TC,Transmission power and Channel selection)
DSA作出传输功率和信道选择决策后,仿真器通过多信道支持功能模块向下传送该信息。DSA的决策由用户自定义的指标进行验证,如果不满足用户自定义指标要求,用户自定义指标模块将向DSA模块提供这些信息。
*数据信道流量信息和干扰信息(TIC, Traffic information and Interference information over data Channel)
物理层通过信息模块向上层提供流量信息和干扰信息。
2)创建CR多信道环境
(A)单radio多信道
信道的频谱参数是相同的。
代码(参看源英文网址)
(B)多radio多信道(单个radio有多个信道)
信道的频谱参数是相同的。
代码(参看源英文网址)
3)信道/radio决策
CR MAC和DSA的信道决策存储在报文头的channelindex_域中,反映了接收端接收报文所使用的信道。
代码(参看源英文网址)
在wirlessphy层需要修改sendDown函数。多信道对象指针用于引用信道对象,报文头中的channelindex能够携带CR路由、CR MAC或者DSA的信道决策给无线物理层。
代码(参看源英文网址)
如果用户的MAC针对单radio多信道网络,上述代码的修改已经足够区分不同的信道。然而,用户还是需要根据NS2的协议设计架构设计自己的冲突避免和DSA机制。如果用户设计的MAC针对多radio多信道,除了上述的信道选择代码修改,还需要有关radio选择代码。根据每个radio的使用用途,用户需要在MAC层添加区分每个radio功能的代码。例如,节点一个radio用于处理控制报文,另外一个radio用于处理数据报文,用户需要限制每个radio的功能。此外用户需要选择合适的路由协议以适应他们设计的多radio多信道MAC。为了区分当前radio和其他radio,用户仅需要使用MAC定义的index_参数。
4)传输功率决策
如果没有在脚本中指定报文传输功率,报文传输功率将使用缺省值。但是CR MAC和DSA需要对每个信道进行功率控制达到控制对主用户和其他邻居用户的干扰程度。下面的接口能够实现对传输功率的控制。
DSA算法能够使用下面的代码实现对传输功率进行控制。为了实现对功率的控制,DSA算法需要知道发送端和接收端实体:
代码(参看源英文网址)
使用下面的接口控制最大传输功率和获取DSA的功率决策,其他物理层的修改类似。
代码(参看源英文网址)
4)CR MAC需要的信息
(A)干扰信息
每个节点在每个信道上的干扰信息:(1)最小干扰的信道(2)特定信道上干扰的当前信息(3)特定信道上干扰的历史信息。用户通过相应的API获取算法所需要的干扰信息
(1)获取最小干扰的信道
代码(参看源英文网址)
(2)特定信道上干扰的当前信息
代码(参看源英文网址)
(3)特定信道上干扰的历史信息
在TCL脚本中添加节点具备记录历史信息能力的脚本代码:
代码(参看源英文网址)

每个节点的每个信道上的干扰历史信息可以从ITfile中获取
(B)噪声
同CR路由中所介绍
(C)流量信息
对于智能MAC协议,有必要获取当前流量信息和历史流量信息预测周围将来的流量信息以使用户作出最佳策略,等同CR路由中所介绍。从Trafficfile中获取历史流量信息
(D)基于报文的主用户感知
主用户发送主用户报文表示自己的存在,其他用户接收到该主用户报文后可以知道主用户的存在。主用户报文由广播定时器控制发送,由于主用户报文能够和次用户报文冲突,因而需要在MAC中实现对该报文的发送及控制。主用户机制在Macgenhanced模块中实现,用户可以根据该例子修改自己的MAC协议,需要根据主用户的运动决定是否需要发送该报文或者通过定时器控制该报文的发送。Packet模块已修改包含主用户信息,新的广播定制器primaryusertimer也已加入MAC协议中控制主用户报文的发送.Sendprimaryuserpacket方法用于发送主用户报文。recv方法已修改用于处理主用户报文。用户可以通过参考Macgenhanced代码获取更多的信息。
五、GUI使用
参看网站上所阐述的内容,内容简单不再赘述。
六、CRCN安装
(A)模块安装
Step 1: Make sure your system meets the system requirements.
Step 2 : Download crcn.zip. (update on 7/27/2009)
Step 3 : Change your working directory to XXX/ns-allinone-2.31/ns-2.31/
Step 4: Unzip the crcn.zip. Copy the files under each subfolders in crcn into the corresponding folders in XXX/ns-allinone-2.31/ns-2.31/.
For example, copy the files under crcn/mac/ into XXX/ns-allinone-2.31/ns-2.31/mac/. Please note that it will overwrite some of your ns file in the same directory. Thus, backup the ns directory before executing this command.
Step 5: Add the following three lines in the Makefile, which is under XXX/ns-allinone-2.31/ns-2.31/.
wcett/wcett_logs.o wcett/wcett.o \
wcett/wcett_rtable.o wcett/wcett_rqueue.o \
mac/macng.o mac/maccon.o\
mac/macngenhanced.o\
Step 6: Run the following commands under XXX/ns-allinone-2.31/ns-2.31/ directory:
make clean
make depend
make
(B)GUI
Step 1: Install the java JDK version 6 or above under linux from http://www.java.com/en/download/manual.jsp .
Step 2: Install the gnuplot from http://www.gnuplot.info/ .
Step 3: Put throughput.pl and throughputcbr.pl under your ns working directory XXX/ns-allinone-2.31/ns-2.31/.
Step 4: Run CRCN.jar. (updated)
Step 5: Refer to CRCN GUI guide to run the GUI if you want to use this GUI.


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值