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.
This chapter contains the following sections:
This feature addresses the following goals:
Queuing can ensure that any traffic class does not starve other traffic types.
Respect the bandwidth guarantees for each traffic class.
Optimize the utilization of the uplink bandwidth.
Class-based weighted fair queuing (CBWFQ) extends the standard weighted fair queuing (WFQ) functionality to provide user-defined traffic classes. For CBWFQ, you define traffic classes based on match criteria including protocols and CoS values. Packets that satisfy the match criteria for a class constitute the traffic for that class. A queue is reserved for each class, and traffic that belongs to a class is directed to the queue for that class.
Once a class has been defined according to its match criteria, you can assign its characteristics. To characterize a class, you assign a bandwidth. The bandwidth assigned to a class is the guaranteed bandwidth delivered to the class during congestion.
The traffic that does not match any of the configured classes is given best-effort treatment. Once a packet is classified, all of the standard mechanisms that can also be used to differentiate service among the classes apply.
For CBWFQ, the weight specified for the class becomes the weight of each packet that meets the match criteria of the class. Packets that arrive at the egress interface are classified according to the match criteria filters you define, and then each one is assigned the appropriate weight. The weight for a packet that belongs to a specific class is derived from the bandwidth that you assigned to the class when you configured it; the weight for a class is user-configurable.
After the weight for a packet is assigned, the packet is enqueued in the appropriate class queue. CBWFQ uses the weights assigned to the queued packets to ensure that the class queue is serviced fairly.
Configuring a class policy—configuring CBWFQ—has three processes:
Defining traffic classes to specify the classification policy (class maps).
This process determines how many types of packets are to be differentiated from one another.
Associating policies—that is, class characteristics—with each traffic class (policy maps).
This process entails configuration of policies to be applied to packets that belong to one of the classes that were previously defined through a class map. For this process, you configure a policy map that specifies the policy for each traffic class.
Attaching policies to interfaces (service policies).
Note | A queuing policy map can be applied only on an uplink in the egress (outbound) direction. |
This process requires that you associate an existing policy map, or service policy, with an interface to apply the particular set of policies for the map to that interface.
Policy maps prioritize network traffic by class. You create policy maps to define how to treat each class of traffic so that it is prioritized for the best quality of service.
This feature does not require a license. Any feature not included in a license package is bundled with the Cisco NX-OS system images and is provided at no extra charge to you. For a complete explanation of the Cisco NX-OS licensing scheme, see the Cisco NX-OS Licensing Guide.
You are already logged in to the CLI in EXEC mode.
A queuing policy can be applied only on an uplink interface in the egress (outbound) direction.
Queuing is supported only on ESX or ESXi 5.0 or later hosts.
For port-channel interfaces, queuing bandwidth applies on the member ports. The overall performance depends on how the vEthernet interfaces are pinned to member ports and the traffic pattern on the individual ports.
We recommend that you reserve 10% bandwidth of the uplink for the control traffic.
Class-based weighted fair queuing is disabled by default.
This feature allows you to differentiate traffic classes and provide appropriate bandwidth guarantees. You can use this procedure to configure class-based weighted fair queuing as follows:
This example shows how to configure class-based weighted fair queuing:
switch# configure terminal switch(config)# class-map type queuing queue_1 switch(config-cmap-que)# match protocol n1k_mgmt switch(config-cmap-que)# match protocol n1k_control switch(config-cmap-que)# match protocol vmw_vmotion switch(config-cmap-que)# exit switch(config)# policy-map type queuing qpol1 switch(config-pmap-que)# class type queuing queue_1 switch(config-pmap-c-que)# bandwidth percent 30 switch(config-pmap-c-que)# exit switch(config-pmap-que)# exit switch(config)# port-profile type ethernet uplink switch(config-port-prof)# service-policy type queuing output qpol1 switch(config-port-prof)# sh policy-map interface Global statistics status : enabled port-channel1 Service-policy (queuing) output: qpol1 policy statistics status: enabled Class-map (queuing): queue_1 (match-all) Match: protocol n1k_mgmt Match: protocol n1k_control Match: protocol vmw_vmotion bandwidth percent 30 queue dropped pkts : 0 queue matched pkts : 39 queue inrate bytes ( Kbits/sec ) : 0 queue outrate bytes ( Kbits/sec ) : 0 port-channel2 Service-policy (queuing) output: qpol1 policy statistics status: enabled Class-map (queuing): queue_1 (match-all) Match: protocol n1k_mgmt Match: protocol n1k_control Match: protocol vmw_vmotion bandwidth percent 30 queue dropped pkts : 0 queue matched pkts : 208 queue inrate bytes ( Kbits/sec ) : 0 queue outrate bytes ( Kbits/sec ) : 0 port-channel4 Service-policy (queuing) output: qpol1 policy statistics status: enabled Class-map (queuing): queue_1 (match-all) Match: protocol n1k_mgmt Match: protocol n1k_control Match: protocol vmw_vmotion bandwidth percent 30 queue dropped pkts : 0 queue matched pkts : 054 queue inrate bytes ( Kbits/sec ) : 0 queue outrate bytes ( Kbits/sec ) : 0 switch(config)# copy running-config startup-config
Note | In the Layer 3 mode of operation, both n1k_control and n1k_packet traffic are classified under the n1k_control protocol. The protocol vmw_iscsi can match only with the software iSCSI traffic and not the hardware iSCSI traffic. For any match for VMware protocol traffic, the vmknic that carries that traffic should be assigned to a port profile on the Cisco Nexus 1000V. |
Use one of the following commands to verify the configuration:
Command |
Description |
---|---|
show policy map type queuing name |
Displays the queuing policy map configuration. |
show class-map type queuing name |
Displays the queuing class map configuration. |
show policy-map interface |
Displays the policy map interface configuration. |
show running-config ipqos |
Displays the QoS running configuration. |
This example shows how to display the policy map type queuing for policy vmotion:
n1000v# show policy-map type queuing Policy-vmotion Type queuing policy-maps ======================== policy-map type queuing Policy-vmotion class type queuing Match-vmotion bandwidth percent 50
This example shows how to display the class map queuing for vmotion:
n1000v# show class-map type queuing Match-vmotion Type queuing class-maps ======================== class-map type queuing match-any Match-vmotion match protocol vmw_vmotion
This example shows how to display class map type queuing CoS:
n1000v# show class-map type queuing Match-Cos Type queuing class-maps ======================== class-map type queuing match-all Match-Cos match cos 5
This example shows how to display the policy map on the interface ethernet policy vmotion:
n1000v# show policy-map interface ethernet 3/3 Global statistics status : disabled Ethernet3/3 Service-policy (queuing) output: Policy-vmotion policy statistics status: enabled Class-map (queuing): Match-vmotion (match-any) Match: protocol vmw_vmotion bandwidth percent 50
This example shows how to display the service policy on the interface ethernet policy-CoS:
n1000v# show policy-map interface ethernet 3/3 Global statistics status : disabled Ethernet3/3 Service-policy (queuing) output: Policy-Cos policy statistics status: enabled Class-map (queuing): Match-Cos (match-all) Match: cos 5 bandwidth percent 50
This example shows how to display the service policy on the interface port channel:
n1000v# show policy-map interface port-channel 1 Global statistics status : disabled port-channel1 Service-policy (queuing) output: Policy-vmotion policy statistics status: enabled Class-map (queuing): Match-vmotion (match-any) Match: protocol vmw_vmotion bandwidth percent 50
This example shows how to allocate 50 percent of the bandwidth for VMotion traffic:
switch# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config)# class-map type queuing match-any Match-vmotion switch(config-cmap-que)# match protocol vmw_vmotion switch(config-cmap-que)# exit switch(config)# policy-map type queuing Policy-vmotion switch(config-pmap-que)# class type queuing Match-vmotion switch(config-pmap-c-que)# bandwidth percent 50 switch(config-pmap-c-que)# exit switch(config-pmap-que)# exit switch(config)# interface ethernet 3/3 switch(config-if)# service-policy type queuing output Policy-vmotion
This example shows how to allocate 50 percent of bandwidth for traffic with a CoS value of 5:
switch# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config)# class-map type queuing match-all Match-Cos switch(config-cmap-que)# match cos 5 switch(config-cmap-que)# exit switch(config)# policy-map type queuing Policy-Cos switch(config-pmap-que)# class type queuing Match-Cos switch(config-pmap-c-que)# bandwidth percent 50 switch(config-pmap-c-que)# exit switch(config-pmap-que)# exit switch(config)# interface ethernet 3/3 switch(config-if)# service-policy type queuing output Policy-Cos
This example shows how to configure a policy map with multiple traffic classes:
switch# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config)# class-map type queuing match-any class-vmotion switch(config-cmap-que)# match protocol vmw_vmotion switch(config-cmap-que)# exit switch(config)# class-map type queuing match-any class-cos-2 switch(config-cmap-que)# match cos 2 switch(config-cmap-que)# exit switch(config)# policy-map type queuing policy-priority-vmotion switch(config-pmap-que)# class type queuing class-vmotion switch(config-pmap-c-que)# bandwidth percent 60 switch(config-pmap-c-que)# class type queuing class-cos-2 switch(config-pmap-c-que)# bandwidth percent 40 switch(config-pmap-c-que)# exit switch(config-pmap-que)# exit switch(config)# interface po1 switch(config-if)# service-policy type queuing output policy-priority-vmotion switch(config-if)# show policy-map type queuing policy-priority-vmotion Type queuing policy-maps ======================== policy-map type queuing policy-priority-vmotion class type queuing class-vmotion bandwidth percent 60 class type queuing class-cos-2 bandwidth percent 40 switch# configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config)# interface po1 switch(config-if)# service-policy type queuing output policy-priority-vmotion switch(config-if)# show policy-map interface po1 Global statistics status : disabled port-channel1 Service-policy (queuing) output: policy-priority-vmotion policy statistics status: enabled Class-map (queuing): class-vmotion (match-any) Match: protocol vmw_vmotion bandwidth percent 60 Class-map (queuing): class-cos-2 (match-any) Match: cos 2 bandwidth percent 40