Multicast - Funktionsweise

Hallo zusammen,

Ich habe Fragen zum Multicast. Ich habe mir den Wikipedia Artikel und Artikel von elektronik-kompendium.de zum Thema Multicast durchgelesen und habe noch offene Fragen. Ich verstehe nicht genau das Printzip und wie Funktionsweise davon. Den Anwendungsbereich von Broadcast kenne ich hingegen der wird ja bei ARP-Protokoll z. B auch genutzt.

Der PC der an einer Gruppenkommunikation teilnimt meldet sich beim IGMP-Router an und der IGMP-Router schickt dann diese Datenpakete an alle User der gleichen Gruppe. Stimmt das? Woher weiss den der Router welche Gruppe gemeint ist? Kann mir das jemand etwas genauer erklären?
Leider fand ich unter den Google-Bildern keine guten Grafiken welcher das Erklärten.
Woher weiss der PC in welche Gruppe er muss wenn es mehrere gibt?

Weiter steht im Artikel bzw. im Datenpaket field „Multicast-Gruppenadresse“ heisst dass, das jede Gruppe eine eigene IP-Adresse bekommt also z. B mein PC Mitglied von folgenden Gruppen ist:

Gruppe A mit IP: 224.0.1.251 und Gruppe B: 224.0.1.245

Bei Broadcast wird ja auf die IP-Adresse 192.168.1.255 ein Datenpaket geschickt und automatisch wird durch den Router das IP-Datenpaket an alle Geräte der gleichen Subnetzmaske weitergeleitet richtig oder?

Danke für eure Hilfen!!

1 Like

Ja.

IGMP-Snooping. Ansonsten muß er im Broadcast-Verfahren erstmal alles an alle schicken.

Das mußt Du doch wissen, Gruppe 1 bietet z.B. IP-TV, Gruppe 2 Wetterdaten, wenn Du das erste willst, schreibst Du Dich in Gruppe 1 ein, usw. Es gibt keinen Zwang (anders als bei Broadcast).

Ja. Eine Gruppe eine Gruppenadresse. Relativiert sich mit IPv6 aber, da gibt’s genug Adressen.

Naja, ein Layer-3-Switch weiß über die Netze bescheid, ein Layer-2 Switch schickt einfach an alle Ports, wo er schon mal Traffic gesehen hat. So ein bißchen wie ein Hub.

Kann man diese Gruppen irgendwo konfigurieren also im IGMP-Router? Gebe ich dort an welche Gruppen-IP-Adresse ich verwenden will?

Wie sieht es aus also definiere ich z. B Gruppe 1 224.0.0.3 / Gruppe 2 224.0.0.4. Und der Router weiss dann anhand einer MAC-Tabelle wer Mitglied dieses Bereichs ist und sendet die Datenpakete dem Port zu? Wenn der IGMP-Router das Datenpaket nicht zustellen kann einer Gruppe, dann sendet er es an die Subnetzmaske vom IGMP? Oder benutzt er da sogar eine Broadcast-Anfrage an alle Clients im ganzen Subnetz?

Wenn ich unter arp -a schauen siehts so aus bei mir:

224.0.0.2 01-00-5e-00-00-02 statique
224.0.0.22 01-00-5e-00-00-16 statique
224.0.0.251 01-00-5e-00-00-fb statique
224.0.0.252 01-00-5e-00-00-fc statique
224.0.1.251 01-00-5e-00-01-fb statique
239.255.255.250 01-00-5e-7f-ff-fa statique
239.255.255.254 01-00-5e-7f-ff-fe statique
255.255.255.255 ff-ff-ff-ff-ff-ff statique

Ich nehme stark an, dass die IP-Adressen die mit „244.0.1…“ anfangen IP-Adressen von Gruppen sind in welcher mein PC sind und die 239.255.255.X die dazu hörigen Subnetzmasken? Stimmt das?

Nix konfigurieren, multicast ist ad-hoc bzw. fest vorgegeben, z.B. 224.0.0.251 für zeroconf-Dienste.
Auch am Router/Switch macht man nichts außer IGMP-Snooping anschalten, damit er mitschreiben kann, wer sich für welche Gruppe interessiert.

Der Client gibt an, welche Gruppe er abonnieren möchte, der Server sollte natürlich auf derselben Gruppe auch Daten anbieten. Im Prinzip ist multicast wie Fernsehen. Die Sender strahlen aus, und Du schaltest ein, was Du sehen möchtest. Die Sender kriegen das nicht mit.

Was meinst Du mit „Definieren“? Wie gesagt, Du startest einen Dienst, z.B. mdns (oder der läuft schon, z.B. IPTV (das macht Dein ISP)), und Clients abonnieren sich die Gruppe (per IGMP bzw. ICMPv6) und bekommen dann die Daten zugestellt.

Auf https://en.wikipedia.org/wiki/Multicast_address#IPv4 gibt’s eine Tabelle mit allen IPv4 multicast-Netzen. Subnetzmasken gibt’s in dem Sinne bei Multicast nicht, alle Adressen sind Class D, sprich Adressen sind immer Adressen und können nicht weiter in Netze zerlegt werden.

239.255.er-Adressen sind localhost-gescoped. D.h. sie verlassen den Rechner nicht. Siehe https://tools.ietf.org/html/rfc2365 Punkt 6.1.

Mh okay habe da noch eine gute Seite gefunden:
https://www.comptech-info.de/computer-a-technik/computer-infos/199-multicast-was-ist-das

Wenn ich also auf meinem PC Ausführen -> CMD -> „arp -a“ eingebe Listet er mir die IP-Adressen mit 244.0.0.2 / 244.0.0.22 / 244.0.0.250 / 244.0.0.254. Also ist mein PC Mitglied von 4 Multicast Gruppen oder sind die z. T automatisch mit drinnen? Gibt es Multicast-Gruppen wo jeder Client in einem Netzwerk Mitglied ist wie bei Broadcast?

Also wenn mein PC IPTV macht, sendet er ein Datenpaket an den IPTV-Anbieter als Absender nimmt er die IP-Adresse der Multicastgruppe und bekommt darum auch wieder auf diese Adresse eine Antwort. Mein Router zu Hause sendet dann wiederrum an alle PCs die auf die IP-Adresse 244.0.0.5 hören eine Antwort?

Woher weiss den mein PC, dass es eine Anwendung ist die Multicast verwendet? Wird das das in irgend einem Protokoll ID oder so vom Router weitergegeben und der PC macht dann ein Join-Snooping?

Ja, Du bist Mitglied von 4 Multicast-Gruppen. Und ja, es gibt Gruppen, die abonniert Dein Betriebssystem automatisch, z.B. 224.0.0.1 oder ff01::1. Du mußt Dir mal Scopes durchlesen, das 224.0.0er Netz ist ein Loopback-Netzwerk, solche Pakete dürfen nicht per Ethernet im Netzwerk herumschwirren. Im Prinzip das Pendant zum 127er Netz bei Unicast.

Wenn Du IPTV abonnieren möchtest, sendest Du ein IGMP/ICMPv6 join group (abonnieren) an Deinen Switch. Der weiß dann bescheid, daß er den Traffic vom Anbieter an diese Multicast-Adresse nicht mehr blockieren soll, sondern leitet ihn weiter an Dich. Multicast ist im Prinzip konfigurierbares Broadcast.

Also Multicast ist fester Bestandteil des IP-Stacks Deines Betriebssystems, das würde jetzt schon fast in Richtung Programmieren gehen, aber vielleicht soviel: Wenn Du einen Client aufmachst, der die Gruppenadresse bindet, dann weiß Dein Betriebssystem, was zu tun ist, sprich Join-Requests senden, falls der Scope Link ist, auch übers Netzwerk, falls der Scope global ist, dann sogar ins Internet. Wie gesagt, das Protokoll ist IGMP oder ICMPv6, Protokoll-ID wäre 2 bzw. 58.

127er Netz sind ja die Localhost-Adressen?.. Die 224.0.0.X-Adresse ist wie im Link von dir geschickt „224.0.0.0 to 224.0.0.255 / Local subnetwork / no Routable“ Wird diese Adresse nur dazu verwendet um intern (PC mit sich selber) zu kommunizieren ohne Router? Habe mir das Scopes durchgelesen, verstehen tu ich leider nicht viel. Wenn wir schon bei Unicast sind… Existiert bei Broadcast oder Anycast auch eine solche spezifische Adresse? So weit ich weiss ist 255.255.255.255 die Adresse um alle Rechner im gleichen Subnetz zu erreichen. Richtig?
AnyCast kenne ich nur von den ROOT-DNS Server dort gibt einige die über diese Art kommunizieren.

Leider kenne ich keine Multicast Anwendungen, daher die Frage:
In Wikipedia steht, dass viele Audio- und Bildübertragungen per Multicast stattfinden. Kann es also sein, wenn ich bei zatto.com TV schaue, mein PC eine Multicast-Gruppe abonniert von diesem Streaming-Anbieter?

IP-Stacks = WINSOCK? cmd -> netsh winsock?
Also mein Betriessystem erkennt dann von selber was zu tun ist, genauso wie bei einer DNS-Anfrage, dass er UDP und nicht TCP zu nehmen hat?.. Wie ist das gemeint mit „einen Client aufmachst, der die Gruppenadresse bindet“ Mt Scope Link meinst du woher der Client die Multicast-Datenpakete schicken muss z. B welcher Switch-Port etc?

Genau. Außer, daß ich Dir den falschen Range gesagt habe, 239.255er sind loopback (Pendant zu 127er Unicast-Netz). Damit können Anwendungen auf dem gleichen Rechner eine Art Bus bereitstellen, jeder kann draufschreiben, und jeder kann auch mitlesen. Das IGMP dazu findet auch ausschließlich Rechnerintern statt.

Die 224.0.0er Adressen sind übrigens link-local-Adressen, d.h. alle Geräte, die sich (salopp gesagt) direkt per Mac-Adresse unterhalten können, also (ebenfalls salopp) alle, die bei Dir am gleichen Switch hängen.

Local broadcast wäre 127.255.255.255, weil das aber ziemlich sinnfrei ist (Du erreichst ja ohnehin nur den eigenen Rechner) implementieren einige Betriebssysteme Verkehr an diese Adresse nicht.

Anycast kennt keine Scopes und auch keine Gruppen, es ist mehr ein Routing-Verfahren, und nicht Bestandteil von IP. Übrigens wurde auch Broadcast im neuen IPv6 abgeschafft.

Mit 255.255.255.255 erreichst Du alle Rechner auf allen Links (Netzwerkkarten, Tunnel, etc.), richtig.

Das wäre aus Traffic-Sicht sicherlich sinnvoll, allerdings operieren sämtliche Streaming-Anbieter im Unicast-Verfahren, und auch sonst blockiert so ziemlich jeder Internet-Provider globalen Multicast, wenn man das nicht abspricht (sprich VPN-Lösungen, eigenes AS, Standleitung, etc.) Ab und zu gibt es große Feldversuche, z.B. bei den olympischen Spielen 2008, die global als IPv6-Multicast angeboten wurden.

Audio und Video per Multicast schauen wäre ohnehin linear, so wie beim klassischen Fernsehen, wenn jeder Empfänger ab einem anderen Timestamp etwas schauen/hören möchte, dann ist es sinnvoller die Streams gezielt zu übertragen.

Sinnvoll ist Multicast bei „Live“-Events, da will ja jeder das gucken/hören/lesen, was gerade passiert. In meinem Bereich ist Multicast Standard: Finanzdaten. Die schieren Datenmengen könnte man anders gar nicht (fair) übertragen.

Man sollte auch (IP-)Multicast von der Technik Multicast unterscheiden, Du wirst z.B. früher oder später lesen, daß IRC (Chat) eine Multicast-Anwendung ist, allerdings ist das sogenanntes High-Level Multicast.

Ja, im Prinzip. Dein Betriebssystem implementiert ja das Protokoll (IP oder IGMP oder TCP, etc.) und darin steht halt, Class-D im IPv4 (also alles was mit den Bits 1110 beginnt) ist Multicast.

Ich kann nicht genau einschätzen, auf welcher Ebene Du was genau verstehen möchtest. Das war schon arg in Richtung Programmieren, wie Du als Entwickler letztendlich dafür sorgst, daß Dein Betriebssystem IGMP/ICMPv6 verschickt. Man macht das nämlich nicht so, daß man da irgendwelche Pakete zusammenbaut und dem Betriebssystem dann sagt „schick mal auf Netzwerkkarte 4 raus“.

Ich wollte darauf hinaus, daß eine Multicast-fähige Software sich automatisch anders verhält, wenn Du der eine Multicast-Adresse aus einem anderen Scope gibst (mal angenommen man kann das frei einstellen). Wenn Du also 239.255.0.20 einstellst, dann wird kein einziges Paket über eventuelle Netzwerkkarten verschickt, wenn Du 224.0.0.20 nimmst, dann werden automatisch IGMP-Pakete im Netz verschickt, aber die werden garantiert nicht an den Uplink (z.B. WAN oder Internet-Provider) geschickt. Nimmst Du jedoch 233.0.0.20 so werden die IGMP-Requests auch Deinem WAN-Link geschickt.

Mein PC listet bei „arp -A“ die IP-Adresse 239.255.255.250 auf, die wird laut meiner Info vom Simple Service Discovery Protocol address verwendet. Welches ist den die genaue Adresse für lookback unter Multicast?
Bei Broadcast gibts die 192.168.1.255 und die 255.255.255.255 beides wird zur Kommunikations mit allen PCS im Netzwerk verwendet?

Könnte man also einen Newsticker auf einem Zeitungsportal als Multicast-Anwendung ansehen? Oder FEEDs im IE? Da werden auch immer gleiche Infos an einige gewisse Teilnehmer gesendet?

239.255.0.0 bis 239.255.255.255. Es gibt nicht die Adresse für Loopback, gibt’s bei Unicast auch nicht, da ist es jede Adresse aus dem 127er-Block.

Ersteres wird sogar gemacht, EcoNext von Bloomberg ist so ein Newsticker. Unter FEEDs im IE kann ich mir nichts vorstellen.

Okay… Wenn ich z. B unter DNS schaue, ist dort auch immer eine IP-Adresse als lookback definiert, die ist immer gleich; halt die Localhost „127.0.0.1“. Habe nie eine andere gesehen. Das irritiert mich bisschen.

Wenn ich mich z. B auf meinem Windows Server 2012 selber pinge antwortet 127.0’.0.1 und nicht Adresse 192.168.1.5. Meinst du eventuell so, dass jeder Administrator selber definireren könnte welche IP-Adresse aus dem Lookback Range er als localhost IP definieren möchte?

Hallo, hroptatyr

Kannst du mir bitte noch eine Antwort auf meine offene Frage geben oder jemand anderes der sich damit auskennt?

Vielen Dank :smile:

Ah sorry, ist in Vergessenheit geraten. Ja, man kann sich auf dem Loopback-Gerät auch eine andere Adresse geben. Mit Windows kenne ich mich nicht aus, aber bei Linux geht jede Adresse aus 127.0.0.0/8 (z.B. 127.127.127.127 habe ich gerade probiert), wenn man die pingt, antwortet sie auch.

Ah ja auch bei Windows ist es so, komisch aber dass da eine Antwort kommt obwohl meine definierte Loopback-adresse und localhost-adresse 127.0.01 ist…