Skip to content

dpdk: fix IPv6 LPM table#525

Merged
AltraMayor merged 1 commit intomasterfrom
fix-dpdk
Aug 23, 2021
Merged

dpdk: fix IPv6 LPM table#525
AltraMayor merged 1 commit intomasterfrom
fix-dpdk

Conversation

@AltraMayor
Copy link
Owner

DPDK's LPM table for IPv6 has a bug that truncates the next hop field of LPM rules. Given that the bug truncates
the next hop field to 8 bits, the problem only happens when the largest next hop field is larger than 255.

The truncation will be triggered during regular operation and saved in the table. And it always happens while iterating over
LPM6 tables.

In Gatekeeper, the problem manifests in an array of symptoms, for example (non-exhaustive list):

  1. Failed asserts on FIB entries with an invalid action. This happens when one of the prefixes that map to the same
    truncated entry is removed and an access to one of the other prefixes is made.

  2. Lots of extra editing activities from routing daemons. Since the FIB is never exactly how routing daemons expects
    it to be, routing daemon keeps editing the FIB.

  3. The script show_fib6_grantor.lua of command gkctl may list multiple extra FIB entries with action GK_FWD_GRANTOR.
    The extra Grantor entries are just entries whose next hop field is being truncated to the next hop of a Grantor FIB entry.

DPDK's LPM table for IPv6 has a bug that truncates
the next hop field of LPM rules. Given that the bug truncates
the next hop field to 8 bits, the problem only happens when
the largest next hop field is larger than 255.

The truncation will be triggered during regular operation and
saved in the table. And it always happens while iterating over
LPM6 tables.

In Gatekeeper, the problem manifests in an array of symptoms,
for example (non-exhaustive list):

1. Failed asserts on FIB entries with an invalid action.
   This happens when one of the prefixes that map to the same
   truncated entry is removed and an access to one of the other
   prefixes is made.

2. Lots of extra editing activities from routing daemons.
   Since the FIB is never exactly how routing daemons expects
   it to be, routing daemon keeps editing the FIB.

3. The script show_fib6_grantor.lua of command gkctl may list
   multiple extra FIB entries with action GK_FWD_GRANTOR.
   The extra Grantor entries are just entries whose next hop field
   is being truncated to the next hop of a Grantor FIB entry.
@AltraMayor AltraMayor added the bug label Aug 21, 2021
@AltraMayor AltraMayor added this to the First deployment milestone Aug 21, 2021
@AltraMayor AltraMayor merged commit d983cae into master Aug 23, 2021
@AltraMayor AltraMayor deleted the fix-dpdk branch August 23, 2021 14:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant