DIAMETER (IETF RFC 6733) — это протокол AAA и сигнализации для взаимодействия LTE, IMS и 5G. Он переносит пары команд «запрос/ответ» — каждая из 20-байтового заголовка и набора AVP — поверх SCTP или TCP с TLS. Пиры согласуют возможности через CER/CEA, контролируют доступность через DWR/DWA и корректно завершают соединение через DPR/DPA.
Что такое DIAMETER
DIAMETER — это базовый протокол аутентификации, авторизации и учёта (AAA), определённый IETF в RFC 6733, и транспорт, выбранный 3GPP для плоскости управления LTE и IMS. Он заменил RADIUS в крупных сетях операторов и является на пакетной стороне аналогом SS7/MAP на унаследованной стороне — перенося управление подпиской и мобильностью (S6a к HSS), политику и тарификацию (Gx, Gy), а также регистрацию в IMS (Cx/Dx). Всё работает как пары команд «запрос/ответ» между именованными пирами, идентифицируемыми через Diameter Identity (FQDN) и сгруппированными в реалмы.
Заголовок сообщения
Каждое сообщение DIAMETER начинается с фиксированного 20-октетного заголовка, за которым следует переменный список AVP. Заголовок несёт поле Version (всегда 1), 24-битное Message Length, октет Command Flags, 24-битный Command Code, 32-битный Application-Id, называющий приложение, к которому относится сообщение, и два идентификатора. Hop-by-Hop Identifier сопоставляет запрос его ответу между двумя соседними пирами и переписывается каждым прокси; End-to-End Identifier задаётся отправителем, сохраняется неизменным на всём пути и служит для обнаружения дубликатов.
0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version=1 | Message Length (24) |
| Command Flags | Command Code (24) |
| Application-Id (32) |
| Hop-by-Hop Identifier (32) |
| End-to-End Identifier (32) |
| AVPs ... |
Command Flags: R P E T r r r rФлаги команд и коды команд
Command Code вместе с Application-Id называют операцию; ответ повторно использует тот же код команды со сброшенным битом Request. Четыре флага команд несут семантику сообщения. R (Request) отличает запрос от ответа. P (Proxiable) означает, что сообщение может быть проксировано, ретранслировано или перенаправлено, а не обработано локально. E (Error) помечает ответ с протокольной ошибкой. T (potentially re-transmitted) помечает запрос, отправленный повторно после сбоя канала, чтобы получатель мог защититься от дубликатов. Базовый протокол определяет служебные команды; приложения, такие как S6a, Gx и Cx, определяют собственные коды команд поверх него.
| Команда | Код | Назначение |
|---|---|---|
| CER / CEA | 257 | Capabilities-Exchange — согласование поддерживаемых приложений при подключении |
| DWR / DWA | 280 | Device-Watchdog — проверка активности пира / keepalive (RFC 3539) |
| DPR / DPA | 282 | Disconnect-Peer — упорядоченное завершение соединения |
| RAR / RAA | 258 | Re-Auth — сервер запрашивает у клиента повторную авторизацию сессии |
| STR / STA | 275 | Session-Termination — клиент завершает авторизованную сессию |
| ASR / ASA | 274 | Abort-Session — сервер принудительно завершает сессию |
| ACR / ACA | 271 | Accounting-Request/Answer (базовый учёт) |
Обмен возможностями: CER / CEA
Сразу после открытия транспортного соединения два пира обмениваются сообщениями Capabilities-Exchange-Request и Answer (команда 257, Application-Id 0). Каждая сторона объявляет свои Origin-Host и Origin-Realm, свой Host-IP-Address, Vendor-Id и — что важнее всего — набор поддерживаемых приложений через AVP Auth-Application-Id, Acct-Application-Id и Vendor-Specific-Application-Id. Если у пиров нет общего приложения, соединение отклоняется. CER/CEA — это способ, которым узел узнаёт, способен ли пир говорить на S6a, Gx или Cx, прежде чем пойдёт прикладной трафик, и происходит он ровно один раз за соединение.
Поддержание соединения и завершение: DWR / DPR
DIAMETER использует watchdog из RFC 3539 для обнаружения «мёртвого» пира быстрее, чем это сделал бы сам транспорт. Когда соединение простаивает, пир отправляет Device-Watchdog-Request (команда 280) и ожидает Device-Watchdog-Answer в пределах интервала watchdog; повторные пропуски переводят пир в состояние сбоя, и трафик перенаправляется на альтернативный. Чтобы намеренно закрыть соединение — для обслуживания или переконфигурации — пир отправляет Disconnect-Peer-Request (команда 282) с Disconnect-Cause (REBOOTING, BUSY или DO_NOT_WANT_TO_TALK_TO_YOU), позволяя другой стороне решить, переподключаться ли.
Транспорт: SCTP и TCP с TLS
RFC 6733 требует поддержки как SCTP (RFC 4960), так и TCP, причём SCTP предпочтителен для сигнализации, поскольку его мультиплексирование потоков исключает блокировку начала очереди (head-of-line), а мультихоуминг обеспечивает избыточность путей. Общеизвестный порт — 3868. Безопасность обеспечивается TLS поверх TCP или DTLS поверх SCTP; внутри доверенного домена оператора многие развёртывания вместо этого используют IPsec на сетевом уровне. У DIAMETER нет собственной внутриполосной аутентификации сообщений, поэтому важны транспортная безопасность и пограничная фильтрация, рассматриваемые в разделе о безопасности роуминга DIAMETER.
Часто задаваемые вопросы
Что такое базовый протокол DIAMETER?
Это протокол AAA и сигнализации, определённый в IETF RFC 6733, используемый как транспорт плоскости управления для взаимодействия LTE, IMS и 5G. Он переносит пары команд «запрос/ответ» — 20-байтовый заголовок плюс AVP — поверх SCTP или TCP с TLS и определяет обмен возможностями, watchdog для поддержания связи и корректное отключение.
Что означают флаги R, P, E и T?
R помечает запрос (Request, сброшен в ответе). P помечает сообщение как Proxiable — оно может быть ретранслировано, проксировано или перенаправлено. E помечает ответ с ошибкой (Error). T помечает запрос как потенциально повторно переданный после failover, чтобы получатель мог обнаружить дубликат по End-to-End Identifier.
В чём разница между Hop-by-Hop и End-to-End Identifier?
Hop-by-Hop Identifier сопоставляет запрос его ответу между двумя соседними пирами и переписывается каждым прокси. End-to-End Identifier задаётся один раз отправителем, сохраняется неизменным на всём пути и используется для обнаружения дублирующихся сообщений после повторной передачи.
Для чего нужен обмен CER/CEA?
Capabilities-Exchange-Request/Answer (команда 257) выполняется один раз при открытии соединения. Пиры объявляют свою идентичность и поддерживаемые приложения DIAMETER (Auth-Application-Id, Vendor-Specific-Application-Id). Если общего приложения нет, соединение отклоняется, поэтому обе стороны заранее знают, могут ли они говорить на S6a, Gx или Cx.
Какие порт и транспорт использует DIAMETER?
DIAMETER использует общеизвестный порт 3868 поверх SCTP или TCP, причём для сигнализации предпочтителен SCTP из-за мультиплексирования потоков и мультихоуминга. Безопасность — TLS поверх TCP или DTLS поверх SCTP; внутри доверенного домена оператора вместо этого распространён IPsec на сетевом уровне.
Как пир DIAMETER определяет, что его партнёр отказал?
Он использует device watchdog из RFC 3539: на простаивающем соединении пир отправляет Device-Watchdog-Request (команда 280) и ожидает Device-Watchdog-Answer в пределах интервала watchdog. Повторно пропущенные ответы переводят пир в состояние сбоя, и трафик перенаправляется на альтернативный пир.
Технические характеристики источника
На этой странице представлены опубликованные стандарты, на которых они основаны. (Открывается в новой вкладке)