-
Notifications
You must be signed in to change notification settings - Fork 268
Redesign interface flow and implement a modern qdisc #3490
Copy link
Copy link
Open
Labels
Component: MainComposing the core Shadow executableComposing the core Shadow executableType: EnhancementNew functionality or improved designNew functionality or improved design
Milestone
Description
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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Component: MainComposing the core Shadow executableComposing the core Shadow executableType: EnhancementNew functionality or improved designNew functionality or improved design