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