oxidecomputer / oxidecomputer/opte
Recast route caching as an LPM, make multipath decisions locally
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 77
- Forks
- 11
- Avg merge
- 9d 20h
- Merged PRs (30d)
- 8
Description
As of #499, we have a fairly simple cache in front of calls to next_hop. However, this includes the L4 Hash as part of the lookup key to maintain path diversity between flows, as we route via a chosen underlay device each time. As a result, this is going to have fairly poor scaling characteristics.
See the discussion on that PR: we can vastly reduce the number of entries we need, and cast the lookup as an LPM query. However, to do so we need to:
- Walk and refresh the entire set of route entries linked in an IRE, which will reimplement some logic from illumos,
- Locally decide between multiple routes.
Doing so will allow us to maintain a shared route cache of O(sleds), and/or make use of per-packet multipath if we choose to.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with PR #499 and its linked discussion, then trace the cache in front of next_hop and the route entries linked in an IRE. Done means the cache uses an LPM query, the full IRE route set is refreshed, and multipath choices are made locally.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- networking
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100