|Skip Navigation Links|
|Exit Print View|
|Managing Oracle Solaris 11.1 Network Performance Oracle Solaris 11.1 Information Library|
PFC extends the standard PAUSE frame to include IEEE 802.1p CoS values. With PFC, instead of halting all traffic on the link when a PAUSE frame is sent, traffic is paused only for those CoS values that are enabled in the PFC frame. A PFC frame is sent for the enabled priority for which traffic needs to be paused. The sending host stops traffic for that priority while traffic for other disabled priorities are unaffected. After a time interval that is specified in the PFC frame, or after the sending host receives another PFC frame, transmission resumes for those packets. Pausing based on priority ensures that packets are not dropped for that priority. For packets without any defined priority, no PAUSE frames are sent. Thus, traffic continues to flow, and packets might be dropped during traffic congestion.
The priorities are represented by an 8–bit mask (0–7) on the pfcmap datalink property. The lowest bit represents priority 0 while the highest bit represents priority 7. Each bit in this mask signifies whether PFC is enabled for a corresponding priority. By default, pfcmap is set to 1111111, which means that PFC is enabled on all the priorities. For any packet transmitted over a link, a PFC frame would be sent to the sending host if congestion builds up on the receiving host.
Aside from the pfcmap property, the following properties provide information about priority definitions and mappings:
pfcmap-lcl-effective refers to the operative PFC mapping on the local host. This property has read-only permissions. The property can reflect either the value of the pfcmap property or the value of the pfcmap-rmt-effective property.
pfcmap-rmt-effective refers to the operative PFC mapping on the remote peer. This property also has read-only permissions.
For PFC frames to be properly sent, communicating hosts must have symmetric DCB configuration information. An Oracle Solaris 11 system can automatically adjust its PFC configurations to match the PFC configurations on the remote peer.
The two listed properties indirectly indicate whether PFC information between peers are synchronized. On a datalink with matching PFC information between the local and remote peers, the values of pfcmap-lcl-effective and pfcmap-rmt-effective are identical regardless of the value set for pfcmap. If the ability to synchronize is disabled on the local host, then pfcmap-lcl-effective would reflect the value of the local host's pfcmap property.
See Obtaining PFC Configuration Information for examples of PFC information that these property configurations provide..
The PFC TLV unit controls the host's behavior with regards to the information that is received from the peer host. This TLV unit has only one configurable property, willing. By default, this property is set to on and enables the local host to synchronize its PFC priority definitions with the PFC definitions on the remote peer. You can prevent automatic synchronization of information for a specific agent by switching the property to off, as follows:
# lldpadm set-agenttlvprop -p willling=off -a agent pfc
where agent is identified by the datalink on which the agent is enabled.
In most cases, the default configuration for PFC on is sufficient. This configuration is automatically set up when LLDP is enabled. However, to show the different options that you can use when configuring PFC, this procedure lists the manual steps for PFC configurations. The steps assume that no automatic configuration exists. To facilitate understanding of the steps, all configurations are performed on net0.
See How to Enable DCBX.
By default, PFC, ETS, and edge virtual bridging (EVB) are enabled. Suppose that you prefer to use only PFC. Then you must remove the other two values from the dot1–tlv property of the LLDP agent. For a list of possible values for dot1–tlv, refer to Table 7-3.
# lldpadm set-agenttlvprop -p dot1-tlv-=etscfg,evb net0
# dladm show-linkprop -p flowctrl net0
If the property does not include pfc on the list of values, issue the following command:
# dladm set-linkprop -p flowctrl=pfc net0
For example, to enable priority only on CoS priority 6, type the following command:
# dladm set-linkprop -p pfcmap=01000000 net0
# lldpadm show-agenttlvprop -p willing -a net0 pfc
If the PFC TLV property willing is set to off, issue the following command:
# lldpadm set-agenttlvprop -p willing=on -a net0 pfc
This section contains several examples of information related to PFC after LLDP and DCB are configured.
The following commands display information that is related to PFC:
dladm show-linkprop -p pfcmap,pfc-lcl-effective,pfc-rmt-effective datalink
This command displays the priority definitions as well as the effective PFC mappings on the datalink.
dladm show-phys -D pfc datalink
This command displays PFC information on the physical link with regards to enabled priorities on the NIC.
lldpadm show-agenttlvprop -a agent pfc
where agent is identified by the datalink on which LLDP is enabled. Thus, the LLDP agent's name is identical to the name of the datalink. This command displays the PFC TLV property that controls a host's capability to synchronize its PFC mapping with a peer.
lldpadm show-agent -lv -o "PFC Pending" agent
This command alerts you to a mismatch of PFC mapping information between the local host and the peer.
The following examples show the types of information that is displayed by the previously listed commands.
Example 8-1 Displaying PFC-Related Datalink Properties
This example shows how to display the status of datalink properties that are related to priority-based flow control.
# dladm show-linkprop -p pfcmap,pfc-lcl-effective,pfc-rmt-effective net0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE net0 pfcmap rw 11111111 11111111 00000000-11111111 net0 pfcmap-lcl-effective r- 11111111 -- -- net0 pfcmap-rmt-effective r- 01000000 -- --
The output indicates that the PFC mapping on the local host has the default value where all the 8 priorities are enabled. The mismatched values for pfcmap-lcl-effective and pfcmap-rmt-effective indicate that the local host has not synchronized its PFC information with the remote peer. The mismatch can be due to the property that enables synchronization being switched off. Or, the peer is not sending PFC TLV units to the network. You can confirm this configuration by typing the following command:
Example 8-2 Displaying the Capability of the Local Host to Synchronize PFC Information
This example shows how to display the current status of the host's ability to adjust to the peer's PFC configurations.
# lldpadm show-agenttlvprop -a net0 pfc AGENT TLVNAME PROPERTY PERM VALUE DEFAULT POSSIBLE net0 pfc willing rw off on on,off
To enable synchronization, issue the following command:
# lldpadm set-agenttlvprop -p willing=on -a net0 pfc # dladm show-linkprop -p pfcmap,pfc-lcl-effective,pfc-rmt-effective net0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE net0 pfcmap rw 11111111 11111111 00000000-11111111 net0 pfcmap-lcl-effective r- 01000000 -- -- net0 pfcmap-rmt-effective r- 01000000 -- --
In the second output, the local host has dropped its own PFC mapping (11111111). Instead, the host has synchronized with the peer and its effective PFC mapping is now identical to the peer's PFC mapping. With this convergence of values, hosts can successfully exchange PFC PAUSE frames.
Example 8-3 Verifying Symmetry of PFC Information Between Host and Peer
This example show how to verify in actual running time whether PFC information is synchronized between host and peer, or whether a mismatch occurs.
# lldpadm show-agent -lv -o "PFC Pending" net0 PFC Pending: True
PFC Pending returns a True status if PFC information between the host and the peer does not converge. After the mismatch is resolved, the status of PFC Pending returns to False.
To display all the information an agent advertises, use the verbose option of the lldpadm show-agent command:
# lldpadm show-agent -v agent
Example 8-4 Displaying CoS Priority Definitions
This example shows how to display the current CoS priority definitions on a specific datalink based on the value of the pfcmap property. For example, assume that pfcmap is configured as 01000000. To display the corresponding priority mappings on the physical link, you would proceed as follows:
# dladm show-phys -D pfc net0 LINK COS PFC PFC_EFFECT CLIENTS ixgbe0 0 YES NO net0,vnic1 1 YES YES vnic2 2 YES NO vnic3 3 YES NO vnic4 4 YES NO vnic5 5 YES NO vnic6 6 YES NO vnic7 7 YES NO vnic8
For the physical link net0, priority is enabled for all the VNIC clients configured over the datalink. However, the local host adjusts its PFC mapping to the PFC mapping on the peer, as shown by the values of the PFC_EFFECT field, where priority is disabled on CoS 0 and 2-7. Thus, no PFC frames would be exchanged for traffic on all VNICs except vnic2 regardless of the availability of resources. With this configuration, packet drops are allowed on traffic that flows on all VNICs except vnic2. For traffic on vnic2, PFC PAUSE frames are sent when traffic congestion occurs to prevent packet loss on this client.
Application TLV units contain information about the priority to be used for an application on the host. The priority is defined in the Application Priority Table. Each entry on the table contains the application's name and the priority assigned to the application. The application TLV uses the table for transmitting application priority information with other hosts.
An entry on the table uses the following format:
The pair protocol-id/selector identifies the application. Priority contains a value from 0 to 7 that identifies the priority for a corresponding application.
To exchange this information about an applications' priority with other hosts, you set an application TLV as follows:
# lldpadm set-agenttlvprop -p property=value -a agent appln
For example, for FCoE traffic, the protocol ID is 0x8906 and the selector ID is 1. Suppose that the priority 4 is assigned to this application. Based on Table 7-3 that lists the parameters for setting an application TLV, type, the following command:
# lldpadm set-agenttlvprop -p apt=8906/1/4 -a net0 appln # lldpadm show-agenttlvprop -a net0 appln AGENT TLVNAME PROPERTY PERM VALUE DEFAULT POSSIBLE net0 appln apt rw 8906/1/4 -- --