Jump to content

Large receive offload

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Jandalhandler (talk | contribs) at 21:38, 11 October 2016 (top). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computer networking, large receive offload (LRO) is a technique for increasing inbound throughput of high-bandwidth network connections by reducing CPU overhead. It works by aggregating multiple incoming packets from a single stream into a larger buffer before they are passed higher up the networking stack, thus reducing the number of packets that have to be processed. Linux implementations generally use LRO in conjunction with the New API (NAPI) to also reduce the number of interrupts.

According to benchmarks, even implementing this technique entirely in software can increase network performance significantly.[1][2][3] As of April  2007, the Linux kernel supports LRO for TCP in software only. FreeBSD 8 supports LRO in hardware on adapters that support it.[4][5][6] [7]

LRO should not operate on machines acting as routers, as it breaks the end-to-end principle and can significantly impact performance.[8][9]

Generic Receive Offload (GRO) implements LRO in software.[10]

See also

References

  1. ^ Jonathan Corbet (2007-08-01). "Large receive offload". LWN.net. Retrieved 2007-08-22.
  2. ^ Aravind Menon, Willy Zwaenepoel (2008-04-28). "Optimizing TCP Receive Performance". {{cite journal}}: Cite journal requires |journal= (help)
  3. ^ Andrew Gallatin (2007-07-25). "lro: Generic Large Receive Offload for TCP traffic". linux-kernel (Mailing list). Retrieved 2007-08-22. {{cite mailing list}}: Unknown parameter |mailinglist= ignored (|mailing-list= suggested) (help)
  4. ^ http://www.freebsd.org/cgi/man.cgi?cxgb
  5. ^ http://www.freebsd.org/cgi/man.cgi?mxge
  6. ^ http://www.freebsd.org/cgi/man.cgi?nxge
  7. ^ "Poor TCP performance can occur in Linux virtual machines with LRO enabled". VMware. 2011-07-04. Retrieved 2011-08-17.
  8. ^ "Linux* Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Family of Adapters". Intel Corporation. 2013-02-12. Retrieved 2013-04-24.
  9. ^ "Disable LRO for all NICs that have LRO enabled". Red Hat, Inc. 2013-01-10. Retrieved 2013-04-24.
  10. ^ Huang, Shu; Baldine, Ilia (2012). "Performance Evaluation of 10GE NICs with SR-IOV Support: I/O Virtualization and network Stack Optimizations". In Schmitt, Jens B. (ed.). Measurement, Modeling, and Evaluation of Computing Systems and Dependability and Fault Tolerance: 16th International GI/ITG Conference, MMB & DFT 2012, Kaiserslautern, Germany, March 19-21, 2012, Proceedings. Lecture Notes in Computer Science. Vol. 7201. Berlin: Springer. p. 198. ISBN 9783642285400. Retrieved 2016-10-11. Large-Receive-Offload (LRO) reduces the per-packet processing overhead by aggregating smaller packets into larger ones and passing them up to the network stack. Generic-Receive-Offload (GRO) provides a generalized software version of LRO [...].