[转] gt-itm资料汇总

【0】About GT-ITM under the NS-2

【1】gt-itm模型生成拓扑结构

【2】GT-ITM拓扑生成器的原理及命令格式简介

【3】linux虚拟机NS2及gt-itm安装和使用(实践证明可用!)

【4】NS2中GT-ITM的安装与使用

 

 

【0】About GT-ITM under the NS-2

http://blog.csdn.net/crfoxzl/article/details/2757321

There might not be much organized information about how to use GT-ITM in NS2, so I just put some notes here, just in case I forget how to use it.

GT-ITM would have been built in your NS2, you can check it by searching under NS2 home directory. To use it, you need do the following steps.
1. Create the specification file for GT-ITM.
2. Generate the topology file.
3. Convert to NS2 format.
4. Tweak the result.

1. The format of the specification file could be found in the README file under the gt-itm/docs directory. Or, you will find it by google. And it is as follows.

## Comments :
## <#method keyword> <#number of graphs> [<#initial seed>]
## <#stubs/xit> <#t-s edges> <#s-s edges>
## <#n> <#scale> <#edgemethod> <#alpha> [<#beta>] [<#gamma>]
## number of nodes = 1*8* (1 + 4*6) = 200
ts 10 47
4 0 0
1 20 3 1.0
8 20 3 0.8
6 10 3 0.5

Save the content to whatever, e.g. ts200.

2. To generate the topology, run 'itm ts200'
After running the itm command, you get the .gb files that are generated topoloy files.

3. To convert to whatever NS2 can use, run 'sgb2ns ts200-0.gb ts200.tcl'
Then you get .tcl files.

4. You would need to pay attention to what would be obsolete in the generated .tcl files.
For newer version of NS2, you would probabily need to modify the .tcl code generated by sg2ns a little bit to get it work.
The duplex-link-of-interfaces statement is somewhat obsolete, and you would need to change it to duplex-link to get the code work.

 

 

 

【1】gt-itm模型生成拓扑结构

http://blog.csdn.net/crfoxzl/article/details/2761384

终于翻译成中文了,可自己都觉得这译得自己都不太懂.暂时先这样吧
从GT-ITM拓扑产生器产生图表

    下载 GT-ITM Topology Generator软件
    GT-ITM拓扑产生器可以创建一种平面随机的图表和两种层次型的图表,N-level和transit-stub.看看在这个叫Daniel Zappala的主页上的例子(实际上这个超链接已经没用).也看看在GT-ITM目录下的目录的一些文档.我个人觉得看readme之类的文档非常有用.
    例如:我们使用200个节点创建一个transit-stub图表.那么我们先创建一个说明书一样的文件,叫ts200,其代码如下    (?ts200?怎么没有后缀名呢?)
## Comments :
   ## <#method keyword> <#number of graphs> [<#initial seed>]
   ## <#stubs/xit> <#t-s edges> <#s-s edges>
   ## <#n> <#scale> <#edgemethod> <#alpha> [<#beta>] [<#gamma>]
   ## number of nodes = 1*8* (1 + 4*6) = 200
   ts 10 47
   4 0 0
          1 20 3 1.0
          8 20 3 0.8
          6 10 3 0.5
运行命令"itm ts200",10 transit-stub图表,每个图表有200个节点(?),初始种子为47个.
    "4 0 0"
每个transit节点有四个域连接;没有额外的transit-stub边缘和stub-stub边缘.               "1 20 3 1.0"
每个图表有一个transit域
    "8 20 3 0.8 "
每个transit域有平均8个transit节点,在一对节点节有一个边缘(?),这样的概率为0.8.
    "6 10 3 0.42 "
每个stub域有平均6个节点每一对节点有一个边缘(?),这样的概率为0.5

Conversion of GT-ITM output to ns-2 format(变换gt-itm为ns2格式)
配置好gt-itm后使用sgb2ns ts200-0.gb ts200.tcl 命令执行.



注:Transit-Stub模型将AS域划分为Transit类和Stub类.在该模型中,Transit节点彼此互联构成一个节点群,一个或多个Transit节点群构成拓扑图的核心,而Stub节点分布在Transit节点群四周与Transit节点相连.Transit -Stub是GT-ITM(georgia tech Internetwork topology models)软件包的一部分,有时GT-ITM也就是指Transit-Stub模型.

Georgia Tech Internetwork Topology Models
Generating graphs from GT-ITM topology generator.
Download the GT-ITM Topology Generator software.
The GT-ITM topology generator can be used to create flat random graphs and two types of hierarchical graphs, the N-level and transit-stub. Take a look at the examples in Daniel Zappala's homepage. Also look at the documents under docs subdirectory of GT-ITM's distribution.
For example, we need to create a transit-stub graph with 200 nodes. So we create a specification file, say ts200, that goes like this:
   ## Comments :
   ## <#method keyword> <#number of graphs> [<#initial seed>]
   ## <#stubs/xit> <#t-s edges> <#s-s edges>
   ## <#n> <#scale> <#edgemethod> <#alpha> [<#beta>] [<#gamma>]
   ## number of nodes = 1*8* (1 + 4*6) = 200
   ts 10 47
   4 0 0
   1 20 3 1.0
   8 20 3 0.8
   6 10 3 0.5
        
On running 'itm ts200', 10 transit-stub graphs with 200 nodes each will be created starting with initial seed 47. line 4 0 0 means each transit node will have 4 stub domains connected to it;there shall be no extra transit-stub edges and no extra stub-stub edges. Line 1 20 3 1.0 means there will 1 transit domain in each graph. Line 8 20 3 0.8 says each transit domain will have, on an average, 8 transit nodes with an edge between each pair of node with a probability of 0.8 and line 6 10 3 0.42 says every stub domain shall have, on an average, 6 nodes each with an edge between every pair with a probability of 0.5.
For a more complete description of the parameter specification file see models.ps file under docs subdirectory.
The graphs produced are named as ts200-[0 to 9].gb and are in Stanford Graph Base Output format. This needs to be converted to tcl format for ns-2 to interpret it correctly.
Conversion of GT-ITM output to ns-2 format
Download the sgb2ns conversion program. Follow instructions in the README file and create the sgb2ns executible. Note that sgb2ns should be expanded in the gt-itm directory, and its executibles will be placed in gt-itm/bin subdirectory. This distribution also contains ts2ns and sgb2hier as described below.
Modify sgb2ns's Makefile to make macro GT_ITM to point to the right path and correct Stanford Graphics Base library name installed in your system(e.g libgd.a, libgb4.a or libgb5.a etc). The library also comes as a part of gt-itm distribution. Under any circumstance it should reside under gt-itm/lib.
sgb2ns converts the sgb output to tcl output.
Usage : sgb2ns ts200-0.gb ts200.tcl

 

 

 

【2】GT-ITM拓扑生成器的原理及命令格式简介

 http://blog.csdn.net/caad3/article/details/5399755

 

GT-ITM(Georgia Tech Internetwork Topology Models)拓扑生成器

   该拓扑生成器可以用来生成平面随机图和两种层次图:N-level和Transit-Stub。下面先依次介绍这三种图,然后再谈GT-ITM拓扑生成器的用法。

平面随机图

       网络拓扑结构可以用各种平面随机图作为模型。最简单的一种为纯随机模型:结点在平面上随机分布,任意两个结点间有边的概率为a。由于它不能很好的反映现实网络的拓扑结构,所以在此基础上又提出了其它几种模型,结点仍然在平面上随机分布,只是对生成边的概率函数做了不同的修改:

       Waxman 1模型:从结点u到v的有边的概率为P(u,v)=a*exp(-d/(bL)),其中0<a,b<=1,d是两结点间的距离,L=21/2*scale是平面上任意两结点间的最大距离(scale代表什么自己画个图就能明白了)。a增大则图中边的数目会增大,b增大则图中长边数与短边数的比值会增大;

       Waxman 2模型:将Waxman 1模型中的d换成0到L之间的一个随机数;

       Doar-Leslie模型:将Waxman 1模型中得到的概率值乘以一个比例因子ke/n,其中e是结点度数的期望值(平均值),n是结点数,k是由a,b决定的常数;

       指数模型:两个结点间有边的概率随着距离的增加而成指数级的降低,概率函数为P(u,v)=a*exp(-d/(L-d));

       Locality模型:根据两结点间的距离将结点对分成不同的等级,不同等级的结点对之间有边的概率不同,以一个两级模型为例:如果d<L*radius,则P(u,v)=a,否则P(u,v)=b,其中radius用来确定分级界限。

N-level

       通过递归的形式来生成网络拓扑图。首先用上述六种模型中的一种生成一个平面随机图,作为首层图。然后用平面随机图代替首层图中的每一个结点,并且依次替代下去。用来代替同层(非同层)结点的平面随机图要求相同(可以不同)。上一层与下一层随机平面图有多种连接方式,详见用法介绍。

Transit-Stub

       将结点划入不同类型的域,再将这些域连接起来。首先生成一个平面随机图,图中的每一个结点代表一个transit域。然后用平面随机图代替这些transit域,表示这些transit域的骨干拓扑。对transit域中的每个结点,生成一个或多个随机平面图作为stub域,并将其和结点连接起来。最后还可以在特定的结点对之间增加一些额外边,结点对需要满足:一个在transit域一个在stub域,或者在不同的stub域。

GT-ITM拓扑生成器的函数命令及参数格式

  1. 通过函数itm来生成网络拓扑。函数用法如下:

itm <spec-file0> <spec-file1> ....

每个参数都是一个生成特定图的配置文件。文件格式如下:

[# comment line]

<method keyword> <number of graphs> [<initial seed>]

 

其中,<method keyword>可以是下面三个值中的任意一个:

“geo”:生成平面随机图

“hier”:生成N-level层次图

“ts”:生成Transit-Stub层次图。

<number of graphs>指定要生成特定图的个数,<initial seed>初始化生成随机数的seed。注释行以“#”开头。

  2.  <method-dependent parameter lines>为参数设置行,生成不同的图格式是不一样的。

   生成平面随机图:

<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>:random graph parameter (0.0 <= a<= 1.0)

            <beta>:random graph parameter (0.0 <= b)

            <gamma>:random graph parameter (0.0 <= e)

      生成N-level层次图:

   <number of levels> <edgeconnmethod> <threshold>

      <geo_parms>+  {每层一个}

            <number of levels>:图中的层次数

            <edgeconnmethod>:上一层与下一层平面随机图的连接方法,

              0:random

              1:use non-leaf node of smallest degree

              2:use node of smallest degree

              3:use first node with degree less than <threshold>

            <threshold>:see above

      生成Transit-Stub层次图:

   <# 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. 输出文件命名方式。配置文件“arg”生成的第i个图存放在文件“arg-i.gb”中,i从0开始计数。

 

 

 

【3】linux虚拟机NS2及gt-itm安装和使用(实践证明可用!)

http://hi.baidu.com/tuoqi/blog/item/ae38d316b899930c962b4354.html

最近忽然接到通知,要使用gt-itm生成网络拓扑,慌了,赶紧开始研究。原来对ns2及gt-itm都从来没有接触过,网上搜教程。

 

安装环境:vmware下kanas-ubuntu10.10中国定制版,已经内置了一些deb,不过也可能导致依赖关系与原版有一些差别,也可以用cygwin来安装,不过那玩意儿太慢了,我正好装了个linux,遂不考虑win。

首先安装ns2,当然是使用推荐的nsallinone啦,不然一个个装累死人。

tar包去这里下载:http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.34/

首先要安装一些库,不然可能导致错误。

sudo apt-get install build-essential autoconf libxmu-dev

在装autoconf的时候就提示依赖关系有问题,不知是不是因为我用的中国版的原因,也不知原版会不会有这个问题

解决方法:sudo apt-get -f install

然后sudo apt-get install autoconf libxmu-dev

sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev

这些库装好之后,应该就毛问题啦

我将nsallinone的文件存在/home/loverose/simulation/文件夹下,遂进入该文件夹,输入

tar zxvf ns-allinone-2.34.tar.gz

cd ns-allinone-2.34/

./install

我在整个安装过程中没有遇到任何问题,也没有遇到传说中的otcl装不上的问题

安装完了之后,需要修改环境变量,输入

sudo gedit ~/.bashrc

在最后面加上

PATH="$PATH:/home/loverose/simulation/ns-allinone-2.34/bin:/home/loverose/simulation/ns-allinone-2.34/tcl8.4.18/unix:/home/loverose/simulation/ns-allinone-2.34/tk8.4.18/unix"
LD_LIBRARY_PATH="/home/loverose/simulation/ns-allinone-2.34/otcl-1.13, /home/loverose/simulation/ns-allinone-2.34/lib"
TCL_LIBRARY="$TCL_LIBRARY:/home/loverose/simulation/ns-allinone-2.34/tcl8.4.18/library"

其中/home/loverose/simulation/这一段都替换成你自己的存放目录

然后 source ~/.bashrc

./validate

验证一下,这个时间比较长,但很保险,反正我有时间,也不在乎。也可以通过别的方式

输入

ns

若出现一个%则主件安装成功;
再在/home/mozhu/Public/ns-allinone-2.33/ns-2.33/tcl/ex目录下找到simple.tcl文件,执行如下:
ns /home/mozhu/Public/ns-allinone-2.33/ns-2.33/tcl/ex/simple.tcl

有动画就说明成功了。这是我从别人那儿抄来的,自己没试。

 

NS2安装完成之后,就要安装gt-itm了。网上的教程大部分都已经过时,以下是我自己的经验:

ns-allinone-2.34/gt-itm/sgb2ns/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"

因为这一段如果生成的代码是duplex-link-of-interface的话将会无法生成拓扑,呵呵

然后在gt-itm/src和gt-itm/sgb2ns下分别执行make,重新编译获得itm执行文件

网上其他的修改都没有必要啦,2.34版本已经修正了不少错误了。

 

使用ns2的教程主要是参考一个tutorial,地址是http://www.isi.edu/nsnam/ns/tutorial/

如何写gt-itm生成文件可以看http://blog.csdn.net/caad3/archive/2010/03/20/5399755.aspx

http://blog.csdn.net/crfoxzl/archive/2008/08/03/2761384.aspx

这些作者都写的挺好的,然后可以在gt-itm的目录里看doc、readme之类的文档

这个我也不怎么会,共勉吧~

 

生成一个拓扑的简单模式是这样的,上面的网址里其实有写到

先写一个叫ts200.script的东西,当然名字可以随便改

ts 1 47
4 0 0
1 20 3 1.0
2 20 3 0.8
3 10 3 0.5 

然后运行itm ts200.script

它会生成1个叫ts200-0.gb的文件。如果上面的代码里ts后面那个数是几,就会生成几个,我这儿写的是1,就是一个,如果是10,就会生成10个名为ts200-0.gb,一直到ts200-9.gb的文件。这其实已经是生成的10个拓扑了,但是还不是ns2的格式。

输入sgb2ns ts200-0.gb test.tcl,就将第1个拓扑转成了tcl文件了,打开test.tcl,已经是ns2的格式

然后写一个叫nam_show.tcl的文件

set ns [new Simulator]
set nf [open out.nam w]
$ns namtrace-all $nf
source test.tcl
create-topology ns node 1.5Mb
$ns run

保存之后输入

ns nam_show.tcl,就生成out.nam了

如果要在窗口模式下看,只需输入nam out.nam,就能看到图了

 

 

【4】NS2中GT-ITM的安装与使用

http://hi.baidu.com/zorrolee/blog/item/ff6ebe8ffbab84cff11f36b4.html

安装:
1.gt-tim文件夹下先建立两个文件夹bin和lib 。(ns-allinone-2.30中不用建立)
2.把.../sgb/libgb.a, 复制到/gt-tim/lib下。

3.修改.../gt-tim/sgb2ns/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".

4.修改\ns-allinone-2.29\gt-itm\sgb2ns\ts20.tcl里面“duplex-link-of-interfaces” 改为“duplex-link”.

5.在.../gt-tim/src和.../gt-tim/sgb2ns下分别执行make,可执行文件已经在.../gt-tim/bin下面了

6.在gt-itm/sgb2ns目录下make成新的sgb2ns工具。

7.在ns-2.27/sgb目录下make,make install

 

8.打开../gt-itm/src,重新编译make,生成itm命令(在我们创建的gt-itm/bin中)。

 

9.将该命令软连接到path中:
   ln -s ../gt-itm/bin/itm/home/zh/ns-allinone-2.29/bin/itm
其他命令都可以类似链接。
 
10.总结一下使用gt-itm的过程:首先编辑拓扑定义文件--〉使用itm生成.gb的sgb文件--〉用sgb2ns命令生成ns识别的.tcl文件(这只是生成一个过程,还需要有语句来调用它,可参考其他日志)--〉ns*.tcl生成可视化的拓扑图。
 

使用
1.新建一个文件ts200.script,内容如下:
ts 10 47
4 0 0
1 20 3 1.0
8 20 3 0.8
6 10 3 0.5
2.运行itm ts200.script
得到了ts200.script-0.gb到ts200.script-9.gb共10个文件
3.运行sgb2ns ts200.script-0.gb(或其他任意一个) ts200.tcl
打开ts200.tcl,这已经是ns2的格式了

4.如果想在nam里面看拓扑:新建一个文件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
运行ns nam_show.tcl
运行nam out.nam就可以看到了

 

 

 

posted on 2012-07-15 21:52  haivey  阅读(2057)  评论(0)    收藏  举报

导航