Zum Hauptinhalt springen

8. Implementation Considerations (Implementierungsüberlegungen)

8. Implementation Considerations (Implementierungsüberlegungen)

Der Zieladressauswahlalgorithmus benötigt Informationen über potenzielle Quelladressen. Eine mögliche Implementierungsstrategie besteht darin, dass getaddrinfo() mit einer Liste von Zieladressen zur Netzwerkschicht aufruft, die Liste in der Netzwerkschicht mit vollem aktuellen Wissen über verfügbare Quelladressen sortiert und die sortierte Liste an getaddrinfo() zurückgibt. Dies ist einfach und liefert die besten Ergebnisse, führt aber den Overhead eines weiteren Systemaufrufs ein. Eine Möglichkeit, diesen Overhead zu reduzieren, besteht darin, die sortierte Adressliste im Resolver zwischenzuspeichern, so dass nachfolgende Aufrufe für denselben Namen die Liste nicht neu sortieren müssen.

Eine andere Implementierungsstrategie besteht darin, zur Netzwerkschicht aufzurufen, um Quelladressinformationen abzurufen, und dann die Adressliste direkt im Kontext von getaddrinfo() zu sortieren. Um den Overhead bei diesem Ansatz zu reduzieren, können die Quelladressinformationen zwischengespeichert werden, wodurch der Overhead des Abrufens über mehrere Aufrufe von getaddrinfo() amortisiert wird. Bei diesem Ansatz könnte die Implementierung keine Kenntnis der ausgehenden Schnittstelle für jedes Ziel haben, daher KANN sie eine lockerere Definition der Kandidatenmenge während der Zieladressordnung verwenden.

In jedem Fall, wenn die Implementierung zwischengespeicherte und möglicherweise veraltete Informationen in ihrer Implementierung der Zieladressauswahl verwendet, oder wenn die Ordnung einer zwischengespeicherten Liste von Zieladressen möglicherweise veraltet ist, dann MUSS sie sicherstellen, dass die an die Anwendung zurückgegebene Zieladressordnung nicht mehr als eine Sekunde veraltet ist. Zum Beispiel könnte eine Implementierung einen Systemaufruf durchführen, um zu prüfen, ob sich Routing-Tabelleneinträge, Quelladresszuweisungen oder Präfix-Richtlinientabelleneinträge, die diese Algorithmen beeinflussen könnten, geändert haben. Eine andere Strategie besteht darin, einen Invalidierungszähler zu verwenden, der bei jeder Änderung eines zugrunde liegenden Zustands inkrementiert wird. Durch Zwischenspeichern des aktuellen Invalidierungszählerwerts mit abgeleitetem Zustand und späteren Vergleich mit dem aktuellen Wert könnte die Implementierung erkennen, ob der abgeleitete Zustand möglicherweise veraltet ist.