Large send offload (Large send offload)
В компьютерных сетях large send offload (LSO) (или generic segmentation offload (GSO)) — это способ увеличения исходящей пропускной способности сетевого интерфейса и снижения нагрузки на центральный процессор. LSO особенно актуален в виртуальной среде, так как позволяет тратить существенно меньше ресурсов процессора на обработку TCP/IP-операций.
В применении к TCP также носит название TCP segmentation offload (TSO).
Похожий подход, применяемый для дефрагментации входящих пакетов, называется large receive offload (LRO). LSO и LRO не зависят друг от друга и могут применяться по отдельности.
Принцип действия
[править | править код]Когда системе необходимо отослать большой объём данных по сети, сначала происходит разделение всего объёма на сегменты меньшего размера, которые могут быть беспрепятственно переданы через все узлы сети (маршрутизаторы, коммутаторы и др.), разделяющие два хоста, осуществляющих обмен данными. Этот процесс называется сегментацией. Обычно этим занимается реализация TCP протокола на отправляющей системе. Перенос этой работы с центрального процессора в сетевой адаптер называется TCP segmentation offload (TSO).
К примеру, пусть необходимо передать пакет размером 64КБ. По умолчанию он будет разделен на 46 сегментов по 1448 байтов, которые будут непосредственно переданы в сетевой интерфейс и далее по сети до узла назначения.
Современные сетевые адаптеры умеют фрагментировать пакеты самостоятельно без участия центрального процессора. В этом случае, при необходимости передать 64КБ данных, данные одним запросом передаются в сетевой интерфейс, где уже осуществляется их фрагментация и последующая отправка. Таким образом происходит снижение нагрузки на центральный процессор.
Некоторые сетевые интерфейсы поддерживают более современный механизм TSO, который можно использовать для протоколов, не поддерживающих фрагментацию, например для UDP.
См. также
[править | править код]- Large receive offload (LRO)
- TCP Offload Engine (TOE)