summaryrefslogtreecommitdiff
path: root/lib/command.c
diff options
context:
space:
mode:
authorMobashshera Rasool <mrasool@vmware.com>2021-11-05 00:11:57 -0700
committerMobashshera Rasool <mrasool@vmware.com>2021-11-18 21:46:07 -0800
commit62596d9a1f8bf58759192dbf59bf801c4bf56aea (patch)
tree217ce06a7dc53dfdb76f9dcd508992aef64d4fc6 /lib/command.c
parent3c522938091a074b0ad85460d56e393cd39cc2e9 (diff)
pimd : packet processing optimization on rp change
Problem Statement: ================== on rp_change, PIM processes all the upstream in a loop and for selected upstreams PIM has to send join/prune based on the RPF changed. join and prune packets are not getting aggregated in a single packet. Root Cause Analysis: ==================== on pim_rp_change pim_upstream_update() gets called for selected upstreams. This API calculates to whom it has to send join and to whom it has to send prune via API pim_zebra_upstream_rpf_changed(). This API peprares the upstream_switch_list list per interface and inserts the group and sources. Now PIM is still in the pim_upstream_update() API context, i.e PIM is still processing the same upstream. In the last there is a call to pim_zebra_update_all_interfaces() which processes the upstream_switch_list list, sends the packets out and clears the list. Fix: ==== Don't process the upstream_switch_list in the upstream context. process all the upstreams prepare the upstream_switch_list and then process in one go. This will club all the S,G entries. It also saves list cleanup with respect to memory allocation and deallocation multiple times. Signed-off-by: Vishal Dhingra <rac.vishaldhingra@gmail.com> Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
Diffstat (limited to 'lib/command.c')
0 files changed, 0 insertions, 0 deletions