The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
All data traffic between end devices in the SAN fabric is carried by Fibre Channel Class 3, and in some cases, Class 2 services, that use link-level, per-hop-based, and buffer-to-buffer flow control. These classes of service do not support end-to-end flow control. When slow devices are attached to the fabric, the end devices do not accept the frames at the configured or negotiated rate. The slow devices lead to an Inter-Switch Link (ISL) credit shortage in the traffic that is destined for these devices and they congest the links. The credit shortage affects the unrelated flows in the fabric that use the same ISL link even though destination devices do not experience a slow drain.
This feature provides various enhancements that enable you to detect slow drain devices are cause congestion in the network and also provide congestion avoidance.
The enhancements are mainly on the edge ports that connect to the slow drain devices to minimize the frames stuck condition in the edge ports due to slow drain devices that are causing an ISL blockage. To avoid or minimize the stuck condition, configure lesser frame timeout for the ports. You can use the no-credit timeout to drop all packets after the slow drain is detected using the configured thresholds. A smaller frame timeout value helps to alleviate the slow drain condition that affects the fabric by dropping the packets on the edge ports sooner than the time they actually get timed out (358 ms). This function frees the buffer space in ISL, which can be used by other unrelated flows that do not experience slow drain condition.
Note | This feature supports edge ports that are connected to slow edge devices. Even though you can apply this feature to ISLs as well, we recommend that you apply this feature only for edge F ports and retain the default configuration for ISLs as E and TE ports. This feature is not supported on Generation 1 modules. |
How to Configure a Stuck Frame Timeout Value
The default stuck frame timeout value is 358 ms. The timeout value can be incremented in steps of 10. We recommend that you retain the default configuration for ISLs and configure a value that does not exceed 500 ms (100 to 200 ms) for fabric F ports.
This example shows how to configure a stuck frame timeout value of 100 ms:
switch# configure terminal switch(config)# system timeout congestion-drop 100 mode F switch(config)# system timeout congestion-drop default mode F
How to Configure a No-Credit Timeut Value
When the port does not have the credits for the configured period, you can enable a no-credit timeout on that port, which results in all frames that come to that port getting dropped in the egress. This action frees the buffer space in the ISL link, which helps to reduce the fabric slowdown and congestion on other unrelated flows that use the same link.
The dropped frames are the frames that have just entered the switch or have stayed in the switch for the configured timeout value. These drops are preemptive and clear the congestion completely.
The no-credit timeout feature is disabled by default. We recommend that you retain the default configuration for ISLs and configure a value that does not exceed 358 ms (200 to 300 ms) for fabric F ports.
You can disable this feature by entering the no system timeout no-credit-drop mode F command.
Note | The no-credit timeout value and stuck frame timeout value are interlinked. The no-credit timeout value must always be greater than the stuck frame timeout value. |
This example shows how to configure a no-credit timeout value:
switch# configure terminal switch(config)# system timeout no-credit-drop 100 mode F switch(config)# system timeout no-credit-drop default mode F
Use the following commands to display the credit loss counters per module per interface for the last specified minutes, hours, and days:
Command |
Purpose |
---|---|
show process creditmon {credit-loss-event-history | credit-loss-events | force-timeout-events | timeout-discards-events} |
Displays Onboard Failure Logging (OBFL) credit loss logs. |
Use one of the following commands to display the total number of credit loss events per interface with the latest three credit loss time stamps:
Command |
Purpose |
---|---|
show process creditmon credit-loss-events [module module number] |
Displays the credit loss event information for a module. |
show process creditmon credit-loss-event-history [module module number] |
Displays the credit loss event history information. |
Use the following command to display the timeout drops per module per interface for the last specified minutes, hours, and days:
Command |
Purpose |
---|---|
show logging onboard flow-control timeout-drops [last mm minutes] [last hh hours] [last dd days] [module module number] |
Displays the Onboard Failure Logging (OBFL) timeout drops log. |
When the average credit nonavailable duration exceeds the set threshold, you can error-disable the port, send a trap with interface details, and generate a syslog with interface details. In addition, you can combine or more actions or turn on or off an action. The port monitor feature provides the command line interface to configure the thresholds and action. The threshold configuration can be a percentage of credit non-available duration in an interval.
The thresholds for the credit nonavailable duration can be 0 percent to 100 percent in multiples of 10, and the interval can be from 1 second to 1 hour. The default is 10 percent in 1 second and generates a syslog.
Use the following command to display the average credit-not-available status:
Command |
Purpose |
---|---|
show system internal snmp credit-not-available {module | module-id} |
Displays the port monitor credit-not-available counter logs. |
How to Configure a Port Monitor
You can use port monitoring to monitor the performance of fabric devices and to detect slow drain devices. You can monitor counters and take the necessary action depending on whether the portguard is enabled or disabled. You can configure the thresholds for various counters and trigger an event when the values cross the threshold settings. Port monitoring provides a user interface that you can use to configure the thresholds and action. By default, portguard is disabled in the port monitoring policy.
Two default policies, default and default slowdrain, are created during snmpd initialization. The default slowdrain policy is activated when the switch comes online when no other policies are active at that time. The default slowdrain policy monitors only credit-loss-reco and tx-credit-not-available counters.
When you create a policy, it is created for both access and trunk links. The access link has a value of F and the trunk link has a value of E.
Command or Action | Purpose |
---|
This example shows how to specify the poll interval and threshold for timeout discards:
switch# configure terminal switch(config)# port-monitor cisco switch(config-port-monitor)# counter timeout-discards
This example show how to specify the poll interval and threshold for link reset responses received by the FC port:
switch# configure terminal switch(config)# port-monitor cisco switch(config-port-monitor)# counter poll-interval 20 delta rising-threshold 10 event 4 falling-threshold 3 event 4
This example shows how to activate a specific port monitor policy:
switch# configure terminal switch(config)# port-monitor activate cisco
Use the following command to display port monitor policies:
Command |
Purpose |
---|---|
switch# show port-monitor policyname |
Displays details of the specified port monitor policy. |
This example shows how to display a specific port monitor policy:
switch# show port-monitor cisco Policy Name : cisco Admin status : Active Oper status : Active Port type : All Ports ------------------------------------------------------------------------------------------ Counter Threshold Interval Rising Threshold event Falling Threshold event Portguard In Use ------- --------- -------- ---------------- ----- ----------------- ----- --------- ------ Timeout Discards Delta 60 200 4 10 4 Not enabled Yes Credit Loss Reco Delta 5 4 4 1 4 Not enabled Yes TX Credit Not Available Delta 30 60 4 10 4 Not enabled Yes ------------------------------------------------------------------------------------------