MDL protokoll működésének leírása

összeállította: Tőke Pál

2007. március 19.

Megjegyzés: a különbözo timerek beállítását később tárgyaljuk.

A routerek az MLD protokoll segítségével követik, hogy mely multicast címhez van az általuk felügyelt linkeken reprezentáns. Minden router a csatlakozó linkek viszonlatában listát vezet, amely tartalmazza, hogy mely multicast címhez van reprezentáns a kérdéses linken. Egy adott link vonatkozásában az egyes multicast címekhez való tartozáshoz egyedi timere-ek is hozzárendelődnek. Meg kell jegyezni, hogy valamely router csak abban érdekelt, hogy van-e a kérdéses linken a multicast címhez tartozó reprezentáns, az egyes reprezentánsok számát és unicast azonosítóit nem tartja nyiván.

Minden kapcsolódó link vonatkozásában valamely router kiválasztja egy lehetséges link lokális unicast címét, amelyet az általa küldött MLD csomagokban forrás címként használ az adott linken.

Minden olyan interfészen, amellyel kapcsolatban a router MLD protokollt működtet, a routernek fel kell konfigurálnia az összes link lokális multicast címet is, amelyek az IPv6 multicast megvalósításához kellenek. Például, ha a link Ethernet, akkor a routernek úgy kell beállítania az Ethernet címek szűrését, hogy minden olyan Ethernet multicast címet fogadjon, amely x3333 értékkel kezdődik [IPv6-ETHER]; abban az esetben, ha az Ethernet interfész nem támogat ilyen kiterjedésű szűréset, akkor ugy kell konfigurálni, hogy munden Ethernet multicast címet fogadjon annak érdekében, hogy az MLD által támasztott feltételeknek eleget tegyen.

Minden egyes kapcsoltos link vonatkozásában valamely router a következő két állapotban lehet: Kérdező vagy nem-Kérdező. Normális helyzetben linkenként pontosan egy kérdező router létezik. Minden router indulásakor Kérdezőként lép fell az összes csatlakozó linken. Ha a routrer egy olyan Query üzenetet hall, amely IPv6 forrás címe kisebb, mint az éltala kiválasztott forrás cím (az MLD kommunikációhoz), akkor nem-Kérdező állapotba kell átmennie a kérdéses link vonatkozásába. Ha az adott link vonatkozásában a [Más-Kérdező-Jelen-Intervallum] lejár anélkül, hogy a router olyan Query üzenetet hallot volna a linken, amelyben a forrás cím kisebb, mint az övé, akkor visszatér arouter a kérdéses link vonatkozásában Kérdező állapotba.

Valamely linken a Kérező router(ek) [Kérdés-Inetrvallum]-onként periódikusan General-Query-ket küldenek a linkre annak érdekében, hogy válaszadásra bírják a linhez csatlakozó hosztokat minden felkonfigurált multicast cím vonatkozásában. Induláskor minden routernek [Indulási-Query-Szám] darab General-Query-t kell küldenie [Indulás-Query-Intervallum]-onként annak érdekében, hogy gyorsan és megbízhatóan feltérképezze a multicast címekkel kapcsolatos érintettséget a kapcsolatos linkeken.

A General-Query-k a link érvényességű (scope) all-node multicast címre [FF02::1] küldődnek, az MLD üzenetben a Multicast Address értéke 0 és a maximális válaszkésleltetés (Maximum Response Delay) [Query Response Interval]-ra állítodik.

Ha egy csúcs valmely interfészén General-Query-t fogad, minden ezen interfészre felkonfigurált multicast címére késleltetési timer-t indít el, kivéve a link érvényességű all node címet és minden olyan multicast címet, amely láthatósága 0 (fenntartott) vagy 1 (node local). Az egyes timer-ek a [0, Maximum Response Delay] intervallumból véletlenszerűen választott értékre állítodnak. A [Maximum Response Delay] érték a General-Query üzenetben érkezik. Ha valamely timer egy adott cím vonatkozásában már működik, csak abban az esetben íródik felül a pillanatnyi értéke, ha ez nagyobb mint az éppen érkezett General-Query [Maximum Response Delay] értéke. Ha a [Maximum Response Delay] érték 0, akkor minden timer 0-ra állítodik és teljesül a Timer-Lejárt feltétel.

Ha valamely csúcs Multicast-Address-specific query-t fogad valamely link felől és fel van hozzá a csatlakozó linken konfigurálva a multicast cím, akkor ezen címhez beállít egy timer-t a [0, Maimum-Response-Delay] intervallumból választott véletlen értékre. Ha már fut ilyen timer, akkor csak abban az esetben írja felül az értétkét, ha annak pillanatnyi értéke nagyobb, mint az éppen érkezett Query [Maximum Response Delay] értéke. Ha a [Maximum Response Delay] érték 0, akkor a timer 0-ra állítodik és teljesül a Timer-Lejárt feltétel.

Ha egy csúcs valamely interfészén valamely multicast címéhez rendelt timer lejár, a csúcs Report-ot küld erre a multicast címre ezen interfészen. Az IPv6 rendeltetési cím és az MLD üzenetben a Multicast Address egyaránt a szóbanforgó multicast cím. Az IPv6 hop limit érétke 1-re állítodik, amely a link lokális forrás címmel együtt biztosítja, hogy a szállító IPv6 datagram nem hagyja el a szóbanforgó linket.

Ha egy csúcs egy másik csúcs Report-ját fogadja egy interfészén valamely felkonfigurált multicast címen mialatt ennek a címnek a timer-je fut, a csúcs leállítja ezt a timer-t és nem küld Report-tot erre a multicast címre ezen a linken.

Ha valamely router fogad egy Report-ot (ROUTER-ALERT Hop-by-hop opció mindig be van állítva a Report-okban!) valamely csatlakozó linken és a Report-ban foglalt cím még nincs bent a linkkel kapcslatos listában, amely azokat a multicast címeket tartalmazza, amelyekkel kapcsolatban van reprezentáns a szóbanforgó linken, akkor a Report-ban fogadott cím felkerül a listára és a hozzárendelt timer [Multicast Listener Interval] értékre állítódik. Ezzel egyidejűleg a router tájékoztatást ad a uj cím megjelenéséről a router multicast routing komponensének. Ha a Report-ban foglalt multicast cím már fennt van a listán, akkor a timer-jének az értéke ujból [Multicast Listener Interval] értékre állítódik. Ha valamely multicast cím timer-ja lejár, akkor a router ebből arra következtet, hogy a kapcsolódó link multicast címmel összefüggű érintetsége megszűnt és ezért a címet törli a listából és egyidejűleg informálja erről a multicast routing komponensét.

Ha valamely csúcs valamely csatlakozó link irányában levő interfészére egy új multicast cím felkonfigurálódik, akkor a csúcs a szóbanforgó linken kérdezés nélküli Report-ot küld erre a multicast címre. Ha figyelembe vesszük, hogy ez a kezdeti Report elveszhet vagy megsérülhet, kívánatos, hogy megismételjük parszor [Unsolicited Report Interval] időközönként.

Ha egy csúcsnál megszünik valamely interfészen egy multicast cím, akkor a csatlakozó linken Done üzenetet kell küldeni link látható all-routers multicast címre, amelyben közöljük a szóbanforgó multicast címet. Ha a csúcsnál a legutóbbi, a megszűnő multicast címmel kapcsolatos Report küldését elnyomta egy máshonnan jövö Report, akkor a csúcs eltekinthet a Done küldésétől, mivel ebből arra következtethet, hogy maradt méd a multicast címmel kapcsolatos reprezentáns a szóbanforgó linken.

Ha valamely link vonatkozásában Kérdező router a Done üzenetet fogad a szóbanforgó lik felől, és a Done üzenetben foglalt multicast cín fent van abban a listában, amely a likkel kapcsolatban a multicast címekkel való érintetséget tartalmazza, akkor a Kérdező a szóbanforgó linkre [Last Listener Query Count] számú Multicast-Address-Specific Query-t küld a Done üzenetben foglalt multicast címre. Ezekben a Query-kben a Maximum Response Delay értéke [Last Listener Query Interval] értékre állítódik. Ha nem érkezik Report ezekre a Query-kre az utoljára elküldött Query válasz-késleltetése lejártáig, akkor a router arra következtet, hogy a szóbanforgó linken a multicast címmel kapsolatos érintettség megszűnt, ezért a címet törli a nyyilvántartási listából és erről informálja a multicast routing komponensét. Ez a folyamat a végkifejletig folytatódik függetlenül attol a linket érintő Krdező nem-Kérdező átmenetektől.

A nem-Kérdező állapotban levő routernek figyelmen kívül kell hagynia a Done üzenetet.

Ha egy nem-Kérdező állapotban levő router Multicast-Address-Specific Query-t fogad és a Query-ben foglalt multicast címmel kapcsolatos timer-ja nagyobb, mint [Last Listener Query Count] és a Maximum Response Delay szorzata, akkor a szóbanforgó timer-t erre a szorzat értékre állítja.