|
campus2auto.dml complete configuration file |
# campus2auto.dml
# Note: to compare with the drawing campus2auto.pdf,
# for each router the interfaces are indexed starting with id = 0
# at about "12 o'clock" position and increasing clockwise.
_schema [_find .schemas.Net]
Net [
frequency 100000000 # because the fastest link speed is 100 Mbs
Net [id 0 _extends .networks.network0.Net]
Net [id 1 _extends .networks.network1.Net]
Net [id 2 _extends .networks.network2.Net]
Net [id 3 _extends .networks.network3.Net]
# router between net 0 and net 2
router [ id 4
interface [ id 0 _extends .dictionary.1Gb ]
interface [ id 1 _extends .dictionary.1Gb ]
interface [ id 2 _extends .dictionary.100Mb ]
interface [ id 3 _extends .dictionary.100Mb ]
_find .dictionary.routerGraph.graph
]
# router between net 0 and net 3
router [ id 5
interface [ id 0 _extends .dictionary.1Gb ]
interface [ id 1 _extends .dictionary.100Mb ]
interface [ id 2 _extends .dictionary.100Mb ]
interface [ id 3 _extends .dictionary.1Gb ]
_find .dictionary.routerGraph.graph
]
# point-to-point link connecting routers 4 and 5
link [ attach 4(1) attach 5(3) delay 0.005]
# links from backbone Net 0 to routers 4, 5, 1:0
link [ attach 0:0(2) attach 4(0) delay 0.01]
link [ attach 0:1(1) attach 5(0) delay 0.01]
link [ attach 0:2(0) attach 1:0(3) delay 0.01]
# links to connect router 4 to net 2
link [ attach 4(2) attach 2:1(0) delay 0.005]
link [ attach 4(3) attach 2:0(0) delay 0.005]
# links to connect router 5 to network3
link [ attach 5(2) attach 3:0(0) delay 0.005]
link [ attach 5(1) attach 3:1(0) delay 0.005]
# the enclosing Net is configured as one OSPF area:
AS_status boundary
ospf_area 0
# ospfoptions control the printing of the diagnostic output
ospfoptions [
show_ifaces false # show ospf interface data structure
show_AS_area false # show AS and area number
show_rtr_type false # show router types
show_hello_pkts false # show hello packets and link connection
show_lsas false # show lsa packets
show_lsdb false # show link state databases
show_rtg_tbl false # show routing tables
]
# traffic specification uses globally resolved NHI addresses,
# that begin with the topmost enclosing Net,
# thus 'client 2' is interpreted as all clients in Net 2, etc.
traffic [
pattern [
client 2
servers [port 10 nhi_range [from 1:2(0) to 1:5(0)]]
]
pattern [
client 3
servers [port 10 nhi_range [from 1:2(0) to 1:5(0)]]
]
]
] # end of .Net
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#
# Here is a database of networks:
#
# network0
# is a small 1Gb backbone composed of 3 identical routers, no hosts.
# It can be used as an ospf backbone, or as a transit AS in the tests.
#
# network1
# a small server farm with two servers attached p2p to
# each of two routers
#
# network2
# just routers, access lans and p2p links,
# Two client hosts per each access lan for illustration;
# all hosts are identical
#
# network3
# just routers, access lans and p2p links,
# Two client hosts per each access lan for illustration;
# all hosts are identical
networks [
network0 [
Net [
router [ id 0
interface [ id 0 _extends .dictionary.1Gb ]
interface [ id 1 _extends .dictionary.1Gb ]
interface [ id 2 _extends .dictionary.1Gb ] # not attached
_find .dictionary.routerGraph.graph
]
router [ id 1
graphics [ x 600 y 200]
interface [ id 0 _extends .dictionary.1Gb ]
interface [ id 1 _extends .dictionary.1Gb ] # not attached
interface [ id 2 _extends .dictionary.1Gb ]
_find .dictionary.routerGraph.graph
]
router [ id 2
graphics [ x 600 y 100]
interface [ id 0 _extends .dictionary.1Gb ] # not attached
interface [ id 1 _extends .dictionary.1Gb ]
interface [ id 2 _extends .dictionary.1Gb ]
_find .dictionary.routerGraph.graph
]
link [ attach 0(1) attach 1(2) delay 0.01] # 10 ms delay
link [ attach 1(0) attach 2(1) delay 0.01]
link [ attach 0(0) attach 2(2) delay 0.01]
]
] # end of network0
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
network1 [
Net [
router [ id 0
interface [ id 0 _extends .dictionary.1Gb ]
interface [ id 1 _extends .dictionary.1Gb ]
interface [ id 2 _extends .dictionary.1Gb ]
interface [ id 3 _extends .dictionary.1Gb ] # not attached
_find .dictionary.routerGraph.graph
]
router [ id 1
interface [ id 0 _extends .dictionary.1Gb ]
interface [ id 1 _extends .dictionary.1Gb ]
interface [ id 2 _extends .dictionary.1Gb ]
_find .dictionary.routerGraph.graph
]
host [ id 2
route [dest default interface 0]
_extends .dictionary.server1Gb
]
host [ id 3
route [dest default interface 0]
_extends .dictionary.server1Gb
]
host [ id 4
route [dest default interface 0]
_extends .dictionary.server1Gb
]
host [ id 5
route [dest default interface 0]
_extends .dictionary.server1Gb
]
link [ attach 0(2) attach 1(0) delay 0.001 ]
link [ attach 0(0) attach 2(0) delay 0.001 ]
link [ attach 0(1) attach 3(0) delay 0.001 ]
link [ attach 1(1) attach 4(0) delay 0.001 ]
link [ attach 1(2) attach 5(0) delay 0.001 ]
]
] # end of network1
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
network2 [
Net [
router [ id 0
interface [ id 0 _extends .dictionary.100Mb ] # not attached
interface [ id 1 _extends .dictionary.100Mb ]
interface [ id 2 _extends .dictionary.100Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 1
interface [ id 0 _extends .dictionary.100Mb ] # not attached
interface [ id 1 _extends .dictionary.100Mb ]
interface [ id 2 _extends .dictionary.100Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 2
interface [ id 0 _extends .dictionary.100Mb ]
interface [ id 1 _extends .dictionary.100Mb ]
interface [ id 2 _extends .dictionary.100Mb ]
interface [ id 3 _extends .dictionary.10Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 3
interface [ id 0 _extends .dictionary.100Mb ]
interface [ id 1 _extends .dictionary.100Mb ]
interface [ id 2 _extends .dictionary.100Mb ]
interface [ id 3 _extends .dictionary.100Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 4
interface [ id 0 _extends .dictionary.100Mb ]
interface [ id 1 _extends .dictionary.10Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 5
interface [ id 0 _extends .dictionary.100Mb ]
interface [ id 1 _extends .dictionary.10Mb ]
interface [ id 2 _extends .dictionary.100Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 6
interface [ id 0 _extends .dictionary.100Mb ]
interface [ id 1 _extends .dictionary.10Mb ]
interface [ id 2 _extends .dictionary.10Mb ]
interface [ id 3 _extends .dictionary.10Mb ]
_find .dictionary.routerGraph.graph
]
# hosts on LANs: note that next_hop must be specified as
# the interface of a router on the LAN for all destination
# addresses that are not on the same LAN
host [ id 7
nhi_route [dest default interface 0 next_hop 2(3)]
_extends .dictionary.client10Mb
]
host [ id 8
nhi_route [dest default interface 0 next_hop 2(3)]
_extends .dictionary.client10Mb
]
host [id 9
nhi_route [dest default interface 0 next_hop 4(1)]
_extends .dictionary.client10Mb
]
host [id 10
nhi_route [dest default interface 0 next_hop 4(1)]
_extends .dictionary.client10Mb
]
host [id 11
nhi_route [dest default interface 0 next_hop 3(1)]
_extends .dictionary.client10Mb
]
host [id 12
nhi_route [dest default interface 0 next_hop 3(1)]
_extends .dictionary.client10Mb
]
host [id 13
nhi_route [dest default interface 0 next_hop 5(1)]
_extends .dictionary.client10Mb
]
host [id 14
nhi_route [dest default interface 0 next_hop 5(1)]
_extends .dictionary.client10Mb
]
host [id 15
nhi_route [dest default interface 0 next_hop 6(3)]
_extends .dictionary.client10Mb
]
host [id 16
nhi_route [dest default interface 0 next_hop 6(3)]
_extends .dictionary.client10Mb
]
host [id 17
nhi_route [dest default interface 0 next_hop 6(2)]
_extends .dictionary.client10Mb
]
host [id 18
nhi_route [dest default interface 0 next_hop 6(2)]
_extends .dictionary.client10Mb
]
host [id 19
nhi_route [dest default interface 0 next_hop 6(1)]
_extends .dictionary.client10Mb
]
host [id 20
nhi_route [dest default interface 0 next_hop 6(1)]
_extends .dictionary.client10Mb
]
link [ attach 0(1) attach 1(2) delay 0.001 ]
link [ attach 0(2) attach 2(0) delay 0.001 ]
link [ attach 2(1) attach 3(3) delay 0.01 ]
link [ attach 2(2) attach 4(0) delay 0.005 ]
link [ attach 2(3) attach 7(0) attach 8(0) delay 0.003 ]
link [ attach 4(1) attach 9(0) attach 10(0) delay 0.001 ]
link [ attach 1(1) attach 3(0) delay 0.001 ]
link [ attach 3(1) attach 11(0) attach 12(0) delay 0.001 ]
link [ attach 3(2) attach 5(0) delay 0.001 ]
link [ attach 5(1) attach 13(0) attach 14(0) delay 0.001 ]
link [ attach 5(2) attach 6(0) delay 0.001 ]
link [ attach 6(3) attach 15(0) attach 16(0) delay 0.001 ]
link [ attach 6(2) attach 17(0) attach 18(0) delay 0.001 ]
link [ attach 6(1) attach 19(0) attach 20(0) delay 0.001 ]
]
] # end of network2
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
network3 [
Net [
router [ id 0
interface [ id 0 _extends .dictionary.100Mb ] # not attached
interface [ id 1 _extends .dictionary.100Mb ]
interface [ id 2 _extends .dictionary.10Mb ]
interface [ id 3 _extends .dictionary.10Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 1
interface [ id 0 _extends .dictionary.100Mb ] # not attached
interface [ id 1 _extends .dictionary.100Mb ]
interface [ id 2 _extends .dictionary.100Mb ]
interface [ id 3 _extends .dictionary.100Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 2
interface [ id 0 _extends .dictionary.100Mb ]
interface [ id 1 _extends .dictionary.100Mb ]
interface [ id 2 _extends .dictionary.10Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 3
interface [ id 0 _extends .dictionary.100Mb ]
interface [ id 1 _extends .dictionary.10Mb ]
interface [ id 2 _extends .dictionary.10Mb ]
interface [ id 3 _extends .dictionary.100Mb ]
_find .dictionary.routerGraph.graph
]
host [ id 4
nhi_route [dest default interface 0 next_hop 0(3)]
_extends .dictionary.client10Mb
]
host [ id 5
nhi_route [dest default interface 0 next_hop 0(3)]
_extends .dictionary.client10Mb
]
host [id 6
nhi_route [dest default interface 0 next_hop 0(2)]
_extends .dictionary.client10Mb
]
host [id 7
nhi_route [dest default interface 0 next_hop 0(2)]
_extends .dictionary.client10Mb
]
host [id 8
nhi_route [dest default interface 0 next_hop 2(2)]
_extends .dictionary.client10Mb
]
host [id 9
nhi_route [dest default interface 0 next_hop 2(2)]
_extends .dictionary.client10Mb
]
host [id 10
nhi_route [dest default interface 0 next_hop 3(2)]
_extends .dictionary.client10Mb
]
host [id 11
nhi_route [dest default interface 0 next_hop 3(2)]
_extends .dictionary.client10Mb
]
host [id 12
nhi_route [dest default interface 0 next_hop 3(1) ]
_extends .dictionary.client10Mb
]
host [id 13
nhi_route [dest default interface 0 next_hop 3(1)]
_extends .dictionary.client10Mb
]
link [ attach 0(3) attach 4(0) attach 5(0) delay 0.001 ]
link [ attach 0(2) attach 6(0) attach 7(0) delay 0.001 ]
link [ attach 0(1) attach 1(3) delay 0.01 ]
link [ attach 1(2) attach 2(0) delay 0.003 ]
link [ attach 2(1) attach 3(3) delay 0.003 ]
link [ attach 1(1) attach 3(0) delay 0.003 ]
link [ attach 2(2) attach 8(0) attach 9(0) delay 0.001 ]
link [ attach 3(2) attach 10(0) attach 11(0) delay 0.001 ]
link [ attach 3(1) attach 12(0) attach 13(0) delay 0.001 ]
]
] # end of network3
] # end of .networks
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
dictionary [
# typical nodes
client10Mb [
interface [ id 0 _extends .dictionary.10Mb]
_find .dictionary.clientGraph.graph
]
server1Gb [
interface [ id 0 _extends .dictionary.1Gb]
_find .dictionary.serverGraph.graph
]
# interface specs
10Mb [
bitrate 10000000 # 10 million bits per second
latency 0.001 # 1 ms NIC latency, in seconds (on-card delay)
]
100Mb [
bitrate 100000000 # 100 million bits per second
latency 0.0001 # 0.1 ms NIC latency, in seconds (on-card delay)
]
1Gb [
bitrate 1000000000 # billion bits per second
latency 0.000001 # 1 us NIC latency, in seconds (on-card delay)
]
# TCP parameters
tcpinit [
ISS 10000 # initial sequence number
MSS 1000 # maximum segment size
RcvWndSize 32 # receive buffer size
SendWndSize 32 # maximum send window size
SendBufferSize 128 # send buffer size
MaxRexmitTimes 12 # maximum retransmission times before drop
TCP_SLOW_INTERVAL 0.5# granularity of TCP slow timer
TCP_FAST_INTERVAL 0.2# granularity of TCP fast(delay-ack) timer
MSL 60.0 # maximum segment lifetime
MaxIdleTime 600.0 # maximum idle time for drop a connection
delayed_ack false # delayed ack option
fast_recovery true # implement fast recovery algorithm
show_report true # print terse TCP connection diagnostics
]
# The protocol graphs.
routerGraph [graph [
ProtocolSession [name ospf use SSF.OS.OSPF.sOSPF]
ProtocolSession [name ip use SSF.OS.IP]
]]
# the client-server protocol needs to agree on some things
appsession [
request_size 4 # client request datagram size (bytes)
show_report true # print client-server session summary report
debug false # print verbose client/server diagnostics
]
clientGraph [graph [
ProtocolSession [
name client use SSF.OS.TCP.test.tcpClient
start_time 1.0 # earliest time to send request to server
start_window 5.0 # send request to server at randomly chosen time
# in interval [start_time, start_time+start_window]
file_size 1000000 # requested file size (payload bytes)
_find .dictionary.appsession.request_size
_find .dictionary.appsession.show_report
_find .dictionary.appsession.debug
]
ProtocolSession [name socket use SSF.OS.Socket.socketMaster]
ProtocolSession [name tcp use SSF.OS.TCP.tcpSessionMaster
_find .dictionary.tcpinit]
ProtocolSession [name ip use SSF.OS.IP]
]]
serverGraph [graph [
ProtocolSession [ name server use SSF.OS.TCP.test.tcpServer
port 10 # server's well known port
_find .dictionary.appsession.request_size
_find .dictionary.appsession.show_report
_find .dictionary.appsession.debug
]
ProtocolSession [name socket use SSF.OS.Socket.socketMaster]
ProtocolSession [name tcp use SSF.OS.TCP.tcpSessionMaster
_find .dictionary.tcpinit]
ProtocolSession [name ip use SSF.OS.IP]
]]
] # end of .dictionary
|