Troubleshooting enterprise routing on Junos: RE/PFE architecture, the toolbox (show route, traceoptions, monitor traffic), a layered methodology, and protocol-by-protocol OSPF/IS-IS/BGP failure modes, policy, preference and ECMP load-balancing.
Troubleshooting routing on Junos is a discipline: know the architecture (where control-plane and forwarding-plane state live), reach for the right tool, and work a protocol failure methodically — adjacency first, then routes, then forwarding. This page is a vendor-neutral, original walkthrough of the enterprise-routing troubleshooting scope (OSPF, IS-IS, BGP, policy, load-balancing) in Junos terms.
The mental split on any Junos box: the Routing Engine (RE) runs the control plane (rpd, the RIB /inet.0) and the Packet Forwarding Engine (PFE) holds the FIB and forwards. "Route in the RIB but traffic drops" → suspect the RIB→FIB gap or the PFE.
rpd builds routing tables; the FIB is pushed to the PFE. Compare
show route (RIB) with show route forwarding-table (FIB) when they disagree.commit check, commit confirmed,
show | compare and show configuration | display set to see exactly what changed.| Tool | Use |
|---|---|
show route [detail|extensive] | What's in the RIB, why a route is active, preference, next-hop resolution. |
show <proto> neighbor / interface / database | Adjacency state and link-state/BGP data per protocol. |
traceoptions | Per-protocol debug to a file with fine-grained flags (e.g. hello, error, route) — the core Junos debug. |
monitor traffic interface | tcpdump on RE-bound traffic (control plane) — careful, only punted packets. |
show route forwarding-table | The FIB the PFE actually uses. |
ping / traceroute (+ routing-instance) | Reachability, per-VRF. |
show log messages, show system processes | rpd health, crashes, resource limits. |
show | compare, rollback history).Adjacency walks Down → Init → 2Way → ExStart → Exchange → Full. Where it
stalls tells you the fault:
| Stuck at | Usual cause |
|---|---|
| Init / not forming | Hello/dead timer mismatch, area ID mismatch, auth mismatch, subnet/mask mismatch, wrong network type, interface passive, ACL/filter dropping 224.0.0.5. |
| ExStart / Exchange | Classic MTU mismatch — DBD packets can't be exchanged. |
| 2Way (expected) | Both are DROther on a broadcast segment — fine, not a fault. |
Verify with show ospf neighbor, show ospf interface [detail] (area, type, timers, MTU),
show ospf database; enable traceoptions flag hello / flag error. Route not
chosen? Check LSA presence, area type (stub/NSSA), and external metric type.
show isis adjacency [detail], show isis interface, show isis database;
traceoptions with adjacency/hello flags.Session FSM: Idle → Connect → Active → OpenSent → OpenConfirm → Established.
Stuck in Active/Connect = TCP/reachability problem.
| Symptom | Check |
|---|---|
| Won't establish | Reachability to the peer (loopback via IGP for iBGP), local-address, local/peer AS, TTL/multihop for eBGP, auth/MD5, firewall filter on port 179. |
| Established but no routes received | Peer's export policy, your import policy, address family activated, RR/cluster config. |
| Routes received but not used / not advertised | Next-hop unresolved (need inet.3 for labeled, or an IGP route to the NH), your export policy, best-path loss. |
show bgp summary, show bgp neighbor, show route receive-protocol bgp <peer>
/ advertising-protocol bgp <peer>, and show route resolution for next-hop resolution.
show route <prefix> detail shows the
protocol preference (Junos "admin distance"), tie-breakers, and the active flag. Lower preference
wins (Direct 0, OSPF 10, IS-IS L1 15, static 5, eBGP 170, iBGP 170).test policy <name> <prefix>. Watch import vs export direction and RIB groups.load-balance per-packet (which is actually
per-flow hashing) to program multiple next-hops in the PFE. "ECMP in the RIB but only one path forwards" = missing
that policy.show route detail, preference)commit confirmed, show | compare, rollback)