The Network Simulator ns-2: Topology Generation

The Network Simulator ns-2: Topology Generation

Topology generation is required for network simulations. In NS-2 you may create a topology for simulation using one of the following methods:

  • by using the Inet topology generator.
  • by using the GT-ITM topology generator.
  • by using the Tiers topology generator.
  • by using the other topology generators.
  • by hand

 

Inet Topology Generator

  • Generating graphs from Inet topology generator

     

  • Conversion of Inet output to ns-2 format
    Use inet2ns to convert the inet topology to ns.
#!/usr/bin/perl
# Program to convert a inet topology to ns format
# Usage: inet2ns < inet.topo > ns.topo 
# Usage in ns : source ns.topo  in your tcl script and then
# call the procedure to create the topology using 
# create-topology linkbw [scaling factor for delay]  
# Assumptions: Eucliedian distance between the nodes is in miles.
# Hence propogation delay = distance / speed of light (186 x 10^3 miles/sec) 


#Read first line for number of nodes and links
chomp($line = <STDIN>);
($nodes, $links) = split(' ',$line);

print "proc create-topology { linkBW {sf 1} } {/n";
print "/tglobal ns/n";
print "/n/t#Create $nodes nodes in the topology/n";
print "/tfor {set i 0} {/$i < $nodes} {incr i} {/n";
print "/t/tset n(/$i) [/$ns node]/n";
print "/t}/n/n/n";
print "/t#Create $links edges in the topology/n";


#Skip all the location information
for ($i=0; $i<$nodes;$i++){
        $line = <STDIN>;
        $ref->[$i] = 0;
}

for ($i=0;$i<$links;$i++){
        chomp($line=<STDIN>);
        ($n1, $n2, $delay) = split(' ', $line);
        $ref->[$n1]++;
        $ref->[$n2]++;
        $delay = $delay / 186;
        printf("/t/$ns duplex-link /$n(%d) /$n(%d) /$linkBW [expr /$sf * %.3f]ms DropTail/n",$n1,$n2,$delay);
}

print "/n}/n";


The command to execute the script is: inet2ns < inet.topology > ns.topology

 注意上述的<>是输入输出重定向符号,并不是一般的必选参数的括号

 

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

    A modification to sgb2ns contributed by Yunxi Shi separates transit nodes from stub nodes when using transit-stub networks. The file (ts2ns.c) is included in sgb2ns distribution.

     

  • Conversion of GT-ITM output to ns-2 hierarchical format
    Download Padma Haldar's hierarchical converter package; it's included the sgb2ns distribution above. The package consists of sgb2hierns.c (the converter file) and example files t1000-0.gb (sgb file for 1000 nodes transit-stub) and hts1000.tcl (hierarchical topology converted from t1000-0.gb).
    sgb2hierns converts the sgb output to a hierarchical topology in a tcl format suitable for ns-2.
    Usage : sgb2hierns ts1000-0.gb hts1000.tcl
    In order to use the scenario generator you would need the revised sgb2comns, which is also included in the sgb2ns distribution.

 

Tiers Topology Generator

  • Generating graphs from Tiers Topology Generator
    Download the original Tiers-v1.0 by Matthew Doar
    or
    Pavlin's modified version of Tiers-v1.1. This modified version allows the random generator to be specified as an input parameter. (You can check the *.org files for the difference).
    The tiers random generator is seen to have produced different results under FreeBSD and sunos for the same input parameters.

     

  • Conversion of Tiers output to ns-2 format
    Use Pavlin's awk script tiers2ns.awk to convert the output of tiers into ns-2 scripts. The same file (tiers2ns.awk) is also present under tiers/bin of the Tiers1.1 distribution.
    Also available now is tiers2ns-lan.awk for converting LAN topologies.

 

Other Topology Generators

  • BRITE from Boston University.

     

    Generating topology By Hand

    Smaller and simpler topologies are easier to be created by hand. Below is given an example taken from test-suite.tcl from ns/tcl/ex directory. For more information refer to ns Notes and Documentation (now renamed as ns Manual) (available in PostScript format) and take a look at other example files in ns/tcl/ex directory.

    Simple Topology Generation by Hand

    # Create a simple four node topology:
    #
    #        s1
    #         / 
    #  8Mb,5ms /  0.8Mb,100ms
    #           r1 --------- k1
    #  8Mb,5ms /
    #         /
    #        s2
    #
    proc create_testnet { } {
            global s1 s2 r1 k1
            set s1 [ns node]
            set s2 [ns node]
            set r1 [ns node]
            set k1 [ns node]
     
            ns_duplex $s1 $r1 8Mb 5ms drop-tail
            ns_duplex $s2 $r1 8Mb 5ms drop-tail
            set L [ns_duplex $r1 $k1 800Kb 100ms drop-tail]
            [lindex $L 0] set queue-limit 6
            [lindex $L 1] set queue-limit 6
    }
        

你可能感兴趣的:(NetWork,download,generator,output,generation,delay)