I dont know the bird internals exactly, but iirc this is implemented to save tracking as you mentioned in the code.
According to
RFC 2918
Otherwise, the BGP speaker shall re-
advertise to that peer the Adj-RIB-Out of the <AFI, SAFI> carried in
the message, based on its outbound route filtering policy.
--> No withdraw mentioned
I think in some situations it makes sense to withdraw all known routes, but the still active ones to create a consistent table on the receiver side.
What is the peer device btw?
Rgds, SJ
P.S.: Sorry for TOFU
On Thu, Dec 10, 2015 at 12:10:35PM +0200, Christos Trochalakis wrote:
>Hello all,
>
>While debugging a route-refresh issue we discovered that when a route-refresh
>is received, bird, instead of just sending an update containing the exported
>routes, also withdraws **all known routes** from its peer. In our case, it
>withdraws the whole FIRT sending multiple BGP updates. Is this the expected
>behaviour? We are using bird 1.4.5.
>
>We believe that the opposite router has trouble processing all those withdrawed
>routes which leads to other connectivity issues.
>
Any comments on that?
Let me restate the issue, bird withdraws every route in its routing
table despite the fact that those routes were never exported to that
protocol. I am not familiar with bird internals so I don't know if bird
keeps track of the exported routes per protocol.