Skip to content

Conversation

@FelixMcFelix
Copy link
Collaborator

We have some aspects of packet delivery that make worker threads and/or full-fledged squeues, interesting to experiment with:

  • Packets for a logical port will arrive from both the underlay and its VNIC -- likely two threads with different CPU bindings.
  • Ports are currently locked via mutex, such that we want to serialise packets bound for a port to be processed by the same kthread.
  • Packets arriving on the VNIC backing an OPTE port are delivered one packet at a time. (I have not yet dug into this behaviour on the illumos side).
  • Packets arriving on the Underlay will be delivered one-at-a-time until we can finalise/implement the ongoing illumos flows design work.

Currently this branch includes some Rust wrappers around kcondvars and thread creation/binding in a kernel module context (and a basic MPSC with worse contention than I'd like). I'm using this as a space to hash out some ideas in this space, even if the lifetime of this work is inevitably temporary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant