DIAMETRU

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În tehnologia informației și telecomunicații, Diameter este un protocol AAA ( autentificare , autorizare și contabilitate ) care urmează RADIUS , chiar dacă nu este compatibil direct înapoi . RADIUS este un protocol client-server AAA între un server de acces la rețea ( NAS ) și un server RADIUS centralizat, bazat pe protocolul stratului de transport TCP ; Diametrul este un protocol AAA peer-to-peer și constă dintr-un protocol de bază (specificat în RFC 3588 ) și un set de extensii numite aplicații Diameter . Protocolul de bază nu poate fi utilizat singur, ci întotdeauna asociat cu o anumită aplicație Diametru specifică a serviciului care urmează să fie furnizat ( IP mobil , NASREQ , Strong Security etc.). Se bazează pe protocoalele de transport TCP sau SCTP și necesită utilizarea obligatorie a IPsec .

Naștere

Principalele motive pentru definirea unui nou protocol au fost problemele RADIUS enumerate mai jos.

  • Dimensiune limitată a atributului: un atribut RADIUS este purtat într-un mesaj RADIUS ca un tuplu de lungime 3 {Tip de atribut, Lungime de atribut, Valoare de atribut} . Câmpul Lungime atribut este de un octet, iar valoarea maximă de 255 plasează un plafon pe numărul de octeți de date ai unui atribut dat. Un atribut Diametru este transportat într-un mesaj Diametru ca un tuplu de lungime 5 {Tip atribut, Steaguri, Lungime atribut, ID furnizor, Valoare atribut} . Câmpul Lungime atribut este de trei octeți, deci valoarea sa maximă permite peste 16 milioane de octeți de date pentru un atribut dat.
  • Număr limitat de mesaje simultane în așteptare: câmpul Identificator din antetul unui pachet RADIUS este utilizat pentru a recunoaște retransmisiile. Câmpul de identificare este un octet, care impune o limită maximă de 255 mesaje în așteptare între un client RADIUS și un server RADIUS. Câmpul Identificator end-to-end din antetul unui mesaj Diametru este, de asemenea, utilizat pentru a recunoaște retransmisiile; are o lungime de 4 octeți, permițând peste 4 miliarde de mesaje în așteptare de la un client Diameter.
  • Incapacitatea de a controla fluxul pe server: RADIUS funcționează pe UDP , un protocol de transport simplu neconectat care nu are niciun mecanism pentru ca nodul de recepție să regleze fluxul de date de la nodul de trimitere. Diametrul funcționează pe TCP sau SCTP ( Stream Control Transmission Protocol ), protocoale de transport orientate spre conexiune cu mecanisme de control al fluxului și pentru a evita aglomerația.
  • Detectarea limitată a blocării unui server: pot exista numeroase motive pentru care un NAS poate bloca și nu poate primi un răspuns la o cerere RADIUS dată, inclusiv congestie de rețea sau o scădere temporară a semnalului din calea dintre NAS și server. Sau un bloc al serverului în sine etc. Cu RADIUS și, prin urmare, UDP, NAS nu poate distinge cauza care a cauzat blocarea, deci presupune că problema se află pe următorul hop și se retransmite la un hop alternativ; acest tip de recuperare este foarte adesea inadecvat. Cu un strat de transport orientat spre conexiune și cu mesaje de păstrare Diametru, un nod Diametru poate detecta o cădere locală de la egal la egal.
  • Respingere pachet silențios: Protocolul RADIUS specifică faptul că mesajele pot fi respinse în mod silențios pentru o varietate de condiții de eroare. În aceste cazuri, NAS va presupune că serverul nu a primit mesajul și va face mai multe încercări de retransmisie înainte de a renunța definitiv la cerere. Protocolul Diameter returnează un răspuns pentru toate sau aproape toate condițiile de eroare.
  • Defecțiune ineficientă a serverului: Multe implementări NAS configurează mai multe servere RADIUS, un server primar și un set de servere alternative. Când trebuie să treacă la un server alternativ, NAS nu știe dacă acesta este accesibil; acest lucru poate duce la o întârziere considerabilă pentru utilizatori până când se găsește o alternativă utilă. Cu un strat de transport orientat spre conexiune și datorită mesajelor Diameter keepalive, un nod Diameter are capacitatea de a observa configurația rețelei și, de asemenea, de a reveni la serverul principal când devine disponibil din nou, fără întârziere sau expirare.
  • Utilizarea ineficientă a serverelor RADIUS în medii proxy: în cadrul RADIUS, toate retransmisiunile sunt efectuate de NAS. Serverele proxy nu transmit cererile RADIUS; NAS, neștiind dacă scăderea este locală sau la distanță, se poate retransmite în mod necorespunzător către un alt partener alternativ. Sub Diametru, fiecare nod traversat de un mesaj pe drumul său de la sursă la server va detecta un bloc al următorului său peer hop și îl va retransmite. De asemenea, un bloc este gestionat local.
  • Absența mesajelor serverului nesolicitate: Protocolul RADIUS nu permite unui server să trimită mesaje nesolicitate către NAS. Pentru activitățile de inițializare necesare, producătorii au apelat la soluții în afara protocolului RADIUS (de exemplu,SNMP ) sau la soluții proprietare care implică extensii RADIUS, dar care deseori compromit interoperabilitatea. Diametrul, care este mai degrabă un protocol peer-to-peer decât un protocol client-server , permite mesajele de inițializare a serverului. Protocolul de bază definește două tipuri de mesaje, unul pentru a solicita clientului Diameter să termine o anumită sesiune de utilizator și altul pentru a solicita clientului să reautentizeze sau să autorizeze din nou un anumit utilizator.
  • Atacuri de reluare : Protocolul RADIUS nu previne prevenirea atacurilor de reluare. Un pachet vechi poate fi trimis din nou de la un fals NAS rău intenționat fără a fi detectat. Acest lucru poate produce un Refuz de serviciu dacă serverul are o limită de sesiune simultană pentru un utilizator.
  • Securitate hop-by-hop și nu end-to-end: protocolul RADIUS oferă doar securitate hop-by-hop și nu conține facilități pentru securizarea colegilor intermediari între NAS și server. Acest lucru permite serverelor proxy să colecteze informații confidențiale sau să modifice mesaje (cum ar fi informațiile contabile) fără ca punctele finale să observe. Protocolul Diameter oferă securitate end-to-end în plus față de hop-by-hop. Semnăturile digitale asigură integritatea colegilor implicați, iar confidențialitatea acestora este asigurată prin criptare .
  • Nu există suport pentru comenzile specifice furnizorului: protocolul RADIUS acceptă atribute specifice furnizorului, dar nu comenzi. Aceasta a însemnat că codurile de comandă private create de producători au creat probleme de interoperabilitate. Protocolul Diameter acceptă atât atribute, cât și comenzi specifice furnizorului.
  • Fără cerințe de aliniere: Protocolul RADIUS nu impune cerințe de aliniere, care ar putea suprasolicita inutil mai multe procesoare . Toate câmpurile din antet și atribute trebuie să fie tratate octet cu octet. Protocolul Diameter necesită alinierea tuturor atributelor cu cuvinte pe 32 de biți, precum și câmpurilor din antetul mesajului.
  • Secret partajat necesar: Protocolul RADIUS necesită existența unui secret partajat între colegi, chiar dacă IPSec este utilizat într-o comunicare locală. Protocolul Diameter poate asigura comunicațiile între colegi atât cu IPSec, cât și cu TLS .

Detalii protocol

Structura

Diametrul este definit în termenii unui protocol de bază și a unui set de aplicații. Acest design permite extinderea protocolului la noile tehnologii de acces. Protocolul de bază oferă mecanisme de bază pentru transportul fiabil, livrarea mesajelor și gestionarea erorilor și trebuie utilizat împreună cu o aplicație Diameter. Fiecare aplicație se bazează pe servicii de protocol de bază pentru a sprijini un anumit tip de acces la rețea. Cele două aplicații principale sunt Mobile IPv4 și NASREQ (Network Access Server Cerencies ). Aplicația NASREQ acceptă apelare PPP / IP și este destinată înlocuirii RADIUS.

Protocolul de bază definește formatul unui mesaj Diametru de bază. Datele sunt transportate în mesajul Diametru ca o colecție de AVP (Attribute Value Pair); un AVP este echivalentul unui atribut RADIUS și constă din mai multe câmpuri: Cod AVP, Lungime, Steaguri și Date. Unele AVP sunt utilizate de protocolul de bază Diametru; alte AVP sunt pentru aplicații cu diametru; altele pot fi folosite prin aplicarea la nivel înalt a sistemului final folosind Diameter.

Diametrul, spre deosebire de RADIUS, funcționează pe un strat de transport fiabil ( TCP sau SCTP ) care asigură controlul debitului, confirmări la nivel de transport și retransmisii. În timp ce TCP este universal cunoscut, Stream Control Transmission Protocol (SCTP) este ceva asemănător unui nou protocol de transport IP, existent la același nivel ca UDP sau TCP. În 2000 SCTP a fost propus ca standard și este specificat în RFC 2960 .

Definiții

În plus față de client și server , protocolul Diameter definește alte tipuri de noduri :

  • un Diametru client este un dispozitiv care accesează rețeaua într-un mod controlat. Un NAS este, de asemenea, un client Diameter;
  • un diametru de server este entitatea care gestionează solicitările de autentificare, autorizare și contabilitate pentru un domeniu;
  • un agent de releu se ocupă de direcționarea mesajelor Diametru pe baza informațiilor conținute în mesaj. Deciziile de rutare sunt luate utilizând o listă de domenii acceptate și colegi cunoscuți. Agentii de releu sunt transparenti; pot modifica mesajele numai prin introducerea sau ștergerea informațiilor de rutare, dar nu pot modifica alte porțiuni ale mesajului;
  • un agent proxy se ocupă și de rutare; poate modifica mesajele pentru a implementa decizii politice , cum ar fi controlul utilizării resurselor;
  • un agent de redirecționare încă face rutare, acționând în general ca o sursă centralizată de hărți de adrese de domeniu pentru membrii săi. Spre deosebire de alte tipuri de agenți, un agent de redirecționare returnează un tip special de mesaj de răspuns peerului care a trimis solicitarea. Acest mesaj de răspuns conține informații de rutare care permit partenerului să retrimită cererea, direct la destinația corectă. Un agent de redirecționare nu întârzie solicitările;
  • un agent de traducere efectuează „traduceri” între diferite protocoale, de exemplu de la RADIUS la Diameter. În acest caz, Agentul de traducere acceptă migrarea de la RADIUS la Diameter, permițând conversiile serverului la Diameter, de exemplu.

Specificații

Un mesaj Diametru constă dintr-un antet cu lungime fixă ​​de 20 octeți , urmat de un număr variabil de AVP-uri. Formatul antetului este după cum urmează:

 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
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| Versiune | |
| 0 0 0 0 0 0 0 1 | Lungimea mesajului |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| Steaguri | |
| RPET xxxx | Cod de comandă |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| ID-ul aplicației |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| Identificator hop-by-hop |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| Identificator end-to-end |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| AVP-uri ...
+ - + - + - + - + - + - + - + - + - + - + - + - + -

Antetul mesajului Diameter conține doi identificatori pe 32 de biți . Identificatorul Hop-by-hop ajută la potrivirea cererilor și răspunsurilor. În cereri, acest identificator este înlocuit pentru fiecare salt până când mesajul este redirecționat către destinația sa finală. Expeditorul mesajului de răspuns returnează aceeași valoare pe care a găsit-o în solicitarea corespunzătoare. Identificatorul end-to-end , împreună cu identitatea gazdei de origine, este utilizat pentru a recunoaște mesajele de solicitare duplicate și nu se modifică niciodată până când solicitarea nu ajunge la destinație. Expeditorul răspunsului returnează aceeași valoare pe care a găsit-o în solicitarea corespunzătoare.

Diametrul admite tipuri de date precum Integer32, Unsigned32, Integer64, Unsigned64, Float32, Float64, Float128, OctetString și Grouped; un AVP grupat este un AVP ale cărui date sunt o succesiune de AVP-uri.

Sunt de asemenea definite tipurile de date derivate: enumerative (derivate din integer32), DiameterIdentity (derivate din octetstring), temporale (derivate din unsigned32), UTF8String (derivate din octetstring), IPFilterRule (derivate din octetstring) și QoSFilterRule (derivate din octetstring).

Fiecare proces de Diametru care rulează pe o gazdă generează o Identitate de Diametru, care este un șir cu sintaxa unui Uniform Resource Identifier (URI) care reprezintă FQDN (Numele de domeniu complet calificat) al gazdei, unul dintre porturile care ascultă conexiunile la intrare, protocolul de transport (TCP sau SCTP), protocolul AAA (Diametru) și transportul de securitate (nici unul sau TLS).

Deoarece identitatea poartă FQDN-ul gazdei și întrucât mai multe procese de Diametru pe o singură gazdă nu pot asculta pe același port al unui protocol dat, Diametrul Identității fiecărui proces este garantat ca fiind unic.

În ceea ce privește mesajele, există două tipuri: Cerere și Răspuns . Fiecare mesaj de răspuns include un cod de rezultat AVP , a cărui valoare este un număr întreg care indică dacă o anumită cerere a fost finalizată cu succes sau dacă a apărut o eroare. Fiecare mesaj Diametru conține identitatea diametrului procesului de trimitere pe gazda de origine, precum și domeniul procesului respectiv. Mesajele de solicitare pot fi „proxy” sau „non-proxy”, în funcție de unul dintre semnalizatoarele din antet. Cererile care nu sunt proxyabile sunt destinate strict peer-ului următor și niciodată nu sunt redirecționate în continuare. Solicitările proxyabile sunt direcționabile și direcționate pe bază de domeniu. Fiecare solicitare proxyă conține domeniul țintă în AVP-Destination-Realm.

Un mesaj Diametru relevant pentru o anumită sesiune de utilizator include un ID de sesiune AVP , o valoare constantă pentru viața sesiunii. Această valoare este un șir de text unic la nivel global și etern, capabil să identifice în mod unic o sesiune de utilizator fără a face referire la alte informații. Clientul Diameter care începe sesiunea creează Session-Id, care începe cu șirul Identity Diameter al expeditorului și continuă cu o secvență care garantează atât unicitatea topologică cât și temporală.

Lista comenzilor

Fiecare comandă se distinge printr-un cod, utilizat atât pentru solicitări, cât și pentru răspunsuri:

Comanda Abbr. Cod
Solicitare de întrerupere-sesiune ASR 274
Întrerupere-sesiune-răspuns CA 274
Cerere de contabilitate ACR 271
Contabilitate-Răspuns ACA 271
Capabilități-Schimb-Cerere CER 257
Capabilități-Schimb-Răspuns CEA 257
Device-Watchdog-Request DWR 280
Device-Watchdog-Answer DWA 280
Cerere Deconectare-Peer DPR 282
Deconectați-Răspundeți de la egal la egal DPA 282
Re-Auth-Request RAR 258
Re-Auth-Răspuns RAA 258
Sesiune-Încheiere-Cerere STR 275
Sesiune-Încheiere-Răspuns ESTE 275
Credit-Control-Request CCR 272
Credit-Control-Răspuns CCA 272

Perechi valoare-atribut (AVP)

Formatul antetului unui diametru AVP este după cum urmează:

 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
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| Cod AVP |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| Steaguri | |
| VMP xxxxx | AVP Lungime |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| ID-ul furnizorului (dacă AVP specific furnizorului) |
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
| Date AVP ... (lungime variabilă)
+ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + -

Codul AVP, împreună cu câmpul ID furnizor, identifică în mod unic atributul. Primele 256 de numere, împreună cu ID-ul furnizorului setat la zero, sunt rezervate pentru compatibilitatea inversă cu RADIUS . Câmpul AVP Data este format din zero sau mai mulți octeți și conține informații specifice atributelor. Câmpurile Cod AVP și Lungime AVP determină formatul și lungimea câmpului Date.

Numele atributului Cod Tipul de date
Acct-Interim-Interval 85 Nesemnat32
Contabilitate-În timp real-Necesar 483 Enumerate
Acct-Multi-Session-Id 50 UTF8String
Număr de înregistrare contabilă 485 Nesemnat32
Tipul de înregistrare contabilă 480 Enumerate
Contabilitate-sesiune-Id 44 OctetString
Contabilitate-Sub-sesiune-Id 287 Nesemnat64
Acct-Application-Id 259 Nesemnat32
Auth-Application-Id 258 Nesemnat32
Auth-Request-Type 274 Enumerate
Autorizare-Durată de viață 291 Nesemnat32
Perioada Auth-Grace 276 Nesemnat32
Auth-Session-State 277 Enumerate
Re-Auth-Request-Type 285 Enumerate
CC-Type-Request 416 Nesemnat32
CC-Cerere-Număr 415 Nesemnat32
Clasă 25 OctetString
Destinație-Gazdă 293 DiamIdent
Destinație-Tărâm 283 DiamIdent
Deconectare-Cauză 273 Enumerate
E2E-Secvență 300 Grupate
Mesaj de eroare 281 UTF8String
Raportare erori-gazdă 294 DiamIdent
Eveniment-Timestamp 55 Timp
Rezultat experimental 297 Grupate
Cod-rezultat experimental 298 Nesemnat32
AVP eșuat 279 Grupate
Firmware-Revision 267 Nesemnat32
Adresa IP-gazdă 257 Abordare
Inband-Security-Id 299 Nesemnat32
Multi-Round-Time-Out 272 Nesemnat32
Origine-Gazdă 264 DiamIdent
Originea-Tărâm 296 DiamIdent
Origin-State-Id 278 Nesemnat32
Numele produsului 269 UTF8String
Proxy-Host 280 DiamIdent
Informații despre proxy 284 Grupate
Proxy-State 33 OctetString
Redirecționare-gazdă 292 DiamURI
Redirecționare-Utilizare gazdă 261 Enumerate
Redirecționare-Max-Cache-Timp 262 Nesemnat32
Cod rezultat 268 Nesemnat32
Traseu-înregistrare 282 DiamIdent
Sesiune ID 263 UTF8String
Session-Timeout 27 Nesemnat32
Sesiune-legare 270 Nesemnat32
Sesiune-Server-Failover 271 Enumerate
Id-furnizor acceptat 265 Nesemnat32
Încetare-Cauză 295 Enumerate
Nume de utilizator 1 UTF8String
Cod furnizor 266 Nesemnat32
Codul aplicației specifice furnizorului 260 Grupate

linkuri externe

Controlul autorității GND ( DE ) 7625755-1