Tesla опубликовала наработки по реализации своего сетевого протокола TTPoE

от автора

Тesla представила наработки, которые касаются развития сетевого протокола TTPoE (Tesla Transport Protocol over Ethernet) для снижения задержек при передаче трафика в дата-центрах при работе систем машинного обучения. Компания присоединилась к консорциуму UEC (Ultra Ethernet Consortium) для стандартизации протокола.

Код реализации TTPoE написан на языке Си и открыт под лицензией GPLv2.

Протокол призван заменить TCP там, где требуются низкие задержки и высокая скорость передачи данных. Он предусматривает отбрасывание пакетов и повторную передачу, при этом обеспечивая доставку всех отправленных данных.

TTPoE может использоваться в сетях с пропускной способностью выше 100Gbps. Изначально его реализовали на аппаратном уровне для обеспечения взаимодействия узлов в суперкомпьютере Tesla Dojo, чтобы упростить добавления новых узлов в кластер.

Протокол относительно просто реализовать полностью на аппаратном уровне. Он работает поверх обычного Ethernet и заменяет уровень TCP в сетевом стеке на протокол TTP, который реализуется при помощи значительно более простого конечного автомата (state machine).

Использование Ethernet позволило организовать работу кластера с использованием существующих коммутаторов.

В TTP для уменьшения задержек исключено состояние ожидания закрытия соединения (TIME_WAIT) и уменьшено число шагов при согласовании закрытия соединения. В TCP закрытие соединения сводится к отправке FIN-пакета, ожиданию подтверждения его получения, отправке подтверждения и переводе сокета на какое-то время в состояние TIME_WAIT, если будет наблюдаться неупорядоченное поступление задержавшихся пакетов. В TTP для закрытия соединения достаточно отправить опкод закрытия и получить подтверждение о закрытии (CLOSE, CLOSE-ACK).

Открытие соединений в TTP выполнено похожим образом. Вместо трёхэтапного согласования нового соединения (SYN, SYN-ACK, ACK) в TTP использовано два этапа (OPEN, OPEN-ACK). Это также позволяет избавить программное обеспечение от необходимости явного открытия соединения, так как достаточно указать адрес для отправки или получения данных.

Для управления перегрузкой (Congestion Control) в TTP подобно TCP применяется отбрасывание пакетов, но без использования усложнённых алгоритмов контроля перегрузки на основе скользящего окна. В TTP размер окна не меняется в зависимости от потери пакетов, а они прекращают отправляться после заполнения фиксированного буфера, записи удаляются из буфера после прихода подтверждения, а потери пакетов восполняются через повторную передачу данных, хранящихся в буфере. Это позволяет снизить задержки, но делает неэффективным использование TTP в низкоскоростных и некачественных сетях с большой потерей пакетов.

Программная реализация включает в себя модуль modttpoe.ko для ядра Linux, чтобы организовать прямой канал связи между несколькими узлами в одном сегменте сети Ethernet, а также модуль modttpip.ko с реализацией TTP-шлюза (TTP-GW, Tesla Transport Protocol Gateway). Он позволяет использовать штатный стек IPv4 поверх TTPoE без необходимости внесения изменений в приложения.

Подробнее о протоколе можно прочитать здесь.


ссылка на оригинал статьи https://habr.com/ru/articles/846160/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *