Zum Hauptinhalt springen

8. Concluding ICE Processing (Abschluss der ICE-Verarbeitung)

Dieser Abschnitt beschreibt, wie ein Agent ICE abschließt.

8.1. Procedures for Full Implementations (Verfahren für vollständige Implementierungen)

Der Abschluss von ICE umfasst die Nominierung von Paaren durch den kontrollierenden Agenten und die Aktualisierung der Zustandsmaschinerie.

8.1.1. Nominating Pairs (Nominierung von Paaren)

Der kontrollierende Agent nominiert Paare, die von ICE ausgewählt werden sollen, indem er eine von zwei Techniken verwendet: reguläre Nominierung oder aggressive Nominierung. Wenn sein Peer eine Lite-Implementierung hat, MUST ein Agent einen regulären Nominierungsalgorithmus verwenden. Wenn sein Peer ICE-Optionen verwendet (vorhanden in einem ice-options-Attribut vom Peer), die der Agent nicht versteht, MUST der Agent einen regulären Nominierungsalgorithmus verwenden. Wenn sein Peer eine vollständige Implementierung ist und keine ICE-Optionen verwendet oder ICE-Optionen verwendet, die vom Agenten verstanden werden, MAY der Agent entweder den aggressiven oder den regulären Nominierungsalgorithmus verwenden. Der reguläre Algorithmus wird jedoch RECOMMENDED, da er eine größere Stabilität bietet.

8.1.1.1. Regular Nomination (Reguläre Nominierung)

Bei der regulären Nominierung lässt der Agent eine bestimmte Anzahl von Prüfungen abschließen, von denen jede das USE-CANDIDATE-Attribut weglässt. Sobald eine oder mehrere Prüfungen für eine Komponente eines Medienstroms erfolgreich abgeschlossen sind, werden gültige Paare generiert und zur gültigen Liste hinzugefügt. Der Agent lässt die Prüfungen fortsetzen, bis ein bestimmtes Abbruchkriterium erfüllt ist, und wählt dann unter den gültigen Paaren basierend auf einem Bewertungskriterium aus. Die Kriterien für das Stoppen der Prüfungen und für die Bewertung der gültigen Paare sind vollständig eine Frage der lokalen Optimierung.

Wenn der kontrollierende Agent das gültige Paar auswählt, wiederholt er die Prüfung, die dieses gültige Paar erzeugt hat (indem er das Paar, das die Prüfung generiert hat, in die Warteschlange für getriggerte Prüfungen einreiht), diesmal mit dem USE-CANDIDATE-Attribut. Diese Prüfung sollte erfolgreich sein (da die vorherige erfolgreich war), was dazu führt, dass das Nominated-Flag dieses und nur dieses Paares gesetzt wird. Folglich gibt es für jede Komponente nur ein einziges nominiertes Paar in der gültigen Liste, und wenn der Zustand der Checkliste auf abgeschlossen wechselt, wird genau dieses Paar von ICE für das Senden und Empfangen von Medien für diese Komponente ausgewählt.

Die reguläre Nominierung bietet die größte Flexibilität, da der Agent die Kontrolle über die Abbruch- und Auswahlkriterien für Prüfungen hat. Die einzige Anforderung ist, dass der Agent schließlich ein und nur ein Kandidatenpaar auswählen und eine Prüfung für dieses Paar mit dem vorhandenen USE-CANDIDATE-Attribut generieren MUST. Die reguläre Nominierung verbessert auch die Widerstandsfähigkeit von ICE gegenüber Implementierungsschwankungen (siehe Abschnitt 14). Die reguläre Nominierung ist auch stabiler und ermöglicht es beiden Agenten, sich auf ein einziges Paar für Medien zu einigen, ohne vorübergehende Auswahlen, die beim aggressiven Algorithmus auftreten können. Der Nachteil der regulären Nominierung ist, dass sie garantiert die Latenzen erhöht, da eine zusätzliche Prüfung durchgeführt werden muss.

8.1.1.2. Aggressive Nomination (Aggressive Nominierung)

Bei der aggressiven Nominierung nimmt der kontrollierende Agent das USE-CANDIDATE-Attribut in jede Prüfung auf, die er sendet. Sobald die erste Prüfung für eine Komponente erfolgreich ist, wird sie zur gültigen Liste hinzugefügt und ihr Nominated-Flag gesetzt. Wenn alle Komponenten ein nominiertes Paar in der gültigen Liste haben, können Medien unter Verwendung des nominierten Paares mit der höchsten Priorität zu fließen beginnen. Da der Agent jedoch das USE-CANDIDATE-Attribut in alle seine Prüfungen aufgenommen hat, kann noch eine weitere Prüfung abgeschlossen werden, was dazu führt, dass bei einem anderen gültigen Paar das Nominated-Flag gesetzt wird. ICE wählt immer das nominierte Kandidatenpaar mit der höchsten Priorität aus der gültigen Liste als das für Medien verwendete aus. Folglich kann sich das ausgewählte Paar tatsächlich kurzzeitig ändern, während ICE-Prüfungen abgeschlossen werden, was zu einer Reihe vorübergehender Auswahlen führt, bis es sich stabilisiert.

8.1.2. Updating States (Aktualisierung von Zuständen)

Sowohl für kontrollierende als auch für kontrollierte Agenten hängt der Zustand der ICE-Verarbeitung vom Vorhandensein nominierter Kandidatenpaare in der gültigen Liste und vom Zustand der Checkliste ab. Beachten Sie, dass zu jeder Zeit mehr als einer der folgenden Fälle zutreffen kann:

  • Wenn keine nominierten Paare in der gültigen Liste für einen Medienstrom vorhanden sind und der Zustand der Checkliste Running ist, wird die ICE-Verarbeitung fortgesetzt.

  • Wenn mindestens ein nominiertes Paar in der gültigen Liste für einen Medienstrom vorhanden ist und der Zustand der Checkliste Running ist:

    • Der Agent MUST alle Waiting und Frozen Paare in der Checkliste und der Warteschlange für getriggerte Prüfungen für dieselbe Komponente wie die nominierten Paare für diesen Medienstrom entfernen.

    • Wenn ein In-Progress Paar in der Checkliste für dieselbe Komponente wie ein nominiertes Paar ist, SHOULD der Agent die Neuübertragungen für seine Prüfung einstellen, wenn seine Paarpriorität niedriger ist als das nominierte Paar mit der niedrigsten Priorität für diese Komponente.

  • Sobald mindestens ein nominiertes Paar in der gültigen Liste für jede Komponente mindestens eines Medienstroms vorhanden ist und der Zustand der Checkliste Running ist:

    • Der Agent MUST den Verarbeitungszustand für seine Checkliste für diesen Medienstrom auf Completed ändern.

    • Der Agent MUST weiterhin auf alle Prüfungen antworten, die er möglicherweise noch für diesen Medienstrom empfängt, und MUST getriggerte Prüfungen durchführen, falls dies durch die Verarbeitung von Abschnitt 7.2 erforderlich ist.

    • Der Agent MUST weiterhin alle In-Progress Prüfungen für diese Checkliste neu übertragen.

    • Der Agent MAY mit der Übertragung von Medien für diesen Medienstrom beginnen, wie in Abschnitt 11.1 beschrieben.

  • Sobald der Zustand jeder Checkliste Completed ist:

    • Der Agent setzt den Zustand der ICE-Verarbeitung insgesamt auf Completed.

    • Wenn ein Agent kontrollierend ist, untersucht er das nominierte Kandidatenpaar mit der höchsten Priorität für jede Komponente jedes Medienstroms. Wenn eines dieser Kandidatenpaare von den Standardkandidatenpaaren im jüngsten Angebots-/Antwortaustausch abweicht, MUST der kontrollierende Agent ein aktualisiertes Angebot generieren, wie in Abschnitt 9 beschrieben. Wenn der kontrollierende Agent einen aggressiven Nominierungsalgorithmus verwendet, kann dies zu mehreren aktualisierten Angeboten führen, da sich die für Medien ausgewählten Paare ändern. Ein Agent MAY das Senden des Angebots für ein kurzes Intervall verzögern (eine Sekunde wird RECOMMENDED), um den ausgewählten Paaren zu ermöglichen, sich zu stabilisieren.

  • Wenn der Zustand der Checkliste Failed ist, konnte ICE für diesen Medienstrom nicht abgeschlossen werden. Das korrekte Verhalten hängt vom Zustand der Checklisten für andere Medienströme ab:

    • Wenn alle Checklisten Failed sind, wird die ICE-Verarbeitung insgesamt als im Failed-Zustand betrachtet, und der Agent SHOULD die Sitzung als Fehler betrachten, SHOULD NOT ICE neu starten, und der kontrollierende Agent SHOULD die gesamte Sitzung beenden.

    • Wenn mindestens eine der Checklisten für andere Medienströme Completed ist, SHOULD der kontrollierende Agent den fehlgeschlagenen Medienstrom in seinem aktualisierten Angebot aus der Sitzung entfernen.

    • Wenn keine der Checklisten für andere Medienströme Completed ist, aber mindestens eine Running ist, SHOULD der Agent ICE fortsetzen lassen.

8.2. Procedures for Lite Implementations (Verfahren für Lite-Implementierungen)

Der Abschluss von ICE für eine Lite-Implementierung ist relativ einfach. Es gibt zwei Fälle zu berücksichtigen:

Die Implementierung ist Lite und ihr Peer ist Full.

Die Implementierung ist Lite und ihr Peer ist Lite.

Die Auswirkung des Abschlusses von ICE besteht darin, dass der Agent alle zugewiesenen Host-Kandidaten freigeben kann, die von ICE nicht genutzt wurden, wie in Abschnitt 8.3 beschrieben.

8.2.1. Peer Is Full (Peer ist Full)

In diesem Fall empfängt der Agent Konnektivitätsprüfungen von seinem Peer. Wenn ein Agent eine Konnektivitätsprüfung empfangen hat, die das USE-CANDIDATE-Attribut für jede Komponente eines Medienstroms enthält, wechselt der Zustand der ICE-Verarbeitung für diesen Medienstrom von Running zu Completed. Wenn der Zustand der ICE-Verarbeitung für alle Medienströme Completed ist, ist der Zustand der ICE-Verarbeitung insgesamt Completed.

Die Lite-Implementierung wird niemals selbst feststellen, dass die ICE-Verarbeitung für einen Medienstrom fehlgeschlagen ist; vielmehr wird der Full-Peer diese Feststellung treffen und dann den fehlgeschlagenen Medienstrom in einem nachfolgenden Angebot entfernen oder neu starten.

8.2.2. Peer Is Lite (Peer ist Lite)

Sobald der Angebots-/Antwortaustausch abgeschlossen ist, untersuchen beide Agenten ihre Kandidaten und die ihres Peers. Für jeden Medienstrom paart jeder Agent seine eigenen Kandidaten mit den Kandidaten seines Peers für diesen Medienstrom. Zwei Kandidaten werden gepaart, wenn sie für dieselbe Komponente sind, dasselbe Transportprotokoll (UDP in dieser Spezifikation) verwenden und aus derselben IP-Adressfamilie (IPv4 oder IPv6) stammen.

  • Wenn es ein einzelnes Paar pro Komponente gibt, wird dieses Paar zur Valid-Liste hinzugefügt. Wenn alle Komponenten für einen Medienstrom ein Paar hatten, wird der Zustand der ICE-Verarbeitung für diesen Medienstrom auf Completed gesetzt. Wenn alle Medienströme Completed sind, wird der Zustand der ICE-Verarbeitung insgesamt auf Completed gesetzt. Dies wird immer der Fall für Implementierungen sein, die nur IPv4 sind.

  • Wenn es mehr als ein Paar pro Komponente gibt:

    • Der Agent MUST ein Paar basierend auf lokaler Richtlinie auswählen. Da dieser Fall nur für IPv6 auftritt, wird RECOMMENDED, dass ein Agent den Verfahren von RFC 3484 [RFC3484] folgt, um ein einzelnes Paar auszuwählen.

    • Der Agent fügt das ausgewählte Paar für jede Komponente zur gültigen Liste hinzu. Wie in Abschnitt 11.1 beschrieben, ermöglicht dies den Beginn des Medienflusses. Es ist jedoch möglich (und tatsächlich wahrscheinlich), dass beide Agenten unterschiedliche Paare gewählt haben.

    • Um dies in Einklang zu bringen, MUST der kontrollierende Agent ein aktualisiertes Angebot senden, wie in Abschnitt 9.1.3 beschrieben, das das remote-candidates-Attribut enthalten wird.

    • Der Agent MUST NOT den Zustand der ICE-Verarbeitung aktualisieren, wenn das Angebot gesendet wird. Wenn dieses nachfolgende Angebot abgeschlossen ist, MUST der kontrollierende Agent den Zustand der ICE-Verarbeitung für alle Medienströme auf Completed und den Zustand der ICE-Verarbeitung insgesamt auf Completed ändern. Die Zustände für den kontrollierten Agenten werden basierend auf der Logik in Abschnitt 9.2.3 gesetzt.

8.3. Freeing Candidates (Freigabe von Kandidaten)

8.3.1. Full Implementation Procedures (Verfahren für vollständige Implementierungen)

Die Verfahren in Abschnitt 8 erfordern, dass ein Agent weiterhin auf STUN-Anfragen hört und weiterhin getriggerte Prüfungen für einen Medienstrom generiert, selbst wenn die Verarbeitung für diesen Strom abgeschlossen ist. Die Regeln in diesem Abschnitt beschreiben, wann es für einen Agenten sicher ist, das Senden oder Empfangen von Prüfungen auf einem Kandidaten einzustellen, der nicht von ICE ausgewählt wurde, und dann den Kandidaten freizugeben.

Wenn ICE mit SIP verwendet wird und ein Angebot an mehrere Empfänger gegabelt wird, läuft ICE parallel und unabhängig mit jedem Antwortenden ab, wobei alle dieselben lokalen Kandidaten verwenden. Sobald die ICE-Verarbeitung für alle Peers für Medienströme, die diese Kandidaten verwenden, den Completed-Zustand erreicht hat, SHOULD der Agent weitere drei Sekunden warten, und dann MAY er aufhören, auf Prüfungen zu antworten oder getriggerte Prüfungen auf diesem Kandidaten zu generieren. Er MAY den Kandidaten zu diesem Zeitpunkt freigeben. Die Freigabe von Server-reflexiven Kandidaten ist niemals explizit; sie geschieht durch das Fehlen eines Keepalives. Die Verzögerung von drei Sekunden behandelt Fälle, in denen aggressive Nominierung verwendet wird und die ausgewählten Paare sich nach Abschluss von ICE schnell ändern können.

8.3.2. Lite Implementation Procedures (Verfahren für Lite-Implementierungen)

Eine Lite-Implementierung MAY Kandidaten, die nicht von ICE ausgewählt wurden, freigeben, sobald die ICE-Verarbeitung für alle Peers für alle Medienströme, die diese Kandidaten verwenden, den Completed-Zustand erreicht hat.