Кратко

  • Job Snijders и сотрудник RIPE NCC Ties de Kock подготовили RFC 9697, опубликованный IETF в декабре 2024 года.
  • Валидатор сверяет знакомые серийные номера и хеши; если старый файл изменился, он предупреждает оператора и загружает последний полный снимок.

Ящик под номером 1774

В примере из RFC 9697 уведомление репозитория переходит с номера 1774 на 1775. Обычное обновление. Но у прежнего файла 1774 в новом уведомлении другой хеш. У файла 1773 хеш остался прежним. На ящике висит та же табличка, а содержимое заменили. Числа в RFC служат учебным примером. Job Snijders и Ties de Kock превратили такой конфликт в проверку, которую может выполнить программа.

RPKI распространяет подписанные объекты, по которым сети оценивают, какой автономной системе разрешено объявлять маршрут. Протокол RRDP доставляет изменения небольшими дельта-файлами. Валидатор начинает с полного снимка, затем загружает только пропущенные изменения. Уведомление перечисляет сеанс, серийные номера и хеши файлов. Раздавать статические файлы через веб-кеши удобно, пока старый файл под прежним номером остаётся неизменным.

Два валидатора, обратившиеся к репозиторию в разное время, могут получить разное содержимое для номера 1774. При этом у обоих совпадут идентификатор сеанса и последний серийный номер. Мониторинг, сравнивающий лишь эти метки, объявит единство там, где локальные репозитории уже разошлись. Авторы предлагают сохранять пары «номер — хеш» из последнего успешно полученного уведомления. После следующего получения нужно сравнить номера, присутствующие в обоих уведомлениях. Изменившийся старый хеш вызывает предупреждение и загрузку нового полного снимка.

О проблемах доставки Snijders писал и раньше. В статье 2021 года о rpki-client он описал серверы за балансировщиком нагрузки, обновлявшиеся с разной скоростью. Один сервер уже объявлял новую дельту, другой ещё не мог её отдать. Это гонка между серверами, отдельная от изменения старой дельты в RFC 9697. Общий урок практический: даже подписанные данные зависят от аккуратной доставки.

Цена рассинхронизации выходит за пределы архива. Согласно RFC, кеш может пропустить проверенные данные или сохранить те, которые центр сертификации намеревался отозвать. Маршрут, рассчитанный на статус valid, способен надолго получить статус unknown или invalid. Сеанс репозитория иногда живёт месяцы. У старых хешей хорошая память — если валидатор решит её сохранить.