next up previous contents
Next: The host Entry Up: File xsim.data Specification Previous: The net Entry

The router Entry

 

A router entry indicates a type of router, gives its routing table, and sets the number of router buffers. Routers can output several different kinds of trace information, and the type and amount of tracing is specified here too. The format of the entry is:

router <type> <name>;
  rtable = <destination> <next hop>, <destination> <next hop>,... ;
  args = <arg>, <arg>, ... ;

The router line specifies the type of network. Two types of routers are supported at present: FCFS and RED. The router's name must match that used in the net entry.

The rtable line specifies the routing table. The

destination is the network portion of a packet's IP address and the next hop is where the router should send a packet with that network destination. If the next hop has no host address, then it is assumed that the router is directly connected to the destination network and it should send the packet to the final destination host. Note that the entries specified on the rtable line are scanned in order by the simulator. In other words, if multiple

next hops are present for a particular destination, the router sends the packet to the first one listed. This fact becomes important when using shortcuts to set up a routing table, as described below.

The simulator interprets a few IP addresses in a nonstandard way. This is done to make it easier to configure a large internetwork. If IP addresses are chosen so that networks with similar IP addresses are near each other in an internetwork, then routing tables can be specified quickly and easily by using the special addresses as ``destinations'' in the routing table. Given a packet with destination IP address of the form a.b.c.d, the following IP addresses have special meaning when used in the destination field:

The c in all of the above relations refers to the third component in the packet's destination address, a.b.c.d. Clearly, these special addresses are most useful if all networks in a simulation are uniquely identified by their c components.

For example, consider the following entry in a routing table:

    router FCFS r1;
      rtable = 3.1.5.0 192.1.10.100, 0.0.0.0 192.1.20.100;

Packets with IP destination address of the form a.b.c.d will be routed to 192.1.10.100 if . Therefore, a packet destined to 192.12.3.79 will be sent there, but 192.12.6.3 will not. The latter packet falls through to the last entry, which routes that packet to 192.1.20.100.

The args line of the router entry contains parameters for the router. These parameters set the number of router buffers and select trace options. Parameters for the FCFS router are listed in Section 3.4.1. A syntactic point to be aware of is that no spaces should be included anywhere between the argument and its value; e.g., buf=30.

First Come First Serve ( FCFS)

 

A FCFS router queues and forwards packets in the order in which they arrive. Each output port of the router has a queue associated with it. These queues are of limited size, and packets routed to an output port while its queue is full are dropped by the router.

The following arguments can be used with the router:

buf=<integer>

Sets the number of buffers in the router's queue. The router will be able to queue up to this number of messages; any additional messages will be dropped. The default is 0, so this parameter must be specified.

shortTrace=<integer>[:<integer>]

Specifies the lowest level of trace detail, mainly information about losses. The integer arguments specify the quantity of resources dedicated to saving the trace information. The first integer argument specifies the size, in trace entries (about 8 bytes each), of the circular buffer used to hold trace information in memory. If the optional :<integer> portion of the argument is not specified, this number also represents the maximum size of the trace file. Thus, an argument of 10000 specifies a buffer size of 10,000 entries, and the trace file will contain no more than this number of entries. If the second integer argument is given, it specifies the maximum number of memory buffers that the disk file may contain. When this argument is specified, then once the circular buffer is full, the buffer is dumped to the trace file before its traces are overwritten. Thus, 10000:3 specifies a buffer size of 10,000 entries and a trace file of up to 30,000 entries. Be aware that the trace file also operates as a circular buffer, and if more than the maximum number of trace entries are generated, the earliest will be overwritten. In general, it is recommended that the file be bigger than the internal trace buffer. Also note that niether for the vaules for the variable can exceed 320000. Therefore the largest trace buffer you can have is 320000:320000 which means there will be a maximum of 320000 entries of 320000 length buffers in the trace file.

pktTrace=<integer>[:<integer>]

Specifies a medium level of trace detail, mainly information is saved for each packet routed (e.g., packet length, IP addresses, TCP ports). See shorttrace for information on the meaning of the integer arguments. Also see pktTracePortIn and pktTracePortOut.

trace=<integer>[:<integer>]

Specifes the highest level of trace detail. This option traces everything a router does, and is used mostly for debugging. Since trace implies all of the tracing of pktTrace, the options used to identify interfaces to be traced with pktTrace (e.g., pktTracePortIn) can also be specified with trace. See shorttrace for information on the integer arguments.

pktTracePortIn=<IP address>

If pktTrace is specified, save trace information for packets arriving on the router interface specified by <IP address>. If you wish to trace multiple ports, include multiple

pktTracePortIn options, one for each port.

pktTracePortOut=<IP address>

If pktTrace is specified, save trace information for packets leaving by the router interface specified by <IP address>. If you wish to trace multiple ports, include multiple

pktTracePortOut options, one for each port.

traceIn=<IP address>

In conjunction with any trace function (e.g., shorttrace,

pktTrace, or trace), traces the average number of bytes/second arriving on the specified interface. If you wish to trace multiple ports, include multiple traceIn options, one for each port.

traceOut=<IP address>

In conjunction with any trace function (i.e., shorttrace,

pktTrace, or trace), traces the average number of bytes/second sent on the specified interface. If you wish to trace multiple ports, include multiple traceOut options, one for each port.

traceInOut=<IP address>

In conjunction with any trace function (i.e., shorttrace,

pktTrace, or trace), traces the average number of bytes/second arriving on any interface, but directed to the specified interface. Note that this number may be higher than the traceOut for the same interface, since more packets may be arriving than the bandwidth of the outgoing link can accommodate. If you wish to trace multiple ports, include multiple traceInOut options, one for each port.

pktTraceBeginTime=<real>[unit]
pktTraceEndTime=<real>[unit]

Denote an interval during which to save packet traces. Frequently, packet traces are not of interest until traffic connections have stabilized, so the interval can exclude the first few seconds of a simulation. The optional unit can be s (seconds),

ms (milliseconds), or us (microseconds). The default is milliseconds.

timeInc=<integer>[unit]

Specifies a time period used by some of the trace functions. Functions traceIn, traceInOut, traceOut, and traceQueue compute an average and a minimum/maximum over this time period, at the end of which a trace entry is saved and a new interval begun. The default value is 100ms. The optional unit can be us (microseconds), ms (milliseconds), or s (seconds). The default unit is microseconds. Multiple timeInc options can be specified per line, and the ordering of arguments is important. When a timeInc is encountered, all appropriate trace functions following this timeInc will use its time period, until another timeInc occurs. This allows a different tracing granularity to be used for separate network interfaces.

traceQueue=<IP address>

In conjunction with any trace function (i.e., shorttrace,

pktTrace, or trace), traces the minimum, maximum, and average number of packets queued to be sent on the specified interface. If you wish to trace multiple ports, include multiple traceQueue options, one for each port.

traceQueueLen=<IP address>

In conjunction with any trace function (i.e., shortTrace,

pktTrace, or trace), this option traces the minimum, maximum, and average number of bytes queued to be sent on the specified interface. This option works like traceQueue, except that the number of bytes in the queue are traced, rather than the number of packets.

Random Early Detection ( RED)

  A RED router queues and forwards packets in the order in which they arrive, but also implements the RED algorithm to control the queue sizes in the routers. Each output port of the router has a queue associated with it. These queues are of limited size, and packets routed to an output port while its queue is full or if the RED algorithm decides packets are dropped by the router. For more information on the RED algorithm see [FJ93].

The following arguments can be used with the router. They have the same meanings as specified above for the FCFS router.

buf=<integer>
shortTrace=<integer>[:<integer>]
pktTrace=<integer>[:<integer>]
trace=<integer>[:<integer>]
pktTracePortIn=<IP address>
pktTracePortOut=<IP address>
traceIn=<IP address>
traceOut=<IP address>
traceInOut=<IP address>
pktTraceBeginTime=<real>[unit]
pktTraceEndTime=<real>[unit]
timeInc=<integer>[unit]
traceQueue=<IP address>
traceQueueLen=<IP address>
Other options specific to the RED router which speicify RED parameters include

minThresh=<integer>
This sets the size of the queue for the minimum threshold for the RED algorithm. IF no value is specified this defaults to zero.

maxThresh=<integer>
This sets the size of the queue for the maximum threshold for the

RED algorithm. If no value is specified this defaults to the number of router buffers - 10.

qWeight=<real>

This specifies the queue weight for the average queue calucation for the RED algorithm. If now value is specified the default is 0.008



next up previous contents
Next: The host Entry Up: File xsim.data Specification Previous: The net Entry



Larry Peterson
Tue Jul 1 18:43:36 MST 1997