В прошлый раз мы обсуждали перспективы 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:
О чем еще мы пишем на Хабре: