🧵 Triage Like a Pro: Essential Commands to Troubleshoot NNIs & Trunk Circuits
A practical guide for service provider engineers to quickly triage NNI and trunk circuits using proven CLI commands on Juniper, Cisco IOS, and IOS-XR gear.

When a service provider link goes dark—whether it’s an NNI or a trunk circuit—it becomes a race. One router’s "line protocol down" means someone somewhere lost service. As a network engineer, your job is to isolate, validate, and fix—fast.
This post walks you through the initial triage of NNIs and trunk circuits across Juniper, Cisco IOS-XR, and Cisco IOS, using tried-and-true commands I rely on every day.
💡 What Is an NNI?
An NNI (Network-to-Network Interface) is the interconnect between two networks—often between service providers, or between core and edge systems. It’s the bridge where routing, reachability, and responsibility collide. If a backbone is the heart, NNIs are the arteries.
These interfaces are high-value links, usually involving BGP, VRFs, and strict SLAs. When they go down, it’s not a small problem.
🔌 What’s a Trunk in This Context?
From the provider side, a trunk circuit usually refers to a tagged (dot1q) interface carrying multiple customer services, either via VLANs or virtual circuits. These often backhaul enterprise services, L2VPNs, or L3VPNs. A failure here can impact a whole batch of customer endpoints.
🛠️ What Is Triage?
Triage means identifying the issue’s scope, cause, and responsibility—fast. You’re not solving everything in one go. You’re slicing through layers:
- Is the interface physically up?
- Is optical power OK?
- Is the protocol (OSPF/BGP/ISIS) neighbor up?
- Are packets flowing?
- Is it our fault? Or theirs?
Once that’s clear, you escalate, resolve, or close.
🧰 My Standard Triage Commands
Here’s my personal cheat sheet. Whether I’m debugging NNIs or trunks, these get me moving with clarity.
🧵 NNI Triage Commands
🟦 Juniper
# Physical & Interface Overview
show chassis alarms
show interfaces description | match <Circuit_ID>
show interfaces <interface_name> extensive
show log messages | match SNMP | match <circuit ID> | except <circuit ID>.
monitor interface <interface_name>
clear interface statistics <interface_name>
# Optics & Hardware
show interfaces diagnostics optics <interface_name> | match dBm
show interfaces diagnostics optics <interface_name> | except th | match dBm | except th
show chassis fpc
# VRF & BGP Checks
show interfaces terse routing-instance all | match <interface_name>
show bgp summary instance <Instance_ID>
🟩 Cisco IOS-XR
# Physical & Interface Overview
show interfaces description | include <Circuit_ID>
show interfaces <interface_name>
show log | include <interface_name>, | include UPDOWN
monitor interface <interface_name>
clear counters <interface_name>
# Optics
show controllers <interface_name> phy | include dB
show controllers <interface_name> phy
# VRF & BGP Checks
show ip vrf all interface brief | include <interface_name>
show bgp vrf <Instance_ID> summary
🟥 Cisco IOS
# Interface & Log Checks
show interfaces description | include <Circuit_ID>
show interfaces <interface_name> # Run 2x to validate counters
show log | include <interface_name> | include UPDOWN
clear counters <interface_name>
# Diagnostics
show controllers
show controllers <interface_name>
# VRF & BGP
show vrf brief | include <interface_name>
show ip bgp vpnv4 vrf <Instance_ID> summary
🔧 Trunk Circuit Triage Commands
🟦 Juniper
# Physical & Interface Overview
Show chassis alarms
show interfaces description | match <Circuit_ID>
show interfaces <interface_name> extensive
monitor interface <interface_name>
clear interface statistics <interface_name>
# Interface Config & Metrics
show configuration | display set | match <interface_name>
show configuration | display set | match <interface_name> | match metric
# Logs
show log messages | match OSPF | match Full | match <interface_name>
show log messages | match isis | match <interface_name>
show log messages | match <interface_name
# Trunks
show interfaces description | match TRK
# Neighbor / Protocols
show ospf neighbor detail | find <interface_name>
show ospf neighbor logical-system <logical-system NAME> detail | find <interface_name>
show isis adjacency detail | find <interface_name>
show mpls interface detail | find <interface_name>
show l2circuit connections | find <interface_name>
# Optics & Hardware
show interfaces diagnostics optics <interface_name> | match dBm
show interfaces diagnostics optics <interface_name> | except th | match dBm | except th
show chassis fpc
🟩 Cisco IOS-XR
# Physical & Interface Overview
show interfaces description | include <Circuit_ID>
show interfaces <interface_name>
show log | include <interface_name>, | include UPDOWN
monitor interface <interface_name>
clear counters <interface_name>
# Neighbor / Protocols & Metrics
show ip ospf interface brief | include <interface_name>
sho ospf neighbor
sho ospf neighbor | b <interface_name>
# Trunks
show interfaces description | include TRK
# Optics & Hardware
show controllers <interface_name> phy | include dB
show controllers <interface_name> phy
show controller sonet <interface_name>
clear controller sonet <interface_name>
🟥 Cisco IOS
# Interface Overview
sho interfaces description | include <Circuit_ID>
show interfaces <interface_name>
show log | include <interface_name> | include OSPF | include FULL
clear counters <interface_name>
# OSPF Neighbor & Interface Info
show ip ospf interface brief | include <interface_name>
show ip ospf neighbor detail | begin <interface_name>
show ip ospf neighbor detail
# Controllers
show controllers
show controllers <interface_name>
# Trunks
show interfaces description | include TRK
🚦Final Thoughts
Whether you're isolating a flapping NNI or digging into a misbehaving trunk, these commands are the ones I reach for first. They’ve helped me cut through the noise, validate the basics, and move toward resolution fast—because in a service provider world, there’s no room for guesswork when customers are watching.
I may eventually add a few more commands for legacy lab environments—like ALU, Tellabs, or Nokia 7750s—for those still wrangling older gear.
Got a favorite command that’s earned its place in your toolbox? Let’s grow this backbone together—connect with me on LinkedIn or drop a comment below.—I’d love to hear what gets you through when packets stop flowing and the pressure’s on.
--Bryan Steele