实验二 无线局域网MAC协议仿真实验 熊健羲 2012011438
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一组建无线网络仿真环境
1 实验要求与目的
1.学会搭建NS2 仿真环境
2.熟悉NS2 仿真过程
2 实验原理与背景知识
2.1 Cygwin 简介
Cygwin 是一个在Windows 平台上运行的Linux 模拟环境。它由cygnus solutions 公司开发,并可以免费使用的自由软件。它对于学习Unix/Linux 操作环境,或从Linux 到Windows 的应用程序移植,或者进行某些特殊的开发工作,尤其使用gnu 工具集在Windows 上进行嵌入式系统开发等,非常有用。随着嵌入式系统开发日渐流行,越来越多的开发者对Cygwin 产生了兴趣。cygnus当初首先把gcc,gdb,gas 等开发工具进行了改进,使它们能够生成并解释win32 的目标文件。然后,把这些工具移植到Windows 平台上去。一种方案是基于win32 api对这些工具的源代码进行大幅修改,这样需要大量工作。因此,采取了一种不同的方法——编写一个共享库(就是cygwin.dll),把win32 api中没有的Unix 风格的调用(如fork, spawn, signals, select, sockets 等)封装在里面。也就是说,基于win32 api编写一个Unix 系统库的模拟层。这样只要把这些工具的源代码和这个共享库连接到一起,就可以使用Unix 主机上的交叉编译器来生成可在Windows 平台上运行的工具集。以这些移植到Windows 平台上的开发工具为基础,cygnus又逐步把其他工具(几乎不需要对源代码进行修改,只需要修改配置脚本)软件移植到Windows 上来。这样,在Windows 平台上运行bash 和开发工具、用户工具,感觉好像在Linux 上工作。
2.2 NS2 简介
NS2 是指Network Simulator version 2,它是一种针对网络技术的源代码公开、免费的软件仿真平台,研究人员使用它很容易进行网络技术研发,而且发展到今天,它所包含的模块几乎涉及到网络技术的所有方面。NS2 是目前广泛使用的一种网络仿真软件。此外,NS2 也可作为一种辅助教学的工具,逐步广泛应用在网络技术教学领域。总之,目前在学术界和教育界,有许多人正在或试图使用NS2。NS2 是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。由UC Berkeley 开发而成。它本身有一个虚拟时钟,所有仿真都由离散事件驱动。目前NS2 可以用于仿真各种不同的IP 网,已经实现的一些仿真有:网络传输协议,如TCP 和UDP;业务源流量产生器,如FTP, Telnet, Web CBR 和VBR;路由队列管理机制,如Droptail , RED 和CBQ;路由算法,如Dijkstra等。NS2 也为进行局域网仿真而实现了多播及一些MAC 子层协议。
3 实验环境与模块简介
Windows XP 系统或Linux 系统,在Windows XP 系统中采用了Cygwin 作为Linux 的外壳,并在其上进行安装;在Linux 中可直接安装NS2。
4 实验步骤与结果
在centos 6环境下安装:安装成功
实验二 3.5.1 节隐藏节点仿真
1 实验要求和目的
●掌握无线网络中隐藏节点问题的本质;
●利用NS2 仿真隐藏节点问题。
2 实验原理和背景知识
隐藏节点指在接收节点的覆盖范围内而在发送节点的覆盖范围外的节点。由于听不到发送节点的发送,隐藏节点可能向相同的接收节点发送分组,导致分组在接收节点处冲突。隐藏节点可以分为隐发送节点和隐接收节点。如教材第80 页的图3.17 所示,节点 A 和 C 同时想发送数据给节点B,但 A 和C 都不在对方的传送范围内。所以当A 发送数据给B 时,C 并未检测到 A 也在发送数据,会认为目前网络中无数据传送,会将数据发送给B。这样,A 和 C 同时将数据发送给B,使得数据在 B 处产生冲突,最终导致发送的数据不可用。这种因传送距离而发生误判的问题称为隐藏节点问题。为了解决隐藏节点问题,可以使用教材3.5.1 节介绍的请求发送(Request to Send,RTS) 和清除发送(Clear to Send,CTS)的控制信息来避免冲突。当发送方发出数据前,先送出一个RTS 包,告知在传送范围内的所有节点不要有任何发送操作。如果接收方目前空闲,则响应一个CTS 包,告诉发送方可开始发送数据,此CTS 包也会告知所有在接收方信号传输范围内的其它节点不要进行任何传输操作。过程如教材第80 页的图 3.18 所示。更多有关隐藏节点的知识详见教材第 3.5.1 节。
3 实验环境和模块简介
隐藏节点的仿真分析采用的实验平台为Cygwin + ns-allinone-2.34,同时需要安装mUDP 模块进行实验扩展。mUDP模块是UDP 的延伸,除了具有UDP 的功能外,还能记录所发送的包的信息。mUdpSink可以把接收到的包的信息记录到文件中。
4 实验步骤与仿真演示
4.1 模块安装
仿真所需模块的安装过程如下:
(1)获取mUDP, mUdpSink的模块文件,具体有下列几个文件,可以在电子资源中的实验源代码的3.5.1 中获得,主要文件如下所示;
mudp.h mudpsink.h
(2)在/ns-allinone-2.34/ns-2.34/下新建measure 文件夹,把这四个文件放入其中
(3)修改/ns-allinone-2.34/ns-2.34/common/下的packet.h文件,将如下程序添加到structhdr_cmn{}中
(4)修改/ns-allinone-2.34/ns-2.34/下的Makefile文件,将如下程序添加到OBJ_CC 中如图2.2 所示的位置;measure/mudp.o measure/mudpsink.o \
(5)修改/ns-allinone-2.34/ns-2.34/tcl/lib/下的ns-default.tcl,将如下程序添加到文件的最后一行;Agent/mUDP set packetSize_ 1000
(6)在Cygwin 中转到/ns-allinone-2.34/ns-2.34 目录下执行make clean;make 命令,如图2.3 所示,编译约十几分钟完成即可。