Understanding CoS Fabric Forwarding Class Sets
Fabric forwarding class sets (fabric fc-sets) are similar to the fc-sets (priority groups) you configure on Node devices. The major differences are:
Fabric fc-sets group traffic for transport across the QFX3008-I or QFX3600-I Interconnect device (the fabric). Node device fc-sets group traffic on a Node device for transport across that Node device.
Fabric fc-sets are global. They apply to the entire fabric. Node device fc-sets apply only to the Node device on which they are configured.
Fabric fc-sets are mapped directly to Interconnect device output queues; in this way, they behave similarly to forwarding classes on a Node device.
Fabric fc-sets map to Interconnect device fabric output queues statically—you cannot configure the mapping of fabric fc-sets to fabric output queues. All traffic in a fabric fc-set maps to the same output queue.
Node device fc-sets include forwarding classes that map to Node device output queues, and you can configure the mapping of forwarding classes to output queues (or you can use the default mapping). Because output queues are mapped to forwarding classes, different classes of traffic in a Node device fc-set can be mapped to different output queues.
Node device fc-sets consist of forwarding classes containing traffic that requires similar CoS treatment. (Forwarding classes are default forwarding classes or user-defined forwarding classes.) You can configure CoS for each fc-set to determine how the traffic of its forwarding classes is scheduled on a Node device.
When traffic exits a Node device interface and enters an Interconnect device fabric interface, the Interconnect device uses the same forwarding classes to group traffic. The forwarding classes are mapped to global fabric fc-sets for transport across the fabric. Like fc-sets on a Node device, fabric fc-sets also contain traffic that requires similar CoS treatment. Also like fc-sets on a Node device, you can configure CoS on fabric fc-sets.
Fabric fc-sets reside on the Interconnect device and are global to the QFabric system. Fabric fc-sets apply to all traffic that traverses the fabric. The mapping of forwarding classes to fabric fc-sets is global and applies to all forwarding classes with traffic that traverses the fabric from all connected Node devices. You can change the mapping of forwarding classes to fabric fc-sets. All mapping changes you make are global. For example, if you change the fabric fc-set to forwarding class mapping of the default best-effort forwarding class, then every Node device’s best-effort forwarding class traffic that traverses the fabric is mapped to that fabric fc-set. The CoS you configure on a fabric fc-set applies to all the traffic that belongs to that fabric fc-set, from all connected Node devices.
This topic describes:
Default Fabric Forwarding Class Sets
Interconnect devices have 12 default fabric fc-sets, including five visible default fabric fc-sets, four for unicast traffic and one for multidestination (multicast, broadcast, and destination lookup failure) traffic.
There are also seven hidden default fabric fc-sets. There are three hidden default fabric fc-sets for multidestination traffic that you can use if you want to map different multidestination forwarding classes to different multidestination fabric fc-sets. There are four hidden default fabric fc-sets for lossless traffic that you can use to map different lossless forwarding classes (priorities) to different lossless fabric fc-sets. Table 1 shows the default fabric fc-sets:
Fabric Forwarding Class Set Name |
Characteristics |
---|---|
|
Transports best-effort unicast traffic across the fabric. |
|
Transports unicast traffic that has been configured with |
|
Transports unicast traffic in the default |
|
Transports unicast traffic in the default |
|
(Hidden) No traffic is assigned by default to this fabric fc-set. Unless traffic is mapped to this fabric fc-set, this fabric fc-set remains hidden. This fabric fc-set is valid only for lossless forwarding classes. |
|
(Hidden) No traffic is assigned by default to this fabric fc-set. Unless traffic is mapped to this fabric fc-set, this fabric fc-set remains hidden. This fabric fc-set is valid only for lossless forwarding classes. |
|
(Hidden) No traffic is assigned by default to this fabric fc-set. Unless traffic is mapped to this fabric fc-set, this fabric fc-set remains hidden. This fabric fc-set is valid only for lossless forwarding classes. |
|
(Hidden) No traffic is assigned by default to this fabric fc-set. Unless traffic is mapped to this fabric fc-set, this fabric fc-set remains hidden. This fabric fc-set is valid only for lossless forwarding classes. |
|
Transports multidestination traffic in the |
|
(Hidden) No traffic is assigned by default to this fabric fc-set. Unless traffic is mapped to this fabric fc-set, this fabric fc-set remains hidden. This fabric fc-set is valid only for multidestination forwarding classes. |
|
(Hidden) No traffic is assigned by default to this fabric fc-set. Unless traffic is mapped to this fabric fc-set, this fabric fc-set remains hidden. This fabric fc-set is valid only for multidestination forwarding classes. |
|
(Hidden) No traffic is assigned by default to this fabric fc-set. Unless traffic is mapped to this fabric fc-set, this fabric fc-set remains hidden. This fabric fc-set is valid only for multidestination forwarding classes. |
The five default forwarding classes (best-effort
, fcoe
, no-loss
, network-control
, and mcast
) are mapped to the fabric fc-sets by default as shown
in Table 2.
Forwarding Class |
Fabric Forwarding Class Set |
Fabric Output Queue |
Maximum MTU Supported for Lossless Operation |
---|---|---|---|
|
fabric_fcset_be |
0 |
NA |
|
fabric_fcset_strict_high |
7 |
NA |
|
fabric_fcset_noloss1 |
1 |
9K |
|
fabric_fcset_noloss2 |
2 |
9K |
|
fabric_fcset_multicast1 |
8 |
NA |
No forwarding classes are mapped by default to this hidden fabric fc-set. |
fabric_fcset_noloss3 |
3 |
9k |
No forwarding classes are mapped by default to this hidden fabric fc-set. |
fabric_fcset_noloss4 |
4 |
9k |
No forwarding classes are mapped by default to this hidden fabric fc-set. |
fabric_fcset_noloss5 |
5 |
9k |
No forwarding classes are mapped by default to this hidden fabric fc-set. |
fabric_fcset_noloss6 |
6 |
9k |
No forwarding classes are mapped by default to this hidden fabric fc-set. |
fabric_fcset_multicast2 |
9 |
NA |
No forwarding classes are mapped by default to this hidden fabric fc-set. |
fabric_fcset_multicast3 |
10 |
NA |
No forwarding classes are mapped by default to this hidden fabric fc-set. |
fabric_fcset_multicast4 |
11 |
NA |
The maximum fiber cable length between the QFabric system Node device and the QFabric system Interconnect device is 150 meters.
If you explicitly configure lossless forwarding classes, we recommend that you map each user-configured lossless forwarding class to an unused fabric fc-set (fabric_fcset_noloss3 through fabric_fcset_noloss6) on a one-to-one basis: one lossless forwarding class mapped to one lossless fabric fc-set.
The reason for one-to-one mapping is to avoid fate sharing of lossless flows. Because each fabric fc-set is mapped statically to an output queue, when you map more than one forwarding class to a fabric fc-set, all of the traffic in all of the forwarding classes that belong to the fabric fc-set uses the same output queue. If that output queue becomes congested due to congestion caused by one of the flows, the other flows are also affected. (They share fate because the flow that congests the output queue affects flows that are not experiencing congestion.)
If you want to map different multidestination forwarding classes to different multidestination fabric fc-sets, use one or more of the hidden multidestination fabric fc-sets.
The global mapping of forwarding classes to fabric fc-sets is independent of the mapping of forwarding classes to Node device fc-sets. Global mapping of forwarding classes to fabric fc-sets occurs only on the Interconnect device. The Node device mapping of forwarding classes to fc-sets does not affect the global mapping of forwarding classes to fabric fc-sets on the Interconnect device, and vice versa.
When you define new forwarding classes on a Node device, you explicitly map those forwarding classes to Node device fc-sets. However, new (user-created) forwarding classes are mapped by default to fabric fc-sets. (You can override the default mapping if you want to configure the forwarding class to fabric fc-set mapping explicitly, as described in the next section.)
By default:
All best-effort traffic forwarding classes that you create are mapped to the
fabric_fcset_be
fabric fc-set.All lossless traffic forwarding classes that you create are mapped to the
fabric_fcset_noloss1
orfabric_fcset_noloss2
fabric fc-set.Note:To avoid fate sharing, we recommend that you configure one-to-one mapping of user-configured lossless forwarding classes to lossless fabric fc-sets instead of using the default mapping. You can also use firewall filters to mitigate fate sharing by separating flows that belong to the same forwarding class as the traffic traverses the Interconnect device (see Understanding How to Mitigate Fate Sharing on a QFabric System Interconnect Device by Remapping Traffic Flows (Forwarding Classes) for more information.)
All multidestination traffic forwarding classes that you create are mapped to the
fabric_fcset_multicast1
fabric fc-set.All
strict-high
priority traffic andnetwork-control
forwarding classes that you create are mapped to thefabric_fcset_strict_high
fabric fc-set.
Fabric Forwarding Class Set Configuration and Implementation
You can map forwarding classes to fabric fc-sets and configure CoS scheduling for fabric fc-sets. This section describes:
- Mapping Forwarding Classes to Fabric Forwarding Class Sets
- Fabric Forwarding Class Set Implementation
Mapping Forwarding Classes to Fabric Forwarding Class Sets
If you do not want to use the default mapping of forwarding classes to fabric fc-sets, you can map forwarding classes to fabric fc-sets in the same way as you map forwarding classes to Node device fc-sets. To do this, use exactly the same statement that you use to map forwarding classes to fc-sets, but instead of specifying a Node device fc-set name, specify a fabric fc-set name.
The global mapping of forwarding classes to fabric fc-sets does not affect the mapping of forwarding classes to Node device fc-sets. The global forwarding class mapping to fabric fc-sets pertains to the traffic only when it enters, traverses, and exits the fabric. The forwarding class mapping to fc-sets on a Node device is valid within that Node device.
Mapping forwarding classes to fabric fc-sets does not affect the scheduling configuration of the forwarding classes or fc-sets on Node devices. Fabric fc-set scheduling pertains to traffic only when it enters, traverses, and exits the Interconnect device fabric.
If you change the mapping of a forwarding class to a fabric fc-set, the new mapping is global and applies to all traffic in that forwarding class, regardless of which Node device forwards the traffic to the Interconnect device.
To assign one or more forwarding classes to a fabric fc-set:
[edit class-of-service] user@switch# set forwarding-class-sets fabric-forwarding-class-set-name class forwarding-class-name
For example, to map a user-defined forwarding class named
best-effort-2
to the fabric fc-setfabric_fcset_be
:[edit class-of-service] user@switch# set forwarding-class-sets fabric_fcset_be class best-effort-2
Because fabric fc-set configuration is global, in this example
all forwarding classes with the name best-effort-2
on all
of the Node devices connected to the fabric use the fabric_fcset_be
fabric fc-set to transport traffic across the fabric.
Fabric Forwarding Class Set Implementation
The following rules apply to fabric fc-sets:
You cannot create new fabric fc-sets. Only the twelve default fabric fc-sets are available.
You cannot delete a default fabric fc-set.
You cannot attach a fabric fc-set to a Node device interface. Fabric fc-sets are used only on the Interconnect device fabric, not on Node devices.
You can map only multidestination forwarding classes to multidestination fabric fc-sets.
You cannot map multidestination forwarding classes to unicast fabric fc-sets.
You cannot map unicast forwarding classes to multidestination fabric fc-sets.
QFabric System CoS
When traffic enters and exits the same QFabric system Node device, CoS works the same as it works on a standalone switch.
However, when traffic enters a QFabric system Node device, crosses the Interconnect device, and then exits a different Node device, CoS is applied differently:
Traffic entering the ingress Node device receives the CoS configured at the Node ingress (packet classification and congestion notification profile for PFC).
When traffic goes from the ingress Node device to the Interconnect device, the fabric fc-set CoS is applied to the traffic.
When traffic goes from the Interconnect device to the egress Node device, the egress Node device applies CoS at the egress port (egress queue scheduling, WRED, and IEEE 802.1p or DSCP code-point rewrite).
Traffic that traverses the Interconnect device can use the default CoS fabric scheduling or you can configure two-tier hierarchical CoS scheduling explicitly on fabric fc-sets as described in Understanding CoS Scheduling Across the QFabric System.
Support for Flow Control and Lossless Transport Across the Fabric
The Interconnect device incorporates flow control mechanisms to support lossless transport during periods of congestion on the fabric. To support the priority-based flow control (PFC) feature on the Node devices, the fabric interfaces use LLFC to support lossless transport for up to six IEEE 802.1p priorities when the following two configuration constraints are met:
The IEEE 802.1p priority used for the traffic that requires lossless transport is mapped to a lossless forwarding class on the Node devices.
The lossless forwarding class must be mapped to a lossless fabric fc-set on the Interconnect device (
fabric_fcset_noloss1
,fabric_fcset_noloss2
,fabric_fcset_noloss3
,fabric_fcset_noloss4
,fabric_fcset_noloss5
, orfabric_fcset_noloss6
).
When traffic meets the two configuration constraints, the fabric propagates the back pressure from the egress Node device across the fabric to the ingress Node device during periods of congestion. However, to achieve end-to-end lossless transport across the switch, you must also configure a congestion notification profile to enable PFC on the Node device ingress ports.
For all other combinations of IEEE 802.1p priority to forwarding class mapping and all other combinations of forwarding class to fabric fc-set mapping, the congestion control mechanism is normal packet drop. For example:
Case 1—If the IEEE 802.1p priority
5
is mapped to the losslessfcoe
forwarding class, and thefcoe
forwarding class is mapped to thefabric_fcset_noloss1
fabric fc-set, then the congestion control mechanism is PFC.Case 2—If the IEEE 802.1p priority
5
is mapped to the losslessfcoe
forwarding class, and thefcoe
forwarding class is mapped to thefabric_fcset_be
fabric fc-set, then the congestion control mechanism is packet drop.Case 3—If the IEEE 802.1p priority
5
is mapped to the losslessno-loss
forwarding class, and theno-loss
forwarding class is mapped to thefabric_fcset_noloss2
fabric fc-set, then the congestion control mechanism is PFC.Case 4—If the IEEE 802.1p priority
5
is mapped to the losslessno-loss
forwarding class, and theno-loss
forwarding class is mapped to thefabric_fcset_be
fabric fc-set, then the congestion control mechanism is packet drop.Case 5—If the IEEE 802.1p priority
5
is mapped to thebest-effort
forwarding class, and thebest-effort
forwarding class is mapped to thefabric_fcset_be
fabric fc-set, then the congestion control mechanism is packet drop.Case 6—If the IEEE 802.1p priority
5
is mapped to thebest-effort
forwarding class, and thebest-effort
forwarding class is mapped to thefabric_fcset_noloss1
fabric fc-set, then the congestion control mechanism is packet drop.
Lossless transport across the fabric also must meet the following two conditions:
The maximum cable length between the Node device and the Interconnect device is a 150 meters of fiber cable.
The maximum frame size is 9216 bytes.
If the MTU is 9216 KB, in some cases the QFabric system supports only five lossless forwarding classes instead of six lossless forwarding classes because of headroom buffer limitations.
The number of IEEE 802.1p priorities (forwarding classes) the QFabric system can support for lossless transport across the Interconnect device fabric depends on several factors:
Approximate fiber cable length—The longer the fiber cable that connects Node device fabric (FTE) ports to the Interconnect device fabric ports, the more data the connected ports need to buffer when a pause is asserted. (The longer the fiber cable, the more frames are traversing the cable when a pause is asserted. Each port must be able to store all of the “in transit” frames in the buffer to preserve lossless behavior and avoid dropping frames.)
MTU size—The larger the maximum frame sizes the buffer must hold, the fewer frames the buffer can hold. The larger the MTU size, the more buffer space each frame consumes.
Total number of Node device fabric ports connected to the Interconnect device—The higher the number of connected fabric ports, the more headroom buffer space the Node device needs on those fabric ports to support the lossless flows that traverse the Interconnect device. Because more buffer space is used on the Node device fabric ports, less buffer space is available for the Node device access ports, and a lower total number of lossless flows are supported.
The QFabric system supports six lossless priorities (forwarding classes) under most conditions. The priority group headroom that remains after allocating headroom to lossless flows is sufficient to support best-effort and multidestination traffic.
Table 3 shows how many lossless priorities the QFabric system supports under different conditions (fiber cable lengths and MTUs) in cases when the QFabric system supports fewer than six lossless priorities. The number of lossless priorities is the same regardless of how many Node device FTE ports are connected to the Interconnect device. However, the higher the number of FTE ports connected to the Interconnect device, the lower the number of total lossless flows supported. In all cases that are not shown in Table 3, the QFabric system supports six lossless priorities.
The system does not perform a configuration commit check that compares available system resources with the number of lossless forwarding classes configured. If you commit a configuration with more lossless forwarding classes than the system resources can support, frames in lossless forwarding classes might be dropped.
MTU in Bytes |
Fiber Cable Length in Meters (Approximate) |
Maximum Number of Lossless Priorities (Forwarding Classes) on the Node Device |
---|---|---|
9216 (9K) |
100 |
5 |
9216 (9K) |
150 |
5 |
The total number of lossless flows decreases as resource consumption increases. For a Node device, the higher the number of FTE ports connected to the Interconnect device, the larger the MTU, and the longer the fiber cable length, the fewer total lossless flows the QFabric system can support.
Viewing Fabric Forwarding Class Set Information
You can display information about fabric fc-sets using the same CLI command you use to display information about Node device fc-sets:
user@switch> show class-of-service forwarding-class-set Forwarding class set: fabric_fcset_be, Type: fabric-type, Forwarding class set index: 1 Forwarding class Index best-effort 0 Forwarding class set: fabric_fcset_mcast1, Type: fabric-type, Forwarding class set index: 5 Forwarding class Index mcast 8 Forwarding class set: fabric_fcset_mcast2, Type: fabric-type, Forwarding class set index: 6 Forwarding class set: fabric_fcset_mcast3, Type: fabric-type, Forwarding class set index: 7 Forwarding class set: fabric_fcset_mcast4, Type: fabric-type, Forwarding class set index: 8 Forwarding class set: fabric_fcset_noloss1, Type: fabric-type, Forwarding class set index: 2 Forwarding class Index fcoe 1 Forwarding class set: fabric_fcset_noloss2, Type: fabric-type, Forwarding class set index: 3 Forwarding class Index no-loss 2 Forwarding class set: fabric_fcset_noloss3, Type: fabric-type, Forwarding class set index: 9 Forwarding class set: fabric_fcset_noloss4, Type: fabric-type, Forwarding class set index: 10 Forwarding class set: fabric_fcset_noloss5, Type: fabric-type, Forwarding class set index: 11 Forwarding class set: fabric_fcset_noloss6, Type: fabric-type, Forwarding class set index: 12 Forwarding class set: fabric_fcset_strict_high, Type: fabric-type, Forwarding class set index: 4 Forwarding class Index network-control 3
Table 4 describes
the meaning of the show class-of-service forwarding-class-set
output fields when you display fabric fc-set information.
Field Name |
Field Description |
---|---|
|
Name of the fabric forwarding class set. |
|
Type of forwarding class set:
|
|
Index of this forwarding class set. |
|
Name of a forwarding class. |
|
Index of the forwarding class. |
Summary of Fabric Forwarding Class Set and Node Device Forwarding Class Set Differences
Table 5 summarizes the differences between fabric fc-sets and fc-sets:
Characteristic |
Fabric fc-set |
Local fc-set |
---|---|---|
Location |
QFX3008-I or QFX3600-I Interconnect device (the fabric). |
QFabric Node device. |
Global or local |
Global, valid for the entire fabric. |
Local to the Node device on which the fc-set is configured. |
Ability to create (define) a new fc-set |
No. Use the 12 default fabric fc-sets provided. |
Yes. |
Ability to configure CoS |
User-configurable using fabric fc-set scheduler maps. |
User-configurable using traffic control profiles. |
Ability to map forwarding classes to an fc-set |
Yes. Mapping is global and applies to all forwarding classes across the Interconnect device fabric (traffic from all connected Node devices). |
Yes. Mapping is local to a Node device and applies only to the forwarding classes on the Node device. |