RFC 2866 RADIUS Accounting

Network Working Group                                      C. Rigney
Request for Comments: 2866                                Livingston
Category: Informational                                    June 2000
Obsoletes: 2139

RADIUS – средства учета

RADIUS Accounting

PDF

Статус документа

Этот документ содержит информацию, адресованную сообществу Internet. В документе не содержится каких-либо стандартов Internet. Допускается распространение документа без каких-либо ограничений.

Авторские права

Copyright (C) The Internet Society (2000). Все права защищены.

Аннотация

Этот документ описывает протокол обмена учетными сведениями (accounting) между серверами доступа NAS и серверами учета (Accounting Server).

Примечание для разработчиков

В этом документе описывается протокол RADIUS Accounting. Первые версии RADIUS Accounting использовали протокол UDP через порт 1646, что приводило к возникновению конфликтов со службами sa-msg-port. Официально для RADIUS Accounting выделен порт 1813.

1. Введение

Управление распределенными последовательными каналами и модемными пулами для большого числа пользователей может потребовать значительных усилий администраторов сети. Поскольку модемные пулы по определению являются каналами во внешний мир, они требуют пристального внимания с точки зрения безопасности, идентификации пользователей и учета их работы. Наиболее эффективным решением такой задачи является создание единой “базы данных” о пользователях, которая содержит идентификационные сведения (имена и пароли), а также конфигурационные параметры, определяющий предоставляемый пользователю сервис (например, SLIP, PPP, telnet, rlogin).

В документе [2] описан протокол RADIUS1, используемый для идентификации пользователей и проверки их полномочий. В данном документе описывается расширение протокола RADIUS, обеспечивающее доставку учетных сведений о работе пользователей от серверов доступа (NAS) к серверам учета RADIUS accounting.

Данный документ заменяет RFC 2139 [1]. Список отличий приведенной здесь спецификации от RFC 2139 дан в приложении “Журнал изменений».

Основные свойства RADIUS Accounting:

Архитектура “клиент-сервер”

Сервер доступа (NAS2) выступает в качестве клиента служб RADIUS accounting. Клиент отвечает за передачу учетных сведений серверам RADIUS accounting.

Серверы RADIUS accounting отвечают за прием учетных запросов и возврат клиенту информации, подтверждающей получение запроса.

Сервер RADIUS accounting может выступать в качестве клиента-посредника (proxy client) других серверов RADIUS accounting.

Безопасность

Аутентификация транзакций между клиентом и сервером RADIUS accounting осуществляется с использованием разделяемого ключа (shared secret), который никогда не передается через сеть.

Возможность расширения

Все протокольные транзакции представляются в форме триплетов “атрибут-размер-значение”3. Новые атрибуты могут добавляться без нарушения работы существующих реализаций протокола.

1.1. Спецификация уровня требований

Ключевые слова необходимо (MUST), недопустимо (MUST NOT), требуется (REQUIRED), нужно (SHALL), не нужно (SHALL NOT), следует (SHOULD), не следует (SHOULD NOT), рекомендуется (RECOMMENDED), возможно (MAY), необязательно (OPTIONAL) в данном документе должны интерпретироваться в соответствии с RFC 2119 [3]. Значение этих слов не зависит от шрифтового выделения.

1.2. Терминология

Ниже приведены определения некоторых терминов, часто встречающихся в документе.

Service – сервис, служба, обслуживание

Сервер NAS обеспечивает сервис (например, PPP или Telnet) для подключающихся по коммутируемым линиям пользователей.

Session – сессия, сеанс

Каждый тип сервиса, обеспечиваемого NAS пользователям, предоставляется в форме сеанса, начало которого определяется моментом предоставления первой услуги, а завершение – моментом выполнения последней услуги. Пользователь может организовать множество параллельных (одновременных) сеансов, если NAS поддерживает такой режим. Для каждого из таких сеансов поддерживается отдельное значение Acct-Session-Id.

Silently discard – отбрасывание без уведомления

Отбрасывание пакетов без дальнейшей обработки. Реализациям протокола следует обеспечивать возможность ведения журнала ошибок, включающего содержимое отбрасываемых без уведомления пакетов. Также следует поддерживать статистику (счетчики) таких событий.

2. Работа протокола

Когда клиент настроен на использование RADIUS Accounting на начальном этапе предоставления услуг этот клиент будет генерировать пакет Accounting Start, описывающий тип предоставляемого пользователю сервиса, который передается серверу RADIUS Accounting, возвращающему подтверждение приема такого пакета. При завершении пользовательского сеанса клиент будет генерировать пакет Accounting Stop, описывающий тип предоставленного пользователю сервиса. Этот пакет может также включать статистические сведения о работе пользователя – продолжительность сеанса, число пакетов и байтов, принятых и переданных пользователем. Пакет передается серверу RADIUS Accounting, который будет возвращать подтверждение приема.

Пакет Accounting-Request (Start или Stop) передается серверу RADIUS через сеть. Клиенту рекомендуется повторять передачу пакета Accounting-Request до тех пор, пока от сервера не будет получено подтверждение приема. Если в течение заданного времени подтверждение не будет получено, передача пакета повторяется заданное число раз. Клиент может также переслать запрос дополнительным серверам в тех случаях, когда основной сервер не работает или недоступен. Обращаться к альтернативному серверу после заданного числа неудачных попыток связи с основным сервером или в режиме перебора по кругу. Алгоритмы повтора и выбора альтернативного сервера являются предметом исследования и не рассматриваются детально в данной спецификации.

Сервер RADIUS accounting может делать запросы к другим серверам для выполнения полученного от клиента запроса. В таких случаях сервер сам выступает в роли клиента.

Если сервер RADIUS не может записать пакет учета, недопустимо передавать клиенту подтверждение Accounting-Response.

2.1. Proxy

Информация о серверах-посредниках RADIUS приведена в спецификации [2]. Серверы-посредники RADIUS Accounting работают идентично RADIUS Proxy, как показано в приведенном ниже примере.

  1. NAS передает пакеты Accounting-Request пересылающему серверу.

  2. Пересылающий сервер протоколирует пакет Accounting-Request (если это нужно), добавляет атрибут Proxy-State (если нужно) после имеющихся в пакете атрибутов Proxy-State, обновляет атрибут Request Authenticator и пересылает запрос удаленному серверу.
  3. Удаленный сервер протоколирует пакет Accounting-Request (если это нужно), копирует все атрибуты Proxy-State, не меняя их порядка в пакет отклика и передает отклик Accounting-Response серверу-посреднику.
  4. Пересылающий сервер удаляет из пакета последний атрибут Proxy-State (если он был добавлен на этапе 2), обновляет значение атрибута Response Authenticator и передает пакет Accounting-Response серверу NAS.

Для сервера-посредника недопустимо изменение присутствующих в пакете атрибутов Proxy-State или Class.

Сервер-посредник может прозрачно пересылать пакеты, передавая повторные пакеты по мере их получения, или принять на себя ответственность за передачу повторных пакетов (это удобно в тех случаях, когда сетевое соединение между посредником и удаленным сервером по своим характеристикам существенно отличается от соединения между посредником и NAS).

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

3. Формат пакетов

В поле данных пакетов UDP [4] инкапсулируется по одному пакету RADIUS Accounting и поле UDP Destination Port для протокола RADIUS должно содержать десятичное значение 1813.

При генерации откликов номера портов отправителя и получателя меняются местами.

В этом документе содержится спецификация протокола RADIUS. Ранние версии RADIUS Accounting использовали порт UDP 1646, что приводило к конфликтам со службами sa-msg-port. Официально выделенный для протокола RADIUS Accounting порт имеет номер 1813.

Ниже показан формат типового пакета RADIUS. Поля передаются слева направо и сверху вниз.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                         Authenticator                         |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+

 

Code

Поле Code имеет размер 1 октет и содержит идентификатор типа пакета RADIUS. При получении пакета с некорректным значением поля Code такой пакет отбрасывается без уведомления.

Десятичные значения кодов для пакетов RADIUS Accounting показаны ниже.

4 Accounting-Request

5 Accounting-Response

Identifier

Поле Identifier размером 1 октет используется для сопоставления запросов с откликами. Сервер RADIUS может детектировать дубликаты запросов по совпадению IP-адреса отправителя, номеру порта отправителя и значению поля Identifier, если такие пакеты получены в течение короткого промежутка времени.

Length

Поле Length имеет размер 2 октета и показывает размер пакета с учетом полей Code, Identifier, Length, Authenticator и Attribute. Октеты за пределами указанного в поле размера значения должны трактоваться как заполнение и оставляться без внимания. Если размер пакета меньше значения поля Length, пакет должен отбрасываться без уведомления. Минимальный размер пакета составляет 20, а максимальный — 4095.

Authenticator

Поле Authenticator имеет размер 16 октетов. Старший октет поля передается первым. Значение поля применяется для аутентификации при обмене сообщениями между клиентом и сервером RADIUS accounting.

Request Authenticator

В пакетах Accounting-Request значение атрибута Authenticator, называемое Request Authenticator, представляет собой 16-октетное хэш-значение MD5 [5].

NAS и сервер RADIUS используют разделяемый ключ. Поле Request Authenticator в пакетах Accounting-Request содержит необратимое хэш-значение MD5, рассчитанное для потока октетов Code + Identifier + Length + 16 нулевых октетов + атрибуты запроса + разделяемый ключ (+ означает конкатенацию значений). 16-октетное хэш-значение MD5 помещается в поле Authenticator пакета Accounting-Request.

Отметим, что атрибут Request Authenticator в пакетах Accounting-Request вычисляется несколько иначе, нежели для атрибут Request Authenticator в пакетах RADIUS Access-Request, поскольку пакеты Accounting-Request не содержат атрибута User-Password.

Response Authenticator

Поле Authenticator в пакетах Accounting-Response называется Response Authenticator и содержит необратимое хэш-значение MD5, рассчитанное для потока октетов полей Code, Identifier, Length, значения Request Authenticator из пакета Accounting-Request, на который передается отклик, атрибутов отклика и разделяемого ключа. Полученное в результате 16-октетное хэш-значение MD5 помещается в поле Authenticator пакета Accounting-Response.

Attributes

Пакет может включать более одного экземпляра атрибутов некоторых типов. В таких случаях порядок атрибутов следует сохранять. Порядок разнотипных атрибутов значения не имеет.

4. Типы пакетов

Тип пакета RADIUS определяется значением поля Code в первом октете.

4.1. Accounting-Request

Пакеты Accounting-Request передаются от клиентов (обычно сервер доступа NAS или proxy) серверам RADIUS accounting и содержат информацию, используемую для учета предоставленных пользователю услуг. Клиент передает пакет RADIUS с Code = 4 (Accounting-Request).

При получении пакета Accounting-Request сервер должен передать отклик Accounting-Response, если учетный пакет был записан без ошибок. При возникновении той или иной ошибки передача отклика недопустима.

Атрибуты, допустимые для пакетов Access-Request и Access-Accept, могут использоваться в пакетах Accounting-Request. Однако в пакеты Accounting-Request недопустимо включение атрибутов User-Password, CHAP-Password, Reply-Message, State. В каждом пакете Accounting-Request должен присутствовать по крайней мере один из атрибутов NAS-IP-Address или NAS-Identifier. В пакеты также следует включать по крайней мере один из атрибутов NAS-Port или NAS-Port-Type, если сервер NAS способен различать свои порты.

Если пакет Accounting-Request включает атрибут Framed-IP-Address, последний должен содержать IP-адрес пользователя. Если в пакете Access-Accept используется специальное значение Framed-IP-Address, говорящее серверу NAS о выделении или согласовании IP-адреса для пользователя, атрибут Framed-IP-Address (если он есть) в пакете Accounting-Request должен содержать действительный адрес IP, выделенный или согласованный для пользователя.

Формат пакетов Accounting-Request показан ниже. Поля пакета передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                     Request Authenticator                     |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

Code = 4

Identifier

Значение поля Identifier должно меняться при всяком изменении содержимого поля Attributes и при получении корректного отклика на предыдущий запрос. При повторной передаче пакетов без их изменения значение поля Identifier должно сохраняться.

Отметим, что при включении атрибутов Acct-Delay-Time в пакет Accounting-Request значение Acct-Delay-Time будет обновляться при повторной передаче пакета, следовательно изменение содержимого поля Attributes требует заново вычислять значения полей Identifier и Request Authenticator.

Request Authenticator

Поле Request Authenticator в пакетах Accounting-Request содержит 16-октетное хэш-значение MD5, рассчитанное в соответствии с описанной выше процедурой (см. Request Authenticator).

Attributes

Поле Attributes имеет переменную длину и содержит список атрибутов.

4.2. Accounting-Response

Пакеты Accounting-Response передаются сервером RADIUS accounting клиенту в качестве подтверждения приема и успешной записи пакетов Accounting-Request. Если принятый пакет Accounting-Request был записан без ошибок, сервер RADIUS accounting должен передать пакет с Code = 5 (Accounting-Response). При получении пакета Accounting-Response клиент проверяет значение поля Identifier для определения соответствия отправленному запросу Accounting-Request. Поле Response Authenticator должно содержать корректный отклик для ожидающего пакета Accounting-Request. Некорректные пакеты отбрасываются без уведомления.

Пакеты Accounting-Response могут не содержать никаких атрибутов.

Формат пакетов Accounting-Response показан ниже. Поля пакета передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                     Response Authenticator                    |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

Code = 5

Identifier

Поле Identifier содержит копию одноименного поля из пакета Accounting-Request, послужившего причиной передачи пакета Accounting-Response.

Response Authenticator

Поле Response Authenticator в пакетах Accounting-Response содержит 16-октетное значение MD5, рассчитанное в соответствии с описанной выше процедурой (см. Response Authenticator).

Attributes

Поле Attributes имеет переменную длину и содержит список атрибутов.

5. Атрибуты

Атрибуты RADIUS используются для передачи информации, связанной с аутентификацией и проверкой полномочий пользователей, а также учетом их работы.

Некоторые атрибуты могут присутствовать в пакете в нескольких экземплярах (это указывается ниже при описании атрибутов).

Завершение списка атрибутов определяется значением поля Length в пакетах RADIUS.

Формат атрибутов показан ниже. Поля атрибута передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |  Value ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 

Type

Однооктетное поле, определяющее тип атрибута. Актуальные значения поля типа для атрибутов RADIUS вы можете узнать из последнего варианта документа Assigned Numbers [6]. Значения 192-223 предназначены для экспериментальных целей, значения 224-240 зарезервированы для разработчиков (специфические для реализации типы), а значения 241-255 являются резервными и не должны использоваться. Рассматриваемые в данной спецификации значения приведены в таблице.

Значение Тип Значение Тип

1-39

См. спецификацию RADIUS [2]

46

Acct-Session-Time

40

Acct-Status-Type

47

Acct-Input-Packets

41

Acct-Delay-Time

48

Acct-Output-Packets

42

Acct-Input-Octets

49

Acct-Terminate-Cause

43

Acct-Output-Octets

50

Acct-Multi-Session-Id

44

Acct-Session-Id

51

Acct-Link-Count

45

Acct-Authentic

60+

См. спецификацию RADIUS [2]

Length

Однооктетное поле Length указывает размер данного атрибута с учетом полей Type, Length и Value. При получении атрибута с некорректно указанным размером в пакетах Accounting-Request, такие пакеты должны отбрасываться без уведомления.

Value

Необязательное поле Value содержит значение атрибута. Формат и размер значения атрибута определяются значениями полей Type и Length.

Отметим, что ни один из типов RADIUS не использует в качестве завершения NUL-символ (hex 00). В частности, значения типа text и string в протоколе RADIUS не завершаются NUL-символом. Для каждого атрибута имеется поле размера, поэтому символы завершения не требуются. Значения типа text представляет собой последовательность символов в кодировке UTF-8 10646 [7], а значения типа string содержат 8-битовые бинарные данные. Серверы и клиенты RADIUS должны быть способны работать со строками, содержащими NUL-символы. При реализации RADIUS на основе языка C не следует использовать для обработки строк функцию strcpy().

Значение атрибута может относиться к одному из пяти поддерживаемых типов данных. Отметим, что тип text является частным случаем (подмножеством) типа string.

text от 1 до 253 октетов, содержащих символы в кодировке UTF-8 10646 [7]. Недопустима передача текстовых атрибутов нулевой длины. В таких случаях следует просто исключить атрибут.

string от 1 до 253 октетов, содержащих бинарные данные (значения от 0 до 255, включительно). Недопустима передача string-атрибутов нулевой длины. В таких случаях следует просто исключить атрибут.

address 32-битовое значение, первый октет является старшим.

integer 32-битовое беззнаковое целое, первый октет является старшим.

time 32-битовое беззнаковое целое (первый октет является старшим), показывающее число секунд, прошедших с 1 января 1970 г. (00:00:00 по Гринвичу – UTC). Стандартные атрибуты RADIUS не используют этот тип, но он добавлен для будущих расширений.

5.1. Acct-Status-Type

Этот атрибут определяет на что указывает данный пакет Accounting-Request – начало (Start) или завершение (Stop) обслуживания пользователя.

Атрибут может использоваться клиентом для маркировки начала учета (например, при загрузке) путем указания Accounting-On или для маркировки завершения учета (например, перед перезагрузкой) с помощью Accounting-Off.

Формат атрибута Acct-Status-Type показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 40

Length = 6

Value

Четырехоктетное поле.

1 Start
2 Stop
3 Interim-Update
7 Accounting-On
8 Accounting-Off
9-14 Зарезервированы для Tunnel Accounting
15 Зарезервировано для отказов (Failed)

5.2. Acct-Delay-Time

Этот атрибут показывает число секунд, в течение которых клиент пытается передать данную запись, и значение атрибута может вычитаться из времени доставки пакета на сервер для приблизительного определения момента генерации пакета Accounting-Request (время передачи через сеть не принимается во внимание).

Отметим, что изменение Acct-Delay-Time требует менять значение поля Identifier (см. выше).

Формат атрибута Acct-Delay-Time показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 41

Length = 6

Value

Четырехоктетное поле.

5.3. Acct-Input-Octets

Этот атрибут показывает количество октетов, полученных из порта за время, в течение которого предоставляется данный сервис. Атрибут может включаться только в пакеты Accounting-Request, где Acct-Status-Type = Stop.

Формат атрибута Acct-Input-Octets показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 42

Length = 6

Value

Четырехоктетное поле.

5.4. Acct-Output-Octets

Этот атрибут показывает количество октетов, переданных в порт в течение всего срока предоставления данного сервиса. Атрибут может использоваться только в пакетах Accounting-Request с Acct-Status-Type = Stop.

Формат атрибута Acct-Output-Octets показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 43

Length = 6

Value

Четырехоктетное поле.

5.5. Acct-Session-Id

Этот атрибут содержит уникальное значение Accounting ID, упрощающее поиск соответствия между стартовыми и конечными записями в журнальном файле. Стартовая и конечная запись для данной сессии должны иметь одинаковые значения Acct-Session-Id. Пакеты Accounting-Request должны включать атрибут Acct-Session-Id. Возможно включение атрибута Acct-Session-Id в пакеты Access-Request; в таких случаях сервер NAS должен использовать такое же значение Acct-Session-Id в пакетах Accounting- Request для данной сессии.

Значение атрибута Acct-Session-Id следует задавать в кодировке UTF-8 10646 [7].

Например, можно использовать 8-значные шестнадцатеричные идентификаторы в буквами верхнего регистра и увеличивать значение двух старших цифр при каждой перезагрузке (полное использование всех значений после 256 перезагрузок). Остальные 6 цифр позволяют задать значения от 0 (для первого пользователя после перезагрузки) до 224-1 (около 16 миллионов), что позволяет организовать соответствующее число сеансов за время между перезагрузками.. Возможны и другие схемы построения уникальных значений атрибута

Формат атрибута Acct-Session-Id показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |  Text ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 44

Length 3

String

Значение поля String следует задавать в кодировке UTF-8 10646 [7].

5.6. Acct-Authentic

Этот атрибут может включаться в пакеты Accounting-Request для индикации того, что пользователь уже прошел аутентификацию с помощью протокола RADIUS, собственно NAS или иным способом. Если предоставление сервиса пользователям обеспечивается без аутентификации, учетные записи генерировать не следует.

Формат атрибута Acct-Authentic показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 45

Length = 6

Value

Четырехоктетное поле.

1 RADIUS
2 Local (локальная аутентификация)
3 Remote (удаленная аутентификация)

5.7. Acct-Session-Time

Этот атрибут показывает время обслуживания пользователя (в секундах). Атрибут может присутствовать только в пакетах Accounting-Request, где Acct-Status-Type = Stop.

Формат атрибута Acct-Session-Time показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 46

Length = 6

Value

Четырехоктетное поле.

5.8. Acct-Input-Packets

Этот атрибут показывает общее число пакетов, полученных из порта за все время обслуживания пользователя Framed User, и может включаться только в пакеты Accounting-Request с Acct-Status-Type = Stop.

Формат атрибута Acct-Input-packets показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 47

Length = 6

Value

Четырехоктетное поле.

5.9. Acct-Output-Packets

Этот атрибут показывает общее число пакетов, переданных в порт за все время обслуживания пользователя Framed User, и может включаться только в пакеты Accounting-Request с Acct-Status-Type = Stop.

Формат атрибута Acct-Output-Packets показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 48

Length = 6

Value

Четырехоктетное поле.

5.10. Acct-Terminate-Cause

Этот атрибут показывает причину завершения сеанса и может включаться только в пакеты Accounting-Request, где Acct-Status-Type = Stop.

Формат атрибута Acct-Terminate-Cause показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 49

Length = 6

Value

Четырехоктетное поле Value содержит код причины завершения сеанса:

Значение Тип Описание

1

User Request

Прекращение сеанса по инициативе пользователя (например с помощью LCP Terminate или выхода из сети – log out).

2

Lost Carrier

На порту был сброшен сигнал DCD (детектирование несущей).

3

Lost Service

Сервис больше не предоставляется (например, разорвано соединение пользователя с хостом).

4

Idle Timeout

Истекло время допустимого бездействия (Idle timer).

5

Session Timeout

Достигнута максимальная продолжительность сеанса.

6

Admin Reset

Сессия или порт сброшены администратором.

7

Admin Reboot

Администратор прекратил обслуживание пользователей NAS (например, для перезагрузки NAS).

8

Port Error

Сервер NAS обнаружил для порта ошибку, потребовавшую разрыва сессии.

9

NAS Error

Сервер NAS обнаружил (не связанную с портом), потребовавшую разрыва сессии.

10

NAS Request

Сервер NAS завершил сессию по неизвестной причине.

11

NAS Reboot

Сервер NAS завершил сессию для аварийной перезагрузки.

12

Port Unneeded

Сервер NAS завершил сессию потому, что уровень использования ресурсов слишком мал (например, в случаях выделения полосы по запросу реально достижимая скорость позволяет отключить один из портов).

13

Port Preempted

Сервер NAS завершил сеанс для предоставления порта пользователю с более высоким приоритетом.

14

Port Suspended

Сервер NAS завершил сеанс для прерывания виртуальной сессии.

15

Service Unavailable

Сервер NAS не может предоставить запрошенный сервис.

16

Callback

Сервер NAS прерывает текущую сессию для организации обратного соединения (callback).

17

User Error

Ошибка в полученных от пользователя данных, вызвавшая прекращение сеанса.

18

Host Request

Нормальное завершение сеанса хостом.

5.11. Acct-Multi-Session-Id

Этот атрибут содержит уникальный идентификатор Accounting ID, позволяющий связать воедино множество сеансовых записей в журнальном файле. Каждая сессия имеет свое значение Acct-Session-Id, а значения идентификатора “мультисессии” Acct-Multi-Session-Id будут совпадать для связанных сессий. Настоятельно рекомендуется указывать значения атрибутов Acct-Multi-Session-Id в кодировке UTF-8 10646 [7].

Формат атрибута Acct-Session-Id показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 50

Length 3

String

Значение поля String следует задавать в кодировке UTF-8 10646 [7].

5.12. Acct-Link-Count

Этот атрибут указывает число соединений, относящихся к данной “мультисессии”, на момент генерации записи. Сервер NAS может включать атрибут Acct-Link-Count в любые пакеты Accounting-Request, которые могут быть связаны с многоканальными соединениями.

Формат атрибута Acct-Link-Count показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 51

Length = 6

Value

Четырехоктетное поле Value содержит число соединений для данной “мультисессии” (Multilink Session).

Этот атрибут упрощает серверу учета связывание воедино информации для множества сессий одной “мультисессии”. Когда число пакетов Accounting-Request, полученных с Acct-Status-Type = Stop, одинаковыми значениями Acct-Multi-Session-Id и уникальными значениями Acct-Session-Id равно наибольшему значению Acct-Link-Count, появляющемуся в таких пакетах Accounting-Requests, это говорит о получении всех финишных (Stop) запросов Accounting-Requests для данной многоканальной сессии.

В таблице показан пример 8 пакетов Accounting-Requests. Для простоты не имеющие к делу отношения атрибуты опущены.

Multi-Session-Id Session-Id Status-Type Link-Count

«10»

«10»

Start

1

«10»

«11»

Start

2

«10»

«11»

Stop

2

«10»

«12»

Start

3

«10»

«13»

Start

4

«10»

«12»

Stop

4

«10»

«13»

Stop

4

«10»

«10»

Stop

4

5.13. Таблица атрибутов

В таблице приведен список всех атрибутов, которые могут встречаться в пакетах Accounting-Request. В пакеты Accounting-Response следует включать лишь атрибуты Proxy-State и Vendor-Specific.

Число Атрибут Число Атрибут Число Атрибут

0-1

User-Name

0-1

Callback-Id

0-1

Framed-AppleTalk-Zone

0

User-Password

0+

Framed-Route

1

Acct-Status-Type

0

CHAP-Password

0-1

Framed-IPX-Network

0-1

Acct-Delay-Time

0-1

NAS-IP-Address4

0

State

0-1

Acct-Input-Octets

0-1

NAS-Port

0+

Class

0-1

Acct-Output-Octets

0-1

Service-Type

0+

Vendor-Specific

1

Acct-Session-Id

0-1

Framed-Protocol

0-1

Session-Timeout

0-1

Acct-Authentic

0-1

Framed-IP-Address

0-1

Idle-Timeout

0-1

Acct-Session-Time

0-1

Framed-IP-Netmask

0-1

Termination-Action

0-1

Acct-Input-Packets

0-1

Framed-Routing

0-1

Called-Station-Id

0-1

Acct-Output-Packets

0+

Filter-Id

0-1

Calling-Station-Id

0-1

Acct-Terminate-Cause

0-1

Framed-MTU

0-1

NAS-Identifier1

0+

Acct-Multi-Session-Id

0+

Framed-Compression

0+

Proxy-State

0+

Acct-Link-Count

0+

Login-IP-Host

0-1

Login-LAT-Service

0

CHAP-Challenge

0-1

Login-Service

0-1

Login-LAT-Node

0-1

NAS-Port-Type

0-1

Login-TCP-Port

0-1

Login-LAT-Group

0-1

Port-Limit

0

Reply-Message

0-1

Framed-AppleTalk-Link

0-1

Login-LAT-Port

0-1

Callback-Number

0-1

Framed-AppleTalk-Network

Ниже разъяснены использованные в таблице обозначения.

0 недопустимо включение данного атрибута в пакеты этого типа;

0+ атрибут является необязательным и может присутствовать в нескольких экземплярах;

0-1 необязательный атрибут, который может присутствовать в единственном экземпляре;

1 обязательный атрибут, который должен присутствовать в единственном экземпляре.

6. Согласование с IANA

Коды типа пакетов (Packet Type Code), типы атрибутов (Attribute Type) и их значения (Attribute Value), определенные в данной спецификации, зарегистрированы в IANA (Internet Assigned Numbers Authority) и относятся к пространству имен RADIUS как описано в разделе «Согласование с IANA» документа RFC 2865 [2] в соответствии с требованиями BCP 26 [8].

7. Вопросы безопасности

Вопросы безопасности обсуждаются в параграфах, относящихся к значениям Authenticator, которые передаются в запросах и откликах и при создании которых применяются разделяемые ключи (эти ключи никогда не передаются через сеть).

8. Журнал изменений

  • Кодировка US-ASCII заменена UTF-8.

  • Добавлены замечания по Proxy-серверам.

  • Атрибут Framed-IP-Address должен содержать реальный IP-адрес пользователя.

  • При передаче атрибута Acct-Session-ID в пакете Access-Request это же значение должно использоваться в пакетах Accounting-Request для данной сессии.

  • Добавлены новые значения атрибута Acct-Status-Type.

  • Добавлен параграф “Согласование с IANA”.

  • Обновлены ссылки.

  • Текстовые строки являются подмножеством типа string.

9. Литература

[1] Rigney, C., «RADIUS Accounting», RFC 2139, April 1997.

[2] Rigney, C., Willens, S., Rubens, A. and W. Simpson, «Remote Authentication Dial In User Service (RADIUS)», RFC 2865, June 2000.

[3] Bradner, S., «Key words for use in RFCs to Indicate Requirement Levels», BCP 14, RFC 2119, March, 1997.

[4] Postel, J., «User Datagram Protocol», STD 6, RFC 768, August 1980.

[5] Rivest, R. and S. Dusse, «The MD5 Message-Digest Algorithm», RFC 1321, April 1992.

[6] Reynolds, J. and J. Postel, «Assigned Numbers», STD 2, RFC 17006, October 1994.

[7] Yergeau, F., «UTF-8, a transformation format of ISO 10646», RFC 2279, January 1998.

[8] Alvestrand, H. and T. Narten, «Guidelines for Writing an IANA Considerations Section in RFCs», BCP 26, RFC 2434, October 1998.

10. Подтверждение

Исходный вариант протокола RADIUS был разработан Стивом Вилленсом (Steve Willens) из Livingston Enterprises для линейки серверов доступа PortMaster.

11. Адрес председателя

Взаимодействием участников рабочей группы руководил:

Carl Rigney

Livingston Enterprises

4464 Willow Road

Pleasanton, California 94588

Phone: +1 925 737 2100

EMail: cdr@telemancy.com

12. Адрес автора

Связанные с этим документом вопросы можно адресовать автору:

Carl Rigney

Livingston Enterprises

4464 Willow Road

Pleasanton, California 94588

EMail: cdr@telemancy.com


Перевод на русский язык

Николай Малых

nmalykh@gmail.com

13. Полное заявление авторских прав

Copyright (C) The Internet Society (2000). All Rights Reserved.

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских правах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены «как есть» и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.

Подтверждение

Финансирование функций RFC Editor обеспечивалось Internet Society.

1Remote Authentication Dial In User Service.

2Network Access Server – сервер доступа в сеть.

3 Attribute-Length-Value. В последнее время для таких триплетов чаще используют обозначение TLV (Type-Length-Value – тип-размер-значение). Прим. перев.

4 Пакеты Access-Request должны включать по крайней мере один из атрибутов NAS-IP-Address и NAS-Identifier.

6 В соответствии с RFC 3232 документ STD 2 утратил силу. Значения Assigned Numbers следует искать в базе данных, доступной на сайте www.iana.org/numbers.html. Прим. перев.

Рубрика: RFC | Оставить комментарий

RFC 2865 Remote Authentication Dial In User Service (RADIUS)

Network Working Group                                      C. Rigney
Request for Comments: 2865                                S. Willens
Obsoletes: 2138                                           Livingston
Category: Standards Track                                  A. Rubens
                                                               Merit
                                                          W. Simpson
                                                          Daydreamer
                                                           June 2000

Протокол RADIUS

Remote Authentication Dial In User Service (RADIUS)

PDF

Статус документа

Данный документ содержит спецификацию протокола, предложенного сообществу Internet, и служит запросом к дискуссии в целях разви­тия протокола. Информацию о статусе данного протокола можно найти в текущей редакции документа «Internet Official Protocol Standards» (STD 1). Документ может распространяться без ограничений.

Авторские права

Copyright (C) The Internet Society (2000). Все права защищены.

Примечание IESG

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

Аннотация

В этом документе описан протокол, используемый для идентификации (authentication), проверки полномочий (authorization) и установки конфигурационных параметров в серверах доступа, которые хотят работать с идентифицированными пользователями, информация о которых содержится на разделяемом сервере идентификации (Authentication Server).

Замечания для разработчиков

В этом документе содержится спецификация протокола RADIUS. Первые версии протокола RADIUS использовали протокол UDP через порт 1645, что приводило к возникновению конфликтов со службами datametrics. Официально для протокола RADIUS выделен порт 1812.

Оглавление

Исключено из версии HTML

1. Введение

Данный документ заменяет RFC 2138 [1]. Сводка изменений по сравнению с RFC 2138 приведена в приложении “Журнал изменений”.

Управление распределенной системой доступа по телефонным линиям и модемными пулами в сетях с большим числом пользователей может потребовать от администраторов значительных усилий. Поскольку модемный пул по определению является открытой дверью, требуется повышенное внимание к идентификации пользователей, проверке их полномочий и учету работы (accounting). Наиболее эффективное решение может быть обеспечено путем создания единой “базы данных” о пользователях, которая применяется при идентификации (проверка имени пользователя и пароля), установке конфигурационных параметров и выборе типа сервиса, предоставляемого пользователю (например, SLIP, PPP, telnet, rlogin).

Основными преимуществами протокола RADIUS являются:

Архитектура “клиент-сервер”

Сервер доступа (NAS1) выступает в качестве клиента RADIUS. Клиент отвечает за передачу сведений о пользователе заданным серверам RADIUS и дальнейшие действия в зависимости от возвращенной сервером информации.

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

Сервер RADIUS может выступать в качестве клиента-посредника (proxy client) других серверов RADIUS или серверов идентификации иного типа.

Безопасность

Аутентификация транзакций между клиентом и сервером RADIUS осуществляется с использованием разделяемого ключа (shared secret), который никогда не передается через сеть. В дополнение к этому пользовательские пароли между клиентами и серверами RADIUS передаются в зашифрованном виде во избежание перехвата паролей при их передаче через незащищенные сети.

Гибкость механизмов идентификации

Сервер RADIUS может поддерживать широкий спектр методов идентификации пользователей. При получении регистрационного имени и пароля, указанных пользователем, сервер может может поддерживать дополнительные механизмы, включая PPP PAP или CHAP, UNIX login и т. п.

Возможность расширения

Все протокольные транзакции представляются в форме триплетов “атрибут-размер-значение”2. Новые атрибуты могут добавляться без нарушения работы существующих реализаций протокола.

1.1. Спецификация уровня требований

Ключевые слова необходимо (MUST), недопустимо (MUST NOT), требуется (REQUIRED), нужно (SHALL), не нужно (SHALL NOT), следует (SHOULD), не следует (SHOULD NOT), рекомендуется (RECOMMENDED), возможно (MAY), необязательно (OPTIONAL) в данном документе должны интерпретироваться в соответствии с BCP 14 [2]. Значение этих слов не зависит от шрифтового выделения.

Реализация протокола считается “несовместимой” со стандартом, если она не соответствует хотя бы одному из обязательных (необходимо, недопустимо) условий. Реализация, в которой выполняются все обязательные и желательные (следует, не следует) условия, считается “безусловно совместимой”, а реализации, в которых выполнены все обязательные условия, но не все желательные, считаются “условно совместимыми”.

Для серверов NAS, которые не поддерживают тот или иной сервис, недопустимо использование атрибутов RADIUS для такого сервиса. Например, для сервера NAS, который не поддерживает ARAP недопустима реализация атрибутов RADIUS для ARAP. NAS должен MUST трактовать RADIUS Access-Accept (доступ разрешен) для недоступного сервиса как Access-Reject (доступ закрыт).

1.2. Терминология

Ниже приведены определения некоторых терминов, часто встречающихся в документе.

Service – сервис, служба, обслуживание

Сервер NAS обеспечивает сервис (например, PPP или Telnet) для подключающихся по коммутируемым линиям пользователей.

Session – сессия, сеанс

Каждый тип сервиса, обеспечиваемого NAS пользователям, предоставляется в форме сеанса, начало которого определяется моментом предоставления первой услуги, а завершение – моментом выполнения последней услуги. Пользователь может организовать множество параллельных (одновременных) сеансов, если NAS поддерживает такой режим.

Silently discard – отбрасывание без уведомления

Отбрасывание пакетов без дальнейшей обработки. Реализациям протокола следует обеспечивать возможность ведения журнала ошибок, включающего содержимое отбрасываемых без уведомления пакетов. Также следует поддерживать статистику (счетчики) таких событий.

2. Работа протокола

Когда клиент настроен на использование RADIUS, каждый пользователь должен предоставить клиенту свою идентификационную информацию. Это может выполняться в форме приглашения на вход в систему (login prompt), где пользователь должен ввести свое регистрационное имя и пароль. Другим вариантом может быть использование канальных протоколов типа PPP3, в которых поддерживаются специальные пакеты идентификации для передачи сведений о пользователе.

После того того, как клиент получит идентификационные данные пользователя, он может провести процесс идентификации с использованием RADIUS. Для этого клиент создает пакет Access-Request4, содержащий такие атрибуты, как регистрационное имя пользователя, пароль, идентификатор клиента и порта (Port ID), через который регистрируется в системе данный пользователь. При наличии пароля он кодируется с использованием алгоритма RSA MD5 [3].

Пакет Access-Request передается серверу RADIUS через сеть. Если в течение продолжительного времени на запрос не будет получено отклика, передача запроса повторяется несколько раз. Клиент может также пересылать запросы другим серверам в тех случаях, когда основной сервер не работает или недоступен. Дополнительные (альтернативные) серверы могут использоваться после некоторого числа неудачных попыток или в режиме кругового обхода известных серверов. Алгоритмы повтора и перебора сервером являются предметом специального исследования и не рассматриваются детально в этом документе.

После получения клиентского запроса сервер RADIUS проверяет передавшего этот запрос клиента. Запросы от клиентов, для которых сервер RADIUS не имеет разделяемого ключа, должны отбрасываться без уведомления. Если проверка клиента завершилась успешно, сервер RADIUS обращается к базе данных о пользователях для поиска указанного в запросе имени. Пользовательская запись в базе данных содержит список требований, которым пользователь должен удовлетворять для получения доступа в сеть. К таким требованиям относится проверка пароля, но в базе данных может также указываться клиент (клиенты) и порт (порты), через которые разрешен доступ пользователя.

Сервер RADIUS может делать запросы к другим серверам, выступая в таких случаях как клиент.

Если в запросе Access-Request присутствует хотя бы один атрибут Proxy-State, такой атрибут должен без каких-либо изменений копироваться в пакет отклика. Другие атрибуты могут до атрибутов Proxy-State, после них и даже между такими атрибутами.

При невыполнении любого из условий сервер RADIUS передает отклик Access-Reject, показывающий некорректность данного пользовательского запроса. При желании сервер может включать в Access-Reject текстовое сообщение, которое может передаваться пользователю клиентом. Никакие иные атрибуты (за исключением Proxy-State) не могут включаться в Access-Reject.

Если все условия выполнены и сервер RADIUS хочет “задать пользователю дополнительные вопросы”, на которые последний должен ответить, сервер RADIUS передает отклик Access-Challenge. Такой отклик может включать текстовое сообщение, выводимое клиентом для пользователя с приглашением ответить на вопросы сервера. Кроме того, отклик может включать атрибут State.

Если клиент получает отклик Access-Challenge и поддерживает режим challenge/response, он может вывести текстовое сообщение (если оно имеется в пакете отклика) для пользователя, чтобы получить от того отклик. После этого клиент снова передает первоначальный запрос Access-Request с новым идентификатором (request ID), заменой атрибута User-Password на полученную от пользователя информацию (зашифрованную) и включением атрибута State из Access-Challenge (если этот атрибут присутствовал в отклике). В запрос не следует включать более одного атрибута State. Сервер может передать в ответ на новый запрос Access-Request отклик типа Access-Accept, Access-Reject или Access-Challenge.

При выполнении всех условий в отклик Access-Accept включается список всех конфигурационных параметров для данного пользователя. К таким параметрам относятся тип сервиса (например, SLIP, PPP, Login User) и все требуемые для предоставления этого сервиса значения. Для протоколов SLIP и PPP могут включаться такие параметры, как адрес IP, маска подсети, MTU, желательность использования компрессии и идентификаторы желаемых фильтров. Для терминальных пользователей эти параметры могут указывать желаемый протокол и хост.

2.1. Режим Challenge/Response

При использовании режима challenge/response пользователю передается непредсказуемое число и ожидается возврат зашифрованного отклика на это число. У легитимных пользователей имеется специальное устройство (например, смарт-карта) или программа для вычисления корректного отклика. Пользователь, не имеющий нужного устройства или программы и не знающий секретного ключа, который позволит эмулировать устройство/программу, может лишь попытаться угадать правильный отклик.

Пакет Access-Challenge обычно содержит атрибут Reply-Message, включающий передаваемый пользователю запрос (challenge), в качестве которого могут использоваться редко повторяющиеся числа. Обычно запрос получают от внешнего сервера, которому известен тип идентификатора, доступного пользователю и который, следовательно, может выбрать случайное или редко повторяющееся число с подходящим основанием и длиной.

Пользователь вводит это число в свое устройство (или программу), вычисляющее отклик, которого ожидает сервер RADIUS во втором запросе Access-Request. Если полученное от пользователя значение соответствует ожидаемому, сервер RADIUS возвращает отклик Access-Accept, а при несоответствии — Access-Reject.

Пример: Сервер NAS передает серверу RADIUS пакет Access-Request с атрибутами NAS-Identifier, NAS-Port, User-Name, User-Password (это может быть просто фиксированная строка типа challenge или пустое значение). Сервер возвращает пакет Access-Challenge с атрибутами State и Reply-Message (строка “Challenge 12345678, enter your response at the prompt5«, которую NAS передает пользователю). NAS принимает введенное пользователем значение и передает серверу новый запрос Access-Request с новым идентификатором, атрибутами NAS-Identifier, NAS-Port, User-Name, User-Password (зашифрованный отклик от пользователя) и значение атрибута State из пакета Access-Challenge. Сервер в ответ шлет отклик Access-Accept или Access-Reject в зависимости от результатов проверки введенного пользователем значения. Допускается также возврат сервером другого отклика Access-Challenge.

2.2. Взаимодействие с PAP и CHAP

Для PAP сервер NAS принимает PAP ID и пароль, передавая их в запросе Access-Request как атрибуты User-Name и User-Password. NAS может включать атрибуты Service-Type = Framed-User и Framed-Protocol = PPP как указание серверу RADIUS на использование сервиса PPP.

Для CHAP сервер NAS генерирует случайное число — challenge (предпочтительно 16 октетов) и передает его пользователю, который возвращает CHAP-отклик вместе с CHAP ID и CHAP username. После этого NAS передает запрос Access-Request серверу RADIUS со значением CHAP username для атрибута User-Name и значениями CHAP ID и CHAP-отклик в качестве CHAP-Password (атрибут 3). Случайное число (challenge) может быть включено в атрибут CHAP-Challenge или (если размер числа равен 16 октетам) в поле Request Authenticator пакета Access-Request. Сервер NAS может включать атрибуты Service-Type = Framed-User и Framed-Protocol = PPP как указание серверу RADIUS на использование сервиса PPP.

Сервер RADIUS находит пароль для пользователя, указанного атрибутом User-Name, шифрует значение challenge с использованием алгоритма MD5, октета CHAP ID, найденного пароля и CHAP challenge (из атрибута CHAP-Challenge или Request Authenticator при отсутствии этого атрибута) и сравнивает результат с атрибутом CHAP-Password. При совпадении сервер возвращает Access-Accept, в противном случае — Access-Reject.

Если сервер RADIUS не способен выполнить запрошенную идентификацию, он должен возвращать Access-Reject. Например, CHAP требует чтобы пользовательский пароль был доступен серверу в открытом виде для шифрования CHAP challenge и сравнения с откликом CHAP. Если незашифрованный пароль недоступен, сервер RADIUS должен возвращать клиенту Access-Reject.

2.3. Сервер-посредник (Proxy)

При работе в режиме посредника (proxy) сервер RADIUS принимает от клиента (например, NAS) запросы идентификации или учета и пересылает эти запросы другому серверу RADIUS, а получив от этого сервера отклики, пересылает их клиенту (возможно с внесением изменений в соответствии с локальной политикой администрирования). Наиболее распространенным вариантом использования RADIUS-посредников является организация систем роуминга (roaming), когда два (или более) провайдера принимают запросы не только от своих клиентов, но и от клиентов своих партнеров.

NAS передает серверу RADIUS запрос Access-Request, который сервер-посредник переправляет “удаленному серверу”. Последний возвращает серверу-посреднику отклик (Access-Accept, Access-Reject или Access-Challenge), который пересылается NAS. Атрибут User-Name может содержать идентификатор NAI[8] для работы с RADIUS Proxy. Выбор сервера, которому будут пересылаться клиентские запросы следует производить на основе областей идентификации (authentication «realm»). Область идентификации может быть частью идентификатора NAI6 (named realm). Кроме того, возможен выбор сервера для пересылки запросов на основе других параметров, например, Called-Station-Id (numbered realm).

Сервер RADIUS может работать одновременно в режиме посредника (forwarding server) и отвечающего сервера (remote server), выбирая тот или иной режим в зависимости от области идентификации. Один сервер-посредник может пересылать запросы неограниченному числу удаленных серверов. Точно так же отвечающий сервер может принимать запросы от любого числа серверов-посредников. Сервер-посредник даже может пересылать запросы другому посреднику для создания proxy-цепочек, но этого следует остерегаться во избежание возникновения петель.

Ниже приведен пример обмена информацией между NAS, сервером-посредником и отвечающим сервером RADIUS:

  1. NAS передает запрос Access-Request серверу-посреднику.
  2. Посредник пересылает запрос удаленному серверу.
  3. Удаленный сервер возвращает посреднику отклик Access-Accept, Access-Reject или Access-Challenge (для нашего примера пусть это будет Access-Accept).
  4. Посредник передает полученный отклик серверу NAS.

Пересылающий сервер должен трактовать имеющиеся атрибуты Proxy-State как непонятные данные (opaque data). Зависимость работы пересылающего сервера от ранее добавленных атрибутов Proxy-State недопустима.

Если атрибуты Proxy-State присутствуют в запросе, полученном от клиента, сервер-посредник должен включить эти атрибуты в возвращаемый клиенту отклик. Сервер-посредник может включать атрибуты Proxy-State в Access-Request при пересылке запроса или опускать такие атрибуты при пересылке. Если при пересылке запроса атрибуты Proxy-State были опущены, сервер-посредник должен включить их в отклик, возвращаемый клиенту.

Рассмотрим этапы процесса более детально.

  1. NAS передает свой запрос Access-Request серверу-посреднику. Пересылающий сервер расшифровывает значение атрибута User-Password (если атрибут присутствует) с использованием известного ему разделяемого ключа для данного NAS. Если в пакете присутствует атрибут CHAP-Password и нет атрибута CHAP-Challenge, пересылающий сервер должен сохранить атрибут Request-Authenticator неизменным или скопировать его значение в атрибут CHAP-Challenge.
    Пересылающий сервер может добавить в пакет атрибут Proxy-State, но добавление каких-либо других атрибутов недопустимо. При добавлении атрибута Proxy-State этот атрибут должен помещаться в пакет после всех имеющихся в пакете атрибутов Proxy-State. Для пересылающего сервера недопустимо изменение имеющихся в пакете атрибутов Proxy-State (сервер может отказаться от пересылки этих атрибутов, но менять их недопустимо). Также недопустимо для пересылающего сервера изменять порядок любых однотипных атрибутов, включая Proxy-State.
  2. Пересылающий сервер шифрует User-Password (если этот атрибут присутствует) с использованием ключа, разделяемого с удаленным сервером, устанавливает значение поля Identifier и передает пакет Access-Request удаленному серверу.
  3. Удаленный сервер (если он не является посредником) проверяет пользователя с помощью атрибутов User-Password, CHAP-Password или иных методов, которые могут появиться в будущих версиях, и возвращает серверу посреднику пакет Access-Accept, Access-Reject или Access-Challenge. В нашем примере передается отклик Access-Accept. Удаленный сервер должен скопировать из запроса Access-Request все атрибуты Proxy-State (и только Proxy-State) с сохранением их порядка.
  4. Сервер-посредник проверяет Response Authenticator с использованием ключа, разделяемого с удаленным сервером, и при несоответствии отбрасывает пакет без уведомления. При успешной проверке пересылающий сервер удаляет последний атрибут Proxy-State (если он был добавлен), подписывает Response Authenticator с использованием ключа, разделяемого с NAS, восстанавливает Identifier в соответствии с исходным запросом от NAS и передает отклик Access-Accept серверу NAS.

Пересылающему серверу может потребоваться изменение атрибутов в соответствии с локальной политикой. Такие вопросы выходят за пределы данного документа, однако спецификация протокола вносит ряд ограничений на изменение атрибутов пересылающими серверами. Для серверов посредников недопустимо изменять существующие атрибуты Proxy-State, State, Class. Разработчикам таких серверов следует внимательно относиться к принимаемым сервером значениям атрибута Service-Type. Особая осторожность требуется для атрибута Service-Type со значениями NAS-Prompt или Administrative в пересылаемых пакетах Access-Accept и разработчики могут использовать механизмы блокирования таких сообщений, а также сообщений иных типов. Рассмотрение механизмов блокировки выходит за пределы настоящей спецификации.

2.4. Почему UDP?

Достаточно часто спрашивают, почему протокол RADIUS использует транспорт UDP, а не TCP. Выбор протокола UDP был обусловлен техническими причинами.

Здесь нужно разобраться со множеством вопросов. Протокол RADIUS работает на основе транзакций, что ведет к ряду интересных особенностей:

  1. При отказе основного сервера идентификации запросы должны передаваться резервному серверу.
    Для выполнения этого требования копия запроса должна сохраняться выше транспортного уровня чтобы обеспечить возможность повторного запроса. Это требует поддержки таймеров повтора передачи.
  2. Временные требования протокола существенно отличаются от обеспечиваемых TCP временных параметров.
    С одной стороны, RADIUS не требует “нести ответственность” за детектирование потери данных. Пользователь может подождать завершения процедуры идентификации в течение нескольких секунд. Не требуется агрессивная политика TCP в части передачи повторов (на основе среднего времени кругового обхода), а также передача подтверждений, увеличивающая уровень служебного трафика.
    С другой стороны, пользователя вряд ли устроит процедура идентификации, занимающая несколько минут. Следовательно гарантированная доставка данных на основе TCP в течение 2 минут не принесет пользы. Передача запроса альтернативному серверу позволит пользователю быстрее завершить процедуру идентификации.
  3. Протокол по своей природе не требует организации прямых соединений.
    Клиенты и серверы “приходят и уходят”. Системы могут перезагружаться или выключаться. В общем случае это не вызывает проблем и средства обнаружения обрыва соединений TCP вкупе с механизмами тайм-аутов позволяют обрабатывать аномальные ситуации. Однако использование протокола UDP полностью избавляет от таких ситуаций без какой-либо специальной обработки. Каждый клиент или сервер может активизировать свой транспорт UDP и сохранять его в активном состоянии независимо от возникающих в сети проблем.
  4. UDP упрощает реализацию серверов.
    Первые реализации серверов RADIUS были однопотоковыми. Это означало, что запросы принимались и обрабатывались по одному. Такое решение оказалось неприемлемым для сред, где реализация механизмов безопасности занимала достаточно продолжительное время (1 секунду или более). Очередь запросов сервера могла содержать достаточно много запросов и в средах, где каждую минуту проверяется идентификация сотен пользователей, пользователи были вынуждены ждать завершения идентификации слишком долго. Ожидание увеличивалось дополнительно при обращении к базам данных или серверам DNS и могло затянуться на 30 секунд и более того. Обычно такие проблемы решаются путем создания многопотоковых (multi-threaded) серверов. Реализация таких серверов существенно упрощается при использовании протокола UDP. Для обработки каждого запроса порождается отдельный процесс и этот процесс может напрямую взаимодействовать с клиентом NAS, обмениваясь с ним пакетами UDP.

Однако ничего не достается даром и отказ от использования TCP приводит к необходимости реализации протоколом некоторых функций, которые в TCP поддерживаются транспортным уровнем. В частности, при работе по протоколу UDP требуется поддержка таймеров повторной передачи для сервера, хотя и не со столь жесткими требованиями, как в TCP. Это достаточно невысокая плата за те преимущества, которые обеспечивает работа на основе протокола UDP.

Для протокола RADIUS транспорт UDP является оптимальным решением.

2.5. Рекомендации по передаче повторов

Если основной и дополнительный серверы RADIUS используют общий разделяемый ключ, разумно пересылать пакеты дополнительному серверу с теми же значениями полей ID и Request Authenticator, поскольку значения атрибутов сохраняются при повторной передаче. При желании можно для запросов к дополнительному серверу использовать другое значение для поля Request Authenticator.

При изменении User-Password или значения любого другого атрибута, нужно задать новое значение поля Request Authenticator и, следовательно, новый идентификатор ID.

Если NAS передает повторный запрос тому же серверу, которому был отправлен первичный, и атрибуты запроса не изменились, должны использоваться такие же значения Request Authenticator, ID и номер порта отправителя. При изменении атрибутов должны указываться новые значения Request Authenticator и ID.

Сервер NAS может использовать одинаковые значения ID для всех серверов или выбирать ID для каждого сервера по усмотрению разработчиков. Если серверу NAS требуется более 256 значений ID для исходящих запросов, можно воспользоваться другими номерами портов отправителя и сохранять значения ID для каждого из таких портов. Это позволит создать до 16 миллионов одновременных запросов к одному серверу.

2.6. Пагубность запросов Keep-Alive

В некоторых реализациях используется передача тестовых запросов RADIUS для проверки работоспособности сервера. Это порочная практика, от которой следует отказаться, поскольку при таком способе проверки работоспособности без всякой практической пользы возрастает нагрузка на сервер и снижается уровень масштабируемости. Вместо отправки тестовых запросов лучше передать серверу нормальный запрос и полученный от сервера отклик подтвердит работоспособность сервера. Если же у вас нет запросов для отправки серверу RADIUS, вам нет особой нужды беспокоиться о его работоспособности.

Если вы хотите организовать мониторинг сервера RADIUS, используйте протокол SNMP, разработанный специально для таких задач.

3. Формат пакетов

В поле данных пакетов UDP [4] инкапсулируется по одному пакету RADIUS и поле UDP Destination Port для протокола RADIUS должно содержать десятичное значение 1812.

При генерации откликов номера портов отправителя и получателя меняются местами.

В этом документе содержится спецификация протокола RADIUS. Ранние версии RADIUS использовали порт UDP 1645, что приводило к конфликтам со службами datametrics. Официально выделенный для протокола RADIUS порт имеет номер 1812.

Ниже показан формат типового пакета RADIUS. Поля передаются слева направо и сверху вниз.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                         Authenticator                         |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

Code

Поле Code имеет размер 1 октет и содержит идентификатор типа пакета RADIUS. При получении пакета с некорректным значением поля Code такой пакет отбрасывается без уведомления.

Код Тип пакета

1

Access-Request

2

Access-Accept

3

Access-Reject

4

Accounting-Request

5

Accounting-Response

11

Access-Challenge

12

Status-Server (экспериментальный)

13

Status-Client (экспериментальный)

255

Зарезервирован

Десятичные значения кодов для пакетов RADIUS показаны в таблице.

Коды 4 и 5 описаны в документе RADIUS Accounting [5]. Коды 12 и 13 зарезервированы и могут использоваться, но не рассматриваются в данном документе.

Identifier

Поле Identifier размером 1 октет используется для сопоставления запросов с откликами. Сервер RADIUS может детектировать дубликаты запросов по совпадению IP-адреса отправителя, номеру порта отправителя и значению поля Identifier, если такие пакеты получены в течение короткого промежутка времени.

Length

Поле Length имеет размер 2 октета и показывает размер пакета с учетом полей Code, Identifier, Length, Authenticator и Attribute. Октеты за пределами указанного в поле размера значения должны трактоваться как заполнение и оставляться без внимания. Если размер пакета меньше значения поля Length, пакет должен отбрасываться без уведомления. Минимальный размер пакета составляет 20, а максимальный — 4096.

Authenticator

Поле Authenticator имеет размер 16 октетов. Старший октет поля передается первым. Значение поля применяется для идентификации откликов от сервера RADIUS, а также используется алгоритмом сокрытия паролей.

Request Authenticator

В пакетах Access-Request в качестве значения поля Authenticator используется 16-октетное случайное значение Request Authenticator. Следует использовать непредсказуемые значения, уникальные в течение срока жизни ключа (пароля, используемого при обмене информацией между клиентом и сервером RADIUS), поскольку повторное использование значений вкупе с тем же ключом позволит атакующему использовать перехваченные отклики. В предположении что разделяемый секрет может использоваться в географически удаленных серверах, поле Request Authenticator следует делать уникальным в пространственном и временном аспекте.

В пакетах Access-Request также следует использовать непредсказуемые значения поля Request Authenticator, чтобы атакующий не мог обмануть сервер, предсказав будущий запрос, и использовать полученный от сервера отклик, прикинувшись сервером для будущих запросов Access-Request.

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

Серверы NAS и RADIUS используют разделяемый ключ (пароль). Этот ключ вместе с Request Authenticator передаются необратимой функции MD5 для создания 16-октетного значения, которое объединяется с введенным пользователем паролем (логическая операция XOR) и результат помещается в атрибут User-Password пакета Access-Request. Более подробное описание этих операций приведено ниже при рассмотрении атрибута User-Password.

Response Authenticator

Поле Authenticator в пакетах Access-Accept, Access-Reject и Access-Challenge называют Response Authenticator. Это поле содержит необратимое хэш-значение MD5 рассчитанное для потока октетов, состоящего из пакета RADIUS, начиная с поля Code и включая поля Identifier, Length и Request Authenticator из пакета Access-Request, атрибутов отклика и разделяемого ключа. Таким образом,

ResponseAuth = MD5(Code+ID+Length+RequestAuth+Attributes+Secret)

где знак + обозначает конкатенацию (объединение) строк.

Замечания для администраторов

Разделяемый ключ (пароль, известный клиенту и серверу RADIUS) следует создавать с соблюдением обычных требований, предъявляемых к хорошим паролям. Предпочтительно использовать ключи размером не менее 16 октетов. Это существенно затруднит атаки путем подбора ключей. Недопустимо использование пустых (нулевой длины) ключей, поскольку в этом случае перехват пакетов становится тривиальной задачей.

Сервер RADIUS должен использовать IP-адрес отправителя из пакетов RADIUS UDP для выбора разделяемого с клиентом секрета, чтобы можно было передавать запросы RADIUS через серверы-посредники.

При использовании пересылающего proxy, этот сервер-посредник должен быть способен отличать пакеты, передаваемые в каждом направлении. При пересылке запросов посредник может добавлять атрибут Proxy-State, а при пересылке откликов посредник должен удалить добавленный атрибут Proxy-State. Удаляемый или добавляемый атрибут Proxy-State всегда должен быть последним среди одноименных атрибутов, но делать иные допущения о месте данного атрибута среди прочих атрибутов не следует. Поскольку для откликов Access-Accept и Access-Reject аутентификация осуществляется на уровне всего пакета, удаление атрибута Proxy-State делает сигнатуру некорректной и proxy-сервер должен заново “подписать” пакет.

Другие детали реализации серверов-посредников RADIUS выходят за пределы данной спецификации.

4. Типы пакетов

Тип пакетов RADIUS определяется значением поля Code (код) в первом октете пакета.

4.1. Пакет Access-Request

Пакеты Access-Request передаются серверу RADIUS и содержат информацию, которая используется для того, чтобы определить имеет ли пользователь право доступа к указанному серверу NAS и службам, запрошенным пользователем. Реализации, желающие применять аутентификацию пользователей должны передавать пакет RADIUS с Code = 1 (Access-Request).

При получении пакета Access-Request от легитимного клиента должен передаваться соответствующий отклик.

В пакеты Access-Request следует включать атрибут User-Name. Пакет должен содержать по крайней мере один из атрибутов NAS-IP-Address и NAS-Identifier.

Пакет Access-Request должен включать атрибут User-Password, CHAP-Password или State. Недопустимо помещать в пакет оба атрибута User-Password и CHAP-Password. Если в будущих расширениях появятся новые типы идентификационной информации для включения в пакеты Access-Request, соответствующие атрибуты могут использоваться взамен User-Password или CHAP-Password.

В пакеты Access-Request следует включать атрибут NAS-Port или NAS-Port-Type (возможно включение обоих атрибутов), за исключениям тех случаев, когда запрашиваемый тип доступа включает порт или NAS не различает портов.

Пакет Access-Request может дополнительные атрибуты, служащие рекомендациями для сервера, но сервер не обязан использовать эти атрибуты.

При наличии атрибута User-Password для сокрытия значения пароля используется алгоритм RSA MD5 [3].

Формат пакета Access-Request показан ниже. Поля пакета передаются слева направо и сверху вниз.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                     Request Authenticator                     |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

Code = 1

Identifier

Значение поля Identifier должно меняться при изменении содержимого полей атрибутов и при получении корректного отклика на предыдущий запрос. При повторной передаче значение поля Identifier должно сохраняться.

Request Authenticator

Значение поля Request Authenticator должно меняться всякий раз при смене значения поля Identifier.

Attribute

Поле Attribute имеет переменную длину и содержит список атрибутов, которые требуются для запрашиваемого типа сервиса, а также дополнительных атрибутов.

4.2. Пакет Access-Accept

Пакеты Access-Accept передаются сервером RADIUS и содержат конфигурационные параметры, необходимые для начала предоставления услуг пользователю. Если все значения атрибутов, полученные в пакете Access-Request, приемлемы, реализация RADIUS должна передать пакет с Code = 2 (Access-Accept).

При получении пакета Access-Accept значение поля Identifier сравнивается с ожидающим запросом Access-Request. Поле Response Authenticator должно содержать корректный отклик для ожидающего запроса Access-Request. Некорректные пакеты отбрасываются без уведомления.

Формат пакета Access-Accept показан ниже. Поля пакета передаются слева направо и сверху вниз.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                     Response Authenticator                    |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

Code = 2

Identifier

Поле Identifier содержит копию значения одноименного поля из пакета Access-Request, с которым связан данный отклик.

Response Authenticator

Значение поля Response Authenticator вычисляется на основе полей запроса Access-Request, как описано выше.

Attribute

Необязательное поле атрибутов имеет переменную длину.

4.3. Пакет Access-Reject

Если какой-либо из принятых в запросе атрибутов неприемлем, сервер RADIUS должен передать пакет с Code = 3 (Access-Reject). В пакет может быть включен один или несколько атрибутов Reply-Message с текстовым сообщением, которое NAS может передавать пользователю.

Формат пакета Access-Reject показан ниже. Поля пакета передаются слева направо и сверху вниз.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                     Response Authenticator                    |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

Code = 3

Identifier

Поле Identifier содержит копию значения одноименного поля из пакета Access-Request, с которым связан данный отклик.

Response Authenticator

Значение поля Response Authenticator вычисляется на основе полей запроса Access-Request, как описано выше.

Attributes

Необязательное поле атрибутов имеет переменную длину.

4.4. Пакет Access-Challenge

Если сервер RADIUS хочет отправить пользователю запрос на ввод дополнительной информации (challenge), требующий отклика, сервер RADIUS должен ответить на запрос Access-Request передачей пакета с Code = 11 (Access-Challenge).

Необязательное поле атрибутов такого пакета может содержать один или несколько атрибутов Reply-Message и один атрибут State. Допускается также включение в отклик атрибутов Vendor-Specific, Idle-Timeout, Session-Timeout и Proxy-State. Остальные атрибуты, описанные в данной спецификации, не должны включаться в пакеты Access-Challenge.

При получении пакета Access-Challenge значение поля Identifier сравнивается с идентификатором в ожидающем запросе Access-Request. Кроме того поле Response Authenticator должно содержать корректный отклик для ожидающего Access-Request. Некорректные пакеты отбрасываются без уведомления.

Если сервер NAS не поддерживает режим challenge/response, он должен трактовать пакеты Access-Challenge как Access-Reject.

Если NAS поддерживает режим challenge/response, получение корректного пакета Access-Challenge показывает, что следует передать новый пакет Access-Request. Сервер NAS может передавать пользователю текстовое сообщение (если оно есть) и тогда запрашивать у пользователя отклик. После получения отклика передается исходный запрос Access-Request с новым идентификатором и полем Request Authenticator, а также с заменой значения атрибута User-Password на введенную пользователем информацию (в шифрованном виде) и включением атрибута State из пакета Access-Challenge (если этот атрибут присутствует). В пакете Access-Request может присутствовать не более 1 атрибута State.

Сервер NAS, поддерживающий протокол PAP, может пересылать Reply-Message вызывающему клиенту и принимать от того отклик PAP, который может использоваться как введенный пользователем отклик. Если сервер NAS не может это сделать, он должен трактовать пакет Access-Challenge как Access-Reject.

Формат пакета Access-Challenge показан ниже. Поля пакета передаются слева направо и сверху вниз.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Code      |  Identifier   |            Length             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                     Response Authenticator                    |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attributes ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-

Code = 11

Identifier

Поле Identifier содержит копию значения одноименного поля из пакета Access-Request, с которым связан данный отклик.

Response Authenticator

Значение поля Response Authenticator вычисляется на основе полей запроса Access-Request, как описано выше.

Attributes

Необязательное поле атрибутов имеет переменную длину.

5. Атрибуты

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

Завершение списка атрибутов определяется по значению поля Length в пакетах RADIUS.

Некоторые атрибуты могут включаться в пакет в нескольких экземплярах. Эффект от включения нескольких однотипных атрибутов определяется конкретным атрибутом и рассматривается ниже при описании соответствующих атрибутов. Сводная таблица атрибутов приведена ниже.

При наличии в пакете нескольких однотипных атрибутов серверы-посредники должны сохранять порядок этих атрибутов. Сохранение порядка для разнотипных атрибутов не требуется. Для серверов и клиентов RADIUS недопустимо принятие каких-либо решений на основе порядка расположения разнотипных атрибутов. Недопустимо также требование непрерывности однотипных атрибутов.

Если при описании того или иного атрибута указан тип пакетов, в которых этот атрибут может присутствовать, это ограничение применимо только к типам пакетов, описанным в данном документе, а именно — Access-Request, Access-Accept, Access-Reject и Access-Challenge (коды 1, 2, 3, 11). Другие документы, определяющие иные типы пакетов также могут использовать описанные здесь атрибуты. Для определения допустимости использования атрибутов в пакетах Accounting-Request и Accounting-Response (код 4 и 5) обращайтесь к документу RADIUS Accounting [5].

В данной спецификации указано какие атрибуты допустимо использовать с определенными в этом документе типами пакетов. В будущих документах при определении новых атрибутов также следует указывать в каких типах пакетов может присутствовать атрибут.

Формат поля атрибута показан ниже. Поля атрибута передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  Value ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type

Однооктетное поле, определяющее тип атрибута. Актуальные значения поля типа для атрибутов RADIUS вы можете узнать из последнего варианта документа Assigned Numbers [6]. Значения 192-223 предназначены для экспериментальных целей, значения 224-240 зарезервированы для разработчиков (специфические для реализации типы), а значения 241-255 являются резервными и не должны использоваться.

Сервер RADIUS может игнорировать атрибуты неизвестных типов.

Клиент RADIUS может игнорировать атрибуты неизвестных типов.

Определенные в данной спецификации атрибуты перечислены в таблице 1.

Таблица 1: Атрибуты RADIUS

Тип Атрибут Тип Атрибут Тип Атрибут

1

User-Name 16 Login-TCP-Port 31 Calling-Station-Id

2

User-Password 17 (не используется) 32 NAS-Identifier

3

CHAP-Password 18 Reply-Message 33 Proxy-State

4

NAS-IP-Address 19 Callback-Number 34 Login-LAT-Service

5

NAS-Port 20 Callback-Id 35 Login-LAT-Node

6

Service-Type 21 (не используется) 36 Login-LAT-Group

7

Framed-Protocol 22 Framed-Route 37 Framed-AppleTalk-Link

8

Framed-IP-Address 23 Framed-IPX-Network 38 Framed-AppleTalk-Network

9

Framed-IP-Netmask 24 State 39 Framed-AppleTalk-Zone

10

Framed-Routing 25 Class 40-59 (зарезервированы для учета)

11

Filter-Id 26 Vendor-Specific 60 CHAP-Challenge

12

Framed-MTU 27 Session-Timeout 61 NAS-Port-Type

13

Framed-Compression 28 Idle-Timeout 62 Port-Limit

14

Login-IP-Host 29 Termination-Action 63 Login-LAT-Port

15

Login-Service 30 Called-Station-Id

Length

Однооктетное поле Length указывает размер данного атрибута с учетом полей Type, Length и Value. При получении в пакете Access-Request атрибута с некорректно указанным размером следует передавать отклик Access-Reject. При получении атрибута с некорректно указанным размером в пакетах Access-Accept, Access-Reject или Access-Challenge пакет должен трактоваться как Access-Reject или отбрасываться без уведомления.

Value

Необязательное поле Value содержит значение атрибута. Формат и размер значения атрибута определяются значениями полей Type и Length.

Отметим, что ни один из типов RADIUS не использует в качестве завершения NUL-символ (hex 00). В частности, значения типа text и string в протоколе RADIUS не завершаются NUL-символом. Для каждого атрибута имеется поле размера, поэтому символы завершения не требуются. Значения типа text представляет собой последовательность символов в кодировке UTF-8 10646 [7], а значения типа string содержат 8-битовые бинарные данные. Серверы и клиенты RADIUS должны быть способны работать со строками, содержащими NUL-символы. При реализации RADIUS на основе языка C не следует использовать для обработки строк функцию strcpy().

Значение атрибута может относиться к одному из пяти поддерживаемых типов данных. Отметим, что тип text является частным случаем (подмножеством) типа string.

text от 1 до 253 октетов, содержащих символы в кодировке UTF-8 10646 [7]. Недопустима передача текстовых атрибутов нулевой длины. В таких случаях следует просто исключить атрибут.

string от 1 до 253 октетов, содержащих бинарные данные (значения от 0 до 255, включительно). Недопустима передача string-атрибутов нулевой длины. В таких случаях следует просто исключить атрибут.

address 32-битовое значение, первый октет является старшим.

integer 32-битовое беззнаковое целое, первый октет является старшим.

time 32-битовое беззнаковое целое (первый октет является старшим), показывающее число секунд, прошедших с 1 января 1970 г. (00:00:00 по Гринвичу – UTC). Стандартные атрибуты RADIUS не используют этот тип, но он добавлен для будущих расширений.

5.1. User-Name

Этот атрибут показывает имя пользователя, для которого выполняется аутентификация. При наличии у пользователя имени этот атрибут должен передаваться в пакетах Access-Request.

Атрибут может передаваться в пакетах Access-Accept – в этом случае клиенту следует использовать возвращенное в пакете Access-Accept имя пользователя для всех пакетов Accounting-Request в данном сеансе. Если Access-Accept включает Service-Type = Rlogin и атрибут User-Name, NAS может использовать возвращенный атрибут User-Name при выполнении функции Rlogin.

Формат полей атрибута User-Name показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 1

Length ≥ 3

String

Поле String может содержать 0 и более октетов. Сервер NAS может ограничивать размер поля User-Name, но рекомендуется обрабатывать поля по крайней мере до 63 октетов длиной.

Имя пользователя может указываться одним из трех способов:

text – строка символов в кодировке UTF-8 10646 [7].

network access identifier – идентификатор NAI, описанный в RFC 2486 [8].

distinguished name – имя в формате ASN.1, используемое в системах аутентификации Public Key.

5.2. User-Password

Этот атрибут показывает пароль идентифицируемого пользователя или данные, введенные пользователем в ответ на пакет Access-Challenge. Пароль может передаваться только в пакетах Access-Request.

При передаче пакетов используется сокрытия паролей. Сначала к паролю добавляются NUL-символы до значения, кратного 16 октетам. Далее вычисляется необратимая хэш-функция MD5 для потока октетов разделяемого ключа и значения Request Authenticator. Полученное значение объединяется (логическая операция XOR) с первыми 16 октетами пароля и помещается в первые 16 октетов поля String в атрибуте User-Password.

Если размер пароля превышает 16, вычисляется вторая необратимая хэш-последовательность MD5 для потока октетов, состоящего из разделяемого ключа и результата шифрования первых 16 октетов пароля. Полученный результат объединяется (операция XOR) со вторым 16-октетным сегментом пароля и помещается в следующие 16 октетов поля String в атрибуте User-Password.

При необходимости эта операция повторяется для каждого 16-октетного сегмента пароля с использованием разделяемого ключа и результата предыдущей операции. Размер пароля не может превышать 128 символов.

Этот метод шифрования взят из книги «Network Security» (Kaufman, Perlman и Speciner) [9], стр. 109-110. Ниже приведено более детальное описание метода:

Вызывается функция MD5 с разделяемым ключом S 128-битовым псевдослучайным значением Request Authenticator (RA). Пароль делится на 16-октетные сегменты p1, p2 и т. д. с дополнением последнего сегмента NUL-символами для выравнивания по 16-октетной границе. Используется операция XOR (исключающее или) для хэш-функции и соответствующего сегмента пароля. Для второго и последующих сегментов вместо RA используется хэш-функция, полученная на предыдущем этапе. Зашифрованный пароль сохраняется как конкатенация промежуточных результатов c(1), c(2) и т. д. в поле String атрибута User-Password.

b1 = MD5(S + RA) c(1) = p1 xor b1
b2 = MD5(S + c(1)) c(2) = p2 xor b2
. .
. .
. .
bi = MD5(S + c(i-1)) c(i) = pi xor bi

На приемной стороне процесс выполняется в обратном порядке для получения исходного пароля7.

Формат полей атрибута User-Password показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 2

Length

От 18 до 130.

String

Строка типа String размером от 16 до 128 октетов (кратные 16 значения), содержащая зашифрованный пароль.

5.3. CHAP-Password

Этот атрибут показывает значение отклика, представленное пользователем протокола CHAP8 в ответ на запрос (challenge). Атрибут может включаться только в пакеты Access-Request.

Запрос CHAP можно найти в атрибуте CHAP-Challenge (60), если он присутствует в пакете, или в поле Request Authenticator.

Формат атрибута CHAP-Password показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  CHAP Ident   |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 3

Length = 19

CHAP Ident

Это поле имеет размер 1 октет и содержит идентификатор CHAP из пользовательского CHAP Response.

String

Это 16-октетное поле содержит значение CHAP Response, принятое от пользователя.

5.4. NAS-IP-Address

Этот атрибут показывает IP-адрес сервера NAS, который запрашивает аутентификацию пользователя. Следует иметь уникальные адреса всех серверов NAS в пределах сферы действия сервера RADIUS. В каждом пакете Access-Request должен присутствовать атрибут NAS-IP-Address или NAS-Identifier.

Отметим, что значение атрибута NAS-IP-Address недопустимо использовать для выбора разделяемого ключа, применяемого при аутентификации запроса. Такой выбор должен осуществляться на основе адреса отправителя в пакете Access-Request.

Формат атрибута NAS-IP-Address показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |            Address
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            Address (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 4

Length = 6

Address

Четырехоктетное значение IP-адреса.

5.5. NAS-Port

Этот атрибут указывает физический порт сервера NAS, через который обратился идентифицируемый пользователь. Этот атрибут используется только в пакетах Access-Request. Отметим, что номер порта NAS, не имеет никакого отношения к номерам используемых портов TCP или UDP. Если сервер NAS способен различать свои порты, в пакеты Access-Request следует включать атрибут NAS-Port или NAS-Port-Type (61), допускается одновременное включение обоих атрибутов.

Формат атрибута NAS-Port показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 5

Length = 6

Value

Четырехоктетное значение идентификатора порта NAS.

5.6. Service-Type

Этот атрибут показывает тип сервиса, запрошенного пользователем или тип обеспечиваемого пользователю сервиса. Атрибут может использоваться в пакетах Access-Request и Access-Accept. От серверов NAS не требуется реализация всех типов сервиса, они просто должны трактовать неизвестные типы как неподдерживаемые значения Service-Type (как при получении ответа Access-Reject).

Формат атрибута Service-Type показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 6

Length = 6

Value

Четырехоктетное поле Value содержит один из перечисленных в таблице идентификаторов типа сервиса.

Тип Сервис Тип Сервис Тип Сервис

1

Login 5 Outbound 9 Callback NAS Prompt

2

Framed 6 Administrative 10 Call Check

3

Callback Login 7 NAS Prompt 11 Callback Administrative

4

Callback Framed 8 Authenticate Only

Ниже приведены определения различных типов сервиса для использования в пакетах Access-Accept. Типы сервиса в пакетах Access-Request могут рассматриваться как рекомендации серверу RADIUS от сервера NAS, который имеет основания предполагать, что пользователь предпочитает указанный тип сервиса. Рекомендации не являются обязательными для сервера.

Тип Описание
Login Пользователь подключается к хосту.
Framed Для пользователя должен быть запущен Framed-протокол (например, PPP или SLIP).
Callback Login Пользователь должен быть отключен и соединен с хостом после вызова со стороны хоста.
Callback Framed Пользователь должен быть отключен и соединен с хостом после вызова со стороны хоста, после чего для пользователя должен быть запущен Framed-протокол (например, PPP или SLIP).
Outbound Пользователю следует предоставить возможность доступа к устройствам для организации исходящих соединений.
Administrative Пользователю следует предоставить административный интерфейс с сервером NAS, на котором будут выполняться команды, требующие определенных привилегий.
NAS Prompt Пользователю следует предоставить возможность ввода консольных команд NAS, не требующих специальных привилегий.
Authenticate Only Запрошена только идентификация пользователя и не требуется возвращать сведений о проверке полномочий (авторизации) в отклике Access-Accept. Этот тип сервиса обычно используется серверами-посредниками.
Callback NAS Prompt Пользователь должен быть отключен и соединен с NAS по инициативе последнего с предоставлением пользователю возможности ввода консольных команд NAS, не требующих специальных привилегий.
Call Check Используется NAS в пакетах Access-Request для индикации приема вызова и факта, что серверу RADIUS следует возвратить пакет Access-Accept для ответа или Access-Reject для отказа от приема вызова (обычно это решается на основе атрибутов Called-Station-Id или Calling-Station-Id). Рекомендуется в таких запросах Access-Requests использовать значение Calling-Station-Id как значение User-Name.
Callback Administrative Пользователь должен быть отключен и соединен с NAS по инициативе последнего с предоставлением пользователю административного интерфейса с сервером NAS, на котором будут выполняться команды, требующие определенных привилегий.

5.7. Framed-Protocol

Этот атрибут показывает тип кадров, которые будут использоваться для соединения. Атрибут может передаваться в пакетах Access-Request и Access-Accept.

Формат атрибута Framed-Protocol показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 7

Length = 6

Value

Четырехоктетное поле Value содержит идентификатор протокола.

Значение Протокол Значение Протокол Значение Протокол
1 PPP 3 AppleTalk Remote Access Protocol (ARAP) 5 Xylogics proprietary IPX/SLIP
2 SLIP 4 Gandalf proprietary SingleLink/MultiLink protocol 6 X.75 Synchronous

5.8. Framed-IP-Address

Этот атрибут показывает предоставленный пользователю адрес. Атрибут может использоваться в пакетах Access-Accept. Этот атрибут можно также включать в запросы Access-Request как совет от сервера NAS по поводу предпочтительного адреса. Сервер не обязан принимать во внимание такие советы.

Формат атрибута Framed-IP-Address показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |            Address
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            Address (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 8

Length = 6

Address

Поле Address имеет размер 4 октета. Значение 0xFFFFFFFF показывает, что серверу NAS следует позволить пользователю выбрать адрес (например, Negotiated). Значение 0xFFFFFFFE показывает, что серверу NAS следует выбрать адрес для пользователя (например, из пула адресов, выделенного для NAS). Остальные корректные значения указывают серверу NAS значение IP-адреса, предоставляемого пользователю.

5.9. Framed-IP-Netmask

Этот атрибут показывает маску подсети IP, которая предоставляется пользователю в тех случаях, когда этот пользователь является маршрутизатором для сети. Этот атрибут может использоваться в пакетах Access-Accept. Атрибут можно также включать в пакеты Access-Request в качестве рекомендации со стороны NAS значения предпочтительной для пользователя маски. Сервер не обязан принимать эти рекомендации во внимание.

Формат атрибута Framed-IP-Netmask показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |            Address
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            Address (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 9

Length = 6

Address

Четырехоктетное поле Address содержит значение маски подсети, выделенное для пользователя.

5.10. Framed-Routing

Этот атрибут показывает метод маршрутизации для пользователя в тех случаях, когда пользователь является маршрутизатором для сети. Атрибут может использоваться только в пакетах Access-Accept.

Формат атрибута Framed-Routing показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 10

Length = 6

Value

Четырехоктетное поле Value задает тип маршрутизации.

Значение Тип маршрутизации Значение Тип маршрутизации

0

Нет

2

Принимать пакеты маршрутизации

1

Передавать пакеты маршрутизации

3

Принимать и передавать пакеты маршрутизации

5.11. Filter-Id

Этот атрибут показывает имя списка фильтров для данного пользователя. Пакеты Access-Accept могут включать в себя множество атрибутов Filter-Id.

Идентификация списков по именам позволяет использовать фильтры на различных NAS независимо от деталей реализации списков фильтрации.

Формат атрибута Filter-Id Attribute показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  Text ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 11

Length ≥ 3

Text

Поле Text содержит содержит 0 или более октетов, содержимое которых зависит от реализации. Идентификаторы фильтров должны быть понятны человеку; недопустимо влияние этих идентификаторов на работу протокола. Рекомендуется в качестве значений атрибута использовать текстовые сообщения в кодировке UTF-8 10646 [7].

5.12. Framed-MTU

Этот атрибут показывает устанавливаемое для пользователя значение MTU9, если это значение не согласуется иным способом (например, на уровне PPP). Атрибут может использоваться в пакетах Access-Accept. Возможно включение этого атрибута в пакеты Access-Request в качестве рекомендации серверу NAS, но сервер не обязан следовать этим рекомендациям.

Формат атрибута Framed-MTU показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 12

Length = 6

Value

Поле Value содержит 4 октета, указывающие значение MTU, которое должно находиться в диапазоне от 64 до 65535 (несмотря на то, что формат поля позволяет задать большие значения).

5.13. Framed-Compression

Этот атрибут показывает протокол компрессии, который будет использоваться для соединения. Атрибут может использоваться в пакетах Access-Accept. Можно включать этот атрибут в пакеты Access-Request в качестве рекомендации, но сервер не обязан принимать этот совет во внимание.

Пакет может содержать несколько атрибутов. Ответственность за поддержку протоколов компрессии ложится на сервер NAS.

Формат атрибута Framed-Compression показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 13

Length = 6

Value

Четырехоктетное поле, указывающее протокол сжатия данных.

Значение Тип компрессии Значение Тип компрессии

0

Без компрессии

2

Сжатие заголовков IPX

1

Сжатие заголовков VJ [10]

3

Сжатие Stac-LZS

5.14. Login-IP-Host

Этот атрибут указывает систему (хост) к которой хочет подключиться пользователь при наличии в пакете атрибута Login-Service. Атрибут может включаться в пакеты Access-Accept. Можно использовать атрибут в запросах Access-Request как рекомендацию, но сервер не обязан следовать такие рекомендациям.

Формат атрибута Login-IP-Host показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |            Address
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            Address (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 14

Length = 6

Address

Поле Address имеет размер 4 октета. Значение 0xFFFFFFFF показывает, что серверу NAS следует позволить пользователю указать адрес хоста. Нулевое значение адреса говорит, что серверу NAS следует выбрать адрес самостоятельно. Все прочие значения указывают адрес, который серверу NAS следует выбрать для подключения пользователя.

5.15. Login-Service

Этот атрибут указывает службу, которая будет использоваться для входа пользователя в систему. Атрибут включается только в пакеты Access-Accept.

Формат атрибута Login-Service показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 15

Length = 6

Value

Четырехоктетное поле Value указывает тип сервиса для удаленного входа в систему.

Значение Служба Значение Служба Значение Служба
0 Telnet 3 PortMaster (фирменный) 6 X25-T3POS
1 Rlogin 4 LAT 8 TCP Clear Quiet (подавляется любой строкой connect от NAS)
2 TCP Clear 5 X25-PAD

5.16. Login-TCP-Port

Этот атрибут показывает порт TCP, к которому пользователь будет подключаться, если в пакете присутствует атрибут Login-Service. Атрибут включается только в пакеты Access-Accept.

Формат атрибута Login-TCP-Port показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 16

Length = 6

Value

Четырехоктетное поле Value может содержать значение в диапазоне от 0 до 65535.

5.17. (не используется)

Атрибуты типа 17 не используются.

5.18. Reply-Message

Этот атрибут содержит текст, который может выводиться на консоль пользователя.

В пакетах Access-Accept этот атрибут содержит информацию об успешной аутентификации пользователя.

В пакетах Access-Reject этот атрибут служит для передачи информации об отказе. Атрибут может содержать приглашение пользователю для ввода дополнительной информации перед новой попыткой передачи пакета Access-Request.

В пакетах Access-Challenge этот атрибут может содержать приглашение пользователя к диалогу для ввода дополнительной информации (отклика).

Пакет может содержать несколько атрибутов данного типа. Если такие атрибуты отображаются пользователю, они должны выводиться в порядке их следования в пакете.

Формат атрибута Reply-Message показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  Text ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 18

Length ≥ 3

Text

Поле Text содержит по крайней мере один октет. Содержимое поля определяется реализацией. Предполагается, что значение атрибута понятно человеку. Недопустимо влияние этого атрибута на работу протокола. Рекомендуется в качестве значения атрибута использовать текст в кодировке UTF-8 10646 [7].

5.19. Callback-Number

Этот атрибут показывает строку набора номера, используемую для организации обратного звонка (callback). Атрибут может использоваться в пакетах Access-Accept. Можно использовать также в пакетах Access-Request как совет серверу по выбору службы Callback, но сервер не обязан принимать во внимание такие советы.

Формат атрибута Callback-Number показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 19

Length ≥ 3

String

Поле String содержит по крайней мере один октет. Формат реального значения поля зависит от сайта и приложения, в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

5.20. Callback-Id

Этот атрибут показывает с кем будет организовано “обратное соединение” с точки зрения NAS. Атрибут может использоваться в пакетах Access-Accept.

Формат атрибута Callback-Id показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 20

Length ≥ 3

String

Поле String содержит по крайней мере один октет. Формат реального значения поля зависит от сайта и приложения, в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

5.21. (не используется)

Атрибуты типа 21 не используются.

5.22. Framed-Route

Этот атрибут содержит маршрутную информацию для пользователя NAS. Атрибут включается в пакеты Access-Accept и может присутствовать в нескольких экземплярах.

Формат атрибута Framed-Route показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  Text ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 22

Length ≥ 3

Text

Поле Text содержит по крайней мере один октет. Конкретное содержимое поля зависит от реализации. Содержащаяся в поле информация предназначена для человека, воздействие значения этого поля на работу протокола недопустимо. Рекомендуется включать в это поле текстовое сообщение в кодировке UTF-8 10646 [7].

Для маршрутов IP в поле следует включать префикс адресата10 в десятичном формате с разделением точками и указанием размера маски11 после символа дробной черты (слэш). После префикса следует пробел, адрес шлюза в десятичном формате с разделением точками, пробел и одно или несколько значений метрики, разделенных пробелами. Примером может служить строка «192.168.1.0/24 192.168.1.1 1 2 -1 3 400». Размер маски может быть опущен; в таких случаях предполагается принятая по умолчанию маска /8 для префиксов класса A, /16 для префиксов класса B и 24 для префиксов класса C. Например, строка может иметь вид «192.168.1.0 192.168.1.1 1».

В тех случаях когда шлюз указан в форме «0.0.0.0» в качестве IP-адреса шлюза следует указывать выделенный пользователю адрес.

5.23. Framed-IPX-Network

Этот атрибут показывает номер сети IPX для пользователя. Атрибут включается в пакеты Access-Accept.

Формат атрибута Framed-IPX-Network показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 23

Length = 6

Value

Поле Value содержит 4 октета. Значение 0xFFFFFFFE показывает, что серверу NAS следует выбрать для пользователя номер сети IPX (например, из пула адресов NAS). Другие значения указывают конкретный номер сети IPX для пользователя.

5.24. State

Этот атрибут доступен для передачи от сервера к клиентам в пакетах Access-Challenge и должен передаваться без изменения от клиента к серверу в новом пакете Access-Request, являющемся откликом на запрос (challenge), если таковой отклик передается.

Этот атрибут доступен для передачи от сервера к клиентам в пакетах Access-Accept, которые включают также атрибут Termination-Action Attribute со значением RADIUS-Request. Если сервер NAS выполняет операцию Termination-Action путем передачи нового пакета Access-Request при разрыве текущего сеанса, он должен включить атрибут State в этот пакет Access-Request без изменения атрибута.

В любом случае для клиента недопустима локальная интерпретация атрибута. Пакет не может включать более одного атрибута State. Использование атрибутов State зависит от реализации.

Формат атрибута State показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 24

Length ≥ 3

String

Поле String содержит по крайней мере один октет. Формат реального значения поля зависит от сайта и приложения, в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

5.25. Class

Этот атрибут доступен для передачи от сервера к клиенту в пакетах Access-Accept. Клиентам следует пересылать атрибут без его изменения серверам учета как часть пакета Accounting-Request, если в системе поддерживается учет. Для клиентов недопустима локальная интерпретация данного атрибута.

Формат атрибута Class показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 25

Length ≥ 3

String

Поле String содержит по крайней мере один октет. Формат реального значения поля зависит от сайта и приложения, в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

5.26. Vendor-Specific

Этот атрибут позволяет разработчикам поддерживать фирменные атрибуты, недоступные или неподходящие для общего пользования. Недопустимо влияние таких атрибутов на работу протокола RADIUS.

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

Формат атрибута Vendor-Specific показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |  Length       |            Vendor-Id
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        Vendor-Id (cont)           |  String...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 26

Length ≥ 7

Vendor-Id

Старший октет этого поля имеет значение 0, а три младших октета содержат код SMI Network Management Private Enterprise для производителя в соответствии с «Assigned Numbers» RFC [6].

String

Поле String содержит по крайней мере один октет. Формат реального значения поля зависит от сайта и приложения, в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

Это поле следует представлять в формате vendor type / vendor length / value, как показано ниже. Поле Attribute-Specific зависит от принятого разработчиком определения для этого поля. Пример атрибута Vendor-Specific показан ниже:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Type      |  Length       |            Vendor-Id
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           Vendor-Id (cont)           | Vendor type   | Vendor length |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    Attribute-Specific...
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

В одном атрибуте Vendor-Specific может содержаться множество определенных разработчиком субатрибутов.

5.27. Session-Timeout

Этот атрибут задает максимальную продолжительность (в секундах) пользовательского сеанса. Атрибут доступен для передачи в пакетах Access-Accept и Access-Challenge.

Формат атрибута Session-Timeout показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 27

Length = 6

Value

Четырехоктетное поле, содержащее 32-битовое беззнаковое целое число, определяющее продолжительность пользовательского сеанса (соединения с NAS) в секундах.

5.28. Idle-Timeout

Этот параметр задает максимальный период непрерывного бездействия, по истечении которого пользовательский сеанс прерывается. Атрибут доступен для передачи от сервера к клиентам в пакетах Access-Accept и Access-Challenge.

Формат атрибута Idle-Timeout показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 28

Length = 6

Value

Четырехоктетное поле, содержащее 32-битовое беззнаковое целое число, которое определяет максимальное непрерывное время бездействия в секундах, по истечении которого пользователь отключается от сервера NAS.

5.29. Termination-Action

Атрибут указывает действие, выполняемое сервером NAS по завершении сеанса, и может использоваться только в пакетах Access-Accept.

Формат атрибута Termination-Action показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 29

Length = 6

Value

Четырехоктетное поле Value может содержать одно из двух значений.

0 принятое по умолчанию поведение
1 RADIUS-Request

При установке значения RADIUS-Request в случае прерывания обслуживания сервер NAS может передать серверу RADIUS новый запрос Access-Request, включив в него атрибут State при наличии такового.

5.30. Called-Station-Id

Этот атрибут позволяет серверу NAS передать в пакете Access-Request номер телефона, набранный пользователем и определенный с помощью DNIS12) или иной технологии. Отметим, что этот номер может отличаться от реального номера, с которым было организовано соединение. Атрибут может использоваться только в пакетах Access-Request.

Формат атрибута Called-Station-Id показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 30

Length ≥ 3

String

Поле String содержит по крайней мере один октет.

Формат реального значения поля зависит от сайта и приложения. Рекомендуется использовать текст в кодировке UTF-8 10646 [7], а в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

5.31. Calling-Station-Id

Этот атрибут позволяет серверу NAS передать в пакете Access-Request телефонный номер пользователя, определенный с помощью ANI13 или иной технологии. Атрибут может использоваться только в пакетах Access-Request.

Формат атрибута Calling-Station-Id показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 31

Length ≥ 3

String

Поле String содержит по крайней мере один октет.

Формат реального значения поля зависит от сайта и приложения. Рекомендуется использовать текст в кодировке UTF-8 10646 [7], а в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

5.32. NAS-Identifier

Этот атрибут содержит строку идентификации сервера NAS, передавшего пакет Access-Request. Атрибут используется только в пакетах Access-Request. Один из атрибутов NAS-IP-Address или NAS-Identifier должен присутствовать в каждом пакете Access-Request.

Отметим, что значение атрибута NAS-Identifier недопустимо использовать для выбора разделяемого ключа в процессе аутентификации запроса. Для выбора такого ключа должно использоваться значение IP-адреса отправителя в пакете Access-Request.

Формат атрибута NAS-Identifier показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 32

Length ≥ 3

String

Поле String содержит по крайней мере один октет и должно быть уникальным идентификатором NAS в пределах видимости сервера RADIUS. Например, в качестве NAS-Identifier может использоваться полное доменное имя сервера доступа.

Формат реального значения поля зависит от сайта и приложения, в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

5.33. Proxy-State

Этот атрибут доступен для передачи сервером-посредником другому серверу при пересылке пакета Access-Request и должен быть возвращен в неизменном виде в пакете Access-Accept, Access-Reject или Access-Challenge. Когда proxy-сервер получает отклик на свой запрос, он должен удалить свой атрибут Proxy-State (последний атрибут данного типа в пакете) до пересылки отклика серверу NAS.

При добавлении атрибута Proxy-State в пересылаемый пакет этот атрибут должен добавляться после всех имеющихся в пакете атрибутов Proxy-State.

Содержимое любого атрибута Proxy-State, кроме добавленного данным сервером атрибута этого типа, должно трактоваться как непонятные данные; недопустимо влияние этих атрибутов на работу протокола.

Использование атрибутов Proxy-State зависит от реализации. Описание этих функций выходит за пределы настоящей спецификации.

Формат атрибута Proxy-State показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 33

Length ≥ 3

String

Поле String содержит по крайней мере один октет. Формат реального значения поля зависит от сайта и приложения, в целях повышения устойчивости рекомендациям следует поддерживать трактовку этого поля как неразобранных данных.

Рассмотрение возможных значений поля выходит за пределы данной спецификации.

5.34. Login-LAT-Service

Этот атрибут указывает систему, к которой пользователь подключается по протоколу LAT. Атрибут может использоваться в пакетах Access-Accept при условии, что протокол LAT указан как Login-Service. Можно включать этот атрибут в пакеты Access-Request в качестве рекомендации серверу, но сервер не обязан следовать таким советам.

Администраторы используют этот атрибут в системах с кластерами (например, VAX или Alpha). В таких средах несколько хостов могут поддерживать ресурс совместного использования (диски, принтеры и т. п.) в режиме разделения времени и администраторы зачастую настраивают систему таким образом, чтобы предоставлялся доступ к каждому из разделяемых ресурсов. В этом случае каждый хост в кластере анонсирует свой сервис с помощью широковещательных пакетов LAT.

Изощренные пользователи зачастую знают какая из машин (поставщиков услуг) работает быстрее и при организации соединений LAT задают имя узла. Возможны также случаи, когда администраторы хотят привязать обслуживание конкретных пользователей к определенным машинам (как примитивный вариант распределения нагрузки), хотя хосты LAT сами могут балансировать загрузку.

Формат атрибута Login-LAT-Service показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 34

Length ≥ 3

String

Поле String содержит по крайней мере один октет, указывающий сервис LAT. Архитектура LAT позволяет включать в строку символы $ (доллар), — (дефис), . (точка), _ (подчеркивание), числа, строчные м прописные буквы, а также символы расширенного набора ISO Latin-1 [11]. При сравнении строк LAT прописные и строчные буквы не различаются.

5.35. Login-LAT-Node

Этот атрибут указывает узел, к которому пользователь будет автоматически подключен по протоколу LAT. Атрибут может использоваться в пакетах Access-Accept, но только при указании LAT в качестве Login-Service. Возможно использование атрибута в пакетах Access-Request как рекомендации серверу, но сервер не обязан следовать таким рекомендациям.

Формат атрибута Login-LAT-Node показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 35

Length ≥ 3

String

Поле String содержит по крайней мере один октет, идентифицирующий узел LAT, к которому подключается пользователь. Архитектура LAT позволяет включать в строку символы $ (доллар), — (дефис), . (точка), _ (подчеркивание), числа, строчные м прописные буквы, а также символы расширенного набора ISO Latin-1 [11]. При сравнении строк LAT прописные и строчные буквы не различаются.

5.36. Login-LAT-Group

Этот атрибут содержит строку, идентифицирующую коды группы LAT, которую пользователю разрешено применять. Атрибут можно использовать в пакетах Access-Accept, но только при указании LAT в качестве Login-Service. Можно включать атрибут в пакеты Access-Request как рекомендацию для сервера, но сервер не обязан принимать такие рекомендации во внимание.

LAT поддерживает 256 различных групп, которые служат для управления правами доступа пользователей. Для представления кодов используются битовые маски размером 256.

Администраторы могут выбрать один или множество кодов групп доступа для сервис-провайдера LAT. Провайдер будет принимать только такие соединения, которые имеют соответствующие биты в маске прав. Администраторы создают маску прав доступа для каждого пользователя. LAT получает биты прав от операционной системы и использует их при передаче запросов сервис-провайдерам.

Формат атрибута Login-LAT-Group показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 36

Length = 34

String

Поле имеет размер 32 октета. Для повышения устойчивости реализациям протокола следует поддерживать эти поля как необрабатываемые данные.

Кодирование прав доступа выходит за пределы данной спецификации.

5.37. Framed-AppleTalk-Link

Этот атрибут показывает номер сети AppleTalk, который следует для последовательного канала пользователя, который является другим маршрутизатором AppleTalk. Атрибут передается только в пакетах Access-Accept. Этот атрибут не применяется, если пользователь не является маршрутизатором.

Формат атрибута Framed-AppleTalk-Link показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 37

Length = 6

Value

Поле Value имеет размер 4 октета. Диапазон допустимых значений атрибута составляет 0 – 65535. Специальное значение 0 указывает на безадресный (unnumbered) последовательный канал. Значение от 1 до 65535 говорят о том, что последовательному каналу между NAS и пользователем следует присвоить указанное значение в качестве номера сети AppleTalk.

5.38. Framed-AppleTalk-Network

Этот атрибут показывает номер сети AppleTalk, который серверу NAS следует проверить для выделения номера узла AppleTalk пользователю. Атрибут передается только в пакетах Access-Accept. Этот атрибут никогда не применяется, если пользователь является маршрутизатором. Наличие более одного экземпляра данного атрибута показывает, что сервер NAS может пытаться использовать любой из указанных номеров сетей.

Формат атрибута Framed-AppleTalk-Network показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 38

Length = 6

Value

Поле Value имеет размер 4 октета. Диапазон допустимых значений атрибута составляет 0 – 65535. Специальное значение 0 показывает, что серверу NAS следует выбрать для пользователя номер сети из принятого по умолчанию диапазона. Значения от 1 до 65535 (включительно) показывают номер сети AppleTalk, которую серверу NAS следует проверить для выделения адреса.

5.39. Framed-AppleTalk-Zone

Этот атрибут указывает принятую по умолчанию зону AppleTalk для данного пользователя. Атрибут передается только в пакетах Access-Accept и не допускается использование в одном пакете нескольких экземпляров атрибута.

Формат атрибута Framed-AppleTalk-Zone показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 39

Length ≥ 3

String

Имя Default AppleTalk Zone для данного пользователя. В целях повышения устойчивости реализациям протокола следует поддерживать это поле как необрабатываемые данные.

Кодирование этого поля выходит за пределы настоящей спецификации.

5.40. CHAP-Challenge

Этот атрибут содержит запрос CHAP Challenge, передаваемый сервером NAS пользователю PPP CHAP14. Атрибут применяется только в пакетах Access-Request.

Если значение CHAP challenge имеет размер 16 октетов, оно может быть помещено в поле Request Authenticator вместо использования данного атрибута.

Формат атрибута CHAP-Challenge показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |    String...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 60

Length ≥ 7

String

Поле String содержит значение CHAP Challenge.

5.41. NAS-Port-Type

Этот атрибут показывает тип физического порта сервера NAS, через который подключается пользователь. Атрибут может передаваться вместо атрибута NAS-Port (5) или в дополнение к нему. Атрибут передается только в пакетах Access-Request. В каждый пакет Access-Request следует включать атрибут NAS-Port (5) или NAS-Port-Type (или оба атрибута), если сервер NAS может различать свои порты.

Формат атрибута NAS-Port-Type показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 61

Length = 6

Value

Поле Value имеет размер 4 октета. Значение Virtual указывает, что соединение с NAS осуществляется через некий протокол транспортного уровня вместо физического порта. Например, если пользователь обращается к NAS из сессии telne для идентификации себя как Outbound-User, пакет Access-Request может включать атрибут -Port-Type = Virtual в качестве указания серверу RADIUS что пользователь не связан с физическим портом.

Значение Тип порта Значение Тип порта

0

Async 10 G.3 Fax

1

Sync 11 SDSL — Symmetric DSL

2

ISDN Sync 12 ADSL-CAP — Asymmetric DSL, модуляция CAP

3

ISDN Async V.120 13 ADSL-DMT — Asymmetric DSL, Discrete Multi-Tone

4

ISDN Async V.110 14 IDSL — ISDN Digital Subscriber Line

5

Virtual 15 Ethernet

6

PIAFS 16 xDSL – DSL неизвестного типа

7

HDLC Clear Channel 17 Cable

8

X.25 18 Беспроводные каналы (не IEEE 802.11)

9

X.75 19 Беспроводные каналы IEEE 802.11

PIAFS15 представляет собой беспроводный вариант ISDN, используемый в Японии.

5.42. Port-Limit

Этот атрибут устанавливает максимальное число портов NAS, открытых для подключения пользователя. Атрибут может передаваться сервером клиенту в пакетах Access-Accept. Назначение атрибута состоит в управлении числом портов для организации “параллельных” соединений с помощью Multilink PPP [12] или аналогичных протоколов. Атрибут может также передаваться NAS в качестве рекомендации серверу относительно желаемого числа портов, но сервер не обязан следовать таким рекомендациям.

Формат атрибута Port-Limit показан ниже. Поля передаются слева направо.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |    Length     |             Value
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              Value (cont)         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type = 62

Length = 6

Value

Четырехоктетное поле содержит 32-битовое беззнаковое целое число, указывающее количество портов, которые сервер NAS может выделить для подключения пользователя.

5.43. Login-LAT-Port

Этот атрибут указывает порт, через который пользователь будет подключаться по протоколу LAT. Атрибут может передаваться в пакетах Access-Accept, но только при указании протокола LAT в качестве Login-Service. Можно использовать атрибут в пакетах Access-Request как рекомендацию для сервера, но сервер не обязан принимать такие рекомендации во внимание.

Формат атрибута Login-LAT-Port показан ниже. Поля передаются слева направо.

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   |     Type      |    Length     |  String ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Type = 63

Length ≥ 3

String

Поле String содержит по крайней мере один октет, идентифицирующий порт LAT, который будет использоваться для подключения. Архитектура LAT позволяет включать в строку символы $ (доллар), — (дефис), . (точка), _ (подчеркивание), числа, строчные м прописные буквы, а также символы расширенного набора ISO Latin-1 [11]. При сравнении строк LAT прописные и строчные буквы не различаются.

5.44. Таблица атрибутов

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

Request Accept Reject Challenge # Attribute

0-1

0-1

0

0

1

User-Name

0-1

0

0

0

2

User-Password16

0-1

0

0

0

3

CHAP-Password2

0-1

0

0

0

4

NAS-IP-Address17

0-1

0

0

0

5

NAS-Port

0-1

0-1

0

0

6

Service-Type

0-1

0-1

0

0

7

Framed-Protocol

0-1

0-1

0

0

8

Framed-IP-Address

0-1

0-1

0

0

9

Framed-IP-Netmask

0

0-1

0

0

10

Framed-Routing

0 0+

0

0

11

Filter-Id

0-1

0-1

0

0

12

Framed-MTU

0+ 0+

0

0

13

Framed-Compression

0+ 0+

0

0

14

Login-IP-Host

0

0-1

0

0

15

Login-Service

0

0-1

0

0

16

Login-TCP-Port

0 0+ 0+ 0+ 18

Reply-Message

0-1

0-1

0

0

19

Callback-Number

0

0-1

0

0

20

Callback-Id

0 0+

0

0

22

Framed-Route

0

0-1

0

0

23

Framed-IPX-Network

0-1

0-1

0-1

0

24

State18

0 0+

0

0

25

Class

0+

0

0 0+ 26

Vendor-Specific

0

0-1

0

0-1

27

Session-Timeout

0

0-1

0

0-1

28

Idle-Timeout

0

0-1

0

0

29

Termination-Action

0-1

0

0

0

10

Called-Station-Id

0-1

0

0

0

31

Calling-Station-Id

0-1

0

0

0

32

NAS-Identifier19

0+ 0+ 0+ 0+ 33

Proxy-State

0-1

0-1

0

0

34

Login-LAT-Service

0-1

0-1

0

0

35

Login-LAT-Node

0-1

0-1

0

0

36

Login-LAT-Group

0

0-1

0

0

37

Framed-AppleTalk-Link

0 0+

0

0

38

Framed-AppleTalk-Network

0

0-1

0

0

39

Framed-AppleTalk-Zone

0-1

0

0

0

60

CHAP-Challenge

0-1

0

0

0

61

NAS-Port-Type

0-1

0-1

0

0

62

Port-Limit

0-1

0-1

0

0

63

Login-LAT-Port

Приведенные для каждого типа пакетов количественные значения имеют следующий смысл.

0 недопустимо включение данного атрибута в пакеты этого типа;

0+ атрибут является необязательным и может присутствовать в нескольких экземплярах;

0-1 необязательный атрибут, который может присутствовать в единственном экземпляре;

1 обязательный атрибут, который должен присутствовать в единственном экземпляре;

6. Согласование с IANA

В этом разделе содержатся рекомендации по регистрации в IANA (Internet Assigned Numbers Authority) значения, связанных с протоколом RADIUS, как это указано в документе BCP 26 [13].

существует три области имен RADIUS, требующие регистрации: коды типа пакетов (Packet Type Code), типы атрибутов (Attribute Type) и, в отдельных случаях, значения атрибутов (Attribute Value).

Протокол RADIUS не предназначен для использования в качестве протокола управления общего назначения для серверов NAS (Network Access Server) и выделение значений не должно осуществляться для целей, отличных от AAA (Authentication, Authorization, Accounting – идентификация, проверка полномочий, учет).

6.1. Определения терминов

BCP 26 содержит определения используемых здесь терминов name space (пространство имен), assigned value (присвоенное значение), registration (регистрация).

BCP 26 содержит определения используемых здесь правил: Private Use (приватное использование), First Come First Served (первым пришел – первого обслужили), Expert Review (требуется одобрение экспертов), Specification Required (требуется спецификация), IETF Consensus (согласие IETF), Standards Action (значения присваиваются только для RFC, одобренных IESG).

6.2. Рекомендуемая политика регистрации

Для регистрационных запросов, которые требуют экспертизы (Designated Expert), экспертов назначает IESG Area Director for Operations.

Для регистрационных запросов, требующих обзора экспертов (Expert Review), следует обращаться к списку рассылки ietf-radius.

Коды типа пакетов (Packet Type Code) имеют значения в диапазоне от 1 до 254, из которого значения 1 – 5, 11 — 13 уже использованы. Поскольку новые типы пакетов будут оказывать влияние на взаимодействие реализаций, выделение новых типов рассматривается как Standards Action. Для новых типов следует использовать коды, начиная с 14.

Идентификаторы типа атрибутов имеют значения в диапазоне от 1 до 255. Для протокола RADIUS такое количество идентификаторов достаточно мало, поэтому их распределение требует внимания. Значения 1 – 53, 55, 60 – 88, 90 — 91 уже распределены, при этом атрибуты 17 и 21 доступны для повторного использования. Для выделения значений 17, 21, 54, 56 — 59, 89, 92 — 191 требуется уровень Expert Review вкупе со Specification Required. Выделение блоков значения (более 3) требует согласования с IETF (IETF Consensus). Рекомендуется использовать значения 17 и 21 лишь после того, как будут распределены все другие значения.

Отметим, что протокол RADIUS определяет механизм расширений Vendor-Specific (атрибут 26) и следует по возможности пользоваться этим расширением вместо выделения новых глобальных типов, если атрибут связан с реализациями RADIUS одного производителя и для его использования не требуется интероперабельности с другими реализациями.

Как было отмечено выше в разделе «Атрибуты»:

«[Type] Значения 192-223 предназначены для экспериментальных целей, значения 224-240 зарезервированы для разработчиков (специфические для реализации типы), а значения 241-255 являются резервными и не должны использоваться..»

Следовательно, атрибуты 192-240 рассматриваются как приватные (Private Use), а значения 241-255 требуют Standards Action.

Некоторые атрибуты (например, NAS-Port-Type) протокола RADIUS определяют список значений, которые могут иметь разный смысл. Для каждого из таких атрибутов возможны 4 миллиарда (232) значений. Добавление в такие списки новых значений осуществляется по принципу First Come, First Served20 в понимании IANA.

7. Примеры

Ниже представлено несколько примеров пакетов, содержащих достаточно типичные варианты атрибутов. Список примеров не является исчерпывающим – можно найти множество других вариантов. Шестнадцатеричные дампы пакетов приводятся с использованием сетевого порядка следования байтов для разделяемого ключа xyzzy5461.

7.1. Telnet-доступ к заданному хосту

Сервер NAS с адресом 192.168.1.16 передает пакет UDP типа Access-Request серверу RADIUS для пользователя с именем nemo, подключающегося через порт 3 с паролем arctangent.

Поле Request Authenticator (16 октетов) содержит случайное значение, созданное NAS.

Поле User-Password является результатом применения операции XOR по отношению к 16-октетному паролю (может быть дополнен нулями до 16 октетов) и MD5(shared secret|Request Authenticator).

01 00 00 38 0f 40 3f 94 73 97 80 57 bd 83 d5 cb
98 f4 22 7a 01 06 6e 65 6d 6f 02 12 0d be 70 8d
93 d4 13 ce 31 96 e4 3f 78 2a 0a ee 04 06 c0 a8
01 10 05 06 00 00 00 03
1 Code = Access-Request (1)
1 ID = 0
2 Length = 56
16 Request Authenticator

Атрибуты

6 User-Name = «nemo»
18 User-Password
6 NAS-IP-Address = 192.168.1.16
6 NAS-Port = 3

Сервер RADIUS проверяет пользователя nemo и передает пакет UDP типа Access-Accept серверу NAS, позволяющий клиенту nemo доступ по протоколу telnet к хосту 192.168.1.3.

Поле Response Authenticator содержит 16-октетную контрольную сумму MD5 полей code (2), id (0), Length (38), поля Request Authenticator из предыдущего пакета, атрибутов отклика и разделяемого ключа.

02 00 00 26 86 fe 22 0e 76 24 ba 2a 10 05 f6 bf
9b 55 e0 b2 06 06 00 00 00 01 0f 06 00 00 00 00
0e 06 c0 a8 01 03
1 Code = Access-Accept (2)
1 ID = 0 (тот же самый, что в пакете Access-Request)
2 Length = 38
16 Response Authenticator

Атрибуты

6 Service-Type (6) = Login (1)
6 Login-Service (15) = Telnet (0)
6 Login-IP-Host (14) = 192.168.1.3

7.2. Framed-сервис с использованием аутентификации CHAP

Сервер NAS с адресом 192.168.1.16 передает UDP-пакет Access-Request серверу RADIUS для аутентификации пользователя flopsy, подключающегося к порту 20 по протоколу PPP с использованием CHAP. Сервер NAS вместе в атрибутами Service-Type и Framed-Protocol передает серверу RADIUS сведения о том, что пользователь желает работать по протоколу PPP, хотя NAS не обязан передавать такие рекомендации.

Атрибут Request Authenticator содержит 16-октетное случайное значение, созданное NAS, которое также используется в CHAP Challenge.

Атрибут CHAP-Password содержит 1-октетное значение CHAP ID (в данном случае 22), за которым следует 16 октетов отклика CHAP response.

01 01 00 47 2a ee 86 f0 8d 0d 55 96 9c a5 97 8e
0d 33 67 a2 01 08 66 6c 6f 70 73 79 03 13 16 e9
75 57 c3 16 18 58 95 f2 93 ff 63 44 07 72 75 04
06 c0 a8 01 10 05 06 00 00 00 14 06 06 00 00 00
02 07 06 00 00 00 01
1 Code = 1 (Access-Request)
1 ID = 1
2 Length = 71
16 Request Authenticator

Атрибуты

8 User-Name (1) = «flopsy»
19 CHAP-Password (3)
6 NAS-IP-Address (4) = 192.168.1.16
6 NAS-Port (5) = 20
6 Service-Type (6) = Framed (2)
6 Framed-Protocol (7) = PPP (1)

Сервер RADIUS идентифицирует flopsy и передает UDP-пакет Access-Accept серверу NAS, говорящий тому о возможности использования PPP и выделении пользователю адреса из динамического пула.

Атрибут Response Authenticator содержит 16-октетное хэш-значение MD5 для (2), id (1), Length (56), поля Request Authenticator из предыдущего пакета, атрибутов данного отклика и разделяемого ключа.

02 01 00 38 15 ef bc 7d ab 26 cf a3 dc 34 d9 c0
3c 86 01 a4 06 06 00 00 00 02 07 06 00 00 00 01
08 06 ff ff ff fe 0a 06 00 00 00 02 0d 06 00 00
00 01 0c 06 00 00 05 dc
1 Code = Access-Accept (2)
1 ID = 1 (совпадает со значением в пакете Access-Request)
2 Length = 56
16 Response Authenticator

Атрибуты

6 Service-Type (6) = Framed (2)
6 Framed-Protocol (7) = PPP (1)
6 Framed-IP-Address (8) = 255.255.255.254
6 Framed-Routing (10) = None (0)
6 Framed-Compression (13) = VJ TCP/IP Header Compression (1)
6 Framed-MTU (12) = 1500

7.3. Пользователь подключается с помощью карты Challenge-Response

NAS с адресом 192.168.1.16 передает UDP-пакет Access-Request серверу RADIUS для пользователя mopsy, подключающегося через порт 7. Пользователь ввел пароль challenge. Генерируемые смарт-картой запрос (challenge) и отклик имеют значения 32769430 и 99101462, соответственно.

Атрибут Request Authenticator содержит 16-октетное случайное значение, созданное NAS.

Атрибут User-Password содержит результат операции XOR для 16 октетов пароля (в данном случае challenge, с дополнением нулями справа) и MD5(shared secret|Request Authenticator).

01 02 00 39 f3 a4 7a 1f 6a 6d 76 71 0b 94 7a b9
30 41 a0 39 01 07 6d 6f 70 73 79 02 12 33 65 75
73 77 82 89 b5 70 88 5e 15 08 48 25 c5 04 06 c0
a8 01 10 05 06 00 00 00 07
1 Code = Access-Request (1)
1 ID = 2
2 Length = 57
16 Request Authenticator

Атрибуты

7 User-Name (1) = «mopsy»
18 User-Password (2)
6 NAS-IP-Address (4) = 192.168.1.16
6 NAS-Port (5) = 7

Сервер RADIUS передает пользователю mopsy дополнительный запрос, на который ожидает ответа. Следовательно, RADIUS передает UDP-пакет Access-Challenge серверу NAS.

Атрибут Response Authenticator содержит 16-октетной хэш-значение MD5 для code (11), id (2), length (78), атрибута Request Authenticator из предыдущего пакета, атрибутов данного отклика и разделяемого ключа.

Атрибут Reply-Message имеет значение «Challenge 32769430. Enter response at prompt.»

Атрибут State представляет собой значение magic cookie, возвращаемое с откликом пользователя (в нашем примере это 8 октетов — 33 32 37 36 39 34 33 30 в шестнадцатеричном представлении).

0b 02 00 4e 36 f3 c8 76 4a e8 c7 11 57 40 3c 0c
71 ff 9c 45 12 30 43 68 61 6c 6c 65 6e 67 65 20
33 32 37 36 39 34 33 30 2e 20 20 45 6e 74 65 72
20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 72 6f
6d 70 74 2e 18 0a 33 32 37 36 39 34 33 30
1 Code = Access-Challenge (11)
1 ID = 2 (совпадает со значение в пакете Access-Request)
2 Length = 78
16 Response Authenticator

Атрибуты

48 Reply-Message (18)
10 State (24)

Пользователь вводит свой отклик и NAS передает новый пакет Access-Request, включая в него атрибут State.

Атрибут Request Authenticator содержит новое 16-октетное случайное значение.

Атрибут User-Password представляет собой 16-октетное значение, полученное с помощью операции XOR для пользовательского отклика (в данном случае 99101462), дополненного справа нулями и MD5(shared secret|Request Authenticator).

Атрибут State содержит значение magic cookie из пакета Access-Challenge.

01 03 00 43 b1 22 55 6d 42 8a 13 d0 d6 25 38 07
c4 57 ec f0 01 07 6d 6f 70 73 79 02 12 69 2c 1f
20 5f c0 81 b9 19 b9 51 95 f5 61 a5 81 04 06 c0
a8 01 10 05 06 00 00 00 07 18 10 33 32 37 36 39
34 33 30
1 Code = Access-Request (1)
1 ID = 3 (отметим, что значение идентификатора изменилось)
2 Length = 67
16 Request Authenticator

Атрибуты

7 User-Name = «mopsy»
18 User-Password
6 NAS-IP-Address (4) = 192.168.1.16
6 NAS-Port (5) = 7
10 State (24)

Значение атрибута Response (отклик пользователя) было некорректным (для примера), поэтому сервер RADIUS говорит NAS о необходимости отвергнуть попытку подключения.

Атрибут Response Authenticator представляет собой 16-октетное хэш-значение MD5 для code (3), id (3), length(20), атрибута Request Authenticator из предыдущего пакета, атрибутов данного отклика (если они имеются) и разделяемого ключа.

03 03 00 14 a4 2f 4f ca 45 91 6c 4e 09 c8 34 0f
9e 74 6a a0
1 Code = Access-Reject (3)
1 ID = 3 (совпадает со значением в пакете Access-Request)
2 Length = 20
16 Response Authenticator

Атрибуты

Атрибуты отсутствуют, хотя включение Reply-Message допускается.

8. Вопросы безопасности

Вопросы безопасности являются основной темой данного документа.

На практике в каждом сервере RADIUS (или на связанном с ним дополнительном сервере) имеется база данных, содержащая список имен пользователей и сопоставленных каждому пользователю идентификационных данных (secret). Не делается предположений, что пользователь с данным именем будет идентифицироваться с использованием множества методов. Такой подход является уязвимым для атак с использованием наименее безопасного метода идентификации из числа поддерживаемых. Для предотвращения таких атак следует для каждого пользователя указать единственный метод идентификации. Если пользователю нужны различные варианты идентификации в разных случаях, для решения проблемы следует создавать такому пользователю несколько записей с различными именами, каждая из которых будет использовать свою схему идентификации.

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

Ключи следует передавать с использованием механизмов, обеспечивающих минимальное число участвующих в передаче (и следовательно, способных узнать ключи) объектов. В идеальном случае о наличии ключа следует знать лишь лицам, наделенным соответствующими полномочиями. Передачу ключей можно обеспечить с помощью протоколов SNMP Security [14], но рассмотрение этих механизмов выходит за пределы данной спецификации.

Прочие методы распространения ключей требуют дополнительных исследований и экспериментов. В описывающем протокол SNMP Security документе [14] также содержится превосходный обзор связанных с сетевыми протоколами опасностей.

Механизм сокрытия User-Password, описанный в параграфе 5.2 не подвергался достаточному криптоанализу по опубликованным источникам. Некоторые члены сообщества IETF высказывают сомнения [15] в том, что этот механизм обеспечивает достаточный уровень конфиденциальности при передаче паролей в системах RADIUS. Пользователям следует оценить уровень безопасности своей среды и при необходимости подключить дополнительные механизмы обеспечения конфиденциальности.

9. Журнал изменений

Ниже приведен список изменений, внесенных в спецификацию, по сравнению с RFC 2138.

  • Переменные типа string должны использовать кодировку UTF-8 вместо US-ASCII, и трактовать их следует как 8-битовые данные.
  • Целые числа и даты задаются как 32-битовые беззнаковые целые числа.
  • Для обеспечения совместимости с таблицей атрибутов обновлен список атрибутов, которые могут включаться в Access-Challenge.
  • User-Name ссылается на идентификаторы NAI (Network Access Identifier).
  • User-Name можно передавать в пакетах Access-Accept для учета и использования с rlogin.
  • Добавлены значения для атрибутов Service-Type, Login-Service, Framed-Protocol, Framed-Compression и NAS-Port-Type.
  • Атрибут NAS-Port может использовать все 32 бита.
  • Примеры приведены с шестнадцатеричными дампами пакетов.
  • Порт отправителя UDP должен использоваться вместе с атрибутом Request Identifier для идентификации дубликатов.
  • Допускается включение множества субатрибутов в атрибуты Vendor-Specific.
  • Пакет Access-Request должен содержать по крайней мере один из атрибутов NAS-IP-Address или NAS-Identifier.
  • В раздел “Работа протокола” добавлена информация о серверах-посредниках (proxy), повторной передаче и пакетах keep-alive.
  • При наличии множества однотипных атрибутов все серверы-посредники должны сохранять порядок таких атрибутов.
  • Даны пояснения для Proxy-State.
  • Даны пояснения об отсутствии зависимости трактовки атрибутов от их положения в пакете и необходимости сохранения порядка однотипных атрибутов.
  • Добавлен раздел “Согласование с IANA”.
  • Обновлен параграф “Сервер-посредник (Proxy)» в главе «Работа протокола».
  • Атрибуты Framed-MTU могут передаваться в пакетах Access-Request в качестве рекомендации.
  • Обновлен раздел “Вопросы безопасности”.
  • Текстовые строки рассматриваются как подмножество string, для прояснения использования UTF-8.

10. Литература

[1] Rigney, C., Rubens, A., Simpson, W. and S. Willens, «Remote Authentication Dial In User Service (RADIUS)», RFC 2138, April 1997.

[2] Bradner, S., «Key words for use in RFCs to Indicate Requirement Levels», BCP 14, RFC 2119, March, 1997.

[3] Rivest, R. and S. Dusse, «The MD5 Message-Digest Algorithm», RFC 1321, April 1992.

[4] Postel, J., «User Datagram Protocol», STD 6, RFC 768, August 1980.

[5] Rigney, C., «RADIUS Accounting», RFC 2866, June 2000.

[6] Reynolds, J. and J. Postel, «Assigned Numbers», STD 2, RFC 170022, October 1994.

[7] Yergeau, F., «UTF-8, a transformation format of ISO 10646», RFC 2279, January 1998.

[8] Aboba, B. and M. Beadles, «The Network Access Identifier», RFC 2486, January 1999.

[9] Kaufman, C., Perlman, R., and Speciner, M., «Network Security: Private Communications in a Public World», Prentice Hall, March 1995, ISBN 0-13-061466-1.

[10] Jacobson, V., «Compressing TCP/IP headers for low-speed serial links», RFC 1144, February 1990.

[11] ISO 8859. International Standard — Information Processing — 8-bit Single-Byte Coded Graphic Character Sets — Part 1: Latin Alphabet No. 1, ISO 8859-1:1987.

[12] Sklower, K., Lloyd, B., McGregor, G., Carr, D. and T. Coradetti, «The PPP Multilink Protocol (MP)», RFC 1990, August 1996.

[13] Alvestrand, H. and T. Narten, «Guidelines for Writing an IANA Considerations Section in RFCs», BCP 26, RFC 2434, October 1998.

[14] Galvin, J., McCloghrie, K. and J. Davin, «SNMP Security Protocols», RFC 1352, July 1992.

[15] Dobbertin, H., «The Status of MD5 After a Recent Attack», CryptoBytes Vol.2 No.2, Summer 1996.

11. Подтверждение

Исходный вариант протокола RADIUS был разработан Стивом Вилленсом (Steve Willens) из Livingston Enterprises для линейки серверов доступа PortMaster.

12. Адрес руководителя группы

Взаимодействием участников рабочей группы руководил:

Carl Rigney

Livingston Enterprises

4464 Willow Road

Pleasanton, California 94588

Phone: +1 925 737 2100

EMail: cdr@telemancy.com

13. Адреса авторов

Связанные с этим документом вопросы можно адресовать авторам:

Carl Rigney

Livingston Enterprises

4464 Willow Road

Pleasanton, California 94588

Phone: +1 925 737 2100

EMail: cdr@telemancy.com

Allan C. Rubens

Merit Network, Inc.

4251 Plymouth Road

Ann Arbor, Michigan 48105-2785

EMail: acr@merit.edu

William Allen Simpson

Daydreamer

Computer Systems Consulting Services

1384 Fontaine

Madison Heights, Michigan 48071

EMail: wsimpson@greendragon.com

Steve Willens

Livingston Enterprises

4464 Willow Road

Pleasanton, California 94588

EMail: steve@livingston.com

Перевод на русский язык

Николай Малых

nmalykh@ptotokols.ru

14. Полное заявление авторских прав

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских правах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены «как есть» и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.

Подтверждение

Финансирование функций RFC Editor обеспечивалось Internet Society.

1Network Access Server – сервер доступа в сеть.

2Attribute-Length-Value. В последнее время для таких триплетов чаще используют обозначение TLV (Type-Length-Value – тип-размер-значение). Прим. перев.

3Point-to-Point Protocol.

4Запрос доступа.

5Аналог обмена “пароль – отзыв”, используемого часовыми. Прим. перев.

6Network Access Identifier – идентификатор доступа в сеть.

7Процесс восстановления пароля является корректным, несмотря на использование при его шифровании необратимых хеш-функций MD5. Прим. перев.

8PPP Challenge-Handshake Authentication Protocol

9Maximum Transmission Unit – максимальный размер передаваемого блока информации (кадра). Прим. перев.

10В оригинале — destination prefix. Прим. перев.

11Количество старших битов префикса, которые имеют значение.

12Dialed Number Identification – идентификация вызывающего номера.

13Automatic Number Identification – АОН.

14Challenge-Handshake Authentication Protocol

15PHS (Personal Handyphone System) Internet Access Forum Standard

16Пакет Access-Request должен включать атрибут User-Password, CHAP-Password или State. Недопустимо одновременное включение в пакеты Access-Request атрибутов User-Password и CHAP-Password. Если в будущем появятся новые типы аутентификации для использования в пакетах Access-Request, соответствующие атрибуты будут применяться взамен User-Password или CHAP-Password.

17Пакеты Access-Request должны включать по крайней мере один из атрибутов NAS-IP-Address и NAS-Identifier.

18Пакет Access-Request должен включать атрибут User-Password, CHAP-Password или State. Недопустимо одновременное включение в пакеты Access-Request атрибутов User-Password и CHAP-Password. Если в будущем появятся новые типы аутентификации для использования в пакетах Access-Request, соответствующие атрибуты будут применяться взамен User-Password или CHAP-Password.

19Пакеты Access-Request должны включать по крайней мере один из атрибутов NAS-IP-Address и NAS-Identifier.

20 Т. е., явочным порядком. Прим. перев.

22 В соответствии с RFC 3232 документ STD 2 утратил силу. Значения Assigned Numbers следует искать в базе данных, доступной на сайте www.iana.org/numbers.html. Прим. перев.

Рубрика: RFC | Оставить комментарий

RFC 2858 Multiprotocol Extensions for BGP-4

Network Working Group                                       T. Bates
Request for Comments: 2858                                Y. Rekhter
Obsoletes: 2283                                        Cisco Systems
Category: Standards Track                                 R. Chandra
                                                Redback Networks Inc
                                                             D. Katz
                                                    Juniper Networks
                                                           June 2000

Многопротокольные расширения для BGP-4

Multiprotocol Extensions for BGP-41

PDF

Статус документа

В этом документе содержится спецификация протокола, предложенного сообществу Internet. Документ служит приглашением к дискуссии в целях развития и совершенствования протокола. Текущее состояние стандартизации протокола вы можете узнать из документа Internet Official Protocol Standards (STD 1). Документ может распространяться без ограничений.

Авторские права

Copyright (C) The Internet Society (2000). All Rights Reserved.

Аннотация

В настоящее время протокол BGP-4 [BGP-4] подходит только для передачи маршрутной информации протокола IPv4 [IPv4]. В этом документе определяется расширение протокола BGP-4, позволяющее передавать информацию для различных протоколов сетевого уровня (например, IPv6, IPX и т. п.). Расширение обеспечивает обратную совместимость – маршрутизаторы, поддерживающие это расширение, смогут нормально работать с маршрутизаторами, которые его не поддерживают.

Этот документ заменяет собой RFC 2283.

1. Обзор

Только три компоненты информации, передаваемой с помощью BGP-4, непосредственно связаны с IPv4: (a) атрибут NEXT_HOP (указывается адресом IPv4), (b) AGGREGATOR (содержит адрес IPv4) и (c) NLRI (выражается префиксом адреса IPv4). В этом документе предполагается, что любой узел BGP (включая те, которые поддерживают описанное здесь расширение) имеет адрес IPv4 (который будет вместе с другими параметрами использоваться в атрибуте AGGREGATOR). Следовательно, для того, чтобы BGP-4 поддерживал маршрутизацию для множества протоколов сетевого уровня, в BGP-4 требуется добавить только два элемента: (a) возможность связывания того или иного протокола сетевого уровня с информацией о следующем интервале (next hop) и (b) возможность связывания протокола сетевого уровня с NLRI. Для идентификации протоколов сетевого уровня данный документ использует значение Address Family (семейство адресов), указанное в [RFC1700].

Легко увидеть, что информация о следующем интервале (значение атрибута NEXT_HOP) имеет смысл (и необходима) только в комбинации с анонсами доступных адресатов – в комбинации же с анонсами недоступных адресатов (отзыв маршрутов) информация о следующем интервале не имеет смысла. Это позволяет предположить, что анонсирование доступных адресатов следует объединять с анонсированием следующего интервала, который будет использоваться для этих адресатов, и анонсирование доступных адресатов следует отделить от анонсирования недоступных адресатов.

Для обеспечения совместимости с предыдущими спецификациями и упрощения перехода к поддержке многопротокольного расширения в BGP-4 в данном документе используются два новых атрибута – MP_REACH_NLRI2 и MP_UNREACH_NLRI3. Первый атрибут (MP_REACH_NLRI) используется для передачи набора доступных адресов с информацией о следующем интервале, который будет использоваться для пересылки по этим адресам. Второй атрибут (MP_UNREACH_NLRI) служит для передачи наборов недоступных адресатов. Оба эти атрибута являются необязательными и нетранзитивными. Таким образом, узел BGP, не поддерживающий многопротокольное расширение, просто будет игнорировать содержащуюся в этих атрибутах информацию и не станет передавать ее другим узлам BGP.

2. MP_REACH_NLRI (тип 14)

Этот необязательный и нетранзитивный атрибут может использоваться с несколькими целями:

  1. анонсирование партнеру возможного маршрута;

  2. обеспечение маршрутизатору возможности анонсирования адреса сетевого уровня маршрутизатора, который следует использовать как следующий интервал (next hop) на пути к адресату, указанному в поле NLRI4 атрибута MP_NLRI;

  3. обеспечение данному маршрутизатору возможности сообщать о всех или некоторых SNPA5, существующих в локальной системе.

Формат представления атрибута показан на рисунке. Назначение полей описано ниже.

+--------------------------------------------------+
|       Address Family Identifier (2 октета)       |
+--------------------------------------------------+
|  Subsequent Address Family Identifier (1 октет)  |
+--------------------------------------------------+
|   Length of Next Hop Network Address (1 октет)   |
+--------------------------------------------------+
|      Network Address of Next Hop (перемен.)      |
+--------------------------------------------------+
|           Number of SNPAs (1 октет)              |
+--------------------------------------------------+
|         Length of first SNPA (1 октет)           |
+--------------------------------------------------+
|              First SNPA (variable)               |
+--------------------------------------------------+
|          Length of second SNPA (1 октет)         |
+--------------------------------------------------+
|             Second SNPA (перемен.)               |
+--------------------------------------------------+
|                       ...                        |
+--------------------------------------------------+
|           Length of Last SNPA (1 октет)          |
+--------------------------------------------------+
|                Last SNPA (перемен.)              |
+--------------------------------------------------+
| Network Layer Reachability Information (перемен.)|
+--------------------------------------------------+

Address Family Identifier – идентификатор семейства адресов

Это поле служит для идентификации протокола сетевого уровня, связанного с указанным далее сетевым адресом. Определенные в настоящий момент значения указаны в документе RFC 17006 (раздел Address Family Numbers).

Subsequent Address Family Identifier – дополнительный идентификатор семейства адресов

Это поле содержит дополнительную информацию о типе NLRI в данном атрибуте.

Length of Next Hop Network Address – размер адреса следующего интервала

1-октетное поле, указывающее размер сетевого адреса следующего интервала (поле Network Address of Next Hop) в октетах.

Network Address of Next Hop – сетевой адрес для следующего интервала

Поле переменной длины, содержащее адрес сетевого уровня для следующего маршрутизатора на пути к получателю.

Number of SNPAs – число точек подключения подсетей

1-октетное поле, содержащее количество различных SNPA, перечисленных в последующих полях. Нулевое значение этого поля говорит об отсутствии SNPA в данном атрибуте.

Length of Nth SNPA — размер n-го SNPA

1-октетное поле, указывающее размер поля Nth SNPA of Next Hop в полуоктетах.

Nth SNPA of Next Hop – n-я SPNA следующего маршрутизатора

Поле переменной длины, содержащее SNPA маршрутизатора, чей сетевой адрес содержится в поле Network Address of Next Hop. Размер поля составляет целое число октетов, равное округленному до большего значению половины размера SNPA, выраженного в полуоктетах; если SNPA включает нечетное количество полуоктетов, значение этого поля дополняется нулевым полуоктетом после значения размера.

Network Layer Reachability Information – информация о доступности на сетевом уровне (NLRI).

Поле переменной длины, содержащее список NLRI для возможных маршрутов, которые будут анонсироваться этим атрибутом. Если поле Subsequent Address Family Identifier содержит одно из значений, определенных в данном документе, каждое значение NLRI кодируется в соответствии с параграфом 4. Представление NLRI данного документа.

Информация о следующем интервале (next hop), передаваемая в атрибуте пути MP_REACH_NLRI, определяет адрес сетевого уровня граничного маршрутизатора, который следует использовать в качестве следующего этапа пересылки адресатам, указанным в атрибуте MP_NLRI сообщения UPDATE. При анонсировании атрибута MP_REACH_NLRI внешнему партнеру маршрутизатор может использовать адрес одного из своих интерфейсов в качестве указывающей следующий интервал компоненты атрибута, полученного от внешнего партнера, для которого анонсируемый маршрут имеет общую подсеть с адресом next hop. Это называют “следующим интервалом из первых рук” («first party» next hop). Узел BGP может анонсировать внешнему партнеру интерфейс любого внутреннего партнерского маршрутизатора в компоненте next hop, полученной от внешнего партнера, для которого анонсируемый маршрут имеет общую подсеть с адресом next hop. Это называется “следующим интервалом из третьих рук” («third party» next hop). Узел BGP может анонсировать любой внешний партнерский маршрутизатор в компоненте next hop, указывающей, что адрес сетевого уровня этого граничного маршрутизатора получен от внешнего партнера, и внешний партнер, для которого будет анонсироваться маршрут имеет общую подсеть с адресом next hop. Это другой вариант “следующего интервала из третьих рук”.

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

Для узла BGP недопустимо анонсирование адреса партнера этому же партнеру в качестве следующего интервала для маршрутов, который начинается с данного узла. Для узла BGP недопустимо создание маршрутом с указанием самого себя в качестве следующего интервала.

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

Сообщение UPDATE, содержащее MP_REACH_NLRI, должно включать также атрибуты ORIGIN и AS_PATH (как для EBGP, так и для IBGP). Более того, при обмене IBGP такие сообщения должны также включать атрибут LOCAL_PREF. Если сообщение получено от внешнего партнера, локальной системе следует убедиться, что самое левое значение AS в атрибуте AS_PATH является номером автономной системы, к которой относится передавший сообщение партнер. Если это условие не выполняется, локальной системе следует передать сообщение NOTIFICATION со значениями Error Code = UPDATE Message Error и Error Subcode = Malformed AS_PATH.

В сообщених UPDATE, содержащих NLRI только в атрибуте MP_REACH_NLRI, не должен включаться атрибут NEXT_HOP. Если такое сообщение содержит атрибут NEXT_HOP, принимающему узлу BGP следует игнорировать этот атрибут.

3. MP_UNREACH_NLRI (тип 15)

Этот дополнительный нетранзитивный атрибут может использоваться для отзыва невозможных маршрутов.

Формат атрибута показан на рисунке.

+-----------------------------------------------+
|     Address Family Identifier (2 октета)      |
+-----------------------------------------------+
| Subsequent Address Family Identifier (1 октет)|
+-----------------------------------------------+
|         Withdrawn Routes (перемен.)           |
+-----------------------------------------------+

Назначение полей атрибута описано ниже.

Address Family Identifier – идентификатор семейства адресов

Это поле служит для идентификации протокола сетевого уровня, связанного с указанным далее сеетвым адресом. Определенные в настоящий момент значения указаны в документе RFC 17007 (раздел Address Family Numbers).

Subsequent Address Family Identifier – дополнительный идентификатор семейства адресов

Это поле содержит дополнительную информацию о типе NLRI в данном атрибуте.

Withdrawn Routes – отзываемые маршруты

Поле переменной длины, содержащее значения NLRI для отзываемых маршрутов. При установке в поле Subsequent Address Family Identifier одного из определенных в данном документе значений, каждое поле NLRI кодируется в соответствии с параграфом 4. Представление NLRI.

Сообщение UPDATE, содержащее MP_UNREACH_NLRI, может не включать других атрибутов пути.

4. Представление NLRI

+------------------+
| Length (1 октет) |
+------------------+
| Prefix (перемен.)|
+------------------+

Информация о доступности на сетевом уровне (NLRI) представляется в форме одной или множества пар <length, prefix>, показанных на рисунке.

Назначение каждого поля пар описано ниже.

  1. Length — размер

    Поле Length указывает размер адресного префикса в битах. Нулевой размер показывает, что префикс соответствует всем (как указано для данного семейства) адресам (т. е., сам префикс содержит 0 октетов).

  2. Prefix — префикс

    Поле Prefix включает префикс адреса, за которым следуют нулевые биты заполнения для выравнивания поля по границе октета. Отметим, что нулевые биты заполнения не принимаются во внимание.

5. Дополнительный идентификатор семейства адресов

Этот документ определяет следующие значения поля Subsequent Address Family Identifier для атрибутов MP_REACH_NLRI и MP_UNREACH_NLRI:

1 – NLRI используется для unicast-пересылки (по конкретному адресу);

2 – NLRI используется для групповой пересылки;

3 – NLRI используется для индивидуальной и групповой пересылки.

6. Обработка ошибок

Если узел BGP получает от соседа сообщение UPDATE с атрибутом MP_REACH_NLRI или MP_UNREACH_NLRI и видит, что атрибут указан некорректно, он должен удалить все маршруты BGP, полученные от данного соседа, в которых значения AFI/SAFI совпадают с одним из содержащихся в некорректном атрибуте MP_REACH_NLRI или MP_UNREACH_NLRI. До завершения сеанса BGP, в котором получено сообщение UPDATE, узлу следует игнорировать все последующие маршруты с AFI/SAFI, принятыми в этой сессии.

В дополнение к сказанному узел может прервать сеанс BGP, в котором было получено сообщение UPDATE. Сессию следует прерывать с помощью сообщения NOTIFICATION, содержащего код/субкод ошибки Update Message Error/Optional Attribute Error.

7. Использование анонсирования возможностей BGP

Узлу BGP, использующему описанное здесь расширение, следует применять процедуры анонсирования возможностей (Capability Advertisement) [BGP-CAP] для определения возможности использования данного расширения при работе с тем или иным партнером.

0       7       15      23      31
+-------+-------+-------+-------+
|      AFI      |  Res. | SAFI  |
+-------+-------+-------+-------+

Для полей дополнительного параметра Capabilities следует установить приведенные здесь значения. Поле Capability Code должно содержать значение 1 (указывает на Multiprotocol Extensions). Поле Capability Length должно иметь значение 4. Формат поля Capability Value показан на рисунке справа. Компоненты этого поля описаны ниже.

AFI — идентификатор семейства адресов (16 битов), представляемый так же, как для Multiprotocol Extensions;

Res. — резервное поле (8 битов); отправитель должен помещать в это поле значение 0, а получатель – игнорировать его;

SAFI – дополнительный идентификатор семейства адресов (8 битов), представляемый так же, как для Multiprotocol Extensions.

Узел, поддерживающий множество пар <AFI, SAFI>, включает их как множество возможностей в дополнительный параметр Capabilities.

Чтобы организовать двухсторонний обмен маршрутной информацией для той или иной пары <AFI, SAFI> между двумя узлами BGP, каждый из этих узлов должен анонсировать партнеру (с помощью механизма Capability Advertisement) возможность поддержки маршрутов для соответствующей пары <AFI, SAFI>.

8. Согласование с IANA

Как указано выше, атрибуты MPL_REACH_NLRI и MP_UNREACH_NLRI содержат поле дополнительного идентификатора семейства адресов (SAFI). Пространство имен SAFI определено в разделе 58. IANA поддерживает и регистрирует значения SAFI. Нулевое значение SAFI является резервным, значения 1, 2 и 3 выделены в настоящем документе. Значения от 4 до 63 выделяются IANA по согласованию с IETF (процедура «IETF Consensus»), как указано в документе RFC 2434. SAFI из диапазона 64 — 127 распределяются IANA в порядке поступления запросов (процедура «First Come First Served»), как описано в RFC 2434, а значения из диапазона от 128 до 255 предназначены для приватного использования и не контролируются IANA.

9. Сравнение с RFC 2283

В этом документе использование атрибута MP_REACH_NLRI ограничивается передачей только одного экземпляра <AFI, SAFI, Next Hop Information, …>.

В этом документе использование атрибута MP_UNREACH_NLRI ограничивается передачей только одного экземпляра <AFI, SAFI, …>.

В этом документе разъясняется обработка сообщений UPDATE, содержащих NLRI только в атрибуте MP_REACH_NLRI.

В этом документе разъясняется обработка ошибок при наличии атрибутов MP_REACH_NLRI и MP_UNREACH_NLRI.

В этом документе разъясняется использование анонсирования возможностей BGP (Capabilities Advertisements) в комбинации с Multiprotocol extensions.

В данный документ включен раздел 8. Согласование с IANA.

10. Вопросы безопасности

Данное расширение не оказывает влияния на вопросы безопасности, связанные с протоколом BGP [Heffernan].

11. Благодарности

Авторы выражают свою признательность членам рабочей группы IDR за просмотр документа и комментарии.

12. Литература

[BGP-CAP] Chandra, R. and J. Scudder, «Capabilities Advertisement with BGP-4», RFC 2842, May 2000.

[BGP-4] Rekhter, Y. and T. Li, «A Border Gateway Protocol 4 (BGP-4)», RFC 1771, March 1995.

[Heffernan] Heffernan, A., «Protection of BGP Sessions via the TCP MD5 Signature Option», RFC 2385, August 1998.

[IPv4] Postel, J., «Internet Protocol», STD 5, RFC 791, September 1981.

[RFC1700] Postel, J. and J. K. Reynolds, «Assigned Numbers», STD 2, RFC 170012, October 1994. (см. также http://www.iana.org/iana/assignments.html)

13. Адреса авторов

Tony Bates

Cisco Systems, Inc.

170 West Tasman Drive

San Jose, CA 95134

EMail: tbates@cisco.com

Ravi Chandra

Redback Networks Inc.

350, Holger Way

San Jose, CA 95134

EMail: rchandra@redback.com

Dave Katz

Juniper Networks, Inc.

3260 Jay St.

Santa Clara, CA 95054

EMail: dkatz@jnx.com

Yakov Rekhter

Cisco Systems, Inc.

170 West Tasman Drive

San Jose, CA 95134

EMail: yakov@cisco.com


Перевод на русский язык

Николай Малых

nmalykh@protokols.ru

14. Полное заявление авторских прав

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских правах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены «как есть» и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.

Подтверждение

Финансирование функций RFC Editor обеспечено Internet Society.

1Данный документ признан устаревшим и заменен RFC 4760, перевод которого имеется на сайте www.protokols.ru. Прим. перев.

2Multiprotocol Reachable NLRI.

3Multiprotocol Unreachable NLRI.

4Network Layer Reachability Information – информация о доступности на сетевом уровне.

5Subnetwork Points of Attachment – точка подключения подсети.

6В соответствии с RFC 3232 этот документ утратил силу. Упомянутые здесь значения доступны на сайте http://www.iana.org/assignments/address-family-numbers. Прим. перев.

7В соответствии с RFC 3232 этот документ утратил силу. Упомянутые здесь значения доступны на сайте http://www.iana.org/assignments/address-family-numbers. Прим. перев.

8В оригинале ошибочно указан раздел 9. Прим. перев.

9Этот документ утратил силу и заменен RFC 3392, а последний был заменен впоследствии RFC 5492. Прим. перев.

10Этот документ утратил силу и заменен RFC 4271. Перевод имеется на сайте www.protokols.ru. Прим. перев.

12В соответствии с RFC 3232 этот документ утратил силу STD 2 и выделенные номера в настоящее время доступны в базе данных по ссылке http://www.iana.org/numbers.html. Указанная в оригинале ссылка на сайт также утратила актуальность. Прим. перев.

Рубрика: RFC | Оставить комментарий

RFC 2842 Capabilities Advertisement with BGP-4

Network Working Group                                     R. Chandra
Request for Comments: 2842                     Redback Networks Inc.
Category: Standards Track                                 J. Scudder
                                                       cisco Systems
                                                            May 2000

Анонсирование возможностей в BGP-4

Capabilities Advertisement with BGP-41

PDF

Статус документа

В этом документе содержится спецификация протокола, предложенного сообществу Internet. Документ служит приглашением к дискуссии в целях развития и совершенствования протокола. Текущее состояние стандартизации протокола вы можете узнать из документа Internet Official Protocol Standards (STD 1). Документ может распространяться без ограничений.

Авторские права

Copyright (C) The Internet Society (2000). All Rights Reserved.

Аннотация

В настоящее время BGP-4 требует от узла BGP разрыва соединения с партнером при получении от того сообщения OPEN с одним или несколькими нераспознанными значениями дополнительных параметров. Это осложняет добавление новых возможностей в BGP.

В этом документе определяется новый дополнительный параметр Capabilities, который будет способствовать добавлению новых возможностей в протокол BGP путем анонсирования этих возможностей партнеру без разрыва соединения BGP.

1. Обзор

Когда узел BGP [BGP-4], поддерживающий анонсирование возможностей, передает своему партнеру сообщение OPEN, это сообщение может включать дополнительный параметр (Optional Parameter) Capabilities. Данный параметр включает список возможностей, поддерживаемых узлом.

Узел BGP определяет поддерживаемые партнером возможности, проверяя список возможностей, включенных в дополнительный параметр Capabilities сообщения OPEN, которое данный узел получил от своего партнера.

Узел BGP, поддерживающий ту или иную возможность, может использовать ее при работе со своим партнером после того, как определит (как описано выше), что партнер также поддерживает эту возможность.

Узел BGP считает, что его партнер не поддерживает ту или иную возможность, если в ответ на сообщение OPEN с дополнительным параметром Capabilities приходит сообщение NOTIFICATION, содержащее Error Subcode = Unsupported Optional Parameter. В таких случаях узлу следует предпринять попытку заново организовать соединение BGP с этим партнером без использования дополнительного параметра Capabilities.

Если узел BGP, поддерживающий ту или иную возможность, определяет, что его партнер не поддерживает эту возможность, узел может передать партнеру сообщение NOTIFICATION и разорвать соединение с ним. В поле Error Subcode этого сообщения следует поместить значение Unsupported Capability. В сообщение следует включать возможность (возможности), которая заставила узел передать это сообщение. Решение о передаче сообщения и разрыве соединения с партнером узел принимает по своему усмотрению. При разрыве соединения не следует предпринимать попытки его автоматического восстановления.

2. Дополнительный параметр Capabilities (тип 2)

Этот дополнительный параметр (Optional Parameter) используется узлом BGP для передачи своему BGP-партнеру списка поддерживаемых данным узлом возможностей.

Параметры включаются в форме одного или нескольких триплетов <Capability Code, Capability Length, Capability Value>, каждый из которых представляется в формате:

+----------------------------+
| Capability Code (1 октет)  |
+----------------------------+
| Capability Length (1 октет)|
+----------------------------+
| Capability Value (перемен.)|
+----------------------------+

Краткое описание полей приведено ниже.

Capability Code (код возможности)

Capability Code представляет собой 1-октетное поле, однозначно идентифицирующее данную возможность.

Capability Length (размер)

Capability Length представляет собой 1-октетное поле, указывающее размер поля Capability Value в октетах.

Capability Value (значение)

Поле Capability Value имеет переменный размер и интерпретируется в зависимости от кода возможности (Capability Code).

Та или иная возможность, указанная полем Capability Code, может включаться в Optional Parameter в нескольких экземплярах.

3. Расширение для обработки ошибок

В этом документе определено новый субкод ошибки (Error Subcode) – Unsupported Capability (неподдерживаемая возможность) со значением 7. В поле данных (Data) сообщения NOTIFICATION следует включать список возможностей, которые вызвали генерацию этого сообщения. В этом случае каждая из включаемых в список возможностей кодируется так же, как в сообщениях OPEN.

4. Согласование с IANA

Параграф 22 определяет новый дополнительный параметр Capability с полем Capability Code. IANA поддерживает реестр значений Capability Code. Нулевое (0) значение Capability Code является резервным. Коды возможностей в диапазоне от 1 до 63 выделяются IANA путем согласования с IETF («IETF Consensus»), как описано в документе RFC 2434. Коды из диапазона 64 — 127 распределяются IANA в порядке поступления запросов (процедура «First Come First Served»), описанном в документе RFC 2434. Коды от 128 до 255 предназначены для приватного использования («Private Use»), как определено в RFC 2434.

5. Вопросы безопасности

Данное расширение не оказывает влияния на проблемы безопасности, связанные с протоколом BGP [Heffernan].

6. Благодарности

Авторы выражают свою признательность членам рабочей группы IDR за просмотр документа и комментарии.

7. Литература

[BGP-4] Rekhter, Y. and T. Li, «A Border Gateway Protocol 4 (BGP-4)», RFC 17713, March 1995.

[Heffernan] Heffernan, A., «Protection of BGP Sessions via the TCP MD5 Signature Option», RFC 2385, August 1998.

8. Адреса авторов

Ravi Chandra

Redback Networks Inc.

350, Holger Way

San Jose, CA 95134

EMail: rchandra@redback.com

John G. Scudder

Cisco Systems, Inc.

170 West Tasman Drive

San Jose, CA 95134

EMail: jgs@cisco.com


Перевод на русский язык

Николай Малых

nmalykh@protokols.ru

9. Полное заявление авторских прав

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских правах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены «как есть» и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.

Подтверждение

Финансирование функций RFC Editor обеспечено Internet Society.

1Данный документ утратил силу и заменен RFC 3392, а последний, в свою очередь, заменен RFC 5492. Переводы документов имеются на сайте /. Прим. перев.

2В оригинале ошибочно указан параграф 4 (Section 4). Прим. перев.

3Этот документ заменен RFC 4271. Перевод имеется на сайте /. Прим. перев.

Сохранить

Рубрика: RFC | Оставить комментарий

RFC 2827 Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing

Network Working Group                                    P. Ferguson
Request for Comments: 2827                       Cisco Systems, Inc.
Obsoletes: 2267                                             D. Senie
BCP: 38                                       Amaranth Networks Inc.
Category: Best Current Practice                             May 2000

Фильтрация на входе в сеть для защиты от DoS-атак с использованием обманных адресов IP (IP Spoofing)

Network Ingress Filtering:
Defeating Denial of Service Attacks which employ
IP Source Address Spoofing

PDF

Статус документа

Этот документ содержит информацию для сообщества Internet. Документ может распространяться без ограничений.

Авторские права

Copyright (C) The Internet Society (1998). All Rights Reserved.

Аннотация

Недавно наблюдавшиеся DoS-атаки1 с использованием подмены адреса отправителя показали наличие серьезной опасности для провайдеров Internet (ISP) и сообщества Internet в целом. В этом документе рассматривается простой и эффективный метод борьбы с такими атаками путем фильтрации входящего трафика с целью блокировки DoS-атак, в которых используются адреса IP, не относящиеся к точкам агрегирования ISP.

1. Введение

Организация DoS-атак на различные сайты Internet [1] заставляет провайдеров и организации, связанные с безопасностью, искать новые методы ослабления таких атак. Достижение этой цели сопряжено с многочисленными трудностями, однако существует ряд простых средств, позволяющих ограничить эффективность и область распространения таких атак. Эти средства борьбы с атаками реализованы пока недостаточно широко.

Данный тип атак известен уже достаточно давно. Однако защита от них еще находится на этапе становления. В статье [2] сказано, что Билл Чесвик (Bill Cheswick) — автор книги «Firewalls and Internet Security2» [3] — заявил, что в последний момент он исключил из своей книги главу с описанием таких атак, поскольку у администратора атакуемой системы нет эффективных способов защиты, а описывая метод [атаки], следует учитывать возможность его практического применения.

Хотя предложенный здесь метод ничуть не поможет при лавинных атаках с использованием корректных3 IP-адресов, возможности использования атакующими подставных адресов будут ограничены правилами фильтрации сетей, из которых организуются атаки. Всем провайдерам настоятельно рекомендуется реализовать описанные в данном документе фильтры для того, чтобы лишить атакующих возможности использовать подставные адреса за пределами легитимно анонсируемых префиксов. Иными словами, если ISP агрегирует маршрутные анонсы для множества обслуживаемых им сетей4, этот провайдер должен использовать строгую фильтрацию для предотвращения трафика, переданного с указанием адресов отправителя за пределами агрегируемого блока адресов.

Дополнительным преимуществом предложенного метода является простота отслеживания источников атак, поскольку атакующие будут вынуждены использовать в поле отправителя легитимные адреса.

2. Основы

Ниже показана упрощенная схема атаки путем создания лавины пакетов TCP SYN:

                                                                 204.69.207.0/24
хост <----- маршрутизатор <--- Internet <----- маршрутизатор <-- атакующий

         TCP/SYN
     <---------------------------------------------
         Source: 192.168.0.4/32
SYN/ACK
no route
         TCP/SYN
     <---------------------------------------------
         Source: 10.0.0.13/32
SYN/ACK
no route
         TCP/SYN
     <---------------------------------------------
         Source: 172.16.0.2/32
SYN/ACK
no route
[и т. п.]

В этой схеме использовался ряд допущений:

  • Хост является атакуемым узлом.
  • Атакуемый находится в сети с корректным префиксом 204.69.207.0/24.
  • Атакующий использует случайные значения адреса отправителя; в данном примере они случайно выбираются адреса из приватных блоков [4], которые в общем случае не присутствуют в глобальных таблицах маршрутизации Internet и, следовательно, не являются доступными. Однако в реальных атаках могут применяться любые недоступные адреса.

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

Дополнительную сложность во время лавинных атак TCP SYN вызывает поток откликов SYN/ACK, которые передаются одному или множеству хостов5, не имеющих отношения к атаке, но становящихся ее дополнительными жертвами. Это позволяет атакующему наносить вред одновременно множеству систем..

Предпринимались попытки организации подобных атак с использованием лавины потоков UDP и ICMP. Вариант с лавиной UDP использует обманные пакеты для попыток «подключения» к сетевым службам chargen, что должно приводить к передаче потока символов в адрес хоста, чей адрес был использован в запросах. Системные администраторы должны блокировать пакеты UDP, адресованные в диагностические порты системы и приходящие извне административного домена. Другой вариант атаки (ICMP flooding) использует хитрость в механизме репликации широковещательных пакетов IP, адресованных в подсеть. Эти атаки базируются на том, что маршрутизаторы, обслуживающие крупные широковещательные сети6, преобразуют широковещательные адреса IP (например, 10.255.255.255 для пакетов, адресованных всем хостам сети 10.0.0.0/8) в широковещательные кадры уровня 2 (например для Ethernet, FF:FF:FF:FF:FF:FF). Сетевые адаптеры Ethernet (MAC-уровень) при нормальной работе прослушивают ограниченное число адресов. Одним из адресов, прослушиваемых каждым устройством Ethernet в нормальном режиме, является широковещательный адрес FF:FF:FF:FF:FF:FF. При обнаружении такого пакета в среде передачи устройство будет принимать его и инициировать прерывание для обработки полученного кадра. Таким образом, лавина подобных широковещательных кадров может поглотить все доступные ресурсы конечной системы [9]. Представляется разумным рассмотрение системными администраторами вопроса о приеме и пересылке адресованных всей сети широковещательных пакетов на граничных маршрутизаторах и отключение принятой по умолчанию обработки таких пакетов7.

При организации атаки TCP SYN с использованием недостижимых адресов в поле отправителя, атакуемый хост пытается сохранять выделенные ресурсы в ожидании отклика. Атакующие безостановочно меняет обманные адреса для каждого генерируемого пакета, что достаточно быстро приводит к исчерпанию ресурсов атакуемого хоста.

Если же атакующий указывает в пакетах легитимные адреса отправителя, атакуемая система будет слать большое число пакетов SYN/ACK предполагаемым инициаторам соединений. В этом случае атакующий нарушает работу двух систем – непосредственного объекта атаки и хоста, адрес которого используется в качестве подставного.

В результате оба варианта атаки существенно снижают производительность атакуемой системы и в некоторых случаях могут привести к полной потере работоспособности объекта атаки.

В результате возникновения таких атак производители большинства операционных систем обновили свои программы, чтобы обеспечить устойчивость серверов к атакам с высокой частотой попыток организации соединения. Эти обновления весьма полезны и являются одной из необходимых компонент решения проблемы в целом. Распространение систем фильтрации на входе (Ingress filtering) займет некоторое время, а обновить операционные системы можно значительно быстрее. Комбинация этих способов позволит обеспечить эффективную защиту от атак с подменой адресов. Сведения о программных обновлениях для ОС различных производителей можно найти в документе [1].

3. Ограничение фальсифицированного трафика

Проблемы, связанные с этим типом атак, достаточно многочисленны и включают недостатки реализации используемых хостами программ, методов маршрутизации и стеков TCP/IP в целом. Однако, ограничение транзитного трафика из обслуживаемых сетей известными и осознанно анонсируемыми префиксами адресов позволит существенно снизить возможность организации атак с подменой адресов.

                      11.0.0.0/8
                          /
                  маршрутизатор 1
                        /
                       /
                      /                              204.69.207.0/24
ISP <----- ISP <---- ISP <--- ISP <-- маршрутизатор <-- атакующий
 A          B         C        D             2
           /
          /
         /
 маршрутизатор 3
       /
 12.0.0.0/8

В приведенном примере атакующий находится в сети 204.69.207.0/24, подключение которой к Internet обеспечивает провайдер ISP D. Фильтрация входящего трафика на интерфейсе маршрутизатора 2, обеспечивающего связь с сетью атакующего, которая позволит принимать лишь те пакеты, где адрес отправителя относится к блоку 9.0.0.0/8, заблокирует возможность атаки с использованием подставных адресов из другого блока.

Фильтр входящих пакетов на маршрутизаторе 2 работает по следующему алгоритму:

IF адрес отправителя в пакете относится к сети 204.69.207.0/24
THEN пакет пересылается в направлении получателя
IF адрес отправителя в пакете относится к любому другому блоку
THEN пакет отбрасывается (drop).

Администраторы должны вести журнал отбрасываемых пакетов, который обеспечит постоянный мониторинг любых подозрительных действий.

4. Дополнительные возможности сетевого оборудования

Следует рассмотреть дополнительные функции, которые могут использоваться в новых реализациях. Ниже кратко описана одна из таких возможностей:

  • Реализация автоматических фильтров на серверах доступа. В большинстве случаев доступ по коммутируемым линиям обеспечивается для индивидуальных пользователей, которые работают с одним ПК. Единственным корректным адресом отправителя в таких случаях является адрес, выделенный провайдером для этой сессии. Сервер удаленного доступа может проверять каждый пакет на входе для предотвращения возможности применения пользователем подставных адресов. Обычно в таких устройствах должна быть предусмотрена и возможность удаленного подключения не отдельного компьютера, а сети, использующей свой маршрутизатор. Такая возможность может быть реализована, как опция. Некоторые провайдеры и производители оборудования уже сообщают о реализации фильтров на серверах доступа.

Рассматривался также вариант проверки IP-адреса отправителя, предложенный в [8], но этот метод недостаточно хорошо работает в реальных сетях. Метод заключается в просмотре адресов отправителя на предмет соответствия принявшего пакет интерфейса пути, через который обеспечивается доставка отправителю данного пакета. При наличии в Internet асимметричных маршрутов использование такой проверки представляется проблематичным.

5. Недостатки

Фильтрация по своей природе может нарушать работу некоторых «специальных» служб. Для поставщиков подобных типов сервиса целесообразно рассмотреть другие варианты организации работы этих служб, чтобы избежать влияния входных фильтров.

Одной из служб, на которые оказывает влияние фильтрация на входе, является Mobile IP [6]. Трафик в направлении мобильных узлов передается с использованием туннелей, но трафик от мобильных узлов туннелирования не использует. В результате пакеты от мобильного узла могут содержать адрес отправителя, не соответствующий принявшей пакет сети. Рабочая группа Mobile IP для решения этой проблемы предложила «обратные туннели8» [7]. Метод основан на том, что мобильная станция сначала туннелирует данные домашнему агенту (home agent) и только после этого информация передается в Internet. Дополнительным преимуществом такой схемы является повышение эффективности обработки группового трафика, что является добавочным стимулом реализации обратных туннелей в мобильных системах IP.

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

Если входные фильтры применяются в средах, где используется протокол DHCP или BOOTP, администратор должен обеспечить корректную доставку пакетов с адресом отправителя 0.0.0.0 и пакетов с адресом получателя 255.255.255.255. Область распространения пакетов directed broadcast должна быть контролируемой, а их произвольная пересылка недопустима9.

6. Заключение

Входная фильтрация трафика на периферии подключенных к Internet сетей будет снижать эффективность DoS-атак с подменой адреса отправителя. Провайдеры и администраторы корпоративных сетей уже начали использование этого типа фильтрации на периферийных маршрутизаторах. Всем сервис-провайдерам рекомендуется реализовать такие фильтры, как можно скорее. В дополнение к избавлению сообщества Internet от атак этого типа предложенный метод также помогает провайдерам локализовать источник атаки в своей сети, если входные фильтры реализованы на маршрутизаторах, используемых для подключения заказчиков.

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

На всех сетевых администраторов ложится ответственность за предотвращение атак с подменой адресов отправителей из контролируемых ими сетей.

7. Вопросы безопасности

Основной задачей данного документа является повышение уровня осведомленности и безопасности сообщества Internet в целом. Чем больше провайдеров Internet и корпоративных пользователей реализует в своих маршрутизаторах входные фильтры, тем сложнее будет организовать атаки с подменой адресов отправителей в пакетах. Фильтрация также упрощает поиск источников атак. Снижение числа атак в сети Internet позволит более эффективно использовать ресурсы для отслеживания атак, которые все-таки будут происходить время от времени.

8. Благодарности

Авторы благодарят группу NANOG10 [5] за активное обсуждение вопроса и участие в поисках возможных решений. Благодарим также Justin Newton [Priori Networks] и Steve Bielagus [IronBridge Networks] за их комментарии и вклад в работу.

9. Литература

[1] CERT Advisory CA-96.21; TCP SYN Flooding and IP Spoofing Attacks; September 24, 1996.

[2] B. Ziegler, «Hacker Tangles Panix Web Site», Wall Street Journal, 12 September 1996.

[3] «Firewalls and Internet Security: Repelling the Wily Hacker»; William R. Cheswick and Steven M. Bellovin, Addison-Wesley Publishing Company, 1994; ISBN 0-201-63357-4.

[4] Rekhter, Y., Moskowitz, R., Karrenberg, D., de Groot, G., and E. Lear, «Address Allocation for Private Internets», RFC 1918, February 1996.

[5] The North American Network Operators Group; http://www.nanog.org.

[6] Perkins, C., «IP Mobility Support», RFC 2002, October 1996.

[7] Montenegro, G., «Reverse Tunneling for Mobile IP», RFC 2344, May 1998.

[8] Baker, F., «Requirements for IP Version 4 Routers», RFC 1812, June 1995.

[9] Спасибо Craig Huegen; См. сайт: http://www.quadrunner.com/~chuegen/smurf.txt.

10. Адреса авторов

Paul Ferguson

Cisco Systems, Inc.

13625 Dulles Technology Dr.

Herndon, Virginia 20170 USA

EMail: ferguson@cisco.com

 

Daniel Senie

Amaranth Networks Inc.

324 Still River Road

Bolton, MA 01740 USA

EMail: dts@senie.com


Перевод на русский язык

Николай Малых

nmalykh@protokols.ru

11. Полное заявление авторских прав

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских правах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены «как есть» и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.


1Denial of Service – атака на службу в целях отказа последней.

2Межсетевые экраны и безопасность Internet.

3Корректность адреса в данном контексте совершенно не означает, что атакующий использует реальный адрес своего хоста. Просто подставные адреса относятся к реально распределенным блокам адресов IP. Прим. перев.

4В оригинале — downstream networks. Прим. перев.

5Чьи адреса использованы в качестве подставных. Прим. перев.

6Например, Ethernet. Прим. перев.

7Этот вопрос рассматривается в RFC 2644. Прим. перев.

8Reverse tunnel.

9См. RFC 2644. Прим. перев.

10North American Network Operators Group – Группа Сетевых Операторов Северной Америки. Прим. перев.

Рубрика: RFC | Оставить комментарий

RFC 2816 A Framework for Integrated Services Over Shared and Switched IEEE 802 LAN Technologies

Network Working Group                                         A. Ghanwani
Request for Comments: 2816                                Nortel Networks
Category: Informational                                           W. Pace
                                                                      IBM
                                                            V. Srinivasan
                                                    CoSine Communications
                                                                 A. Smith
                                                         Extreme Networks
                                                                M. Seaman
                                                                  Telseon
                                                                 May 2000

PDF

A Framework for Integrated Services Over Shared and Switched IEEE 802 LAN Technologies

Интеграция служб в разделяемых и коммутируемых средах ЛВС IEEE 802

Статус документа

Этот документ содержит информацию для сообщества Internet. Документ не содержит каких-либо стандартов Internet. Разрешается свободное копирование данного документа.

Авторские права

Copyright (C) The Internet Society (2000). All Rights Reserved.

Аннотация

Этот документ посвящен вопросам организации интегрированных служб в разделяемых и коммутируемых инфраструктурах ЛВС. Документ включает базовое описание возможностей сетей типа IEEE 802, имеющих отношение к вопросам интегрированного сервиса (задержка доступа, вариации задержек, поддержка очередей в коммутаторах ЛВС). В документе обсуждаются вопросы интеграции служб (IETF Integrated Service), которые не удается простыми средствами адаптировать к различным средам ЛВС. Рассмотрена функциональная модель поддержки протокола резервирования ресурсов (RSVP) в таких средах ЛВС. Детальное рассмотрение расширений протокола RSVP для использования в ЛВС можно найти в документе [14]. Отображение различных интегрированных служб на локальные сети IEEE 802 рассмотрено в [13].

Оглавление

Удалено в версии HTML.

1. Введение

В сети Internet для доставки трафика адресатам традиционно используется только метод “best effort” (лучшим из возможных способов). Однако последние достижения в области технологий канального уровня (link layer) и растущее число приложений, работающих в реальном масштабе времени (видеоконференции, Internet-телефония), вызвали повышенный интерес к разработке механизмов предоставления услуг в реальном масштабе времени через Internet. Основные требования к таким механизмам изложены в RFC 1633 [8], где содержатся также спецификации различных классов сетевого сервиса, разработанные группой Integrated Services (Интегрированные службы) в рамках IETF — к таким классам относятся Controlled Load (управляемая загрузка) и Guaranteed Service (управляемый сервис) [6,7]. Каждый из этих классов обслуживания предназначен для обеспечения некоторого уровня QoS1 для трафика, соответствующего заданному набору параметров. Предполагается, что приложения будут выбирать один из таких классов в соответствии с требованиями QoS. Один из механизмов использования конечными станциями таких услуг в IP-сети обеспечивается за счет сигнального протокола QoS — RSVP2 [5], — разработанного группой RSVP в составе IETF. IEEE в своем проекте 802 определяет стандарты для множества различных технологий ЛВС. Все они обычно предлагают однотипные службы дейтаграмм уровня MAC [1] для обслуживания протоколов вышележащих уровней (таких, как IP), хотя динамические характеристики для разных технологий зачастую сильно отличаются (это важно принимать во внимание при рассмотрении вопросов поддержки сервиса в реальном масштабе времени). Ниже будут рассмотрены некоторые характеристики различных технологий ЛВС на MAC-уровне применительно к вопросам интеграции служб. Стандарт IEEE 802 определяет вопросы организации связи между различными сегментами ЛВС с помощью устройств, называемых мостами MAC-уровня (MAC Bridge) или коммутаторами (Switch) [2]. В недавних работах [3,4] были также определены классы трафика, групповая фильтрация (multicast filtering) и поддержка виртуальных ЛВС (VLAN) для таких устройств. Такие технологии ЛВС часто используются на последнем интервале (hop) между пользователями и сетью Internet, а также служат в качестве строительных блоков при создании кампусных сетей. Для использования таких технологий в системах со сквозной поддержкой сервиса в реальном масштабе времени требуется обеспечить механизмы стандартизации. Для решения задач стандартизации требуются механизмы управления ресурсами на уровне логических каналов данных. В контексте данного документа управление ресурсами трактуется как контроль доступа (admission control), планирование, управление трафиком (traffic policing) и т. п. Рабочая группа ISSLL3 в составе IETF была специально создана для разработки таких механизмов стандартизации применительно к различным технологиям канального уровня.

2. Структура документа

Этот документ посвящен вопросам интеграции сервиса в сетях на основе разделяемых и коммутируемых сред Ethernet/IEEE 802.3, Token Ring/IEEE 802.5, FDDI и т. п.. В параграфе 4 рассматриваются возможности различных технологий IEEE 802 на уровне MAC. В параграфе 5 рассмотрены цели, преследуемые при разработке систем с интегрированным сервисом, и предъявляемые к таким системам требования. Функции управления ресурсами, обсуждаемые в параграфе 5 обеспечиваются с помощью менеджера полосы BM (Bandwidth Manager). В параграфе 6 описана архитектурная модель BM, а компонентам этой модели посвящен параграф 7. Некоторые варианты реализации поддержки интегрированного сервиса на канальном уровне рассмотрены в параграфе 8. Вопросы топологии для различных технологий ЛВС с учетом возможностей поддержки интегрированного сервиса рассмотрены в параграфе 9. В данном документе не делается каких либо предположений о топологии сети на канальном уровне, поскольку ставилась задача подготовить максимально краткий документ общего характера — это означает, что часть обсуждаемых здесь функций может не поддерживаться при той или иной топологии. Однако это ограничение не относится к использованию обсуждаемой модели в целом.

3. Определения

В настоящем документе и других документах ISSLL используются определенные ниже термины.

Link Layer, Layer 2, L2 (уровень 2, канальный уровень, уровень логического канала)

Технологии уровня логического канала данных (Data link layer) типа Ethernet/IEEE 802.3 и Token Ring/IEEE 802.5 обозначаются как Layer 2 или L2.

Link Layer Domain, Layer 2 Domain, L2 Domain (домен уровня 2, домен канального уровня)

Указывает на набор узлов и соединяющих эти узлы каналов без использования функций уровня L3. Домен L2 может содержать одну или несколько подсетей IP.

Layer 2, L2 Devices (устройства уровня 2, устройства канального уровня)

Устройства, реализующие только функции уровня 2, включая мосты IEEE 802.1D [2] и коммутаторы .

Internetwork Layer, Layer 3, L3 (уровень межсетевого взаимодействия, уровень 3, сетевой уровень)

Устройства, работающие на уровне 3 (сетевой) модели ISO/OSI. В данном документе рассмотрение сетевого уровня ограничивается сетями, использующими протокол IP.

Layer 3 Device, L3 Device, End Station (устройство уровня 3, устройство сетевого уровня, конечная станция)

Хосты и маршрутизаторы, использующие протоколы уровня L3 и выше, или прикладные программы, которым требуется резервирование ресурсов.

Segment (сегмент)

Физический сегмент уровня L2, содержащий одного или нескольких отправителей пакетов. Примерами сегментов могут служить сети Ethernet или Token Ring с разделением доступа к среде на базе CSMA или передачи маркера, а также полнодуплексные соединения между парами станций в коммутируемых средах.

Managed Segment (управляемый сегмент)

Управляемым сегментом будем называть сегмент с DSBM (designated subnet bandwidth manager — менеджер полосы указанной подсети) [14]), обеспечивающим управление допуском к ресурсам для каждого запроса. Управляемый сегмент включает соединенные между собой фрагменты ЛВС с разделяемой средой, которые не разделены с помощью DSBM.

Traffic Class (класс трафика)

Относится к потоку данных, для которых обеспечивается однотипный уровень сервиса в рамках коммутируемой сети.

Subnet (подсеть)

В контексте данного документа термин “подсеть” означает группу устройств сетевого уровня, имеющих одинаковый префикс адреса на сетевом уровне (адрес подсети) для всех сегментов и устройств канального уровня.

Bridge/Switch (мост/коммутатор)

Устройство рассылки пакетов на уровне 2, функционирующее в соответствии со стандартом IEEE 802.1D [2]. В контексте данного документа термины «мост» и «коммутатор» являются синонимами.

4. Рассылка кадров в сетях IEEE 802

4.1. Общая модель сервиса IEEE 802

Пользовательский приоритет (user_priority) представляет собой значение, связанное с передачей и приемом всех кадров в модели сервиса IEEE 8024. Это значение задается отправителем, использующим MAC-сервис, и передается вместе с данными приемнику, также использующему сервис MAC. На самом деле это значение может и не передаваться через сеть в явном виде. Token Ring/IEEE 802.5 передает значение приоритета в октете FC, а Ethernet/IEEE 802.3 совсем не передает это значение. IEEE 802.12 может передавать или не передавать значение пользовательского приоритета в зависимости от принятого формата кадров. При использовании кадров формата IEEE 802.5 значение приоритета передается в явном виде, а при использовании кадров формата IEEE 802.3 поддерживаются только 2 уровня приоритета (высокий и низкий), служащие для определения приоритета доступа (для этого служит значение, помещаемое в стартовый ограничитель кадра IEEE 802.3).

IEEE 802.1D [3] определяет согласованный способ передачи значения user_priority через сеть с мостами, включающую Ethernet, Token Ring, Demand Priority, FDDI и другие среды MAC-уровня, путем использования расширенного формата кадров. Описание использования user_priority приведено ниже. Интересующимся читателям мы рекомендуем обратиться за дополнительной информацией к тексту стандарта IEEE 802.1D.

Если значение user_priority явно передается в пакетах, оно используется как простая метка, позволяющая сортировать пакеты в потоке данных по уровню приоритета без детального просмотра пакетов.

Кроме упрощения работы коммутаторов явное задание пользовательского приоритета позволяет, как правило, избежать замены оборудования и программ для реализации системы оценки и классификации пакетов (например, на основе новых протоколов или правил). Более сложные коммутаторы сетевого уровня, которые могут быть использованы в центре сети, способны обеспечить дополнительный сервис за счет более тонкой классификации пакетов и, следовательно, более эффективного использования сетевых ресурсов и лучшей изоляции между различными потоками трафика.

В спецификациях IEEE 802 не рассматривается вопрос использования поля user_priority конечными станциями или сетью. Хотя IEEE 802.1D определяет статически очереди по уровню приоритета в качестве принятого по умолчанию режима работы коммутаторов, способных поддерживать несколько очередей, значение user_priority используется достаточно слабо, в силу зависимости от числа классов приоритета, реализованных в конкретном коммутаторе. Параметр user_priority определяется как 3-битовое значение, представляющее 8 уровней приоритета (7 для высшего и 0 для низшего приоритета). В общем случае коммутаторы используют следующий алгоритм — пакеты помещаются в очередь с соответствующим классом обслуживания на основе полученного значения user_priority, которое извлекается непосредственно из пакета (если используется заголовок IEEE 802.1Q или IEEE 802.5) или выделяется в соответствии с неким локальным набором правил. Очередь выбирается на основе отображения пользовательского приоритета user_priority (0 — 7) на номер одного из доступных классов трафика. Коммутатор может поддерживать несколько различных классов трафика. Для отображения user_priority на класс трафика в коммутаторе могут использоваться анонсируемые параметры IntServ и система управления доступом (admission control) в коммутаторе. Не предполагается реализации в коммутаторе других алгоритмов управления трафиком (типа взвешенных или циклических очередей).

IEEE 802.1D не содержит рекомендаций для отправителя по установке значения user_priority. Одной из основных задач данного документа является разработка таких правил и обсуждение семантики взаимодействия между коммутаторами и конечными станциями в части управления трафиком с различным уровнем приоритета. Далее по тексту документа термины «класс трафика» и user_priority трактуются как синонимы.

4.2. Ethernet/IEEE 802.3

В пакетах Ethernet не используется явная передача класса трафика или поля user_priority. Это означает, что поле user_priority должно быть регенерировано приемником или коммутатором в соответствии с некоторыми принятыми по умолчанию правилами или на основании информации, содержащейся в полях более высоких уровней. Для явной передачи значения user_priority поверх базового формата кадров MAC может использоваться инкапсуляция IEEE 802.1Q [4].

Для различных вариантов инкапсуляции пакетов IP в сетях Ethernet/IEEE 802.3 необходимо согласовать расчет управления доступом (admission control) в соответствии с требованиями кадрирования и заполнения, показанными в таблице 1. Значение ip_len в таблице указывает размер пакета IP с учетом его заголовков.

Таблица 1 Инкапсуляция Ethernet

 

Инкапсуляция

Заголовок

IP MTU (байтов)

IP EtherType (ip_len<=46 bytes)
(1500>=ip_len>=46 байтов)

64-ip_len
18

1500
1500

IP EtherType over 802.1D/Q (ip_len<=42)
(1500>=ip_len>=42 байтов)

64-ip_len

22

15005
15001

IP EtherType over LLC/SNAP (ip_len<=40)
(1500>=ip_len>=40 байтов)

64-ip_len

24

1500
1500

4.3. Token Ring/IEEE 802.5

Стандарт Token Ring [6] обеспечивает механизм приоритизации, который можно использовать для управления как очередями на передачу, так и доступом к разделяемой среде. Этот механизм реализован на основе полей AC (Access Control — управление доступом) и FC (Frame Control — управление кадром) в кадре LLC. Первые три бита поля AC — биты приоритета маркера (Token Priority) вместе с тремя последними битами AC (Reservation — резервирование) определяют, какая станция получит доступ к кольцу. Последние три бита поля FC в кадре LLC (User Priority — пользовательский приоритет) принимаются от вышележащего уровня как параметр user_priority при запросе на передачу пакета. Этот параметр также определяет значение Access Priority (приоритет доступа), используемое MAC. Значение user_priority передается через сеть (end-to-end) с помощью битов User Priority в поле FC и обычно сохраняется при прохождении через все типы мостов Token Ring. Значение 0 во всех случаях соответствует низшему приоритету.

Token Ring использует также концепцию резервирования приоритета (Reserved Priority), связанную со значением приоритета, используемого станцией при резервировании маркера для следующей передачи в кольцо. Когда свободный маркер проходит по кольцу, только станция, имеющая значение Access Priority, которое больше или равно Reserved Priority в кольце, может забрать маркер для передачи кадра. Более подробную информацию по этим вопросам вы сможете найти в работе [14].

Таблица 2 Рекомендуемые значения пользовательского приоритета для Token Ring

 

Приложение

Пользовательский приоритет

Некритично к задержкам

0

1

2

3

Управление ЛВС

4

Критичные к задержкам данные

5

Кадры приложений реального времени

6

MAC-кадры

7

Станция Token Ring теоретически способна поддерживать различные очереди для каждого из восьми уровней пользовательского приоритета user_priority и передавать кадры в соответствии с уровнем приоритета. Станция устанавливает биты Reservation в соответствии со значениями user_priority для кадров, помещенных в очередь на передачу с максимальным приоритетом. Это позволяет механизму доступа к среде обеспечить первоочередную передачу кадров с высоким приоритетом. Приложение Annex I к стандарту IEEE 802.5 Token Ring рекомендует станциям устанавливать уровни приоритета, как показано в таблице 2.

Во избежание проблем, связанных с передачей высокоприоритетного трафика, это приложение рекомендует передавать только один кадр на маркер и ограничивать размер информационного поля значением 4399 байтов при передаче через кольцо чувствительного к задержкам трафика. Большинство существующих реализаций мостов Token Ring пересылают все кадры LLC с принятым по умолчанию значением приоритета доступа (4). Приложение Annex I рекомендует таким мостам пересылать кадры LLC со значением user_priority > 4, сохраняя имеющееся значение user_priority (хотя стандарт IEEE 802.1D [3] позволяет системам сетевого управления менять значение этого поля). Возможности архитектуры Token Ring (такие, как User Priority и Reserved Priority) могут обеспечивать эффективную поддержку интегрированного сервиса для потоков, требующих гарантий QoS.

Для различных вариантов инкапсуляции пакетов IP в сетях Token Ring/IEEE 802.5 необходимо согласовывать расчеты управления доступом (admission control) с параметрами, приведенными в таблице 3.

Таблица 3 Инкапсуляция Token Ring

Инкапсуляция

Размер заголовка (байт/пакет)

IP MTU (байт)

IP EtherType over 802.1D/Q

29

43706

IP EtherType over LLC/SNAP

25

43701

4.4. FDDI

Стандарт FDDI (Fiber Distributed Data Interface) [16] обеспечивает механизм установки приоритетов, который используется для управления очередями на передачу и доступом к разделяемой среде. Механизм организации приоритетного доступа реализован аналогично механизмам приоритетов Token Ring, описанным выше. Стандарт также задает условия для “синхронного” трафика с гарантированным доступом к среде и малыми задержками. Этот режим работы не обсуждается в данном документе, поскольку этим направлением занимается отдельная рабочая группа ISSLL. При обсуждении механизмов QoS далее в этом документе FDDI будет просто трактоваться как технология Token Ring 100 Мбит/с, использующая интерфейсы, которые совместимы с сетями IEEE 802.

4.5. Demand Priority/IEEE 802.12

Стандарт IEEE 802.12 [19] описывает ЛВС с разделяемой средой 100 Мбит/с. Пакеты данных передаются с использованием кадров формата IEEE 802.3 или IEEE 802.5. Протокол MAC носит название Demand Priority (приоритет запросов). Его основной характеристикой в контексте QoS является поддержка двух уровней приоритета на обслуживание — нормального и высокого (пакеты обслуживаются в зависимости от уровня приоритета). Пакеты данных от всех узлов сети (конечных станций, мостов и маршрутизаторов) обслуживаются с использованием циклического алгоритма (round robin).

Если для передачи данных используются кадры формата IEEE 802.3, значение user_priority помещается в стартовый ограничитель пакета данных IEEE 802.12. При использовании кадров формата IEEE 802.5 значение user_priority дополнительно помещается в биты YYY поля FC в заголовках кадров IEEE 802.5 (см. параграф 4.3). Более того, к сетям IEEE 802.12 применима также инкапсуляция IEEE 802.1Q с ее собственным полем user_priority. Во всех случаях коммутаторы способны восстановить значение user_priority, установленное отправителем.

Такие же правила применимы к отображению IEEE 802.12 user_priority в мостах с различными типами сред. Единственным дополнением является то, что для кадров с нормальным приоритетом используются значения user_priority от 0 до 4, а для кадров с высоким приоритетом — от 5 до 7. Это обеспечивает отображение принятого по умолчанию в сетях Token Ring значения user_priority = 4 для мостов IEEE 802.5 в нормальный приоритет для сегментов IEEE 802.12.

Доступ к среде в сетях IEEE 802.12 является детерминированным. Механизм Demand Priority обеспечивает преимущественное право обработки для пакетов с высоким приоритетом. Если пакет с нормальным приоритетом находится в начале очереди на передачу в течение времени, превышающего PACKET_PROMOTION (200 — 300 мсек) [19], этот пакет автоматически обрабатывается как пакет с высоким приоритетом. Таким образом, пакеты с нормальным приоритетом также обрабатываются с наибольшей возможной скоростью даже при наличии в очереди пакетов с высоким приоритетом и гарантируется время доступа к среде для таких пакетов.

Интегрированный сервис может быть встроен поверх механизма доступа к среде IEEE 802.12. При объединении с механизмами управления доступом (admission control) и распределения полосы (bandwidth enforcement) гарантии задержки в соответствии с требованиями Guaranteed Service (гарантированное обслуживание) могут обеспечиваться без внесения каких-либо изменений в MAC-протокол IEEE 802.12 .

Поскольку стандарт IEEE 802.12 поддерживает форматы кадров IEEE 802.3 и IEEE 802.5, для расчета управления доступом на каналах IEEE 802.12 могут использоваться те же параметры, которые были приведены выше в параграфах 4.2 и 4.3.

5. Требования и цели

В этом разделе описываются требования и цели, которые должны приниматься во внимание при разработке архитектуры интегрированного сервиса в ЛВС. Требования относятся к функциям и возможностям, которые должны поддерживаться, а цели говорят о желаемых функциях и возможностях (они не являются абсолютно необходимыми, в отличии от требований). Многие из требований и целей обеспечиваются функциональностью, поддерживаемой с помощью Integrated Services и RSVP.

5.1. Требования

  • Резервирование ресурсов — механизм должен обеспечивать резервирование ресурсов на одном или нескольких сегментах, к которым подключены мосты/коммутаторы. Резервирование ресурсов должно обеспечиваться как для индивидуальных (unicast), так и для групповых сеансов. Требуется также обеспечить возможность изменения уровня резервирования во время сеанса.

  • Управление доступом (Admission Control) — механизм должен обеспечивать оценку уровня ресурсов, требуемого запрашиваемым уровнем QoS для сеанса, чтобы определить возможность допуска такого сеанса. Для решения задач управления полезно обеспечить возможность отклика на запросы о доступности ресурсов. Механизм должен обеспечивать принятие решений о допуске для различных типов сервиса (Guaranteed Service — гарантированное обслуживание, Controlled Load — управляемая загрузка и т.п.).

  • Разделение и планирование потоков — необходимо обеспечить механизм разделения потоков трафика таким образом, чтобы потоки реального времени имели преимущество перед другими потоками трафика (потоки best effort). Пакеты потока реального времени могут изолироваться, а планирование этих потоков может осуществляться в соответствии с требованиями на обслуживание.

  • Правила и формирование трафика — формирование и/или управление трафиком должно осуществляться с конечной станции (рабочая станция, маршрутизатор) для обеспечения соответствия согласованным параметрам трафика. Рекомендуется использовать формирование трафика (Shaping) для источника этого трафика. Маршрутизатор, инициирующий сеанс ISSLL, должен поддерживать механизм управления трафиком в соответствии с требованиями IntServ, что позволяет обеспечить соответствие для всех потоков трафика, передаваемых маршрутизатором. Механизм ISSLL на канальном уровне полагается на корректную реализацию механизмов управления (формирования) трафиком в устройствах вышележащих уровней, способных сделать это. Такое решение необходимо, поскольку мосты и коммутаторы обычно не способны поддерживать для каждого потока информацию о состоянии, требуемую для проверки соответствия потока заданным требованиям. Поддержка правил (Policing) в мостах и коммутаторах по прежнему остается лишь опцией — при реализации этой опции ее можно использовать для повышения эффективности управления потоком трафика. Этот вопрос боле подробно рассмотрен в параграфе 8.

  • Soft State — этот механизм должен поддерживать информацию о состоянии резервирования. Информация о состоянии должна периодически обновляться для сохраняющихся резервов и удаляться по истечении заданного интервала времени.

  • Централизованная и распределенная реализация — В случае централизованной реализации один элемент управляет ресурсами в масштабе всей подсети. Такое решение проще в реализации, поскольку для него не требуется модернизация мостов и коммутаторов с учетом поддержки дополнительных функций. Однако в этом случае возникают проблемы с масштабированием (географические размеры подсети и число станций в ней). В полностью распределенных системах каждый сегмент содержит локальный элемент управления ресурсами. Такое решение расширяет возможности масштабирования, однако требует модернизации всех мостов и коммутаторов в сети, поддерживающей данный механизм. Возможны и промежуточные варианты реализации, когда число управляющих ресурсами элементов больше одного, и каждый из таких элементов управляет ресурсами для нескольких сегментов и мостов/коммутаторов. В идеальном случае реализация должна быть гибкой, т. е. для небольших сетей может использоваться централизованное решение, а распределенные системы устанавливаются в больших подсетях. Примеры централизованных и распределенных систем рассмотрены в параграфе 6.

  • Масштабируемость — механизм и протоколы не должны вносить большой объем служебной информации (overhead) и должны обеспечивать возможности масштабирования, достаточные для обслуживания больших групп приемников информации так же, как это осуществляется для одного домена канального уровня.

  • Устойчивость к сбоям и восстановление — этот механизм должен обеспечивать сохранение работоспособности при сбоях, т. е. в системе не должно быть критически важных для работы узлов без резервирования (single point of failure). Например, в централизованной системе должен обеспечиваться механизм резервирования и восстановления при сбоях.

  • Взаимодействие с существующими средствами управления ресурсами — требуется обеспечить взаимодействие с существующими системами. Например, FDDI поддерживает механизм управления ресурсами «Synchronous Bandwidth Manager». Система управления ресурсами должна быть построена так, чтобы использовать преимущества этого механизма и взаимодействовать с его элементами управления.

5.2. Цели

  • Независимость от протоколов вышележащих уровней — этот механизм должен (по мере возможностей) быть независимым от протоколов вышележащих уровней (типа RSVP и IP). Независимость от RSVP весьма желательна, поскольку это обеспечивает возможность взаимодействия с сетями, поддерживающими иные протоколы резервирования ресурсов (например, ST2 [10]). Независимость от протокола IP позволит взаимодействовать с сетями на основе других протоколов (IPX, NetBIOS и т. п.).

  • Поддержка разнородных приемников относится к групповому взаимодействию (multicast communication), при котором различные приемники запрашивают разные уровни сервиса. Например, в multicast-группе со множеством приемников разные приемники могут запросить различные значения задержки. Снижение задержки может обеспечиваться за счет расхода дополнительных ресурсов на пути к приемнику, требующему минимальной задержки, без влияния на резервирование ресурсов для других приемников. В более сложном случае поддержка неоднородных приемников означает возможность одновременного предоставления различных уровней обслуживания по запросам разных приемников. В простейшем варианте поддержка неоднородных приемников будет позволять варианты, когда одним приемникам предоставляется гарантированный сервис, а другим — только возможный (best effort service). Поддержка неоднородных приемников весьма желательна и более подробно рассмотрена в параграфе 8.

  • Поддержка различных стилей фильтрации — желательно обеспечить поддержку разных стилей фильтрации, определяемых протоколом RSVP (fixed filter — фиксированный фильтр, shared explicit — явное разделение и wildcard — шаблон). Некоторые вопросы поддержки различных стилей фильтрации в домене канального уровня более подробно рассмотрены в параграфе 8.

  • Выбор пути — в локальных сетях с задаваемой отправителем маршрутизацией (source routed) типа Token Ring/IEEE 802.5 может оказаться полезным механизм выбора пути. Использование такого механизма позволяет более эффективно распределять ресурсы.

5.3. Что не рассматривается в документе

В данном документе описано отображение сервиса на существующие уровни MAC, определяемые стандартами IEEE и ANSI и использующие стандартные службы MAC-уровня (мосты IEEE 802.1). В документе не делается попыток использования или описания иных (фирменных — proprietary или стандартных) протоколов MAC-уровня, хотя следует отметить существование подобных работ (рассмотрение MAC-уровней, подходящих для отображения QoS). Эти вопросы выходят за пределы задач рабочей группы ISSLL.

5.4. Допущения

В данном документе предполагается, что сеть, рассматриваемая в плане QoS, будет «богата коммутаторами», т. е. большинство станций, использующих интегрированный сервис, связаны по крайней мере через один коммутатор. Описанные в документе механизмы и протоколы легко распространить на коммуникационные системы с такой же разделяемой средой передачи, но очень важно не упустить рассмотрение вопросов, которые могут играть важную роль в практических приложений на основе коммутируемых сетей. Принимаются во внимание и разработки в области расширения MAC для обеспечения детерминированной задержки при доступе в сеть (например, IEEE 802.12 [19] и некоторые фирменные реализации).

Хотя для примеров в основном используется протокол RSVP (как протокол вышележащего уровня для сигнализации QoS), на практике могут применяться и другие протоколы. RSVP можно заменить другим динамическим протоколом, а также делать запросы через систему управления или другие средства поддержки правил. Сигнальный протокол SBM [14], основанный на RSVP, разработан специально для архитектур, описываемых в данном документе.

В сети могут использоваться разнородные коммутаторы с разными наборами возможностей (все коммутаторы соответствуют стандарту IEEE 802.1D [2,3]) и отличающиеся механизмами организации и обслуживания очередей (от двух очередей на порт со статическим управлением приоритетами до более сложных систем со множеством очередей и поддержкой WFQ или других алгоритмов). Деление задачи на небольшие независимые фрагменты может обеспечить близкое к оптимальному использование сетевых ресурсов, но мы утверждаем, что такое решение чаще всего дает лишь незначительное повышение эффективности работы сети. Следовательно, задача состоит в том, чтобы коммутаторы в сети работали с существенно меньшим объемом информации, нежели машина RSVP в маршрутизаторах. В частности, предполагается, что в коммутаторах не реализованы очереди по потокам и правила (хотя их реализация никак не помешает).

Фундаментом модели IntServ является предположение об изоляции потоков трафика при их передаче через сеть. Предполагается также использование очередей на промежуточных узлах для формирования трафика и управления им с соответствии с заданными спецификациями трафика. В архитектуре, предлагаемой для отображения на канальный уровень, мы отошли от этого допущения в целях обеспечения простоты. Предполагается, что функции формирования/управления трафиком реализованы на конечных станциях. Для сред ЛВС разумно предположить, что конечные станции доверяют условиям согласования трафика на входе в сеть и мы будем просто выделять дополнительные ресурсы для компенсации выбросов трафика (связанных с самой природой трафика ЛВС) в процессе управления допуском к среде. Такое приближение имеет некоторое влияние на типы поддержтиваемой однородности приемников и использование статистического мультиплексирования (особенно для потоков Controlled Load). Данные вопросы рассматриваются в параграфе 8.7.

6. Базовая архитектура

Описанные в параграфе 5 функциональные требования реализуются с помощью объекта, названного менеджером полосы — BM (Bandwidth Manager). Менеджер BM отвечает за предоставление протоколам вышележащих уровней механизма запросов качества обслуживания (QoS) от сети. Компоненты менеджера полосы BM описаны ниже.

6.1. Компоненты

6.1.1. Модуль запросов (RM)

Модуль запросов (Requester Module — RM) устанавливается на каждой станции подсети. Одной из функций модуля является организация интерфейса между приложениями или протоколами вышележащих уровней (RSVP, ST2, SNMP и т. п.) и BM. Приложение может обращаться к различным функциям BM, используя примитивы для связи с RM и соответствующие параметры. Для инициирования резерва в домене канального уровня модулю запросов RM нужно передать ряд параметров: желаемый уровень сервиса (Guaranteed Service или Controlled Load), дескрипторы трафика, содержащиеся в Tspec и Rspec, которые задают количество резервируемых ресурсов [9]. Дополнительную информацию об используемых параметрах можно найти в работах [6,7,8,9]. Когда для сигнализации на сетевом уровне используется протокол RSVP, эта информация доступна и может быть получена из сообщений RSVP PATH и RSVP RESV7. В дополнение к указанным параметрам должны быть заданы адреса сетевого уровня для конечных точек. Модуль RM должен преобразовать адреса сетевого уровня в адреса канального уровня и транслировать запрос в подходящий формат, который будет понятен другим компонентам, отвечающим за контроль доступа BM. Модуль RM также отвечает за возврат информации о состоянии запросов, обрабатываемых BM, приложениям или протоколу вышележащего уровня.

6.1.2. Модуль распределения полосы (BA)

Модуль распределения полосы (BA) отвечает за контроль над распределением полосы и поддержку информации о выделенных для подсети ресурсах. Конечная станция может запрашивать различный сервис (например, резервирование полосы, изменение заданного ранее резервирования, запрос о доступности ресурсов и т. п.), запросы обрабатываются модулем BA. Связь между конечными станциями и модулем BA осуществляется с использованием модуля RM. Местоположение модуля BA определяется прежде всего выбранным методом реализации. В централизованных моделях BA может работать на одной станции подсети, а в распределенных моделях функции модуля BA могут разделяться (при необходимости) между всеми конечными станциями и коммутаторами/мостами. Модуль BA также отвечает за принятие решения о способе маркировки протокола (например, на основе решения системы контроля доступа). Модуль BA может показывать модулю RM, что пакеты относящиеся к тому или иному потоку имеет соответствующий уровень приоритета, который отображается в определенный класс трафика.

6.1.3. Коммуникационные протоколы

Должны быть заданы коммуникационные протоколы для связи между различными компонентами BM, включая:

  • связь между протоколами вышележащего уровня и RM: модуль BM должен определять для приложений примитивы, позволяющие инициировать резервирование, запрашивать BA о доступности ресурсов, менять или удалять сделанное ранее резервирование и т. п. Эти примитивы могут быть реализованы как интерфейс API для приложений. Вызывающих функции BM с помощью RM.

  • связь между RM и BA: должен быть определен механизм сигнализации для связи между RM и BA. Протокол задает сообщения, которые передаются между RM и BA для обслуживания различных запросов от объектов вышележащих уровней.

  • связь между равноправными BA: если в подсети существует более одного модуля BA, требуется организация связи между разными модулями BA. В частности, модули BA должны иметь возможность распределения между собой ответственности за сегменты, мосты и коммутаторы подсети. При получении запроса на резервирование в домене с множеством модулей BA эти модули должны иметь возможность корректной обработки таких запросов. Связь между BA также обеспечивает резервирование и восстановление при сбоях.

6.2. Централизованные и распределенные варианты

Приведены примеры, показывающие расположение компонент менеджера полосы в централизованной и распределенной среде. Отметим, что в любом случае требуется наличие RM на всех оконечных станциях, где нужно делать резервирование. По сути, централизованная или распределенная реализация относится к модулю распределения полосы BA, отвечающему за резервирование ресурсов и управление доступом. Н приведенном ниже рисунке App обозначает приложение, использующее BM. Это может быть пользовательская программа или процесс вышележащего протокола (например, RSVP).

                             +---------+
                         .-->|  BA     |<--.
                        /    +---------+    \
                       / .-->| Layer 2 |<--. \
                      / /    +---------+    \ \
                     / /                     \ \
                    / /                       \ \
+---------+        / /                         \ \       +---------+
|  App    |<----- /-/---------------------------\-\----->|  App    |
+---------+      / /                             \ \     +---------+
|  RM     |<----. /                               \ .--->|  RM     |
+---------+      / +---------+        +---------+  \     +---------+
| Layer 2 |<------>| Layer 2 |<------>| Layer 2 |<------>| Layer 2 |
+---------+        +---------+        +---------+        +---------+

Хост/маршрутизатор Промежуточный      Промежуточный       Хост/маршрутизатор
RSVP               мост/коммутатор    мост/коммутатор     RSVP

Рисунок 1. Менеджер полосы с централизованным модулем BA.

На рисунке 1 показана централизованная реализация, где один модуль BA отвечает за принятие решений по управлению доступом для всей подсети. Каждая оконечная станция включает модуль RM. Промежуточные мосты и коммутаторы в сети не выполняют каких-либо функций BM, поскольку они не принимают участия в управлении доступом. Модуль RM на оконечной станции, запрашивающей резервирование, инициирует взаимодействие с модулем BA. В больших подсетях один модуль BA может не справиться с обслуживанием резервов для всей подсети. В таких случаях потребуется развернуть множество модулей BA, каждый из которых будет управлять ресурсами в одном из неперекрывающихся сегментов подсети. В централизованной реализации модуль BA должен иметь информацию о топологии подсети на канальном уровне (Layer 2), например, данные об остовном дереве канального уровня (link layer spanning tree) для того, чтобы обеспечить резервирование ресурсов по сегментам подсети. Без такой информации модуль BM будет резервировать ресурсы во всех сегментах для каждого потока в коммутируемой сети, что на практике приведет к неэффективному использованию ресурсов.

+---------+                                              +---------+
|  App    |<-------------------------------------------->|  App    |
+---------+        +---------+        +---------+        +---------+
|  RM/BA  |<------>|  BA     |<------>|  BA     |<------>|  RM/BA  |
+---------+        +---------+        +---------+        +---------+
| Layer 2 |<------>| Layer 2 |<------>| Layer 2 |<------>| Layer 2 |
+---------+        +---------+        +---------+        +---------+

Хост/маршрутизатор Промежуточный      Промежуточный       Хост/маршрутизатор
RSVP               мост/коммутатор    мост/коммутатор     RSVP

Рисунок 2. Менеджер полосы с распределенным модулем BA.

На рисунке 2 показан вариант с полностью распределенным менеджером полосы. В этом случае все устройства подсети поддерживают функциональность BM. Для каждого оконечного по-прежнему требуется наличие RM. Кроме того, все станции активно участвуют в контроле доступа. В этой модели каждому модулю BA достаточно иметь локальную топологическую информацию, поскольку он отвечает лишь за ресурсы того сегмента, к которому подключен напрямую. Эта топологическая информация (такая, как список активных портов на остовном дереве и доступных через них индивидуальных адресов) доступна в современных коммутаторах. Отметим, что на приведенных выше рисунках стрелки между однотипными уровнями служат для индикации логических соединений.

7. Модель BM в сети

В этом разделе описано, как рассмотренная выше модель вписывается в существующую схему интегрированных услуг IETF (Integrated Services) на хостах и маршрутизаторах IP. Сначала описываются реализации уровня 3 на хостах и маршрутизаторах. Затем рассматривается применение этой модели к коммутаторам уровня 2. Показаны различия между централизованной и распределенной реализацией. В тексте встречаются ссылки на термины, заимствованные из спецификации Subnet Bandwidth Manager [14].

7.1. Модель конечной станции

7.1.1. Модель клиента уровня 3

Предполагается использование такой же клиентской модели, как в IntServ и RSVP, где термин «клиент» обозначает элемент (сущность) обслуживающий QoS в устройстве уровня 3 на каждом конце домена уровня 2. В этой модели передающий клиент отвечает за локальное управление доступом и планирование передачи пакетов в канал в соответствии с согласованным уровнем обслуживания. Как и в модели IntServ это включает управление на уровне потока с возможностью применения политики/формирования трафика на каждом генерирующем трафик узле.

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

На рисунке из спецификации RSVP показан процесс RSVP на передающих хостах.

+-----------------------------+
| +-------+  +-------+        |   RSVP
| |Appli- |  | RSVP  <------------------->
| | cation<-->       |        |
| |       |  |process| +-----+|
| +-+-----+  |       +->Polcy||
|   |        +--+--+-+ |Cntrl||
|   |данные     |  |   +-----+|
|===|===========|==|==========|
|   |  +--------+  |   +-----+|
|   |  |        |  +--->Admis||
| +-V--V-+  +---V----+ |Cntrl||
| |Class-|  | Packet | +-----+|
| | ifier|==>Schedulr|===================>
| +------+  +--------+        |  данные
+-----------------------------+

Рисунок 3. RSVP в передающих хостах.

7.1.2. Запросы к L2 ISSLL

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

Вышележащий объект делает запрос в обобщенных терминах ISSLL вида:

«Могу я зарезервировать для трафика с <traffic characteristic> и <performance requirements> из <here> в <there> и как нужно помечать такой трафик?»

где:

   <traffic characteristic> = Sender Tspec (например, полоса, пиковый уровень, MTU)
   <performance requirements> = FlowSpec (например, задержка, границы ее вариаций)
   <here> = IP-адрес(а)
   <there> = IP-адрес(а), который может быть групповым.

7.1.3. Отправитель L3

Функциональность ISSLL у отправителя показана на рисунке 4.

Функции модуля запросов RM перечислены ниже:

  • Отображение конечных точек соединения на адреса уровня 2 в ЛВС, чтобы клиент мог определить, куда передавать трафик. Эта функция может ссылаться на кэш ARP для индивидуальных адресов или выполнять алгоритмическое отображение для групповых адресов.

  • Взаимодействие с локальным модулем BA для принятия решений в части контроля доступа.

  • Форматирование запросов SBM в сеть с отображенными адресами и спецификациями фильтров и потоков.

  • Получение откликов из сети и передавать решения по управлению доступом вышележащим сетевым элементам вместе с согласованными изменениями параметров сессий.

  • Сохранение возвращенных значений user_priority для их связывания с данной сессией в таблице заголовков 802. Это будет применяться при создании заголовков уровня 2 для последующих пакетов данных этой сессии. Таблица может индексироваться, например, по идентификаторам потока RSVP.

   от IP       от RSVP
+----|------------|------------+
| +--V----+   +---V---+        |
| | Addr  <--->       |        | сигнализация SBM
| |mapping|   |Request|<----------------------->
| +---+---+   |Module |        |
|     |       |       |        |
| +---+---+   |       |        |
| |  802  <--->       |        |
| | header|   +-+-+-+-+        |
| +--+----+    /  | |          |
|    |        /   | |  +-----+ |
|    | +-----+    | +->|Band-| |
|    | |          |    |width| |
| +--V-V-+  +-----V--+ |Alloc| |
| |Class-|  | Packet | +-----+ |
| | ifier|==>Schedulr|=========================>
| +------+  +--------+         |  данные
+------------------------------+

Рисунок 4. ISSLL на передающей конечной станции.

Модуль распределения полосы (BA) присутствует только в реализациях с распределенной моделью BA. При наличии такого модуля его функция заключается в основном в применении локального контроля доступа к полосе исходящих каналов и очередям драйверов.

7.1.4. Получатель L3

Функциональность ISSLL на приемной стороне проще (рисунок 5):

  • Обработка всех полученных индикаций протокола SBM.

  • Связь со всеми локальными BA в части принятия решений по контролю доступа.

  • Передача индикаций в RSVP для нормальных ситуаций.

  • Восприятие подтверждений от RSVP и передача их через сигнальные механизмы SBM в сторону запрашивающего.

                   к RSVP       к IP
                     ^            ^
                +----|------------|------+
                | +--+----+       |      |
  сигнализ. SBM | |модуль |   +---+---+  |
<-------------> | |RM     |   | Strip |  |
                | +--+---++   |802 hdr|  |
                |    |    \   +---^---+  |
                | +--v----+\      |      |
                | |модуль | \     |      |
                | |BA     |  \    |      |
                | |       |   .   |      |
                | +-------+   |   |      |
                | +------+   +v---+----+ |
данные          | |Class-|   | Packet  | |
<==============>| | ifier|==>|Scheduler| |
                | +------+   +---------+ |
                +------------------------+

Рисунок 5. ISSLL на приемной конечной станции.

  • Возможность программирования приемного классификатора и планировщика (если он применяется) для идентификации и соответствующей трактовки классов трафика (например, резервирование буферов для определенного класса).

  • Программирование получателя на «вырезание» информации из заголовков канального уровня в принятых пакетах.

Модуль BA, присутствующий только в распределенных реализациях, применяет локальный контроль доступа, чтобы видеть, может ли запрос быть поддержан с имеющимися на приемной стороне ресурсами.

7.2. Модель коммутатора

7.2.1. Централизованное выделение полосы

В централизованных реализациях BA коммутаторы не участвуют в процессе управления доступом. Этот контроль реализуется центральным модулем BA (например, SBM8), как описано в [14]. В реальности такой модуль BA может быть совмещен с коммутатором, но его функции не обязательно будут близки к функциям пересылки коммутатора как в описанной ниже модели с распределенным BA.

7.2.2. Распределенное выделение полосы

Описанная здесь модель поведения коммутатора уровня 2 использует терминологию протокола SBM, как примера протокола управления доступом. Эта модель применима и с другими механизмами (например, статической конфигурацией или сетевым управлением) управления доступом. В коммутаторе определяются следующие объекты:

  • Локальный модуль управления доступом. Один экземпляр на каждом порту учитывает доступную полосу подключенного к порту канала. Для полудуплексных соединений учитываются ресурсы, выделяемые для обоих направлений. Для полнодуплексных каналов задача учета на входе становится тривиальной.

  • Входной модуль SBM. Один экземпляр на каждом порту реализует «сетевую» часть сигнального протокола для партнерских отношений с клиентами или другими коммутаторами. Он также поддерживает информацию об отображении классов IntServ на user_priority.

  • Модуль распространения SBM. Передает запросы, полученные контролем доступа на входных портах, соответствующим модулям SBM на выходных портах. Это требует доступа к таблице пересылки коммутатора и данным о состоянии остовного дерева для портов.

  • Выходной модуль SBM. Пересылает запросы на следующий интервал уровня 2 или 3.

  • Модуль классификации, очередей и планировщика. Функции этого модуля совпадают с описанными для процесса пересылки (Forwarding Process) стандарта IEEE 802.1D (параграф 3.7 в [3]). Модуль классификатора идентифицирует имеющую отношение к делу информацию QoS во входящих пакетах и использует ее вместе с обычной базой пересылки моста для выбора выходного порта и класса трафика при постановке пакета в очередь. Различные типы коммутаторов будут использовать разные методы идентификации потоков (см. параграф 8.1). В коммутаторах IEEE 802.1D эта информация представляет собой регенерированный параметр user_priority, который уже был декодирован принимающим сервисом MAC и мог быть отображен процессом пересылки (см. параграф 3.7.3 в [3]). Это не исключает более изощренной классификации (например, классификации отдельных потоков IntServ). Модули Queue и Scheduler реализуют выходные очереди для портов и обеспечивают алгоритмы обслуживания очередей для обеспечения сервиса IntServ. Коммутаторы поддерживают одну или несколько очередей для каждого порта и, по крайней мере, базовый механизм приоритизации в соответствии с IEEE 802.1D.

  • Модуль отображения классов и политики для входного трафика. Функции этого модуля описаны в параграфе 3.7 стандарта IEEE 802.1D. Этот необязательный модуль может распределять входящий трафик по классам в соответствии с согласованными параметрами, а также может отбрасывать пакеты или менять отображение user_priority. По умолчанию модуль пропускает трафик без изменений.

  • Модуль отображения классов для выходного трафика. Функции этого модуля описаны в параграфе 3.7 стандарта IEEE 802.1D. Этот необязательный модуль может заново отображать классы трафика для каждого выходного порта. По умолчанию модуль пропускает трафик без изменений.

На рисунке 6 показаны все модули поддерживающего ISSLL коммутатора. Модель ISSLL является надмножеством модели моста IEEE 802.1D.

                  +-------------------------------+
 сигнализация SBM | +-----+   +------+   +------+ | сигнализация SBM 
<------------------>| IN  |<->| SBM  |<->| OUT  |<---------------->
                  | | SBM |   | prop.|   | SBM  | |
                  | +-++--+   +---^--+   /----+-+ |
                  |  / |          |     /     |   |
    ______________| /  |          |     |     |   +-------------+
   | \             /+--V--+       |     |  +--V--+            / |
   |   \      ____/ |Local|       |     |  |Local|          /   |
   |     \   /      |Admis|       |     |  |Admis|        /     |
   |       \/       |Cntrl|       |     |  |Cntrl|      /       |
   | +-----V+\      +-----+       |     |  +-----+    /+-----+  |
   | |traff |  \              +---+--+ +V-------+   /  |egrss|  |
   | |class |    \            |Filter| |Queue & | /    |traff|  |
   | |map & |=====|==========>|Data- |=| Packet |=|===>|class|  |
   | |police|     |           |  base| |Schedule| |    |map  |  |
   | +------+     |           +------+ +--------+ |    +-+---+  |
   +----^---------+-------------------------------+------|------+
входные | данные                                выходные | данные
========+                                                +========>

Рисунок 6. ISSLL в коммутаторе.

7.3. Управление доступом

При получении запроса на управление доступом, коммутатор выполняет перечисленные ниже действия (в качестве примера используется протокол SBM). Поведение будет меняться в зависимости от наличия для данного сегмента означенного (Designated) SBM. Более подробное описание действий DSBM/SBM приведено в [14].

  • Если входной SBM является Designated SBM для этого канала, он транслирует все принятые значения user_priority или выбирает класс трафика уровня 2 , совместимый с запросом, использование которого не нарушает действующих административных правил. По сути, это будет выбором «лучшего» класса из числа доступный и соответствующих запросу. При успешном резервировании это гарантирует передачу клиенту значения user_priority, соответствующего классу трафика.

  • Входной DSBM наблюдает состояние распределения ресурсов на входном порту/канале и определяет возможность выделения новых ресурсов для отображенного класса трафика. Если запрос принимается, он будет передан распространителю резервирования (reservation propagator).

  • Если входной SBM не является Designated SBM для канала, тогда он напрямую передает запрос распространителю резервирования.

  • Распространитель резервирования передает запрос системе учета полосы на каждом выходном канале коммутатора, к которому это резервирование может относиться. Это предполагает интерфейс с таблицей маршрутизации/пересылки.

  • Система учета исходящей полосы наблюдает текущее состояние распределения ресурсов очередей на выходном порту и полосы канала для определения возможности нового выделения ресурсов. Отметим, что это решение является единственным локальным решением для данного коммутатора, при дальнейшем пути через сеть L2 другие коммутаторы могут отвергнуть этот запрос.

  • Будучи принятым данным коммутатором, запрос распространяется на все выбранные исходящие каналы. Любое значение user_priority, указанное в пересылаемом запросе, должно транслироваться в соответствии с таблицей исходящих отображений.

  • Если запрос принят, коммутатор должен сообщить клиенту значение user_priority для использования с пакетами, относящимися к данному потоку. Следует отметить, что и в этом случае нисходящие коммутаторы могут отвергнуть запрос.

  • Если коммутатор хочет отвергнуть запрос, он может сделать это, уведомив запросившего клиента по адресу L2.

7.4. Сигнализация QoS

Описанные в этом документе механизмы используют сигнальный протокол на устройствах для передачи их запросов на управление доступом через сеть. Ниже приведены определения услуг, обеспечиваемых таким протоколом (например, [14]). Показаны примитивы и информация, которой нужно обмениваться с помощью сигнального протокола. Во всех примерах также указываются механизмы удаления/сброса для разрыва организованных сессий.

7.4.1. Определения клиентских служб

Перечисленные ниже интерфейсы можно видеть на рисунках 4 и 5.

  • SBM <-> Отображение адресов

    Это простая функция просмотра, которой может потребоваться взаимодействие с протоколом ARP или алгоритмическим отображением. Адреса уровня 2 нужны SBM для включения в сигнальные сообщения, чтобы избежать необходимости использования коммутаторами данных уровня 3 для отображения.

    l2_addr = map_address( ip_addr )

  • SBM <-> Заголовок сессии/канального уровня

    Эта функция служит для уведомления пути передачи о способе добавления данных из заголовков L2 (например, значений user_priority) к трафику каждого исходящего потока. Путь передачи будет предоставлять значение user_priority при запросе для каждого пакета передачи на уровне MAC. Параметр user_priority является одним из передаваемых в пакете примитивов, определенных сервисной моделью IEEE 802.

    bind_l2_header( flow_id, user_priority )

  • SBM <-> Классификатор/планировщик

    Эта функция служит для уведомление передающего классификатора/планировщика о любой дополнительной информации L2, связанной с планированием передачи потока пакетов. Данный примитив может не использоваться в некоторых реализациях или может служить, например, для предоставления планировщику пакетов информации о необходимости выполнения операций на уровне класса трафика в дополнение к операциям на уровне потока пакетов, обусловленной требованиями IntServ; заголовок L2 может служить образцом (в дополнение к FilterSpec) для идентификации потока трафика.

    bind_l2schedulerinfo( flow_id, , l2_header, traffic_class )

  • SBM <-> Локальное управление доступом

    Эта функция применяется локальной системой контроля доступа для сессии (например, для решения вопроса о наличии достаточной для новой сессии полосы, свободных буферов и т. п.). При положительном ответе следует выделять требуемые ресурсы; при отказе на последующих узлах все выделенные ресурсы должны быть освобождены. Вызывать эту функцию может, например, Designated SBM для сегмента.

    status = admit_l2session( flow_id, Tspec, FlowSpec )

  • SBM <-> RSVP

    Эта функция рассмотрена в параграфе 7.1.2 и полностью описана в [14].

  • Интерфейсы управления

    Некоторые или все описанные в этой модели модули будут требовать настройки конфигурации. Предполагается, что детали объектов управления будут разработаны в будущем группой ISSLL WG.

7.4.2. Определения служб в коммутаторах

Перечисленные ниже интерфейсы показаны на рисунке 6.

  • SBM <-> Классификатор

    Служит для уведомления приемного классификатора о способе связывания входной информации L2 с классом трафика. В некоторых случаях может состоять из группы неизменных отображений, используемых по умолчанию.

    bind_l2classifierinfo( flow_id, l2_header, traffic_class )

  • SBM <-> Планировщик очередей и пакетов

    Служит для уведомления передающего планировщика о дополнительной информации L2, связанной с данным классом трафика. В некоторых случаях может не использоваться (см. предыдущий параграф).

    bind_l2schedulerinfo( flow_id, l2_header, traffic_class )

  • SBM <-> Локальное управление доступом

    Идентично описанной выше функции для хоста.

  • SBM <-> Отображение класса трафика и правила

    Необязательная настройка любого повторного отображения user_priority, которое может быть выполнено на входе и выходе портов коммутатора. Для коммутаторов IEEE 802.1D такие отображения будут согласованными на всех портах.

    bind_l2ingressprimap( inport, in_user_pri, internal_priority )

    bind_l2egressprimap( outport, internal_priority, out_user_pri)

    Необязательная любой функции исполнения правил L2 будет применяться на уровне класса трафика, для пакетов, соответствующих заголовку L2. Если коммутатор может управлять правилами на уровне потока, существующие модели IntServ/RSVP будут обеспечивать определение сервиса для такой настройки.

    bind_l2policing( flow_id, l2_header, Tspec, FlowSpec )

  • SBM <-> База данных фильтрации

    Правила распространения SBM требуется доступ к базе данных пересылки L2 для решения вопросов о пересылке сообщений SBM. Это похоже на интерфейс RSRR в L3 RSVP.

    output_portlist = lookup_l2dest( l2_addr )

  • Интерфейсы управления

    Некоторые или все описанные в этой модели модули будут требовать настройки конфигурации. Предполагается, что детали объектов управления будут разработаны в будущем группой ISSLL WG.

8. Вопросы реализации

Как было отмечено выше, рабочая группа Integrated Services определила различные классы сервиса, предлагающие разные уровни гарантий QoS. На начальном этапе работа концентрировалась вокруг классов Controlled Load9 [6] и Guaranteed Service10 [7]. Сервис Controlled Load обеспечивает слабые гарантии и неформально его можно выразить словами «как в модели best effort для незагруженной сети». Сервис Guaranteed Service ограничивает максимальную задержку пакетов в сети. Расширения, которые эти службы могут поддерживать на канальном уровне, зависят от множества факторов, включая топологию сети и используемые технологии. Некоторые вопросы отображений рассматриваются ниже с учетом развития стандартов канального уровня и функций, поддерживаемых протоколами вышележащих уровней. С учетом присущих некоторым топологиям ограничений реализация всех требований Integrated Services для заданной топологии может оказаться невозможной. В таких случаях целесообразно рассмотреть приближение, которое может быть реализовано на практике. Например, управление трафиком на всех элементах сети в соответствии с требованиями Controlled Load может оказаться невозможным. Но эту задачу можно оставить оконечным станциям, что обеспечит достаточно хорошее приближение к желаемому сервису.

8.1. Характеристики коммутаторов

Имеется множество мостов/коммутаторов ЛВС с существенно различающимися возможностями поддержки QoS. Ниже рассмотрены различные типы устройств, которые можно встретить в средах ЛВС.

Наиболее широко распространены коммутаторы, соответствующие спецификации IEEE 802.1D 1993 г. [2]. Такие устройства поддерживают по одной очереди на порт и используют алгоритм spanning tree для предотвращения петель. В построенных на таких устройствах сетях не следует ожидать каких-либо гарантий сервиса по причине полного отсутствия возможностей изоляции трафика.

Следующий уровень образуют мосты,коммутаторы, соответствующие пересмотренному стандарту IEEE 802.1D [3]. Они поддерживают до восьми очередей для разных классов трафика. Уровень изоляции трафика достаточно груб, поскольку все потоки одного класса объединяются. Кроме того, возможно отображение нескольких уровней приоритета на один класс трафика в зависимости от числа реализованных в коммутаторе очередей. Такому устройству будет сложно обеспечить защиту от потоков с некорректным поведением. Область группового трафика может быть ограничена с помощью GMRP лишь теми сегментами, которые входят в путь к интересующим получателям.

Следующий уровень образуют коммутаторы,мосты, реализующие необязательные функции IEEE 802.1D типа отображения принятых значений user_priority на некий внутренний набор канонических значений по входным портам. Коммутаторы могут также поддерживать отображение этих внутренних канонических значений на передаваемые значения user_priority по выходным портам. С помощью таких дополнительных средств администраторы могут организовать отображения классов трафика между парами конкретных портов, что обеспечивает более гибкий контроль доступа в защищенные классы трафика.

К другим опциональным возможностям мостов и коммутаторов относится поддержка классификации потоков IntServ с использованием полей заголовков сетевого уровня, применение правил к потокам и формирование трафика для поддержки Guaranteed Service, а также более изощренные алгоритмы планировщиков типа взвешенных очередей для ограничения полосы конкретного класса трафика. Отметим, что эти возможности обеспечивают преимущества в плане изоляции трафика и управления каждым потоком для поддержки сервиса Controlled Load и Guaranteed Service.

8.2. Очереди

Пакетные сети без явной организации соединений (Connectionless), в целом, и ЛВС, в частности, работают благодаря масштабированию сетевого сервиса. Обычно в сети предоставляется избыточная полоса и буферы для потребления трафика, генерируемого протоколами вышележащих уровней, зачастую достаточные для того, чтобы перегрузки в сети были редкими и кратковременными, а средняя нагрузка была достаточно мала.

С появлением критичного к задержкам трафика предложить клиента избыточные ресурсы стало сложнее. Критичные к задержкам пакеты могут занимать очередь продолжительное время (не только в период выбросов), создавая проблемы для остальных пакетов (особенно в узких местах сети типа переходов 100 или 10 Мбит/с между коммутатором в стойке и настольным коммутатором, к которому подключены пользователи. В таких случаях, если заранее известно (особенности приложений, статистика или административный контроль), что доля критичного к задержкам трафика достаточно мала, целесообразно обеспечить ему приоритет перед остальным трафиком. При этом в самом неблагоприятном случае задержка критичного трафика составит не более времени передачи одного кадра (меньше 1 мсек для Ethernet 10 Мбит/с) и будет существенно меньше задержки, воспринимаемой человеком.

Когда сетевой элемент предлагает более одного приоритетного сервиса (например, поддержка Controlled Load и Guaranteed Service), требования к дисциплине планирования усложняются. Для обеспечение требуемой изоляции между классами обслуживания может потребоваться организация раздельных очередей. Возникает проблема обслуживания очередей, для которых требуется комбинация контроля доступа с более интеллектуальными дисциплинами очередей. Как спецификации сервиса, так и спецификации алгоритмов управления очередями выходят за пределы данного документа.

8.3. Отображение сервиса на приоритеты канального уровня

Число поддерживаемых классов трафика и методов доступа рассматриваемой технологии будет определять число и тип поддерживаемых услуг. Например, в сетях Token Ring/IEEE 802.5 поддерживается 8 уровней приоритета, которые могут отображаться на один или множество классов трафика. Сети Ethernet/IEEE 802.3 не поддерживают в кадрах сигнализации уровней приоритета. Однако комитет по стандартизации IEEE 802 недавно разработал новый стандарт для мостов и коммутаторов, поддерживающий передачу multimedia-трафика и динамическую фильтрацию при групповой передаче (multicast) [3]. Формат передачи полей user_priority во всех средах ЛВС IEEE 802 LAN в настоящее время определен в документе [4]. Эти стандарты позволяют во всех средах поддерживать до 8 классов трафика. Передаваемые в кадрах биты user_priority отображаются на конкретный класс трафика в мостах и коммутаторах. Поле user_priority обеспечивает сквозную сигнализацию, если коммутаторы/мосты на пути передачи не меняют его значение. Класс трафика, используемый для потока, зависит от запрошенного качества обслуживания и результатов резервирования. Следовательно, отправителю нужно использовать значение user_priority, которое отображается на класс best effort (по возможности), если иное не задано BM. Модуль BM при успешном резервировании задает значение user_priority, которое отправитель будет применять для данных сессии. В документе [13] решается задача отображения разных интегрированных служб (Integrated Service) на подходящие классы трафика.

8.4. Повторное отображение некорректно агрегированных потоков

Другой темой обсуждения в контексте IntServ является обслуживание трафика для потоков данных от источников, генерирующих избыточный по сравнению с контрактом трафик. Решение, имеющие некоторые перспективы, заключается в трактовке такого трафика, как имеющего сниженный приоритет11 для защиты трафика, которому обычно предоставляется сервис Best effort. Трафик Best effort часто является адаптивным и использует те или иные механизмы контроля перегрузок, и будет некорректно «наказывать» такие потоки в результате «плохого поведения» зарезервированных потоков, которые зачастую организуются неадаптивными приложениями.

Возможным решением является присвоение обычного класса Best effort для одного из user_priority и отнесение избыточного не соответствующего требованиям трафика к более низкому уровню user_priority, хотя возможное нарушение порядка в результате такого подхода может оказаться нежелательным, особенно для потоков TCP. По этой причине для сервиса controlled load рекомендуется отбрасывать избыточный трафик вместо снижения приоритета для него. Этот вариант будет рассмотрен ниже.

8.5. Изменение полученных значений user_priority

В некоторых случаях сетевой администратор может не доверять содержащимся в пакетах значениям user_priority и отображать их на более подходящий набор значений. Кроме того, отображение значений user_priority может потребоваться в результате присущих оборудованию ограничений или перехода на другой диапазон и будет зависеть от областей сети, с которыми происходит обмен пакетами.

Некоторые коммутаторы могут реализовать такую функцию на входе, отображая полученные user_priority на некий внутренний набор значений. Эта функция реализуется с помощью таблицы, которая в стандарте IEEE 802.1D называется User Priority Regeneration Table12 (таблица 3-1 в [3]). Полученные таким образом значения могут отображаться с использованием описанной выше выходной таблицы с исходящие значения user_priority. Те же самые отображения могут использоваться для управления доступом применительно к запросам, использующим user_priority (см., например, [14]). Возможны и более изощренные решения, когда устройство контролирует потоки трафика и устанавливает значения user_priority с соответствии со своей политикой и спецификациями трафика.

8.6. Различные стили резервирования

На рисунке 7 SW показывает мост/коммутатор в домене канального уровня. S1, S2, S3, R1 и R2 — оконечные станции, являющиеся членами группы, которая связана с одним потоком RSVP. S1, S2 и S3 — станции восходящего направления, а R1 — R2 — станции нисходящего, которые получают трафик от всех отправителей. RSVP позволяет получателям R1 и R2 задать резервирование, которое может быть применено: (a) к одному заданному отправителю (фиксированный фильтр), (b) любому из явно заданного множества (два или более) отправителей (разделяемый явный фильтр) и (c) любому отправителю в группе (разделяемый шаблонный фильтр). Поддержка фиксированных фильтров проста — для трафика каждого отправителя организуется свое резервирование. Однако поддержка двух других стилей фильтрации подразумевает правила, т. е. для слитых потоков трафика от разных отправителей должны применяться правила, которые соответствуют параметрам трафика, заданным в Rspec фильтра. Дополнительные сложности возникают в тех случаях, когда запросы на обслуживание от R1 и R2 различаются. Следовательно, при отсутствии поддержки правил в мостах/коммутаторах на канальном уровне возможно только резервирование с фиксированными фильтрами.

+-----+       +-----+       +-----+
| S1  |       | S2  |       | S3  |
+-----+       +-----+       +-----+
   |             |             |
   |             v             |
   |          +-----+          |
   +--------->| SW  |<---------+
              +-----+
               |   |
          +----+   +----+
          |             |
          v             V
       +-----+       +-----+
       | R1  |       | R2  |
       +-----+       +-----+

Рисунок 7. Стили фильтрации

8.7. Неоднородность получателей

На уровне 3 модель IntServ поддерживает разнородных получателей для групповых потоков, где разные ветви дерева могут использовать различные типы резервирования для данного группового получателя. В этой модели также поддерживается сосуществование ветвей с резервированием потоков и ветвей с услугами best effort. Если мы будем трактовать подсеть уровня 2, как один элемент сети в соответствии с определением [8], все ветви распределительного дерева, лежащие в подсети, могут рассматриваться, как требующие одинаковой трактовки QoS и трактоваться как неделимый элемент (атом) в плане управления доступом и т. п. С учетом такого допущения модель и протоколы, определенные в IntServ и RSVP, уже обеспечивают достаточную поддержку разнородности групп. Отметим, однако, что запросы управления доступом могут отвергаться, поскольку перегрузка одного из каналов в подсети ведет к отказу при резервировании для всей подсети.

В качестве примера рассмотрим рисунок 8, где SW представляет собой устройство уровня 2 (мост или коммутатор), участвующее в резервировании ресурсов, S является станцией-источником восходящего направления, а R1 и R2 — конечными получателями нисходящего направления. R1 хочет организовать резервирование для потока, а R2 устраивает сервис best effort. Станция S передает сообщения RSVP PATH, которые являются групповыми для R1 и R2. R1 передает сообщение RSVP RESV станции S с запросом резервирования ресурсов.

             +-----+
             |  S  |
             +-----+
                |
                v
+-----+      +-----+      +-----+
| R1  |<-----| SW  |----->| R2  |
+-----+      +-----+      +-----+

Рисунок 8. Пример разнородности получателей

При успешном резервировании на уровне 2 кадры, адресованные группе, будут отнесены к классу трафика для сервиса, запрошенного R1. На устройстве SW должны присутствовать некие механизмы, обеспечивающие пересылку трафика в соответствии с зарезервированным классом на интерфейсе в сторону R1, при этом для интерфейса в сторону R2, обеспечивающие класс best effort. Это может реализоваться путем изменения содержимого кадров или игнорирования уровней приоритета на интерфейсе R2.

Другим способом поддержки разнородных получателей может служить создание раздельных групп MAC-адресов для каждого класса обслуживания. По умолчанию получатель включается в группу best effort, для трафика которой предоставляется одноименный тип обслуживания. Если получатель зарезервировал ресурсы, он его адрес переносится в группу для соответствующего класса обслуживания. Средства динамической групповой фильтрации в коммутаторах и мостах, поддерживающих стандарт IEEE 802.1D, будут очень полезны для такой модели. Данный поток будет предаваться только в те сегменты, которые включаются в путь между отправителем и получателями данного потока. Очевидным недостатком такого подхода является необходимость передачи отправителем множества копий одного пакета для разных классов обслуживания, что может приводить к дублированию трафика на некоторых ветвях дерева распространения.

Описанная выше модель будет обеспечивать близкое к оптимальному использование ресурсов с учетом указанного ожидаемого размера и сложности подсетей уровня 2. Следовательно, желательно будет разрешать коммутаторам использовать разные QoS для различных исходящих ветвей дерева, которые разделяет данный коммутатор.

Стандарт IEEE 802.1D задает базовую модель для групповой пересылки, когда коммутатор принимает решение на базе адреса получателя. В этом случае создается список выходных портов, в которые пакет следует пересылать. В принятом по умолчанию режиме коммутатор будет использовать значение user_priority из принятых пакетов или значения, восстановленные с учетом входных портов в отсутствие заданных явно значений, для размещения пакетов в выходных очередях каждого порта. Все коммутаторы IEEE 802.1D, поддерживающие классы группового трафика, могут поддерживать такую операцию.

Если коммутатор выбирает очереди для выходных портов только на основе входящих значений user_priority, как описано в IEEE 802.1D, он должен для всех ветвей всех групповых сессий в данном классе user_priority использовать один механизм очередей. Поддержка неоднородных получателей в таком случае не возможна и могут возникать отказы для запросов управления доступом в масштабе групповой сессии в целом по причине перегрузки на одном из каналов. Отметим, что для уровня 2, в отличие от уровня 3 с RSVP/IntServ, вариант предоставления некоторым получателям сервиса QoS в то время, как другим предоставляется только best effort не возможен, поскольку базовые коммутаторы IEEE 802.1 не способны отображать значения user_priority на отдельные каналы. Это может вызывать проблемы перегрузок в случаях использования динамических групповых сессий. Если коммутатор поддерживает раздельные отображения user_priority для каждого выходного порта, тогда (в некоторых случаях) в резервировании могут применяться разные классы трафика на различных ветвях, разделяемых таким коммутатором для обеспечения разным получателям разных параметров QoS. Это будет возможно, если все потоки данного класса (на входе в коммутатор) будут выходить с таким же классом трафика. Например, трафик может пересылаться с использованием user_priority 4 на одной ветви, где получатели выполняют контроль доступа, и с user_priority 0 там, где такого контроля нет. Предполагается, что размещение в очереди по значениям user_priority обеспечивается минимальной функциональностью коммутаторов ЛВС в соответствии со стандартом IEEE 802.1D, а коммутаторы уровня 2 или даже 3 (т. е., маршрутизаторы) могут поддерживать более сложные варианты неоднородностей, обеспечивая более эффективное использование ресурсов. Поведение коммутаторов уровня 3 в таком контексте уже стандартизовано IETF.

9. Варианты сетевой технологии

Уровень обеспечения гарантий сервиса в сети в значительной степени зависит от поддержки ключевых функций идентификации и планирования потоков в дополнение к управлению доступом и политикой. В этом разделе обсуждаются некоторые возможности рассматриваемых технологий ЛВС и приводится классификация вариантов совершенствования с целью расширения возможностей поддержки этих функций. Для рассматриваемых здесь ситуаций базовой технологией13 ЛВС может быть разделяемая, коммутируемая полудуплексная и коммутируемая полнодуплексная сетевая среда. В разделяемой среде множество получателей используют один сегмент сетевой среды. Доступ к среде контролируется специальным протоколом (CSMA/CD в Ethernet, передача маркера в Token Ring и FDDI). Полудуплексная коммутируемая среда является частным случаем разделяемой с совместным использованием общей среды двумя устройствами. В полнодуплексной коммутируемой среде контроля доступа не требуется и канал передачи с полной полосой предоставляется обоим передатчикам, подключенным к разным концам соединения. Следовательно, в таких средах не применяются протоколы управления доступом к среде типа CSMA/CD или передачи маркеров и нет борьбы передатчиков за доступ к среде. Обычно этот вариант обеспечивает наилучший вариант поддержки QoS. Другим важным элементом при обсуждении сетевых технологий является возможность поддержки множества классов трафика. Этот вопрос был рассмотрен выше в параграфе 4.1. В зависимости от базовой технологии и возможности поддержки множества классов трафика возможны шесть вариантов:

    1. разделяемая среда без поддержки классов трафика;

    2. разделяемая среда с поддержкой классов трафика;

    3. коммутируемая полудуплексная среда без поддержки классов трафика;

    4. коммутируемая полудуплексная среда с поддержкой классов трафика;

    5. коммутируемая полнодуплексная среда без поддержки классов трафика;

    6. коммутируемая полнодуплексная среда с поддержкой классов трафик.

Возможно также одновременное использование нескольких технологий. Например, в одной подсети могут применяться коммутаторы, часть которых поддерживает классы трафика, а остальные не поддерживают. Если поток проходит через коммутаторы обоих типов, преобладать будет «наименьший общий знаменатель». Иными словами, будут использоваться свойства технологии с меньшими из возможностей, поддерживаемых коммутаторами на пути прохождения потока. В последующих параграфах эти варианты рассматриваются более подробно для разных типов сетей IEEE 802 с учетом их возможностей поддержки услуг IntServ.

9.1. Полнодуплексные коммутируемые сети

В полнодуплексных коммутируемых ЛВС протокол MAC не имеет значения в плане управления доступом, но должен приниматься во внимание при учете анонсируемых устройством параметров, поскольку время доступа определяется продолжительностью передачи самого длинного пакета. Приблизительные параметры разных сред приведены в представленных ниже таблицах. Задержки следует также учитывают ограниченность скорости света, вызывающую задержку приблизительно в 400 нсек для типовых линий UTP длиной 100 м и 7 мксек для многомодового оптического кабеля длиной 2 км.

Полнодуплексные коммутируемые технологии обеспечивают лучшие параметры QoS как для сервиса Controlled Load, так и для Guaranteed при поддержке коммутаторами подходящих стратегий управления очередями.

Таблица 4. Задержка при доступе к полнодуплексным коммутируемым средам

Тип

Скорость

Макс. длительность пакетов

Максимальная задержка доступа

Ethernet

10 Мбит/с

1,2 мсек

1,2 мсек

100 Мбит/с

120 мксек

120 мксек

1000 Мбит/с

12 мксек

12 мксек

Token Ring

4 Мбит/с

9 мсек

9 мсек

16 Мбит/с

9 мсек

9 мсек

FDDI

100 Мбит/с

360 мксек

8.4 мсек

Demand Priority

100 Мбит/с

120 мксек

120 мксек

9.2. Сети Ethernet с разделяемой средой

До этого момента мы не рассматривали сложностей, связанных с разделяемой средой CSMA/CD. Как только начинается использование любого алгоритма CSMA/CD возможности обеспечения любой формы гарантированного обслуживания существенно снижаются, если многочисленные отправители на канале не связаны жестко между собой. Есть целый ряд причин, в силу которых здесь не предлагается лучшего решения этой задачи.

Во-первых, мы не считаем эту проблему корректно разрешимой без внесения изменений в протокол MAC. Комитет IEEE 802.1 провел моделирование гарантий производительности для разделяемой среды CSMA/CD Ethernet без изменения протокола MAC и получил неутешительные результаты. Были внесены предложения по усовершенствованию протоколов уровня MAC (например, BLAM) у улучшению управления потоками данных в IEEE 802.3. Однако любое решение, включающее более эффективные программы MAC, работающие на основе традиционного IEEE 802.3 MAC или фирменных протоколов MAC, выходит за рамки деятельности группы ISSLL и данного документа. Во-вторых, мы не уверены в том, что эта проблема действительно представляет интерес. Хотя станции, подключенные к разделяемым средам, еще будут использоваться некоторое время, число станций, подключенных к коммутируемым средам, растет гораздо быстрее по сравнению с числом станций в разделяемых сегментах. Это ведет к тому, что все сетевые коммуникации, требующие резервирования ресурсов будут проходить по крайней мере через один коммутатор или маршрутизатор. Иными словами, проще обновить для поддержки QoS существующую инфраструктуру уровня 2 путем установки коммутаторов. И лишь после такого обновления следует заниматься более сложными решениями, включающими управление доступом. В-третьих, ядро кампусных сетей обычно строится на основе коммутаторов, а не повторителей. Возможно в будущем возникнут иные обстоятельства (например, появятся буферизуемые гигабитные повторители), однако характеристики таких устройств в любом случае будут отличаться от характеристик существующих повторителей CSMA/CD.

Таблица 5. Задержка доступа в разделяемой среде Ethernet

Тип

Скорость

Макс. длительность пакета

Макс. задержка доступа

Ethernet

10 Мбит/с

1,2 мсек

Не ограничена

100 Мбит/с

120 мксек

Не ограничена

1 Гбит/с

12 мксек

Не ограничена

9.3. Полудуплексные коммутируемые сети Ethernet

Многие из аргументов для субоптимальной поддержки сервиса Guaranteed в разделяемых средах Ethernet применимы и к полудуплексным коммутируемым средам Ethernet. Существенно то, что в данном случае разделяемая среда совместно используется по меньшей мере двумя отправителями, конкурирующими за передачу пакетов. Пока действия отправителей не скоординированы, существует вероятность того, что трафик best effort одного отправителя будет конфликтовать с зарезервированным трафиком другого. Координация действий отправителей требует внесения изменений в протокол MAC.

Не противореча сказанному выше, можно считать, что полудуплексные коммутируемые технологии дают шанс обеспечить сервис Controlled Load. С учетом наличия в точности двух потенциальных передатчиков и использования обоими приоритизации для своего трафика Controlled Load в потоках best effort, а также управления доступом на основе этой информации характеристики доступа к среде являются вполне предсказуемыми, хотя и не детерминированными. Это обеспечивает достаточно близкое приближение для сервиса Controlled Load.

Таблица 6. Задержка доступа в коммутируемой среде Ethernet

Тип

Скорость

Макс. длительность пакета

Макс. задержка доступа

Ethernet

10 Мбит/с

1,2 мсек

Не ограничена

100 Мбит/с

120 мксек

Не ограничена

1 Гбит/с

12 мксек

Не ограничена

9.4. Полудуплексные сети Token Ring с коммутируемой и разделяемой средой

В сетях Token Ring с разделяемой средой время доступа для высокоприоритетного трафика от любой станции ограничено и определяется значением (N+1)*THTmax, где N — число станций, передающих трафик с высоким приоритетом, а THTmax — максимальное время удержания маркера [14]. Это предполагает, сетевые адаптеры имеют приоритетные очереди и резервирование маркера осуществляется для высокоприоритетного трафика, находящегося в очереди адаптера. Легко видеть, что время доступа к среде можно уменьшить, снижая значения N или THTmax. Рекомендуемое значение THTmax составляет 10 мсек [6]. N может принимать значения от 2 до 256 для разделяемого кольца и равно 2 для коммутируемой полудуплексной среды. Аналогичный анализ применим для сетей FDDI.

Таблица 7. Задержка доступа в полудуплексной коммутируемой и разделяемой среде Token Ring и FDDI

Тип

Скорость

Макс. длительность пакета

Макс. задержка доступа

Token Ring

4/16 Мбит/с, разделяемая

9 мсек

2570 мсек

4/16 Мбит/с, коммутируемая

9 мсек

30 мсек

FDDI

100 Мбит/с

360 мксек

8 мсек

С учетом ограниченности времени доступа можно обеспечить верхний предел для сквозной задержки в соответствии с требованиями Guaranteed Service, предполагая, что для этого класса трафика используется высший приоритет , дозволенный пользовательскому трафику. Реальное число станций, передающих трафик, который отображается в тот же класс, который применяется для Guaranteed Service, может существенно меняться с течением времени, но с точки зрения контроля доступа это число нужно знать заранее. Следовательно, элементы контроля доступа должны использовать фиксированное значение N, которое может совпадать с общим числом станций в кольце или быть несколько меньше, если хочется снизить величину задержки. Если принятое значение N меньше числа станций в кольце, контроль доступа должен гарантировать, что число станций, передающих высокоприоритетный трафик, не будет превышать этого значения. Такое решение позволяет системе контроля доступа оценить максимальную задержку в предположении, что все N станций передают пакеты с высоким приоритетом. В реальности для большинства случаев задержка может оказаться существенно меньше.

В предположении использования для трафика Controlled Load меньшего уровня приоритета по сравнению с Guaranteed Service, для потоков Controlled Load верхняя граница задержки обеспечиваться не может. Однако для потоков Controlled Load будет обеспечиваться лучшее по сравнению с best effort обслуживание.

Отметим, что во многих существующих сетях Token Ring с разделяемой средой мосты пересылают кадры с использованием для Access Priority (см. параграф 4.3) значения 4, безотносительно к значению user_priority в управляющем поле кадра. Следовательно, такие мосты нужно переконфигурировать или изменить для того, чтобы стало возможным описанное выше ограничение времени доступа.

9.5. Сети Demand Priority с коммутируемой и разделяемой средой

В сетях IEEE 802.12 коммуникации между конечными узлами и концентратором, а также между концентраторами основываются на обмене сигналами управления каналом. Эти каналы служат для контроля доступа к среде передачи. Если концентратор, например, получает запрос с высоким приоритетом в то время, как другой концентратор обрабатывает запросы с обычным приоритетом, доступ к среде может быть перенят первым концентратором для того, чтобы сначала обслужить высокоприоритетный запрос. По завершении обработки всех запросов с высоким приоритетом обслуживание обычных запросов продолжается с той точки, где оно было прервано.

Время доступа к среде для пакетов с высоким приоритетом определяется временем, которое нужно для того, чтобы перенять обычное обслуживание. Этот интервал ограничен и зависит от физического уровня и технологии разделяемой среды. Физический уровень оказывает существенное влияние при работе в полудуплексном режиме (например, по кабелям UTP14, поскольку в процессе передачи пакета через канал обмен сигналами управления не возможен. Следовательно, для рассматриваемой здесь сетевой технологии в больших сетях сигнал может пройти через несколько соединений и концентраторов прежде, чем достигнет концентратора с функциями управления сетью. Это может задерживать перехват обслуживания и, следовательно, увеличивать верхнюю границу времени доступа.

Ниже приведены максимальные значения времени доступа для приоритетных пакетов в физической среде UTP с длинами кабелей между конечными узлами и концентраторами по 100 м и максимальной задержке распространения 570 нсек, как определено в [19]. Эти значения представляют наихудший вариант перекрытия сигналов в предположении передачи с обычным приоритетом пакетов максимального размера.

Таблица 8. Задержка доступа к полудуплексным средам Demand Priority UTP

Тип

Скорость

Максимальная длительн. пакетов

Максимальная задержка доступа

Demand Priority

100 Мбит/с

Пакеты 802.3, UTP

120 мксек

254 мксек

Пакеты 802.5, UTP

360 мксек

733 мксек

Разделяемые среды IEEE 802.12 можно классифицировать по «глубине» каскадирования концентраторов (N). Простейшим вариантом будет сеть на основе одного концентратора (N = 1). Для физической среды UTP стандарт разрешает максимальную глубину каскадирования N = 5. Большие сети с сотнями узлов можно построить, используя уровень каскадирования 2. Средства управления полосой пропускания должны получать информацию о глубине каскадирования через систему сетевого управления и могут использовать эти сведения в своих алгоритмах управления доступом.

В отличие от UTP, оптические системы работают в симплексном режиме до двум волокнам. Значения верхней границы времени доступа для высокоприоритетного трафика приведены ниже для многомодовых кабелей длиной 2 км при задержке на распространение 10 мксек.

Для разделяемой среды с кабелями длиной до 2 км между всеми конечными узлами и концентраторами стандарт IEEE 802.12 разрешает максимальный уровень каскадирования 2. Увеличение глубины каскадирования требует сокращения максимальной длины кабелей [15].

Ограниченная задержка доступа и детерминированный доступ к сети позволяют поддерживать услуги Guaranteed и Controlled Load даже в разделяемых средах. Однако поддержка стандартом 802.12 лишь двух уровней приоритета ограничивает числу разных услуг, которые могут быть одновременно реализованы в сети.

Таблица 9. Задержка доступа к разделяемой среде Demand Priority UTP

Тип

Скорость

Пакеты

Максимальная длительн. пакетов

Максимальная задержка доступа

Каскад

Demand Priority

100 Мбит/с

802.3

120 мксек

262 мксек

1

554 мксек

2

878 мксек

3

1,24 мсек

4

1,64 мсек

5

802.5

360 мксек

722 мксек

1

1,41 мсек

2

2,32 мсек

3

3,16 мсек

4

4,03 мсек

5

Таблица 10. Задержка доступа к полудуплексной коммутируемой оптической среде Demand Priority

Тип

Скорость

Пакеты

Максимальная длительн. пакетов

Максимальная задержка доступа

Demand Priority

100 Мбит/с

802.3

120 мксек

139 мксек

802.5

360 мксек

379 мксек

Таблица 11. Задержка доступа к разделяемой оптической среде Demand Priority

Тип

Скорость

Пакеты

Максимальная длительн. пакетов

Максимальная задержка доступа

Каскад

Demand Priority

100 Мбит/с

802.3

120 мксек

160 мксек

1

202 мксек

2

802.5

360 мксек

400 мксек

1

682 мксек

2

10. Обоснование

Очевидной проблемой является сложность предложенной модели. Почему мы считаем, что на уровне 2 мы можем достичь лучших результатов, чем при выполнении тех же действий на уровне 3 с помощью протокола RSVP?

Основная причина заключается в наличии множества случаев, когда на уровне 2 обеспечивается простое решение значительной части реальных проблем QoS. Решение большинства проблем обеспечивается существенно более дешевыми способами. Для полного решения всех проблем может потребоваться поддержка RSVP/IntServ на уровне очередей для потоков в коммутаторах и маршрутизаторах высокого уровня, однако устройства на основе описанной здесь архитектуры позволят существенно упростить сети.

11. Заключение

Этот документ определяет модель предоставления интегрированных услуг (Integrated Services) в ЛВС с разделяемой и коммутируемой средой. Возможность обеспечения гарантий QoS требует той или иной формы контроля доступа и управления ресурсами. Идентифицированы и рассмотрены требования и цели управления ресурсами на уровне подсетей. Отмечена схема управления ресурсами в целом, названная менеджером пропускной способности (Bandwidth Manager). Рассмотрены вопросы архитектуры этой схемы и примеры ее возможных реализаций. Рассмотрены также некоторые вопросы отображения служб вышележащих уровней на канальный уровень. Сопутствующие документы рабочей группы ISSLL решают вопросы отображения служб [13] и спецификации протокола для Bandwidth Manager [14] на базе рассмотренных в этом документе требований и целей.

Литература

[1] IEEE Standards for Local and Metropolitan Area Networks: Overview and Architecture, ANSI/IEEE Std 802, 1990.

[2] ISO/IEC 10038 Information technology — Telecommunications and information exchange between systems — Local area networks -Media Access Control (MAC) Bridges, (also ANSI/IEEE Std 802.1D-1993), 1993.

[3] ISO/IEC 15802-3 Information technology — Telecommunications and information exchange between systems — Local and metropolitan area networks — Common specifications — Part 3: Media Access Control (MAC) bridges (also ANSI/IEEE Std 802.1D-1998), 1998.

[4] IEEE Standards for Local and Metropolitan Area Networks: Virtual Bridged Local Area Networks, IEEE Std 802.1Q-1998, 1998.

[5] Braden, B., Zhang, L., Berson, S., Herzog, S. and S. Jamin, «Resource Reservation Protocol (RSVP) — Version 1 Functional Specification», RFC 2205, September 1997.

[6] Wroclawski, J., «Specification of the Controlled Load Network Element Service», RFC 2211, September 1997.

[7] Shenker, S., Partridge, C. and R. Guerin, «Specification of Guaranteed Quality of Service», RFC 2212, September 1997.

[8] Braden, R., Clark, D. and S. Shenker, «Integrated Services in the Internet Architecture: An Overview», RFC 1633, June 1994.

[9] Wroclawski, J., «The Use of RSVP with IETF Integrated Services», RFC 2210, September 1997.

[10] Shenker, S. and J. Wroclawski, «Network Element Service Specification Template», RFC 2216, September 1997.

[11] Shenker, S. and J. Wroclawski, «General Characterization Parameters for Integrated Service Network Elements», RFC 2215, September 1997.

[12] Delgrossi, L. and L. Berger (Editors), «Internet Stream Protocol Version 2 (ST2) Protocol Specification — Version ST2+», RFC 1819, August 1995.

[13] Seaman, M., Smith, A. and E. Crawley, «Integrated Service Mappings on IEEE 802 Networks», RFC 2815, May 2000.

[14] Yavatkar, R., Hoffman, D., Bernet, Y. and F. Baker, «SBM Subnet Bandwidth Manager): Protocol for RSVP-based Admission Control Over IEEE 802-style Networks», RFC 2814, May 2000.

[15] ISO/IEC 8802-3 Information technology — Telecommunications and information exchange between systems — Local and metropolitan area networks — Common specifications — Part 3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications, (also ANSI/IEEE Std 802.3-1996), 1996.

[15] ISO/IEC 8802-5 Information technology — Telecommunications and information exchange between systems — Local and metropolitan area networks — Common specifications — Part 5: Token Ring Access Method and Physical Layer Specifications, (also ANSI/IEEE Std 802.5-1995), 1995.

[17] Postel, J. and J. Reynolds, «A Standard for the Transmission of IP Datagrams over IEEE 802 Networks», STD 43, RFC 1042, February 1988.

[18] C. Bisdikian, B. V. Patel, F. Schaffa, and M Willebeek-LeMair, The Use of Priorities on Token Ring Networks for Multimedia Traffic, IEEE Network, Nov/Dec 1995.

[19] IEEE Standards for Local and Metropolitan Area Networks: Demand Priority Access Method, Physical Layer and Repeater Specification for 100 Mb/s Operation, IEEE Std 802.12-1995.

[20] Fiber Distributed Data Interface MAC, ANSI Std. X3.139-1987.

[21] ISO/IEC 15802-3 Information technology — Telecommunications and information exchange between systems — Local and metropolitan area networks — Specific requirements — Supplement to Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications — Frame Extensions for Virtual Bridged Local Area Network (VLAN) Tagging on 802.3 Networks, IEEE Std 802.3ac-1998 (Supplement to IEEE 802.3 1998 Edition), 1998.

Вопросы безопасности

Реализация описанной здесь модели не открывает новых возможностей для атак на сетевую инфраструктуры. Однако читателям рекомендуется обратиться к параграфу 2.8 спецификации RSVP [5], где рассмотрено влияние использования сигнальных протоколов управления доступом на безопасность сети.

Благодарности

Значительная часть работы, представленной в этом документе, явилась результатом плодотворных дискуссий в рамках рабочей группы ISSLL15. Авторы хотели бы отметить вклад многих участников этих обсуждений как на встречах группы, так и в почтовой переписке. Особая благодарность Eric Crawley, Don Hoffman и Raj Yavatkar за их вклад в подготовку предварительных версий (Internet draft) и Peter Kim за текст о сетях Demand Priority.

Адреса авторов

Anoop Ghanwani
Nortel Networks
600 Technology Park Dr
Billerica, MA 01821, USA
Phone: +1-978-288-4514
EMail: aghanwan@nortelnetworks.com

Wayne Pace
IBM Corporation
P. O. Box 12195
Research Triangle Park, NC 27709, USA
Phone: +1-919-254-4930
EMail: pacew@us.ibm.com

Vijay Srinivasan
CoSine Communications
1200 Bridge Parkway
Redwood City, CA 94065, USA
Phone: +1-650-628-4892
EMail: vijay@cosinecom.com

Andrew Smith
Extreme Networks
3585 Monroe St
Santa Clara, CA 95051, USA
Phone: +1-408-579-2821
EMail: andrew@extremenetworks.com

Mick Seaman
Telseon
480 S. California Ave
Palo Alto, CA 94306, USA
Email: mick@telseon.com

Перевод на русский язык

Николай Малых

nmalykh@gmail.com

Полное заявление авторских прав

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских правах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены «как есть» и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.

Подтверждение

Финансирование функций RFC Editor обеспечено Internet Society.

1Quality of Service — класс обслуживания.

2Resource Reservation Protocol — протокол резервирования ресурсов.

3Integrated Services over Specific Link Layers — интегрированные службы в конкретных канальных уровнях.

4Оригинальный стандарт IEEE 802.1D [2] содержит спецификации работы мостов уровня MAC. Эти спецификации были расширены с учетом поддержки классов трафика и динамической multicast-фильтрации [3]. В данном документе IEEE 802.1D означает ссылку на оригинальный стандарт [3], если иное не оговорено явно.

5Отметим, что размер кадров Ethernet. Использующих спецификацию IEEE 802.1Q, превышает максимальный размер кадров 802.3 на 4 байта. Изменение размера MTU для кадров IEEE 802.1Q учтено в новом варианте стандарта IEEE 802.3ac [21].

6Предложенное в RFC 1042 [13] значение MTU составляет 4464 байта, но здесь есть вопросы, связанные с определением максимального значения MTU, поддерживаемого между любыми двумя точками внутри подсети Token Ring и между подсетями. Приведенные здесь значения MTU учитывают рекомендации IEEE 802.5 Annex I.

7 Этот вопрос подробно рассматривается в работе [5].

8Subnet Bandwidth Manager — менеджер полосы для подсети.

9Управляемая нагрузка.

10Гарантированное обслуживание.

11В оригинале — somewhat less than best effort — несколько меньше, нежели best effort. Прим. перев.

12Таблица регенерации пользовательских приоритетов.

13В оригинале вместо термина «технология» не совсем корректно используется термин «топология». Прим. перев.

14Unshielded twisted pair — скрученные пары без экрана.

15Integrated Services over Specific Link Layers — интегрированные услуги для конкретных канальных уровней.

Рубрика: RFC | Комментарии к записи RFC 2816 A Framework for Integrated Services Over Shared and Switched IEEE 802 LAN Technologies отключены

RFC 2818 HTTP Over TLS

Отменен RFC 9110.

Рубрика: RFC | Оставить комментарий

RFC 2796 BGP Route Reflection — An Alternative to Full Mesh IBGP

Network Working Group                                       T. Bates
Request for Comments: 2796                             Cisco Systems
Updates: 1966                                             R. Chandra
Category: Standards Track                                    E. Chen
                                                    Redback Networks
                                                          April 2000

BGP Route Reflection – альтернатива полносвязности IBGP

BGP Route Reflection — An Alternative to Full Mesh IBGP

PDF

Статус документа

В этом документе содержится спецификация протокола, предложенного сообществу Internet. Документ служит приглашением к дискуссии в целях развития и совершенствования протокола. Текущее состояние стандартизации протокола вы можете узнать из документа «Internet Official Protocol Standards» (STD 1). Документ может распространяться без ограничений.

Авторские права

Copyright (C) The Internet Society (2000). All Rights Reserved.

Аннотация

BGP1 [1] представляет собой протокол междоменной маршрутизации, разработанный для сетей TCP/IP. В настоящее время в сети Internet протокол BGP настроен так, что все узлы BGP в одной AS должны образовывать полносвязный набор соединений (fully meshed) и любая внешняя маршрутная информация должна передаваться всем остальным маршрутизаторам внутри данной AS. Это порождает серьезные проблемы масштабирования, которые подробно описаны вместе с альтернативными предложениями в документах [2,3].

В данном документе описан метод «отражения маршрутов» (Route Reflection) и его использование, ослабляющее требование полносвязности для IBGP.

1. Введение

В настоящее время в сети Internet протокол BGP настроен так, что все узлы BGP в одной AS должны образовывать полносвязный набор соединений и любая внешняя маршрутная информация должна передаваться всем остальным маршрутизаторам внутри данной AS. Для n узлов BGP в данной AS требуется организовать n*(n-1)/2 уникальных сессий IBGP. Очевидно, что требование полносвязности становится невыполнимым в системах, где большое число узлов IBGP обменивается значительными объемами маршрутной информации (такая ситуация наблюдается в большинстве современных сетей).

Эта проблема масштабирования и многочисленные предложения по снижению ее остроты подробно описаны в документах [2,3]. Данный документ представляет еще один вариант избавления от полносвязности, известный как Route Reflection. Этот метод позволяет узлу BGP (называемому Route Reflector) анонсировать полученные от IBGP маршруты некоторым партнерам IBGP. Он изменяет общепринятую концепцию работы и добавляет два новых необязательных непереходных2 атрибута BGP для предотвращения петель при обновлении маршрутов.

Данный документ является пересмотром RFC1966 [4] и включает редакционные правки, пояснения и корректировки, основанные на опыте использования отражения маршрутов. Список изменений приведен в Приложении.

2. Базовые требования

Метод Route Reflection удовлетворяет перечисленным ниже критериям.

  • Простота

    Любое дополнение должно быть понятным и простым в настройке.

  • Простота перехода

    Должна обеспечиваться возможность перехода от полносвязной конфигурации без необходимости изменения топологии или AS. Метод, предложенный в [3], вносит слишком высокие издержки в части управления.

  • Совместимость

  • Должна обеспечиваться возможность сохранения не поддерживающих данный метод узлов IBGP как части исходной AS или домена без потери какой-либо маршрутной информации BGP.

Эти критерии основаны на опыте использования метода в очень больших сетях со сложной топологией и множеством внешних соединений.

3. Отражение маршрутов

Основная идея метода отражения (Route Reflection) очень проста. Рассмотрим пример, показанный на рисунке 1.

                   +-------+        +-------+
                   |       |  IBGP  |       |
                   | RTR-A |--------| RTR-B |
                   |       |        |       |
                   +-------+        +-------+
                         \            /
                     IBGP \   ASX    / IBGP
                           \        /
                            +-------+
                            |       |
                            | RTR-C |
                            |       |
                            +-------+

Рисунок 1: Полносвязная система IBGP

В автономной системе ASX имеется три узла IBGP (маршрутизаторы RTR-A, RTR-B, RTR-C). В рамках существующей модели BGP если RTR-A получает внешний маршрут и выбирает этот маршрут в качестве лучшего, он должен анонсировать этот внешний маршрут обоим узлам RTR-B и RTR-C. Узлы RTR-B и RTR-C (как узлы IBGP) не будут заново анонсировать этот полученный от IBGP маршрут другим партнерам IBGP.

Если это правило ослабить и позволить узлу RTR-C анонсировать полученные от IBGP маршруты другим партнерам IBGP, тогда он будет реанонсировать (или отражать) маршруты IBGP, полученные от RTR-A, узлу RTR-B и наоборот. Это позволит отказаться от организации сессии IBGP между узлами RTR-A и RTR-B, как показано на рисунке 2.

                  +-------+        +-------+
                  |       |        |       |
                  | RTR-A |        | RTR-B |
                  |       |        |       |
                  +-------+        +-------+
                        \            /
                    IBGP \   ASX    / IBGP
                          \        /
                           +-------+
                           |       |
                           | RTR-C |
                           |       |
                           +-------+

Рисунок 2: IBGP с отражением маршрутов

Схема метода Route Reflection основана именно на этом принципе.

4. Терминология и концепции

Мы используем термин «отражение маршрутов» для описания действий узла BGP, анонсирующего полученные от IBGP маршруты другим партнерам IBGP. Если об узле BGP говорят как об «отражателе маршрутов» (Route Reflector или RR), это означает, что данный узел «отражает» полученные маршруты своим партнерам.

  1. Партнеры-клиенты.

  2. Партнеры, не являющиеся клиентами.

Узел RR отражает маршруты между этими группами и может отражать маршруты между клиентами. Узел RR вместе со своими клиентами образует кластер (Cluster).

Партнеры, не являющиеся клиентами (Non-Client peer), должны сохранять полносвязность, но для клиентов это требование снимается. На рисунке 3 показан пример сети с базовыми компонентами RR, иллюстрирующий терминологию.

                 / - - - - - - - - - - - - -  -
                 |           Кластер           |
                   +-------+        +-------+
                 | |Клиент |        |Клиент |  |
                   | RTR-A |        | RTR-B |
                 | |       |        |       |  |
                   +-------+        +-------+
                 |      \            /         |
                    IBGP \          / IBGP
                 |        \        /           |
                           +-------+
                 |         |       |           |
                           | RTR-C |
                 |         |  RR   |           |
                           +-------+
                 |           /   \             |
                  - - - - - /- - -\- - - - - - /
                     IBGP  /       \ IBGP
                  +-------+         +-------+
                  | RTR-D |  IBGP   | RTR-E |
                  |  Не   |---------|  Не   |
                  |Клиент |         |Клиент |
                  +-------+         +-------+

Рисунок 3: Компоненты RR

Внутренние партнеры узла RR делятся на две группы:

5. Работа метода

Когда RR получает маршрут от партнера IBGP, он выбирает лучший путь на основе своих критериев. После выбора лучшего пути узел должен выполнить перечисленные ниже операции в зависимости от типа партнера, передавшего информацию о лучшем пути:

  1. Маршрут получен от партнера, не являющегося клиентом.

    Отразить маршрут всем клиентам.

  2. Маршрут получен от клиента.

    Отразить маршрут всем партнерам, не являющимся клиентами, а также партнерам-клиентам (поскольку клиенты могут не быть полносвязными).

Автономная система может включать множество RR. Узел RR трактует остальные рефлекторы RR, как обычные внутренние узлы BGP. Рефлектор RR может быть настроен на присутствие других RR как в числе клиентов, так и среди партнеров, не являющихся клиентами.

В простой конфигурации опорная сеть может быть поделена на множество кластеров. Каждый рефлектор RR настраивается на то, что другие RR не относятся к группе клиентов (таким образом, все RR будут образовывать полносвязную систему). Клиенты будут настраиваться на поддержку сессий IBGP только с RR в своем кластере. Благодаря отражению маршрутов все узлы IBGP будут получать отраженную маршрутную информацию.

В автономной системе могут присутствовать узлы BGP, не понимающие концепцию отражения маршрутов (будем называть их обычными узлами BGP). Схема отражения маршрутов допускает сосуществование с обычными узлами BGP. Такие узлы могут относиться к группе клиентов или не являться клиентами RR. Это обеспечивает возможность простого и постепенного перехода от существующей модели работы IBGP к модели с отражением маршрутов. Можно начать с создания кластера путем настройки одного маршрутизатора в качестве означенного RR и настройки остальных RR и их клиентов как нормальных партнеров IBGP. Постепенно могут создаваться дополнительные кластеры.

6. Избыточные RR

Обычно кластер клиентов будет включать один рефлектор RR. В этом случае кластер будет идентифицироваться значением ROUTER_ID рефлектора RR. Однако такой вариант может не обеспечивать достаточной надежности и для резервирования в одном кластере может создаваться множество RR. Все рефлекторы RR одного кластера могут быть настроены на использование общего 4-байтового идентификатора CLUSTER_ID, который позволяет любому рефлектору RR отбрасывать маршруты, получаемые от других RR того же кластера.

7. Предотвращение петель

При использовании отражения маршрутов возможно возникновение петель при реанонсировании в результате некорректной конфигурации. Метод Route Reflection определяет два новых атрибута для детектирования и предотвращения таких петель.

ORIGINATOR_ID

ORIGINATOR_ID – необязательный, непереходный атрибут BGP с кодом типа 9. Этот атрибут имеет размер 4 байта и создается рефлектором RR в отраженном маршруте. Атрибут будет включать значение ROUTER_ID источника маршрута (originator) в локальной AS. Узлу BGP не следует создавать атрибут ORIGINATOR_ID, если последний уже присутствует. Маршрутизатору, распознающему атрибут ORIGINATOR_ID, следует игнорировать маршрут, содержащие значение его ROUTER_ID в качестве ORIGINATOR_ID.

CLUSTER_LIST

CLUSTER_LIST – необязательный, непереходный атрибут BGP с кодом типа 10. Этот атрибут представляет собой последовательность значений CLUSTER_ID, представляющих путь отражения, по которому передавался маршрут. Формат атрибута показан ниже.

            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Attr. Flags  |Attr. Type Code|   Length      | value ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Поле Length3 указывает число октетов.

Когда рефлектор RR отражает маршрут, он должен добавить локальное значение CLUSTER_ID в начало (prepend) CLUSTER_LIST. Если список CLUSTER_LIST пуст, узел должен создать новый список. Используя этот атрибут, RR может определять возникновение петель при передаче маршрутной информации в результате конфигурационных ошибок. Если локальное значение CLUSTER_ID присутствует в списке кластеров, полученный анонс следует игнорировать.

8. Вопросы реализации метода

Следует принять меры по предотвращению изменения описанных выше атрибутов пути (средствами конфигурации) в процессе обмена маршрутной информацией между RR и клиентами или партнерами, не являющимися клиентами. Такое изменение атрибутов может приводить к возникновению маршрутных петель.

Кроме того, когда RR отражает маршрут, ему не следует изменять в маршруте значения атрибутов NEXT_HOP, AS_PATH, LOCAL_PREF и MED, поскольку это может приводить к возникновению маршрутных петель.

9. Вопросы настройки и развертывания

Протокол BGP не обеспечивает клиентам способа динамической идентификации себя в качестве клиентов RR. Простейшим способом такой идентификации является настройка конфигурации вручную.

Одним из ключевых моментов метода отражения маршрутов в контексте проблемы масштабирования является то, что RR обрабатывает полученную информацию и отражает только лучший путь.

На выбор маршрута BGP могут оказывать влияние обе метрики MED и IGP. Поскольку атрибуты MED не всегда совместимы, а метрика IGP может отличаться для каждого маршрутизатора, в некоторых вариантах топологии отражения метод отражения может давать при выборе маршрута результат, отличающийся от случая полносвязной системы IBGP. Для получения совпадающих результатов в случаях использования отражения и полносвязной системы IBGP следует сделать так, чтобы рефлекторы маршрутов никогда не выбирали лучший маршрут BGP на основе метрики IGP, которая существенно отличается от IGP-метрики их клиентов, или на основе несовместимых атрибутов MED. Первый вариант может быть достигнут путем настройки конфигурации таким образом, чтобы внутрикластерная метрика IGP всегда давала преимущество перед межкластерной метрикой IGP, и поддержки полной связности (full mesh) внутри кластера. Для реализации второго варианта можно использовать любой из перечисленных ниже способов:

  • устанавливать на граничном маршрутизаторе уровень локального предпочтения маршрутов в соответствии с MED;

  • обеспечить, чтобы длины AS_PATH для разных AS различались при использовании длины пути в качестве критерия выбора;

  • настроить основанную на группах (community) политику, использование которой позволит рефлектору выбрать лучший путь.

Можно утверждать, что второй вариант вносит чрезмерные ограничения и в некоторых случаях будет непрактичным. Можно также утверждать, что при отсутствии маршрутных петель не существует жесткой необходимости обеспечивать совпадение результатов выбора маршрута с использованием отражения и полносвязной системы IBGP.

Для предотвращения маршрутных петель и поддержки согласованной картины маршрутизации важно аккуратно рассмотреть топологию сети при выборе топологии отражения маршрутов. В общем случае топологию отражения следует делать конгруэнтной топологии сети, когда существует множество путей для данного префикса. Общепринятым является использование отражения на базе POP, при котором каждая точка POP поддерживает свои рефлекторы маршрутов, обслуживающие клиентов POP, и все рефлекторы образуют между собой полносвязную систему. В дополнение к этому клиенты рефлекторов в каждой POP зачастую также образуют полносвязную систему в целях оптимальной маршрутизации внутри POP, а внутренняя (для POP) метрика IGP является предпочтительной по сравнению с метрикой inter-POP IGP.

10. Вопросы безопасности

Это расширение протокола BGP не изменяет состояния безопасности, присущего IBGP [5].

11. Благодарности

Авторы благодарят Dennis Ferguson, John Scudder, Paul Traina и Tony Li за дискуссии, которые привели к созданию этого документа. Идея метода основана на давней дискуссии между Tony Li и Dimitri Haskin.

Кроме того, авторы хотят поблагодарить Yakov Rekhter за просмотр документа и полезные предложения, а также отметить полезные комментарии Tony Li, Rohit Dube и John Scudder к главе 9 и комментарии Bruce Cole.

13. Литература

[1] Rekhter, Y. and T. Li, «A Border Gateway Protocol 4 (BGP-4)», RFC 17714, March 1995.

[2] Haskin, D., «A BGP/IDRP Route Server alternative to a full mesh routing», RFC 1863, October 1995.

[3] Traina, P., «Autonomous System Confederations for BGP»5, RFC 1965, June 1996.

[4] Bates, T. and R. Chandra, «BGP Route Reflection An alternative to full mesh IBGP», RFC 1966, June 1996.

[5] Heffernan, A., «Protection of BGP Sessions via the TCP MD5 Signature Option», RFC 2385, August 1998.

14. Адреса авторов

Tony Bates

Cisco Systems, Inc.

170 West Tasman Drive

San Jose, CA 95134

EMail: tbates@cisco.com
Ravi Chandra

Redback Networks Inc.

350 Holger Way.

San Jose, CA 95134

EMail: rchandra@redback.com
Enke Chen

Redback Networks Inc.

350 Holger Way.

San Jose, CA 95134

EMail: enke@redback.com


Перевод на русский язык

Николай Малых

nmalykh@protokols.ru

Приложение. Сравнение с RFC 1966

Разъяснены некоторые термины, связанные с отражением маршрутов и исключены упоминания маршрутов и узлов EBGP.

Разъяснена и сделана более согласованной обработка получателем маршрутных петель (в результате отражения).

Способ добавления атрибута CLUSTER_ID в список CLUSTER_LIST был заменен с «append» на «prepend» в соответствии с реализованным кодом.

В главу «Вопросы настройки и развертывания» добавлено рассмотрение некоторых вопросов развертывания метода.

Полное заявление авторских прав

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских паравах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены “как есть” и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.


Подтверждение

Финансирование функций RFC Editor обеспечивается Internet Society.

1Border Gateway Protocol – протокол граничного шлюза.

2В оригинале ошибочно сказано про два переходных атрибута, что не соответствует определениями главы 7. Прим. перев.

3Поле Length ошибочно указано на рисунке, как однооктетное. Размер этого поля может составлять 1 или 2 октета в зависимости от значения флага Extended Length (см. параграф 4.3 RFC 4271). Прим. перев.

4Этот документ утратил силу и заменен RFC 4271. Перевод имеется на сайте www.protokols.ru. Прим. перев.

5В оригинале этот документ ошибочно назван «Limited Autonomous System Confederations for BGP». Прим. перев.

Рубрика: RFC | Оставить комментарий

RFC 2784 Generic Routing Encapsulation (GRE)

Network Working Group                                   D. Farinacci
Request for Comments: 2784                                     T. Li
Category: Standards Track                           Procket Networks
                                                            S. Hanks
                                                Enron Communications
                                                            D. Meyer
                                                       Cisco Systems
                                                           P. Traina
                                                    Juniper Networks
                                                          March 2000

 

Базовая инкапсуляция маршрутных данных (GRE)

Generic Routing Encapsulation (GRE)

PDF

Статус документа

В этом документе содержится спецификация проекта стандартного протокола, предложенного сообществу Internet. Документ служит приглашением к дискуссии в целях развития и совершенствования протокола. Текущее состояние стандартизации протокола вы можете узнать из документа Internet Official Protocol Standards (STD 1). Документ может распространяться без ограничений.

Авторские права

Copyright (C) The Internet Society (2000). All Rights Reserved.

Аннотация

В этом документе дана спецификация протокола для инкапсуляции произвольного протокола сетевого уровня в любой другой протокол сетевого уровня.

1. Введение

В настоящее время существует множество протоколов [RFC 1234, RFC 1226] инкапсуляции одного протокола в другой. Для инкапсуляции IP в IP, требуемой политикой, предложены специальные протоколы [RFC 1241, RFC 1479]. В этом документе описан протокол, который очень похож на упомянутые выше протоколы, но является более обобщенным. Для повышения уровня общности многие нюансы протоколов игнорируются. В результате предлагаемый протокол меньше подходит для ситуаций, когда требуется конкретная инкапсуляция протокола X в протокол Y (X over Y). Предлагаемый протокол является попыткой создания простого механизма общего назначения, который переведет проблему инкапсуляции из текущего состояния O(n2) в более управляемое состояние. Документ не решает вопрос определения необходимости инкапсуляции. Документ подтверждает наличие, но не решает проблемы взаимной инкапсуляции [RFC 1326].

В общем случае система имеет пакет, который требуется инкапсулировать и доставить адресату. Будем называть этот пакет вложенным (payload packet). Вложенный пакет инкапсулируется в пакет GRE. Полученный пакет GRE может инкапсулироваться в тот или иной протокол и пересылается. Этот внешний протокол будем называть протоколом доставки. Алгоритмы обработки пакета обсуждаются ниже.

Кроме того, данная спецификация описывает пересечение реализаций GRE, предлагаемых разными производителями.

Ключевые слова необходимо (MUST), недопустимо (MUST NOT), требуется (REQUIRED), нужно (SHALL), не нужно (SHALL NOT), следует (SHOULD), не следует (SHOULD NOT), рекомендуется (RECOMMENDED), возможно (MAY), необязательно (OPTIONAL) в данном документе интерпретируются в соответствии с RFC 2119 [RFC2119].

2. Структура инкапсулированных пакетов

Структура инкапсулированного с использованием GRE пакета показана на рисунке.

---------------------------------
|                               |
|      Заголовок доставки       |
|                               |
---------------------------------
|                               |
|        Заголовок GRE          |
|                               |
---------------------------------
|                               |
|        Вложенный пакет        |
|                               |
---------------------------------


В этой спецификации рассматривается, прежде всего, структура заголовка GRE, а также обсуждается ряд вопросов, связанных с передачей инкапсулированных пакетов IPv4.

2.1. Заголовок GRE

Заголовок пакета GRE показан на рисунке.

 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|       Reserved0       | Ver |         Protocol Type         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Checksum (необязательно)    |    Reserved1 (необязательно)  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


2.2. Checksum Present (бит 0)

Если флаг Checksum Present (контрольная сумма присутствует) установлен, поля Checksum и Reserved1 присутствуют в заголовке и поле Checksum содержит корректную информацию. Отметим, что совместимые реализации должны принимать и обрабатывать это поле.

2.3. Reserved0 (биты 1-12)

Получатель должен отбрасывать пакеты, в которых биты 1-5 отличны от нуля, если этот получатель не реализует RFC 1701. Биты 6-12 зарезервированы — они должны устанавливаться в 0 при передаче и игнорироваться на приеме.

2.3.1. Version Number (биты 13-15)

Поле номера версии должно иметь нулевое значение.

2.4. Protocol Type (2 октета)

Поле Protocol Type указывает тип протокола для вложенного пакета. Типы протоколов определены в [RFC1700], как ETHER TYPES и в документе [ETYPES]. Реализации, получившей пакет со значением поля Protocol Type, не указанным в [RFC1700] или [ETYPES], следует отбрасывать такой пакет.

2.5. Checksum (2 октета)

Поле Checksum содержит контрольную сумму IP (дополнение до единицы) для всех 16-битовых слов заголовка GRE и вложенного пакета. При расчете контрольной суммы значение данного поля принимается нулевым. Это поле присутствует только при установленном флаге Checksum Present.

2.6. Reserved1 (2 октета)

Поле Reserved1 зарезервировано и при его наличии должно содержать нулевое значение. Поле Reserved1 присутствует только при наличии поля контрольной суммы (т. е., при установленном флаге Checksum Present).

3. IPv4 в качестве вложенных пакетов

Когда протокол IPv4 передается во вложенных пакетах GRE, поле Protocol должно иметь значение 0x800.

3.1. Пересылка декапсулированных пакетов IPv4

Когда конечная точка туннеля декапсулирует пакет GRE, в который вложен пакет IPv4, адрес получателя из заголовка пакета IPv4 должен использоваться для дальнейшей пересылки пакета, а значение TTL в заголовке вложенного пакета должно быть декрементировано. Следует с осторожностью пересылать пакет, поскольку в случае указания в качестве получателя пакета адреса инкапсулятора (т. е., другой стороны туннеля) может возникнуть петля. В таких случаях пакеты должны отбрасываться.

4. IPv4 в качестве протокола доставки

Протокол IPv4 с типом 47 [RFC1700] используется при инкапсуляции пакетов GRE в IPv4. Требования к доставке пакетов через сети IPv4 приведены в документе [RFC1122].

5. Взаимодействие с реализациями RFC 1701

В RFC 1701 поле, обозначенное здесь Reserved0, содержит множество битовых флагов, которые данная спецификация отвергает. В частности, флаги Routing Present, Key Present, Sequence Number Present и Strict Source Route были отменены вместе с полем Recursion Control. В результате заголовок GRE никогда не будет включать полей Key, Sequence Number и Routing, определенных в RFC 1701.

Однако реализации RFC 1701 используются на практике. Ниже описано взаимодействие с такими реализациями.

5.1. Получатель RFC 1701

Реализации, соответствующие данному документу, будет передавать пакеты с нулевым значением поля Reserved0. Соответствующий RFC 1701 получатель будет интерпретировать это, как сброшенные (0) флаги Routing Present, Key Present, Sequence Number Present, Strict Source Route и не будет ждать присутствия определенных в RFC 1701 полей Key, Sequence Number и Routing.

5.2. Отправитель RFC 1701

Отправитель RFC 1701 может устанавливать флаги Routing Present, Key Present, Sequence Number Present и Strict Source Route и передавать в таких случаях определенные в RFC 1701 поля Key, Sequence Number или Routing в заголовке GRE. Как сказано в параграфе 2.31, пакеты с ненулевыми битами 1-5 должны отбрасываться, если получатель не реализует RFC 1701.

6. Вопросы безопасности

Вопросы безопасности в сетях, использующих GRE, близки к вопросам безопасности в обычных сетях IPv4, поскольку маршрутизация с использованием GRE соответствует естественной маршрутизации IPv4. Фильтрация маршрутов сохраняется неизменной. Однако фильтрация пакетов требует, чтобы межсетевые экраны «заглядывали» внутрь пакетов GRE или фильтровали по конечным точкам туннелей GRE. В средах, для которых этот вопрос имеет важное значение, может оказаться целесообразным завершение туннелей на межсетевых экранах.

7. Взаимодействие с IANA

В этом разделе рассматривается выделение для GRE дополнительных значений Version Number и Protocol Type.

7.1. Номера версии GRE

Этот документ задает GRE версии 0. GRE версии 1 используется протоколом PPTP [RFC2637]. Дополнительные номера версий GRE выделяются с согласия IETF, как описано в RFC 2434 [RFC2434].

7.2. Типы протокола

GRE использует значения ETHER TYPE в качестве типа протокола. Новые значения ETHER TYPE выделяются Xerox Systems Institute2 [RFC1700].

8. Благодарности

Документ основан на идеях авторов RFC 1701 и RFC 1702. Hitoshi Asaeda, Scott Bradner, Randy Bush, Brian Carpenter, Bill Fenner, Andy Malis, Thomas Narten, Dave Thaler, Tim Gleeson и др. внесли конструктивные и значимые предложения.

9. Приложение известные проблемы

Этот документ задает поведение развернутых реализаций GRE и не пытается решить перечисленные ниже вопросы.

  • Взаимодействие с Path MTU Discovery (PMTU) [RFC1191].

    Существующие реализации GRE при использовании IPv4 в качестве протокола доставки не поддерживают определение Path MTU и не устанавливают флаг запрета фрагментирования (DF) в заголовке доставки. Это может приводить к фрагментированию больших пакетов в туннеле и сборке на выходе (независимо от использования PMTU для вложенного пакета). Если точка входа в туннель использовала определение Path MTU, она должна будет также транслировать сообщения ICMP unreachable (в частности, fragmentation needed and DF set) исходным отправителям пакетов, что не требуется данной спецификацией. Отказ от корректной трансляции данных Path MTU исходному отправителю может приводить к тому, что этот отправитель установит флаг DF, пакет будет отброшен в туннеле, а отправитель не узнает об этом и будет повторять передачу с использованием того же PMTU, что станет причиной отбрасывания и этих пакетов.

  • IPv6 в качестве протокола доставки и вложенного протокола.

    Эта спецификация описывает пересечение реализаций GRE, предлагаемых множеством производителей. Протокол IPv6 в настоящее время не включен в развернутые реализации GRE.

  • Взаимодействие с ICMP.

  • Взаимодействие с архитектурой дифференцированного обслуживания (DiffServ).

  • Множественная и циклическая инкапсуляция.

10. Литература

[ETYPES] ftp://ftp.isi.edu/in-notes/iana/assignments/ethernet-numbers1

[RFC1122] Braden, R., «Requirements for Internet hosts — communication layers», STD 3, RFC 1122, October 1989.

[RFC1191] Mogul, J. and S. Deering, «Path MTU Discovery», RFC 1191, November 1990.

[RFC1226] Kantor, B., «Internet Protocol Encapsulation of AX.25 Frames», RFC 1226, May 1991.

[RFC1234] Provan, D., «Tunneling IPX Traffic through IP Networks», RFC 1234, June 1991.

[RFC1241] Woodburn, R. and D. Mills, «Scheme for an Internet Encapsulation Protocol: Version 1», RFC 1241, July 1991.

[RFC1326] Tsuchiya, P., «Mutual Encapsulation Considered Dangerous», RFC 1326, May 1992.

[RFC1479] Steenstrup, M., «Inter-Domain Policy Routing Protocol Specification: Version 1», RFC 1479, July 1993.

[RFC1700] Reynolds, J. and J. Postel, «Assigned Numbers», STD 2, RFC 17003, October 1994.

[RFC1701] Hanks, S., Li, T., Farinacci, D. and P. Traina, «Generic Routing Encapsulation», RFC 1701, October 1994.

[RFC1702] Hanks, S., Li, T., Farinacci, D. and P. Traina, «Generic Routing Encapsulation over IPv4 networks», RFC 1702, October 1994.

[RFC2119] Bradner, S., «Key words for use in RFCs to Indicate Requirement Levels», BCP 14, RFC 2119, March, 1997.

[RFC2408] Maughan, D., Schertler, M., Schneider, M. and J. Turner, «Internet Security Association and Key Management Protocol (ISAKMP)», RFC 24084, November 1998.

[RFC2434] Narten, T. and H. Alvestrand, «Guidelines for Writing an IANA Considerations Section in RFCs», BCP 26, RFC 2434, October, 1998.

[RFC2637] Hamzeh, K., et al., «Point-to-Point Tunneling Protocol (PPTP)», RFC 2637, July, 1999.

11. Адреса авторов

Dino Farinacci

Procket Networks

3850 No. First St., Ste. C

San Jose, CA 95134

EMail: dino@procket.com

Tony Li

Procket Networks

3850 No. First St., Ste. C

San Jose, CA 95134

Phone: +1 408 954 7903

Fax: +1 408 987 6166

EMail: tony1@home.net

Stan Hanks

Enron Communications

EMail: stan_hanks@enron.net

David Meyer

Cisco Systems, Inc.

170 Tasman Drive

San Jose, CA, 95134

EMail: dmm@cisco.com

Paul Traina

Juniper Networks

EMail: pst@juniper.net

Перевод на русский язык

Николай Малых

nmalykh@gmail.com

12. Полное заявление авторских прав

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских правах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены «как есть» и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.

Подтверждение

Финансирование функций RFC Editor обеспечено Internet Society.

1В оригинале ошибочно указан параграф 5.3 (см. http://www.rfc-editor.org/errata_search.php?eid=1706). Прим. перев.

2В настоящее время реестр поддерживается IEEE и доступен по ссылке. Прим. перев.

3В соответствии с RFC 3232 документ заменен базами данных http://www.iana.org/numbers/. Прим. перев.

4Этот документ признан устаревшим и заменен RFC 4306, который, в свою очередь, заменен RFC 5996. Прим. перев.

 

 

Рубрика: RFC | Оставить комментарий

RFC 2794 Mobile IP Network Access Identifier Extension for IPv4

Network Working Group                                     P. Calhoun
Request for Comments: 2794             Sun Microsystems Laboratories
Updates: 2290                                             C. Perkins
Category: Standards Track                      Nokia Research Center
March 2000

Расширение Mobile IP Network Access Identifier для протокола IPv4

Mobile IP Network Access Identifier Extension for IPv4

PDF

Статус документа

Данный документ содержит спецификацию стандартного протокола Internet, предложенного сообществу Internet, и является приглашением к дискуссии в целях развития этого протокола. Сведения о текущем состоянии стандартизации протокола вы найдете в документе Internet Official Protocol Standards (STD 1). Документ можно распространять без ограничений.

Авторские права

Copyright (C) The Internet Society (2000). Все права защищены.

Аннотация

Серверы AAA сегодня широко используются в Internet для аутентификации и проверки полномочий (авторизации) пользователей, подключающихся к сети по коммутируемым линиям. Очевидно, что такие же серверы могут применяться для мобильных узлов, использующих Mobile IP, когда такие узлы пытаются подключиться к чужим доменам с серверами AAA. Современные серверы AAA идентифицируют клиентов с применением идентификаторов доступа в сеть (NAI1). В этом документе для мобильных узлов определяется способ идентификации себя путем включения NAI в запрос Mobile IP Registration. Этот документ также является обновлением RFC 2290, в котором приводится спецификация конфигурационной опции Mobile-IPv4 для IPCP, позволяя использовать нулевое значение поля Home Address для мобильного узла (Mobile Node).

1. Введение

Серверы AAA сегодня широко используются в Internet для аутентификации и проверки полномочий (авторизации) пользователей, подключающихся к сети по коммутируемым линиям. Очевидно, что такие же серверы могут применяться для мобильных узлов, использующих Mobile IP, когда такие узлы пытаются подключиться к чужим доменам с серверами AAA. Современные серверы AAA идентифицируют клиентов с применением идентификаторов доступа в сеть (NAI) [1]. Данный документ содержит спецификацию расширения Mobile Node NAI для сообщений Mobile IP Registration Request [7], передаваемых мобильным узлом.

Поскольку для идентификации мобильного узла обычно используется идентификатор NAI, для такой идентификации не всегда требуется домашний адрес мобильного узла. Это делает возможной аутентификацию и авторизацию мобильного узла даже при отсутствии у него домашнего адреса. В сообщении Registration Request, содержащем расширение Mobile Node NAI, поле Home Address может иметь значение 0, для запроса на выделение такого адреса.

В RFC 2290 [8] была определена опция Mobile-IPv4 Configuration в IPCP для обеспечения корректного взаимодействия между мобильным узлом и партнером, через которого этот узел подключается к сети по протоколу PPP. В соответствии с этой спецификацией поле домашнего адреса (Home Address) мобильного узла в этой опции должно быть отлично от 0. Однако в контексте этого документа, который позволяет идентифицировать мобильный узел по значению NAI и получать адрес после фазы PPP при организации соединения, значение поля Home Address может быть нулевым при сохранении всех остальных требований RFC 2290. Интерпретация различных сценариев из RFC 2290 приведена в разделе 4.

Ключевые слова необходимо (MUST), недопустимо (MUST NOT), требуется (REQUIRED), нужно (SHALL), не следует (SHALL NOT), следует (SHOULD), не нужно (SHOULD NOT), рекомендуется (RECOMMENDED), возможно (MAY), необязательно (OPTIONAL) в данном документе должны интерпретироваться в соответствии с [3].

2. Расширение NAI для мобильного узла

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Length     |           MN-NAI ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 1: Расширение Mobile Node NAI

Расширение Mobile Node NAI, показанное на рисунке 1, содержит имя пользователя в формате, определенном в [1]. Когда это расширение присутствет в запросе на регистрацию (Registration Request), поле Home Address может иметь нулевое значение. Расширение Mobile Node NAI должно включаться в Registration Request до расширений Mobile-Home Authentication и Mobile-Foreign Authentication, если те присутствуют.

Type

131 (может быть пропущено) [7]

Length

Размер поля MN-NAI в байтах.

MN-NAI

Строка в формате NAI, определенном в [1].

3. Взаимодействие с внешними агентами

Если поле Home Address в регистрационном запросе имеет нулевое значение, внешний агент (foreign agent) должен использовать взамен этого адреса идентификатор NAI в своих записях об ожидающих обработки запросах на регистрацию вместе с полем Identification, как обычно. Если внешний агент не может управлять записями о запросах на регистрацию таким способом, он должен возвращать сообщение Registration Reply со значением Code, показывающим NONZERO_HOMEADDR_REQD (см. раздел 5).

Если мобильный узел включает расширение Mobile Node NAI в свой запрос на регистрацию, отклик Registration Reply от домашнего агента должен включать расширение Mobile Node NAI. Если это не так, внешнему агенту следует передать мобильному узлу Registration Reply с Code = MISSING_NAI (см. раздел 5). Отклик Registration Reply должен включать отличные от нуля значения полей адреса Home Agent и домашнего адреса (Home Address) мобильного узла. Если это не так, внешнему агенту следует передавать мобильному узлу Registration Reply с Code = MISSING_HOME_AGENT или MISSING_HOMEADDR, соответственно (см. раздел 5).

4. Взаимодействие с Mobile-IPv4 Configuration Option для IPCP

В Mobile-IPv4 Configuration Option для IPCP [8] поле Home Address мобильного узла может иметь нулевое значение. В этом параграфе указано действие, которое должно быть выполнено в тех случаях, когда мобильный узел использует расширение Mobile Node NAI в регистрационном запросе Mobile IP Registration Request. Независимо от наличия в IP Address Configuration Option отличного от нуля адреса IP мобильный узел будет пытаться получить домашний адрес из отклика Mobile IP Registration Reply.

Если в IP Address Configuration Option для IPCP вместо адреса IP задано нулевое значение, предполагается, что партнер PPP выделит адрес для мобильного узла. С другой стороны, если опция IP Address Configuration для IPCP включает отличный от 0 адрес IP, предполагается, что партнер PPP выделил этот адрес мобильному узлу в качестве совмещенного (co-located care-of address).

Наконец, если опция IP Address Configuration Option отсутствует в IPCP Configure-Request, не предполагается выделения совмещенного адреса в IPCP. Мобильный узел будет получать такой адрес на более поздней фазе настройки конфигурации или использовать адрес внешнего агента (FA-located care-of address).

5. Коды ошибок

В каждой строке приведенной ниже таблицы указано имя и значение поля Code [7], возвращаемого в Registration Reply, и параграф данного документа, в котором описан код ошибки.

Имя ошибки

Значение

Раздел документа

NONZERO_HOMEADDR_REQD

96

3

MISSING_NAI

97

3

MISSING_HOME_AGENT

98

3

MISSING_HOMEADDR

99

3

6. Согласование с IANA

Расширение Mobile Node NAI, определенное в разделе 2, является регистрационным расширением Mobile IP, определенного в RFC 2002 [7] и дополненного в RFC 2356 [6]. Агентству IANA следует выделить для него значение 131.

Значения Code, приведенные в разделе 5, являются кодами ошибок, определенными в RFC 2002 и дополненными в RFC 2344 [5] and RFC 2356 [6]. Они соответствуют кодам ошибок, связываемых условно с отказом на внешнем агенте (значения из диапазона 64-127). Агентству IANA следует выделить значения, приведенные в разделе 5.

7. Вопросы безопасности

Регистрационные сообщения Mobile IP аутентифицируются и аутентификация проверяется получателем. Это позволяет не запрещать передачу NAI через сеть в открытом виде и проблем безопасности от этого не предполагается.

8. Использование с IPv6

Supporting NAI-based registrations for Mobile IPv6 [4] is outside the scope of this document. This section contains some ideas how Stateless Address Autoconfiguration [9] and DHCPv6 [2] might be extended to support NAI-based Mobile IPv6 registrations.

Для мобильных узлов IPv6 не развернуто общепринятных механизмов, с помощью которых мобильный узел может представить самого себя по типу используемых в IPv4. Тем не менее мобильные узлы IPv6 могут пожелать указать домен, в котором его свидетельства (credentials) могут быть проверены, путем использования NAI точно так же, как данная спецификация предлагает для IPv4. Однако в случае IPv6 нет внешнего агента, управляющего подключениями мобильного узла и проверяющего представленные им свидетельства. Для идентификации HDAF (см. Приложение A) в предположении связи с мобильным узлом NAI будет пересылаться локальной системе AAA локальным агентом, вовлеченным в настройку адреса мобильного узла.

Этим агентом может быть маршрутизатор, передающий анонсы Router Advertisement [9], или сервер DHCPv6. В первом случае маршрутизатор будет сигнализировать о своей возможности обрабатывать NAI, путем добавления некой (еще не определенной) опции к Router Advertisement. Во втором случае для управляемых каналов мобильный узел может включить еще не определенное расширение NAI в свое сообщение DHCP Solicitation. Такое расширение NAI и соответствующая аутентификация будут также требоваться для последующего запроса DHCP Request, передаваемого мобильным узлом серверу DHCP, выбранному на основе полученных анонсов DHCP Advertisement. После получения адреса в чужой сети мобильный узел сможет использовать обычный протокол MIPv6 [4].

9. Благодарности

Авторы благодарят Gabriel Montenegro и Vipul Gupta за полезное обсуждение. Спасибо Basaravaj Patil и Pete McCann за текст, описывающий действия при нулевом домашнем адресе и желании мобильного узла использовать конфигурационную опцию Mobile-IPv4 для IPCP, определенную в RFC 2290.

Литература

[1] Aboba, B. and M. Beadles, «The Network Access Identifier», RFC 2486, January 1999.

[2] Bound, J. and C. Perkins, «Dynamic Host Configuration Protocol for IPv6 (DHCPv6)», Work in Progress2.

[3] Bradner, S., «Key words for use in RFCs to Indicate Requirement Levels», BCP 14, RFC 2119, March 1997.

[4] Johnson, D. and C. Perkins «Mobility Support in IPv6», Work in Progress3.

[5] Montenegro, G., «Reverse Tunneling for Mobile IP», RFC 2344, May 1998.

[6] Montenegro, G. and V. Gupta, «Sun’s SKIP Firewall Traversal for Mobile IP», RFC 2356, June 1998.

[7] Perkins, C., «IP Mobility Support», RFC 2002, October 1996.

[8] Solomon, J. and S. Glass, «Mobile-IPv4 Configuration Option for PPP IPCP», RFC 2290, February 1998.

[9] Thomson, S. and T. Narten, «IPv6 Stateless Address Autoconfiguration», RFC 2462, December 1998.

Приложение A. Функция HDAF

В этом приложении вводится новая функция HDAF4, которая может динамически присваивать мобильному узлу домашний адрес (Home Address).

                                             +------+
                                             |      |
                                         +---+ HA-1 |
+------+       +------+       +------+   |   |      |
|      |       |      |       |      |   |   +------+
|  MN  |-------|  FA  |-------| HDAF +---+     ...
|      |       |      |       |      |   |   +------+
+------+       +------+       +------+   |   |      |
                                         +---+ HA-n |
                                             |      |
                                             +------+

Рисунок 2: Функция HDAF

На рисунке 2 показана домашняя функция HDAF, которая получает сообщения от внешних агентов (FA) и выделяет Home Address из своего домашнего домена (Home Domain). HDAF не выполняет обработки запросов Registration Request от мобильных узлов, а просто пересылает такие запросы домашнему агенту (HA) в сети, который может обработать запрос.

При получении запроса Registration Request от мобильного узла (MN) агент FA извлекает NAI и определяет имя домена, связанного с ним. Далее FA находит HDAF, которая обслуживает запросы для домена мобильного узла. Протокол обнаружения выходит за рамки данной спецификации. В приведенном примере FA может передать задачу поиска HDAF локальному серверу AAA. Этот сервер может также помогать FA в процессе верификации свидетельств мобильного узла с использованием протокола, который данная спецификация не задает.

Адреса

Контактировать с рабочей группой можно через ее руководителей:

Basavaraj Patil

Nokia Corporation

6000 Connection Drive

M/S M8-540

Irving, TX 75039

USA

Phone: +1 972-894-6709

Fax : +1 972-894-5349

EMail: Basavaraj.Patil@nokia.com

Phil Roberts

Motorola

1501 West Shure Drive

Arlington Heights, IL 60004

USA

Phone: +1 847-632-3148

EMail: QA3445@email.mot.com

Вопросы, относящиеся к данному документу, следует направлять:

Charles E. Perkins

Nokia Research Center

313 Fairchild Drive

Mountain View, California 94043

USA

Phone: +1-650 625-2986

Fax: +1 650 625-2502

EMail: charliep@iprg.nokia.com

Pat R. Calhoun

Sun Microsystems Laboratories

15 Network Circle

Menlo Park, California 94025

USA

Phone: +1 650-786-7733

Fax: +1 650-786-6445

EMail: pcalhoun@eng.sun.com

Перевод на русский язык

Николай Малых

nmalykh@gmail.com

Полное заявление авторских прав

Copyright (C) The Internet Society (2000). Все права защищены.

Этот документ и его переводы могут копироваться и предоставляться другим лицам, а производные работы, комментирующие или иначе разъясняющие документ или помогающие в его реализации, могут подготавливаться, копироваться, публиковаться и распространяться целиком или частично без каких-либо ограничений при условии сохранения указанного выше уведомления об авторских правах и этого параграфа в копии или производной работе. Однако сам документ не может быть изменён каким-либо способом, таким как удаление уведомления об авторских правах или ссылок на Internet Society или иные организации Internet, за исключением случаев, когда это необходимо для разработки стандартов Internet (в этом случае нужно следовать процедурам для авторских прав, заданных процессом Internet Standards), а также при переводе документа на другие языки.

Предоставленные выше ограниченные права являются бессрочными и не могут быть отозваны Internet Society или правопреемниками.

Этот документ и содержащаяся в нем информация представлены «как есть» и автор, организация, которую он/она представляет или которая выступает спонсором (если таковой имеется), Internet Society и IETF отказываются от каких-либо гарантий (явных или подразумеваемых), включая (но не ограничиваясь) любые гарантии того, что использование представленной здесь информации не будет нарушать чьих-либо прав, и любые предполагаемые гарантии коммерческого использования или применимости для тех или иных задач.

Подтверждение

Финансирование функций RFC Editor обеспечено Internet Society.


1Network Access Identifier.

2Работа завершена и опубликована в RFC 3315. Прим. перев.

3Работа завершена и опубликована в RFC 3775. Прим. перев.

4Home Domain Allocation Function — функция выделения адреса в домашнем домене.

Рубрика: RFC | Комментарии к записи RFC 2794 Mobile IP Network Access Identifier Extension for IPv4 отключены