Modular QoS Configuration Guide for Cisco 8000 Series Routers, IOS XR Release 7.9.x
Bias-Free Language
The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
Congestion management features allow you to control congestion by determining the order in which a traffic flow (or packets)
is sent out an interface based on priorities assigned to packets. Congestion management entails the creation of queues, assignment
of packets to those queues based on the classification of the packet, and scheduling of the packets in a queue for transmission.
The types of traffic regulation mechanisms supported are:
The ingress traffic management model relies on packet queueing on the egress interface using Virtual Output Queueing (VOQ)
on the ingress. In this model, buffering takes place at ingress. Here’s how the VOQ process works.
Your routers support up to eight output queues per main interface or physical port. For every egress output queue, the VOQ
model earmarks buffer space on every ingress pipeline. This buffer space is in the form of dedicated VOQs. These queues are
called virtual because the queues physically exist on the ingress interface only when the line card actually has packets enqueued
to it. To support the modular model of packet distribution, each network processing unit (NPU) core at the ingress needs connectors
to every egress main interface and subinterface. The ingress traffic management model thus requires a mesh of connectors to
connect the ingress NPU cores to the egress interfaces, as shown in The Ingress Traffic Management Model.
In the figure, every ingress interface (LC 0 through LC n) port has eight VOQs for the single egress line card LC 10.
Here’s how packet transmission takes place:
When a packet arrives at ingress port (say on LC 0), the forwarding lookup on ingress line card points to the egress interface.
Based on the egress interface (say it is on LC10), the packet is enqueued to the VOQ of LC 10. The egress interface is always
mapped to a physical port.
Once egress bandwidth is available, the LC 10 ports ready to receive the packets (based on the packet marking and distribution
model) send grants to the ingress ports via the connectors. (The figure shows a separate line for the grant for the sake of
visual representation. In reality, the same connector is used for requests, grants, and transmission between an NPU core at
the ingress and the egress port on LC 10.)
The ingress ports respond to this permission by transmitting the packets via FC to the LC 10 ports. (The time it takes for
the ingress ports to request for egress port access, the egress port to grant access, and the packet to travel across FC is
the round-trip time.)
The VOQ model thus operates on the principle of storing excess packets in buffers at ingress until bandwidth becomes available.
Based on the congestion that builds up and the configured threshold values, packets begin to drop at the ingress itself, instead
of having to travel all the way to the egress interface and then getting dropped.
Hardware Limitation:
In a scale scenario where 1000+ VoQs (created using egress QoS policies) store packets due to active traffic flows and may
consume all the available on-chip buffer (OCB), unexpected traffic drops will be seen even though the traffic rate at the
VoQ level is less than that of the VoQ shaper.
Low-Latency Queueing with Strict Priority Queueing
The Low-Latency Queueing (LLQ) feature brings strict priority queuing (PQ) to the CBWFQ scheduling mechanism. Priority Queueing (PQ) in strict priority mode ensures that one type of traffic is sent, possibly at the expense of all others.
For PQ, a low-priority queue can be detrimentally affected, and, in the worst case, never allowed to send its packets if a
limited amount of bandwidth is available or the transmission rate of critical traffic is high. Strict PQ allows delay-sensitive
data, such as voice, to be de-queued and sent before packets in other queues are de-queued.
Configure Low Latency Queueing with Strict Priority Queueing
Configuring low latency queueing (LLQ) with strict priority queuing (PQ) allows delay-sensitive data such as voice to be de-queued
and sent before the packets in other queues are de-queued.
Guidelines
Only priority level 1 to 7 is supported, with 1 being the highest priority and 7 being the lowest. However, the default CoSQ 0 has the lowest priority among all.
Egress policing is not supported. Hence, in the case of strict priority queuing, there are chances that the other queues do
not get serviced.
You can configure shape average and queue-limit commands along with priority.
You can configure an optional shaper to cap the maximum traffic rate. This is to ensure the lower priority traffic classes
are not starved of bandwidth.
Configuration Example
You have to accomplish the following to complete the LLQ with strict priority queuing:
Creating or modifying a policy-map that can be attached to one or more interfaces
Specifying the traffic class whose policy has to be created or changed
Specifying priority to the traffic class
(Optional) Shaping the traffic to a specific bit rate
policy-map strict-priority
class tc7
priority level 1
queue-limit 75 mbytes
!
class tc6
priority level 2
queue-limit 75 mbytes
!
class tc5
priority level 3
queue-limit 75 mbytes
!
class tc4
priority level 4
queue-limit 75 mbytes
!
class tc3
priority level 5
queue-limit 75 mbytes
!
class tc2
priority level 6
queue-limit 75 mbytes
!
class tc1
priority level 7
queue-limit 75 mbytes
!
class class-default
queue-limit 75 mbytes
!
end-policy-map
!
class-map match-any tc1
match traffic-class 1
end-class-map
!
class-map match-any tc2
match traffic-class 2
end-class-map
!
class-map match-any tc3
match traffic-class 3
end-class-map
!
class-map match-any tc4
match traffic-class 4
end-class-map
!
class-map match-any tc5
match traffic-class 5
end-class-map
!
class-map match-any tc6
match traffic-class 6
end-class-map
!
class-map match-any tc7
match traffic-class 7
end-class-map
!
interface HundredGigE0/6/0/18
service-policy input 100g-s1-1
service-policy output test-priority-1
!
Verification
Router# show qos int hundredGigE 0/6/0/18 output
NOTE:- Configured values are displayed within parentheses
Interface HundredGigE0/6/0/18 ifh 0x3000220 -- output policy
NPU Id: 3
Total number of classes: 3
Interface Bandwidth: 100000000 kbps
VOQ Base: 11176
VOQ Stats Handle: 0x88550ea0
Accounting Type: Layer1 (Include Layer 1 encapsulation and above)
------------------------------------------------------------------------------
Level1 Class (HP7) = qos-1
Egressq Queue ID = 11177 (HP7 queue)
TailDrop Threshold = 125304832 bytes / 10 ms (default)
WRED not configured for this class
Level1 Class (HP6) = qos-2
Egressq Queue ID = 11178 (HP6 queue)
TailDrop Threshold = 125304832 bytes / 10 ms (default)
WRED not configured for this class
Level1 Class = class-default
Egressq Queue ID = 11176 (Default LP queue)
Queue Max. BW. = 101803495 kbps (default)
Queue Min. BW. = 0 kbps (default)
Inverse Weight / Weight = 1 (BWR not configured)
TailDrop Threshold = 1253376 bytes / 10 ms (default)
WRED not configured for this class
Traffic shaping allows you to control the traffic flow exiting an interface to match its transmission to the speed of the
remote target interface and ensure that the traffic conforms to policies contracted for it. Traffic adhering to a particular
profile can be shaped to meet downstream requirements, thereby eliminating bottlenecks in topologies with data-rate mismatches.
Note
Traffic shaping is supported only in egress direction.
Configure Traffic Shaping
The traffic shaping performed on outgoing interfaces is done at the Layer 1 level and includes the Layer 1 header in the rate
calculation.
Guidelines
Only egress traffic shaping is supported.
It is mandatory to configure all the eight qos-group classes (including class-default) for the egress policies.
You can configure shape average command along with priority command.
It is recommended that you configure all the eight <traffic-class classes> (including class-default) for the egress policies. A limited number of < traffic-class class> combinations are supported, but unicast and multicast
traffic-class may not be handled consistently. Hence, such configurations are recommended, when the port egress has only unicast
traffic.
Configuration Example
You have to accomplish the following to complete the traffic shaping configuration:
Creating or modifying a policy-map that can be attached to one or more interfaces
Specifying the traffic class whose policy has to be created or changed
Traffic policing allows you to control the maximum rate of traffic sent or received on an interface and to partition a network
into multiple priority levels or class of service (CoS).Traffic policing manages the maximum rate of traffic through a token
bucket algorithm. The token bucket algorithm uses user-configured values to determine the maximum rate of traffic allowed
on an interface at a given moment in time. The token bucket algorithm is affected by all traffic entering or leaving the interface
(depending on where the traffic policy with traffic policing is configured) and is useful in managing network bandwidth in
cases where several large packets are sent in the same traffic stream. By default, the configured bandwidth value takes into
account the Layer 2 encapsulation that is applied to traffic leaving the interface.
The router supports the following traffic policing mode:
Up to eight policers are supported per ingress policy.
Policers are allocated in multiples of 2, so any request for allocating odd number of policers is internally rounded up by
a factor of one.
Only one conditional marking action is supported. You can set discard class to 0/1, that is used to set either virtual output
queueing (VOQ) limits or Random Early Detection (RED) profiles.
If you configure discard-class explicitly at the class level and not under policer, then the explicit mark action is applied
to all the transmitted policer traffic.
Egress policing is not supported.
Committed Bursts and Excess Bursts
Unlike a traffic shaper, a traffic policer does not buffer excess packets and transmit them later. Instead, the policer executes
a “send or do not send” policy without buffering. Policing uses normal or committed burst (bc) values and excess burst values (be) to ensure that the router reaches the configured committed information rate (CIR). Policing decides if a packet conforms
or exceeds the CIR based on the burst values you configure. Burst parameters are based on a generic buffering rule for routers,
which recommends that you configure buffering to be equal to the round-trip time bit-rate to accommodate the outstanding TCP
windows of all connections in times of congestion. During periods of congestion, proper configuration of the excess burst parameter enables the policer to drop packets less aggressively.
This section explains the concept of the single-rate two-color policer.
Single-Rate Two-Color Policer
A single-rate two-color (1R2C) policer provides one token bucket with two actions for each packet: a conform action and an
exceed action.
Based on the committed information rate (CIR) value, the token bucket is updated at every refresh time interval. The Tc token
bucket can contain up to the Bc value, which can be a certain number of bytes or a period of time. If a packet of size B is
greater than the Tc token bucket, then the packet exceeds the CIR value and a default action is performed. If a packet of size B is less than the Tc token bucket, then the packet conforms and a different default action is performed.
Traffic policing is often configured on interfaces at the edge of a network to limit the rate of traffic entering or leaving
the network. The default conform action for single-rate two color policer is to transmit the packet and the default exceed
action is to drop the packet. Users cannot modify these default actions.
Configuration Example
You have to accomplish the following to complete the traffic policing configuration:
Creating or modifying a policy-map that can be attached to one or more interfaces
Specifying the traffic class whose policy has to be created or changed
The two-rate policer manages the maximum rate of traffic by using two token buckets: the committed token bucket and the peak
token bucket. The dual-token bucket algorithm uses user-configured values to determine the maximum rate of traffic allowed
on a queue at a given moment. In this way, the two-rate policer can meter traffic at two independent rates: the committed
information rate (CIR) and the peak information rate (PIR).
The dual-token bucket algorithm provides users with three actions for each packet—a conform action, an exceed action, and
an optional violate action. Traffic entering a queue with the two-rate policer configured is placed into one of these categories.
The actions are pre-determined for each category. The default conform and exceed actions are to transmit the packet, and the
default violate action is to drop the packet.
This figure shows how the two-rate policer marks a packet and assigns a corresponding action to the packet.
The router supports Two-Rate Three-Color (2R3C) policer.
Configure Traffic Policing (Two-Rate Three-Color)
The default conform and exceed actions for two-rate three-color (2R3C) policer are to transmit the packet and the default
violate action is to drop the packet. Users cannot modify these default actions.
Configuration Example
You have to accomplish the following to complete the two-rate three-color traffic policing configuration:
Creating or modifying a policy-map that can be attached to one or more interfaces
Specifying the traffic class whose policy has to be created or changed
The committed burst (bc) parameter of the police command implements the first, conforming (green) token bucket that the router
uses to meter traffic. The bc parameter sets the size of this token bucket. Initially, the token bucket is full and the token
count is equal to the committed burst size (CBS). Thereafter, the meter updates the token counts the number of times per second
indicated by the committed information rate (CIR).
The following describes how the meter uses the conforming token bucket to send packets:
If sufficient tokens are in the conforming token bucket when a packet arrives, the meter marks the packet green and decrements
the conforming token count by the number of bytes of the packet.
If there are insufficient tokens available in the conforming token bucket, the meter allows the traffic flow to borrow the
tokens needed to send the packet. The meter checks the exceeding token bucket for the number of bytes of the packet. If the
exceeding token bucket has a sufficient number of tokens available, the meter marks the packet.
Green and decrements the conforming token count down to the minimum value of 0.
Yellow, borrows the remaining tokens needed from the exceeding token bucket, and decrements the exceeding token count by the
number of tokens borrowed down to the minimum value of 0.
If an insufficient number of tokens is available, the meter marks the packet red and does not decrement either of the conforming
or exceeding token counts.
Note
When the meter marks a packet with a specific color, there must be a sufficient number of tokens of that color to accommodate
the entire packet. Therefore, the volume of green packets is never smaller than the committed information rate (CIR) and committed
burst size (CBS). Tokens of a given color are always used on packets of that color.
Excess Bursts
The excess burst (be) parameter of the police command implements the second, exceeding (yellow) token bucket that the router
uses to meter traffic. The exceeding token bucket is initially full and the token count is equal to the excess burst size
(EBS). Thereafter, the meter updates the token counts the number of times per second indicated by the committed information
rate (CIR).
The following describes how the meter uses the exceeding token bucket to send packets:
When the first token bucket (the conforming bucket) meets the committed burst size (CBS), the meter allows the traffic flow
to borrow the tokens needed from the exceeding token bucket. The meter marks the packet yellow and then decrements the exceeding
token bucket by the number of bytes of the packet.
If the exceeding token bucket does not have the required tokens to borrow, the meter marks the packet red and does not decrement
the conforming or the exceeding token bucket. Instead, the meter performs the exceed-action configured in the police command
(for example, the policer drops the packets).
Important Points
User configurable burst values— committed burst size (CBS) and excess burst size (EBS)—are not supported. Instead, they are
derived using user configured rates—committed information rates (CIR) and peak information rates (PIR).
The router supports two burst values: low (10 kilobytes) and high (1 megabyte). For a lower range of configured values (1.6
MBps to less than 1 GBps), the burst value is 10 KB. For a higher range of configured values (1 GBps to 400 GBps), the burst
value is 1 MB.
Two-Rate Policer Details
The committed token bucket can hold bytes up to the size of the committed burst (bc) before overflowing. This token bucket
holds the tokens that determine whether a packet conforms to or exceeds the CIR as the following describes:
A traffic stream is conforming when the average number of bytes over time does not cause the committed token bucket to overflow.
When this occurs, the token bucket algorithm marks the traffic stream green.
A traffic stream is exceeding when it causes the committed token bucket to overflow into the peak token bucket. When this
occurs, the token bucket algorithm marks the traffic stream yellow. The peak token bucket is filled as long as the traffic
exceeds the police rate.
The peak token bucket can hold bytes up to the size of the peak burst (be) before overflowing. This token bucket holds the
tokens that determine whether a packet violates the PIR. A traffic stream is violating when it causes the peak token bucket
to overflow. When this occurs, the token bucket algorithm marks the traffic stream red.
For example, if a data stream with a rate of 250 kbps arrives at the two-rate policer, and the CIR is 100 kbps and the PIR
is 200 kbps, the policer marks the packet in the following way:
100 kbps conforms to the rate
100 kbps exceeds the rate
50 kbps violates the rate
The router updates the tokens for both the committed and peak token buckets in the following way:
The router updates the committed token bucket at the CIR value each time a packet arrives at the interface. The committed
token bucket can contain up to the committed burst (bc) value.
The router updates the peak token bucket at the PIR value each time a packet arrives at the interface. The peak token bucket
can contain up to the peak burst (be) value.
When an arriving packet conforms to the CIR, the router takes the conform action on the packet and decrements both the committed
and peak token buckets by the number of bytes of the packet.
When an arriving packet exceeds the CIR, the router takes the exceed action on the packet, decrements the committed token
bucket by the number of bytes of the packet, and decrements the peak token bucket by the number of overflow bytes of the packet.
When an arriving packet exceeds the PIR, the router takes the violate action on the packet, but does not decrement the peak
token bucket.