12. Inserting Trickled Candidate Pairs into a Checklist (Einfügen getrickleter Kandidatenpaare in eine Checkliste)
Nachdem der lokale Agent einen Kandidaten getricklet und aus diesem lokalen Kandidaten ein Kandidatenpaar gebildet hat (Abschnitt 9), oder nachdem der entfernte Agent einen getrickleten Kandidaten empfangen und aus diesem entfernten Kandidaten ein Kandidatenpaar gebildet hat (Abschnitt 11), fügt der Trickle-ICE-Agent das neue Kandidatenpaar der Checkliste wie in diesem Abschnitt definiert hinzu.
Um das Verständnis der in diesem Abschnitt definierten Verfahren zu erleichtern, betrachten Sie die folgende tabellarische Darstellung aller Checklisten in einem Agent (beachten Sie, dass anfänglich für eine der Foundations, nämlich f5, keine Kandidatenpaare vorhanden sind):
+=================+====+====+====+====+====+
| | f1 | f2 | f3 | f4 | f5 |
+=================+====+====+====+====+====+
|| s1 (Audio.RTP) | F | F | F | | |
+-----------------+----+----+----+----+----+
|| s2 (Audio.RTCP) | F | F | F | F | |
+-----------------+----+----+----+----+----+
|| s3 (Video.RTP) | F | | | | |
+-----------------+----+----+----+----+----+
|| s4 (Video.RTCP) | F | | | | |
+-----------------+----+----+----+----+----+
Tabelle 1: Beispiel-Checklistenstatus
Jede Zeile in der Tabelle repräsentiert eine Komponente eines bestimmten Datenstroms (z. B. könnten s1 und s2 die RTP- und RTP-Kontrollprotokoll (RTCP)-Komponenten von Audio sein) und ist daher eine einzelne Checkliste im Checklistensatz. Jede Spalte repräsentiert eine Foundation. Jede Zelle repräsentiert ein Kandidatenpaar. In den in diesem Abschnitt gezeigten Tabellen steht "F" für "Eingefroren (frozen)", "W" für "Wartend (waiting)", "S" für "Erfolgreich (succeeded)"; außerdem wird "^^" verwendet, um neu hinzugefügte Kandidatenpaare zu kennzeichnen.
Wenn der Agent die ICE-Verarbeitung gemäß Abschnitt 6.1.2.6 von [RFC8445] startet, taut er für jede Foundation das Kandidatenpaar mit der niedrigsten Komponenten-ID oder, wenn die Komponenten-IDs gleich sind, das Kandidatenpaar mit der höchsten Priorität auf (dies ist das oberste Kandidatenpaar in jeder Spalte). Dieser anfängliche Zustand ist in der folgenden Tabelle dargestellt.
+=================+====+====+====+====+====+
| | f1 | f2 | f3 | f4 | f5 |
+=================+====+====+====+====+====+
|| s1 (Audio.RTP) | W | W | W | | |
+-----------------+----+----+----+----+----+
|| s2 (Audio.RTCP) | F | F | F | W | |
+-----------------+----+----+----+----+----+
|| s3 (Video.RTP) | F | | | | |
+-----------------+----+----+----+----+----+
|| s4 (Video.RTCP) | F | | | | |
+-----------------+----+----+----+----+----+
Tabelle 2: Anfänglicher Checklistenstatus
Dann, während die Prüfungen ablaufen (siehe Abschnitt 7.2.5.4 von [RFC8445]), taut der Agent für jedes Kandidatenpaar, das in den Zustand Erfolgreich (hier mit "S" bezeichnet) übergeht, alle Kandidatenpaare aller Datenströme mit derselben Foundation auf (z. B. wenn das Kandidatenpaar in Spalte 1, Zeile 1 erfolgreich ist, taut der Agent die Kandidatenpaare in Spalte 1, Zeilen 2, 3 und 4 auf).
+=================+====+====+====+====+====+
| | f1 | f2 | f3 | f4 | f5 |
+=================+====+====+====+====+====+
|| s1 (Audio.RTP) | S | W | W | | |
+-----------------+----+----+----+----+----+
|| s2 (Audio.RTCP) | W | F | F | W | |
+-----------------+----+----+----+----+----+
|| s3 (Video.RTP) | W | | | | |
+-----------------+----+----+----+----+----+
|| s4 (Video.RTCP) | W | | | | |
+-----------------+----+----+----+----+----+
Tabelle 3: Checklistenstatus mit erfolgreichem Kandidatenpaar
Trickle ICE behält alle diese Regeln bei, wie sie auf den „statischen" Checklistensatz angewendet werden. Dies bedeutet, dass, wenn ein Trickle-ICE-Agent Konnektivitätsprüfungen startet, während alle Kandidatenpaare bereits vorhanden sind, die Art und Weise, wie sich die Kandidatenpaarzustände ändern, nicht von einem regulären ICE-Agent unterscheidbar ist.
Natürlich besteht der Hauptunterschied bei Trickle ICE darin, dass der Checklistensatz dynamisch aktualisiert werden kann, da Kandidaten nach dem Start der Konnektivitätsprüfungen eintreffen können. Wenn dies geschieht, setzt der Agent den Zustand des neu gebildeten Kandidatenpaares wie unten beschrieben.
Regel 1: Setzen Sie den Zustand auf Wartend (Waiting), wenn das neu gebildete Kandidatenpaar die niedrigste Komponenten-ID aller Kandidatenpaare für diese Foundation oder, wenn die Komponenten-IDs gleich sind, die höchste Priorität hat (d. h. wenn es das oberste Kandidatenpaar in der Spalte ist). Dies wäre der Fall, wenn das neu gebildete Kandidatenpaar z. B. in Spalte 5, Zeile 1 platziert wird. Diese Regel ist konsistent mit Abschnitt 6.1.2.6 von [RFC8445].
+=================+====+====+====+====+=====+
| | f1 | f2 | f3 | f4 | f5 |
+=================+====+====+====+====+=====+
|| s1 (Audio.RTP) | S | W | W | | ^W^ |
+-----------------+----+----+----+----+-----+
|| s2 (Audio.RTCP) | W | F | F | W | |
+-----------------+----+----+----+----+-----+
|| s3 (Video.RTP) | W | | | | |
+-----------------+----+----+----+----+-----+
|| s4 (Video.RTCP) | W | | | | |
+-----------------+----+----+----+----+-----+
Tabelle 4: Checklistenstatus mit neu gebildetem Kandidatenpaar, Regel 1
Regel 2: Setzen Sie den Zustand auf Wartend (Waiting), wenn es für diese Foundation mindestens ein Kandidatenpaar im Zustand Erfolgreich gibt. Dies wäre der Fall, wenn z. B. das Kandidatenpaar in Spalte 5, Zeile 1 erfolgreich ist und das neu gebildete Kandidatenpaar in Spalte 5, Zeile 2 platziert wird. Diese Regel ist konsistent mit Abschnitt 7.2.5.3.3 von [RFC8445].
+=================+====+====+====+====+=====+
| | f1 | f2 | f3 | f4 | f5 |
+=================+====+====+====+====+=====+
|| s1 (Audio.RTP) | S | W | W | | S |
+-----------------+----+----+----+----+-----+
|| s2 (Audio.RTCP) | W | F | F | W | ^W^ |
+-----------------+----+----+----+----+-----+
|| s3 (Video.RTP) | W | | | | ^W^ |
+-----------------+----+----+----+----+-----+
|| s4 (Video.RTCP) | W | | | | ^W^ |
+-----------------+----+----+----+----+-----+
Tabelle 5: Checklistenstatus mit neu gebildetem Kandidatenpaar, Regel 2
Regel 3: Setzen Sie den Zustand auf Eingefroren (Frozen), wenn keine der vorherigen Regeln zutrifft.
Beachten Sie, dass selbst wenn ein Kandidatenpaar in den Zustand Wartend versetzt wird, die Regeln von [RFC8445] immer noch gelten, sodass Konnektivitätsprüfungen nur von Checklisten im Zustand Laufend ausgeführt werden. Daher ist es möglich, dass ein Kandidatenpaar mehrmals den Zustand zwischen Wartend und Eingefroren ändert, bis eine Konnektivitätsprüfung tatsächlich für dieses Paar durchgeführt wird.