# topo-grid-3x3.txt

#   /--------\	    /-\	        /-\
#   |Consumer|<---->| |<------->| |
#   \--------/	    \-/	        \-/
#       ^   	     ^ 	         ^
#       |            |           |   1Mbps/10ms delay
#       v            v           v
#      /-\          /-\         /-\
#      | |<-------->| |<------->| |
#      \-/          \-/         \-/
#       ^   	     ^ 	         ^
#       |            |           |
#       v            v           v
#      /-\	    /-\	     /--------\
#      | |<-------->| |<---->|Producer|
#      \-/          \-/      \--------/

# any empty lines and lines starting with '#' symbol is ignored
#
# The file should contain exactly two sections: router and link, each starting with the corresponding keyword
#
# router section defines topology nodes and their relative positions (e.g., to use in visualizer)
router

# each line in this section represents one router and should have the following data
# node  comment     yPos    xPos
Node0   NA          3       1
Node1   NA          3       2
Node2   NA          3       3
Node3   NA          2       1
Node4   NA          2       2
Node5   NA          2       3
Node6   NA          1       1
Node7   NA          1       2
Node8   NA          1       3
# Note that `node` can be any string. It is possible to access to the node by name using Names::Find, see examples.

# link section defines point-to-point links between nodes and characteristics of these links
link

# Each line should be in the following format (only first two are required, the rest can be omitted)
# srcNode   dstNode     bandwidth   metric  delay   queue
# bandwidth: link bandwidth
# metric: routing metric
# delay:  link delay
# queue:  comma-separated list, specifying class for Queue (on both sides of the link) and necessary attributes
# error:  comma-separated list, specifying class for ErrorModel and necessary attributes
Node0       Node1       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node0       Node3       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node1       Node2       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node1       Node4       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node2       Node5       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node3       Node4       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node3       Node6       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node4       Node5       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node4       Node7       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node5       Node8       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node6       Node7       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100
Node7       Node8       1Mbps       1       10ms    ns3::RedQueue,MeanPktSize=100

