<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"}