What this article covers
Outlines CLI commands and physical layer testing procedures to troubleshoot optical power loss, signal degradation, and interface flapping on SFP, SFP+, and QSFP ports using Digital Optical Monitoring (DOM).
Before using the CLI
On-site workflow
Open Secondary SSH Window to monitor real-time interface carrier state
In Window 2, enable continuous link monitor status to capture every millisecond link-up and link-down transition.
# [WINDOW 2 - SECONDARY LIVE TELEMETRY]
diagnose netlink interface list <interface_name>
diagnose sys link-monitor status
Read transceiver DDM telemetry & optical threshold alarm flags
In Window 1, query transceiver Digital Diagnostic Monitoring (DDM). FortiOS flags status thresholds: ++ (High Alarm), + (High Warning), - (Low Warning), -- (Low Alarm / link loss imminent), and ? (DDM unsupported). RX optical power displaying -- (typically < -18 dBm) confirms physical fiber attenuation or severe contamination.
# [WINDOW 1 - HARDWARE OPTICAL AUDIT]
get system interface transceiver <interface_name>
diagnose hardware deviceinfo nic <interface_name>
# Interpret alarm flags: ++ (High Alarm), + (High Warn), - (Low Warn), -- (Low Alarm)
Inspect physical layer error counters (CRC, Runts, Alignments)
Audit hardware MAC error statistics. Growing CRC errors point directly to physical fiber bend, dirty ferrule, or failing transceiver optics.
diagnose hardware nic <interface_name>
# Check rx_crc_errors, rx_frame_errors, and tx_aborted_errors
Hardcode speed / duplex & toggle auto-negotiation
When connecting to third-party switches that fail IEEE auto-negotiation, explicitly configure fixed speed and duplex parameters.
config system interface
edit <interface_name>
set speed 10000full
set auto-negotiation disable
next
end
Execute single-variable physical component swap
Swap one physical variable at a time (Fiber patch lead -> Optic transceiver -> Switch port) while watching Window 2 for link stabilization.
# Watch Window 2 for carrier stability:
diagnose netlink interface list <interface_name> | grep -i state