The 3GD API function NT_NetRxOpenMulti can open multiple streams and merge packets from them. This will result in packets from the streams specified being merged by the driver (based on time stamps) – similar to merging of host buffers from multiple SmartNICs.
This function makes it possible to configure multi-CPU distribution of one type of traffic to a range of streams, and to send another type of traffic to a separate stream, and then from each application thread to open one of the split streams in combination with the separate shared stream.
Multi-CPU distribution and sharing combined
This figure shows a number of application threads that each open their own multi-CPU split stream combined with a shared stream.
In this way, the one stream to one host buffer relation (per SmartNIC) is maintained, which is how the 3GD driver is architected to optimize performance, but still allow applications to combine multi-CPU distribution and sharing to mimic load distribution combined with replication. Limited PCI bandwidth is not wasted on replicating data, and zero-copy is maintained as sharing is used instead of replication.