file dictionary.dml


# database of protocol configurations and other reusable attributes
# supporting the model usa1b.dml

dictionary [

  # AS boundary router
  BGProuterGraph [graph [
    ProtocolSession [ name bgp use SSF.OS.BGP4.BGPSession ]
    ProtocolSession [ name ospf use SSF.OS.OSPF.sOSPF ]
    ProtocolSession [ name socket use SSF.OS.Socket.socketMaster ]
    ProtocolSession [ name tcp use SSF.OS.TCP.tcpSessionMaster ]
    ProtocolSession [ name ip use SSF.OS.IP ]
  ]]

  # AS-internal routers
    routerGraph [graph [
      ProtocolSession [name ospf use SSF.OS.OSPF.sOSPF]
      ProtocolSession [name ip use SSF.OS.IP]
  ]]
  
  server10Gb [
    interface [id 0 bitrate 10000000000 latency 0.0]
    graph [
      ProtocolSession [
            name server use SSF.OS.WWW.httpServer
            port 80            # server's HTTP port
            #client_limit  10  # max number of contemporaneously allowed clients
                               # if omitted, default is unlimited number

            # distribution of the number of objects in a page request:
            # if random variable = 0, round up to 1
            # NOTE: the response to page request contains the 1st object
            objects_in_page [
              distribution [
                name "Pareto"              # distribution class name
                k 0.6667                   # scale (cutoff) parameter
                alpha 1.2                  # shape (exponent) parameter
              ]
            ]

            # distribution of sizes of objects (in bytes)
            # if random variable = 0, round up to 1
            object_size [
              distribution [
                name "Pareto"              # distribution class name
                k 2000.0                   # scale (cutoff) parameter
                alpha 1.2                  # shape (exponent) parameter
              ]
            ]

            # distribution of server delays between request and response (in seconds)
            response_delay [
              distribution [
                name "Exponential"           # distribution class name
                lambda 0.01                  # mean = 1/lambda
              ]
            ]

            # http_hdrsize 1000
            _find .dictionary.httpsession.http_hdr_size
            _find .dictionary.httpsession.show_report
            _find .dictionary.httpsession.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]
    ]
  ]

  client100Mb [
    interface [id 0 bitrate 100000000 latency 0.0]
    graph [
      ProtocolSession [
            name client use SSF.OS.WWW.httpClient

             # earliest time to send the first request to server (seconds).
            start_time 1000.0

             # HTTP session arrival process in this client. The first session
             # begins at start_time + inter_session_time (in seconds).
             # Each session is with a server chosen uniformly at random from
             # the servers specified in the .Net.traffic for this client.
            inter_session_time [
              distribution [
                name "Exponential"         # distribution class name
                lambda 0.01                # mean = 1/lambda
              ]
            ]

             # distribution of number of pages per session with selected server.
             # if random variable = 0, round up to 1
            pages_in_session [
              distribution [
                name "Exponential"         # distribution class name
                lambda 0.2                 # mean = 1/lambda
              ]
            ]

             # distribution of user-think-times (off-times) between consecutive
             # in-session page requests, counted from the time when the previous
             # page delivery is completed (in seconds). Mean = 
            inter_page_time [
              distribution [
                name "Pareto"              # distribution class name
                k 25.0                     # scale (cutoff) parameter
                alpha 2.0                  # shape (exponent) parameter
              ]
            ]

             # distribution of delays between consecutive requests in a session.
             # counted from the time when the previous request was completed. (In seconds.)
            inter_request_time [
              distribution [
                name "Pareto"              # distribution class name
                k 0.1667                   # scale (cutoff) parameter
                alpha 1.5                  # shape (exponent) parameter
              ]
            ]

            _find .dictionary.httpsession.http_hdr_size
            _find .dictionary.httpsession.persistent
            _find .dictionary.httpsession.show_report
            _find .dictionary.httpsession.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]
    ]
  ]

  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 false     # print a summary connection report
  ]

  # the HTTP client-server protocol needs to agree on some things
  httpsession [
    http_hdr_size 1000  # nominal HTTP header size (virtual bytes) read from a socket
                        # before reading data (if indicated by http header)
    persistent true     # if true, one persistent TCP connection per session (HTTP1.1),
                        # if false,one TCP connection for each request/response (HTTP1.0).
    show_report true    # print client-server session summary report
    debug false         # print verbose client/server diagnostics
  ]

  # 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)
     ]

     10Gb [
       bitrate 10000000000  # 10 billion bits per second
       latency 0.00000001   # 10 ns NIC latency, in seconds (on-card delay)
     ]

     100Gb [
       bitrate 100000000000  # 100 billion bits per second
       latency 0.000000001   # 1 ns NIC latency, in seconds (on-card delay)
     ]

     1Tb [
       bitrate 1000000000000  # 1000 billion bits per second
       latency 0.0000000001   # 0.1 ns NIC latency, in seconds (on-card delay)
     ]



     serverPattern [
       servers [port 80 nhi_range [from 0:1:2(0) to 0:1:5(0)]]
       servers [port 80 nhi_range [from 1:1:2(0) to 1:1:5(0)]]
       servers [port 80 nhi_range [from 2:1:2(0) to 2:1:5(0)]]
       servers [port 80 nhi_range [from 3:1:2(0) to 3:1:5(0)]]
       servers [port 80 nhi_range [from 4:1:2(0) to 4:1:5(0)]]
       servers [port 80 nhi_range [from 5:1:2(0) to 5:1:5(0)]]
       servers [port 80 nhi_range [from 6:1:2(0) to 6:1:5(0)]]
       servers [port 80 nhi_range [from 7:1:2(0) to 7:1:5(0)]]
       servers [port 80 nhi_range [from 8:1:2(0) to 8:1:5(0)]]
       servers [port 80 nhi_range [from 9:1:2(0) to 9:1:5(0)]]
       servers [port 80 nhi_range [from 10:1:2(0) to 10:1:5(0)]]
       servers [port 80 nhi_range [from 11:1:2(0) to 11:1:5(0)]]
       servers [port 80 nhi_range [from 12:1:2(0) to 12:1:5(0)]]
       servers [port 80 nhi_range [from 13:1:2(0) to 13:1:5(0)]]
       servers [port 80 nhi_range [from 14:1:2(0) to 14:1:5(0)]]
       servers [port 80 nhi_range [from 15:1:2(0) to 15:1:5(0)]]
       servers [port 80 nhi_range [from 16:1:2(0) to 16:1:5(0)]]
       servers [port 80 nhi_range [from 17:1:2(0) to 17:1:5(0)]]
       servers [port 80 nhi_range [from 18:1:2(0) to 18:1:5(0)]]
       servers [port 80 nhi_range [from 19:1:2(0) to 19:1:5(0)]]
       servers [port 80 nhi_range [from 20:1:2(0) to 20:1:5(0)]]
       servers [port 80 nhi_range [from 21:1:2(0) to 21:1:5(0)]]
       servers [port 80 nhi_range [from 22:1:2(0) to 22:1:5(0)]]
       servers [port 80 nhi_range [from 23:1:2(0) to 23:1:5(0)]]
       servers [port 80 nhi_range [from 24:1:2(0) to 24:1:5(0)]]
     ]

]