[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