This document describes the basics of Forwarding Error Correction (FEC) and how to validate the feature on Catalyst 9000-family of switches.
Cisco recommends that you have knowledge of these topics:
What is FEC?
FEC is a technique used to detect and correct a certain number of errors in a bitstream by appending redundant bits and error-checking code to the message block before transmission. The addition contains sufficient information on the data to enable the FEC decoder at the receiver end to reconstruct the original message. The FEC decoder can identify the bits received in error and correct them. It then removes the redundant bits before passing the message to the upper layers of the network. Because the FEC decoder uses only the redundant bits to detect and correct errors, it does not request re-transmission of the entire errored frame, saving bandwidth that would otherwise be used for re-transmission.
FEC provides a way for networks to increase the data rate while maintaining an acceptable bit error rate (BER). There are trade-offs, as the improvement is the result of adding overhead in the form of error-correcting parity bits, which consumes some of the available bandwidth. In general, the higher the coding gain, the greater the number of parity bits, which increases the size of the codewords. FEC decoders must receive the full codeword before acting on it. Stronger FEC algorithms offer higher coding gains, but they require larger codewords, and larger codewords increase latency.
Why do Fiber Optic Networks need FEC?
The growing popularity of cloud computing, streaming video, and social networking has massively increased internet traffic. To meet the skyrocketing bandwidth demand, the optical networking industry has pushed data rates to 100 Gbps and beyond. Optical transmission is vulnerable to various sources of signal degradation, including chromatic dispersion, modal dispersion, polarization mode dispersion, and noise.
In the real world, the ability of an optical receiver to resolve information is impacted by the presence of noise. As a result, a receiver cannot accurately resolve all bits, introducing errors into the data transmission. This problem is exacerbated at higher speeds because the receiver filter bandwidths must be widened to allow faster signals and must allow noise energy to pass through. Fortunately, FEC can help compensate for this problem. Although the technique cannot correct all errors under all network conditions. When properly configured, it can help network operators run at higher transmission rates while maintaining target BERs while using less expensive optics.
Catalyst 9000-series switches support 2 types of FECs:
The configuration value for FC-FEC is cl74. RS-FEC has two configuration values depending on the speed of the link:
How to Negotiate FEC Value and when FEC is required?
FEC is required at 25 GBs speed or higher when the cable length is longer than 2 meters. The FEC block that performs the coding and decoding is often in the ASIC of the switch/router. And in other cases, it in 100G optics, it is in the module itself.
FEC is enabled in auto mode by default; however, there can be other FEC clauses for specific application protocols that can be supported by the host software. You can decide to enable these, depending on the specific application.
Topology
Topology 1
Configuration:
Cat9300X-24Y(config)# interface tw1/1/2 Cat9300X-24Y(config-if)#fec ? auto Enable FEC Auto-Neg cl108 Enable clause108 with 25G cl74 Enable clause74 with 25G off Turn FEC off Cat9300X-24Y(config-if)#fec auto
Verification:
Cat9300X-24Y# show running-config interface tw1/1/2
!
interface TwentyFiveGigE1/1/2
end
The absence of FEC configuration indicates FEC is set to auto or you can check the status of the interface:
Cat9300X-24Y# show interface tw1/1/2 TwentyFiveGigE1/1/2 is up, line protocol is up (connected) --snip-- Full-duplex, 25Gb/s, link type is force-up, media type is SFP-25GBase-SR Fec is auto < -- The configured setting for FEC is displayed here input flow-control is on, output flow-control is off ARP type: ARPA, ARP Timeout 04:00:00 --snip--
The mismatch of FEC on both sides of the link can break the connection between devices even if everything else looks good.
Example:
Cat9300X-24Y#show running-config interface tw1/1/2 Building configuration... Current configuration : 47 bytes ! interface TwentyFiveGigE1/1/2 fec cl74 end Cat9300X-24Y#show interface tw1/1/2 TwentyFiveGigE1/1/2 is down, line protocol is down (notconnect) |
Cat9300X-48X#show running-config interface tw1/1/6 Building configuration... Current configuration : 37 bytes ! interface TwentyFiveGigE1/1/6 end Cat9300X-48X#show interface tw1/1/6 TwentyFiveGigE1/1/6 is down, line protocol is down (notconnect) |
Cat9300X-24Y#show interfaces transceiver
If device is externally calibrated, only calibrated values are printed.
++ : high alarm, + : high warning, - : low warning, -- : low alarm.
NA or N/A: not applicable, Tx: transmit, Rx: receive.
mA: milliamperes, dBm: decibels (milliwatts).
Optical Optical
Temperature Voltage Current Tx Power Rx Power
Port (Celsius) (Volts) (mA) (dBm) (dBm)
--------- ----------- ------- -------- -------- --------
Twe1/1/6 37.4 3.29 7.4 -0.4 -4.9 |
Cat9300X-48X#show interfaces transceiver
If device is externally calibrated, only calibrated values are printed.
++ : high alarm, + : high warning, - : low warning, -- : low alarm.
NA or N/A: not applicable, Tx: transmit, Rx: receive.
mA: milliamperes, dBm: decibels (milliwatts).
Optical Optical
Temperature Voltage Current Tx Power Rx Power
Port (Celsius) (Volts) (mA) (dBm) (dBm)
--------- ----------- ------- -------- -------- --------
Twe1/1/2 37.8 3.33 7.8 -0.8 -1.2 |
You can see even with a receive good signal the port is down on both sides as the FEC configuration does not match. In this case, you must match the FEC configuration, either choosing "auto" in both or "cl74." While troubleshooting link problems, take these steps:
1. Compatibility of the transceiver with the device.
2. Compatibility between transceiver in the same link.
3. Compatibility between the transceiver and the fiber cable in use.
4. Negotiation between sites.
4.1. Speed.
4.2. FEC.
FEC takes precedence when connecting devices that are different. Most problems are discovered when connected to third party equipment or host devices, can also be UCSs or Nexus devices. If FEC is left in default mode, both devices must negotiate the FEC setting to be used and that can be a problem. It is best to manually set the FEC settings, however, it must match between both sides of the link.
To see which FEC settings are allowed on the transceiver to use, refer to the TMGMatrix.
Then, you can filter by the transceiver PID or device:

Click the CUE card of the transceiver:

The CUE card shows all data you need to know on the transceiver, including the FEC setting:

| Revision | Publish Date | Comments |
|---|---|---|
2.0 |
28-Aug-2026
|
Updated introduction, spelling, grammar, inserted horizontal lines to separate sections for readability, and alt text. |
1.0 |
13-Mar-2025
|
Initial Release |