# -*- tcl -*- # # $Id: insane.conf-bottleneck,v 1.3 1996-11-02 11:28:53-08 bmah Exp $ # based on: # $ID: insane.conf-xunet,v 1.9.2.1 1996-04-24 11:11:09-07 bmah Exp $ # insane.conf-bottleneck (bmah@CS.Berkeley.EDU) # # Copyright (c) 1996 The Regents of the University of California # All Rights Reserved # Created by Bruce A. Mah # Department of Electrical Engineering and Computer Sciences, # Computer Science Division # # INSANE configuration, based on XUNET configuration, but attempting # to increase utilization across a single bottleneck link. Six # routers/LANs, but only two switches. # # Configuration constants if {[info exists ConfSchedType]} { set ConfRcspMode $ConfSchedType set ConfHostRcspMode $ConfSchedType } else { set ConfRcspMode work-conserving set ConfHostRcspMode work-conserving } set ConfRcspExcess 48 set ConfHostRcspExcess 48 set atmdMaxCache 300 set atmdMaxIdle 10 set bwAtm 1536000 set bwLan 10000000 set gapNntp 0.01 set gapSmtp 0.01 set interarrivalAudioStart [ expr 10 * 60.0 ] set interarrivalFtpStart 15.0 set interarrivalHttpStart 5.0 set interarrivalNntpStart [ expr 3.75 * 60.0 ] set interarrivalSmtpStart 4.0 set interarrivalTelnetStart 10.0 set interarrivalVideoStart [ expr 10 * 60.0 ] set latencyAtmLow 0.00001 set latencyAtmMid 0.005 set latencyAtmHigh 0.015 set latencyLan 0.001 set lifetimeAudio [ expr 30 * 60.0 ] set lifetimeInsane 4000.0 set lifetimeVideo [ expr 30 * 60.0 ] set maxVcid 8192 set numClients 200 set numServers 2 set portFtpCtl 21 set portHttp 80 set portNntp 119 set portSmtp 25 set portTelnet 23 set thresholdHttp 14400.0 set timeStartWorkload 0.1 # # Create sites (LANs and hosts) # Site ATT $bwLan $latencyLan $numClients $numServers 192.20.225 Site Berkeley $bwLan $latencyLan $numClients $numServers 128.32.131 Site Rutgers $bwLan $latencyLan $numClients $numServers 128.6.37 Site Sandia $bwLan $latencyLan $numClients $numServers 146.246.250 Site UIUC $bwLan $latencyLan $numClients $numServers 128.74.240 Site Wisc $bwLan $latencyLan $numClients $numServers 128.105.53 set AllSites "ATT Berkeley Rutgers Sandia UIUC Wisc" set AllHosts "${ATT.serverNames} ${ATT.clientNames} ATT.router0 ${Berkeley.serverNames} ${Berkeley.clientNames} Berkeley.router0 ${Rutgers.serverNames} ${Rutgers.clientNames} Rutgers.router0 ${Sandia.serverNames} ${Sandia.clientNames} Sandia.router0 ${UIUC.serverNames} ${UIUC.clientNames} UIUC.router0 ${Wisc.serverNames} ${Wisc.clientNames} Wisc.router0" # # Create backbone network, using switches that can handle # up to 1024 VCs per port. Switches do RCSP scheduling with 4 levels. # First create all the switches.... # SwitchRcspN Backbone.Oak.sw 4 $maxVcid $bwAtm 4 SwitchRcspN Backbone.Nwk.sw 4 $maxVcid $bwAtm 4 # # Create per-site ATM interfaces and attach to the routers. Host # ATM addresses are assigned here, based on real XUNET IP addresses # Each INSANE router has an IP address equal to that of the corresponding # XUNET interface, and an ATM address equal to the host number within # the subnet (XUNET ATM addresses are strings). # # Any changes here need to be reflected in the ARP table settings. # atmRcspAdd ATT.router0 $maxVcid $bwAtm 4 1 0 192.128.57.1 255.255.255.0 # ATM address 2 is the second ATT router atmRcspAdd Berkeley.router0 $maxVcid $bwAtm 4 3 0 192.128.57.3 255.255.255.0 atmRcspAdd Wisc.router0 $maxVcid $bwAtm 4 4 0 192.128.57.4 255.255.255.0 atmRcspAdd UIUC.router0 $maxVcid $bwAtm 4 5 0 192.128.57.5 255.255.255.0 atmRcspAdd Sandia.router0 $maxVcid $bwAtm 4 6 0 192.128.57.6 255.255.255.0 # ATM address 7 is the LLNL router atmRcspAdd Rutgers.router0 $maxVcid $bwAtm 4 8 0 192.128.57.8 255.255.255.0 # # Create all ATM links. We need a network map for this. # connect ATT.router0.atm0 2 Backbone.Nwk.sw 3 $latencyAtmLow connect Berkeley.router0.atm0 2 Backbone.Oak.sw 3 $latencyAtmLow connect Wisc.router0.atm0 2 Backbone.Nwk.sw 4 $latencyAtmLow connect UIUC.router0.atm0 2 Backbone.Oak.sw 4 $latencyAtmLow connect Sandia.router0.atm0 2 Backbone.Oak.sw 1 $latencyAtmLow connect Rutgers.router0.atm0 2 Backbone.Nwk.sw 1 $latencyAtmLow connect Backbone.Oak.sw 2 Backbone.Nwk.sw 2 [expr {$latencyAtmHigh * 2}] # # For each router: # # o Set ATM ARP tables. # o Set maximum cache and timeout values. # foreach site {ATT Berkeley Wisc UIUC Sandia Rutgers} { foreach address {1 3 4 5 6 8} { $site.router0.atmd0 atmarp 192.128.57.$address $address } $site.router0.atmd0 maxidle $atmdMaxIdle $site.router0.atmd0 maxcache $atmdMaxCache } # # Set up ATM routing in each switch. It'd be nice to have a program # that computes this automatically, but for a nine-switch network # (that happens to be a tree) we can probably deal. # proc installRoutes {sw routes} { foreach route $routes { $sw.sig route [lindex $route 0] [lindex $route 1] } } installRoutes Backbone.Oak.sw {{1 2} {3 3} {4 2} {5 4} {6 1} {8 2}} installRoutes Backbone.Nwk.sw {{1 3} {3 2} {4 4} {5 2} {6 2} {8 1}} # # Set site-to-site IP routing. It'd be great if the routers could # automatically discover each other, but this isn't too much worse # than writing the gated configuration file for each of the XUNET # sites. # foreach site {ATT Berkeley Wisc UIUC Sandia Rutgers} { foreach route {{192.20.225.0 255.255.255.0 192.128.57.1} \ {128.32.131.0 255.255.255.0 192.128.57.3} \ {128.105.53.0 255.255.255.0 192.128.57.4} \ {128.74.240.0 255.255.255.0 192.128.57.5} \ {146.246.250.0 255.255.255.0 192.128.57.6} \ {128.6.37.0 255.255.255.0 192.128.57.8}} { # Query the routing table on the router to see if we # already have a route installed for a subnet. If we # do, then that was the local subnet, and we *don't* # want to install a backbone route for it. if {[$site.router0.ip route query [lindex $route 0]] == ""} { # Cute little hack here. The $route value is actually # a tuple forming three parameters of the routing command. # So we compose a command within quotes and then have eval it. eval "$site.router0.ip route add $route G" } } } # # Build up lists of machine targets # # List of WWW servers. We do a Zipf's Law distribution, with # the server list ordered as follows: We take all the sites and # order them in some arbitrary order of popularity. We then take the # first server of each site, in popularity order, then the second # server of each site, and so on. It's kind of like inverting a # matrix from row major to column major. # set workServers [ list ${ATT.serverAddresses} ${Berkeley.serverAddresses} ${Rutgers.serverAddresses} ${Sandia.serverAddresses} ${UIUC.serverAddresses} ${Wisc.serverAddresses} ] set HttpServers {} set depth 0 while {1} { set done 1; for {set i 0} {$i < [llength $workServers]} {incr i} { if { $depth < [llength [lindex $workServers $i]] } { lappend HttpServers [lindex [lindex $workServers $i] $depth] set done 0; } } if {$done == 1} { break; } incr depth } # List of FTP servers. For right now, we use the same servers, ranked # in the same popularity as the WWW servers. This may change. set FtpServers $HttpServers # List of SMTP mail servers. The same list of servers as for FTP and HTTP, # but unordered. set SmtpServers [ concat ${ATT.serverAddresses} ${Berkeley.serverAddresses} ${Rutgers.serverAddresses} ${Sandia.serverAddresses} ${UIUC.serverAddresses} ${Wisc.serverAddresses} ] # List of telnet servers. It's an unordered list of all workstations and # servers...we assume that users are equally likely to pick a telnet # destination among all the end machines on the network. set TelnetServers "${ATT.serverAddresses} ${ATT.clientAddresses} ${Berkeley.serverAddresses} ${Berkeley.clientAddresses} ${Rutgers.serverAddresses} ${Rutgers.clientAddresses} ${Sandia.serverAddresses} ${Sandia.clientAddresses} ${UIUC.serverAddresses} ${UIUC.clientAddresses} ${Wisc.serverAddresses} ${Wisc.clientAddresses}" # List of audio/video targets. An unordered list of all workstations, # but not servers...people don't usually sit in front of servers (well, # normal people don't). set AvServers "${ATT.clientAddresses} ${Berkeley.clientAddresses} ${Rutgers.clientAddresses} ${Sandia.clientAddresses} ${UIUC.clientAddresses} ${Wisc.clientAddresses}" set AvServerNames "${ATT.clientNames} ${Berkeley.clientNames} ${Rutgers.clientNames} ${Sandia.clientNames} ${UIUC.clientNames} ${Wisc.clientNames}" # # Define workload helper objects. # set MinAvPort 32768 set MaxAvPort 65536 set AvPort $MinAvPort set delta 0.00001 proc LaunchTelnet {clientNames servers} { global time numTelnet delta portTelnet # Select client from the clients in our domain and server from # the possible telnet servers set client [lindex $clientNames [expr int([uniform] * [llength $clientNames])]] set server [lindex $servers [expr int([uniform] * [llength $servers])]] # Launch the client, using the standard telnet port and 32 timestamp # slots puts "anonymous \[LaunchTelnet\] $client.telnet$numTelnet to $server at time $time" TelnetClient $client.telnet$numTelnet [expr $time+$delta] $client.tcp $server $portTelnet 32 incr numTelnet } set numTelnet 0 proc LaunchFtp {clientNames servers} { global time numFtp delta portFtpCtl # Select client from the clients in our domain and server from # the possible telnet servers set client [lindex $clientNames [expr int([uniform] * [llength $clientNames])]] set server [lindex $servers [expr [zipf [llength $servers]] -1]] # Launch the client, using the standard ftp port (21) puts "anonymous \[LaunchFtp\] $client.ftp$numFtp to $server at time $time" FtpClient $client.ftp$numFtp [expr $time+$delta] $client.tcp $server $portFtpCtl # $client.ftp$numFtp debug 3 incr numFtp } set numFtp 0 proc LaunchHttp {clientNamesArray servers} { global time numHttp delta thresholdHttp portHttp upvar $clientNamesArray clientNames # If there are potential HTTP client hosts, select one at random # and launch an HTTP client on it. if {[llength $clientNames] > 0} { # Select client from the clients in our domain. Let the # client figure out what servers it's going to call. Once a client # has been launched, remove the client host from the list of # potential hosts for this domain (we assume that each host only # has at most one HTTP client and that HTTP client processes live # forever). set clientIndex [expr int([uniform] * [llength $clientNames])] # This is a hack to prevent what we believe to be a roundoff error # that can occasionally cause $clientIndex == [llength $clientNames]. while {$clientIndex >= [llength $clientNames]} { incr clientIndex -1 } set client [lindex $clientNames $clientIndex] set clientNames [ lreplace $clientNames $clientIndex $clientIndex ] # Launch the client, using the standard HTTP port (80). puts "anonymous \[LaunchHttp\] $client.http$numHttp with servers [list $servers] at time $time" HttpClient $client.http$numHttp [expr $time+$delta] $client.tcp $servers $portHttp $thresholdHttp $client.http$numHttp debug 1 incr numHttp } } set numHttp 0 proc LaunchSmtp {clientNames servers} { global time numSmtp delta gapSmtp portSmtp # Select client from the clients in our domain and server from # the possible SMTP servers set client [lindex $clientNames [expr int([uniform] * [llength $clientNames])]] set server [lindex $servers [expr int([uniform] * [llength $servers])]] # Launch the client, using the standard SMTP port puts "anonymous \[LaunchSmtp\] $client.smtp$numSmtp to $server at time $time" SmtpClient $client.smtp$numSmtp [expr $time+$delta] $client.tcp $server $portSmtp $gapSmtp incr numSmtp } set numSmtp 0 proc LaunchNntp {clientName server} { global time numNntp delta gapNntp portNntp # Launch (fork?) a server, using the standard NNTP port. puts "anonymous \[LaunchNntp\] $clientName.nntp$numNntp to $server at time $time" NntpServer $clientName.nntp$numNntp [expr $time+$delta] $clientName.tcp $server $portNntp $gapNntp $clientName.nntp$numNntp debug 2 incr numNntp } set numNntp 0 proc LaunchAudio {clientNames servers serverNames} { global time numAudio delta MinAvPort MaxAvPort AvPort lifetimeAudio # Select client from the clients in our domain and server from # all possible A/V servers set client [lindex $clientNames [expr int([uniform] * [llength $clientNames])]] set sindex [expr int([uniform] * [llength $servers])] set server [lindex $servers $sindex] set serverName [lindex $serverNames $sindex] # Set upper bound on propagation delay (to establish sink ending time) set propdelay 5.0 # Launch both client and server. # # Client sends 328-byte packets, 21 per second (roughly analogous to # pcm2 encoding of vat). puts "anonymous \[LaunchAudio\] $client.asource$numAudio to $server at time $time" AudioSource $client.asource$numAudio [expr $time+$delta] $client.udp $server $AvPort 328 0.045 $client.asource$numAudio lifetime $lifetimeAudio puts "anonymous \[LaunchAudio\] $serverName.asink$numAudio on $server at time $time" AudioSink $serverName.asink$numAudio [expr $time+$delta] $serverName.udp $AvPort $serverName.asink$numAudio lifetime [expr $lifetimeAudio + $propdelay] incr numAudio incr AvPort if {$AvPort >= $MaxAvPort} { set AvPort $MinAvPort } } set numAudio 0 proc LaunchVideo {clientNames servers serverNames} { global time numVideo delta MinAvPort MaxAvPort AvPort lifetimeVideo # Select client from the clients in our domain and server from # all possible A/V servers set client [lindex $clientNames [expr int([uniform] * [llength $clientNames])]] set sindex [expr int([uniform] * [llength $servers])] set server [lindex $servers $sindex] set serverName [lindex $serverNames $sindex] # Set upper bound on propagation delay (to establish sink ending time) set propdelay 5.0 # Launch both client and server. # # Client sends with target bitrate of 128 Kbps, target framerate of # 8 fps puts "anonymous \[LaunchVideo\] $client.vsource$numVideo to $server at time $time" VideoSource2 $client.vsource$numVideo [expr $time+$delta] $client.udp $server $AvPort 131072 8 $client.vsource$numVideo lifetime $lifetimeVideo puts "anonymous \[LaunchVideo\] $serverName.vsink$numVideo on $server at time $time" VideoSink $serverName.vsink$numVideo [expr $time+$delta] $serverName.udp $AvPort $serverName.vsink$numVideo lifetime [expr $lifetimeVideo + $propdelay] incr numVideo incr AvPort if {$AvPort >= $MaxAvPort} { set AvPort $MinAvPort } } set numVideo 0 # # Berkeley traffic # set Berkeley.httpClientNames ${Berkeley.clientNames} PoissonProcess Berkeley.LaunchTelnet $timeStartWorkload $interarrivalTelnetStart {LaunchTelnet ${Berkeley.clientNames} ${TelnetServers}} PoissonProcess Berkeley.LaunchFtp $timeStartWorkload $interarrivalFtpStart {LaunchFtp ${Berkeley.clientNames} ${FtpServers}} PoissonProcess Berkeley.LaunchHttp $timeStartWorkload $interarrivalHttpStart {LaunchHttp Berkeley.httpClientNames ${HttpServers}} PoissonProcess Berkeley.LaunchSmtp $timeStartWorkload $interarrivalSmtpStart {LaunchSmtp ${Berkeley.serverNames} ${SmtpServers}} PoissonProcess Berkeley.LaunchAudio $timeStartWorkload $interarrivalAudioStart {LaunchAudio ${Berkeley.clientNames} ${AvServers} ${AvServerNames}} PoissonProcess Berkeley.LaunchVideo $timeStartWorkload $interarrivalVideoStart {LaunchVideo ${Berkeley.clientNames} ${AvServers} ${AvServerNames}} PeriodicProcess Berkeley.LaunchNntp0 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Berkeley.server1 192.20.225.17} PeriodicProcess Berkeley.LaunchNntp2 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Berkeley.server1 146.246.250.17} PeriodicProcess Berkeley.LaunchNntp1 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Berkeley.server1 128.74.240.17} # # ATT traffic # set ATT.httpClientNames ${ATT.clientNames} PoissonProcess ATT.LaunchTelnet $timeStartWorkload $interarrivalTelnetStart {LaunchTelnet ${ATT.clientNames} ${TelnetServers}} PoissonProcess ATT.LaunchFtp $timeStartWorkload $interarrivalFtpStart {LaunchFtp ${ATT.clientNames} ${FtpServers}} PoissonProcess ATT.LaunchHttp $timeStartWorkload $interarrivalHttpStart {LaunchHttp ATT.httpClientNames ${HttpServers}} PoissonProcess ATT.LaunchSmtp $timeStartWorkload $interarrivalSmtpStart {LaunchSmtp ${ATT.serverNames} ${SmtpServers}} PoissonProcess ATT.LaunchAudio $timeStartWorkload $interarrivalAudioStart {LaunchAudio ${ATT.clientNames} ${AvServers} ${AvServerNames}} PoissonProcess ATT.LaunchVideo $timeStartWorkload $interarrivalVideoStart {LaunchVideo ${ATT.clientNames} ${AvServers} ${AvServerNames}} PeriodicProcess ATT.LaunchNntp0 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp ATT.server1 128.32.131.17} PeriodicProcess ATT.LaunchNntp1 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp ATT.server1 128.105.53.17} PeriodicProcess ATT.LaunchNntp2 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp ATT.server1 128.6.37.17} # # Wisc traffic # set Wisc.httpClientNames ${Wisc.clientNames} PoissonProcess Wisc.LaunchTelnet $timeStartWorkload $interarrivalTelnetStart {LaunchTelnet ${Wisc.clientNames} ${TelnetServers}} PoissonProcess Wisc.LaunchFtp $timeStartWorkload $interarrivalFtpStart {LaunchFtp ${Wisc.clientNames} ${FtpServers}} PoissonProcess Wisc.LaunchHttp $timeStartWorkload $interarrivalHttpStart {LaunchHttp Wisc.httpClientNames ${HttpServers}} PoissonProcess Wisc.LaunchSmtp $timeStartWorkload $interarrivalSmtpStart {LaunchSmtp ${Wisc.serverNames} ${SmtpServers}} PoissonProcess Wisc.LaunchAudio $timeStartWorkload $interarrivalAudioStart {LaunchAudio ${Wisc.clientNames} ${AvServers} ${AvServerNames}} PoissonProcess Wisc.LaunchVideo $timeStartWorkload $interarrivalVideoStart {LaunchVideo ${Wisc.clientNames} ${AvServers} ${AvServerNames}} PeriodicProcess Wisc.LaunchNntp0 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Wisc.server1 128.74.240.17} PeriodicProcess Wisc.LaunchNntp1 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Wisc.server1 192.20.225.17} # # UIUC traffic # set UIUC.httpClientNames ${UIUC.clientNames} PoissonProcess UIUC.LaunchTelnet $timeStartWorkload $interarrivalTelnetStart {LaunchTelnet ${UIUC.clientNames} ${TelnetServers}} PoissonProcess UIUC.LaunchFtp $timeStartWorkload $interarrivalFtpStart {LaunchFtp ${UIUC.clientNames} ${FtpServers}} PoissonProcess UIUC.LaunchHttp $timeStartWorkload $interarrivalHttpStart {LaunchHttp UIUC.httpClientNames ${HttpServers}} PoissonProcess UIUC.LaunchSmtp $timeStartWorkload $interarrivalSmtpStart {LaunchSmtp ${UIUC.serverNames} ${SmtpServers}} PoissonProcess UIUC.LaunchAudio $timeStartWorkload $interarrivalAudioStart {LaunchAudio ${UIUC.clientNames} ${AvServers} ${AvServerNames}} PoissonProcess UIUC.LaunchVideo $timeStartWorkload $interarrivalVideoStart {LaunchVideo ${UIUC.clientNames} ${AvServers} ${AvServerNames}} PeriodicProcess UIUC.LaunchNntp0 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp UIUC.server1 128.105.53.17} PeriodicProcess UIUC.LaunchNntp1 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp UIUC.server1 128.32.131.17} # # Sandia traffic # set Sandia.httpClientNames ${Sandia.clientNames} PoissonProcess Sandia.LaunchTelnet $timeStartWorkload $interarrivalTelnetStart {LaunchTelnet ${Sandia.clientNames} ${TelnetServers}} PoissonProcess Sandia.LaunchFtp $timeStartWorkload $interarrivalFtpStart {LaunchFtp ${Sandia.clientNames} ${FtpServers}} PoissonProcess Sandia.LaunchHttp $timeStartWorkload $interarrivalHttpStart {LaunchHttp Sandia.httpClientNames ${HttpServers}} PoissonProcess Sandia.LaunchSmtp $timeStartWorkload $interarrivalSmtpStart {LaunchSmtp ${Sandia.serverNames} ${SmtpServers}} PoissonProcess Sandia.LaunchAudio $timeStartWorkload $interarrivalAudioStart {LaunchAudio ${Sandia.clientNames} ${AvServers} ${AvServerNames}} PoissonProcess Sandia.LaunchVideo $timeStartWorkload $interarrivalVideoStart {LaunchVideo ${Sandia.clientNames} ${AvServers} ${AvServerNames}} PeriodicProcess Sandia.LaunchNntp0 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Sandia.server1 128.6.37.17} PeriodicProcess Sandia.LaunchNntp1 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Sandia.server1 128.32.131.17} # # Rutgers traffic # set Rutgers.httpClientNames ${Rutgers.clientNames} PoissonProcess Rutgers.LaunchTelnet $timeStartWorkload $interarrivalTelnetStart {LaunchTelnet ${Rutgers.clientNames} ${TelnetServers}} PoissonProcess Rutgers.LaunchFtp $timeStartWorkload $interarrivalFtpStart {LaunchFtp ${Rutgers.clientNames} ${FtpServers}} PoissonProcess Rutgers.LaunchHttp $timeStartWorkload $interarrivalHttpStart {LaunchHttp Rutgers.httpClientNames ${HttpServers}} PoissonProcess Rutgers.LaunchSmtp $timeStartWorkload $interarrivalSmtpStart {LaunchSmtp ${Rutgers.serverNames} ${SmtpServers}} PoissonProcess Rutgers.LaunchAudio $timeStartWorkload $interarrivalAudioStart {LaunchAudio ${Rutgers.clientNames} ${AvServers} ${AvServerNames}} PoissonProcess Rutgers.LaunchVideo $timeStartWorkload $interarrivalVideoStart {LaunchVideo ${Rutgers.clientNames} ${AvServers} ${AvServerNames}} PeriodicProcess Rutgers.LaunchNntp0 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Rutgers.server1 146.246.250.17} PeriodicProcess Rutgers.LaunchNntp1 [expr $timeStartWorkload + ([uniform] * $interarrivalNntpStart)] $interarrivalNntpStart {LaunchNntp Rutgers.server1 192.20.225.17} # # Set extra debugging output (if any) # # Get statistics for ATM entrance points #foreach s $AllSites { # $s.router0.atm0.output2 statinterval 1.0 #} ATT.router0.atm0.output2 statinterval 1.0 Berkeley.router0.atm0.output2 statinterval 1.0 # Get statistics on backbone utilization Backbone.Oak.sw.output2 statinterval 1.0 Backbone.Nwk.sw.output2 statinterval 1.0 # Get statistics on LAN utilization #foreach s {ATT.lan.192.20.225 Berkeley.lan.128.32.131 Rutgers.lan.128.6.37 Sandia.lan.146.246.250 UIUC.lan.128.74.240 Wisc.lan.128.105.53} { # $s statinterval 1.0 #} ATT.lan.192.20.225 statinterval 1.0 Berkeley.lan.128.32.131 statinterval 1.0 # Signalling load on routers #foreach s $AllSites { # $s.router0.atm0.sighost statinterval 1.0 #} ATT.router0.atm0.sighost statinterval 1.0 Berkeley.router0.atm0.sighost statinterval 1.0 ATT.router0.atmd0 statinterval 1.0 Berkeley.router0.atmd0 statinterval 1.0 # # Set ending time and go # sim halt $lifetimeInsane