Hey, I am trying to implement a simulation for a data center to compare
the TCP, DCTCP and MPTCP protocol and while I am still at the very early
stages - I have just finished writing the code to generate the topology
which is a clos fat-tree with the number of ports as a variable deciding
the size of the network, just the topology, nodes and connections
between them - I was curious on how you about workloads and
incorporating them inside the simulation? Can anyone help me with that,
a pointer, a link...?  I know I have to simulate the two kinds of flows
that exist in a data center according to
http://research.microsoft.com/en-us/um/people/srikanth/data/imc09_dctraffic.pdf
but I have no idea where to start and how.

Any help is appreciated.

The code for the generation of my topology is the following. Any
comments on either my question or my code (decisions about variables,
correctness, way to show a nice graph on nam although unlikely) are
welcome and appreciated.
###############################################################################
# the value of the P determine the size of the network, it is the number of
# ports on the nodes (switches/servers) of the network
set P 4
set enableNAM 1
# {bandwidth} {delay} {queue_type}
# coneection bandwidths between nodes
set lineRate_bottom 1Gb
set lineRate_top 10Gb
# propragation delay (for connections)
set pdelay 0.00000025
# queue type - most of the stuff i found on the internet about switches they
# use DropTail
set queueType DropTail




#Create a simulator object
set ns [new Simulator]

#Open the nam trace file
if {$enableNAM != 0} {
     set namfile [open nam.nam w]
     $ns namtrace-all $namfile
}

#Define a 'finish' procedure
proc finish {} {
     global ns enableNAM namfile
     $ns flush-trace
     if {$enableNAM != 0} {
         close $namfile
         exec nam nam.nam &
     }
     exit 0
}

#create core switch
for {set i 0} {$i < [expr ($P/2)*($P/2)]} {incr i} {
     set core($i) [$ns node]
     $core($i) color red
     $core($i) shape hexagon
     $core($i) label "core$i"
}

#create aggregation and Edge switch
for {set i 0} {$i < $P} {incr i} {
     for {set j 0} {$j < [expr $P/2]} {incr j} {
         set label ""
         append label $i "-" $j
         set aggr($i$j) [$ns node]
         $aggr($i$j) color blue
         $aggr($i$j) shape square
         $aggr($i$j) label "aggr$label"
         set edge($i$j) [$ns node]
         $edge($i$j) color yellow
         $edge($i$j) shape circle
         $edge($i$j) label "edge$label"
     }
}

#create hosts and links between hosts and edge switch
for {set i 0} {$i < $P} {incr i} { #pod i
     for {set j 0} {$j < [expr $P/2]} {incr j} { #edge switch j in pod i
         for {set k 0} {$k < [expr $P/2]} {incr k} { #connect host to
switch j in pod i
             set host($i$j$k) [$ns node]
             $host($i$j$k) shape box
             $ns duplex-link $host($i$j$k) $edge($i$j) $lineRate_bottom
pdelay $queueType
#            if { $i < [expr $P/2]} {
#                $ns duplex-link-op $host($i$j$k) $edge($i$j) orient
bottom-left
#            } else {
#                $ns duplex-link-op $host($i$j$k) $edge($i$j) orient
bottom-right
#            }
         }
     }
}

#create links inside the pod
for {set i 0} {$i < $P} {incr i} {
     for {set j 0} {$j < [expr $P/2]} {incr j} {
         for {set k 0} {$k < [expr $P/2]} {incr k} {
             $ns duplex-link $aggr($i$j) $edge($i$k) $lineRate_bottom
pdelay $queueType
#            if { $i < [expr $P/2]} {
#                $ns duplex-link-op $aggr($i$j) $edge($i$k) orient left
#            } else {
#                $ns duplex-link-op $aggr($i$j) $edge($i$k) orient right
#            }
         }
     }
}

#create links between the aggregation tier and the core tier
for {set i 0} {$i < $P} {incr i} { #pod i
     for {set j 0} {$j < [expr $P/2]} {incr j} { #aggr switch j in pod i
         for {set k 0} {$k < [expr $P/2]} {incr k} { #
             $ns duplex-link $core([expr $j*($P/2)+$k]) $aggr($i$j)
$lineRate_top pdelay $queueType
#            if { [expr $j*($P/2)+$k] < [expr $P/2]} {
#                $ns duplex-link-op $core([expr $j*($P/2)+$k])
$aggr($i$j) orient top-left
#            } else {
#                $ns duplex-link-op $core([expr $j*($P/2)+$k])
$aggr($i$j) orient top-right
#            }
         }
     }
}


$ns at 0.0 "finish"
$ns run
###############################################################################




---
This email is free from viruses and malware because avast! Antivirus protection 
is active.
http://www.avast.com

Reply via email to