Кратко

  • BTPU позволяет передавать точные копии сообщения в разных PDU канального уровня, если односторонняя линия не даёт запросить потерянный сегмент.
  • Transfer End сообщает индекс последнего сегмента. Только получатель, собравший все значения 0..N, завершает передачу локально; протокол не возвращает этот результат отправителю.

На линии без обратного направления отправитель может лишь послать тот же фрагмент ещё раз. Решение разумное, но оно меняет вероятность, а не область видимости. Именно для таких условий предназначен draft-ietf-dtn-btpu-04 от 7 сентября 2026 года: перенос крупных двоичных объектов, обычно Bundle протокола BPv7, по ненадёжным кадрированным односторонним каналам.

У принимающей стороны есть строгий критерий сборки. Сегменты одной передачи используют общий 32-битный Transfer number и возрастающие Segment Index. Сообщение Transfer End несёт последний сегмент и его индекс N. Лишь имея непрерывный набор от нуля до N, получатель может соединить байты и передать восстановленный объект выше.

Этот критерий не делает Transfer End подтверждением. Отправка последнего сообщения не доказывает его получение. Полученный конец не доказывает сохранность середины. Полная сборка ещё не означает успешный разбор BPv7, проверку CRC или обработку BPSec. А приём на уровне BP не равен дальнейшей пересылке, доставке в endpoint или подтверждению приложения.

BTPU не имитирует обратную связь, а открыто использует избыточность. Любое сообщение можно повторить в другом PDU, но копия должна быть точной. Для разных сегментов и передач допустимы разные числа повторов. На политику могут влиять предварительная оценка линии, локальный класс важности или сигнал потерь, пришедший вне полосы. Однако проект не обещает, что три, десять или любое фиксированное число копий гарантирует результат.

Скользящее Transfer Window управляет другой неопределённостью. Оно ограничивает активный диапазон Transfer numbers, помогает различать старые и новые значения после оборота счётчика и позволяет удалять отставшее состояние. Размер согласуется вне полосы; в текущем тексте рекомендовано 16, причём число прямо оставлено для обсуждения рабочей группой. Удаление записи из окна говорит об управлении памятью получателя, но ничего не решает в вопросе доставки.

По той же причине повторы BTPU, избыточность канального уровня и erasure coding нельзя без потерь свести к единому проценту «надёжности». У механизмов разные цели и точки наблюдения. Необязательный Bundle Length Hint позволяет зарезервировать память, но ожидаемая длина не является принятыми данными.

Самое важное ограничение сформулировано в разделе развёртывания. BTPU ненадёжен и не имеет внутриполосного обратного пути для подтверждения успеха. Если квитанция нужна, она должна пройти по логически отдельному маршруту от получателя к отправителю. У протокола также нет собственного управления перегрузкой и сигнализации, поэтому без такой функции на нижнем уровне его нельзя помещать на перегружаемый публичный путь.

BPv7 отдельно описывает сообщения о приёме, пересылке, доставке, удалении и application acknowledgement. Они могут прийти позже и иной дорогой. Это новая фиксация результата другим наблюдателем, а не доказательство, скрытое в исходном повторе. BTPU полезен именно потому, что не объявляет видимым то, чего односторонняя топология показать не может.

Источники