The source tree contains some ready-to-use configuration files to help you build any of the different types of s. This section contains locations and descriptions of these files. All of the configurations specify a protocol stack that includes ETH, ARP, VNET, IP, ICMP, TCP, and the tcptest program.
A user_level will usually be configured to use the Unix socket
facility to send and receive from the network (see
Section ). Example graph.comp and ROM files
for building and running such a kernel are found in
/usr/xkernel/user_level/build/Template/example1/.
Note that in this graph.comp file, the lowest protocol in the
protocol stack is the SIMETH driver. Refer to
Section for an explanation of the ROM file's
simeth and arp options.
The NIT packet filter is a SunOS 4.x facility that provides a means of directly accessing the network from user space. Typically, root privilege is required to use NIT.
Directory /usr/xkernel/user_level/build/Template/example2 contains example configuration files for building and running such a kernel. The graph.comp file specifies two protocol tables: the default prottbl.nonstd, and the prottbl.local file found in this directory. File prottbl.nonstd is included so that all protocols (most importantly, IP) are assigned nonstandard protocol numbers; this prevents messages designated for the from being acted upon by the machine's native protocol stack, and vice versa.
The nit option in the ROM file is used to control NIT's packet filtering capabilities. The option in the example ROM instructs NIT not to deliver any normal IP packets (identified by value x0800) to higher layers in the protocol stack, thus allowing the to process only relevant packets (i.e., with value x3900, the ``fake'' IP number assigned in prottbl.nonstd). Note that when NIT ``drops'' a packet, only a copy is discarded, not the packet itself. If an IP packet arrives belonging to a Unix socket connection on the machine, it will be received normally by the OS kernel, despite the actions of NIT.
The other entries in the ROM file are used by the ARP protocol to resolve IP addresses to hardware addresses. The arp entries contain the IP and Ethernet addresses for the hosts on which the will be run.
Directory /usr/xkernel/stand_alone/build/Template/scout contains example files for constructing a standalone for the DEC Alpha. All of the files in this directory are necessary to build a standalone , and must be copied to the build directory.
One major difference between the standalone and the others concerns the protocol table file. During the standalone build phase, the protocol table file is converted to a C file, compiled, and linked into the kernel. One ramification is that a change in the protocol table file requires the standalone to be rebuilt. The prottbl entry in graph.comp is just a placeholder to remind you of this fact, and has no other meaning.
The Alpha ethernet driver is named LANCE, and is configured at the bottom of the protocol stack in graph.comp. In the ROM file, the arp entries match IP to ethernet addresses for some of the University of Arizona's hosts, and the dns entries match host names to IP addresses.
Directory /usr/xkernel/simulator/build/Template/example contains the configuration files needed to build and run the simulator. The graph.comp file is the only one needed to compile the simulator; the others must be in the working directory at runtime.
The files residing in the example directory configure a simulated network consisting of two Ethernets connected by a point-to-point link. Each Ethernet has two hosts, for a total of four. One host on each Ethernet runs the traffic protocol to simulate background traffic from TCP connections. The two other hosts run megtest, which uses TCP to stream one megabyte of data from one host to the other. Three flavors of TCP are configured into the simulator: rtcp (TCP Reno), ttcp (TCP Tahoe), and vtcp (TCP Vegas). Any of these TCPs can be run on the traffic and megtest hosts.
The simulator treats the graph.comp file differently than the user_level and standalone s do. The simulator does not set up its protocol graph using the graph.comp; it only uses it to decide what protocols it must include in the executable. At runtime, the simulator creates the protocol graph using the xsim.data file. Note that in the example graph.comp file, megtest is configured over TCP Reno, but the xsim.data file runs it over TCP Vegas.
There is only one ROM file, and this file contains information for all of the hosts in the simulation. The example ROM file specifies the gateway to which a host will send when its IP datagram is addressed to a machine residing on another network. Note that the ROM entries begin first with the name of the protocol ( ip) and then the name of the host which uses that entry (e.g., h1n0 -- host 1 on network 0).
Most of the difficulting in configuring the simulator is how to specify the network you want to simulate. This specification is given in the file xsim.data, which is described elsewhere [].