A simulated internet is constructed out of three kinds of building blocks: networks, routers, and hosts. The
xsim.data file describes all aspects of the simulated internet, including its topology, its link types and speeds, the buffer space available on its routers, and the protocol stacks running on its hosts. The following section presents an xsim.data file for a simple internetwork.
Our example internet contains two Ethernets and a 200KBps point-to-point link. A FCFS router attaches to each Ethernet, and the point-to-point link connects the routers. Two hosts, ``1'' and ``2'', are configured on each Ethernet, for a total of four hosts. When the simulator is executed, a 1MB file is transferred between the hosts named ``1''; the hosts named ``2'' conduct random tcplib transfers to provide the background traffic [CDJM91]. Figure 3 shows a picture of our example internet.
Figure 3: The internet to be simuated.
Here is the xsim.data file we've constructed to represent the pictured internet:
set ip = ip, ip vnet, vnet eth arp, arp eth, eth ethd, ethd sim; set buf = 50; set db = db.out; set delay = 10ms; set megTime = 30; set time = 90; set rbuf = 15; # # Define hosts # host h1n1; protocols = megtest rtcp, rtcp $ip; args = -c192.0.2.1 -buf=$buf -tcpTrace=60000 -db=$db -delay=$delay -megTime=$megTime; host h2n1; protocols = traffic rtcp, rtcp $ip; args = -hosts 1 192.0.2.2 -cit=30 -db=$db -trafficTime=$time -trafficTrace=60000 -ethdTraceOut -reset=10; host h1n2; protocols = megtest rtcp, rtcp $ip; args = -s; host h2n2; protocols = traffic rtcp, rtcp $ip; args = -s; # # Define routers # router FCFS r1; rtable = 192.0.1.0 192.0.1.0, 192.0.2.0 192.0.3.2; args = buf=$rbuf, shortTrace=10000, traceQueue=192.0.3.1, traceOut=192.0.3.1; router FCFS r2; rtable = 192.0.2.0 192.0.2.0, 192.0.1.0 192.0.3.1; args = buf=$rbuf, shortTrace=10000, traceIn=192.0.2.100, traceQueue=192.0.3.2; # # Define networks, connectivity # net ETH 192.0.1.0; connections = r1 192.0.1.100, h1n1 ethd 192.0.1.1, h2n1 ethd 192.0.1.2; args = collisions=off; net ETH 192.0.2.0; connections = r2 192.0.2.100, h1n2 ethd 192.0.2.1, h2n2 ethd 192.0.2.2; args = collisions=off; net PP 192.0.3.0; connections = r1 192.0.3.1, r2 192.0.3.2; args = rate=200KB, delay=10ms;
We now highlight certain aspects of this xsim.data file, and point out how parts of this file correspond to features of the internet of Figure 3. For more details on any of the items discussed, see Section 3.
The first lines of the example file contain set commands. The set command simply associates a variable with a string. Subsequent references to the variable, prefixed with a $ sign, are replaced by the associated string.
Next, we find a group of host entries. These entries define the configurations and behaviors of the four hosts shown in Figure 3. Following the keyword host in each entry is the host's name. The protocols line in each
host entry indicates the protocol stack on that host; those hosts with megtest at the top of their stack will stream the 1MB file, while those with traffic on the stack will conduct the random transfers. (The protocol stacks are not shown in Figure 3.) Finally, the args line contains arguments interpreted by the host's protocols. An argument of particular significance is the -c192.0.2.1 of host h1n1, which indicates that this host is a megtest client talking to a server at IP address 192.0.2.1; correspondingly, host h1n2 specifies the -s argument to indicate its willingness to accept a megtest connection from any client. The -hosts 1 192.0.2.2 argument of host h2n1 similarly indicates that this host is a traffic client, talking to a server at the given IP address.
Following the host specifications are entries to define the two routers. The keyword router is followed by the type of router (FCFS) and the router's name. The rtable line lists the routing table for the router. Referring to Figure 3 and the entry for router r1, we note that since the router connects to network 192.0.1.0, it forwards packets with that network destination directly to the appropriate host. However, it directs packets addressed to network 192.0.2.0 to the router at IP address 192.0.3.2. The final lines of a given router entry contain arguments used to configure that router.
Now consider the net entries that specify the two Ethernets and the point-to-point link. The first line lists the type of network (e.g., ETH) and its network IP address. The connections line lists all of the routers and hosts connected to the network, and assigns them their IP addresses. In the case of hosts, a driver instance--- ethd in the example---is also specified. The
args line sets various network-specific parameters, such as the 200KBps rate of the point-to-point link.
The next section documents all aspects of the xsim.data file in detail. Section 4 then presents a second, much larger, xsim.data file.