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