2013年5月7日

(转)关于TCP的一个跨层设计的 具体实现思路 (兼讨论 tcl.eval与Tcl_Eval的区别)

摘要: 老师要求为他的一篇关于跨层相关论文做仿真验证,其中有一个如下需求,描述如下:每个节点既可以是TCP 发端,也可以是TCP收端,两个身份可以同时兼职,也可以只任其一。在本需求中,发端的TCP的下层MAC IFQ队列向下放行一个数据包以后,需要及里依次通知上层的路由及TCP层下放一个包,以便提高网络的反应速率。 当路由层没有待下行的数据包时,便通知上层的TCP下放包。原先已经实现了,当TCP发端 的下层MAC发送成功一个TCP包以后,可以通过回调机制,再通知本节点的TCP发端再次下放数据(回调函数传入当前发送TCP Agent的对象指针 this)后来,发现有一种情形没有考虑到:那就是当一个节点既 阅读全文

posted @ 2013-05-07 12:21 原来... 阅读(665) 评论(0) 推荐(0) 编辑

NS2常用C++以及TCL命令(转)

摘要: 在NS2的仿真中,经常需要重复地用到一些TCL命令或者固定的C++用法。现初步汇总如下:TCL 命令:$ns at time task$ns simple-link$ns duble-linkC++:获得当前TCL解释器: TCL& tcl=TCL::instance();在C++中执行指定命令: tcl.EvalC()获得当前时间: double cur=Simulator:instance().clock();与节点处理相关的命令: 1. 获得指定包头: 方法1. hdr_*::access(packet); 方法2:宏 HDR_* (packet)#define HDR_CMN( 阅读全文

posted @ 2013-05-07 12:18 原来... 阅读(830) 评论(0) 推荐(0) 编辑

ubuntu10.04 安装问题(转)

摘要: 1. 输入法fcitx的安装发现很多人说安装fcitx后无法使用。我也碰到过这个问题。安装比较简单:$ sudo apt-get install fcitx安装后,可以利用 im-switch切换$im-switch -s fcitx实际上,系统默认安装了一个输入法,ibus,但是在安装fcitx后,无法调出fcitx。删除掉ibsu后,即可解决:$sudo apt-get remove ibus另外一个问题,即是fcitx的乱码,显示方块,可以在~/.fcitx/conf文件中,修改支持的字体:$ sudo geit ~/.fcitx/conf将其中的下面一行显示字体由*改为WenQuanY 阅读全文

posted @ 2013-05-07 12:16 原来... 阅读(200) 评论(0) 推荐(0) 编辑

tcl debug 常用命令(转)

摘要: Tkcon最新版本2.5.在NS2中调试TCL/OTCL脚本了。设断点的方法是,直接在脚本文件中相应的位置加上debug 1。一些基本的命令如下:s 单步执行(进入进程)n 单步执行(不进入进程)c 继续r 继续执行直到从过程中返回u 转至上级作用域d 转至下级作用域w 列出调用栈b 设置,清除或显示断点h 帮助运行脚本,就会在相应的断点位置停下来,可以使用puts命令来打印输出各种变量的值。info也是一个我常用的命令。info exists <variable><variable> info class //查询一个对象的类名<variable> inf 阅读全文

posted @ 2013-05-07 12:14 原来... 阅读(1564) 评论(0) 推荐(0) 编辑

NS2下实现MAC跨层设计(转)

摘要: 在传感器网络的协议设计中,考虑到节能的需要,设计协议时通常需要不同的协议层进行交互,比如Agent层调用MAC层或者PHY层的函数,计算传输或者接收数据消耗的能量,这种设计思想称为cross-layer。理论上讲,我们常规上一般要求网络协议分层设计,以达到简化网络模型的目的。这个例子从Wangbo网站上转载而来,很有启发意义。该例子是在Aodv的Agent中调用MAC层协议。具体步骤:1.修改aodv/Aodv.h文件[cpp]view plaincopy#include<mac.h>classAODV:publicTap,publicAgent{public:voidtap(co 阅读全文

posted @ 2013-05-07 12:13 原来... 阅读(701) 评论(0) 推荐(0) 编辑

在Ubuntu下给NS2配置GUI调试环境(转)

摘要: 在早期的NS2中,支持Windows下的VC调试环境,但是貌似NS2.27后就不支持了。因此使用NS2最好在Linux下,那么在NS2下有没有图形调试环境呢?环境:Eclipse 3.5.1 + CDT (参见前一篇安装)1. 启动Eclipse, 建立C++ Project;工程类型选用Makefile,编译器选择Linux C++(不太清楚它与Cross C++区别),工程路径选择ns-2.3*;2. 编译,提示错误:G++ not found。但是我明明已经安装了build-essential。没办法,重新安装一篇,发现提示要安装g++.$sudo apt-get install bui 阅读全文

posted @ 2013-05-07 12:12 原来... 阅读(384) 评论(0) 推荐(0) 编辑

NS2脚本中如何使用God(转)

摘要: 在无线网络模拟中,借助God可以获得整个网络的一些全局性信息。在有些情况下,这些信息非常必要,比如要判断两个相邻无线节点是否在传输范围之类。NS2对God的支持在C++空间中主要是God类,该类分别声明和实现在ns-2.30/mobile/god.h文件和ns-2.30/mobile/god.cc文件中(我使用的是ns-2.30版)。如果在仿真脚本里使用God,需要以下几个基本设置:在node-config命令的选项中要开启能量模型,如果不开启能量模型,God将认为所有的节点之间都不相邻,其他信息也无从获得,这显然不是我们想要的。$ns_ node-config-....../ -energ. 阅读全文

posted @ 2013-05-07 12:11 原来... 阅读(393) 评论(0) 推荐(0) 编辑

NS2仿真中nam节点颜色设置(转)

摘要: NS2仿真中节点颜色设置2009-02-16 20:01NS中提供了配置节点与流量颜色标识的方法,给一条流“上色”是经常用的方法,但是在无线仿真的时候不好用,经常出现只有fid=0的流上了颜色,经过仔细研究源代码,发现有下面一段,[cmu-trace.cc] // A simple hack for scadds demo (fernandez's visit) -- Chalermek int pkt_color = 0;之后还有一些判断,好像是在802.15.4的情况下才有颜色,如果添上下面这段,颜色是都有了,但是很可能不太正确,期望有高手能解决。 hdr_ip* iph = hd 阅读全文

posted @ 2013-05-07 12:09 原来... 阅读(776) 评论(0) 推荐(0) 编辑

NS2中的随机数产生器(转)

摘要: 1. 种子和分布 这里介绍了五种分布:Pareto(帕累托分布),Constant(常分布),Uniform(均匀分布),Exponential(指数分布),HyperExponential(超指数分布)。给出了各种分布使用时需要提供的参数。2. 测试随机数产生器 这一部分只有一个简单的例子,并没有详细介绍。下面是我从例子中试着总结出的取用一个随机数的步骤: 设置种子set rng [new RNG]$rng seed 1 设置分布set r1 [new RandomVariable/Pareto] #设置分布类型$r1 use-rng $rng #设置种子$r1 set avg_ 1... 阅读全文

posted @ 2013-05-07 12:08 原来... 阅读(338) 评论(0) 推荐(0) 编辑

NS2中DSR模拟可运行版本 转载

摘要: 为了自己的MANET研究,最近一直做网络仿真。第一步就想做一个DSR路由协议的模拟。遗憾的是,例子中的代码实在是太简单了,根本没有实现多跳功能。网上找了不少版本,均有相应的问题,有的run起来数据通信太小,根本看不到多跳,有的压根就无法看到数据通信。综合了一下网上的版本,修改了其中的错误,把NS2安装目录下的wireless-mitf.tcl做一下修正,分享一个可以看到多跳的基于DSR路由的模拟脚本。相信对于刚入门想做这个的人会有帮助。脚本名字为multi-hop.tcl,生成的动画文件为multi_hop.nam。#Copyright (c) 1997 Regents of the Univ 阅读全文

posted @ 2013-05-07 12:07 原来... 阅读(586) 评论(0) 推荐(0) 编辑

(转) ns2/nam与nam实现相关的文件

摘要: 首先是*.h/cc文件:./trace/basetrace.h, cc: baseTrace基类./trace/trace.h,cc: Trace类实现./trace/cmu-trace.h,cc: 特别是cmu-trace.cc中的nam_format函数.注: 以上三个类是继承关系,其中后继的类都包含一个Basetrace *pt_ 指针,用来实现对包的跟踪分析。这个类很重要许多场合,特另是C++代码实现中都要先检测其是否为空。如在Cmu-tracecommon/mobilenode.cc: 该文件是实现节点移动的主要类,其中有一个函数set_destination会记录下所有节点走... 阅读全文

posted @ 2013-05-07 11:27 原来... 阅读(752) 评论(0) 推荐(1) 编辑

(转) ns2之包结构解析

摘要: 最近在做ns2的“反移植”工作,深入研究了一下NS2中包的结构,其定义主要在packet.h/cc中实现的,但是有许多代码是为了与TCL接口而设计的。其定义如下:class Packet : public Event {private:unsigned char* bits_;// header bitsAppData* data_;// variable size buffer for 'data'....};不得不说,上面两个字段域是Packet最重要的动动,其中bits_存储包头结构,而data_存储用户自定义的数据。但是,NS2其实是一个大而全的仿真平台,它在仿真时其实 阅读全文

posted @ 2013-05-07 11:25 原来... 阅读(408) 评论(0) 推荐(0) 编辑

导航