Conceptually, for two containers on the same host, how would exchanging traffic work under-the-hood? Specifically, how is the physical NIC involved, if at all?
For example, on a physical host: for TX, a userspace application writes a packet to host memory and pushes its physical address/metadata to the appropriate NIC's TX queue. The NIC uses the physical address + DMA to avoid a copy when serializing/sending. (Similar for RX in the other direction, where the NIC writes to memory.)
I'm not sure how this would translate to a containerized case on a single host, since traffic shouldn't need to exit and the container network has its own namespace. Say that two different containers have NICs mapped to different PCI addresses (split device). If container A appends to its TX queue, what happens next?
Thanks again for your help.