В прошлый раз мы обсуждали перспективы QUIC, которому пророчат светлое будущее в качестве замены TCP. Сегодня поговорим об относительно нишевом протоколе для дата-центров — играющем роль инструмента для обмена RPC-сообщениями. Одним из основных протоколов передачи данных до сих пор остается TCP, разработанный в начале 1980-х. Но из-за своей «консервативности» он не учитывает все особенности современных дата-центров, которые используют технологию удаленного вызова процедур — RPC. Такой трафик состоит из множества коротких сообщений, рассылаемых тысячам серверов и коммутаторов, и TCP не всегда подходит для подобной коммуникации. Он требует предварительной установки соединения, повторно запрашивает данные при потере и гарантирует их целостность, что само по себе хорошо, но накладывает издержки на производительность. Существует несколько механизмов, сокращающих латентность в сетях ЦОД. Это — DCTCP, pFabric, pHost от инженеров из IETF, Стэнфорда и Беркли соответственно. Но одним из последних решений в этой области стал транспортный протокол Homa, разработанный в Массачусетском технологическом институте (MIT). Сперва клиент отправляет серверу лишь небольшую часть сообщения и метаданные с информацией о его объеме. Приемник с помощью механизма SRPT (Shortest Remaining Processing Time) приоритезирует пакеты — он отдает предпочтение сообщениям с наименьшим оставшимся временем обработки. К слову, аналогичный механизм использует pFabric. Далее, информация о приоритетах поступает отправителю в виде служебного пакета GRANT (стр.5). Он также содержит инструкции по передаче следующей последовательности байтов (авторы их называют RTT-байтами). Обмен такими пакетами происходит до тех пор, пока все RPC-сообщение не будет передано. Протокол считают перспективным — он может составить конкуренцию TCP. При работе с Homa клиенту не нужно поддерживать открытое подключение и ждать пакеты ACK, подтверждающие доставку сообщений. Так сокращается число передаваемых пакетов и растет пропускная способность. Что интересно, профессор из Калифорнийского университета в Беркли Джон Оустерхаут уже работает над реализацией Homa в качестве модуля для ядра Linux. Хотя автору еще предстоит решить проблемы, связанных с балансировкой нагрузки и многоядерной обработкой. В то же время некоторые представители ИТ-сообщества ставят под вопрос практическую применимость протокола. Один из резидентов Hacker News отметил, что Homa во многом дублирует решения QUIC и RDMA. Число компаний, использующих QUIC, продолжает расти, поэтому Homa рискует остаться «на обочине» технологического развития. Альтернативой также может служить протокол Qnet — собственный сетевой протокол операционной системы реального времени QNX. Он использует принцип передачи сообщений ОС QNX Neutrino для реализации сети. Тонкостям работы этой технологии посвящена большая статья на Хабре. В целом Qnet можно назвать нишевым решением, но его до сих пор используют в Blackberry. Что касается самого протокола Homa, то можно сказать, что его перспективы туманны. Неуверенности добавляет тот факт, что в портфолио Джона Оустерхаута, активного члена Homa-комьюнити, уже есть пара решений, которым так и не удалось «взлететь». Например, хранилище типа «ключ-значение» RAMCloud, которое является аналогом Memcached или Redis. Со временем станет понятно, заменит ли Homa протокол TCP в дата-центрах, или повторит сюжет известного комикса xkcd про четырнадцать-пятнадцать конкурирующих стандартов. О протоколах в корпоративном блоге VAS Experts: P2P-протокол Dat — как работает и кем используется Протокол IPv6 — от теории к практике Почему переход на IPv6 происходит так долго О чем еще мы пишем на Хабре: Универсальная система коррекции ошибок — как она устроена Новый открытый VPN-протокол — на что обратить внимание Что ждет Wi-Fi: три новых стандарта до 2024-го