[fli4l] Multicast-Pakete - was macht der Router damit?

Christoph Schulz fli4l at kristov.de
Mi Apr 16 20:46:56 CEST 2014


Hallo!

Stefan Puschek schrieb:

> Moin,
> 
> ich habe vor, hier intern einen Musik-Server mit IP-Multicasting
> aufzusetzen. Es sollen nur INTERNE clients den Stream empfangen.
> 
> Aber was macht der Router mit einem Paket, das als Zieladresse
> irgendwas zwischen 224.0.0.0 und 239.255.255.255 hat? Ich will nur
> vermeiden, dass der Stream nach draussen gelangt.

Multicast ist eine "Wissenschaft" für sich. Ich bin da nicht gerade der 
Experte (und es scheint ohnehin vergleichsweise wenige "da draußen" zu 
geben), aber ich habe mich gezwungenermaßen mit dem Thema beschäftigt, da 
ich bei fli4l für die IPv6-Integration verantwortlich zeichne und in IPv6 
Multicast gleich fest im Protokoll-Stapel eingebaut ist (Stichwort MLD-
Protokoll).

Generell ist es so, dass sich Clients für Multicast aktiv "registrieren" 
müssen. D.h. Clients teilen dem Netz über bestimmte Protokolle (IGMP bei 
IPv4, MLD bei IPv6) mit, dass sie an dem Empfang bestimmter Streams 
interessiert sind. Dabei werden spezielle Multicast-Adressen benutzt 
(hauptsächlich 224.0.0.0/3, wie du geschrieben hast, bei IPv6 ist es 
FF00::/8), wobei spezielle einzelne Adressen darin bestimmten Multicast-
Gruppen entsprechen, die teilweise eine feste Bedeutung haben (die Gruppe 
aller erreichbaren DHCP-Server, die Gruppe aller erreichbaren Router etc.). 
Diese Registrierung erfolgt über IGMP/MLD-Pakete an bestimmte Multicast-
Adressen (d.h. bestimmte Adressen sind für die IGMP/MLD-Mechanismen selbst 
reserviert). Der Router horcht auf diesen speziellen Adressen, bekommt das 
mit und merkt sich die Registrierung. Wenn nun Multicast-Pakete an eine 
bestimmte Adresse verschickt werden, schaut der Router nach, welche Clients 
sich für die entsprechende Gruppe registriert haben, und leiten die Pakete 
dorthin weiter. Somit entspricht Multicast letztlich einem kontrollierten 
Broadcast: kontrolliert, weil Clients sich explizit anmelden müssen.

Das ist natürlich nur vereinfacht dargestellt, weil gewisse Konfigurationen 
das Ganze verkomplizieren. Zum Beispiel will man vermeiden, dass diese 
Pakete sich über Bridges unnötig "vervielfachen", so dass i.d.R. Bridges 
auch auf IGMP/MLD horchen (Stichwort IGMP Snooping) und sich merken, wo der 
eigentliche Client sitzt, damit die Pakete nicht an alle Teilnehmer einer 
Bridge weitergeleitete werden müssen, sondern nur an die "interessierten". 
Aber das große Bild sollte stimmen.

> 
> Muss ich hier im Paketfilter eingreifen, oder wie unterbinde ich, dass
> mein Stream nach draussen geht?

Nun, damit der Stream nach draußen geht, müssten IGMP/MLD-Anmeldungen von 
außen in den fli4l hineinkommen. Da ich nicht davon ausgehe, dass du diese 
Protokolle (IGMP ist ein auf IP basiertes Protokoll wie TCP oder UDP auch, 
es hat die Protokoll-Nummer 2; bei MLD ist das etwas komplizierter, da das 
Protokoll ins ICMPv6-Protokoll eingebettet ist) in deiner INPUT-Kette 
explizit erlaubst (es sei denn, dein fli4l soll ebenfalls irgendwelche 
Multicast-Gruppen verwalten, weil ein Multicast-fähiger Dienst auf dem fli4l 
läuft), solltest du keine Probleme erwarten. 

Ich hoffe, dir irgendwie geholfen zu haben ;-)


Viele Grüße,
-- 
Christoph Schulz
[fli4l-Team]



Mehr Informationen über die Mailingliste Fli4L