Skip to content

Routes are being withdrawn from kernel after session flap with 'clear bgp ...' #18240

@dawkop

Description

@dawkop

Description

When we have a scenario with 1 frr box which is peered with 3 route-servers that advertise the same evpn routes, after clearing a session with 1 of them, all routes are being immediately withdrawn from kernel and re-added after session comes back up. This causes a downtime if there is a significant number of routes to be processed.

Version

My reproduction uses 10.1.1, however the same happens on 10.3-dev

3d4364ce7392# show ver
FRRouting 10.1.1 (3d4364ce7392) on Linux(5.15.0-127-generic).

How to reproduce

I have provided an instruction in my public repo here, just follow README.md in session_flap directory.

Expected behavior

This is a question to FRR maintainers with more expertise, should that be the case? My initial suspicion was that only routes being marked as best-path are being withdrawn, but that is not the case.

Actual behavior

Having routes withdrawn from kernel even though after session clear even though we receive the same routes from at least 1 additional peer.

Additional context

I have did some investigation after which PR it started to behave this way (in frr 8.4.2 this was not the case and when we cleared one out of 3 sessions, the routes were not withdrawn from kernel). The PR after it started to be noticeable was this one. Specifically this line causes immediate withdrawal. I am not sure if that is expected (according to the comment, this withdrawal was added 7 years ago, I do not know what were the circumstances, would need a comment from someone with more knowledge).

Checklist

  • I have searched the open issues for this bug.
  • I have not included sensitive information in this report.

Metadata

Metadata

Assignees

No one assigned

    Labels

    triageNeeds further investigation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions