7.5.5.1 JoBS objects

set q [new Queue/JoBS]
This creates an instance of the JoBS queue.

$q init-rdcs k1 k2 k3 k4
This assigns the RDCs for the four JoBS classes. For instance, using a value of 4 for k2 means that Class-3 delays will be roughly equal to four times Class-2 delays. A value of -1 indicates that the class is not concerned by RDCs.

Important Note: Since RDCs bound two classes, one would expect only three parameters to be passed (k1, k2, and k3, since k4 theoretically binds Classes 4 and 5, and Class 5 does not exist). However, in this prototype implementation, it is imperative to specify a value different from 0 and -1 to k4 if Class 4 is to be concerned by RDCs.

Examples: $q init-rdcs -1 2 1 -1 specifies that classes 2 and 3 are bound by a delay differentiation factor of 2, $q init-rdcs 4 4 4 4 specifies that all classes are bound by a delay differentiation factor of 4 and is equivalent to $q init-rdcs 4 4 4 1, since the last coefficient is only used to specify that Class 4 is to be bound by proportional differentiation.

$q init-rlcs k'1 k'2 k'3 k'4
This assigns the RLCs for the four JoBS classes. For instance, using a value of 3 for k1 means that Class-2 loss rates will be roughly equal to four times Class-2 loss rates. A value of -1 indicates that the class is not concerned by RLCs. As with RDCs, each RLC binds two classes, thus, one would expect only three parameters to be passed (k'1, k'2, and k'3, since k'4 theoretically bounds Classes 4 and 5, and Class 5 does not exist). As explained above, it is imperative to specify a value different from 0 and -1 to k'4 if Class 4 is to be concerned by RLCs.

$q init-alcs L1 L2 L3 L4
This assigns the absolute loss guarantees (ALCs) to all four classes. L1 to L4 are given in fraction of 1. For instance, setting L1 to 0.05 means that Class-1 loss rate will be guarantees to be less than 5%. A value of -1 indicates that the corresponding class is not subject to an ALC.

$q init-adcs D1 D2 D3 D4
This assigns the absolute loss guarantees (ADCs) to all four classes. D1 to D4 are given in milliseconds. A value of -1 indicates that the corresponding class is not subject to an ADC.

$q trace-file filename
This specifies the trace file for all per-hop metrics. JoBS uses an internal module to trace loss and delays, service rates, and per-class queue lengths in packets. If filename is set to null, no trace will be provided.

$q link [link-object link]
This command is required to bind a link to a JoBS queue. Note that JoBS needs to know the capacity of the link. Thus, this command has to be issued before the simulation is started.

$q sampling-period sampling-interval
This command specifies the sampling interval (in packets) at which the service rate adjustments for proportional differentiation will be performed. The default is a sampling interval of 1 packet, meaning that the rate allocation is reevaluated upon each packet arrival. Larger sampling intervals speed up the simulations, but typically result in poorer proportional differentiation.

$q id num_id
This command affects a numerical ID to the JoBS queue.

$q initialize
This command is required, and should be run after all configuration operations have been performed. This command will perform the final checks and configuration of the JoBS queue.

$q copyright-info
Displays authors and copyright information.

A simple example script (with nam output), fully annotated and commented can be found in ns/tcl/ex/jobs-lossdel.tcl. A more realistic example of a simulation with JoBS queues can be found in ns/tcl/ex/jobs-cn2002.tcl. This script is very similar to what was used in a simulation presented in [21]. Associated tracefiles and gnuplot scripts for visualization (in case you favor gnuplot over xgraph can be found in ns/tcl/ex/jobs-lossdel, and ns/tcl/ex/jobs-cn2002.

Tom Henderson 2011-11-05