Performance of IP-forwarding of Linux hosts with multiple network interfaces
This paper evaluates and compares the performance of IP-packet forwarding of a Linux host equipped with multiple network interface cards (NICs), namely two receiving NICs and one transmitting NIC. We consider a Linux host with SMP (Symmetric Multiprocessing) or multicore multiprocessor (MCMP) architecture. We measure IP forwarding by subjecting an MCMP Linux host to different traffic load conditions of up to 1Gbps. We used the IXIA hardware traffic generator to generate traffic with fixed- and variable-size packets. At the Linux host, generated packets are forwarded/routed from the two receiving NICs to the transmitting NIC. We consider two NIC affinity modes: (I) both receiving NICs are affinitized (or bound) to two cores of the same processor while the transmitting NIC is affinitized to a core on a separate processor, and (II) the transmitting NIC and one receiving NIC are affinitized to two cores of the same processor while the second receving NIC is affinitized to a core on a separate processor. For each affinity mode, we measure the performance for three packet reception mechanisms: NAPI (New API) with a default budget of 300, NAPI with a budget of 2, and Disable and Enable interrupt handling. The performance is measured and compared in terms of various key performance metrics which include throughput, packet loss, round-trip delay, interrupt rates, and CPU availability.
linux smp ip forwarding network performance multicore architecture