Skip to content

Redesign interface flow and implement a modern qdisc #3490

@robgjansen

Description

@robgjansen

pfifo_fast is the default linux qdisc. Shadow's C interface kinda sorta emulates it, but in Rust we'll want to change the design to push packets into the network queue instead of sockets. The network queue can then prioritize based on the TOS bits set in each packet's header.

pfifo_fast: https://tldp.org/HOWTO/Traffic-Control-HOWTO/classless-qdiscs.html
priomap priorities used in pfifo_fast: https://lartc.org/howto/lartc.qdisc.classless.html

Some discussion about how we might implement this is in #3480 (comment)

We'll have to rework the interface design so that sockets push packets directly to the interface when packets are ready, and the interface imposes the necessary queue size limits for each socket.

Metadata

Metadata

Assignees

Labels

Component: MainComposing the core Shadow executableType: EnhancementNew functionality or improved design

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions