5.1. Fields of a PDU (Campi di una PDU)
5.1 Fields of a PDU (Campi di una PDU)
Le PDU contengono i seguenti elementi di dati:
Protocol Version (Versione del protocollo): Un intero senza segno a 8 bit, attualmente 1, che indica la versione di questo protocollo.
PDU Type (Tipo di PDU): Un intero senza segno a 8 bit che indica il tipo di PDU, ad esempio prefisso IPv4.
Serial Number (Numero di serie): Il numero di serie della cache RPKI quando questo insieme di PDU è stato ricevuto dal server cache upstream o raccolto dal RPKI globale. La cache incrementa il suo numero di serie quando completa un aggiornamento rigorosamente validato dalla cache padre o dal RPKI globale.
Session ID (ID di sessione): Un intero senza segno a 16 bit. Quando un server cache si avvia, genera un ID di sessione per identificare l'istanza della cache e lo lega alla sequenza di numeri di serie che questa istanza di cache genererà. Questo consente al router di riprendere una sessione fallita sapendo che i numeri di serie che sta utilizzando sono commensurabili con i numeri di serie della cache. Se in qualsiasi momento dopo la negoziazione della versione del protocollo (sezione 7), il router o la cache scopre che il valore dell'ID di sessione differisce da quello dell'altra parte, la parte che rileva la discrepanza DEVE terminare immediatamente la sessione con una PDU Error Report con codice 0 ("Corrupt Data"), e il router DEVE eliminare tutti i dati appresi da quella cache.
Si noti che una sessione è specifica per una particolare versione del protocollo. Cioè, se un server cache supporta più versioni di questo protocollo, utilizza casualmente lo stesso valore di ID di sessione per più versioni del protocollo, e inoltre utilizza casualmente lo stesso valore di numero di serie per due o più sessioni che utilizzano lo stesso ID di sessione ma valori di versione del protocollo diversi, i numeri di serie non sono commensurabili. Il test completo per determinare se i numeri di serie sono commensurabili richiede il confronto di versione del protocollo, ID di sessione e numero di serie. Per ridurre il rischio di confusione, un server cache non dovrebbe utilizzare lo stesso ID di sessione su più versioni del protocollo, ma anche se lo fa, un router DEVE trattare le sessioni con campi di versione del protocollo diversi come sessioni separate, anche se hanno casualmente lo stesso ID di sessione.
Se una cache riutilizza erroneamente un ID di sessione al punto che il router non si accorge che la sessione è cambiata (il vecchio ID di sessione e il nuovo ID di sessione hanno lo stesso valore numerico), il router potrebbe confondersi sul contenuto della cache. Il tempo necessario al router per scoprire di essere confuso dipende dal fatto che anche il numero di serie venga riutilizzato. Se i numeri di serie nella vecchia sessione e nella nuova sessione differiscono sufficientemente, la cache risponderà alla Serial Query del router con un Cache Reset, che risolverà il problema. Tuttavia, se i numeri di serie sono vicini, la cache potrebbe rispondere con una Cache Response, che potrebbe non essere sufficiente per sincronizzare il router con la cache. In questo caso, il router probabilmente (ma non certamente) rileverà qualche differenza tra lo stato che la cache si aspetta e il suo stato. Ad esempio, la Cache Response potrebbe dire al router di eliminare un record che il router non possiede, o potrebbe dire al router di aggiungere un record che il router già possiede. In questo caso, il router rileverà l'errore e resetterà la sessione. Un caso in cui il router potrebbe rimanere non sincronizzato è quando nulla nella Cache Response contraddice i dati che il router attualmente possiede.
L'utilizzo di uno storage persistente per l'ID di sessione o l'utilizzo di uno schema basato su orologio per generare l'ID di sessione dovrebbe evitare il rischio di collisioni di ID di sessione.
L'ID di sessione può essere un valore pseudocasuale, un valore strettamente crescente (se la cache ha uno storage affidabile), ecc. Un valore di timestamp in secondi epoch (come la funzione POSIX time()) costituisce un eccellente valore di ID di sessione.
Length (Lunghezza): Un intero senza segno a 32 bit il cui valore è il numero di byte nell'intera PDU, incluso l'header di 8 byte contenente il campo lunghezza.
Flags (Flag): Il bit meno significativo del campo flag è 1 per un annuncio e 0 per una revoca. Per le PDU di prefisso (IPv4 o IPv6), questo flag indica se questa PDU sta annunciando un nuovo diritto di annuncio di prefisso o sta revocando un diritto precedentemente annunciato; una revoca elimina effettivamente una PDU di prefisso precedentemente annunciata con esattamente gli stessi prefisso, lunghezza, lunghezza massima e numero di sistema autonomo (ASN). Analogamente, per le PDU Router Key, questo flag indica se questa PDU sta annunciando una nuova chiave del router o sta eliminando una PDU Router Key precedentemente annunciata con esattamente lo stesso numero AS, subjectKeyIdentifier e subjectPublicKeyInfo.
I bit rimanenti nel campo flag sono riservati per uso futuro. Nella versione 1 del protocollo, DEVONO essere zero in trasmissione e DEVONO essere ignorati in ricezione.
Prefix Length (Lunghezza del prefisso): Un intero senza segno a 8 bit che indica il prefisso più corto consentito per l'elemento prefisso.
Max Length (Lunghezza massima): Un intero senza segno a 8 bit che indica il prefisso più lungo consentito per l'elemento prefisso. Questo non può essere inferiore all'elemento lunghezza del prefisso.
Prefix (Prefisso): Il prefisso IPv4 o IPv6 della ROA.
Autonomous System Number (Numero di sistema autonomo): Un intero senza segno a 32 bit che indica l'ASN autorizzato ad annunciare il prefisso o associato alla chiave del router.
Subject Key Identifier (Identificatore della chiave del soggetto): Il valore Subject Key Identifier (SKI) di 20 byte per la chiave del router, come descritto in [RFC6487].
Subject Public Key Info (Informazioni sulla chiave pubblica del soggetto): Il valore subjectPublicKeyInfo per la chiave del router, come descritto in [RFC8208]. Questa è la codifica ASN.1 DER completa di subjectPublicKeyInfo, incluso il tag ASN.1 e il valore di lunghezza della SEQUENCE subjectPublicKeyInfo.
Refresh Interval (Intervallo di aggiornamento): L'intervallo tra i normali polling della cache. Vedere sezione 6.
Retry Interval (Intervallo di ripetizione): L'intervallo tra i tentativi di polling della cache dopo il fallimento di un polling della cache. Vedere sezione 6.
Expire Interval (Intervallo di scadenza): L'intervallo per cui i dati ottenuti dalla cache rimangono validi in assenza di un successivo polling della cache riuscito. Vedere sezione 6.