]> git.puffer.fish Git - mirror/frr.git/commit
bgpd: Do not send BGP UPDATE if the route actually not changed
authorDonatas Abraitis <donatas.abraitis@gmail.com>
Thu, 12 Nov 2020 10:30:19 +0000 (12:30 +0200)
committerDonatas Abraitis <donatas.abraitis@gmail.com>
Fri, 11 Dec 2020 12:51:05 +0000 (14:51 +0200)
commit2adac2562a02fb20cb5fc783c2e6019a1a76354f
treebba5c614ff7931bc77ed7d44a00e7ab617e32dba
parentb64e1733746a2cabb5b25b283407c095fc1c8c3a
bgpd: Do not send BGP UPDATE if the route actually not changed

Reference: https://www.cmand.org/communityexploration

                     --y2--
                    /  |   \
  c1 ---- x1 ---- y1   |   z1
                    \  |   /
                     --y3--

1. z1 announces 192.168.255.254/32 to y2, y3.
2. y2 and y3 tags this prefix at ingress with appropriate
communities 65004:2 (y2) and 65004:3 (y3).
3. x1 filters all communities at the egress to c1.
4. Shutdown the link between y1 and y2.
5. y1 will generate a BGP UPDATE message regarding the next-hop change.
6. x1 will generate a BGP UPDATE message regarding community change.

To avoid sending duplicate BGP UPDATE messages we should make sure
we send only actual route updates. In this example, x1 will skip
BGP UPDATE to c1 because the actual route is the same
(filtered communities - nothing changes).

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
bgpd/bgp_advertise.h
bgpd/bgp_nb.c
bgpd/bgp_nb.h
bgpd/bgp_nb_config.c
bgpd/bgp_packet.c
bgpd/bgp_updgrp.c
bgpd/bgp_updgrp.h
bgpd/bgp_updgrp_adv.c
bgpd/bgp_vty.c
bgpd/bgpd.h
yang/frr-bgp-common.yang