Diameter (též někdy 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. 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 Protokol Diametr 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 Diametr 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 () 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 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ů 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 910111213141516171819202122232425262728293031 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…
Verze Toto pole indikuje verzi základního protokolu Diameter. V roce 2014 byla jediná podporovaná hodnota 1.
Délka zprávy Pole délka zprávy () 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 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 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říkazuZkratkaKódAplikace AA-RequestAAR265Diameter NAS Application – RFC 7155 AA-AnswerAAA265Diameter NAS Application – RFC 7155 Diameter-EAP-RequestDER268Diameter EAP Application – RFC 4072 Diameter-EAP-AnswerDEA268Diameter EAP Application – RFC 4072 Abort-Session-RequestASR274Diameter base Abort-Session-AnswerASA274Diameter base Accounting-RequestACR271Diameter base Accounting-AnswerACA271Diameter base Credit-Control-RequestCCR272Diameter Credit-Control Application – RFC 8506 (nahrazuje RFC 4006) Credit-Control-AnswerCCA272Diameter Credit-Control Application – RFC 8506 (nahrazuje RFC 4006) Capabilities-Exchange-RequestCER257Diameter base Capabilities-Exchange-AnswerCEA257Diameter base Device-Watchdog-RequestDWR280Diameter base Device-Watchdog-AnswerDWA280Diameter base Disconnect-Peer-RequestDPR282Diameter base Disconnect-Peer-AnswerDPA282Diameter base Re-Auth-RequestRAR258Diameter base Re-Auth-AnswerRAA258Diameter base Session-Termination-RequestSTR275Diameter base Session-Termination-AnswerSTA275Diameter base User-Authorization-RequestUAR283Diameter SIP Application – RFC 4740 User-Authorization-AnswerUAA283Diameter SIP Application – RFC 4740 Server-Assignment-RequestSAR284Diameter SIP Application – RFC 4740 Server-Assignment-AnswerSAA284Diameter SIP Application – RFC 4740 Location-Info-RequestLIR285Diameter SIP Application – RFC 4740 Location-Info-AnswerLIA285Diameter SIP Application – RFC 4740 Multimedia-Auth-RequestMAR286Diameter SIP Application – RFC 4740 Multimedia-Auth-AnswerMAA286Diameter SIP Application – RFC 4740 Registration-Termination-RequestRTR287Diameter SIP Application – RFC 4740 Registration-Termination-AnswerRTA287Diameter SIP Application – RFC 4740 Push-Profile-RequestPPR288Diameter SIP Application – RFC 4740 Push-Profile-AnswerPPA288Diameter SIP Application – RFC 4740 User-Authorization-RequestUAR300Diameter base (3GPP) RFC 3589 User-Authorization-AnswerUAA300Diameter base (3GPP) RFC 3589 Server-Assignment-RequestSAR301Diameter base (3GPP) RFC 3589 Server-Assignment-AnswerSAA301Diameter base (3GPP) RFC 3589 Location-Info-RequestLIR302Diameter base (3GPP) RFC 3589 Location-Info-AnswerLIA302Diameter base (3GPP) RFC 3589 Multimedia-Auth-RequestMAR303Diameter base (3GPP) RFC 3589 Multimedia-Auth-AnswerMAA303Diameter base (3GPP) RFC 3589 Registration-Termination-RequestRTR304Diameter base (3GPP) RFC 3589 Registration-Termination-AnswerRTA304Diameter base (3GPP) RFC 3589 Push-Profile-RequestPPR305Diameter base (3GPP) RFC 3589 Push-Profile-AnswerPPA305Diameter base (3GPP) RFC 3589 User-Data-RequestUDR306Diameter base (3GPP) RFC 3589 User-Data-AnswerUDA306Diameter base (3GPP) RFC 3589 Profile-Update-RequestPUR307Diameter base (3GPP) RFC 3589 Profile-Update-AnswerPUA307Diameter base (3GPP) RFC 3589 Subscribe-Notifications-RequestSNR308Diameter base (3GPP) RFC 3589 Subscribe-Notifications-AnswerSNA308Diameter base (3GPP) RFC 3589 Push-Notification-RequestPNR309Diameter base (3GPP) RFC 3589 Push-Notification-AnswerPNA309Diameter base (3GPP) RFC 3589 Bootstrapping-Info-RequestBIR310Diameter base (3GPP) RFC 3589 Bootstrapping-Info-AnswerBIA310Diameter base (3GPP) RFC 3589 Message-Process-RequestMPR311Diameter base (3GPP) RFC 3589 Message-Process-AnswerMPA311Diameter base (3GPP) RFC 3589 Update-Location-RequestULR316 3GPP TS 29.272 [RFC 5516] Update-Location-AnswerULA316 3GPP TS 29.272 [RFC 5516] Cancel-Location-RequestCLR317 3GPP TS 29.272 [RFC 5516] Cancel-Location-AnswerCLA317 3GPP TS 29.272 [RFC 5516] Authentication-Information-RequestAIR318 3GPP TS 29.272 [RFC 5516] Authentication-Information-AnswerAIA318 3GPP TS 29.272 [RFC 5516] Insert-Subscriber-Data-RequestIDR319 3GPP TS 29.272 [RFC 5516] Insert-Subscriber-Data-AnswerIDA319 3GPP TS 29.272 [RFC 5516] Delete-Subscriber-Data-RequestDSR320 3GPP TS 29.272 [RFC 5516] Delete-Subscriber-Data-AnswerDSA320 3GPP TS 29.272 [RFC 5516] Purge-UE-RequestPER321 3GPP TS 29.272 [RFC 5516] Purge-UE-AnswerPEA321 3GPP TS 29.272 [RFC 5516] Notify-RequestNR323 3GPP TS 29.272 [RFC 5516] Notify-AnswerNA323 3GPP TS 29.272 [RFC 5516] Provide-Location-RequestPLR83886203GPP-LCS-SLg (Application-ID 16777255) Provide-Location-AnswerPLA83886203GPP-LCS-SLg (Application-ID 16777255) Routing-Info-RequestRIR83886223GPP-LCS-SLh (Application-ID 16777291) Routing-Info-AnswerRIA83886223GPP-LCS-SLh (Application-ID 16777291) AA-Mobile-Node-RequestAMR260 Diameter Mobile IPv4 – RFC 4004 AA-Mobile-Node-AnswerAMA260 Diameter Mobile IPv4 – RFC 4004 Home-Agent-MIP-RequestHAR262 Diameter Mobile IPv4 – RFC 4004 Home-Agent-MIP-AnswerHAA262 Diameter Mobile IPv4 – RFC 4004 Configuration-Information-RequestCIR8388718 S6t per 3GPP TS 29.336 Configuration-Information-AnswerCIA8388718 S6t per 3GPP TS 29.336 Reporting-Information-RequestRIR8388719 S6t per 3GPP TS 29.336 Reporting-Information-AnswerRIA8388719 S6t per 3GPP TS 29.336 NIDD-Information-RequestNIR8388726 S6t per 3GPP TS 29.336 NIDD-Information-AnswerNIA8388726 S6t per 3GPP TS 29.336
Application-ID 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.
Application-IDZkr.Plné jménoPoužití 0BaseSpolečné Diameter zprávyPro vytváření/rušení a údržbu spojení protokolu Diameter 16777216Cx/Dx3GPP Cx/DxRozhraní mezi IMS I/S-CSCF a HSS 16777217Sh3GPP ShRozhraní mezi VoIP/IMS SIP aplikačním serverem a HSS 16777236Rx3GPP RxŘízení zásad a účtování () 16777238Gx3GPP GxŘízení zásad a účtování 16777251S6a/S6d3GPP S6a/S6dRoaming signalizace v sítích LTE 16777252S133GPP 13Rozhraní mezi EIR a MME 16777255SLg3GPP LCS SLgSlužby využívající polohu 16777345S6t3GPP S6tRozhraní mezi SCEF a HSS
Hop-by-Hop Identifikátor 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 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) +AVP Hlavička Bitové posunutí 0 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031 0 Kód AVP 32 VMP 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 (); „M“ znamená povinný (); „P“ znamená chráněný ().
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.