Was sind ICE-Kandidaten und wie wählt die Peer-Verbindung zwischen ihnen?

71

Ich habe neu eine einfache Chat-Anwendung geschrieben, aber den Hintergrund der ICE-Kandidaten nicht wirklich verstanden.

Wenn der Peer eine Verbindung herstellt, erhält er ICE-Kandidaten und tauscht sie aus und setzt sie schließlich auf die Peer-Verbindung.

Meine Frage ist also, woher kommen die ICE-Kandidaten und wie werden sie verwendet und werden sie alle wirklich verwendet?

Ich habe festgestellt, dass mein Kollege weniger Kandidaten hat, als er die Bewerbung auf seinem Computer ausführt. Was könnte der Grund für die unterschiedliche Anzahl von Kandidaten sein?

user1844505
quelle
3
Vielleicht nicht so leicht zu verdauen, aber Sie könnten RFC 5245 überprüfen.
Mikael Holmgren
8
Es gibt eine schöne Präsentation, die Konzepte von ICE, STUN und TURN erklären kann. Viagenie.ca/publications/2008-08-cluecon-stun-turn-ice.pdf
Krystian
Ich empfehle den Link von Krystian!
Felix Crazzolara

Antworten:

97

Die Antwort von @Ichigo ist richtig, aber ein bisschen größer. Jeder ICE enthält einen Knoten Ihres Netzwerks, bis er die Außenseite erreicht hat. Auf diese Weise senden Sie diese ICEs an den anderen Peer, damit dieser weiß, über welche Verbindungspunkte er Sie erreichen kann. Betrachten Sie es als ein großes Gebäude: Einer befindet sich im Gebäude und muss dem anderen (der nicht vertraut ist) sagen, wie er durch das Gebäude gehen soll. Wenn ich viele Netzwerkgeräte habe, muss die eingehende Verbindung den richtigen Weg zu meinem Computer finden. Durch die Bereitstellung aller Knoten findet die RTC-Verbindung selbst die kürzeste Route. Wenn Sie also eine Verbindung zu dem Computer neben Ihnen herstellen, der mit demselben Router / Switch / was auch immer verbunden ist, verwendet er alle ICEs und ermittelt den kürzesten, und das direkt über diesen Punkt. Dass Ihr Kollege weniger ICE-Kandidaten hat, hängt mit der Anzahl der Geräte zusammen, die er durchlaufen muss. Bitte beachten Sie, dass jeder Netzwerkadapter in Ihrem Computer, der über eine IP-Adresse verfügt (ich habe einen vEthernet-Switch von hyper-v), auch einen ICE dafür erstellt.

MarijnS95
quelle
Senden Sie ICEs oder Kandidaten? Ist ICE nicht nur der Name der Methode (des Protokolls), für die Kandidaten gesammelt werden?
Cozzbie
1
@Cozzbie Diese Antwort wurde vor langer Zeit geschrieben, als mein Englisch schlechter war als jetzt. Ich hätte nie erwartet, dass diese Art von Antwort " übrigens, wenn ich mir ICE-Kandidaten anschaue, kann ich sie sehen ", um so viele positive Stimmen zu erhalten (es ist bei weitem meine positivste Antwort). Ich sollte den Wortlaut und die Schrift aktualisieren, aber um Ihre Frage zu beantworten: Ja, ICEist die Abkürzung des Protokolls, die Dinge, die Sie senden ICE candidates.
MarijnS95
Vielleicht versteht der Antwortende falsch, was ein ICE-Kandidat ist. Was meint er mit "allen Knoten"? Schlägt er vor, dass ICE in einem Algorithmus für kürzeste Wege verwendet wird, um den optimalen Weg zwischen initiierendem und antwortendem Peer zu finden?
Ben Butterworth
84

ICE steht für Interactive Connectivity Establishment , eine Technik, die in NAT (Network Address Translator) für verwendet wirdestablishing communication for VOIP, peer-peer, instant-messaging, and other kind of interactive media.

Normalerweise liefert Ice Candidate die Informationen über die IP-Adresse und den Port, von dem aus die Daten ausgetauscht werden sollen.

Das Format ist ungefähr so

a = Kandidat: 1 1 UDP 2130706431 192.168.1.102 1816 typ host

Hier wird UDPdas zu verwendende Protokoll angegeben. Gibt an, um typ hostwelche Art von Eiskandidaten es sich handelt. Host bedeutet, dass die Kandidaten innerhalb der Firewall generiert werden. Wenn Sie wiresharkden Datenverkehr überwachen, sehen Sie, dass die für die Datenübertragung verwendeten Ports mit denen in Eiskandidaten identisch sind.

Ein anderer Typ ist relay, der angibt , dass diese Kandidaten verwendet werden können, wenn die Kommunikation außerhalb der Firewall erfolgen soll.

Je nach verwendetem Browser kann es weitere Informationen enthalten. Ich habe oft gesehen, dass 8-12 Eiskandidaten vom Browser generiert werden.

Ichigo Kurosaki
quelle
Aber warum bekomme ich so viele Kandidaten und warum muss ich sie mit dem anderen Kollegen austauschen?
user1844505
1
Das ICE-Protokoll enthält keine Daten über den Browser ... Hier ist SDP (Session Description Protocol) vorgesehen (und auch, um zu teilen, für welche Art von Daten die RTC verwendet werden soll, z. B. Audio, Video, Codecs usw. )
MarijnS95
1
Wie wähle ich beim Aufbau einer WebRTC-Verbindung zwischen Eiskandidaten? Ich habe ungefähr acht Optionen (in meiner Entwicklungsumgebung). Einige führen Audio aus, andere verlieren Video. Es ist wirklich seltsam
Costa
1
Wie ich oben über verschiedene Arten von Eiskandidaten erwähnt habe, sollten Sie idealerweise alle Eiskandidaten handhaben. Sie stellen dem Webrtc nur alle Eiskandidaten zur Verfügung. Webrtc erledigt die Restarbeit.
Ichigo Kurosaki
Können wir sie für eine Sitzung zwischenspeichern? Angenommen, eine Person tätigt auf Android mehrere Anrufe gleichzeitig. Welche Art von Cache-Löschrichtlinie sollten wir befolgen? Sollten wir den Cache bei Netzwerkänderung leeren (Typ sowie Konnektivität).
user2223032
2

Ichigo hat eine gute Antwort, betont aber nicht, wie jeder Kandidat verwendet wird. Ich denke , die Antwort von MarijnS95 ist einfach falsch:

Jeder ICE enthält einen Knoten Ihres Netzwerks, bis er die Außenseite erreicht hat

Durch die Bereitstellung aller Knoten findet die RTC-Verbindung selbst die kürzeste Route.

Erstens meint er ICE-Kandidat, aber dieser Teil ist in Ordnung. Vielleicht interpretiere ich ihn falsch, aber indem er sagt, "bis es nach außen gelangt ist", lässt er es so aussehen, als ob ein Klient (der initiierende Peer) die innerste Schicht einer Zwiebel ist, und schlägt vor, dass der ICE-Kandidat Ihnen hilft, die Schichten zu schälen bis Sie ins 'Internet' gelangen, wo Sie zum antwortenden Kollegen gelangen und vielleicht eine andere Zwiebel schälen können, um dorthin zu gelangen. Das ist einfach nicht wahr.Wenn ein initiierender Peer einen antwortenden Peer über die Transportadresse nicht erreicht, verwirft er diesen Kandidaten und versucht es mit einem anderen Kandidaten. Es werden keine Knoten irgendwo im Kandidaten gespeichert. Die ICE-Kandidaten werden vor jeder Kommunikation mit dem antwortenden Peer generiert. Ein Eiskandidat hilft Ihnen nicht, die sprichwörtliche NAT-Zwiebel zu schälen. Auch in Bezug auf das zweite Zitat, das ich aus seiner Antwort gemacht habe, lässt er den Eindruck entstehen, dass ICE in einem Algorithmus für kürzeste Wege verwendet wird, bei dem "kürzeste" im ICE-RFC überhaupt nicht angezeigt wird.


Aus der RFC8445- Terminologieliste:

Mit ICE können die Agenten genügend Informationen zu ihren Topologien ermitteln, um möglicherweise einen oder mehrere Pfade zu finden, über die sie eine Datensitzung einrichten können.

Der Zweck von ICE besteht darin, herauszufinden, welche Adresspaare funktionieren. Die Art und Weise, wie ICE dies tut, besteht darin, systematisch alle möglichen Paare (in einer sorgfältig sortierten Reihenfolge) zu testen, bis eines oder mehrere davon funktionieren.

Kandidat, Kandidateninformation: Eine Transportadresse , die ein potenzieller Ansprechpartner für den Empfang von Daten ist. Kandidaten haben auch Eigenschaften - ihren Typ (Server reflexiv, weitergeleitet oder Host), Priorität, Grundlage und Basis.

Transportadresse: Die Kombination aus einer IP-Adresse und dem Port des Transportprotokolls (z. B. UDP oder TCP).


Da haben Sie es also, (ICE) Kandidat wurde definiert ( eine IP-Adresse und ein Port, die möglicherweise eine Adresse sein können, die Daten empfängt, die möglicherweise nicht funktionieren ), und der Auswahlprozess wurde erklärt ( das erste Transportadresspaar, das funktioniert ). Beachten Sie, dass es sich nicht um eine Liste von Knoten oder Zwiebelschalen handelt.

Unterschiedliche Benutzer können aufgrund des Prozesses des "Sammelns von Kandidaten" unterschiedliche Eiskandidaten haben. Es gibt verschiedene Arten von Kandidaten, und einige werden über die lokale Schnittstelle abgerufen. Wenn Sie eine zusätzliche virtuelle Schnittstelle auf Ihrem Gerät haben, wird ein zusätzlicher ICE generiert (ich habe dies nicht getestet!). Wenn Sie wissen möchten, wie ICE-Kandidaten "versammelt" werden, lesen Sie die 2.1. Kandidaten sammeln


Ich hoffe, das Zerschneiden des Zwiebelmythos hat dich nicht zum Weinen gebracht. Eis deine Zwiebeln nicht. Würfel sie.

Ben Butterworth
quelle