Перейти к содержанию

Large receive offload

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

В компьютерных сетях large receive offload (LRO) это способ увеличения входящей пропускной способности сетевого интерфейса за счёт снижения нагрузки на центральный процессор. Он заключается в агрегировании нескольких входящих пакетов из одного потока в буфер большего размера до передачи их выше по сетевому стеку, что позволяет уменьшить количество пакетов, требующих обработки.

Large receive offload

Реализация в ядре Linux обычно использует LRO в связке с New API (NAPI) для того, чтобы также сократить и количество прерываний.

По данным бенчмарков, даже будучи реализованным полностью на программном уровне LRO может значительно увеличить производительность сетевой подсистемы.[1][2][3] По состоянию на апрель 2007, ядро Linux поддерживает LRO для TCP только на программном уровне. FreeBSD 8 поддерживает LRO на аппаратном уровне при использовании сетевых адаптеров, имеющих такую функциональность.

LRO не должен применяться на узлах сети, выступающих в роли маршрутизатора, т.к. это нарушает принцип end-to-end и может оказать существенное влияение на производительность.

Generic receive offload

Generic receive offload (GRO) это программная реализация обобщённой LRO, не ограничивающаяся одним только TCP/IPv4 и свободная от некоторых проблем LRO.[4]

См. также

Примечания

  1. Jonathan Corbet. Large receive offload, LWN.net (1 августа 2007). Архивировано 16 июля 2019 года. Дата обращения 16 июля 2019.
  2. Aravind Menon, Willy Zwaenepoel. Optimizing TCP Receive Performance (неопр.). — 2008. — 28 апреля.
  3. Andrew Gallatin. lro: Generic Large Receive Offload for TCP traffic. Список рассылки linux-kernel (25 июля 2007). Дата обращения: 16 июля 2019.
  4. JLS2009: Generic receive offload. lwn.net. Дата обращения: 16 июля 2019. Архивировано 16 июля 2019 года.