Customers may sometimes notice the "No jtree memory for PDP" syslog message on MX Series routers. This article explains why and when this message may be seen and what is the ideal solution to prevent such a message from being output.
The following log messages are seen on the production device. Further, BGP routes are not being received from multiple BGP peers:
Jul 12 08:58:24.374 2021 JTAC-re1 : %PFE-3: fpc8 NH: unable to create RNH_HOLD ENH entry Jul 12 08:58:24.449 2021 JTAC-re1 : %PFE-3: fpc8 PDP(pdp_alloc): No jtree memory for PDP Jul 12 08:58:24.524 2021 JTAC-re1 : %PFE-3: fpc8 RT: Failed prefix add IPv4 - 202.176.223.214 (pdp allocation failed) on FE 0 Jul 12 08:58:24.638 2021 JTAC-re1 : %PFE-3: fpc8 RT: IPv4:0 - 202.176.223.214 (add rt entry into jtree failed) Jul 12 08:58:24.735 2021 JTAC-re1 : %PFE-3: fpc8 RT-HAL,rt_entry_add_msg_proc,3035: rt_halp_vectors->rt_create failed Jul 12 08:58:24.857 2021 JTAC-re1 : %PFE-3: fpc8 RT-HAL,rt_entry_add_msg_proc,3095: proto ipv4,len 32 prefix 202.176.223.214 nh 6614 Jul 12 08:58:24.962 2021 JTAC-re1 : %PFE-3: fpc8 RT-HAL,rt_msg_handler,604: route process failed
Upon checking, it was determined that the "jtree memory" of "segment 0" had reached 99%, indicating a jtree memory exhaustion. This in turn was affecting the route update/add/delete operations on the device.
ADPC11(EN-SINKC2-BO101-re0 vty)# show jtree 0 memory Jtree memory segment 0 (Context: 0x44b15940) ------------------------------------------- Memory Statistics: 16777216 bytes total 16672464 bytes used <<<<<<< 99% utilization 95432 bytes available (512 bytes from free pages) 3528 bytes wasted 5792 bytes unusable 32768 pages total 30549 pages used (2571 pages used in page alloc) 2218 pages partially used 1 pages free (max contiguous = 1) Jtree memory segment 1 (Context: 0x44b97460) ------------------------------------------- Memory Statistics: 16777216 bytes total 4634616 bytes used 12139744 bytes available (12137984 bytes from free pages) 1720 bytes wasted 1136 bytes unusable 32768 pages total 9054 pages used (8970 pages used in page alloc) 7 pages partially used 23707 pages free (max contiguous = 23707) -------------------------------------------
The jtree memory on all Packet Forwarding Engines (PFEs) in all MX, all M120, and some M320, M10i, M7i, T640, T1600, TX Matrix, TX Matrix Plus routers has two segments: one segment primarily stores routing tables and their related information, and the other mainly stores firewall filter–related information.
Therefore, even though the memory in "segment 0" has reached 99% as shown in the above output, the device still did not use the memory in "segment 1" for the routing table. This is because, by default, the memory of "segment 1" is only for firewall filter–related information.
To prevent the memory exhaustion, you can configure " set chassis memory-enhanced route " to support larger memory allocation for routing tables over filters. This enables routing tables to also use segment 1's memory. Note that FPC reboot is needed after commit to implement this this change.
set chassis memory-enhanced route