11. Receiving Trickled Candidates (Empfangen getrickleter Kandidaten)
Zu jedem Zeitpunkt während einer ICE-Sitzung kann ein Trickle-ICE-Agent neue Kandidaten vom entfernten Agent empfangen, aus denen er versuchen wird, ein Kandidatenpaar zu bilden; dies funktioniert wie in der ICE-Spezifikation [RFC8445] beschrieben, mit den folgenden Bedingungen:
-
Der Agent überprüft, ob derzeit lokale Kandidaten für denselben Stream und dieselbe Komponente bekannt sind. Wenn nicht, fügt der Agent den neuen Kandidaten lediglich zur Liste der entfernten Kandidaten hinzu (ohne ihn zu paaren).
-
Andernfalls, wenn der Agent bereits einen oder mehrere lokale Kandidaten für diesen Stream und diese Komponente gesammelt hat, versucht er, den neuen entfernten Kandidaten zu paaren, wie in der ICE-Spezifikation [RFC8445] beschrieben.
-
Wenn ein neu gebildetes Paar einen lokalen Kandidaten hat, dessen Typ serverreflexiv (server-reflexive) ist, muss (MUST) der Agent den lokalen Kandidaten durch seine Basis ersetzen, bevor er die Redundanzprüfung im nächsten Schritt abschließt.
-
Der Agent beschneidet redundante Paare wie unten beschrieben, überprüft jedoch vorhandene Paare nur, wenn sie einen Zustand Wartend (Waiting) oder Eingefroren (Frozen) haben; dies vermeidet das Entfernen von Paaren, für die Konnektivitätsprüfungen laufen (ein Zustand In Bearbeitung (In-Progress)) oder für die Konnektivitätsprüfungen bereits ein eindeutiges Ergebnis erbracht haben (ein Zustand Erfolgreich (Succeeded) oder Fehlgeschlagen (Failed)).
A. Wenn der Agent eine Redundanz zwischen zwei Paaren findet und eines dieser Paare einen neu empfangenen entfernten Kandidaten enthält, dessen Typ peer-reflexiv ist, sollte (SHOULD) der Agent das Paar verwerfen, das diesen Kandidaten enthält, die Priorität des vorhandenen Paares auf die Priorität des verworfenen Paares setzen und die Checkliste neu sortieren. (Diese Richtlinie hilft, Probleme mit entfernten peer-reflexiven Kandidaten zu beseitigen, für die eine STUN-Binding-Anfrage empfangen wird, bevor die Signalisierung des Kandidaten zum empfangenden Agent getricklet wird, wie z. B. eine unterschiedliche Ansicht der Paar-Prioritäten zwischen dem lokalen Agent und dem entfernten Agent, da derselbe Kandidat von einem Agent als peer-reflexiv und vom anderen Agent als serverreflexiv wahrgenommen werden könnte.)
B. Der Agent wendet dann die in Abschnitt 6.1.2.4 von [RFC8445] definierten Regeln an.
-
Wenn nach Abschluss der relevanten Redundanztests die Checkliste, zu der das Paar hinzugefügt werden soll, bereits die maximale Anzahl von Kandidatenpaaren enthält (standardmäßig 100 gemäß [RFC8445]), sollte (SHOULD) der Agent alle Paare im Zustand Fehlgeschlagen verwerfen, um Platz für das neue Paar zu schaffen. Wenn es keine solchen Paare gibt, sollte (SHOULD) der Agent ein Paar mit niedrigerer Priorität als das neue Paar verwerfen, um Platz für das neue Paar zu schaffen, bis die Anzahl der Paare gleich der maximalen Anzahl von Paaren ist. Diese Verarbeitung ist konsistent mit Abschnitt 6.1.2.5 von [RFC8445].