<style> .reveal .slides { background: url(https://hedgedoc.xinux.net/uploads/xinux-weiss.png) no-repeat; background-position: right 10px bottom 10px; background-size: 80px; } .reveal ul li { font-size: 28px !important; line-height: 1.3 !important; margin-bottom: 10px !important; } .reveal .slides section { text-align: left; padding: 20px 40px !important; } </style> ## IGMP (IPv4) – Grundlagen - IGMP = Internet Group Management Protocol - Steuert Multicast-Mitgliedschaften in IPv4 - Host: Report (Join) / Leave - Router: Query (fragt nach aktiven Mitgliedschaften) - Router pflegen Membership-Tabellen pro Interface - RFC 1112 (v1), RFC 2236 (v2), RFC 3376 (v3) --- ## MLD (IPv6) – Grundlagen - MLD = Multicast Listener Discovery - Funktional wie IGMP, aber über ICMPv6 - Pflichtbestandteil jedes IPv6-Stacks (Hosts + Router) - RFC 2710 (MLDv1), RFC 3810 (MLDv2) - **IPv6 ersetzt Broadcast durch Multicast** → MLD zwingend notwendig --- ## MLD – Nachrichtentypen - ICMPv6 Typ 130 = Query (Wer ist Mitglied?) - ICMPv6 Typ 131 = Report (Join) - ICMPv6 Typ 132 = Done (Leave) - Router pflegen Membership-Tabellen, Switches können snoopen - MLD-Nachrichten sind spezielle "Multicast Listener Discovery Messages" --- ## Rollen im Netzwerk I. - **Hosts** - OS sendet Reports/Dones bei Gruppenbeitritt/-austritt - Pflichtmitglied in Solicited-Node-Gruppen (`ff02::1:ffXX:XXXX`) - Beispiel: DHCPv6-Client hört auf `ff02::1:2` - Antworten auf MLD Queries des Routers --- ## Rollen im Netzwerk II. - **Router** - Jeder IPv6-Router spricht MLD - **Querier-Funktion**: sendet Queries an `ff02::1` - Pflegt Membership-Tabellen pro Interface - Mitglied u. a. in `ff02::2` (All Routers), `ff02::16` (All MLD Routers) - **Aktive Rolle**: darf MLD Queries senden --- ## Rollen im Netzwerk III. - **Switches** - **Ohne Snooping**: Flooding wie Broadcast - **Mit Snooping**: liest MLD-Reports, baut Portlisten - **Proxy**: fasst Reports zusammen, sendet eigenen Report upstream - **Querier**: sendet Queries, wenn kein Router da ist - **Passive Rolle** (beim reinen Snooping): nur Zuhören, keine Queries --- ### Wie lernt der Switch? – MLD Snooping erklärt (Snooping) **Der Switch "horcht" mit und baut eine Tabelle auf:** - **Host sendet MLD Report** → "Ich möchte Gruppe `ff15::1234` empfangen" - **Switch analysiert** den MLD-Report: - **Quell-MAC-Adresse:** Host A - **Eingangs-Port:** Port 3 - **Ziel-IP:** Multicast-Gruppe (`ff15::1234`) - **MLD-Typ:** 131 (Report) --- ### Wie lernt der Switch? – MLD Snooping erklärt (Snooping) - Multicast-Gruppe: ff15::1234 Switch trägt in MLD Snooping Table ein: │ ├── Port 3 (Host A) └── VLAN --- ### Der Switch-Prozess 1. **Server sendet** Paket an `ff15::1234` 2. **Switch konsultiert** MLD Snooping Table 3. **Switch leitet** nur an Port 3 (nicht an alle Ports!) --- ## Warum der Switch nicht fragen darf – Historische Gründe ### Aktuelle Einschränkung: - **Router** = aktive Rolle, darf MLD Queries senden - **Switch** = passive Rolle, nur Snooping (Zuhören) --- ## Historische/Technische Gründe I. 1. **Protokoll-Evolution** (1990er): - Switches = "dumme" L2-Geräte - Router = "intelligente" L3-Geräte - Strenge Trennung der Verantwortlichkeiten --- ## Historische/Technische Gründe II. 2. **Hardware-Limits**: - Frühe Switches hatten keine CPU-Leistung für MLD Processing - ASICs konnten nur einfache L2-Forwarding-Tabellen 3. **Standardisierungs-Prozess**: - IETF entwickelt Routing-Protokolle (Router-Fokus) - IEEE entwickelt Switching-Standards (Switch-Fokus) --- ## Die moderne Lösung – MLD Snooping Querier ### Problem ohne Router: - Kein Router → keine Queries → keine MLD Reports → Switch lernt nichts! ### Lösung: Switch als **MLD Querier** - Switch "spielt Router" und sendet Queries - Nur aktiv, wenn wirklich kein Router vorhanden - Vermeidet das Problem des stummen Netzes --- ### Vergleichstabelle - Kompakt | Gerät | Queries | Reports | Snooping | Tabellen | |-------|---------|---------|----------|----------| | Router | ✅ | ❌ | ✅ | ✅ | | Switch (Snooping) | ❌ | ❌ | ✅ | ❌ | | Switch (Querier) | ✅* | ✅ | ✅ | ✅ | *Nur wenn kein Router vorhanden --- ## Multicast-Gruppen bei MLD - `ff02::1` → All Nodes (Queries) - `ff02::2` → All Routers - `ff02::16` → Alle MLD-Router - `ff02::1:ffXX:XXXX` → Solicited-Node (Pflichtmitglied jedes Hosts) - `ff02::1:2` → DHCPv6 (Clients + Server) - Weitere Gruppen je nach Dienst (z. B. OSPFv3, RIPng, Streaming) --- ## Ablauf von MLD 1. Host tritt Gruppe bei → Report 2. Router: trägt Mitgliedschaft in Tabelle ein 3. Switch mit Snooping: merkt sich Port in Portliste 4. Host verlässt Gruppe → Done 5. Querier sendet Queries an `ff02::1` 6. Hosts antworten → Tabellen/Listen aktualisiert 7. Antwortet niemand → Gruppe entfernt --- ## Unterschiede MLDv1 und MLDv2 I. - **MLDv1** - Nur Join/Leave - Für ND, DHCPv6, Routing ausreichend - Abwärtskompatibel --- ## Unterschiede MLDv1 und MLDv2 I. - **MLDv2** - Unterstützt Source-Specific Multicast (SSM) - Host: „Gruppe X, aber nur Quelle Y“ - Wichtig für IPTV, Video-Streaming - Kompatibel mit MLDv1-Hosts --- ## Switch-Verhalten – Überblick - **Ohne Snooping** Multicast wie Broadcast → Flooding - **Mit Snooping** Liest MLD, baut Portlisten → gezieltes Forwarding - **Mit Proxy** Aggregiert Reports → sendet eigenen Report upstream - **Mit Querier** Sendet Queries, wenn kein Router da ist --- ## Switch-Verhalten – Kompakt | Modus | Horcht? | Sendet? | Aktiv? | |------------|---------|------------|--------| | Snooping | ✅ | ❌ | ❌ | | Proxy | ✅ | 📨 Reports | ⚡ | | Querier | ✅ | 📡 Queries | ✅ | --- ## Praxisbeispiel 1 – Streaming - Server streamt an `ff15::1234` - Host A → Report → Switch: „Port 3 = Listener“ - Host B → kein Report → kein Traffic - Host A → Done → Eintrag gelöscht ➡ Mit Snooping: nur Listener sehen Stream, ohne: Flooding --- ## Praxisbeispiel 2 – DHCPv6 - DHCPv6-Clients → *Solicit* an `ff02::1:2` - Server → Report → Switch merkt Port 7 - Ergebnis: - Solicit gezielt an Port 7 (Server) - Andere Ports bleiben unberührt ➡ Ohne Snooping: Solicit an alle Ports --- ## Typische Fehlerbilder - **Kein Snooping** → Multicast-Flooding, Netzlast - **ICMPv6 gefiltert** → Typen 130–132 blockiert, MLD bricht zusammen - **Kein Querier** → Gruppen verschwinden (bei Router-Ausfall) - **Querier-Konflikt** → zwei Geräte konkurrieren, Instabilität - **Switch ohne Querier-Funktion** → stummes Netz bei Router-Problemen --- ## Praxisbefehle I: - **Linux** - `ip maddr show` → Gruppen anzeigen - `tcpdump -i eth0 icmp6 and 'ip6[40] == 130'` → Queries - `tcpdump -i eth0 icmp6 and 'ip6[40] == 131'` → Reports - `tcpdump -i eth0 icmp6 and 'ip6[40] == 132'` → Done --- ## Praxisbefehle II. - **Cisco IOS** - `show ipv6 mld groups` → Gruppen pro Interface - `show ipv6 mld interface` → Querier-Status - `show ipv6 mld snooping` → Switch Snooping-Status - **Linux (erweitert)** - `cat /proc/net/igmp6` → MLD Gruppen des Hosts - `ip -6 mroute show` → Multicast Routing-Tabellen --- ### Zusammenfassung – MLD I. - IPv6 ersetzt Broadcast durch Multicast → MLD zwingend notwendig - Hosts melden Mitgliedschaften (Reports/Done) - Router = Querier, pflegen Membership-Tabellen - Switches: - Ohne Snooping → Flooding --- ### Zusammenfassung – MLD II. - Mit Snooping → Portlisten durch passive Beobachtung - Proxy/Querier → senden eigene MLD (moderne Erweiterung) - MLDv1 = Gruppen, MLDv2 = Gruppen + Quellen - **Switch lernt durch Zuhören, nicht durch Fragen** (historische Entscheidung) - **MLD Snooping Querier** schließt die funktionale Lücke ➡ Ohne MLD keine stabile Multicast-Kommunikation in IPv6 --- ## Switch-Kauf – Worauf achten für MLD? ### ✅ Must-Have Features - **MLD Snooping** (Grundfunktion) - **MLD Snooping Querier** (wichtig bei Router-Ausfall) - **Hardware-Beschleunigung** für Multicast - **ICMPv6-Filter-Ausnahmen** (Typ 130-132 nicht blockieren!) --- ### 🔧 Wichtige Einstellungen - **Aktivierbares MLD Snooping** pro VLAN - **Konfigurierbarer Querier** (Intervalle, Priorität) - **Robustness Variable** anpassbar - **Static Multicast Groups** für Server --- ### ⚠️ Häufige Probleme - **Billig-Switches**: MLD nur per CPU → Performance-Einbruch - **Fehlende Querier-Funktion** → Stummes Netz bei Router-Problemen - **ICMPv6 komplett geblockt** → MLD funktioniert nicht - **Keine VLAN-Unterstützung** für MLD --- ### 💡 Praxis-Tipps - **Datenblatt prüfen**: "MLD Snooping" ≠ "MLD Snooping Querier" - **Testen**: Multicast-Traffic unter Last messen - **Hersteller-Doku**: Konfigurationsbeispiele für IPv6 - **Monitoring**: MLD Groups und Port-Zuordnungen einsehbar --- ### 🏆 Empfohlene Hersteller - **Cisco**: Umfassende MLDv2 Unterstützung - **Juniper**: Gute IPv6-Implementierung - **Aruba**: Starke Multicast-Features - **Mikrotik**: Kostengünstig mit guten MLD-Features
{"title":"IPv6 – Multicast Listener Discovery (MLD)","author":"Thomas Will","date":"2025-08-19T00:00:00.000Z"}