Description


On an MX204 router running Junos OS 23.2R2-S1.3, an RPD crash was observed immediately after applying a route policy change.

The device was operating near its maximum route scale and showed signs of swap memory usage and severe memory pressure, ultimately leading to the termination of the RPD process due to memory exhaustion.

  • Model: MX204
  • Memory Mode: 24 GB (maximum supported)
  • Software Version: Junos OS 23.2R2-S1.3
  • Role: Route Reflector
  • Route Scale: ~20 million routes (across inet.0 and inet6.0)
  • Supported Route Scale: Up to 30 million routes (depending on configuration and features)

 

Symptoms

  • RPD process crashed after applying a route policy.
  • No core file was generated during the crash.
  • Swap memory usage observed at 2% under normal conditions.
  • System logs indicated low free memory pages and RPD termination due to swap exhaustion.

 

Mmm dd hh:mm:ss router-1 kernel: rts_veto_sys_check_low_on_pages: Severe memory pressure, low-free-pages is below threshold. Op 4 err 55, rtsm_id 0:-1, msg type 5, veto simulation: 0.

Mmm dd hh:mm:ss router-1 kernel: rts_veto_sys_check_low_on_pages: number of pages free = (23294) free page threshold = (23309) number of free pages desired = (30567) veto threshold (high) = (26938) veto threshold (low) = (23309) error = No Buffer curproc = chassisd.

Mmm dd hh:mm:ss router-1 kernel: pid 17362 (rpd), jid 0, uid 0, was killed: out of swap space

Mmm dd hh:mm:ss router-1 jlaunchd[17072]: routing (PID 17362) terminated by signal number 9!

Mmm dd hh:mm:ss router-1 jlaunchd[17072]: Registered PID 65267(routing): exec_command

Mmm dd hh:mm:ss router-1 jlaunchd[17072]: routing (PID 65267) started

 

There was no core generated during a crash. The router is showing 2% swap memory in normal condition from the RSI status.  

last pid: 88299; load averages: 0.57, 0.44, 0.41 up 79+05:13:56   07:50:04

494 threads:  6 running, 436 sleeping, 1 zombie, 51 waiting

CPU: 3.1% user, 0.0% nice, 1.2% system, 0.3% interrupt, 95.4% idle

Mem: 11G Active, 6855M Inact, 88M Laundry, 1141M Wired, 476M Buf, 4991M Free

Swap: 12G Total, 362M Used, 12G Free, 2% Inuse

 

root@router-1> show route summary
 
Autonomous system number: ####
Router ID: ##.###.##.###
Maximum ECMP: 64
 
Highwater Mark (All time / Time averaged watermark)
    RIB unique destination routes: 1345552 at 2025-04-17 04:00:35 / 0
    RIB routes                   : 20783283 at 2025-04-17 03:29:19 / 0
    FIB routes                   : 15080 at 2025-04-17 02:40:09 / 0
    VRF type routing instances   : 0 at 2025-04-17 00:52:05
 
inet.0: 1111379 destinations, 17326664 routes (1111378 active, 448 holddown, 12 hidden)
              Direct:      5 routes,      4 active
               Local:      2 routes,      2 active
                 BGP: 17318519 routes, 1103234 active
              Static:      3 routes,      3 active
               IS-IS:   8134 routes,   8134 active
                 LDP:      1 routes,      1 active
...
IP2-v6.inet6.0: 213545 destinations, 3301966 routes (213545 active, 0 holddown, 0 hidden)
                 BGP: 3301962 routes, 213541 active
              Static:      4 routes,      4 active
...

 

 

Solution

    Solution & Recommendations:

    • Regularly monitor memory and swap usage using system commands to detect early signs of pressure.
    • Given the high route scale (~20 million routes), optimising route advertisements through summarisation or filtering can help reduce memory pressure.
    • Avoid large-scale policy changes if high route churn conditions are observed on device,  to prevent excessive memory allocation demand.
    • The RPD process was automatically restarted by jlaunchd, restoring routing functionality without manual intervention.
    • The crash was caused by memory exhaustion due to high route scale and rapid route churn, and then more memory demand was triggered by a policy change.

    Modification History

    2025-06-19 : Article Created