Кратко
- По данным авторов, через POSIX-слой Presto такие приложения, как memcached и nginx, работают без модификации, а прототип обменивается TCP-трафиком с конечными точками Linux и TAS.
- Но репозиторий требует отключить проверку RDMA iCRC на ConnectX и добавить достаточное Ethernet padding в каждом взаимодействующем TCP-стеке. Неизменное приложение не означает неизменную среду развёртывания.
Фраза «приложение менять не нужно» полезна ровно потому, что указывает на одну стабильную границу. Ошибка начинается, когда её превращают в утверждение о неизменности всей цепочки.
В гостевой публикации APNIC Blog Rajath Shashidhara описывает верхнюю часть этой цепочки. Обычные программы используют POSIX-интерфейс, а прототип взаимодействует с Linux и TCP Acceleration Service (TAS). На той же странице есть оговорка: мнения принадлежат авторам и не обязательно отражают позицию APNIC. Это авторское техническое сообщение на площадке APNIC, а не институциональная сертификация.
В коммите a6c1ceec447c27a7b77035cc7d4a1868a4f7fcc1 механизм совместимости виден непосредственно. libpresto_interpose.so эмулирует POSIX-сокеты и загружается через LD_PRELOAD в неизменённый процесс. Другая низкоуровневая библиотека с zero-copy требует адаптации приложения. Следовательно, обещание относится к выбранному интерпозиционному пути, а не ко всем интерфейсам Presto.
Ниже этой границы README фиксирует конкретную установку: коммутатор класса Tofino 2, адаптеры ConnectX-5 или новее, определённое поколение SDK, указанный коммит поддержки платы и минимальную версию MLNX OFED. Это хорошие координаты воспроизводимости. Они же ограничивают перенос вывода на непроверенное оборудование.
Главное условие касается iCRC. Data path не выставляет invariant CRC для RDMA. Инструкция предписывает отключить его проверку на ConnectX; для ConnectX-6 и ConnectX-7 она отправляет за эквивалентной процедурой в поддержку NVIDIA. Кроме того, любой TCP-пир, взаимодействующий с Presto, должен дописывать в конец сегмента достаточно Ethernet padding, чтобы вместить iCRC. В репозитории есть вариант TAS с таким поведением.
Статья SIGCOMM 2026 помещает эту оговорку в раздел ограничений тестового стенда Tofino 2. Checksum engine прототипа не поддерживает нужные payload checksum и RDMA iCRC; в производственной версии авторы предполагают аппаратные блоки контрольных сумм. Нынешнее условие обязательно для повторения эксперимента, но не обязано сохраняться во всех будущих реализациях.
Это также не общее требование TCP. RFC 9293 определяет надёжный упорядоченный поток байтов, обработку TCP-сегментов и TCP checksum. Место в Ethernet-кадре для RDMA iCRC и режим проверки NIC относятся к реализации канала между хостом и Presto. Стандартный TCP-пир не обязан изначально формировать такой дополнительный хвост.
Поэтому проверку следует разбить на уровни. Тот же бинарный файл доказывает совместимость ABI и сокетов. Захват трафика доказывает форму кадра. Чтение регистров доказывает состояние устройства. Точная версия P4 и control plane доказывает, какой код работал. Повторный обычный TCP после отмены изменений доказывает восстановление.
Скрипт disable-icrc.sh показывает минимальный формат такого журнала. Он предупреждает, что рассчитан на ConnectX-5, читает четыре поля регистров, записывает нули и читает снова. Для другого адаптера требуется восстановить значения и изменить скрипт. В отчёте нужны модель, firmware, значения до и после и проверенная процедура возврата, а не только код успешного завершения.
Полноценная квитанция приёмки связывает хэш приложения с коммитом Presto, сборками P4 и control plane, SDK, BSP, драйвером, MTU и состоянием NIC. Захват показывает конец кадра. Отдельные результаты нужны для подготовленного TAS, обычного Linux и любой специально подготовленной версии Linux. Совместимой объявляется только реально проверенная комбинация.
Откат тоже состоит из нескольких операций. switchconf_reset очищает flow tables, список подключённых хостов, контексты приложений и runtime state, сохраняя настройку портов. Он помогает сбросить сторону коммутатора, но не возвращает автоматически регистры NIC и поведение пира. Откат завершён только после того, как на восстановленном пути снова проходит обычный TCP.
Такая строгость не умаляет результат Presto. Сохранить интерфейс приложения и перенести транспортную обработку в программируемый pipeline — существенное достижение. Для эксплуатации важно лишь не называть перенос изменения его отсутствием.
Источники
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров

