DIAMETER

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

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

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
0VerzeDélka zprávy
32RPET    Kód příkazu
64Application ID
96Hop-by-hop ID
128End-to-end ID
160
...
AVPs
...

Verze

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

Délka zprávy

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

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-RequestULR3163GPP TS 29.272 [RFC 5516]
Update-Location-AnswerULA3163GPP TS 29.272 [RFC 5516]
Cancel-Location-RequestCLR3173GPP TS 29.272 [RFC 5516]
Cancel-Location-AnswerCLA3173GPP TS 29.272 [RFC 5516]
Authentication-Information-RequestAIR3183GPP TS 29.272 [RFC 5516]
Authentication-Information-AnswerAIA3183GPP TS 29.272 [RFC 5516]
Insert-Subscriber-Data-RequestIDR3193GPP TS 29.272 [RFC 5516]
Insert-Subscriber-Data-AnswerIDA3193GPP TS 29.272 [RFC 5516]
Delete-Subscriber-Data-RequestDSR3203GPP TS 29.272 [RFC 5516]
Delete-Subscriber-Data-AnswerDSA3203GPP TS 29.272 [RFC 5516]
Purge-UE-RequestPER3213GPP TS 29.272 [RFC 5516]
Purge-UE-AnswerPEA3213GPP TS 29.272 [RFC 5516]
Notify-RequestNR3233GPP TS 29.272 [RFC 5516]
Notify-AnswerNA3233GPP 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-RequestAMR260Diameter Mobile IPv4 - RFC 4004
AA-Mobile-Node-AnswerAMA260Diameter Mobile IPv4 - RFC 4004
Home-Agent-MIP-RequestHAR262Diameter Mobile IPv4 - RFC 4004
Home-Agent-MIP-AnswerHAA262Diameter Mobile IPv4 - RFC 4004
Configuration-Information-RequestCIR8388718S6t per 3GPP TS 29.336
Configuration-Information-AnswerCIA8388718S6t per 3GPP TS 29.336
Reporting-Information-RequestRIR8388719S6t per 3GPP TS 29.336
Reporting-Information-AnswerRIA8388719S6t per 3GPP TS 29.336
NIDD-Information-RequestNIR8388726S6t per 3GPP TS 29.336
NIDD-Information-AnswerNIA8388726S6t 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.[3]

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í (anglicky Policy and charging control)
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
0Kód AVP
32VMP     Délka AVP
64ID 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 atributuKódTyp
Acct-Interim-Interval85Unsigned32
Accounting-Realtime-Required483Enumerated
Acct-Multi-Session-Id50UTF8String
Accounting-Record-Number485Unsigned32
Accounting-Record-Type480Enumerated
Accounting-Session-Id44OctetString
Accounting-Sub-Session-Id287Unsigned64
Acct-Application-Id259Unsigned32
Auth-Application-Id258Unsigned32
Auth-Request-Type274Enumerated
Authorization-Lifetime291Unsigned32
Auth-Grace-Period276Unsigned32
Auth-Session-State277Enumerated
Re-Auth-Request-Type285Enumerated
Class25OctetString
Destination-Host293DiamIdent
Destination-Realm283DiamIdent
Disconnect-Cause273Enumerated
E2E-Sequence300Grouped
Error-Message281UTF8String
Error-Reporting-Host294DiamIdent
Event-Timestamp55Time
Experimental-Result297Grouped
Experimental-Result-Code298Unsigned32
Failed-AVP279Grouped
Firmware-Revision267Unsigned32
Host-IP-Address257Address
Inband-Security-Id299Unsigned32
Multi-Round-Time-Out272Unsigned32
Origin-Host264DiamIdent
Origin-Realm296DiamIdent
Origin-State-Id278Unsigned32
Product-Name269UTF8String
Proxy-Host280DiamIdent
Proxy-Info284Grouped
Proxy-State33OctetString
Redirect-Host292DiamURI
Redirect-Host-Usage261Enumerated
Redirect-Max-Cache-Time262Unsigned32
Result-Code268Unsigned32
Route-Record282DiamIdent
Session-Id263UTF8String
Session-Timeout27Unsigned32
Session-Binding270Unsigned32
Session-Server-Failover271Enumerated
Supported-Vendor-Id265Unsigned32
Termination-Cause295Enumerated
User-Name1UTF8String
Vendor-Id266Unsigned32
Vendor-Specific-Application-Id260Grouped

Stavové stroje

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

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

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.

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

Odkazy

Reference

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

Média použitá na této stránce

RFC3588 peer state machine 1.png
Autor: Vingarzan, Licence: CC BY-SA 3.0
RFC 3588 Diameter Peer State Machine Connecting
RFC3588 auth state machine server.png
Autor: Vingarzan, Licence: CC BY-SA 3.0
RFC 3588 Diameter Authorization Application Server State Machine
Under construction icon-orange.svg
Autor:

odvozené dílo Pedroca cerebral

Derivative work: Bazi, Licence: LGPL
Under construction icon
RFC3588 acct state machine client.png
Autor: Vingarzan, Licence: CC BY-SA 3.0
RFC 3588 Diameter Accounting Application Client State Machine
RFC3588 peer state machine 2.png
Autor: Vingarzan, Licence: CC BY-SA 3.0
RFC 3588 Diameter Peer State Machine - Active and Disconnecting
RFC3588 auth state machine client.png
Autor: Vingarzan, Licence: CC BY-SA 3.0
RFC 3588 Diameter Authorization Application Client State Machine
Diameter message flow.png
Sequence diagram over message flow in diameter protocol
RFC3588 acct state machine server.png
Autor: Vingarzan, Licence: CC BY-SA 3.0
RFC 3588 Diameter Accounting Application Server State Machine