Quality of Service (QoS)
In a telephony network, it is vital that users be guaranteed access to sufficient bandwidth in both upstream and downstream directions to ensure that their conversations will not be interrupted by pauses, gaps or other annoying artifacts caused by a lack of necessary bandwidth. Because of the nature of the HFC network, bandwidth management is especially important in the upstream direction, where noise is greater and available bandwidth much less than in the downstream direction.
DOCSIS contains mechanisms designed to provide CMs with guaranteed bandwidth. If the bandwidth cannot be guaranteed, a signal may be passed to higher level protocols so that they may take appropriate action (which may be, for example, to deny setup for the call). The guarantee is made at the beginning of the call, so that once a call has been allowed to start the users can be sure that the needed bandwidth will be available for the duration of the call.
DOCSIS modems provide QoS through the notion of Service Flows: A Service Flow is a unidirectional flow of packets that are guaranteed a particular bandwidth, which the flow requested at the time it was set up. Service Flows are identified by a 32-bit Service Flow Identifier (SFID) assigned by the CMTS. Each active upstream Service Flow also has a unique 14-bit SID.
At least two Service Flows are defined in the configuration file that the modem downloads during initialization: a Primary Upstream Service Flow and a Primary Downstream Service Flow. These flows are used for subsequent unclassified traffic and all MAC messages.
Conceptually, the resources14 required by Service Flows belong to a three-level hierarchy. When a CM attempts to create a Service Flow, the requested resources are tested (by the CMTS) against a provisioned authorization envelope to ensure that the request can be allowed. If so, the Service Flow is authorized.
The CMTS then checks to ensure that sufficient resources are actually available to grant the request. If so, the Service Flow is admitted. Admission ensures that the resources are available for use, and it reserves the necessary resources. It does not yet, however, grant the CM the right to use them. To do so, the Service Flow must be activated.
This notion of three levels of envelopes of resource control is an important one that we shall examine in more detail when we discuss PacketCable QoS in Chapter 6.
The particular QoS attributes of a Service Flow may be specified either by an explicit definition or by using a Service Class Name in a request. A Service Class Name is a string that the CMTS recognizes as a shorthand to refer to a particular set of QoS parameters. Service Class Names provide a useful level of indirection. For example, they allow higher-level applications to construct flows with sensible QoS values simply by using a particular name. Also, the set of QoS parameters to which a name refers may change dynamically in response to traffic patterns, allowing the CMTS to more effectively manage the various traffic flows passing through it.
Using Service Flows frees higher-level applications from the need to manage the Request frames and MAP messages we have discussed earlier. In particular, depending on the kind of flow granted, transmission opportunities may be presented to a CM without an explicit packet-by-packet request from the modem. Conceptually, a higher-level application may simply request bandwidth for a particular codec without worrying about any of the low-level details about how the packets are actually transmitted from the modem to its CMTS.
The creation of a Service Flow may be initiated either by the CM or by the CMTS. The mechanism used is a three-way handshake of MAC messages known as a Dynamic Service Addition: DSA-Request, DSA-Response and DSA-Acknowledge. Changes to an existing Service Flow are made through a similar series of Dynamic Service Change messages, and deletions of Service Flows occur through a two-way handshake of DSD-Request and DSD-Response.
The DSA and DSC messages allow for very fine-grained control of the bandwidth allocated to a Service Flow. We will talk in rather more detail about these messages in the section "Dynamic Service Flows."
When upstream bandwidth is requested, there are several mechanisms that may be used to fulfil the request. Which mechanism is chosen depends on the policy of the network operator, as well as the amount of intelligence in the CMTS and the traffic load on the upstream access network.
Unsolicited Grant Service (UGS)
An Unsolicited Grant Service Flow (UGS) is a flow to which the CMTS allocates a fixed number of minislots periodically to allow for a constant-bit-rate flow of information. If the packetized output from a voice codec consists of constant-sized packets, produced at a constant rate (as is usually the case), UGS is a very efficient method of allocating upstream bandwidth. Typically, UGS is used for telephony traffic because it incurs very little maintenance traffic. Essentially, the CM says, "Give me n minislots every m milliseconds", and the CMTS then grants these minislots (they appear in the MAP messages) without the need for the CM to explicitly request them.
Real-Time Polling Service
Real-Time Polling is similar to UGS, except that the CMTS periodically gives the modem an opportunity to request upstream minislots to transmit queued data. If the CM has no data to transmit, it issues no request and therefore the CMTS is free to reallocate those minislots to another modem.
UGS with Activity Detection (AD)
Combining elements of UGS and real-time polling, a Service Flow operating under UGS/AD is monitored by the CMTS. When the CMTS detects a number of unused minislots, it reverts to real-time polling until such time as the CM begins transmitting traffic on the flow; at that time the Service Flow reverts to UGS.
Non-Real-Time Polling Service
A Service Flow operating under non-real-time polling is guaranteed some transmit opportunities even when the network is congested. This service is of limited use in telephony systems. Essentially, this is a means to ensure that even in a congested network each modem is sure of at least some transmission opportunities.
Best Effort Service
In Best Effort Service Flows, the modem and CMTS simply do their best to send data when possible, with no guaranteed noncontention minislots. In a highly congested network, effective data rates may be very low in Best Effort service flows. Typically, data services use Best Effort Service Flows; unless the access network is very lightly loaded, it is not useful for transporting telephony packets.
Committed Information Rate
A Committed Information Rate Service Flow is usually configured as one that is delivered Best Effort but with some reserved non-real-time polling to ensure that at least some information will flow, even on a fully loaded network. Typically, current telephony services use the UGS mechanism to provide upstream bandwidth, although there is no specific requirement that they do so. With the deployment of more advanced non-constant-bit-rate codecs, Real-Time Polling or UGS/AD will likely become more widespread. The way in which PacketCable networks use the hooks provided by DOCSIS Dynamic Service Flows is more fully described in Chapter 6.
Dynamic Service Flows
Because of their importance to providing real-time telephony, it is worthwhile spending some time examining DOCSIS Dynamic Service Flows. Dynamic Service Flows are Service Flows that can be created, modified or deleted at will. In a typical implementation, each telephone conversation will be assigned to two Service Flows, one in the upstream direction and one downstream. We will look at how Dynamic Service Flows are created; the process for modifying (through DSC messages) and deleting (through DSD messages) Service Flows is very similar.
A Dynamic Service Flow is created by a Dynamic Service Add Request (DSA-Req); either the CM or the CMTS may initiate creation of a Dynamic Service Flow by transmitting a DSA-Req to the other device. A single DSA-Req can create at most two Service Flows, one in each direction. Whichever side initiates the request, a three way handshake takes place before the Dynamic Service Flow is in place and usable (see Figure 3-25).
Figure 3-25 Three-Way DSA Handshake
A Service Flow has associated with it as many as three so-called QosParameterSets, each of which defines characteristics such as jitter, latency and details of the bandwidth allocation for the Service Flow. These are known as the ProvisionedQosParameterSet, the AdmittedQosParameterSet and the ActiveQosParameterSet.
ProvisionedQosParameterSet
This is a static set of QoS parameters obtained during initialization. The parameters represent a maximal set of resources that the modem may consume for a single Service Flow. For example, if the subscriber pays only for low-bandwidth access using low-bit-rate codecs, that fact will be reflected in the values in the ProvisionedQosParameterSet.
AdmittedQosParameterSet
This represents a set of QoS parameters for which the CM and/or CMTS has reserved resources. However, although the resources are guaranteed to be made available immediately on request, they cannot actually be used.
ActiveQosParameterSet
This set of parameters represents resources that are available for use. Only a Service Flow with a non-null ActiveQosParameterSet may actually carry packets.
When a DSA-Req is made, the CMTS will check that the requested resources do not exceed the ProvisionedQosParameterSet. Assuming that they lie within these boundaries, the CMTS will then check whether sufficient resources exist to admit the Service Flow and, if possible, it will do so. Typically, a DSA-Req contains a null ActiveQosParameterSet, so the Service Flow is merely admitted, not made active. A subsequent DSC command is used to convert the AdmittedQosParameterSet to an ActiveQosParameterSetand hence to allow traffic to be carried on the Service Flow. Sometimes, however, the DSA-Req specifies that the flow is to be made immediately active (it does this by containing a non-null ActiveQosParameterSet), in which case traffic is immediately permitted to pass through the new Service Flow.
The flows for CM-initiated and CMTS-initiated Dynamic Service Additions are shown in Figures 3-26 and 3-27. As always, it is the CMTS that does the bulk of the work. The CM's role is limited to confirming that it can support the new Service Flow, configuring itself to do so and signaling that it is ready to use the new flow.
Figure 3-26 CM-Initiated Dynamic Service Addition
Figure 3-27 CMTS-Initiated Dynamic Service Addition