ns2 + GT-ITM
文章目录
- 1 ns2安装使用
- 1.1 安装前提
- 1.2 安装过程
- 2 GT-ITM安装
- 3 GT-ITM使用
- 3.1 GT-ITM拓扑生成器使用
- 3.2 GT-ITM拓扑生成器原理
- 3.2.1 平面随机图
- 3.2.2 N-level
- 3.2.3 Transit-Stub
- 3.3 GT-ITM函数命令及参数格式
- 3.3.1 文件格式
- 3.3.2 Method-dependent参数
- 3.3.2.1 平面随机图
- 3.3.2.2 ``格式
- 3.3.3 输出文件命名方式
- 3.3.4 使用样例
- 3.3.4.1 r10
- 3.3.4.2 t100
- 参考文献
1 ns2安装使用
本部分主要参考 ubuntu下安装ns2详细步骤 博客。
1.1 安装前提
建议ubuntu
版本为14.04
或者16.04
,高版本可能存在依赖包安装问题。
1.2 安装过程
- 使用下述指令对系统进行更新。
sudo apt-get update # 更新源列表
sudo apt-get upgrade # 更新已安装的包
- 安装需要的依赖包。
sudo apt-get install build-essential
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev
sudo apt-get install libxmu-dev libxmu-headers
- 在安装依赖包的同时,可以去 ns2官网 下载
ns-allinone-2.35.tar.gz
或者 ns-allinone-2.36.rc1.tar.gz,直接下拉到网页底部就能看到下载提示(紫色部分)。
- 下载完成之后,根据个人选择将压缩包移动至合适位置。使用下述指令进行解压即可。
tar -xvzf ns-allinone-2.35.tar.gz
mv ns-allinone-2.35 ns #将文件夹ns-allinone-2.35改为ns,方便以后操作
- 进入安装环节。
cd ns
sudo ./install
由于安装包存在问题,可能会导致安装失败。失败详情如下:
In file included from linkstate/ls.cc:67:0:
linkstate/ls.h: In instantiation of ‘void LsMap::eraseAll() [with Key = int; T = LsIdSeq]’:
linkstate/ls.cc:396:28: required from here
linkstate/ls.h:137:20: error: ‘erase’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
linkstate/ls.h:137:20: note: declarations in dependent base ‘std::map, std::allocator > >’ are not found by unqualified lookup
linkstate/ls.h:137:20: note: use ‘this->erase’ instead
make: *** [linkstate/ls.o] Error 1
Ns make failed!
解决方案如下:
进入ns/ns-2.35/linkstate
目录,使用gedit ls.h
对文件内容进行编辑。
将137行的
void eraseAll() { erase(baseMap::begin(), baseMap::end()); }
修改为
void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
替换后,重新执行
sudo ./install
当出现下述结果时,表明安装成功。(因为安装时没注意截图,此处借用其他博主的图演示)
从画面中,我们可以看到存在三个地址信息。因为安装位置的不同,地址信息因人而异,因此不必过于纠结地址不一样。
/home/ mingyong/ns/bin:/home/mingyong/ns/tcl8.5.10/unix:/home/mingyong/ns/tk8.5.10/unix
/home/mingyong/ns/otcl-1.14, /home/mingyong/ns/lib
/home/mingyong/ns/tcl8.5.10/library
- 进行环境变量设置,以便快速调用。
sudo gedit ~/.bashrc
在文件尾加入下述内容。这里注意将第二个地址的,
修改为:
。
export PATH="$PATH:/home/mingyong/ns/bin:/home/mingyong/ns/tcl8.5.10/unix:/home/mingyong/ns/tk8.5.10/unix"export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/mingyong/ns/otcl-1.14:/home/mingyong/ns/lib"export TCL_LIBRARY="$TCL_LIBRARY:/home/mingyong/ns/tcl8.5.10/library"
在添加完成之后,使用下述指令进行变量设置的激活。
source ~/.bashrc
- 在上述操作正确完成后,分别输入
ns
和nam
指令后,出现下述画面表明安装成功。
2 GT-ITM安装
本部分主要参考 ubuntu 16.04上ns2+nam+GT-ITM安装笔记 博客。
由于 ns2
集成了 GT-ITM
组件,我们进入 ns2
即可看到存在 GT-ITM
,所以不需要进行额外的下载安装。不过由于组件存在自带问题,因此需要我们进行部分修改。
- 进行环境变量设置,方便对快速调用。此处可参考前述第6步。
sudo gedit ~/.bashrc
在文件尾部加入下述内容。
export PATH="$PATH:/home/mingyong/ns/gt-itm/bin"
然后再进行激活即可。
source ~/.bashrc
- 对
sgb2ns.c
错误地方进行修正。
将105行的
“\t$ns duplex-link-of-interfaces $n(%d) $n(%d) $linkBW %dms DropTail\n”
修改为
“\t$ns duplex-link $n(%d) $n(%d) $linkBW %dms DropTail\n”
- 对
src
和sgb2ns
进行编译。
cd /ns/gt-itm/src
make
cd ../sgb2ns
make
3 GT-ITM使用
主要参考两份文档,分别为 GT-ITM拓扑生成器使用 和 GT-ITM拓扑生成器原理及命令格式介绍。
3.1 GT-ITM拓扑生成器使用
- 新建
ts200
文件(无需后缀,名字随意),填充内容如下。
ts 1 47
4 0 0
1 20 3 1.0
2 20 3 0.8
3 10 3 0.5
- 运行
ts200
文件,相关指令如下。
itm ts200
生成一个 ts200-0.gb
文件,生成文件个数与 ts 1 47
有关,中间的 1
表示生成文件数,可以根据需要进行选择。
- 运行
ts200-0.gb
文件,相关指令如下。
sgb2ns ts200-0.gb ts200.tcl
sgb2ns <sgfile> <nsfile>
是一个转换指令,将 sg
文件转换成 ns
文件,.tcl
文件是 ns2
格式。
- 创建
nam_show.tcl
文件,填充内容如下。
set ns [new Simulator]
set nf [open out.nam w]
$ns namtrace-all $nf
source ts200.tcl
create-topology ns node 1.5Mb
$ns run
- 运行
nam_show.tcl
文件,相关指令如下。
ns nam-show.tcl
运行后生成 out.nam
文件。
- 运行
out.nam
文件,相关指令如下。
nam out.nam
之后,我们就能得到拓扑的一个图形化效果。nam
是 ns2
下动画显示工具。
3.2 GT-ITM拓扑生成器原理
GT-ITM(Georgia Tech Internetwork Topology Models)拓扑生成器可以用来生成平面随机图和两种层次图(N-level和Transit-Stub)。
3.2.1 平面随机图
网络拓扑结构可以用各种平面随机图作为模型。最简单的一种为随机模型:节点在平面上随机分布,任意两个节点间有边概率为 a 。由于它不能很好的反应现实网络的拓扑结构,所以在此基础上提出了其他几种模型,节点仍然在平面上随机分布,只是对生成边的概率函数做了不同的修改。
- Waxman 1 模型
- Waxman 2 模型
- Doar-Leslie模型
- 指数模型
- Locality 模型
3.2.2 N-level
通过递归的形式生成网络拓扑图。首先用上述6种模型中的一种生成一个平面随机图,作为首层图。然后用平面随即图代替首层图中的每一个节点,并且依次替代下去。用来代替同层(非同层)节点的平面随机图要求相同(也可不同)。上一层与下一层随即平面图有多种连接方式。
3.2.3 Transit-Stub
将节点划入不同类型的域,再将这些域连接起来。首先生成一个平面随机图,图中的每一个节点代表一个 transit 域。然后用平面随机图代替这些 transit 域,表示这些 transit 域的骨干拓扑。对 transit 域中的每个节点,生成一个或多个随即平面图作为 stub 域,并将其和节点连接起来。最后还可以在特定的节点对之间增加一些额外边,节点对需要满足:一个在 transit 域。一个在 stub 域,或者在不同的 stub 域。
3.3 GT-ITM函数命令及参数格式
使用下述指令创建图。
itm <spec-file0> <spec-file1> ......
每个参数(<spec-file>
)都是一个生成特定图的配置文件。
3.3.1 文件格式
配置文件填充内容格式如下。
[# comment line]
<method keyword> <number of graphs> [<initial seed>]
<method-dependent parameter lines>
参数说明
<method keyword>的值有三种类型:geo(生成平面随机图)、hier(生成 N-level 层次图)、ts(生成 transit-stub 层次图)
<number of graphs>指定要生成特定图的个数
<initial seed>初始化生成随机数的seed(选填项)
注释行以`#`开头
3.3.2 Method-dependent参数
3.3.2.1 平面随机图
<geo_parms> ::= <n> <scale> <edgemethod> <alpha> [<beta> <gamma>]
参数说明:
<n>:图中节点数
<scale>:节点分布的单边空间维度(从观测结果来看,值越大,时延越大)
<edgemethod>:填充内容范围为`1..6`。代表 6 种边生成方法:1:Waxman 1;2:Waxman 2;3:纯随机模型;4:Doar-Leslie;5:指数模型;6:Locality
<alpha>:随机图参数 (0.0 <= a<= 1.0)
<beta>: 随机图参数 (0.0 <= b)
<gamma>:随机图参数 (0.0 <= e)
3.3.2.2 <method-dependent parameter lines>
格式
- 生成平面随机图
<"geo" parms> ::= <geo_parms>
- 生成
N-level
图
<"hier" parms> ::= <number of levels> <edgeconnmethod> <threshold><geo_parms>+ {one per number of levels}
参数说明
<number of levels>: 图层数<edgeconnmethod>: method of resolving edges (NOTE: probably should just use method 0)0: random1: use non-leaf node of smallest degree 2: use node of smallest degree3: use first node with degree less than <threshold> <threshold>: see above
- 生成
transit-stub
图
<"ts" parms> ::= <# stubs/xit> <#t-s edges> <#s-s edges><geo_parms> {top-level parameters}<geo_parms> {transit domain parameters}<geo_parms> {stub domain parameters}
参数说明。
<# stubs/xit>: transit域中每个节点对应的stub域平均数<#t-s edges>: 额外的transit-stub边数<#s-s edges>: 额外的stub-stub边数
3.3.3 输出文件命名方式
配置文件"arg"
生成的第i
个图存放在文件arg-i.gb
中,i
从0
开始计数,即第1
个图存放在arg-0.gb
当中。
3.3.4 使用样例
3.3.4.1 r10
# <method keyword> <number of graphs> [<initial seed>]# <n> <scale> <edgemethod> <alpha> [<beta>] [<gamma>]geo 3 10 10 3 .2
运行itm r10
之后,会生成3
个纯随机图文件,分别为r10-0.gb
、r10-1.gb
、r10-2.gb
。
3.3.4.2 t100
# <method keyword> <number of graphs> [<initial seed>]# <# stubs/xit> <#t-s edges> <#s-s edges># <n> <scale> <edgemethod> <alpha> [<beta>] [<gamma>]# number of nodes = 1x4x(1+3x8) = 100ts 10 473 0 01 20 3 1.04 20 3 0.68 10 3 0.42
运行itm t100
之后,会生成10个transit-stub
图文件,分别为t100-0.gb
…t100-9.gb
。
参考文献
- ubuntu下安装ns2详细步骤
- ubuntu 16.04上ns2+nam+GT-ITM安装笔记
- GT-ITM拓扑生成器使用
- GT-ITM拓扑生成器原理及命令格式介绍
ns2 + GT-ITM相关推荐
- NS2安装笔记 - Ubuntu9.10
转帖:http://blog.csdn.net/wuyanna1989/archive/2010/01/02/5119823.aspx 参考书推荐:<NS与网络模拟> - 徐雷鸣等 1. ...
- [转载]ns2在linux安装过程
本安装教程,实在ubuntu下实现,安装的软件的版本,可能不同, 过程中也可能存在微小差异,供参考. 本人亲测,gcc版本4.5,ns2版本2.35,成功. 教程来源:http://blog.sina ...
- 一步一步教你在CentOS6.0下安装NS2(ns-allinone-2.34.tar.gz)模拟仿真工具
在CentOS6.0(内核版本2.6.32-71.el6.i686 )发行版中,基于2.6.32的内核协议栈部分做了适当调整,因此我们在选择ns2的安装版本时就不可以选择较老的版本,因为很多东西都编译 ...
- ns2 安装与问题集锦
转自: http://hi.baidu.com/_dragonwarrior/blog/item/ba462fdc070fde43ccbf1a9e.html Ubuntu 10.04 下 安装 NS2 ...
- ubuntu 16.04上ns2+nam+GT-ITM安装笔记
因工作需要,着手搭建ns+nam+GT-ITM环境,在网上看了一些帖子,用了一天时间安装调试,现在做一个小的总结,希望给做类似工作的人有一些借鉴. 目标:在Ubuntu16.04虚拟机上安装ns2.3 ...
- centos下安装NS2
在进行网络实验时,经常需要进仿真实验,这里给大家提供一款非常强大的仿真工具:NS2.NS2是在UNIX系统上面开发的,因此UNIX系统和类UNIX系统是最佳平台(当然windows系统也能安装使用). ...
- Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!!
Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!! ...前言 Step1: 更新系统 Step2:安装ns2需要的几个包 Step3:下载安装包 ...
- (转)jLink使用ITM机制实现调试stm32单片机
----------------------------------------------------------------------------------------------- 作者:p ...
- Ubuntu 15.10安装ns2.35+nam
2019独角兽企业重金招聘Python工程师标准>>> Step1: 更新系统 sudo apt-get update #更新源列表 sudo apt-get upgrade #更 ...
最新文章
- pandas 索引_10分钟带你学会Pandas多层级索引
- 单片机c语言调用函数费时,下头函数,只要被调用就会导致单片机死机,请大家帮忙分析...
- 使用tensoflow serving来部署模型推理节点
- android wms,Android解析WindowManagerService(一)WMS的诞生
- 剑指offer(04)重建二叉树
- PHP 实现图片验证码
- 利用网站模板创建子网站
- fscapture设置中文_Fscapture是什么软件?有没有功能介绍?
- 一些关于java线程编程的事儿
- 教你如何用机翻软件开拓自己的青青草原
- android 可拖拽View的简单实现
- 【UVa11178】Morley's Theorem(向量旋转+直线交点)
- labelImg使用教程
- 微信小程序前端推送消息通知 -- 需要获取用户订阅权限
- C语言博客作业--一二维数组
- 华为高薪吸纳“天才” !任正非:进来华为,就没有“天才少年”这个名词了
- 实用办公必学技巧:Excel打印标题设置方法
- 10 行代码,集算器实现写诗机器人
- This probably means that Tcl wasn‘t installed properly报错
- 维护【软件工程总结】