Ferritaas Incident Intelligence
Defect Intelligence Report Bug 0869115 Severity: High (P2)

OSPF NSSA External LSA Type 7 to Type 5 Translator Loop

Dual FortiGate Area Border Routers (ABRs) connecting an OSPF Not-So-Stubby Area (NSSA) to Area 0 enter an infinite Type-7 to Type-5 LSA translation race condition, causing rapid routing table churn, packet drops, and 100% CPU utilization in routerd.

Technical Root Cause Analysis

In standard OSPF NSSA deployments (RFC 3101), autonomous system external routes are injected into the NSSA as Type-7 LSAs. When multiple Area Border Routers link the NSSA back to the Area 0 backbone, a deterministic election chooses the ABR with the highest Router ID to translate Type-7 LSAs into Type-5 external LSAs, setting the P-bit (Propagate bit) to 0.

In affected FortiOS releases, when external routes are redistributed into the NSSA with non-zero Forwarding Addresses (FA), both ABRs receive each other's regenerated Type-5 LSAs across Area 0. The internal OSPF state machine inside routerd interprets the received Type-5 as a signal that the peer has relinquished translation duties. Both firewalls simultaneously flip their election states, flush active Type-5 LSAs, re-originate new Type-5 LSAs with incremented sequence numbers, and flood the backbone. This continuous loop leads to flapping routing table entries and route cache invalidation.

[routerd 1042] ospf_nssa_translator_elect: Router-ID 10.254.1.1 won election, becoming TRANSLATOR [routerd 1042] ospf_lsa_originate: Type-5 LSA 192.168.100.0/24 seq 0x80000041 adv 10.254.1.1 [routerd 1042] ospf_rx_lsa: received conflicting Type-5 LSA 192.168.100.0/24 from peer 10.254.1.2 [routerd 1042] ospf_nssa_translator_stepdown: stepping down from TRANSLATOR role [routerd 1042] ospf_lsa_flush: flushing Type-5 LSA 192.168.100.0/24 seq 0x80000042 [kernel] netlink: rt_del failed (route flapping 14 times per second)

Affected Firmware & Blast Radius Matrix

FortiOS Branch Vulnerable Builds Confirmed Clean Build Status & Workaround
FortiOS 7.2 7.2.4 – 7.2.6 7.2.7+ Set static nssa-translator-role always / never
FortiOS 7.0 7.0.10 – 7.0.15 7.0.16+ Manually pin translation role on primary ABR
FortiOS 7.4 7.4.0 – 7.4.1 7.4.2+ Clean state machine logic implemented in 7.4.2

Platform Impact: Affects FortiGate 100F, 200F, and 400F clusters deployed as redundant enterprise ABRs interconnecting multi-area OSPF topologies with NSSA redistribution.

Step 01: Free Verification CLI (Safe Read-Only)

Execute these commands to detect whether your OSPF database is experiencing Type-7 to Type-5 translator election thrashing:

Diagnostic Commands

# 1. Query the OSPF NSSA external LSA database for rapid sequence churn
get router info ospf database nssa-external

# 2. Inspect active OSPF routing table entries and route age
get router info routing-table ospf

# 3. Check OSPF general status, router ID, and translator election role
get router info ospf status

# 4. Filter real-time OSPF LSA generation and translation events
diagnose ip router ospf level info
diagnose ip router ospf show lsa-timer

Remediation & Workaround Steps (Teaser Preview)

Follow the complete step-by-step remediation guide in the interactive Ferrite platform:

Step 02: Audit Redundant ABR Router IDs and NSSA Area Configuration

Extract OSPF area parameters and verify current nssa-translator-role values across both firewalls.

🔒 Interactive CLI Available in Ferrite Runbook #12

Step 03: Enforce Deterministic Translator Roles (Zero Flapping)

Configure 'set nssa-translator-role always' on Primary ABR and 'never' on Secondary ABR to halt election loops.

🔒 Interactive CLI Available in Ferrite Runbook #12

Step 04: Clear OSPF Process Gracefully without Disrupting Adjacencies

Quiesce the OSPF database without bouncing physical interfaces or dropping established neighbor adjacencies.

🔒 Interactive CLI Available in Ferrite Runbook #12
⚡ Ferrite Platform Superpowers

Execute the Complete Runbook with Live Browser Automation

Connect your FortiGate via browser console (Web Serial) or local SSH bridge, verify each command in real-time, generate ready-to-run Tera Term scripts, and export sanitized TAC dossiers.

Live Browser Automation Direct terminal connection with live step checkoff.
📟
1-Click Tera Term (.ttl) Generate scripts for air-gapped jumpboxes.
🛡️
Zero-Trust Scrubber Scrub serials and credentials in local browser RAM.
📄
TAC P1 Escalation Dossier Standardized evidence export with SHA-256 seal.

Frequently Asked Questions

What triggers Bug 0869115 in OSPF NSSA environments?

Under RFC 3101, when multiple Area Border Routers connect an NSSA to the backbone, only the router with the highest Router ID should translate Type-7 LSAs into Type-5 LSAs. Due to an election sync defect in FortiOS routerd, when both ABRs receive external routes redistributed with forwarding addresses, both nodes attempt simultaneous translation, oscillating the translator bit and causing continuous LSA churn.

What is the non-disruptive production workaround?

Under 'config router ospf -> config area', manually set 'set nssa-translator-role always' on the primary ABR, and 'set nssa-translator-role never' on the backup ABR. This overrides dynamic election and eliminates race conditions immediately.

Which FortiOS versions resolve Bug 0869115?

The dynamic RFC 3101 translator state machine is resolved in FortiOS 7.2.7, 7.4.2, and all later maintenance releases.