A jtree memory is a binary tree that is used for storing number of nexthops installed for routes, prefix length of a route etc.
If the device is having a lot of installed routes , then the jtree memory will be fully utilized and end up failing to install new routes on the PFE sides which can cause a traffic to take default routes.
Once the memory is fully consumed, you will find the below log messages :
May 23 08:58:57 srxlab fpc0 RT: IPv6:13 - 2000:0:0:fbab::/64 (add rt entry into jtree failed)
May 23 08:58:57 srxlab fpc0 PFE_ERROR_FAIL_OPERATION: rt_halp_vectors->rt_create failed
May 23 08:58:57 srxlab fpc0 PFE_ERROR_FAIL_OPERATION: proto ipv6,len 64 prefix 2000:0:0:abdb::/64 nh 262143
May 23 08:58:57 srxlab fpc0 PFE_ERROR_FAIL_OPERATION: route process failed
May 23 08:58:57 srxlab fpc0 RT(0): Failed prefix add IPv6 - 2000:0:0:abdb::/64 (No memory)
Jtree memory is fixed and it cannot be increased which make it as limitation to the product. So, The number of routes supported can vary based on feature enabled, application using Jtree memory,
The recommendation is to consider route summarization for dynamic routing protocol to reduce the installed routes.
root@srxlab> show route summary
May 23 09:21:49
Autonomous system number: 65008
Router ID: 10.252.47.203
Highwater Mark (All time / Time averaged watermark)
RIB unique destination routes: 840196 at 2024-05-23 09:19:40 / 0 <<< reduce these route numbers
RIB routes : 840198 at 2024-05-23 09:19:40 / 0
FIB routes : 840172 at 2024-05-23 09:19:54 / 0
In case routes are increased over the time, keep an eye on the below counter before it hits the issue.
FLOWD_SRX4600(srxlab vty)# show jtree 0 memory extensive
Memory Statistics:
16777216 bytes total (1 banks)
16737128 bytes used
40088 bytes free
16256 pages total
16256 pages used
0 pages free <<< All pages are used up
31 max freelist size
https://gnats.juniper.net/web/default/1811199