# campus2.dml
# Note: to compare with the drawing campus2.pdf, for each router the interfaces
# are numbered beginning at about "12 o'clock" and increasing clockwise
_schema [_find .schemas.Net]
Net [
frequency 100000000
AS_status boundary
ospf_area 0
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)]]
]
]
Net [id 0 cidr 0 _extends .networks.network0.Net]
Net [id 1 cidr 1 _extends .networks.network1.Net]
Net [id 2 cidr 2 _extends .networks.network2.Net]
Net [id 3 cidr 3 _extends .networks.network3.Net]
# router between net 0 and net 2
router [ id 4
graphics [x 400 y 300]
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
graphics [x 700 y 360]
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
]
# this link gets top-level cidr block
link [cidr 4 attach 4(1) attach 5(3) delay 0.005]
# links from backbone net 0 to routers 4, 5, 1:0 will get addresses
# from the block of net 0
link [cidr 0/3 attach 0:0(2) attach 4(0) delay 0.01]
link [cidr 0/4 attach 0:1(1) attach 5(0) delay 0.01]
link [cidr 0/5 attach 0:2(0) attach 1:0(3) delay 0.01]
# links to connect router 4 to net 2 will get addresses
# from the block of network2
link [cidr 2/4 attach 4(2) attach 2:1(0) delay 0.005]
link [cidr 2/3 attach 4(3) attach 2:0(0) delay 0.005]
# similarly links to connect router 5 to network3 will get addresses
# from the cidr block of network3
link [cidr 3/4 attach 5(2) attach 3:0(0) delay 0.005]
link [cidr 3/5 attach 5(1) attach 3:1(0) delay 0.005]
# 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
]
]
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#
# 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.
#
# 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
#
# network1
# a small server farm with two servers attached p2p to
# each of two routers
networks [
network0 [
Net [
router [ id 0
graphics [ x 300 y 200]
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 [ cidr 0 attach 0(1) attach 1(2) delay 0.01] # 10 ms delay
link [ cidr 1 attach 1(0) attach 2(1) delay 0.01]
link [ cidr 2 attach 0(0) attach 2(2) delay 0.01]
]
]
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
network2 [
Net [
router [ id 0
graphics [ x 300 y 400]
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
graphics [ x 410 y 400]
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
graphics [ x 300 y 500]
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
graphics [ x 450 y 500]
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
graphics [ x 300 y 600]
interface [ id 0 _extends .dictionary.100Mb ]
interface [ id 1 _extends .dictionary.10Mb ]
_find .dictionary.routerGraph.graph
]
router [ id 5
graphics [ x 450 y 600]
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
graphics [ x 400 y 700]
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 link 1/5 (lan)
host [ id 7
graphics [ x 200 y 500]
nhi_route [dest default interface 0 next_hop 2(3)]
_extends .dictionary.client10Mb
]
host [ id 8
graphics [ x 225 y 525]
nhi_route [dest default interface 0 next_hop 2(3)]
_extends .dictionary.client10Mb
]
# hosts on link 1/6 (lan)
host [id 9
graphics [ x 200 y 600]
nhi_route [dest default interface 0 next_hop 4(1)]
_extends .dictionary.client10Mb
]
host [id 10
graphics [ x 235 y 626]
nhi_route [dest default interface 0 next_hop 4(1)]
_extends .dictionary.client10Mb
]
# hosts on link 2/2 (lan)
host [id 11
graphics [ x 530 y 522]
nhi_route [dest default interface 0 next_hop 3(1)]
_extends .dictionary.client10Mb
]
host [id 12
graphics [ x 560 y 500]
nhi_route [dest default interface 0 next_hop 3(1)]
_extends .dictionary.client10Mb
]
# hosts on link 2/4/1 (lan)
host [id 13
graphics [ x 535 y 630]
nhi_route [dest default interface 0 next_hop 5(1)]
_extends .dictionary.client10Mb
]
host [id 14
graphics [ x 560 y 610]
nhi_route [dest default interface 0 next_hop 5(1)]
_extends .dictionary.client10Mb
]
# hosts on link 2/4/3/1 (lan)
host [id 15
graphics [ x 322 y 718]
nhi_route [dest default interface 0 next_hop 6(3)]
_extends .dictionary.client10Mb
]
host [id 16
graphics [ x 355 y 727]
nhi_route [dest default interface 0 next_hop 6(3)]
_extends .dictionary.client10Mb
]
# hosts on link 2/4/3/2 (lan)
host [id 17
graphics [ x 397 y 736]
nhi_route [dest default interface 0 next_hop 6(2)]
_extends .dictionary.client10Mb
]
host [id 18
graphics [ x 430 y 746]
nhi_route [dest default interface 0 next_hop 6(2)]
_extends .dictionary.client10Mb
]
# hosts on link 2/4/3/3 (lan)
host [id 19
graphics [ x 473 y 769]
nhi_route [dest default interface 0 next_hop 6(1)]
_extends .dictionary.client10Mb
]
host [id 20
graphics [ x 516 y 758]
nhi_route [dest default interface 0 next_hop 6(1)]
_extends .dictionary.client10Mb
]
# comment: we could also use an array for all hosts
# host [idrange [from 7 to 20]
# _extends .dictionary.client10Mb ]
link [ cidr 1/1 attach 0(1) attach 1(2) delay 0.001 ]
link [ cidr 1/2 attach 0(2) attach 2(0) delay 0.001 ]
link [ cidr 1/3 attach 2(1) attach 3(3) delay 0.01 ]
link [ cidr 1/4 attach 2(2) attach 4(0) delay 0.005 ]
link [ cidr 1/5 graphics [x 200 y 480] attach 2(3) attach 7(0) attach 8(0) delay 0.003 ]
link [ cidr 1/6 graphics [x 200 y 580] attach 4(1) attach 9(0) attach 10(0) delay 0.001 ]
link [ cidr 2/1 attach 1(1) attach 3(0) delay 0.001 ]
link [ cidr 2/2 graphics [x 530 y 510] attach 3(1) attach 11(0) attach 12(0) delay 0.001 ]
link [ cidr 2/3 attach 3(2) attach 5(0) delay 0.001 ]
link [ cidr 2/4/1 graphics [x 535 y 610] attach 5(1) attach 13(0) attach 14(0) delay 0.001 ]
link [ cidr 2/4/2 attach 5(2) attach 6(0) delay 0.001 ] # added by msc
link [ cidr 2/4/3/1 graphics [x 322 y 705] attach 6(3) attach 15(0) attach 16(0) delay 0.001 ]
link [ cidr 2/4/3/2 graphics [x 397 y 716] attach 6(2) attach 17(0) attach 18(0) delay 0.001 ]
link [ cidr 2/4/3/3 graphics [x 473 y 749] attach 6(1) attach 19(0) attach 20(0) delay 0.001 ]
]
] # end of network2
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
network3 [
Net [
router [ id 0
graphics [x 610 y 450]
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
graphics [x 800 y 450]
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
graphics [x 712 y 563]
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
graphics [x 843 y 563]
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
]
# hosts on link 0 (lan)
host [ id 4
graphics [x 600 y 510]
nhi_route [dest default interface 0 next_hop 0(3)]
_extends .dictionary.client10Mb
]
host [ id 5
graphics [x 620 y 510]
nhi_route [dest default interface 0 next_hop 0(3)]
_extends .dictionary.client10Mb
]
# hosts on link 1 (lan)
host [id 6
graphics [x 650 y 510]
nhi_route [dest default interface 0 next_hop 0(2)]
_extends .dictionary.client10Mb
]
host [id 7
graphics [x 670 y 510]
nhi_route [dest default interface 0 next_hop 0(2)]
_extends .dictionary.client10Mb
]
# hosts on link 3/4 (lan)
host [id 8
graphics [x 710 y 600]
nhi_route [dest default interface 0 next_hop 2(2)]
_extends .dictionary.client10Mb
]
host [id 9
graphics [x 730 y 600]
nhi_route [dest default interface 0 next_hop 2(2)]
_extends .dictionary.client10Mb
]
# hosts on link 3/5/1 (lan)
host [id 10
graphics [x 820 y 650]
nhi_route [dest default interface 0 next_hop 3(2)]
_extends .dictionary.client10Mb
]
host [id 11
graphics [x 840 y 650]
nhi_route [dest default interface 0 next_hop 3(2)]
_extends .dictionary.client10Mb
]
# hosts on link 3/5/2 (lan)
host [id 12
graphics [x 900 y 700]
nhi_route [dest default interface 0 next_hop 3(1) ]
_extends .dictionary.client10Mb
]
host [id 13
graphics [x 930 y 700]
nhi_route [dest default interface 0 next_hop 3(1)]
_extends .dictionary.client10Mb
]
link [ cidr 0 graphics [x 600 y 500] attach 0(3) attach 4(0) attach 5(0) delay 0.001 ]
link [ cidr 1 graphics [x 650 y 500] attach 0(2) attach 6(0) attach 7(0) delay 0.001 ]
link [ cidr 2 attach 0(1) attach 1(3) delay 0.01 ]
link [ cidr 3/1 attach 1(2) attach 2(0) delay 0.003 ]
link [ cidr 3/2 attach 2(1) attach 3(3) delay 0.003 ]
link [ cidr 3/3 attach 1(1) attach 3(0) delay 0.003 ]
link [ cidr 3/4 graphics [x 710 y 590] attach 2(2) attach 8(0) attach 9(0) delay 0.001 ]
link [ cidr 3/5/1 graphics [x 820 y 630] attach 3(2) attach 10(0) attach 11(0) delay 0.001 ]
link [ cidr 3/5/2 graphics [x 900 y 690] attach 3(1) attach 12(0) attach 13(0) delay 0.001 ]
]
] # end of network3
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
network1 [
Net [
router [ id 0
graphics [ x 800 y 100]
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
graphics [ x 800 y 200]
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
graphics [ x 900 y 80]
route [dest default interface 0]
_extends .dictionary.server1Gb
]
host [ id 3
graphics [ x 900 y 120]
route [dest default interface 0]
_extends .dictionary.server1Gb
]
host [ id 4
graphics [ x 900 y 160]
route [dest default interface 0]
_extends .dictionary.server1Gb
]
host [ id 5
graphics [ x 900 y 180]
route [dest default interface 0]
_extends .dictionary.server1Gb
]
link [ cidr 0 attach 0(2) attach 1(0) delay 0.001 ]
link [ cidr 1/0 attach 0(0) attach 2(0) delay 0.001 ]
link [ cidr 1/1 attach 0(1) attach 3(0) delay 0.001 ]
link [ cidr 2/0 attach 1(1) attach 4(0) delay 0.001 ]
link [ cidr 2/1 attach 1(2) attach 5(0) delay 0.001 ]
]
] # end of network1
] # end of networks database
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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 initial 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
]
# Three protocol graphs.
routerGraph [graph [
ProtocolSession [name ip use SSF.OS.IP]
ProtocolSession [name ospf use SSF.OS.OSPF.sOSPF]
]]
# 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]
]]
]
|