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

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

Код реализации 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 без необходимости внесения изменений в приложения.

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

Материал опубликован при поддержке сайта habr.com
Комментарии

    Актуальные новости по теме "Array"