Annexe C. Détection des doublons
Annexe C. Détection des doublons
Comme décrit à la section 9.4, la détection des doublons d'enregistrements comptables repose sur les identifiants de session. Les doublons peuvent apparaître pour diverses raisons :
-
Basculement vers un serveur de secours. Lorsqu'une performance proche du temps réel est requise, les seuils de basculement doivent rester bas, ce qui peut augmenter la probabilité de doublons. Le basculement peut survenir côté client ou au sein des agents Diameter.
-
Défaillance d'un client ou d'un agent après l'envoi d'un enregistrement depuis une mémoire non volatile, mais avant la réception d'un ACK de couche application et la suppression de l'enregistrement à envoyer. Cela entraînera une retransmission de l'enregistrement peu après le redémarrage du client ou de l'agent.
-
Doublons reçus des passerelles RADIUS. Comme le comportement de retransmission de RADIUS n'est pas défini dans [RFC2865], la probabilité de duplication varie selon l'implémentation.
-
Problèmes d'implémentation et mauvaise configuration.
Le drapeau T indique un événement de retransmission au niveau application, par exemple dû au basculement vers un serveur de secours. Il n'est défini que pour les messages de requête envoyés par les clients ou agents Diameter. Par exemple, après un redémarrage, un client peut ignorer s'il a déjà tenté d'envoyer les enregistrements comptables en mémoire non volatile avant le redémarrage. Les serveurs Diameter PEUVENT utiliser le drapeau T comme aide pour traiter les requêtes et détecter les messages dupliqués. Toutefois, les serveurs qui le font DOIVENT garantir que les doublons sont trouvés même lorsque la première requête transmise arrive au serveur après la requête retransmise. Il ne peut être utilisé que lorsqu'aucune réponse n'a été reçue du serveur pour une requête et que la requête est renvoyée (par exemple, basculement vers un pair de secours, rétablissement du pair principal, ou renvoi par le client d'un enregistrement stocké depuis la mémoire non volatile après redémarrage d'un client ou d'un agent).
Dans certains cas, le serveur comptable Diameter peut retarder la détection des doublons et le traitement des enregistrements jusqu'à une phase de post-traitement. Les enregistrements sont alors souvent triés selon le User-Name inclus, et l'élimination des doublons est aisée. Dans d'autres situations, une détection en temps réel peut être nécessaire, par exemple lorsque des plafonds de crédit s'appliquent ou lorsqu'une détection de fraude en temps réel est souhaitée.
En général, seule la génération de doublons due au basculement ou au renvoi d'enregistrements en stockage non volatile peut être détectée de façon fiable par les clients ou agents Diameter. Dans de tels cas, le client ou l'agent Diameter peut marquer le message comme doublon possible en positionnant le drapeau T. Comme le serveur Diameter est responsable de la détection des doublons, il peut choisir d'utiliser ou non le drapeau T pour optimiser la détection. Comme le drapeau T n'affecte pas l'interopérabilité et que certains serveurs peuvent ne pas en avoir besoin, la génération du drapeau T est REQUISE pour les clients et agents Diameter, mais les serveurs Diameter PEUVENT l'implémenter.
À titre d'exemple, on peut en général supposer que les doublons apparaissent dans une fenêtre temporelle correspondant à la plus longue partition réseau ou panne d'équipement enregistrée, peut-être un jour. Seuls les enregistrements dans cette fenêtre doivent donc être examinés en arrière. Ensuite, des techniques de hachage ou d'autres mécanismes, comme l'usage du drapeau T dans les messages reçus, peuvent éviter une recherche exhaustive dans cet ensemble sauf cas rares.
Voici un exemple d'utilisation possible du drapeau T par le serveur pour détecter les requêtes dupliquées.
Un serveur Diameter PEUT vérifier le drapeau T du message reçu pour déterminer si l'enregistrement est un doublon possible. Si le drapeau T est défini dans la requête, le serveur recherche un doublon dans une fenêtre temporelle de duplication configurable vers l'arrière et vers l'avant. Cela limite la recherche en base aux enregistrements où le drapeau T est défini. Dans un réseau bien géré, les partitions réseau et les pannes d'équipement sont sans doute rares, ce qui représente une optimisation substantielle du processus de détection des doublons. Lors d'un basculement, l'enregistrement d'origine peut être reçu après celui marqué par le drapeau T, en raison des différences de délais réseau sur le chemin entre la transmission d'origine et la transmission dupliquée. La probabilité augmente lorsque l'intervalle de basculement diminue. Pour détecter les doublons hors ordre, le serveur Diameter devrait utiliser des fenêtres temporelles arrière et avant lors du contrôle des requêtes marquées par le drapeau T. Par exemple, pour laisser le temps à l'enregistrement d'origine de quitter le réseau et d'être enregistré par le serveur comptable, le serveur Diameter peut retarder le traitement des enregistrements avec le drapeau T jusqu'à ce qu'une durée TIME_WAIT + RECORD_PROCESSING_TIME se soit écoulée après la fermeture de la connexion de transport d'origine. Après cette période, il peut comparer les enregistrements marqués par le drapeau T à la base de données avec une assurance relative que les enregistrements d'origine, s'ils ont été envoyés, ont été reçus et enregistrés.