firecracker
firecracker copied to clipboard
MMDS: Investigate if it's more efficient to decouple the mmds rx from the tap rx
I believe that since mmds packets are scarce and relatively latency-insensitive, it could be beneficial to take their processing out of the network rx fastpath.
Another side-effect of current design is that a mmds packet can trigger a tap-rx in the tx path - this should work fine, but might impact performance positively or negatively, and should also be investigated. More details:
NetEpollHandler::process_tx() {
// The MMDS network stack works like a state machine, based on synchronous calls, and
// without being added to any event loop. If any frame is accepted by the MMDS, we also
// trigger a process_rx() which checks if there are any new frames to be sent, starting
// with the MMDS network stack.
let mut process_rx_for_mmds = false;
...
// An incoming frame for the MMDS may trigger the transmission of a new message.
if process_rx_for_mmds {
self.process_rx();
}
}