Кратко

  • SYN MP_JOIN несёт Token получателя, чтобы найти старое MPTCP-состояние; nonce, HMAC и локальная политика отдельно решают вопрос о включении нового TCP-подпотока.
  • Совпавший Token, правильный HMAC, установленный TCP и результат приложения — разные свидетельства, а не одна общая «доверенность».

Для приложения MPTCP должен сохранять знакомую модель TCP: надёжный упорядоченный поток байтов. Но RFC 6182 описывает и второй масштаб: сеть видит несколько обычных TCP-подпотоков с разными пятёрками. Несколько адресов — практический признак возможных путей, а не доказательство физически раздельных маршрутов, гарантированной скорости или преимущества над остальными потоками на общем узком месте.

Первый подпоток создаёт историю, на которую опирается последующий. В RFC 8684 MP_CAPABLE проходит в начальных SYN, SYN/ACK и ACK: стороны согласуют MPTCP для данного соединения и обмениваются ключевым материалом для аутентификации добавляемых подпотоков. Если обязательный обмен не состоялся, соединение работает как обычный однопутевой TCP. Одна замеченная опция не доказывает её сохранение на другом пути, личность пользователя, разрешение приложения или принадлежность адреса.

История спецификации столь же ограничена. RFC 6824 был Experimental-документом 2013 года для испытаний и оценки. RFC 8041 в 2017 году зафиксировал накопленный опыт эксплуатации и реализации. RFC 8684 заменил v0 в 2020 году как Standards Track и связывает основные уточнения с опытом развёртывания. Это свидетельствует об изменении спецификации под воздействием опыта, но не о нынешней распространённости, настройке конкретного продукта или повсеместной выгоде.

Token выбирает запись, а не даёт право

В первом SYN MP_JOIN отправитель указывает Token получателя, свой свежий nonce и Address ID. При выборе SHA-256 в v1 Token — старшие 32 бита SHA-256-хеша исходного ключа получателя. Получатель применяет его, чтобы найти локальную MPTCP-запись, к которой SYN хочет присоединиться.

Это демультиплексирование состояния, а не переносимое разрешение. На этапе SYN новая пятёрка ещё не известна старому соединению; после её создания пакеты подпотока, как в обычном TCP, демультиплексируются пятёркой. Token не является постоянной меткой каждого пакета и не заменяет проверки TCP.

Address ID решает другую задачу: позволяет соотнести и удалить адрес источника, даже если NAT изменил наблюдаемую на другой стороне IP-заголовок. Он не подтверждает владение IP, право управлять маршрутом или полномочие вне данного состояния соединения.

HMAC подтверждает преемственность, но не отменяет отказ

Для одного поиска по Token недостаточно оснований. Получатель возвращает nonce и усечённый HMAC, инициатор отвечает своим HMAC. В расчёте используются ключи из MP_CAPABLE и обе свежие случайные величины, поэтому старый захваченный обмен не подтверждает эту новую попытку.

При верных HMAC RFC 8684 утверждает ровно следующее: оба хоста удостоверились, что остаются теми же MPTCP-пирами, что при начале соединения, и согласовали MPTCP-соединение для подпотока. Это непрерывность пиров в масштабе транспорта. Это не удостоверение человека, не деловое разрешение, не доказательство собственности на адрес и не результат прикладной операции.

Локальный отказ встроен явно. Неизвестный Token приводит к RST; известный Token тоже приводит к RST, если локальная политика запрещает новый подпоток; отсутствующий или неверный HMAC закрывает попытку. Поиск в таблице не заставляет владельца таблицы выделять ещё один ресурс.

После допуска сетевой след может показать начальное согласование, поиск Token, проверенные HMAC и живую пятёрку. Он не показывает, что приложение приняло запрос, база сохранила запись, действие было разрешено или пользователь получил итог. Непрерывность байтов не переносит в транспорт власть над их смыслом.

Источники и пределы доказательств

Эти RFC подтверждают архитектуру, документированную ревизию и заданное поведение. Они не доказывают текущую распространённость, раздельность реальных маршрутов, работу конкретного NAT, соответствие продукта, человеческую личность или завершение прикладного действия.