JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Managing Oracle Solaris 11.1 Network Performance     Oracle Solaris 11.1 Information Library
search filter icon
search icon

Document Information


1.  Introduction to Network Performance Management

2.  Using Link Aggregations

3.  Working With VLANs

4.  Administering Bridged Networks (Tasks)

5.  Introduction to IPMP

6.  Administering IPMP (Tasks)

7.  Exchanging Network Connectivity Information With LLDP

8.  Working With Data Center Bridging Features in Oracle Solaris

Overview of Data Center Bridging (DCB)

How to Enable DCBX

Priority-Based Flow Control

PFC-Related Datalink Properties

Priority-based Flow Control TLV Units

How to Customize Priority-based Flow Control for DCB

Obtaining PFC Configuration Information

Application TLV Units

Enhanced Transmission Selection

ETS-Related Datalink Properties

Enhanced Transmission Selection TLV Units

How to Customize Enhanced Transmission Selection for DCB

Obtaining ETS Configuration Information

9.  Edge Virtual Bridging in Oracle Solaris

10.  Integrated Load Balancer (Overview)

11.  Configuring Integrated Load Balancer

12.  Managing Integrated Load Balancer

13.  Virtual Router Redundancy Protocol (Overview)

A.  Link Aggregation Types: Feature Comparison

B.  Link Aggregations and IPMP: Feature Comparison


Priority-Based Flow Control

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.

PFC-Related Datalink Properties

Aside from the pfcmap property, the following properties provide information about priority definitions and mappings:

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..

Priority-based Flow Control TLV Units

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.

How to Customize Priority-based Flow Control for DCB

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.

  1. Ensure that DCBX is enabled.

    See How to Enable DCBX.

  2. (Optional) Customize which DCB feature that you want to enable.

    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
  3. Ensure that the datalink's flowctrl property is set to pfc.
    # 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
  4. Set the pfcmap property as appropriate if you do not want to use the default value 11111111.

    For example, to enable priority only on CoS priority 6, type the following command:

    # dladm set-linkprop -p pfcmap=01000000 net0
  5. Ensure that the host can synchronize its PFC information with the PFC information on the remote peer.
    # 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

Obtaining PFC Configuration Information

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:

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
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
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
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
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

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
net0    appln     apt        rw     8906/1/4   --        --