LT C
2017-05-23 08:34:37 UTC
Hi,
If "aggregate-address" is set with the option summary-only, the suppress count will be changed and bgp_process() be called in bgp_aggregate_delete() and bgp_aggregate_route() when the incoming prefix matches the configured aggregate address. A call to bgp_process() will allocate three types of memory buffer called MTYPE_LINK_NODE, MTYPE_WORK_QUEUE_ITEM and MTYPE_BGP_PROCESS_QUEUE, because it queues the process and puts it into the backgroud thread list. When we do a stress testing including quite many injected prefixes, such as 4K or more, the memory is consumed on a scale of n^2, i.e., almost 4096^2 for this case. This consumes about 1.5G memory in real testing and should be unacceptable.
Is there any better treatment for this problem?
Liting
If "aggregate-address" is set with the option summary-only, the suppress count will be changed and bgp_process() be called in bgp_aggregate_delete() and bgp_aggregate_route() when the incoming prefix matches the configured aggregate address. A call to bgp_process() will allocate three types of memory buffer called MTYPE_LINK_NODE, MTYPE_WORK_QUEUE_ITEM and MTYPE_BGP_PROCESS_QUEUE, because it queues the process and puts it into the backgroud thread list. When we do a stress testing including quite many injected prefixes, such as 4K or more, the memory is consumed on a scale of n^2, i.e., almost 4096^2 for this case. This consumes about 1.5G memory in real testing and should be unacceptable.
Is there any better treatment for this problem?
Liting