Aller au contenu principal

5.1. Fields of a PDU (Champs d'une PDU)

5.1 Fields of a PDU (Champs d'une PDU)

Les PDU contiennent les éléments de données suivants:

Protocol Version (Version du protocole): Un entier non signé de 8 bits, actuellement 1, indiquant la version de ce protocole.

PDU Type (Type de PDU): Un entier non signé de 8 bits indiquant le type de PDU, par exemple un préfixe IPv4.

Serial Number (Numéro de série): Le numéro de série du cache RPKI lorsque cet ensemble de PDU a été reçu du serveur de cache en amont ou collecté à partir du RPKI global. Le cache incrémente son numéro de série lorsqu'il termine une mise à jour strictement validée à partir du cache parent ou du RPKI global.

Session ID (ID de session): Un entier non signé de 16 bits. Lorsqu'un serveur de cache démarre, il génère un ID de session pour identifier l'instance du cache et le lie à la séquence de numéros de série que cette instance de cache générera. Cela permet au routeur de reprendre une session échouée en sachant que les numéros de série qu'il utilise sont commensurables avec les numéros de série du cache. Si, à tout moment après la négociation de version du protocole (section 7), le routeur ou le cache découvre que la valeur de l'ID de session diffère de celle de l'autre partie, la partie détectant l'incompatibilité DOIT immédiatement terminer la session avec une PDU Error Report avec le code 0 ("Corrupt Data"), et le routeur DOIT purger toutes les données apprises de ce cache.

Notez qu'une session est spécifique à une version de protocole particulière. C'est-à-dire que si un serveur de cache prend en charge plusieurs versions de ce protocole, utilise par hasard la même valeur d'ID de session pour plusieurs versions de protocole, et utilise en outre par hasard la même valeur de numéro de série pour deux ou plusieurs sessions utilisant le même ID de session mais des valeurs de version de protocole différentes, les numéros de série ne sont pas commensurables. Le test complet pour déterminer si les numéros de série sont commensurables nécessite de comparer la version du protocole, l'ID de session et le numéro de série. Pour réduire le risque de confusion, un serveur de cache ne devrait pas utiliser le même ID de session pour plusieurs versions de protocole, mais même s'il le fait, un routeur DOIT traiter les sessions avec des champs de version de protocole différents comme des sessions distinctes, même si elles ont par hasard le même ID de session.

Si un cache réutilise incorrectement un ID de session au point que le routeur ne réalise pas que la session a changé (l'ancien ID de session et le nouvel ID de session ont la même valeur numérique), le routeur peut devenir confus quant au contenu du cache. Le temps nécessaire au routeur pour découvrir qu'il est confus dépend de la réutilisation ou non du numéro de série. Si les numéros de série de l'ancienne session et de la nouvelle session diffèrent suffisamment, le cache répondra à la Serial Query du routeur avec un Cache Reset, ce qui résoudra le problème. Cependant, si les numéros de série sont proches, le cache peut répondre avec une Cache Response, qui peut ne pas être suffisante pour synchroniser le routeur avec le cache. Dans ce cas, le routeur détectera probablement (mais pas certainement) une certaine différence entre l'état que le cache attend et son propre état. Par exemple, la Cache Response pourrait indiquer au routeur de supprimer un enregistrement que le routeur ne détient pas, ou pourrait indiquer au routeur d'ajouter un enregistrement que le routeur détient déjà. Dans ce cas, le routeur détectera l'erreur et réinitialisera la session. Un cas où le routeur pourrait rester désynchronisé est lorsque rien dans la Cache Response ne contredit les données que le routeur détient actuellement.

L'utilisation d'un stockage persistant pour l'ID de session ou l'utilisation d'un schéma basé sur l'horloge pour générer l'ID de session devrait éviter le risque de collisions d'ID de session.

L'ID de session peut être une valeur pseudo-aléatoire, une valeur strictement croissante (si le cache dispose d'un stockage fiable), etc. Une valeur d'horodatage en secondes d'époque (telle que la fonction POSIX time()) constitue une excellente valeur d'ID de session.

Length (Longueur): Un entier non signé de 32 bits dont la valeur est le nombre d'octets dans l'ensemble de la PDU, y compris l'en-tête de 8 octets contenant le champ de longueur.

Flags (Drapeaux): Le bit de poids faible du champ de drapeaux est 1 pour une annonce et 0 pour un retrait. Pour les PDU de préfixe (IPv4 ou IPv6), ce drapeau indique si cette PDU annonce un nouveau droit d'annonce de préfixe ou retire un droit précédemment annoncé; un retrait supprime effectivement une PDU de préfixe précédemment annoncée avec exactement les mêmes préfixe, longueur, longueur maximale et numéro de système autonome (ASN). De même, pour les PDU Router Key, ce drapeau indique si cette PDU annonce une nouvelle clé de routeur ou supprime une PDU Router Key précédemment annoncée avec exactement les mêmes numéro AS, subjectKeyIdentifier et subjectPublicKeyInfo.

Les bits restants du champ de drapeaux sont réservés pour une utilisation future. Dans la version 1 du protocole, ils DOIVENT être zéro lors de la transmission et DOIVENT être ignorés lors de la réception.

Prefix Length (Longueur de préfixe): Un entier non signé de 8 bits indiquant le préfixe le plus court autorisé pour l'élément de préfixe.

Max Length (Longueur maximale): Un entier non signé de 8 bits indiquant le préfixe le plus long autorisé pour l'élément de préfixe. Cela ne peut pas être inférieur à l'élément de longueur de préfixe.

Prefix (Préfixe): Le préfixe IPv4 ou IPv6 de la ROA.

Autonomous System Number (Numéro de système autonome): Un entier non signé de 32 bits indiquant l'ASN autorisé à annoncer le préfixe ou associé à la clé de routeur.

Subject Key Identifier (Identifiant de clé de sujet): La valeur Subject Key Identifier (SKI) de 20 octets pour la clé de routeur, comme décrit dans [RFC6487].

Subject Public Key Info (Informations de clé publique de sujet): La valeur subjectPublicKeyInfo pour la clé de routeur, comme décrit dans [RFC8208]. Il s'agit de l'encodage ASN.1 DER complet de subjectPublicKeyInfo, y compris la balise ASN.1 et la valeur de longueur de la SEQUENCE subjectPublicKeyInfo.

Refresh Interval (Intervalle de rafraîchissement): L'intervalle entre les sondages de cache normaux. Voir section 6.

Retry Interval (Intervalle de nouvelle tentative): L'intervalle entre les nouvelles tentatives de sondage de cache après l'échec d'un sondage de cache. Voir section 6.

Expire Interval (Intervalle d'expiration): L'intervalle pendant lequel les données obtenues du cache restent valides en l'absence d'un sondage de cache ultérieur réussi. Voir section 6.