Replace old-fashined emulation mode with null pmd.
DPDK's null pmd has an option to copy the packet content from zero-initialized packet instance, but we need to create valid IP packets.
Things to do:
[x] Remove and clean up if-branches in the io loop.
[x] Move packet generation codes after rte_eth_rx_burst().
Initialize randomized packets on start-up and just copy them in a round-robin fashion during runtime for minimal overheads.
[x] null pmd supports only a single RX/TX queue. Make separate emulation-mode configurations to adapt. (Or patch null pmd to support multiple dummy queues.)
[x] null pmd's NUMA node is initialized using the result of rte_socket_id() during device initialization. Patch it to get the node information from command line key-value arguments, like its packet size and copy options.
Replace old-fashined emulation mode with null pmd. DPDK's null pmd has an option to copy the packet content from zero-initialized packet instance, but we need to create valid IP packets.
Things to do:
rte_eth_rx_burst()
.