Configuring CoS PFC (Congestion Notification Profiles)
A congestion notification profile (CNP) enables priority-based flow control (PFC) on specified IEEE 802.1p priorities (code points). A CNP has two components:
Enable PFC on a specified priority.
Configure the maximum receive unit (MRU) on an interface for traffic that matches the PFC priority (optional).
Specify the length of the attached cable on the ingress interface (optional)
Output CNP (optional): Configure flow control to enable PFC pause on specific output queues for specified priorities.
By default, output queues 3 and 4 (which are mapped to default lossless forwarding classes fcoe and no-loss, respectively) are configured to respond to PFC pause messages received from the connected peer on priorities 3 and 4 (code points 011 and 100, respectively). If you explicitly configure flow control on any output queue, you must configure flow control on every output queue that you want to respond to pause messages. (The explicit configuration overrides the default configuration.)
To achieve lossless behavior, the output queue priorities on which you enable PFC flow control must match the PFC priorities on which you enable PFC on the input interfaces. For example, if you program output queues to pause priorities 3 (011) and 5 (101) in the output component of the CNP, then you must also enable pause on priorities 3 and 5 on the input component of the CNP. (In addition, the forwarding classes mapped to the paused output queues must be lossless forwarding classes.)
Associating a CNP with an interface enables PFC on the ingress traffic that matches the priority specified in the input CNP, and programs the queues listed in the output CNP to pause when the interface receives a PFC pause message from the connected peer. Configure PFC on a priority end to end along the entire data path to create a lossless lane of traffic on the network.
You must enable PFC on the priority used by FCoE traffic on ingress interfaces (input CNP). Enable PFC on the FCoE priority on every interface that carries FCoE traffic. By convention, FCoE traffic uses priority 3 (code point 011), which maps to queue 3. If your network uses priority 3 for FCoE traffic, the default forwarding class and classifier configuration support lossless transport, but you must still configure a CNP and apply it to the correct ingress interfaces to enable PFC and achieve lossless transport.
If your network does not use priority 3 for FCoE traffic, you need to configure a classifier that classifies FCoE traffic into a lossless forwarding class, based on the priority your network uses for FCoE traffic. If you are not using the default lossless forwarding class configuration, then you also need to ensure that the output queue mapped to the lossless FCoE forwarding class is programmed to pause.
You can attach only one CNP to an interface. There is no limit to the total number of CNPs you can create.
Configuring a CNP consists of:
Naming the CNP.
Specifying the IEEE 802.1 code point (priority) on which you want to enable PFC on ingress interfaces (input CNP).
Optionally, specifying the MRU and the length of the attached cable on ingress interfaces (input CNP).
Optionally, configuring flow control (PFC pause) on specified output queues if you want queues other than queues 3 and 4 to respond to pause messages received from the connected peer (output CNP).
Mapping the CNP to an interface.
Configuring or changing PFC on an interface blocks the entire port until the PFC change is completed. After a PFC change is completed, the port is unblocked and traffic resumes. Blocking the port stops ingress and egress traffic, and causes packet loss on all queues on the port until the port is unblocked.
On QFX5100, QFX5200, and QFX5210, once the headroom buffer is exhausted, any new CNP configuration is not allocated headroom buffer, even if headroom buffer is freed by deletion of an existing CNP. CNP configuration has to be applied again to re-allocate the headroom buffer.
- Enable PFC on the desired priority in the input CNP and
optionally configure the interface MRU for traffic on that priority:
For example, to configure a CNP named fcoe-cnp that enables PFC on IEEE 802.1 code point 011 and configures an MRU value of 2240:
user@switch# set congestion-notification-profile fcoe-cnp input ieee-802.1 code-point 011 pfc mru 2240
- (Optional) Configure the length of the cable attached
to the ingress interface:
user@switch# set congestion-notification-profile cnp-name input cable-length cable-length-value
For example, to configure a CNP named fcoe-cnp that sets the length of the ingress interface cable to 100 meters:
user@switch# set congestion-notification-profile fcoe-cnp input cable-length 100
- (Optional) Configure flow control on output queues:
For example, to configure a CNP named fcoe-cnp that enables PFC pause flow control on output queues 3 and 5 for FCoE traffic that uses priority 3 (code point 011) and on output queue 4 for traffic that uses priority 4 (code point 100):
user@switch# set congestion-notification-profile cnp-name output ieee-802.1 code-point 011 flow-control-queue [3 5]
user@switch# set congestion-notification-profile cnp-name output ieee-802.1 code-point 100 flow-control-queue 4
- Map the CNP to an interface:
user@switch# set interfaces interface congestion-notification-profile cnp-name
For example, to map the CNP fcoe-cnp to the interface xe-0/0/7:
user@switch# set interfaces xe-0/0/7 congestion-notification-profile fcoe-cnp