无线自组织网络NS仿真软件-最新版

上传人:豆浆 文档编号:48366781 上传时间:2018-07-14 格式:PPT 页数:36 大小:1.41MB
返回 下载 相关 举报
无线自组织网络NS仿真软件-最新版_第1页
第1页 / 共36页
无线自组织网络NS仿真软件-最新版_第2页
第2页 / 共36页
无线自组织网络NS仿真软件-最新版_第3页
第3页 / 共36页
无线自组织网络NS仿真软件-最新版_第4页
第4页 / 共36页
无线自组织网络NS仿真软件-最新版_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《无线自组织网络NS仿真软件-最新版》由会员分享,可在线阅读,更多相关《无线自组织网络NS仿真软件-最新版(36页珍藏版)》请在金锄头文库上搜索。

1、 NS2仿真软件1为什么选择NS网络仿真软件?主要的: OPNET Modeler QualNet(GloMoSim) NS-2 80% 其他 NetRule Shunra 价钱昂贵; 学习的进入障碍; 仿真网络规模和流量很大时, 仿真的效率会降低; 软件所提供的模型库是有限; OPNET对路由协议的仿真比较适合,但是对链路的仿真不太好操作;NS设计的出发点是基于网络仿真 ,仿 真主要针对路由层,传输层,数据链路 层展开,但它最适用于TCP层以上的模 拟 。NS的特点是源代码公开,是自由软件 ,免费,因此普及度较高; 可扩展性强; 速度和效率优势明显;WindowsLinux2NS学习的参考资

2、料推荐一个非常不错的NS2学习的个人网站:http:/140.116.72.80/smallko/ns2/ns2.htmNS 官方网站 (很多入门教程)NS Manual (建议大家直接看英文版)3NS软件的目录结构解释型语言OTCL编译型语言C+Tclcl4NS仿真使用的一般步骤编写仿真配置脚本OTCL语言编写以脚本为参数运行NS执行仿真wireless.tcl运行命令:ns wireless.tcl仿真结束,得到包含仿真结果 的trace文件(文本文件) s 10.000000000 _0_ AGT - 0 tcp 40 0 0 0 0 - 0:0 1:0 32 0 0 0 0 0 s 1

3、6.000000000 _0_ AGT - 1 tcp 40 0 0 0 0 - 0:0 1:0 32 0 0 0 0 0 使用脚本工具(gawk, Python等)提取trace文中你 想要获得的信息,如吞吐量,延迟等利用绘图软件(matlab,gnuplot等)将提取的数 据绘制成图形曲线5NS没有人性化的图形,怎么办?NS是开放软件,总有乐于奉献的科研 工作者提供相应的易用工具仿真网络场景配置即代 码生成Trace结果文件分析NS2 Scenarios GeneratorTracegraph6来个例子书上第二章的第 二个例子7来个例子NS使用就这么简单Tracegraph并不实用,原因在

4、于:1,分析时间长;2,分析结果并不一定是你想要的坏消息8NS仿真脚本包含的元素u节点配置(路由协议,MAC,队列特性,物理层等)u节点创建 (节点的位置,节点移动特性等)u业务流发生器的参数设置 (业务流的分布特性,速率等)u业务流加载到节点上 (将业务流发生器绑定到某个节点 )u仿真开始 ($ns run)u仿真结束的处理 (将缓冲中的记录写入文件,关闭结果记录文件)就是这些,没有更多更神秘 的东西在这里9NS自身包含有哪些模块? 我怎么知道?途径:查看ns manual (so obsolete)通过书90页介绍的方法(脚本)查看源代码 (recommended)如果NS软件包中没有我需

5、要的模块怎么 办?自己编写10Tcl/Tk语言怎么学? Otcl语言怎么学?边看书边动手,试着编写一些小程序(推荐的那本书足够了)Tcl/TkOtcl资料非常有限,好在面向对象的思想和 C+非常的类似,掌握一些注意事项就 OK(存在疑问的时候自己去编程检验一 下就明白了)(网上有个简短的教程:OTcl Tutorial) 11怎样看懂trace文件?有专门的trace format表,可以查表解决看源代码,看看究竟Trace 模块的相关函数用sprintf( )打印输出了些什么内容 s 10.000000000 _0_ AGT - 0 tcp 40 0 0 0 0 - 0:0 1:0 32 0

6、 0 0 0 0 s 16.000000000 _0_ AGT - 1 tcp 40 0 0 0 0 - 0:0 1:0 32 0 0 0 0 0 12理解NS的内部结构 事件驱动的核心什么是事件?在某个特定的条件下 指示做某件特定的事情13理解NS的内部结构 有线网络仿真节点结构14理解NS的内部结构 有线网络仿真NodeLink15理解NS的内部结构 无线网络仿真节点结构agent16理解NS的内部结构 什么是代理(agent)?千万不要用上网用的那个“代理”意思来理解这里的代码!agent“主体”,“主动者”分组产生,IP以上 协议功能实体class Agent : public Con

7、nector ns_addr_t here_;/ address of this agent ns_addr_t dst_;/ destination address for pkt flowint size_;/ fixed packet size packet_t type_;/ type to place in packet header int fid_;/ for IPv6 flow id field int prio_;/ for IPv6 prio field int flags_;/ for experiments (see ip.h) int defttl_;/ defaul

8、t ttl for outgoing pktsPacket* allocpkt() const; / alloc + set up new pkt Packet* allocpkt(int) const;/ same, but w/data buffer void initpkt(Packet*) const;/ set up fields in a pkt 17理解NS的内部结构 分组的格式DataDataTCP/UDPIPMACDataTCP/UDPIPDataTCP/UDPIPMACTCPSCTP AODVDSRMPLSARP封装到一个packet对象中进行管理common18理解NS的

9、内部结构 IP Headerstruct hdr_ip /* common to IPv4,6 */ ns_addr_tsrc_; /这这个东东东东是个struct,包括了address 和port ns_addr_tdst_; intttl_; struct ns_addr_t int32_t addr_; int32_t port_; 真实协议的header和NS中协议的header是不能完全对应起来的 ! 19理解NS的内部结构 最重要的packet header struct hdr_cmn enum dir_t DOWN= -1, NONE= 0, UP= 1 ; packet_t

10、ptype_;/ packet type (see above) intsize_;/ simulated packet size intuid_;/ unique id interror_;/ error flag int errbitcnt_; / # of corrupted bits jahn int fecsize_; doublets_;/ timestamp: for q-delay measurement intiface_;/ receiving interface (label) dir_tdirection_; / direction: 0=none, 1=up, -1=

11、down /这个地方定义了方向变量 / source routing char src_rt_valid; double ts_arr_; / Required by Marker of JOBS /Monarch extn begins nsaddr_t prev_hop_; / IP addr of forwarding hop nsaddr_t next_hop_;/ next hop for this packet int addr_type_; / type of next_hop_ addr nsaddr_t last_hop_; / for tracing on multi-us

12、er channels/ called if pkt cant obtain media or isnt ackd. not called if/ droped by a queueFailureCallback xmit_failure_; void *xmit_failure_data_; 层间信息传递20理解NS的内部结构C+类的继承 关系连接器分类器21理解NS的内部结构 Connector类class Connector : public NsObject NsObject* target_; NsObject* drop_;/ drop target for this connec

13、tor void recv(Packet*, Handler* callback = 0); inline void send(Packet* p, Handler* h) target_-recv(p, h); void Connector:recv(Packet* p, Handler* h) send(p, h); 22理解NS的内部结构 模块与模块之间的接口class NsObject : public TclObject, public Handler virtual void recv(Packet*, Handler* callback = 0) = 0;void handle(

14、Event*); void NsObject:handle(Event* e) recv(Packet*)e); 任何NsObject派生的对象 都可以作为事件调度执行 的Handler23理解NS的内部结构 模块与模块之间packet传递的接口Connector 1target_drop_recv()Connector 2target_drop_recv()Connector 2target_drop_recv()BiConnectorConnector 1uptarget_downtarget_drop_recv()Connector 1uptarget_downtarget_drop_recv()Connector 1uptarget_downtarget_drop_recv()24理解NS的内部结构 无线网络节点的模块构成connecto rclassifier25理解NS的内部结构 分组的流动路径26理解NS的内部结构 运行处理流程12start345Time第一个事件:$ns at 10.0 “$cbr0 start“第二个事件:MAC层的发送处理,多个事件协调完成 27到此,NS的主体结构应该有一定了解了 28NS

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号