Appendice C. Rilevamento dei duplicati
Appendice C. Rilevamento dei duplicati
Come descritto nella Sezione 9.4, il rilevamento dei duplicati dei record di accounting si basa sugli identificatori di sessione. I duplicati possono comparire per vari motivi:
-
Failover su un server alternativo. Quando è richiesta una prestazione vicina al tempo reale, le soglie di failover devono restare basse, il che può aumentare la probabilità di duplicati. Il failover può avvenire sul client o all'interno degli agent Diameter.
-
Guasto di un client o agente dopo l'invio di un record dalla memoria non volatile, ma prima della ricezione di un ACK a livello applicazione e della cancellazione del record da inviare. Ciò comporterà la ritrasmissione del record poco dopo il riavvio del client o dell'agente.
-
Duplicati ricevuti dai gateway RADIUS. Poiché il comportamento di ritrasmissione di RADIUS non è definito in [RFC2865], la probabilità di duplicazione varia secondo l'implementazione.
-
Problemi di implementazione e errata configurazione.
Il flag T è usato come indicazione di un evento di ritrasmissione a livello applicazione, ad esempio a causa del failover su un server alternativo. È definito solo per i messaggi di richiesta inviati da client o agent Diameter. Ad esempio, dopo un riavvio, un client potrebbe non sapere se ha già tentato di inviare i record di accounting nella memoria non volatile prima del riavvio. I server Diameter POSSONO usare il flag T come ausilio nell'elaborazione delle richieste e nel rilevamento di messaggi duplicati. Tuttavia, i server che lo fanno DEVONO garantire che i duplicati siano trovati anche quando la prima richiesta trasmessa arriva al server dopo quella ritrasmessa. Può essere usato solo quando non è stata ricevuta alcuna risposta dal server per una richiesta e la richiesta viene inviata di nuovo (ad esempio per failover su un peer alternativo, ripristino del peer primario o reinvio da parte del client di un record memorizzato dalla memoria non volatile dopo il riavvio di un client o agente).
In alcuni casi, il server di accounting Diameter può ritardare il rilevamento dei duplicati e l'elaborazione dei record fino a una fase di post-elaborazione. A quel punto i record saranno probabilmente ordinati in base al User-Name incluso e l'eliminazione dei duplicati è semplice. In altre situazioni può essere necessario un rilevamento in tempo reale dei duplicati, ad esempio quando sono imposti limiti di credito o si desidera il rilevamento delle frodi in tempo reale.
In generale, solo la generazione di duplicati dovuta al failover o al reinvio di record in archiviazione non volatile può essere rilevata in modo affidabile dai client o agent Diameter. In tali casi, il client o l'agent Diameter può contrassegnare il messaggio come possibile duplicato impostando il flag T. Poiché il server Diameter è responsabile del rilevamento dei duplicati, può scegliere se usare il flag T per ottimizzare il rilevamento. Poiché il flag T non influisce sull'interoperabilità e alcuni server potrebbero non averne bisogno, la generazione del flag T è RICHIESTA per client e agent Diameter, ma i server Diameter POSSONO implementarla.
Come esempio, di solito si può presumere che i duplicati compaiano entro una finestra temporale pari alla più lunga partizione di rete o guasto di dispositivo registrata, forse un giorno. Quindi solo i record in questa finestra devono essere esaminati all'indietro. In secondo luogo, tecniche di hashing o altri schemi, come l'uso del flag T nei messaggi ricevuti, possono eliminare la necessità di una ricerca completa in questo insieme salvo casi rari.
Di seguito un esempio di come il server può usare il flag T per rilevare richieste duplicate.
Un server Diameter PUÒ controllare il flag T del messaggio ricevuto per determinare se il record è un possibile duplicato. Se il flag T è impostato nella richiesta, il server cerca un duplicato entro una finestra temporale di duplicazione configurabile all'indietro e in avanti. Ciò limita la ricerca nel database ai record in cui il flag T è impostato. In una rete ben gestita, partizioni di rete e guasti dei dispositivi saranno presumibilmente eventi rari, quindi questo approccio rappresenta un'ottimizzazione sostanziale del processo di rilevamento dei duplicati. Durante il failover, è possibile che il record originale arrivi dopo quello contrassegnato con il flag T, a causa delle differenze nei ritardi di rete lungo il percorso tra trasmissione originale e duplicata. La probabilità aumenta al diminuire dell'intervallo di failover. Per rilevare duplicati fuori ordine, il server Diameter dovrebbe usare finestre temporali all'indietro e in avanti quando esegue il controllo dei duplicati per la richiesta contrassegnata con T. Ad esempio, per concedere tempo all'uscita del record originale dalla rete e alla sua registrazione sul server di accounting, il server Diameter può ritardare l'elaborazione dei record con flag T fino a che non è trascorso un periodo TIME_WAIT + RECORD_PROCESSING_TIME dopo la chiusura della connessione di trasporto originale. Dopo tale periodo, può confrontare i record contrassegnati con T con il database con relativa certezza che i record originali, se inviati, siano stati ricevuti e registrati.