RFC: 4340
Оригинал: Datagram Congestion Control Protocol (DCCP)
Категория: Предложенный стандарт
Дата публикации:
Авторы: , ,
Перевод: Николай Малых

10.3. Опции, признаки и коды сброса, связанные с CCID

Половина значений типов опций, номеров признаков и Reset Code зарезервирована для использования с конкретными CCID. Механизмам CCID могут потребоваться новые опции (например, для обмена информацией о подтверждениях или скорости); резервирование пространства опций позволяет механизмам CCID без изменения в пространстве глобальных опций протокола. Например, опция 128 может иметь разное значение для полусоединения с CCID 4 и полусоединения с CCID 8. Специфические для CCID опции и признаки никогда не будут конфликтовать с глобальными опциями и признаками, которые могут появиться в новых версиях данной спецификации.

Любой пакет может содержать информацию, имеющую значение для одного из полусоединений, поэтому относящиеся к CCID опции, признаки и коды сброса явно указывают полусоединение, к которому они относятся.

  • Опции с номерами от 128 до 191 относятся к числу опций, передаваемых от отправителя (HC-Sender) к получателю (HCReceiver) в данном полусоединении, а опции с номерами от 192 до 255 передаются от получателя к отправителю.

  • Значения Reset Code от 128 до 191 показывают, что отправитель (HC-Sender) сбросил соединение (скорей всего в результате проблем с подтверждениями, переданными HC-Receiver). Значения Reset Code от 192 до 255 показывают, что получатель (HCReceiver) сбросил соединение (скорей всего в результате проблем с пакетами данных, переданными HC-Sender).

  • Номера от 128 до 191 используются для признаков, поддерживаемых на стороне отправителя (HC-Sender); номера от 192 до 255 — для признаков, поддерживаемых на стороне получателя (HC-Receiver). Поскольку опции Change L и Confirm L для признаков передаются той стороной, на которой реализован признак, ясно, что любая опция Change L(128) передается со стороны HC-Sender, а любая опция Change L(192) — со стороны HC-Receiver. Аналогично, опция Change R(128) передается со стороны HC-Receiver, а опция Change R(192) — со стороны HC-Sender.

В качестве примера рассмотрим соединение DCCP, где полусоединение от A к B использует CCID 4, а полусоединение от B к A — CCID 5. На рисунке показана выборка связанных с CCID опций для обоих полусоединений.

                           Relevant    Relevant
Packet  Option             Half-conn.  CCID
------  ------             ----------  ----
A > B   128                  A-to-B     4
A > B   192                  B-to-A     5
A > B   Change L(128, ...)   A-to-B     4
A > B   Change R(192, ...)   A-to-B     4
A > B   Confirm L(128, ...)  A-to-B     4
A > B   Confirm R(192, ...)  A-to-B     4
A > B   Change R(128, ...)   B-to-A     5
A > B   Change L(192, ...)   B-to-A     5
A > B   Confirm R(128, ...)  B-to-A     5
A > B   Confirm L(192, ...)  B-to-A     5
B > A   128                  B-to-A     5
B > A   192                  A-to-B     4
B > A   Change L(128, ...)   B-to-A     5
B > A   Change R(192, ...)   B-to-A     5
B > A   Confirm L(128, ...)  B-to-A     5
B > A   Confirm R(192, ...)  B-to-A     5
B > A   Change R(128, ...)   A-to-B     4
B > A   Change L(192, ...)   A-to-B     4
B > A   Confirm R(128, ...)  A-to-B     4
B > A   Confirm L(192, ...)  A-to-B     4

Использование связанных с CCID опций и признаков в процессе согласования не рекомендуется, поскольку в момент обработки таких опций сложно предсказать, какое значение CCID будет выбрано. Например, если пакет DCCP-Request содержит последовательность опций "Change L(CCID, 3), 128", связанная с CCID опция 128 может обрабатываться CCID 3 (если сервер поддерживает CCID 3) или принятым по умолчанию CCID 2 (если сервер не поддерживает CCID 3). Однако можно безопасно включать связанные с CCID опции совместно с опцией Mandatory. Например, если пакет DCCP содержит последовательность опций "Mandatory, Change L(CCID, 3), 128", тогда опция 128 будет обработана CCID 3 или соединение просто будет сброшено.

Серверы, которые не поддерживают принятый по умолчанию механизм CCID 2, могут никогда не получать связанных с CCID 2 опций в пакетах DCCP-Request (поскольку сервер должен передавать опции Mandatory Change(CCID) в своем пакете DCCP-Response, связанные с CCID опции во всех остальных пакетах не будут относиться к CCID 2). Сервер должен трактовать такие опции как непонятные. Таким образом, он будет сбрасывать соединение, встретив обязательную (Mandatory) опцию или запрос на согласование признака, связанные с CCID, передавая пустую опцию Confirm для необязательной опции Change по изменению связанного с CCID признака и игнорируя остальные связанные с CCID опции.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.