Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

NAT encapsulated flows have one 5-tuple per sled

Open
#324 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Domain
networking

Research direction

Start with the linked sections of dpd/p4/sidecar.p4, especially lines 515-516, 527, and 529-530, and trace how encapsulated packets are hashed before reaching the NIC. Determine how the inner 5-tuple can influence the encapsulation UDP source port, then verify that external-to-guest packets distribute across rings while viona ring hashing remains intact.

Written by the indexing model from the issue text.

Description

https://github.com/oxidecomputer/dendrite/blob/f9fba02fd5351f468b15bda21d83d6dedae90818/dpd/p4/sidecar.p4#L515-L516
https://github.com/oxidecomputer/dendrite/blob/f9fba02fd5351f468b15bda21d83d6dedae90818/dpd/p4/sidecar.p4#L527
https://github.com/oxidecomputer/dendrite/blob/f9fba02fd5351f468b15bda21d83d6dedae90818/dpd/p4/sidecar.p4#L529-L530

I think as a consequence every packet from the external network to a guest will have the same flowhash when seen by the NIC, and thus land on the same ring and softring. Packets will at least be hashed among viona rings properly, since we're using the inner 5-tuple at that point.

We probably need to hash (some of?) the inner 5-tuple and place it in the encap's UDP source port field.

Dominant language
Rust
Stars
21
Forks
3
Avg merge
10h 45m
Merged PRs (30d)
2

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from oxidecomputer/dendrite

All issues in oxidecomputer/dendrite

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.