DIAMETER je AAA protokol (authentication, authorization and accounting, česky autentizace, autorizace a účtovací) používaný pro přístup k síti nebo pro IP mobilitu. Je používán pro signalizaci v jádře sítě Evolved Packet System (EPS) mobilních sítí 4G.[1] Hlavní koncept tvoří základní protokol, který může být rozšířen pro poskytování AAA služeb novým přístupovým technologiím. Může pracovat jak lokálně tak i v roamingu.

Rozšíření oproti RADIUS protokolu

editovat

Protokol DIAMETER je rozšířeným následníkem protokolu RADIUS (o čemž svědčí okolnost, že diametr čili průměr je dvojnásobkem rádiusu neboli poloměru). Diameter není přímo zpětně kompatibilní, ale poskytuje rozšířenou cestu pro RADIUS. Hlavní rozdíly protokolu DIAMETER oproti protokolu RADIUS jsou:

  • používá spolehlivý transportní protokol (TCP nebo SCTP, nepoužívá nespolehlivý UDP)
  • může použít zabezpečení na transportní vrstvě (IPsec nebo TLS)
  • podporuje přenos RADIUS
  • má větší adresní prostor pro dvojice atributů a hodnot (anglicky Attribute Value Pairs, AVPs) a širší identifikátory (32bitové místo 8bitových)
  • jde o klient–server protokol, s výjimkou podpory některých zpráv inicializovaných serverem
  • lze použít stavový i bezstavový model
  • má dynamické objevování uzlů (používá DNS, SRV a NAPTR)
  • má schopnost vyjednávání
  • podporuje dohody na aplikační vrstvě, definuje metody odolávající chybám a stavové stroje (RFC 3539)
  • oznamuje chyby
  • má lepší podporu roamingu
  • je snadněji rozšiřitelný; lze definovat nové příkazy a atributy
  • je zarovnán na 32bitové hranice
  • má základní podporu uživatelských sezení a účtování

Popis protokolu

editovat

Základní protokol Diameteru (anglicky Diameter Base Protocol) je definován v RFC 6733. Definuje minimální požadavky AAA protokolu. Aplikace Diameteru (anglicky Diameter Applications) mohou rozšířit základní protokol přidáním nových příkazů nebo atributů. Aplikace zde není program, nýbrž protokol založený na Diameteru. Zabezpečení protokolu Diameter je poskytováno protokolem IPsec nebo TLS.

Formát paketů

editovat

Paket začíná hlavičkou, ze kterou následují dvojice atributů a hodnot (AVP):

Hlavička protokolu Diameter
Bitové posunutí  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 Verze Délka zprávy
32 R P E T         Kód příkazu
64 Application ID
96 Hop-by-hop ID
128 End-to-end ID
160
...
AVPs
...

Toto pole indikuje verzi základního protokolu Diameter. V roce 2014 byla jediná podporovaná hodnota 1.[2]

Délka zprávy

editovat

Pole délka zprávy (anglicky Message length) indikuje délku Diameter zprávy v bytech, včetně hlavičky a polí AVP doplněných na násobek 4 bytů.

Příznaky příkazu

editovat

Bit „R“ (Požadavek) – je-li nastaven, zpráva je požadavek; je-li nulový, zpráva je odpověď.

Bit „P“ (Proxiable) – je-li nastaven, zpráva MŮŽE být předána na jiný uzel (proxy, relay nebo redirect). Pokud je nulový, zpráva MUSÍ být zpracovaná lokálně.

Bit „E“ (Chyba) – je-li nastaven, zpráva obsahuje chybu protokolu a nebude vyhovovat CCF pro tento příkaz. Zprávy s nastaveným bitem „E“ se obvykle nazývají chybové zprávy. Tento bit NESMÍ být nastaven v požadavku.

Bit „T“ (Potenciálně opakovaně přenášená zpráva) – tento příznak je nastaven po proceduře zotavení ze selhání spoje, pro pomoc při odstraňování duplicitních požadavků. Je nastaven při opakovaném posílání požadavku, který zatím nebyl potvrzen, jako indikace možné duplicity kvůli selhání spoje.

Příkazy

editovat

Každé dvojici požadavek/odpověď je přiřazen kód příkazu. Zda jde o požadavek nebo odpověď, je rozlišeno bitem 'R' v poli Příznaky příkazu.

Hodnoty 0-255 jsou rezervovány pro zpětnou kompatibilitu s protokolem RADIUS. Hodnoty 256-16777213 jsou pro trvalé, standardní příkazy, které přidělila organizace IANA. Hodnoty 16777214 a 16777215 (hex 0xFFFFFE a 0xFFFFFF) jsou rezervované pro experimentální a testovací účely.

Kód příkazu se používá pro určení akce, kterou je třeba provést pro určitou zprávu. V následující tabulce jsou vybrané často používané příkazy definované v protokolu (základním nebo v aplikacích):

Jméno příkazu Zkratka Kód Aplikace
AA-Request AAR 265 Diameter NAS Application - RFC 7155
AA-Answer AAA 265 Diameter NAS Application - RFC 7155
Diameter-EAP-Request DER 268 Diameter EAP Application - RFC 4072
Diameter-EAP-Answer DEA 268 Diameter EAP Application - RFC 4072
Abort-Session-Request ASR 274 Diameter base
Abort-Session-Answer ASA 274 Diameter base
Accounting-Request ACR 271 Diameter base
Accounting-Answer ACA 271 Diameter base
Credit-Control-Request CCR 272 Diameter Credit-Control Application - RFC 8506 (nahrazuje RFC 4006)
Credit-Control-Answer CCA 272 Diameter Credit-Control Application - RFC 8506 (nahrazuje RFC 4006)
Capabilities-Exchange-Request CER 257 Diameter base
Capabilities-Exchange-Answer CEA 257 Diameter base
Device-Watchdog-Request DWR 280 Diameter base
Device-Watchdog-Answer DWA 280 Diameter base
Disconnect-Peer-Request DPR 282 Diameter base
Disconnect-Peer-Answer DPA 282 Diameter base
Re-Auth-Request RAR 258 Diameter base
Re-Auth-Answer RAA 258 Diameter base
Session-Termination-Request STR 275 Diameter base
Session-Termination-Answer STA 275 Diameter base
User-Authorization-Request UAR 283 Diameter SIP Application - RFC 4740
User-Authorization-Answer UAA 283 Diameter SIP Application - RFC 4740
Server-Assignment-Request SAR 284 Diameter SIP Application - RFC 4740
Server-Assignment-Answer SAA 284 Diameter SIP Application - RFC 4740
Location-Info-Request LIR 285 Diameter SIP Application - RFC 4740
Location-Info-Answer LIA 285 Diameter SIP Application - RFC 4740
Multimedia-Auth-Request MAR 286 Diameter SIP Application - RFC 4740
Multimedia-Auth-Answer MAA 286 Diameter SIP Application - RFC 4740
Registration-Termination-Request RTR 287 Diameter SIP Application - RFC 4740
Registration-Termination-Answer RTA 287 Diameter SIP Application - RFC 4740
Push-Profile-Request PPR 288 Diameter SIP Application - RFC 4740
Push-Profile-Answer PPA 288 Diameter SIP Application - RFC 4740
User-Authorization-Request UAR 300 Diameter base (3GPP) RFC 3589
User-Authorization-Answer UAA 300 Diameter base (3GPP) RFC 3589
Server-Assignment-Request SAR 301 Diameter base (3GPP) RFC 3589
Server-Assignment-Answer SAA 301 Diameter base (3GPP) RFC 3589
Location-Info-Request LIR 302 Diameter base (3GPP) RFC 3589
Location-Info-Answer LIA 302 Diameter base (3GPP) RFC 3589
Multimedia-Auth-Request MAR 303 Diameter base (3GPP) RFC 3589
Multimedia-Auth-Answer MAA 303 Diameter base (3GPP) RFC 3589
Registration-Termination-Request RTR 304 Diameter base (3GPP) RFC 3589
Registration-Termination-Answer RTA 304 Diameter base (3GPP) RFC 3589
Push-Profile-Request PPR 305 Diameter base (3GPP) RFC 3589
Push-Profile-Answer PPA 305 Diameter base (3GPP) RFC 3589
User-Data-Request UDR 306 Diameter base (3GPP) RFC 3589
User-Data-Answer UDA 306 Diameter base (3GPP) RFC 3589
Profile-Update-Request PUR 307 Diameter base (3GPP) RFC 3589
Profile-Update-Answer PUA 307 Diameter base (3GPP) RFC 3589
Subscribe-Notifications-Request SNR 308 Diameter base (3GPP) RFC 3589
Subscribe-Notifications-Answer SNA 308 Diameter base (3GPP) RFC 3589
Push-Notification-Request PNR 309 Diameter base (3GPP) RFC 3589
Push-Notification-Answer PNA 309 Diameter base (3GPP) RFC 3589
Bootstrapping-Info-Request BIR 310 Diameter base (3GPP) RFC 3589
Bootstrapping-Info-Answer BIA 310 Diameter base (3GPP) RFC 3589
Message-Process-Request MPR 311 Diameter base (3GPP) RFC 3589
Message-Process-Answer MPA 311 Diameter base (3GPP) RFC 3589
Update-Location-Request ULR 316 3GPP TS 29.272 [RFC 5516]
Update-Location-Answer ULA 316 3GPP TS 29.272 [RFC 5516]
Cancel-Location-Request CLR 317 3GPP TS 29.272 [RFC 5516]
Cancel-Location-Answer CLA 317 3GPP TS 29.272 [RFC 5516]
Authentication-Information-Request AIR 318 3GPP TS 29.272 [RFC 5516]
Authentication-Information-Answer AIA 318 3GPP TS 29.272 [RFC 5516]
Insert-Subscriber-Data-Request IDR 319 3GPP TS 29.272 [RFC 5516]
Insert-Subscriber-Data-Answer IDA 319 3GPP TS 29.272 [RFC 5516]
Delete-Subscriber-Data-Request DSR 320 3GPP TS 29.272 [RFC 5516]
Delete-Subscriber-Data-Answer DSA 320 3GPP TS 29.272 [RFC 5516]
Purge-UE-Request PER 321 3GPP TS 29.272 [RFC 5516]
Purge-UE-Answer PEA 321 3GPP TS 29.272 [RFC 5516]
Notify-Request NR 323 3GPP TS 29.272 [RFC 5516]
Notify-Answer NA 323 3GPP TS 29.272 [RFC 5516]
Provide-Location-Request PLR 8388620 3GPP-LCS-SLg (Application-ID 16777255)
Provide-Location-Answer PLA 8388620 3GPP-LCS-SLg (Application-ID 16777255)
Routing-Info-Request RIR 8388622 3GPP-LCS-SLh (Application-ID 16777291)
Routing-Info-Answer RIA 8388622 3GPP-LCS-SLh (Application-ID 16777291)
AA-Mobile-Node-Request AMR 260 Diameter Mobile IPv4 - RFC 4004
AA-Mobile-Node-Answer AMA 260 Diameter Mobile IPv4 - RFC 4004
Home-Agent-MIP-Request HAR 262 Diameter Mobile IPv4 - RFC 4004
Home-Agent-MIP-Answer HAA 262 Diameter Mobile IPv4 - RFC 4004
Configuration-Information-Request CIR 8388718 S6t per 3GPP TS 29.336
Configuration-Information-Answer CIA 8388718 S6t per 3GPP TS 29.336
Reporting-Information-Request RIR 8388719 S6t per 3GPP TS 29.336
Reporting-Information-Answer RIA 8388719 S6t per 3GPP TS 29.336
NIDD-Information-Request NIR 8388726 S6t per 3GPP TS 29.336
NIDD-Information-Answer NIA 8388726 S6t per 3GPP TS 29.336

Application-ID

editovat

Application-ID (identifikátor aplikace) se používá pro identifikaci, jakým aplikacím Diametru je zpráva určena. Aplikace mohou být autentizační, účtovací nebo proprietární.

Diameter agenti podporující určité Diameter rozšíření zveřejňují jeho podporu uvedením určité hodnoty v atributu Auth-Application-Id Attribute příkazu Capabilities-Exchange-Request (CER) nebo Capabilities-Exchange-Answer (CEA).

Hodnota Application-ID pole v hlavičce je stejná jako libovolné relevantní Application-Id AVPs obsažené ve zprávě. Například hodnota Application-ID a atributu Auth-Application-Id v příkazech Credit-Control-Request (CCR) and Credit-Control-Answer (CCA) je 4.[3]

Application-ID Zkr. Plné jméno Použití
0 Base Společné Diameter zprávy Pro vytváření/rušení a údržbu spojení protokolu Diameter
16777216 Cx/Dx 3GPP Cx/Dx Rozhraní mezi IMS I/S-CSCF a HSS
16777217 Sh 3GPP Sh Rozhraní mezi VoIP/IMS SIP aplikačním serverem a HSS
16777236 Rx 3GPP Rx Řízení zásad a účtování (anglicky Policy and charging control)
16777238 Gx 3GPP Gx Řízení zásad a účtování
16777251 S6a/S6d 3GPP S6a/S6d Roaming signalizace v sítích LTE
16777252 S13 3GPP 13 Rozhraní mezi EIR a MME
16777255 SLg 3GPP LCS SLg Služby využívající polohu
16777345 S6t 3GPP S6t Rozhraní mezi SCEF a HSS

Hop-by-Hop Identifikátor

editovat

Hop-by-Hop Identifikátor je 32bitové celé číslo bez znaménka (v síťovém pořadí bytů), které se používá pro spárování požadavků s odpověďmi.

Protokol Diameter vyžaduje, aby si agenti provádějící relaying a proxying udržovali transakční stav, který se používá pro zotavení ze selhání. Transakční stav vyžaduje, aby při forwardování požadavku byl uložen jeho Hop-by-Hop Identifikátor; hodnota je nahrazena lokálně jedinečným identifikátorem, který bude při přijetí odpovídající odpovědi nahrazen původní hodnotou. Stav požadavku je uvolněn při doručení odpovědi. Přijaté odpovědi, jejichž Hop-by-Hop Identifier nesouhlasí, Diameter agent ignoruje.

V případě agentů provádějících přesměrování je v záhlaví udržován Hop-by-Hop identifikátor, protože Diameter agent musí vrátit odpověď.

End-to-end Identifikátor

editovat

End-to-end Identifikátor je pole obsahující 32bitové celé číslo bez znaménka (v síťovém pořadí bytů), které se v kombinaci s Origin-Host AVP používá pro odhalení duplicitních zpráv.

Při vytváření požadavku se End-to-end identifikátor nastaví na lokálně jedinečnou hodnotu. Tento end-to-end identifikátor není měněn Diameter agenty žádného druhu, a v odpovědi je třeba použít stejnou hodnotu.

Dvojice Atribut–Hodnota (AVP)

editovat
AVP Hlavička
Bitové posunutí  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 Kód AVP
32 V M P           Délka AVP
64 ID výrobce/dodavatele (volitelný)
96
...
data
...

Pro jednoduchost, AVP příznak „V“ znamená specifický pro určitého výrobce/dodavatele (anglicky Vendor Specific); „M“ znamená povinný (anglicky Mandatory); „P“ znamená chráněný (anglicky Protected).

Příznak „V“ (specifický pro určitého výrobce/dodavatele) indikuje, zda je v AVP hlavičce přítomné volitelné pole Výrobce/dodavatel-ID. Je-li nastaven, AVP Code patří k určitý výrobce/dodavatel kód adresní prostor.

Příznak „M“ (povinný) indikuje, zda je vyžadována podpora konkrétního AVP. Pokud AVP s nastaveným příznakem „M“ je přijatý Diameter klientem, serverem, proxy nebo agentem pro překlad/translaci a příslušné AVP anebo jeho hodnota není rozpoznána, zpráva musí být odmítnuta. Diameter Relay a redirect agenti však zprávy s neznámými AVPs nesmí odmítat.

Příznak „P“ indikuje nutnost šifrování pro zajištění end-to-end datové bezpečnosti.

Jméno atributu Kód Typ
Acct-Interim-Interval 85 Unsigned32
Accounting-Realtime-Required 483 Enumerated
Acct-Multi-Session-Id 50 UTF8String
Accounting-Record-Number 485 Unsigned32
Accounting-Record-Type 480 Enumerated
Accounting-Session-Id 44 OctetString
Accounting-Sub-Session-Id 287 Unsigned64
Acct-Application-Id 259 Unsigned32
Auth-Application-Id 258 Unsigned32
Auth-Request-Type 274 Enumerated
Authorization-Lifetime 291 Unsigned32
Auth-Grace-Period 276 Unsigned32
Auth-Session-State 277 Enumerated
Re-Auth-Request-Type 285 Enumerated
Class 25 OctetString
Destination-Host 293 DiamIdent
Destination-Realm 283 DiamIdent
Disconnect-Cause 273 Enumerated
E2E-Sequence 300 Grouped
Error-Message 281 UTF8String
Error-Reporting-Host 294 DiamIdent
Event-Timestamp 55 Time
Experimental-Result 297 Grouped
Experimental-Result-Code 298 Unsigned32
Failed-AVP 279 Grouped
Firmware-Revision 267 Unsigned32
Host-IP-Address 257 Address
Inband-Security-Id 299 Unsigned32
Multi-Round-Time-Out 272 Unsigned32
Origin-Host 264 DiamIdent
Origin-Realm 296 DiamIdent
Origin-State-Id 278 Unsigned32
Product-Name 269 UTF8String
Proxy-Host 280 DiamIdent
Proxy-Info 284 Grouped
Proxy-State 33 OctetString
Redirect-Host 292 DiamURI
Redirect-Host-Usage 261 Enumerated
Redirect-Max-Cache-Time 262 Unsigned32
Result-Code 268 Unsigned32
Route-Record 282 DiamIdent
Session-Id 263 UTF8String
Session-Timeout 27 Unsigned32
Session-Binding 270 Unsigned32
Session-Server-Failover 271 Enumerated
Supported-Vendor-Id 265 Unsigned32
Termination-Cause 295 Enumerated
User-Name 1 UTF8String
Vendor-Id 266 Unsigned32
Vendor-Specific-Application-Id 260 Grouped

Stavové stroje

editovat

RFC 3588 definuje základní stavový stroj pro udržování spojení mezi komunikujícími stranami a zpracování zpráv. Stroj realizuje funkčnost základního protokolu a všechny zásobníky jej musí podporovat a jako takové abstrahovat od operací souvisejících se spojením.

Navíc je možné později nebo ve vyšší vrstvě abstrakce definovat stavové stroje pro konkrétní aplikace. RFC 3588 definuje stavový stroj pro autorizaci a účtování.

Toky zpráv

editovat
 

Komunikace mezi dvěma komunikujícími stranami protokolem Diameter začíná vytvořením transportního spojení (TCP nebo SCTP). Iniciátor pak pošle protistraně Capabilities-Exchange-Request (CER), protistrana odpoví Capabilities-Exchange-Answer (CEA). Podporují-li obě komunikující strany RFC3588, může být vyjednáno použití TLS (Transport Layer Security). Podporují-li obě komunikující strany RFC6733, může vyjednávání TLS proběhnout před CER/CEA.

Spojení je pak připravené pro výměnu aplikačních zpráv.

Pokud určitou dobu nebyly přenášené žádné zprávy, libovolná strana může poslat Device-Watchdog-Request (DWR) a protistrana musí odpovědět Device-Watchdog-Answer.

Libovolná strana může ukončit komunikaci odesláním zprávy Disconnect-Peer-Request (DPR), na kterou protějšek musí odpovědět Disconnect-Peer-Answer. Pak je možné zavřít transportní spojení.

Dokumenty RFC

editovat

Protokol Diameter je aktuálně definován v následujících IETF RFC dokumentech: Nahrazená RFC jsou indikována přeškrtnutím textu.

# Titul Datum publikace Nahrazeno
RFC 3588 Diameter Base Protocol. září 2003 RFC 6733
RFC 3589 Diameter Command Codes for Third Generation Partnership Project (3GPP) Release 5. září 2003
RFC 4004 Diameter Mobile IPv4 Application. srpen 2005
RFC 4005 Diameter Network Access Server Application. srpen 2005 RFC 7155
RFC 4006 Diameter Credit-Control Application. srpen 2005 RFC 8506
RFC 4072 Diameter Extensible Authentication Protocol (EAP) Application. srpen 2005
RFC 4740 Diameter Session Initiation Protocol (SIP) Application. M. listopad 2006
RFC 5224 Diameter Policy Processing Application. březen 2008
RFC 5431 Diameter ITU-T Rw Policy Enforcement Interface Application. březen 2009
RFC 5447 Diameter Mobile IPv6: Support for Network Access Server to Diameter Server Interaction. únor 2009
RFC 5516 Diameter Command Code Registration for the Third Generation Partnership Project (3GPP) Evolved Packet System (EPS). duben 2009
RFC 5624 Quality of Service Parameters for Usage with Diameter. srpen 2009
RFC 5719 Updated IANA Considerations for Diameter Command Code Allocations. leden 2010 RFC 6733
RFC 6733 Diameter Base Protocol. říjen 2012
RFC 6737 The Diameter Capabilities Update Application. říjen 2012
RFC 7155 Diameter Network Access Server Application. duben 2014
RFC 8506 Diameter Credit-Control Application březen 2019

Reference

editovat

V tomto článku byl použit překlad textu z článku Diameter (protocol) na anglické Wikipedii.

  1. 3GPP TS 29.272: 3rd Generation Partnership Project; Technical Specification Group Core Network and Terminals; Evolved Packet System (EPS); Mobility Management Entity (MME) and Serving GPRS Support Node (SGSN) related interfaces based on Diameter protocol. 18.3.0. vyd. [s.l.]: 3GPP, březen 2024. Dostupné online. 
  2. ARKKO, J.; LOUGHNEY, J., 2012. RFC 6733 - Diameter Base Protocol. Proposed Standard. Roč. Standards Track. Dostupné online [cit. 2014-10-12]. ISSN 2070-1721. DOI 10.17487/RFC6733. 
  3. HAKALA, H.; MATTILA, L.; STURA, M.; LOUGHNEY, J., 2005. RFC 4006 - Diameter Credit-Control Application. Proposed Standard. Roč. Standards Track. Dostupné online. DOI 10.17487/RFC4006. 

Související články

editovat