ns3学习笔记(1)--查找对象可设置的属性

  已经离开学校2个月了,结束了3年的研究生生涯。这一系列笔记(我还不敢称呼为教程,因为无法形成一个完整的体系,没有一个详细的流程)本该在校时完成的,但是由于前期太懒,后期太忙,导致学习过程中我觉得有用的,可以方便新人入手的一些东西没有输出。现在已经工作了,以前的东西已经搁置一段时间了,但这些知识还是不想就这样算了,希望写出来能够帮到一些新手,因为NS3入门确实还是有难度的,仅有的一本中文资料也基本是翻译官方文档,没有太多意义。
  现在开始进入正题,每个学习ns3的新手应该都是从tutorial开始的,文档加例子,一步一步走下来,c++基础好的同学,学习能力强的,一遍下来应该能学个大概,尝试写自己基本的应用应该没问题。可是我就是基础差,学习能力又弱的,入门都入门了好久。核心提示:善用官方的API文档,我比较喜欢用在线的,方便。
  在刚开始尝试写自己的程序时,第一个问题就是,我想设置一些属性,可是这些设备有哪些属性可以让我设置呢?一般一个节点上的设备都是借助help类去配置。

1.类属性相关的

PointToPointHelper为例,打开https://www.nsnam.org/doxygen,在页面右上角搜索框输入类名称,这里面不区分大小写,找到PointToPointHelper单击进入该类的API页面
右上角搜索结果
下面Public Member Functions就是所有你能够使用的方法了,再以SetChannelAttribute和SetDeviceAttribute为例:
这里写图片描述第一个参数是string类型属性名,第二个是属性值,单击more看一下
这里写图片描述
只是对参数表示的意义介绍一下,可是我怎么知道有哪些属性可以设置呢?
根据该类的公共成员函数可以看到可以Set Channel 和 Device,那就找PointToPointChanel类,看看这个对象里面有什么成员,继续在右上角搜索PointToPointChanel,找到仅以ns3为后缀的(仅以ns3为后缀,表示进入这个类的API,从文档首开始看,如果ns3后面跟着成员函数点进去,则直接查看该类的这个成员函数的介绍)点进去,单击类名下方的more查看该类的详细描述(包含类的属性、配置路径和trace source信息)
单击more
Delay和父类中的ID即是PointToPointHelper的公有成员函数SetChannelAttribute中第一个参数的值,属性的类型和值的范围在这里也给出来了
PointToPointChannel属性
同理可以找到PointToPointNetDevice可以设置的属性及取值类型、范围,这里要注意,helper类的set方法和对应的设备的类名通常不会一样,比如PointToPointHelper 有个setDeviceAttribute,但是对应的设备类名叫PointToPointNetDevice,在搜索的时候可以只搜PointToPoint,通过滚动列表查看相关的、需要的类。
PointToPointNetDevice属性
  还有Wifi、Mesh、蜂窝设备、车联网、卫星设备都是同理,查找与其相关的netDevice、mac、Channel等类似的具体类实现,通过more查看其可以设置的属性,设置类型和取值范围。

2.模式相关的

  以无线设备控制模式为例,在third.cc中涉及到了wifi通信,其中有一行

wifi.SetRemoteStationManager ("ns3::AarfWifiManager");

wifi是wifihelper类的一个对象,SetRemoteStationManager是其一个公有成员函数,查看其说明
SetRemoteStationManager API说明
只知道一个属性后面有一堆参数可以设置,可是对于新手来说,例子里面是这样设置的,我怎么知道还有其它的什么值可以设呢?这与设备的属性不一样,其它Manager并不一定是以Aarf开头的啊。记住我们的核心,善用官方文档,如果你不知道,你就去API文档上搜。
搜索结果图
单击打开,找到类名下面紧接着的类的继承图
类的继承图
单击父类,打开链接,继续打开类的继承图
类的继承关系图
右侧一列都是与AarfWifiManager并列的,你可以用它们替换AarfWifiManager,单击每个Manager对象可以查看简单介绍和可以设置的属性,这些Manager的详细介绍我都帮你准备好了(关于NS3中各个WifiRemoteStationManager(一)关于NS3中各个WifiRemoteStationManager(二)),根据自己的场景和需要进行设置。

3.无线速率相关的

  前两个还都有迹可循,这个我是真没发现文档里有关于这个的列表,这个只能靠源码了。在examples/wireless文件夹下,以wifi-adhoc.cc中的代码为例,代码中有设置无线工作时的速率的参数:

wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
                                "DataMode", StringValue ("OfdmRate54Mbps"));

这里面DataMode属性到底有多少个值可以选呢,请参考源码链接,我认为这个里面是比较全的。另外,设置这个的时候需要注意与无线标准相匹配,例如设置无线标准为802.11b:

wifi.SetStandard (WIFI_PHY_STANDARD_80211b);

那你的无线速率只有以下四个可选:

DsssRate1Mbps ;
DsssRate2Mbps ;
DsssRate5_5Mbps ;
DsssRate11Mbps ;

  在我使用NS3仿真的过程中,仅涉及到了这些,我想其它的应该也类似。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值