文章目录

  • 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 安装过程

  1. 使用下述指令对系统进行更新。
sudo apt-get update     # 更新源列表
sudo apt-get upgrade    # 更新已安装的包
  1. 安装需要的依赖包。
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
  1. 在安装依赖包的同时,可以去 ns2官网 下载 ns-allinone-2.35.tar.gz 或者 ns-allinone-2.36.rc1.tar.gz,直接下拉到网页底部就能看到下载提示(紫色部分)。
  2. 下载完成之后,根据个人选择将压缩包移动至合适位置。使用下述指令进行解压即可。
tar -xvzf  ns-allinone-2.35.tar.gz
mv ns-allinone-2.35 ns    #将文件夹ns-allinone-2.35改为ns,方便以后操作
  1. 进入安装环节。
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
  1. 进行环境变量设置,以便快速调用。
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
  1. 在上述操作正确完成后,分别输入nsnam 指令后,出现下述画面表明安装成功。

2 GT-ITM安装

本部分主要参考 ubuntu 16.04上ns2+nam+GT-ITM安装笔记 博客。

由于 ns2 集成了 GT-ITM 组件,我们进入 ns2 即可看到存在 GT-ITM ,所以不需要进行额外的下载安装。不过由于组件存在自带问题,因此需要我们进行部分修改。

  1. 进行环境变量设置,方便对快速调用。此处可参考前述第6步。
sudo gedit ~/.bashrc

在文件尾部加入下述内容。

export  PATH="$PATH:/home/mingyong/ns/gt-itm/bin"

然后再进行激活即可。

source ~/.bashrc
  1. 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”
  1. srcsgb2ns进行编译。
cd /ns/gt-itm/src
make
cd ../sgb2ns
make

3 GT-ITM使用

主要参考两份文档,分别为 GT-ITM拓扑生成器使用 和 GT-ITM拓扑生成器原理及命令格式介绍。

3.1 GT-ITM拓扑生成器使用

  1. 新建 ts200 文件(无需后缀,名字随意),填充内容如下。
ts 1 47
4 0 0
1 20 3 1.0
2 20 3 0.8
3 10 3 0.5
  1. 运行 ts200 文件,相关指令如下。
itm ts200

生成一个 ts200-0.gb 文件,生成文件个数与 ts 1 47 有关,中间的 1 表示生成文件数,可以根据需要进行选择。

  1. 运行 ts200-0.gb 文件,相关指令如下。
sgb2ns ts200-0.gb ts200.tcl

sgb2ns <sgfile> <nsfile> 是一个转换指令,将 sg 文件转换成 ns 文件,.tcl 文件是 ns2 格式。

  1. 创建 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
  1. 运行 nam_show.tcl 文件,相关指令如下。
ns nam-show.tcl

运行后生成 out.nam 文件。

  1. 运行 out.nam 文件,相关指令如下。
nam out.nam

之后,我们就能得到拓扑的一个图形化效果。namns2 下动画显示工具。

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中,i0开始计数,即第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.gbr10-1.gbr10-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.gbt100-9.gb

参考文献

  • ubuntu下安装ns2详细步骤
  • ubuntu 16.04上ns2+nam+GT-ITM安装笔记
  • GT-ITM拓扑生成器使用
  • GT-ITM拓扑生成器原理及命令格式介绍

ns2 + GT-ITM相关推荐

  1. NS2安装笔记 - Ubuntu9.10

    转帖:http://blog.csdn.net/wuyanna1989/archive/2010/01/02/5119823.aspx 参考书推荐:<NS与网络模拟> - 徐雷鸣等 1. ...

  2. [转载]ns2在linux安装过程

    本安装教程,实在ubuntu下实现,安装的软件的版本,可能不同, 过程中也可能存在微小差异,供参考. 本人亲测,gcc版本4.5,ns2版本2.35,成功. 教程来源:http://blog.sina ...

  3. 一步一步教你在CentOS6.0下安装NS2(ns-allinone-2.34.tar.gz)模拟仿真工具

    在CentOS6.0(内核版本2.6.32-71.el6.i686 )发行版中,基于2.6.32的内核协议栈部分做了适当调整,因此我们在选择ns2的安装版本时就不可以选择较老的版本,因为很多东西都编译 ...

  4. ns2 安装与问题集锦

    转自: http://hi.baidu.com/_dragonwarrior/blog/item/ba462fdc070fde43ccbf1a9e.html Ubuntu 10.04 下 安装 NS2 ...

  5. ubuntu 16.04上ns2+nam+GT-ITM安装笔记

    因工作需要,着手搭建ns+nam+GT-ITM环境,在网上看了一些帖子,用了一天时间安装调试,现在做一个小的总结,希望给做类似工作的人有一些借鉴. 目标:在Ubuntu16.04虚拟机上安装ns2.3 ...

  6. centos下安装NS2

    在进行网络实验时,经常需要进仿真实验,这里给大家提供一款非常强大的仿真工具:NS2.NS2是在UNIX系统上面开发的,因此UNIX系统和类UNIX系统是最佳平台(当然windows系统也能安装使用). ...

  7. Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!!

    Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!! ...前言 Step1: 更新系统 Step2:安装ns2需要的几个包 Step3:下载安装包 ...

  8. (转)jLink使用ITM机制实现调试stm32单片机

    ----------------------------------------------------------------------------------------------- 作者:p ...

  9. Ubuntu 15.10安装ns2.35+nam

    2019独角兽企业重金招聘Python工程师标准>>> Step1: 更新系统 sudo apt-get  update #更新源列表 sudo apt-get upgrade #更 ...

最新文章

  1. pandas 索引_10分钟带你学会Pandas多层级索引
  2. 单片机c语言调用函数费时,下头函数,只要被调用就会导致单片机死机,请大家帮忙分析...
  3. 使用tensoflow serving来部署模型推理节点
  4. android wms,Android解析WindowManagerService(一)WMS的诞生
  5. 剑指offer(04)重建二叉树
  6. PHP 实现图片验证码
  7. 利用网站模板创建子网站
  8. fscapture设置中文_Fscapture是什么软件?有没有功能介绍?
  9. 一些关于java线程编程的事儿
  10. 教你如何用机翻软件开拓自己的青青草原
  11. android 可拖拽View的简单实现
  12. 【UVa11178】Morley's Theorem(向量旋转+直线交点)
  13. labelImg使用教程
  14. 微信小程序前端推送消息通知 -- 需要获取用户订阅权限
  15. C语言博客作业--一二维数组
  16. 华为高薪吸纳“天才” !任正非:进来华为,就没有“天才少年”这个名词了
  17. 实用办公必学技巧:Excel打印标题设置方法
  18. 10 行代码,集算器实现写诗机器人
  19. This probably means that Tcl wasn‘t installed properly报错
  20. 维护【软件工程总结】

热门文章

  1. 【周志华机器学习】九、聚类
  2. GNSS精密单点定位(PPP)基本原理(进阶篇)
  3. 学习微信小程序开发框架之脚本语言WXS
  4. 周记:Fifty-eight
  5. 熬夜再战Android之修炼Kotlin-为什么要搞她?
  6. 懂得三境界-使用dubbo时请求超过问题
  7. 淘票票sign----js(5: 继续淘票票--sign 生成完成)
  8. 谷歌地图商家数据采集
  9. 电容的种类及特点与性能
  10. 2018年河南招生考试之友文理扫描版