fix(table): preserve last action for the same path in coalesced updates#3428
Open
rastislavs wants to merge 1 commit into
Open
fix(table): preserve last action for the same path in coalesced updates#3428rastislavs wants to merge 1 commit into
rastislavs wants to merge 1 commit into
Conversation
As of c86f89e outgoing BGP UPDATE messages are coalesced before packing them. The packers serialize withdrawals before announcements, so if an announcement and withdrawal for the same NLRI/path-id are coalesced in one packing pass, the final wire order can invert the original action sequence. Collapse the path list by local path key before handing it to the family packers, keeping only the final non-EOR action while still preserving EOR markers. This makes announce-then-withdraw produce only a withdrawal, and withdraw-then-announce produce only an announcement.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
As of c86f89e outgoing BGP UPDATE messages are coalesced before packing them. The packers serialize withdrawals before announcements, so if an announcement and withdrawal for the same NLRI/path-id are coalesced in one packing pass, the final wire order can invert the original action sequence.
Collapse the path list by local NLRI/path-id before handing it to the family packers, keeping only the final action.
This makes announce-then-withdraw produce only a withdrawal, and withdraw-then-announce produce only an announcement.