The following example illustrates most of the elements found in a typical tcng configuration:
#include "fields.tc"
#include "ports.tc"
dev "eth0" {
egress {
// classification
class (<$high>)
if tcp_dport == PORT_HTTP;
class (<$low>)
if 1;
// queuing
prio {
$high = class (1) {
fifo (limit 20kB);
}
$low = class (2) {
fifo (limit 100kB);
}
}
}
}
The first two lines include files with definitions for header fields
and port numbers. For details, see section
.
The dev" and \verb"egress lines determine what is being configured,
i.e. the egress (outbound) side of the network interface ``eth0''.
The configuration consists of two parts: the classification and the setup of the queuing system. In this example, we use a priority scheduler with two classes for the priorities ``high'' and ``low''.
Packets with TCP destination port 80 (HTTP) are sent to the high
priority class, while all other packets (if 1;) are sent to the
low priority class. Note that it is generally a good idea to finish a
classifier with a selection rule that is always true.
The queuing part defines the queuing discipline for static priorities, with the two classes. Inside the high-priority class, there is another queuing discipline - a simple FIFO with a capacity of 20 kilobytes. Likewise, the low-priority class contains a FIFO with 100 kB.