NICs and converged network adapters connected to a Cisco Nexus 5000 or a Cisco Nexus 6000 Series switch by utilizing iSCSI as a storage protocol can be programmed to accept the configuration values sent by the switch leveraging DCBX or data center bridging exchange protocol. DCBX negtioates configuration and settings between the switch and the adapter through a variety of type-length-value (TLV) and sub-TLVs. This allows the switch to distribute configuration values to all attached adapters from a centralized location instead of having to manually program CoS markings on each individual server and adapter. For flexibility, Enhanced Transmission Selection (ETS) and Priority Flow Control (PFC) parameters are coded in TLV format. However, the use of PFC or ETS for lossy and lossless protocol behavior is not a requirement for iSCSI TLV operations - the TLV can be leveraged for both traditional TCP or drop behavior iSCSI networks as well as for a complete end-to-end lossless iSCSI fabric. Enabling ETS and PFC will separate storage traffic from other IP traffic and allow for accurate and error-free configuration information to be transmitted from the switch to the adapter.
Note
The adapter management application must ensure that the Willing mode is set to enable to accept the CoS values from the switch.
iSCSI TLV Configuration
Identifying iSCSI Traffic
You can define a class map for each class of traffic to be used in QoS policies.
If the packet matches any of the criteria configured for this class map with the match command, then this class map is applied to the packet. If no execution strategy is specified (match-any or match-all), then the default value of match-any is applied to the traffic class.
Creates a named object that represents a class of traffic, and enters class-map mode. Class-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 3
switch(config-cmap-qos)# match protocol [fcoe | iscsi | tcp]
Specifies the CoS value to match and specifies which protocol
has to be mapped to a given CoS value.
Important:
You are enabling the TLV by typing
match protocol iscsi.
Step 4
switch(config-cmap-qos)# match coscos value
Specifies the CoS value to match. The range is from 0 to 7.
This example shows how to identify iSCSI traffic.
switch# configure terminal
switch(config)# class-map type qos match-all c1
switch(config-cmap-qos)# match protocol iscsi
switch(config-cmap-qos)# match cos 5
Configuring Type QoS Policies
Type qos policies are used for classifying the traffic of a specific system class identified by a unique qos-group value. A type qos policy can be attached to the system or to individual interfaces (including Fabric Extender host interfaces) for input traffic only.
Procedure
Command or Action
Purpose
Step 1
switch# configure terminal
Enters global configuration mode.
Step 2
switch(config)# policy-map [type qos] policy-name
Creates a named object that represents a set of policies that are to be applied to a set of traffic classes. Policy-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 3
switch(config-pmap-qos)# classclass-name
To add a reference to the system class that matches a traffic class, use this command.
Step 4
switch(config-pmap-c-qos)# set qos-groupqos-group-value
Configures one or more qos-group values to match for classification of traffic into this class map. The range of qos-group-values is from 2 to 5. There is no default value.
Note
The Cisco Nexus 5000 Series switch can only support a maximum of five qos-groups within this range.
Step 5
switch(config-pmap-c-qos)# exit
Exits qos configuration mode and enters policy-map mode.
Step 6
switch(config-pmap-qos)# class class-default
To add a reference to the system default class that does not match any traffic class, use the class class-default command.
This example shows how to define a QOS policy map.
switch# configure terminal
switch(config)# policy-map type qos c1
switch(config-pmap-qos)# class c1
switch(config-pmap-c-qos)# set qos-group 2
switch(config-pmap-c-qos)# exit
switch(config-pmap-qos)# class class-default
Configuring No-Drop Policy Maps
Procedure
Command or Action
Purpose
Step 1
switch# configure terminal
Enters global configuration mode.
Step 2
switch(config)# class-map type {network-qos | queuing} class-name
Creates a named object that represents a class of traffic. Class-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 3
switch(config-cmap-nq)# match qos-groupqos-group-value
Configures the traffic class by matching packets based on a list of QoS group values. Values can range from 0 to 5. QoS group 0 is equivalent to class-default and QoS group 1 is equivalent to class-fcoe.
Note
qos-groups 0 and 1 are reserved for default classes and cannot be configured.
Step 4
switch(config-cmap-nq)# exit
Exits class-map mode and enters global configuration mode.
Step 5
switch(config)# policy-map type network-qospolicy-name
Creates a named object that represents a set of policies that are to be applied to a set of traffic classes. Policy-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 6
switch(config-pmap-nq)# class type network-qosclass-name
Associates a class map with the policy map, and enters configuration mode for the specified system class.
Note
The associated class map must be the same type as the policy map type.
Configures a no-drop class. If you do not specify this command, the default policy is drop.
Note
The operation for the drop policy is a simple tail drop, where arriving packets will be dropped if the queue increases to its allocated size.
The pfc-cos-value range is from 0 to 7. This option is supported only for a ACL-based system class (which filters traffic using criteria other than cos-based matches).
Caution
The list of CoS values can potentially include the CoS value that is used for FCoE traffic in class-fcoe. You must determine if this is desired behavior for your topology.
Step 8
switch(config-pmap-nq)# class type network-qosclass-name
Associates a class map with the policy map, and enters configuration mode for the specified system class.
Note
The associated class map must be the same type as the policy map type.
Step 9
switch(config-pmap-c-nq)# mtu 9216
Enables the jumbo MTU for the whole switch by setting the MTU to its maximum size (9216 bytes) in the policy map for the default system class (class-default).
This example shows how to configure a no-drop policy map.
switch# configure terminal
switch(config)# class-map type network-qos c1
switch(config-cmap-nq)# match qos-group 2
switch(config-cmap-nq)# exit
switch(config)# policy-map type network-qos p1
switch(config-pmap-nq)# class type network-qos c1
switch(config-pmap-c-nq)# pause no-drop
switch(config-pmap-nq)# class type network-qos class-default
switch(config-pmap-c-nq)# mtu 9216
Attaches a policy map of type network-qos to an interface.
This example shows how to apply system service policies.
switch# configure terminal
switch(config)# system qos
switch(config-sys-qos)# service-policy type qos input c1
switch(config-sys-qos)# service-policy type network-qos p1
iSCSI TLV and FCoE Configuration
Identifying iSCSI and FCoE Traffic
You can define a class map for each class of traffic to be used in QoS policies.
If the packet matches any of the criteria configured for this class map with the match command, then this class map is applied to the packet. If no execution strategy is specified (match-any or match-all), then the default value of match-any is applied to the traffic class.
Procedure
Command or Action
Purpose
Step 1
switch# configure terminal
Enters global configuration mode.
Step 2
switch(config)# class-map type qosclass-map-name
Creates a named object that represents a class of traffic, and enters class-map mode. Class-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 3
switch(config-cmap-qos)# exit
Exits class-map configuration mode and enters global configuration mode.
Step 4
switch(config)# class-map type qos [match-all | match-any] class-map-name
Creates a class map, provides conditions for applying this class map to a packet, and enters the class-map configuration mode.
Step 5
switch(config-cmap-qos)# match protocol [fcoe | iscsi | tcp]
Specifies the CoS value to match and specifies which protocol
has to be mapped to a given CoS value.
Important:
You are enabling the TLV by typing
match protocol iscsi.
Step 6
switch(config-cmap-qos)# match coscos value
Specifies the CoS value to match. The range is from 0 to 7.
Step 7
switch(config-cmap-qos)# exit
Exits class-map configuration mode and enters global configuration mode.
Step 8
switch(config)# class-map type queuingclass-map-name
Creates a class map that defines a queuing class of traffic and enters the class-map configuration mode.
Step 9
switch(config-cmap-que)# match qos-groupqos-group-list
Configures a traffic class that matches the QoS group values.
This example shows how to identify iSCSI and FCoE traffic.
switch# configure terminal
switch(config)# class-map type qos class-fcoe
switch(config-cmap-qos)# exit
switch(config)# class-map type qos match-all c1
switch(config-cmap-qos)# match protocol iscsi
switch(config-cmap-qos)# match cos 6
switch(config-cmap-qos)# exit
switch(config)# class-map type queuing class-fcoe
switch(config-cmap-que)# match qos-group 1
Configuring Type QoS Policies
Type qos policies are used for classifying the traffic of a specific system class identified by a unique qos-group value. A type qos policy can be attached to the system or to individual interfaces (including Fabric Extender host interfaces) for input traffic only.
Procedure
Command or Action
Purpose
Step 1
switch# configure terminal
Enters global configuration mode.
Step 2
switch(config)# policy-map [type qos] policy-name
Creates a named object that represents a set of policies that are to be applied to a set of traffic classes. Policy-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 3
switch(config-pmap-qos)# classclass-name
Specifies a class map for a policy map.
Step 4
switch(config-pmap-c-qos)# set qos-groupqos-group-value
Configures one or more qos-group values to match for classification of traffic into this class map. The range of qos-group-values is from 2 to 5. There is no default value.
Note
The Cisco Nexus 5000 Series switch can only support a maximum of five qos-groups within this range.
Step 5
switch(config-pmap-c-qos)# exit
Exits qos configuration mode and enters policy-map mode.
Step 6
switch(config-pmap-qos)# classclass-name
Specifies a class map for a policy map.
Step 7
switch(config-pmap-c-qos)# set qos-groupqos-group-value
Configures one or more qos-group values to match for classification of traffic into this class map. The range of qos-group-values is from 2 to 5. There is no default value.
Note
The Cisco Nexus 5000 Series switch can only support a maximum of five qos-groups within this range.
Step 8
switch(config-pmap-c-qos)# exit
Exits qos configuration mode and enters policy-map mode.
Step 9
switch(config-pmap-qos)# class class-default
Adds a reference to the system default class that does not match any traffic class.
This example shows how to define a QOS policy map.
switch# configure terminal
switch(config)# policy-map type qos c1
switch(config-pmap-qos)# class c1
switch(config-pmap-c-qos)# set qos-group 2
switch(config-pmap-c-qos)# exit
switch(config-pmap-qos)# class class-fcoe
switch(config-pmap-c-qos)# set qos-group 1
switch(config-pmap-c-qos)# exit
switch(config-pmap-qos)# class class-default
Configuring No-Drop Policy Maps
Procedure
Command or Action
Purpose
Step 1
switch# configure terminal
Enters global configuration mode.
Step 2
switch(config)# class-map type {network-qos} class-name
Creates a named object that represents a class of traffic. Class-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 3
switch(config-cmap-nq)# match qos-groupqos-group-value
Configures the traffic class by matching packets based on a list of QoS group values. Values can range from 0 to 5. QoS group 0 is equivalent to class-default and QoS group 1 is equivalent to class-fcoe.
Note
qos-groups 0 and 1 are reserved for default classes and cannot be configured.
Step 4
switch(config-cmap-nq)# exit
Exits class-map mode and enters global configuration mode.
Step 5
switch(config)# class-map type {network-qos} class-name
Creates a named object that represents a class of traffic. Class-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 6
switch(config-cmap-nq)# match qos-groupqos-group-value
Configures the traffic class by matching packets based on a list of QoS group values. Values can range from 0 to 5. QoS group 0 is equivalent to class-default and QoS group 1 is equivalent to class-fcoe.
Note
qos-groups 0 and 1 are reserved for default classes and cannot be configured.
Step 7
switch(config-cmap-nq)# exit
Exits class-map mode and enters global configuration mode.
Step 8
switch(config)# policy-map type network-qospolicy-name
Creates a named object that represents a set of policies that are to be applied to a set of traffic classes. Policy-map names can contain alphabetic, hyphen, or underscore characters, are case sensitive, and can be up to 40 characters.
Step 9
switch(config-pmap-nq)# class type network-qosclass-name
Associates a class map with the policy map, and enters configuration mode for the specified system class.
Note
The associated class map must be the same type as the policy map type.
Configures a no-drop class. If you do not specify this command, the default policy is drop.
Note
The operation for the drop policy is a simple tail drop, where arriving packets will be dropped if the queue increases to its allocated size.
The pfc-cos-value range is from 0 to 7. This option is supported only for a ACL-based system class (which filters traffic using criteria other than cos-based matches).
Caution
The list of CoS values can potentially include the CoS value that is used for FCoE traffic in class-fcoe. You must determine if this is desired behavior for your topology.
Step 11
switch(config-pmap-nq)# class type network-qosclass-name
Associates a class map with the policy map, and enters configuration mode for the specified system class.
Note
The associated class map must be the same type as the policy map type.
Step 12
switch(config-pmap-c-nq)# mtu 2158
Sets the MTU to 2158 bytes in the policy map for class-fcoe.
Configures a no-drop class. If you do not specify this command, the default policy is drop.
Note
The operation for the drop policy is a simple tail drop, where arriving packets will be dropped if the queue increases to its allocated size.
The pfc-cos-value range is from 0 to 7. This option is supported only for a ACL-based system class (which filters traffic using criteria other than cos-based matches).
Caution
The list of CoS values can potentially include the CoS value that is used for FCoE traffic in class-fcoe. You must determine if this is desired behavior for your topology.
Step 14
switch(config-pmap-nq)# class type network-qosclass-name
Associates the default system class (class-default) with the policy map, and enters configuration mode for the specified system class.
Note
The associated class map must be the same type as the policy map type.
Step 15
switch(config-pmap-c-nq)# mtu 9216
Enables the jumbo MTU for the whole switch by setting the MTU to its maximum size (9216 bytes) in the policy map for the default system class (class-default).
This example shows how to configure a no-drop policy map.
switch# configure terminal
switch(config)# class-map type network-qos c1
switch(config-cmap-nq)# match qos-group 2
switch(config-cmap-nq)# exit
switch(config)# class-map type network-qos class-fcoe
switch(config-cmap-nq)# match qos-group 1
switch(config-cmap-nq)# exit
switch(config)# policy-map type network-qos p1
switch(config-pmap-nq)# class type network-qos c1
switch(config-pmap-c-nq)# pause no-drop
switch(config-pmap-nq)# class type network-qos class-fcoe
switch(config-pmap-c-nq)# mtu 2158
switch(config-pmap-c-nq)# pause no-drop
switch(config-pmap-nq)# class type network-qos class-default
switch(config-pmap-c-nq)# mtu 9216
Applying System Service Policies
Procedure
Command or Action
Purpose
Step 1
switch# configure terminal
Enters global configuration mode.
Step 2
switch(config)# system qos
Enters system class configuration mode.
Step 3
switch(config-sys-qos)# service-policy type queuing input fcoe-default-in-policy
Applies the input queuing FCoE policy map to an interface.
Step 4
switch(config-sys-qos)# service-policy type queuing output fcoe-default-out-policy
Applies the output queuing FCoE policy map to an interface.