Aller au contenu principal

6. Sélection d'adresse de destination

L'algorithme de sélection d'adresse de destination prend une liste d'adresses de destination et trie les adresses pour produire une nouvelle liste. Il est spécifié ici en termes de comparaison par paires d'adresses DA et DB, où DA apparaît avant DB dans la liste originale.

L'algorithme trie ensemble à la fois les adresses IPv6 et IPv4. Pour trouver les attributs d'une adresse IPv4 dans la table de politique, l'adresse IPv4 DOIT être représentée comme une adresse mappée IPv4.

Nous écrivons Source(D) pour indiquer l'adresse source sélectionnée pour une destination D. Pour les adresses IPv6, la section précédente spécifie l'algorithme de sélection d'adresse source. La sélection d'adresse source pour les adresses IPv4 n'est pas spécifiée dans ce document.

Nous disons que Source(D) est indéfini s'il n'y a pas d'adresse source disponible pour la destination D. Pour les adresses IPv6, c'est seulement le cas si CandidateSource(D) est l'ensemble vide.

La comparaison par paires d'adresses de destination consiste en dix règles, qui DOIVENT être appliquées dans l'ordre. Si une règle détermine un résultat, alors les règles restantes ne sont pas pertinentes et DOIVENT être ignorées. Les règles suivantes agissent comme des départages pour les règles précédentes. Voir la section précédente pour une description plus longue de la façon dont les règles de départage de comparaison par paires peuvent être utilisées pour trier une liste.

Règle 1: Éviter les destinations inutilisables.
Si DB est connue comme étant injoignable ou si Source(DB) est indéfini, alors préférer DA. De même, si DA est connue comme étant injoignable ou si Source(DA) est indéfini, alors préférer DB.

Discussion: Une implémentation pourrait savoir qu'une destination particulière est injoignable de plusieurs façons. Par exemple, la destination pourrait être atteinte via une interface réseau qui est actuellement débranchée. Par exemple, l'implémentation pourrait retenir des informations de la détection d'injoignabilité de voisin [RFC4861] pendant une certaine période. Dans tous les cas, la détermination d'injoignabilité aux fins de cette règle est dépendante de l'implémentation.

Règle 2: Préférer la portée correspondante.
Si Scope(DA) = Scope(Source(DA)) et Scope(DB) <> Scope(Source(DB)), alors préférer DA. De même, si Scope(DA) <> Scope(Source(DA)) et Scope(DB) = Scope(Source(DB)), alors préférer DB.

Règle 3: Éviter les adresses dépréciées.
Si Source(DA) est dépréciée et Source(DB) ne l'est pas, alors préférer DB. De même, si Source(DA) n'est pas dépréciée et Source(DB) est dépréciée, alors préférer DA.

Règle 4: Préférer les adresses personnelles.
Si Source(DA) est simultanément une adresse personnelle et une adresse de correspondance et Source(DB) ne l'est pas, alors préférer DA. De même, si Source(DB) est simultanément une adresse personnelle et une adresse de correspondance et Source(DA) ne l'est pas, alors préférer DB.

Si Source(DA) est juste une adresse personnelle et Source(DB) est juste une adresse de correspondance, alors préférer DA. De même, si Source(DA) est juste une adresse de correspondance et Source(DB) est juste une adresse personnelle, alors préférer DB.

Règle 5: Préférer l'étiquette correspondante.
Si Label(Source(DA)) = Label(DA) et Label(Source(DB)) <> Label(DB), alors préférer DA. De même, si Label(Source(DA)) <> Label(DA) et Label(Source(DB)) = Label(DB), alors préférer DB.

Règle 6: Préférer la précédence plus élevée.
Si Precedence(DA) > Precedence(DB), alors préférer DA. De même, si Precedence(DA) < Precedence(DB), alors préférer DB.

Règle 7: Préférer le transport natif.
Si DA est atteinte via un mécanisme de transition encapsulant (par exemple, IPv6 dans IPv4) et DB ne l'est pas, alors préférer DB. De même, si DB est atteinte via encapsulation et DA ne l'est pas, alors préférer DA.

Discussion: Le protocole de déploiement rapide IPv6 sur infrastructures IPv4 (6rd) [RFC5969], le protocole d'adressage automatique de tunnel intra-site (ISATAP) [RFC5214] et les tunnels configurés [RFC4213] sont des exemples de mécanismes de transition encapsulants pour lesquels l'adresse de destination n'a pas de préfixe spécifique et ne peut donc pas se voir assigner une précédence inférieure dans la table de politique. Une implémentation PEUT généraliser cette règle en utilisant un concept de préférence d'interface et en donnant aux interfaces virtuelles (comme les interfaces encapsulantes IPv6-dans-IPv4) une préférence inférieure aux interfaces natives (comme les interfaces ethernet).

Règle 8: Préférer la portée plus petite.
Si Scope(DA) < Scope(DB), alors préférer DA. De même, si Scope(DA) > Scope(DB), alors préférer DB.

Règle 9: Utiliser le préfixe correspondant le plus long.
Lorsque DA et DB appartiennent à la même famille d'adresses (les deux sont IPv6 ou les deux sont IPv4): Si CommonPrefixLen(Source(DA), DA) > CommonPrefixLen(Source(DB), DB), alors préférer DA. De même, si CommonPrefixLen(Source(DA), DA) < CommonPrefixLen(Source(DB), DB), alors préférer DB.

Règle 10: Sinon, laisser l'ordre inchangé.
Si DA précédait DB dans la liste originale, préférer DA. Sinon, préférer DB.

Les règles 9 et 10 PEUVENT être remplacées si l'implémentation a d'autres moyens de trier les adresses de destination. Par exemple, si l'implémentation sait d'une manière ou d'une autre quelles adresses de destination résulteront en la "meilleure" performance de communication.