uIP 1.0
Файлы | Функции
Хак для ускорения пропускной способности uIP TCP
The uIP TCP/IP stack

Базовая реализация uIP TCP разрешает иметь в обработке каждый момент времени только один сегмент TCP на каждое соединение TCP. Подробнее...

Файлы

файл  uip-split.h
 

Модуль для разделения уходящих сегментов TCP на две части, чтобы обойти delayed ACK и уменьшить деградацию пропускной способности.


Функции

void uip_split_output (void)
 Обработка исходящих пакетов.

Подробное описание

Базовая реализация uIP TCP разрешает иметь в обработке каждый момент времени только один сегмент TCP на каждое соединение TCP.

Из-за алгоритма отложенного ACK, реализованного в большинстве приемников TCP, ограничение uIP на количество сегментов TCP в обработке серьезно снижает максимально допустимую пропускную способность, когда uIP передает данные.

Модуль uip-split является хаком, который пытается исправить эту ситуацию. Путем разбиения на две части исходящих сегментов максимального размера алгоритм отложенного ACK не будет задействован в приемниках TCP. Это улучшает быстродействие на порядок при отправке данных из uIP.

Модуль uip-split использует модуль uip-fw (uIP IP packet forwarding, перенаправление пакетов) для отправки пакетов. Таким образом, модуль uip-fw должен быть настроен с походящим сетевым интерфейсом, чтобы этот модуль мог работать.


Функции

void uip_split_output ( void  )

Обработка исходящих пакетов.

Эта функция инспектирует исходящий пакет в буфере uip_buf и отправляет его с использованием функции uip_fw_output(). Если пакет занимает полноразмерный сегмент TCP, то он будет разбит на 2 сегмента, которые будут переданы по отдельности. Эта функция должна быть вызвана вместо действительной выходной функции драйвера устройства, или функции uip_fw_output().

Подразумевается, что заголовки исходящего пакета находятся в буфере uip_buf, и подразумевается, что полезная нагрузка находится в любом месте, куда указывает uip_appdata. Также подразумевается, что длина исходящего пакета находится в переменной uip_len.

См. определение в файле uip-split.c строка 50

Перекрестные ссылки uip_acc32, uip_add32(), uip_appdata, UIP_BUFSIZE, uip_ipchksum(), uip_len, UIP_LLH_LEN и uip_tcpchksum().