Creating IPQoS Configuration Files
for Web Servers

This section introduces the IPQoS configuration
file by showing how to create a configuration for a premium web server. The
section then shows how to configure a completely different level of service
in another configuration file for a server that hosts personal web sites.
Both servers are part of the network example that is shown in Figure 33–4.

The following configuration file defines
IPQoS activities for the Goldweb server. This server hosts
the web site for Goldco, the company that has purchased a premium SLA.

The following configuration
file defines IPQoS activities on Userweb. This server hosts
web sites for individuals with low-priced, or best-effort,
SLAs. This level of service guarantees the best service that can be delivered
to best-effort customers after the IPQoS system handles traffic from customers
with more expensive SLAs.

How to Create the IPQoS Configuration
File and Define Traffic Classes

You can create your first IPQoS configuration file in whatever directory
is easiest for you to maintain. The tasks in this chapter use the directory /var/ipqos as the location for IPQoS configuration files. The next
procedure builds the initial segment of the IPQoS configuration file that
is introduced in Example 34–1.

Note –

As you create the IPQoS configuration file, be very careful to
start and end each action statement and clause with curly
braces ({ }). For an example of the use of braces, see Example 34–1.

Log in to the premium web server,
and create a new IPQoS configuration file with a .qos extension.

Every IPQoS configuration file must start with the version number fmt_version 1.0 as its first uncommented line.

Follow the opening parameter with
the initial action statement, which configures the generic
IP classifier ipgpc.

This initial action begins
the tree of action statements that compose the IPQoS configuration
file. For example, the /var/ipqos/Goldweb.qos file begins
with the initial action statement to call the ipgpc classifier.

fmt_version 1.0
action {
module ipgpc
name ipgpc.classify

fmt_version 1.0

Begins the IPQoS configuration file.

action {

Begins the action statement.

module ipgpc

Configures the ipgpc classifier as the
first action in the configuration file.

name ipgpc.classify

Defines the name of the classifier action statement,
which must always be ipgpc.classify.

For detailed syntactical information about action statements,
refer to action Statement and
the ipqosconf(1M) man page.

Turning on statistics impacts performance. You might want to gather
statistics on a new IPQoS configuration file to verify that IPQoS works properly.
Later, you can turn off statistics collection by changing the argument to global_stats to FALSE.

Global statistics are but one type of parameter you can define in a params clause. For syntactical and other details about params clauses,
refer to params Clause and the ipqosconf(1M) man page.

Define a class that identifies
traffic that is bound for the premium server.

class {
name goldweb
next_action markAF11
enable_stats FALSE
}

This statement is called a class clause.
A class clause has the following contents.

name goldweb

Creates the class goldweb to identify traffic
that is bound for the Goldweb server.

next_action markAF11

Instructs the ipgpc module to pass packets
of the goldweb class to the markAF11 action
statement. The markAF11 action statement calls the dscpmk marker.

enable_stats FALSE

Enables statistics taking for the goldweb class.
However, because the value of enable_stats is FALSE,
statistics for this class are not turned on.

For detailed information about the syntax of the class clause,
see class Clause and the ipqosconf(1M) man page.

Define a class that identifies
an application that must have highest-priority forwarding.

class {
name video
next_action markEF
enable_stats FALSE
}

name video

Creates the class video to identify streaming
video traffic that is outgoing from the Goldweb server.

next_action markEF

Instructs the ipgpc module to pass packets
of the video class to the markEF statement
after ipgpc completes processing. The markEF statement
calls the dscpmk marker.

enable_stats FALSE

Enables statistics collection for the video class.
However, because the value of enable_stats is FALSE,
statistics collection for this class is not turned on.

How to Define Traffic Forwarding
in the IPQoS Configuration File

The next procedure shows how to define traffic forwarding by adding
per-hop behaviors for a class into the IPQoS configuration file.

Before You Begin

The procedure assumes that you have an existing IPQoS configuration
file with already defined classes and already defined filters. The steps continue
building the /var/ipqos/Goldweb.qos file from Example 34–1.

Note –

The procedure shows how to configure traffic forwarding by using
the dscpmk marker module. For information about traffic
forwarding on VLAN systems by using the dlclosmk marker,
refer to Using the dlcosmk Marker With VLAN Devices.

Open the IPQoS configuration
file, and locate the end of the last filter you defined.

For example,
on the IPQoS-enabled server Goldweb, you would start after
the following filter clause in /var/ipqos/Goldweb.qos:

Note that this filter clause is at the end of the ipgpc classifier action statement. Therefore,
you need a closing brace to terminate the filter and a second closing brace
to terminate the action statement.

Invoke the marker with the following action statement.

action {
module dscpmk
name markAF11

module dscpmk

Calls the marker module dscpmk.

name markAF11

Gives the name markAF11 to the action statement.

The previously defined class goldweb includes a next_action markAF11 statement. This statement sends traffic flows
to the markAF11 action statement after the classifier concludes
processing.

Enables statistics collection for the markAF11 marker action statement. However, because the value of enable_stats is FALSE, statistics are not collected.

dscp_map{0–63:10}

Assigns a DSCP of 10 to the packet headers
of the traffic class goldweb, which is currently being
processed by the marker.

next_action continue

Indicates that no further processing is required on packets
of the traffic class goldweb, and that these packets can
return to the network stream.

The DSCP
of 10 instructs the marker to set all entries in the dscp map to the decimal value 10 (binary 001010). This codepoint
indicates that packets of the goldweb traffic class are
subject to the AF11 per-hop behavior. AF11 guarantees that all packets with
the DSCP of 10 receive a low-drop, high-priority service.
Thus, outgoing traffic for premium customers on Goldweb is
given the highest priority that is available for the Assured Forwarding (AF)
PHB. For a table of possible DSCPs for AF, refer to Table 37–2.

Assigns a DSCP of 46 to the packet headers
of the traffic class video, which is currently being processed
by the marker.

next_action acct

Instructs the dscpmk module to pass packets
of the class video to the acctaction statement after dscpmk completes processing.
The acctaction statement invokes the flowacct module.

The DSCP of 46 instructs
the dscpmk module to set all entries in the dscp map
to the decimal value 46 (binary 101110) in the DS field. This codepoint indicates
that packets of the video traffic class are subject to
the Expedited Forwarding (EF) per-hop behavior.

Note –

The recommended codepoint for EF is 46 (binary 101110). Other
DSCPs assign AF PHBs to a packet.

The EF PHB guarantees that packets with the DSCP of 46 are
given the highest precedence by IPQoS and Diffserv-aware systems. Streaming
applications require highest-priority service, which is the rationale behind
assigning to streaming applications the EF PHBs in the QoS policy. For more
details about the expedited forwarding PHB, refer to Expedited Forwarding (EF) PHB.

Add the DSCPs that you have
just created to the appropriate files on the Diffserv router.

How to Enable Accounting for a
Class in the IPQoS Configuration File

The next procedure shows how to enable accounting on a traffic class
in the IPQoS configuration file. The procedure shows how to define flow accounting
for the video class, which is introduced in How to Create the IPQoS Configuration File and Define Traffic Classes. This class selects streaming video
traffic, which must be billed as part of a premium customer's SLA.

Before You Begin

The procedure assumes that you have an existing IPQoS configuration
file with already defined classes, filters, metering actions, if appropriate,
and marking actions, if appropriate. The steps continue building the /var/ipqos/Goldweb.qos file from Example 34–1.

Open the IPQoS configuration
file, and locate the end of the last action statement you
defined.

For example, on the IPQoS-enabled server Goldweb, you
would start after the following markEFaction statement
in /var/ipqos/Goldweb.qos.

How to Create an IPQoS Configuration
File for a Best-Effort Web Server

The IPQoS configuration file for a best-effort web server differs slightly
from an IPQoS configuration file for a premium web server. As an example,
the procedure uses the configuration file from Example 34–2.

Enables statistics collection for the markAF12 marker action statement. However, because the value of enable_stats is FALSE, statistics collection does not occur.

dscp_map{0–63:12}

Assigns a DSCP of 12 to the packet headers
of the traffic class userweb, which is currently being
processed by the marker.

next_action continue

Indicates that no further processing is required on packets
of the traffic class userweb, and that these packets can
return to the network stream.

The DSCP of 12 instructs the marker to set all entries
in the dscp map to the decimal value 12 (binary 001100).
This codepoint indicates that packets of the userweb traffic
class are subject to the AF12 per-hop behavior. AF12 guarantees that all packets
with the DSCP of 12 in the DS field receive a medium-drop,
high-priority service.

When you complete the IPQoS
configuration file, apply the configuration.