
通信仿真
文章平均质量分 90
嵌云阁主
参与从系统设计到硬件调试和软件编码每一过程的工作
展开
-
在vs2003中编译ns2:工程文件
看来还是有不少的朋友为在vs2003下的编译问题所困,所以在此将本人创建好的工程文件上传,供有需要的朋友使用。使用方法为 将此压缩文件内的所有文件解压缩到“ns-allinone-2.31”这个目录下,覆盖所有原有文件即可。本工程文件参考了ns-allinone-2.31中的Makefile,因此可能与前几篇文章中提到的方法或步骤有所差异,敬请谅解。对于Makefile中提到的一些工程,我原创 2007-07-07 01:15:00 · 2446 阅读 · 8 评论 -
NS3网络仿真(5): 数据包分析
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息在我们生成的xml文件中,是不包含生成的数据包的数据的,在我们的脚本中添加下面的语句:pointToPoint.EnablePcapAll("first")再运行first.py,可以发现在项目路径下多了两个文件:这两个文件可以直接用wireshark打开:貌似挺简单的。原创 2015-07-11 21:26:13 · 7116 阅读 · 2 评论 -
NS3网络仿真(7): Wifi节点
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息在上一节中,我们仿真了一个总线型网络,这一节尝试将上一节中的n0变成一个无线的AP,再连上几个节点。这也是NS3中的示例third.cc干的事情,只是我们用Python实现。// Default Network Topology//// Wifi 10.1.3.0//原创 2015-07-13 22:28:15 · 16640 阅读 · 3 评论 -
NS3网络仿真(6): 总线型网络
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息在NS3提供的第一个示例first.py中,模拟了一个点对点的网络,接下来的一个示例代码模拟了一个总线型网络及CSMA协议。# // Default Network Topology# //# // 10.1.1.0# // n0 -------------- n1 n2 n3原创 2015-07-13 22:10:30 · 5134 阅读 · 1 评论 -
NS3网络仿真(9): 构建以太网帧
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息在NS3使用了一个叫Packet的类来表示一个数据帧,本节尝试用它构造一个以太网帧。下面是一个典型的ARP请求帧:我们就用Packet来创建一个相同的帧。首先创建一个空的数据包: PtrPacket>pkt = CreatePacket>();接下来加上ARP头: //添加arp头 A原创 2015-08-10 20:51:46 · 2507 阅读 · 0 评论 -
NS3网络仿真(10): 解析以太网帧
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息解析以太网帧的过程是构建以太网帧的逆过程,当我们接收到一个以太网帧时,仍然以上一节中的ARP帧为例:当收到这样一个数据帧时,首先应当构造一个Packet存放数据: PtrPacket>src = CreatePacket>(buffer,len);然后取出以太网包头: //解析以太网包头原创 2015-08-10 20:56:52 · 2856 阅读 · 1 评论 -
NS3网络仿真(11): ARP
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息ARP(Address ResolutionProtocol,地址解析协议)协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。本节借助NS3学习一下此协议。1.1 ARP帧的格式一个ARP帧的格式如下:从网上抓一个ARP帧看看。这是一个从192.168.24.1原创 2015-08-15 10:34:45 · 3578 阅读 · 1 评论 -
NS3网络仿真(12): ICMPv4协议
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息ICMP的全称是 Internet ControlMessage Protocol 。其目的就是让我们能够检测网络的连通状况。ICMP主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连接状况。本节利用NS3学习一下此协议。1.1 报文格式ICMP的报文格式如下:即ICMP报文原创 2015-08-17 22:03:09 · 3316 阅读 · 0 评论 -
NS3网络仿真(13): FdNetDevice的问题
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息在前面的小节中,我们使用FdNetDevice进行了实时仿真,利用NS3向一台实际的机器发送ping包,但得到的结果显然有点偏离我们的预期结果,因为ping包的响应时间明显长于正常情况下的响应时间。这个是用NS3发送ping包的结果:使用WireShark在NS3使用的适配器上抓包,这个是在物理网卡上抓原创 2015-08-18 21:27:59 · 3299 阅读 · 0 评论 -
NS3网络仿真(8): 实时仿真
NS3支持实时仿真,且可以将NS3模拟生成的数据包通过主机上真实的网卡发送出去,本节尝试运行NS3中自带的fd-emu-ping示例,使用NS3模拟一台设备,再通过主机上的网口ping一台网络上的真实设备。原创 2015-08-06 20:38:18 · 11430 阅读 · 2 评论 -
NS3网络仿真(4): DataRate属性
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息在first.py中创建了一个点到点的信道,且配置了两个属性:pointToPoint = ns.point_to_point.PointToPointHelper()pointToPoint.SetDeviceAttribute("DataRate", ns.core.StringValue("2M原创 2015-07-11 17:14:00 · 4111 阅读 · 3 评论 -
NS3网络仿真(3): NetAnim
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息在NS3提供的示例first.py中,并没有生成NetAnim所需要的xml文件,本节我们尝试用NetAnim来展示first.py的仿真结果。依照NetAnim的说明,在Run开始前加上一行:anim = ns.netanim.AnimationInterface('first.xml')ns.co原创 2015-07-11 16:19:44 · 9046 阅读 · 1 评论 -
NS3网络仿真(1):开发环境搭建
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息1.1 安装基本模块1.1.1 安装Python出于对兼容性的考虑,在此选择python-2.7.9,win32版本,而不是最新的3.x版本。安装目录为c:\python27这个就没什么可说的了。1.1.2 安装PTVSPTVS是ms提供的一个python插件,我用的是2.2,安装完成后可以在原创 2015-07-09 19:25:23 · 20007 阅读 · 3 评论 -
从一个实例看TCLCL的运行过程
Ns2使用了TCL/CL使TCL脚本得以控制C++代码的运行,因此理解它的运行过程就显示非常重要,下面给出的这个简单例子说明了这一过程。C++部分的代码:#include #include "tclcl.h"extern "C" {#include } // 定义一个准备让TCL脚本调用的类,此类必须从TclObject继承class CTestOb原创 2007-08-02 16:16:00 · 4000 阅读 · 3 评论 -
重载TCLCL中的类
1. 问题的由来在使用BlueHoc的过程中,发现它直接修改了ns2的一些核心文件,那么是否有一种方式可以不必修改NS2核心文件而达到同样的目的呢?2. 思路Ns2使用TCL/CL来将OTCL代码与C++代码结合起来,所有的仿真过程都是通过OTCL代码调用的。那么是否可以重载OTCL中相同名称的类,在它们创建时将其指向自己的C++类呢?3. 测试代码为了测试使用同名的OTC原创 2007-08-13 18:01:00 · 1670 阅读 · 1 评论 -
将NS2改为plugin方式的尝试
1. 问题的产生NS2只使用了一个主程序,所有的扩展都要编译到主程序中去。这样就造成了一个问题,每次扩展都要把整个程序编译一道,速度慢而且麻烦。更有甚者,象BlueHoc这样的扩展甚至于还要修改NS2的核心文件,就更容易出错。2. 解决的想法将ns2改为plugin的方式,将它的核心放在一个单独的库里,将所有的扩展也做成一个个单独的库放在plugin目录下,NS2主程序启动时动态加载这原创 2007-08-14 18:14:00 · 1791 阅读 · 2 评论 -
理解NS2中Packet的包头
ns2中的数据包全部是由Packet进行表示的,当我们需要创建一个新的数据包时,就调用Packet::alloc方法,下面看看Packet::alloc都做了什么:inline Packet* Packet::alloc(){ Packet* p = free_; if (p != 0) { assert(p->fflag_ == F原创 2007-08-16 18:34:00 · 6248 阅读 · 4 评论 -
关于TCL中的编码问题
在TCL中,默认是使用UTF-8编码的,所有输入的字符串最终都会转换为这一编码。这样就造成了一个问题,通常在不同系统下使用编辑器默认保存的编码是不同的,比如ns中提供的TCL文件都是采用UTF-8进行编码的,而简体中文Windows下默认的保存编码是GB2312(cp936)。当我们在Windows平台下打开ns中的TCL文档时,首先后将它转换为GB2312,再进行修改,修改完成后原创 2007-08-17 16:24:00 · 13991 阅读 · 8 评论 -
从入门示例看ns2脚本的基本结构
在ns2的文档中给出了如下的示例,从中可以发现ns2的一些基本概念:# 第1步:创建一个仿真管理器Simulatorset ns [new Simulator] ; # 第二步,创建要记录仿真结果的文件set f [open out.tr w]$ns trace-all $fset nf [open out.nam w]$ns namtrace-all $nf原创 2007-05-24 23:30:00 · 3068 阅读 · 5 评论 -
Ns2中的测试用例
1 测试用例说明在NS2的源代码包中包含了几乎所有协议的测试代码,全部存放在ns2/tcl/test目录下,即test-suite-*.tcl这样的文件。每个文件基本就对应一个协议,而且有一个对应的输出目录存放供比较用的运行结果。在运行test-suite-*.tcl之后将会产生一个temp.rands文件,只要这个文件和相应目录下的文件比较相一致就说明NS2的安原创 2007-08-27 18:25:00 · 3115 阅读 · 0 评论 -
队列管理对QoS影响的模拟与分析
1 问题引入随着 Internet 的迅速发展,其网络规模越来越庞大,结构日趋复杂,仅仅依靠端到端的拥塞控制是不够的,网络本身也必须参与资源的控制和管理,在网络发生拥塞时,网络节点必须丢弃一些分组,这个问题的解决首先必须实施有效的队列管理机制。队列调度算法运行在网络节点中发生冲突需排队等待调度之处,它按照一定的服务规则对交换节点的不同输入业务流分别进行调度和服务,使所有的输入业务流能按原创 2007-09-12 00:25:00 · 2625 阅读 · 0 评论 -
NS3网络仿真(2):first.py
1 安装基本模块11 安装Python12 安装PTVS13 添加对python-279的支持2 在vs2013下编译NS33 编译NetAnim4 在vs2013下使用ns快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息学习一下ns中的第一个示例脚本,first.py,这个示例模拟一个Echo服务和客户端之间的通信。1原创 2015-07-09 21:50:14 · 5816 阅读 · 2 评论 -
NS3网络仿真(14): TCP连接与端口扫描
快乐虾http://blog.youkuaiyun.com/lights_joy/欢迎转载,但请保留作者信息本节学习一下使用NS3构造一个TCP包,再利用构造好的TCP包进行最简单的TCP端口扫描。1. TCP协议数据报头下图中给出了TCP协议数据报头的格式。 源端口、目的端口:16位长。标识出远端和本地的端口号。顺序号:32位长。表明了发送的数原创 2015-09-03 16:01:58 · 6091 阅读 · 0 评论