5.1. Ordering of Flow Specifications (Sortierung von Flow Specifications)
5.1. Ordering of Flow Specifications (Sortierung von Flow Specifications)
Mehr als eine Flow Specification kann auf einen bestimmten Verkehrsfluss zutreffen. Daher ist es notwendig, die Reihenfolge zu definieren, in der Flow Specifications abgeglichen werden und Aktionen auf einen bestimmten Verkehrsfluss angewendet werden. Diese Sortierfunktion ist so beschaffen, dass sie nicht von der Ankunftsreihenfolge der Flow Specification über BGP abhängt und somit im Netzwerk konsistent ist.
Die relative Reihenfolge zweier Flow Specifications wird durch Vergleich ihrer jeweiligen Komponenten bestimmt. Der Algorithmus beginnt mit dem Vergleich der am weitesten links stehenden Komponenten (niedrigster Komponententypwert) der Flow Specifications. Wenn sich die Typen unterscheiden, hat die Flow Specification mit dem niedrigsten numerischen Typwert höhere Priorität (und wird daher vorher abgeglichen) als die Flow Specification, die diesen Komponententyp nicht enthält. Wenn die Komponententypen gleich sind, wird ein typspezifischer Vergleich durchgeführt (siehe unten). Wenn die Typen gleich sind, fährt der Algorithmus mit der nächsten Komponente fort.
Für IP-Präfixwerte (IP-Ziel- oder Quellpräfix) hat das spezifischere Präfix höhere Priorität, wenn eines der beiden zu vergleichenden Präfixe ein spezifischeres Präfix des anderen ist. Andernfalls hat dasjenige mit dem niedrigsten IP-Wert höhere Priorität.
Für alle anderen Komponententypen wird, sofern nicht anders angegeben, der Vergleich durchgeführt, indem die Komponentendaten als binäre Zeichenfolge unter Verwendung der von [ISO_IEC_9899] definierten memcmp()-Funktion verglichen werden. Für Zeichenfolgen gleicher Länge hat die niedrigste Zeichenfolge (memcmp) höhere Priorität. Für Zeichenfolgen unterschiedlicher Länge wird das gemeinsame Präfix verglichen. Wenn das gemeinsame Präfix nicht gleich ist, hat die Zeichenfolge mit dem niedrigsten Präfix höhere Priorität. Wenn das gemeinsame Präfix gleich ist, wird die längere Zeichenfolge als höhere Priorität habend als die kürzere betrachtet.
Der Code in Anhang A zeigt eine Python3-Implementierung des Vergleichsalgorithmus. Der vollständige Code wurde mit Python 3.6.3 getestet und kann unter <https://github.com/stoffi92/rfc5575bis/tree/master/flowspec-cmp> abgerufen werden.