Large receive offload (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 (2007-08-01). "Large receive offload". LWN.net. Архивировано 16 июля 2019. Дата обращения: 16 июля 2019.
  2. Aravind Menon, Willy Zwaenepoel. Optimizing TCP Receive Performance (неопр.). — 2008. — 28 April. Архивировано 13 октября 2011 года.
  3. Andrew Gallatin (2007-07-25). "lro: Generic Large Receive Offload for TCP traffic". linux-kernel (Mailing list). Архивировано 16 июля 2019. Дата обращения: 16 июля 2019.
  4. JLS2009: Generic receive offload. lwn.net. Дата обращения: 16 июля 2019. Архивировано 16 июля 2019 года.