1 IP組播基礎(chǔ)IP組播技術(shù)有效地解決了單點(diǎn)發(fā)送、多點(diǎn)接收的問題,。組播源只發(fā)送一份數(shù)據(jù),,被傳遞的信息在距組播源盡可能遠(yuǎn)的網(wǎng)絡(luò)節(jié)點(diǎn)才開始被復(fù)制和分發(fā),并且只發(fā)送給需要該信息的接收者,。 說明:
本章所涉及的交換機(jī)和交換機(jī)圖標(biāo),,是指使能了二層組播功能的路由器。
1.1 IP組播簡介介紹IP組播的定義,、目的和受益,。 定義作為IP傳輸三種方式之一,IP組播通信指的是IP報(bào)文從一個(gè)源發(fā)出,,被轉(zhuǎn)發(fā)到一組特定的接收者。相較于傳統(tǒng)的單播和廣播,,IP組播可以有效地節(jié)約網(wǎng)絡(luò)帶寬,、降低網(wǎng)絡(luò)負(fù)載,所以被廣泛應(yīng)用于IPTV,、實(shí)時(shí)數(shù)據(jù)傳送和多媒體會(huì)議等網(wǎng)絡(luò)業(yè)務(wù)中,。 目的傳統(tǒng)的IP通信有兩種方式:單播(Unicast)和廣播(Broadcast)。
如果要將數(shù)據(jù)從一臺(tái)主機(jī)發(fā)送給多個(gè)主機(jī)而非所有主機(jī),,可以采用廣播方式,也可以由源主機(jī)采用單播方式向網(wǎng)絡(luò)中的多臺(tái)目標(biāo)主機(jī)發(fā)送多份數(shù)據(jù),,如圖1-1所示,。 圖1-1 采用單播和廣播方式進(jìn)行點(diǎn)到多點(diǎn)傳輸數(shù)據(jù)示意圖
由上述可見,傳統(tǒng)的單播和廣播通信方式不能有效地解決單點(diǎn)發(fā)送,、多點(diǎn)接收的問題,。 組播(Multicast)可以很好的解決點(diǎn)到多點(diǎn)的數(shù)據(jù)傳輸,如圖1-2所示,,源只發(fā)送一份數(shù)據(jù),,網(wǎng)絡(luò)中只有需要該數(shù)據(jù)的主機(jī)(目標(biāo)主機(jī)HostA和HostC)可以接收該數(shù)據(jù),其他主機(jī)(HostB)不能收到該數(shù)據(jù),。 圖1-2 采用組播方式進(jìn)行點(diǎn)到多點(diǎn)傳輸數(shù)據(jù)示意圖
組播相對單播和廣播有如下優(yōu)勢:
受益組播適用于任何“點(diǎn)到多點(diǎn)”的數(shù)據(jù)發(fā)布,,主要包含以下幾方面:
IP組播技術(shù)在ISP提供的互聯(lián)網(wǎng)信息服務(wù)中已經(jīng)得到了應(yīng)用,。例如:在線直播、網(wǎng)絡(luò)電視,、遠(yuǎn)程教育,、遠(yuǎn)程醫(yī)療、網(wǎng)絡(luò)電臺(tái)和實(shí)時(shí)視/音頻會(huì)議等,。 1.2 原理描述介紹IP組播的基本概念,、組播服務(wù)模型、組播地址和組播協(xié)議,。 1.2.1 組播基本概念組播傳輸?shù)奶攸c(diǎn)是單點(diǎn)發(fā)送,,多點(diǎn)接收。如圖1-3所示為組播的傳輸模型示意圖,,網(wǎng)絡(luò)中存在信息發(fā)送源Source,,感興趣的用戶HostA和HostC提出信息需求,Source發(fā)出的數(shù)據(jù)只有HostA和HostC會(huì)接收到,。 圖1-3 組播方式示意圖
表1-1以收看某電視頻道的節(jié)目為例來類比IP組播中的概念,。 表1-1 組播信息傳輸與電視節(jié)目傳輸?shù)念惐?/span>
1.2.2 組播服務(wù)模型組播服務(wù)模型的分類是針對接收者主機(jī)的,,對組播源沒有區(qū)別。組播源發(fā)出的組播數(shù)據(jù)中總是以組播源自己的IP地址為報(bào)文的源地址,,組播組地址為目的地址,。而接收者主機(jī)接收數(shù)據(jù)時(shí)可以對源進(jìn)行選擇,,因此產(chǎn)生了ASM(Any-Source Multicast)和SSM(Source-Specific Multicast)兩種服務(wù)模型。這兩種服務(wù)模型使用不同的組播組地址范圍,。 ASM模型ASM模型僅針對組地址提供組播分發(fā),。一個(gè)組播組地址作為一個(gè)網(wǎng)絡(luò)服務(wù)的集合,任何源發(fā)布到該組地址的數(shù)據(jù)得到同樣的服務(wù),。接收者主機(jī)加入組播組以后可以接收到任意源發(fā)送到該組的數(shù)據(jù),。 為了提高安全性,可以在路由器上配置針對組播源的過濾策略,,允許或禁止來自某些組播源的報(bào)文通過,。最終從接收者角度看,數(shù)據(jù)是經(jīng)過篩選的,。 ASM模型要求組地址必須整個(gè)組播網(wǎng)絡(luò)中唯一,。“唯一”指的是同一時(shí)刻一個(gè)ASM地址只能被一種組播應(yīng)用使用,。如果有兩種不同的應(yīng)用程序使用了同一個(gè)ASM組地址發(fā)送數(shù)據(jù),,他們的接收者會(huì)同時(shí)收到來自兩個(gè)源的數(shù)據(jù)。這樣一方面會(huì)導(dǎo)致網(wǎng)絡(luò)流量擁塞,,另一方面也會(huì)給接收者主機(jī)造成困擾,。 SSM模型SSM模型針對特定源和組的綁定數(shù)據(jù)流提供服務(wù),接收者主機(jī)在加入組播組時(shí),,可以指定只接收哪些源的數(shù)據(jù),。加入組播組以后,主機(jī)只會(huì)收到指定源發(fā)送到該組的數(shù)據(jù),。 SSM模型對組地址不再要求全網(wǎng)唯一,,只需要每個(gè)組播源保持唯一。這里的“唯一”指的是同一個(gè)源上不同的組播應(yīng)用必須使用不同的SSM地址來區(qū)分,。不同的源之間可以使用相同的組地址,,因?yàn)镾SM模型中針對每一個(gè)(源,組)信息都會(huì)生成表項(xiàng),。這樣一方面節(jié)省了組播組地址,,另一方面也不會(huì)造成網(wǎng)絡(luò)擁塞。 1.2.3 組播地址為了使組播源和組播組成員進(jìn)行通信,,需要提供網(wǎng)絡(luò)層組播,,使用IP組播地址。同時(shí),,為了在本地物理網(wǎng)絡(luò)上實(shí)現(xiàn)組播信息的正確傳輸,,需要提供鏈路層組播,使用組播MAC地址。組播數(shù)據(jù)傳輸時(shí),,其目的地不是一個(gè)具體的接收者,,而是一個(gè)成員不確定的組,所以需要一種技術(shù)將IP組播地址映射為組播MAC地址,。 IPv4組播地址IANA(Internet Assigned Numbers Authority,,互聯(lián)網(wǎng)編號(hào)分配委員會(huì))將D類地址空間分配給IPv4組播使用。IPv4地址一共32位,,D類地址最高4位為1110,,因此地址范圍從224.0.0.0到239.255.255.255,具體分類及含義見表1-2,。 表1-2 IPv4組播地址的范圍及含義
表1-3 常見的永久組地址列表
IPv6組播地址IPv6地址長度是128位,,在RFC4291中對組播地址的定義如圖1-4所示,。 圖1-4 IPv6組播地址的格式
和IPv4組播地址相比,IPv6組播地址有了明確的Group ID字段用于標(biāo)識(shí)組播組,。
固定的IPv6組播地址的范圍及含義如表1-6,。 表1-6 IPv6組播地址的范圍及含義
表1-7 IPv6常用組播地址范圍及含義
IPv4組播MAC地址以太網(wǎng)傳輸IPv4單播報(bào)文的時(shí)候,目的MAC地址使用的是接收者的MAC地址,。但是在傳輸組播數(shù)據(jù)時(shí),,其目的地不再是一個(gè)具體的接收者,而是一個(gè)成員不確定的組,,所以要使用IPv4組播MAC地址,,即IPv4組播地址映射到鏈路層中的地址。 IANA規(guī)定,,IPv4組播MAC地址的高24位為0x01005e,,第25位為0,,低23位為IPv4組播地址的低23位,映射關(guān)系如圖1-5所示,。例如組播組地址224.0.1.1對應(yīng)的組播MAC地址為01-00-5e-00-01-01,。 圖1-5 IPv4組播地址與IPv4組播MAC地址的映射關(guān)系
IPv4組播地址的前4位是固定的1110,對應(yīng)組播MAC地址的高25位,,后28位中只有23位被映射到MAC地址,,因此丟失了5位的地址信息,直接結(jié)果是有32個(gè)IPv4組播地址映射到同一MAC地址上,。例如IP地址為224.0.1.1,、224.128.1.1、225.0.1.1,、239.128.1.1等組播組的組播MAC地址都為01-00-5e-00-01-01,。網(wǎng)絡(luò)管理員在分配地址時(shí)必須考慮這種情況。 IPv6組播MAC地址IPv6組播MAC地址的高16位為0x3333,,低32位為IPv6組播地址的低32位,。如圖1-6所示,是IPv6組播地址FF01::1111:1的MAC地址映射舉例,。 圖1-6 IPv6組播地址的MAC地址映射舉例
可見IPv6中會(huì)有更多的組地址使用同一個(gè)MAC地址,。1.2.4 IPv4組播協(xié)議在IP組播傳輸模型中,發(fā)送者不關(guān)心接收者所處的位置,,只要將數(shù)據(jù)發(fā)送到約定的目的地址,,剩下的工作就交給網(wǎng)絡(luò)去完成。網(wǎng)絡(luò)中的組播設(shè)備必須收集接收者的信息,,并按照正確的路徑實(shí)現(xiàn)組播報(bào)文的轉(zhuǎn)發(fā)和復(fù)制,。在組播的發(fā)展過程中,形成了一套完整的協(xié)議來完成此任務(wù),。 IPv4網(wǎng)絡(luò)中使用的組播協(xié)議如表1-8所示,。 表1-8 IPv4組播協(xié)議
1.2.5 IPv6組播協(xié)議IPv6網(wǎng)絡(luò)中使用的組播協(xié)議如表1-9所示,。 表1-9 IPv6組播協(xié)議
1.3 應(yīng)用場景介紹IP組播的應(yīng)用場景。 1.3.1 在IPv4網(wǎng)絡(luò)中部署組播本節(jié)介紹IPv4網(wǎng)絡(luò)中幾個(gè)典型的組播業(yè)務(wù)場景以及組播協(xié)議和特性在這些場景中的應(yīng)用位置,。 注意:
請務(wù)必根據(jù)網(wǎng)絡(luò)實(shí)際情況和具體的業(yè)務(wù)需求,,有針對性的定制配置方案。本節(jié)僅介紹基本業(yè)務(wù)功能的部署,。 說明:
部署IPv4組播業(yè)務(wù)前,,首先確保網(wǎng)絡(luò)中IPv4單播路由正常。 單PIM域內(nèi)組播在一個(gè)小型網(wǎng)絡(luò)中,,所有的設(shè)備和主機(jī)都在一個(gè)PIM組播域內(nèi),,此時(shí)的組播業(yè)務(wù)基本部署如圖1-7所示。 圖1-7 PIM域內(nèi)組播業(yè)務(wù)的基本部署示意圖
表1-10 PIM域內(nèi)組播業(yè)務(wù)的部署
跨PIM-SM域組播為了便于控制和管理組播資源(組播組,、組播源和組播成員),需要對組播資源在域間進(jìn)行隔離,,從而形成一個(gè)個(gè)隔離的PIM-SM域,。如果不同的PIM-SM域之間需要組播數(shù)據(jù)互通,就要部署MSDP協(xié)議,,如圖1-8所示,。 說明:
PIM-SM模式在使用SSM模型的情況下不需要使用MSDP協(xié)議。 圖1-8 跨PIM-SM域組播業(yè)務(wù)的基本部署示意圖
表1-11 跨PIM-SM域組播業(yè)務(wù)的部署
跨AS域組播由于PIM協(xié)議依賴于單播路由表,,從而組播轉(zhuǎn)發(fā)路徑與單播轉(zhuǎn)發(fā)路徑是一致的。當(dāng)組播源與接收者分布在不同的AS中時(shí),,需要跨AS建立組播轉(zhuǎn)發(fā)樹,。此時(shí)可以部署MBGP協(xié)議,生成一張獨(dú)立于單播路由的組播路由表,,使組播數(shù)據(jù)通過組播路由表進(jìn)行傳輸,,如圖1-9所示。
說明:
跨AS域部署MBGP協(xié)議前,,首先部署AS域間的BGP功能,。 圖1-9 跨AS域組播業(yè)務(wù)的基本部署示意圖
表1-12 跨AS域組播業(yè)務(wù)的部署
1.3.2 在IPv6網(wǎng)絡(luò)中部署組播本節(jié)介紹IPv6網(wǎng)絡(luò)中典型的組播業(yè)務(wù)場景以及組播協(xié)議的應(yīng)用位置,。 注意:
請務(wù)必根據(jù)網(wǎng)絡(luò)實(shí)際情況和具體的業(yè)務(wù)需求,,有針對性的定制配置方案。本節(jié)僅介紹基本業(yè)務(wù)功能的部署。 說明:
部署IPv6組播業(yè)務(wù)前,,首先確保網(wǎng)絡(luò)中IPv6單播路由正常,。 圖1-10 IPv6網(wǎng)絡(luò)中的基本部署
表1-13 IPv6網(wǎng)絡(luò)中組播業(yè)務(wù)的部署
1 IGMP 協(xié)議IGMP用來動(dòng)態(tài)的將各個(gè)主機(jī)注冊到特定局域網(wǎng)中的一個(gè)組播組中。主機(jī)向本地的組播路由器發(fā)送IGMP消息來表明自己所屬的組播組,。在IGMP協(xié)議中,,路由器偵聽IGMP消息并周期的發(fā)出查詢,以發(fā)現(xiàn)某個(gè)子網(wǎng)上哪些組是活動(dòng)的,,哪些是不活動(dòng)的。 IGMP消息在IP數(shù)據(jù)報(bào)內(nèi)發(fā)送,,用IP協(xié)議號(hào)2來標(biāo)識(shí),。同時(shí),將IP存活時(shí)間(TTL)字段值設(shè)定為1,,因此IGMP信息處于本地范圍本子網(wǎng)內(nèi)傳送并且不會(huì)被路由器轉(zhuǎn)發(fā),。 1989年,IGMP版本1(RFClll2)第一次詳細(xì)定義了IGMP規(guī)范,。后來施樂公司對最早的IGMP版本1進(jìn)行了大幅更新,,產(chǎn)生了IGMP版本2(RFC2236)。到目前為止IGMP版本3規(guī)范己經(jīng)稱為IETF正式標(biāo)準(zhǔn)(RFC3376),,通用的是IGMPv2,。IGMPvl實(shí)現(xiàn)簡單,但是有離開延遲過大和選擇查詢路由器需要依賴組播路由協(xié)議的缺點(diǎn),,IGMPv2對此進(jìn)行了改進(jìn),。IGMPv3協(xié)議的主要目的是支持源特定組播,并進(jìn)一步對IGMPv2進(jìn)行完善,。 1.1 IGMPv1協(xié)議1.1.1 IGMPv1的工作原理在IGMPvl中定義了基本規(guī)則,、組成員查詢機(jī)制和報(bào)告機(jī)制,。當(dāng)某接收主機(jī)希望接收到某個(gè)組播組的數(shù)據(jù)時(shí),它會(huì)向本地鏈路上的查詢路由器發(fā)送加入消息,,通知查詢路由器本機(jī)希望申請加入的組播組;查詢路由器收到加入消息之后,,把這條消息加入到查詢路由器所維護(hù)的狀態(tài)列表,同時(shí)向源發(fā)起建立組播分發(fā)樹的請求;查詢路由器在設(shè)定的周期內(nèi)發(fā)起組成員查詢消息;接收主機(jī)收到查詢消息之后,,會(huì)向查詢路由器發(fā)送報(bào)告消息來應(yīng)答查詢,,否則查詢路由器會(huì)認(rèn)為不存在接受主機(jī);主機(jī)如果想離開某個(gè)組播組,就對路由器的查詢保持沉默,,經(jīng)過一定時(shí)間,,路由器便知道子網(wǎng)內(nèi)沒有組成員了。 1.1.2 IGMPv1報(bào)文格式IGMPvl報(bào)文格式如圖2-4所示,, 圖2-4 IGMPv1報(bào)文格式 其主要內(nèi)容包括: (1) 版本字段表示IGMP協(xié)議的版本號(hào),,在IGMP中置為1. (2) 類型字段,在IGMPv1中,,只有兩個(gè)值: 取值為0x11,,表示該報(bào)文為成員關(guān)系查詢(Membership Query),主要是由路由器使用,。 取值為0x12,,表示該報(bào)文為成員關(guān)系報(bào)告(Membership Report),主要是主機(jī)使用,。 (3) 校驗(yàn)和字段用于數(shù)據(jù)報(bào)文的校驗(yàn),。 (4) 組地址字段。當(dāng)用于成員關(guān)系查詢時(shí),,本字段置為0,,并被主機(jī)忽略;當(dāng)用于成員關(guān)系報(bào)告時(shí),本字段包含組播組地址,。 IGMPv1報(bào)文在網(wǎng)絡(luò)中傳輸完整的報(bào)文格式如圖2-5: 圖2-5 在網(wǎng)絡(luò)中傳輸?shù)腎GMPv1報(bào)文 1.1.3 IGMPv1工作過程在IGMPv1中,,路由器利用查詢一響應(yīng)過程來確定在本地子網(wǎng)中是否有加入某個(gè)組播組的主機(jī)存在,如果有,,則這臺(tái)路由器就要完成向本子網(wǎng)組播數(shù)據(jù)包的功能;如果沒有,,則這臺(tái)路由器就不必向此子網(wǎng)轉(zhuǎn)發(fā)組播包。路由器周期性地向子網(wǎng)上的所有主機(jī)發(fā)送組播成員關(guān)系查詢報(bào)文,,希望加入某個(gè)組播組的主機(jī)就響應(yīng)該查詢,,發(fā)送一個(gè)組播成員關(guān)系報(bào)告報(bào)文到子網(wǎng)上,在IGMP報(bào)文的組地址地段中加入想要加入的組播組的地址,。路由器接收到來自主機(jī)的成員關(guān)系報(bào)告報(bào)文后,,就知道了在該子網(wǎng)上有主機(jī)要加入組播組,組播組地址在報(bào)文中可以獲得,接下來,,路由器就會(huì)根據(jù)所使用的路由協(xié)議建立起相應(yīng)的轉(zhuǎn)發(fā)狀態(tài),。 當(dāng)一個(gè)子網(wǎng)上有多臺(tái)主機(jī)想加入同一個(gè)組播組時(shí),就可以利用報(bào)告響應(yīng)抑制功能,,來減少子網(wǎng)中的重復(fù)信息傳遞,。處理流程如下: 主機(jī)接收到IGMP成員關(guān)系查詢報(bào)文后,對加入的每個(gè)組播組啟動(dòng)一個(gè)倒數(shù)計(jì)時(shí)器,。當(dāng)計(jì)時(shí)器的值為0時(shí),,主機(jī)發(fā)送IGMP成員關(guān)系報(bào)告報(bào)文,通知路由器子網(wǎng)內(nèi)仍有處于活動(dòng)狀態(tài)的組播接收者,。當(dāng)計(jì)時(shí)器到達(dá)0之前,,若主機(jī)接收到來自其他主機(jī)發(fā)送的同一組成員關(guān)系報(bào)告報(bào)文,那么它就停止與該計(jì)時(shí)器得到的數(shù),,重新計(jì)時(shí),,這樣,就避免了發(fā)送同一個(gè)成員關(guān)系報(bào)告報(bào)文給路由器,。 如果在一個(gè)子網(wǎng)中有多個(gè)組播路由器,,那么多個(gè)路由器都發(fā)送IGMP查詢報(bào)文是一種浪費(fèi),所以應(yīng)當(dāng)確定一個(gè)路由器作為查詢路由器就可以了,。但是在IGMPv1中,,沒有提供選舉查詢路由器的機(jī)制,而是把這一任務(wù)留給了組播路由協(xié)議,。由于不同的協(xié)議使用不同的選舉機(jī)制,,會(huì)造成在一個(gè)子網(wǎng)中出現(xiàn)多個(gè)查詢路由器,這也是IGMPv1的缺點(diǎn)之一,。 但是IGMPv1的另一個(gè)缺點(diǎn)是缺乏顯式的離開方式,。當(dāng)一臺(tái)主機(jī)想要離開一個(gè)組播組時(shí),并不顯式地表示出來,,而只是不再對路由器的查詢報(bào)文進(jìn)行響應(yīng)。當(dāng)一個(gè)網(wǎng)段內(nèi)某個(gè)組播組的最后一個(gè)成員退出后,,路由器還會(huì)繼續(xù)組播這個(gè)組的數(shù)據(jù),,直到一段時(shí)間內(nèi)路由器接收不到任何來自該組的成員響應(yīng),才會(huì)知道該組已經(jīng)沒有接收者了,,然后停止轉(zhuǎn)發(fā)該組的組播數(shù)據(jù)報(bào)文,。因此,路由器中需要為子網(wǎng)中的每一個(gè)組維護(hù)一個(gè)計(jì)時(shí)器,。當(dāng)路由器接收到某臺(tái)主機(jī)發(fā)送的報(bào)告報(bào)文時(shí),,就會(huì)將該組的計(jì)時(shí)器清零;當(dāng)某個(gè)組的計(jì)時(shí)器超時(shí)后,就說明在本網(wǎng)段上已經(jīng)沒有接收者,于是停止轉(zhuǎn)發(fā)該組報(bào)文,。 下面是工作過程圖解: 1) 組成員加入 圖2-6 IGMPv1組成員加入 2) 查詢與響應(yīng) 圖2-7 IGMPv1組成員查詢 3) 響應(yīng)抑制機(jī)制 圖2-8 IGMPv1響應(yīng)抑制機(jī)制 4) 組成員離開 圖2-9 IGMPv1組成員離開 1.2 IGMPv2協(xié)議1.2.1 IGMPv2的工作原理IGMPv1的主要缺點(diǎn)是離開延遲過大和選擇查詢路由器需要依賴組播路由協(xié)議進(jìn)行,。針對這些缺點(diǎn),IGMPv2做了相關(guān)的改進(jìn),。在IGMPv2中,,增加了離開組的報(bào)文格式,當(dāng)主機(jī)想要離開某個(gè)組播組時(shí),,不必等待路由器發(fā)出查詢報(bào)文,,而是可以直接向路由器發(fā)送成員關(guān)系報(bào)告報(bào)文,這樣可以有效地縮短離開延遲,。另外在IGMPv2中,,還明確了查詢路由器的選舉機(jī)制。除此之外,,IGMPv2的工作原理與IGMPv1基本一致 1.2.2 IGMPv2的報(bào)文格式IGMPv2的報(bào)文格式如圖2-10所示: 圖2-10 IGMPv2報(bào)文格式 它在IGMPvl的基礎(chǔ)上,,進(jìn)行了兩處改動(dòng):一個(gè)是將v1的版本字段和類型字段進(jìn)行了合并;另一個(gè)是增加了最大響應(yīng)時(shí)間字段 (MaxResponseTime)。其主要內(nèi)容如下: (1)類型字段,,在兼容IGMPv1的基礎(chǔ)上,,IGMPv2中新增了兩種報(bào)文類型。 ·0xll:成員關(guān)系查詢,。與IGMPv1不同,,IGMPv2的查詢分為兩種類型:①通用查詢 (GeneralQuery),組地址字段置為全0,,對所有的組進(jìn)行組成員查詢;②特定組查詢 (GrouPpecificQuery),,針對特定組進(jìn)行組成員查詢,組地址字段置為特定組的地址,。 ·0x12:IGMPv1成員關(guān)系報(bào)告(為了向后兼容IGMPv1),。 ·0x16:IGMPv2成員關(guān)系報(bào)告。 ·0xl7:離開組,。 (2)最大響應(yīng)時(shí)間字段,,只有在成員關(guān)系查詢報(bào)文中有效,主機(jī)必須在最大響應(yīng)時(shí)間到達(dá)之前發(fā)出成員關(guān)系報(bào)告報(bào)文,。通過該值,,路由器可以調(diào)節(jié)組成員的離開延遲。 (3)校驗(yàn)和字段,,與IGMPv1中的一樣,。 (4)組地址地段,與IGMPv1中的基本一樣,,當(dāng)采用特定組查詢時(shí),,該字段存放要查詢的組播組的地址,。 IGMPv2報(bào)文在網(wǎng)絡(luò)中傳輸完整的報(bào)文格式如圖2-11: 圖2-11 在網(wǎng)絡(luò)中傳輸?shù)腎GMPv2報(bào)文格式 1.2.3 IGMPv2工作過程查詢一響應(yīng)過程與IGMPv1基本相同,但是有兩點(diǎn)改進(jìn):①增加了特定組查詢,,特定組查詢的目的是為了讓路由器知道一個(gè)特定組在子網(wǎng)內(nèi)是否還有組成員,,以便判斷是否還需要轉(zhuǎn)發(fā)該組的數(shù)據(jù)報(bào)文;②IGMPv2的成員關(guān)系報(bào)告的類型代碼不一樣。 IGMPv2的組成員加入與 IGMPv1中的完全一樣,。IGMPv2離開過程與IGMPv1相比有了較大的改進(jìn),。主機(jī)離開一個(gè)組時(shí),需要顯式地發(fā)送一個(gè)離開報(bào)文給路由器,。其過程如下: 要離開的主機(jī)發(fā)送一個(gè)離開報(bào)文給子網(wǎng)上所有路由器(目的地址224.0.0.2),,查詢路由器接收到離開報(bào)文后,會(huì)立即發(fā)送一個(gè)特定組查詢到子網(wǎng)上,。如果子網(wǎng)上還有該組的成員,,則會(huì)發(fā)回一個(gè)響應(yīng)報(bào)文;如果子網(wǎng)上己經(jīng)沒有該組的成員,則沒有主機(jī)回應(yīng),,于是路由器就知道己經(jīng)沒有該組成員了,,就停止轉(zhuǎn)發(fā)該組的數(shù)據(jù)。 在IGMPv1中,,選擇查詢路由器依賴于組播路由協(xié)議,;而在IGMPv2中,明確了選擇查詢路由器的機(jī)制,。其過程如下: 開始時(shí),,子網(wǎng)上的每個(gè)路由器都假定自己就是查詢路由器,發(fā)送一個(gè)通用查詢報(bào)文給所有主機(jī)(目的地址224.0.0.1),。每個(gè)路由器都可以接收到來自其他路由器的報(bào)文,,然后進(jìn)行IP地址的比較,具有最低IP地址的路由器就成為查詢路由器;非查詢路由器啟動(dòng)一個(gè)計(jì)時(shí)器,,無論何時(shí)接收到來自當(dāng)選的查詢路由器的通用查詢報(bào)文,,就將計(jì)時(shí)器復(fù)位。如果計(jì)時(shí)器超時(shí),,就認(rèn)為當(dāng)選的查詢路由器發(fā)生故障,,轉(zhuǎn)向開始重新選擇。計(jì)時(shí)器的取值一般為查詢間隔的2倍 圖解工作過程如下: 1)組成員加入 圖2-12 IGMPv2組成員加入 2)查詢與響應(yīng) 圖2-13 IGMPv2組成員查詢與響應(yīng) 3)查詢器選舉 圖2-14 IGMPv2查詢路由器選擇 4)成員離開 圖2-15 IGMPv2組成員離開 1.3 IGMPv3協(xié)議1.3.1 IGMPv3的工作原理IGMPv3的提出,,主要是為了配合源特定組播的實(shí)現(xiàn),,即組播組成員可以指定接收或指定不接收某些組播源的報(bào)文。這樣主機(jī)就可以有選擇性接收來自某個(gè)特定組播源的數(shù)據(jù)包,,而不是被動(dòng)接收該組中所有組播源的數(shù)據(jù)包。IGMPv3的這一特性,,可以實(shí)現(xiàn)源特定組播SSM技術(shù),。源特定組播(Source Specific Multicast,,SSM)是一種區(qū)別于傳統(tǒng)組播的新的業(yè)務(wù)模型,SSM保留了傳統(tǒng)PIM-SM模式中的主機(jī)顯式加入組播組的高效性,,但是跳過了PIM-SM模式中的共享樹和RP規(guī)程,。SSM直接建立由(S,G)標(biāo)志的一個(gè)組播最短路徑樹,。SSM的一個(gè)(S,,G)對也被稱為一個(gè)頻道(Channel)。PIM-SSM是對傳統(tǒng)PIM協(xié)議的擴(kuò)展,,使用SSM,,用戶能直接從組播源接收組播報(bào)文,需要匯聚點(diǎn)(RP)的幫助,。 IGMPv3在IGMPvl/v2的基礎(chǔ)上提供了額外的源過濾組播功能(Source FilteredMulticast,,SFM)。在IGMPvl/v2中,,主機(jī)只根據(jù)組地址來決定加入某個(gè)組,,并從任何一個(gè)源接收發(fā)給該組地址的報(bào)文。具有源過濾組播功能(SFM)的主機(jī)使用IGMPv3來表示主機(jī)所希望加入的組播組,,同時(shí)還表示該主機(jī)所希望接收的組播源的地址,。主機(jī)可以使用一個(gè)包括列表(Inclusion List)或一個(gè)排除列表 (Exclusion List)來表示對源地址的限制。即組播組成員可以指定接收或指定不接收某些組播源的報(bào)文,。這樣主機(jī)就可以有選擇性接收來自某個(gè)特定組播源的數(shù)據(jù)包,,而不是被動(dòng)接收該組中所有組播源的數(shù)據(jù)包。 1.3.2 IGMPv3的報(bào)文格式IGMPv3的報(bào)文類型有以下幾種: 0xll:成員關(guān)系查詢報(bào)文 (MembershipQeury),。 0x22:版本3成員關(guān)系報(bào)告報(bào)文(version 3 Membership Report) 0x12:版本1成員關(guān)系報(bào)告報(bào)文(version 1 Membership Report) 0x16:版本2成員關(guān)系報(bào)告報(bào)文 (version 2 Membership Report) 0x17:版本2離開報(bào)文 (version 2 LeaveGroup),。 報(bào)文類型的值填寫在報(bào)文中的類型字段。在IGMPv3中,,查詢報(bào)文和報(bào)告報(bào)文格式有較大差異,,需要分別描述。圖2-16為查詢報(bào)文的格式 圖2-16 IGMPv3查詢信息格式 (1)類型字段,,設(shè)置為0xll,,代表該報(bào)文為查詢報(bào)文。 (2)最大響應(yīng)時(shí)間字段,,指明了主機(jī)發(fā)出響應(yīng)的最長時(shí)間,。 (3)組地址字段,功能與IGMPv2一樣,,可以用于通用查詢和組特定查詢,。 (4)s字段,置為1時(shí),,其他路由器不對該報(bào)文進(jìn)行處理,。 (5)QRV字段,,查詢路由器的健壯值(Querier’s RobustnessVariable),該值影響計(jì)時(shí)器和重試次數(shù)的取值,。 (6)QQIC字段,,查詢路由器的查詢間隔碼(Querier’s QueryIntervalCode),該值影響查詢路由器的查詢間隔時(shí)間,,非查詢路由器按照此值更新自己的缺省值,。 (7)源地址數(shù)目字段,該值表在這個(gè)報(bào)文中包含了多少個(gè)源地址,。當(dāng)進(jìn)行通用查詢(GeneraQuery)或者組特定查詢 (GroupSpecific Query)時(shí),,該值置為0;當(dāng)進(jìn)行特定組和源查詢 (Group Source pecific Query,用于PIM一SSM)時(shí),,該值為源特定地址的數(shù)目,。雖然該值最大可為65536,但是實(shí)際上受限于數(shù)據(jù)鏈路層的MTU,,例如在以太網(wǎng)上,,1P數(shù)據(jù)報(bào)最長為1500字節(jié),除去IP報(bào)頭的24字節(jié)和IGMP報(bào)頭的12字節(jié),,剩余1464字節(jié),,所以最多包含366(1464/4)個(gè)源地址。 (8)源地址地段,。 IGMPv3查詢信息報(bào)文在網(wǎng)絡(luò)中傳輸完整的報(bào)文格式如圖2-17: 圖2-17 在網(wǎng)絡(luò)中傳輸?shù)腎GMPv3查詢報(bào)文格式 IGMPv3報(bào)告報(bào)文的格式較為復(fù)雜,,如圖2-18所示。 圖2-18 IGMPv3偵聽者報(bào)告格式 (1)類型字段,,置為0x22,,表示該報(bào)文為IGMPv3報(bào)告報(bào)文。 (2)組記錄數(shù)目字段,,表示此報(bào)文中包含的組記錄數(shù)目,。 (3)組記錄字段。包含若干個(gè)組記錄,,每個(gè)組記錄長度不固定,,其內(nèi)容如圖2-19: 圖2-19 IGMPv3組記錄格式 ①組記錄類型字段,表示該組記錄中包含的數(shù)據(jù)的類型,,目前定義了六種類 型,,分別是: ·MODE IS INCLUDE。表示該主機(jī)的過濾模式為INCLUDE.也就是說,,后面列出的地址都是主機(jī)想要接收的組播源地址,。 ·MODE IS EXCLUDE。表示該主機(jī)的過濾模式為EXCLUDE,,也就是說,,后面列 出的地址都是主機(jī)想要拒絕的組播源地址,。 ·CHANGE TO INCLUDEMODE。表示該主機(jī)的過濾模式從EXCLUDE切換為INCLUDE模式,。 ·CHANGE TO EXCLUDEMODE。表示該主機(jī)的過濾模式從INCLUDE切換為EXCLUDE模式,。 ·ALLOW NEW SOURCES,。表示該主機(jī)中新增的想要接收的源地址。 ·BLOCK OLD SOURCES,。表示從該主機(jī)中刪除的不想接收的源地址,。 ②輔助數(shù)據(jù)長度字段,在組記錄的最后,,可以增加以4字節(jié)為單位的輔助數(shù)據(jù),,如果沒有輔助數(shù)據(jù),則置為0,。 ③源地址數(shù)目字段,,表示該記錄中包含了多少個(gè)組播源地址。 ④組地址字段,,與源地址共同表示特定源組播,。 ⑤源地址字段,每個(gè)長度為32bits,。標(biāo)志源地址,,數(shù)目由源地址數(shù)目字段表示。 ⑥輔助數(shù)據(jù)字段,。為將來的應(yīng)用預(yù)留,,在IGMPv3中并不需要。一臺(tái)主機(jī)在發(fā)送報(bào)告報(bào)文的時(shí)候,,應(yīng)當(dāng)把自己的源IP地址包含在IP數(shù)據(jù)報(bào)中,,當(dāng)主機(jī)還沒有獲得IP地址的時(shí)候,可以使用0.0.0.0作為源IP地址,,支持IGMPv3的路由器必須接收來自0.0.0.0的數(shù)據(jù)報(bào),。主機(jī)的IGMP報(bào)文的目的地址標(biāo)志為224.0.0.22,代表子網(wǎng)中所有支持IGMPv3的路由器,。 1.3.3 IGMPv3的主要改進(jìn)IGMPv3除了支持原特定組播外,,其工作原理與IGMPv2相比,并沒有本質(zhì)的改變,,只是在某些地方做了改進(jìn)和優(yōu)化,。以下列出了IGMPv3的主要特點(diǎn)和改進(jìn): ①支持源特定組播SSM; ②向后兼容IGMPvl和IGMPv2; ③主機(jī)可以定義要接收的組播源地址; ④非查詢路由器可以與查詢路由器保持參數(shù)值同步; ⑤最大響應(yīng)時(shí)問從25.5s增加到53min,適合于較大的網(wǎng)絡(luò); ⑥輔助數(shù)據(jù)字段為將來的應(yīng)用預(yù)留了空間; ⑦關(guān)系成員報(bào)告報(bào)文發(fā)送給目的地址224.0.0.22,,可以幫助二層交換機(jī)更有效地實(shí)現(xiàn)IGMP監(jiān)聽 (IGMPSnooping)功能; ⑧報(bào)告報(bào)文中可以包含多個(gè)組記錄,,可以有效地減少網(wǎng)絡(luò)通信量; ⑨在IGMPv3中,,取消了前面版本中的響應(yīng)抑制功能,主要原因是: 第一,,使用響應(yīng)抑制時(shí),,路由器只知道子網(wǎng)上是否有組成員,而不知道有幾個(gè)組成員,,以及成員是哪些主機(jī):取消響應(yīng)抑制,,路由器就可以記錄每一個(gè)組成員的信息,可以開發(fā)一記賬等增值服務(wù)功能,。 第二,,許多網(wǎng)橋或者二層/三層交換機(jī)在實(shí)現(xiàn)IGMP監(jiān)聽功能時(shí),為了避免響應(yīng)抑制,,一般不轉(zhuǎn)發(fā)網(wǎng)段問的IGMP報(bào)文,。取消了響應(yīng)抑制后,可以簡化這些設(shè)備的設(shè)計(jì),。 第三,,取消響應(yīng)抑制后,主機(jī)不必處理來自其他主機(jī)的報(bào)文,,簡化了主機(jī)的實(shí)現(xiàn),。在查詢報(bào)文中,增加S標(biāo)志位,,可以提高系統(tǒng)的健壯性,。 IGMPv3報(bào)告報(bào)文在網(wǎng)絡(luò)中傳輸完整的報(bào)文格式如圖2-20: 圖2-20 在網(wǎng)絡(luò)中傳輸?shù)腎GMPv3報(bào)告報(bào)文 2 MLD協(xié)議IPv6的組管理協(xié)議被稱為MLD(組播監(jiān)聽者發(fā)現(xiàn))。1999年,,MLD版本l(RFC2710)被IETF發(fā)布,。2004年,MLD版本2(RFC3810)標(biāo)準(zhǔn)出臺(tái),,后一個(gè)版本可以向前一個(gè)兼容,。MLD協(xié)議是專門針對基于IPv6的組播組管理協(xié)議。因?yàn)镸LD使用全新的ICMPv6的報(bào)文格式,,所以MLD協(xié)議就是ICMPv6協(xié)議的一個(gè)子集,。MLD消息使用鏈路本地IPv6源地址發(fā)送,其跳數(shù)被限制為1,。MLD消息的封裝格式如圖2-21所示: 圖2-21 MLD消息封裝格式 以下分別描述MLD協(xié)議的兩個(gè)版本以及MLDSnooping,,其中對于MLDSnooping的詳細(xì)描述見第三章。 2.1 MLDv1協(xié)議2.1.1 MLDv1的工作原理MLDvl協(xié)議是從IGMPv2協(xié)議中派生出來的,,其運(yùn)行機(jī)制和IGMPv2協(xié)議相同,,專門用于IPv6組播群組的管理,其主要是應(yīng)用于ASM模式組播路由協(xié)議的組管理工作。 對于運(yùn)行MLD協(xié)議的路由器,,其接口要監(jiān)聽由IPv6組播地址產(chǎn)生的所有鏈路組播地址,。路由器為它所在的每一條鏈路維護(hù)一個(gè)列表。表項(xiàng)有此鏈路中存在的組成員的組播地址,,以及該地址相應(yīng)的定時(shí)器,。路由器周期性地發(fā)送通用請求 (general query),以查詢該鏈路上是否存在某組播地址的組成員,。節(jié)點(diǎn)收到路由器發(fā)送的常規(guī)請求后,,經(jīng)過隨機(jī)時(shí)延后發(fā)出組播監(jiān)聽報(bào)告。這樣是為了防止所有的節(jié)點(diǎn)都在同一時(shí)間發(fā)出報(bào)告分組,,從而造成網(wǎng)絡(luò)的突發(fā)性阻塞。當(dāng)路由器收到鏈路上的報(bào)告分組時(shí),,如果報(bào)告地址不在路由器的列表上,,則加入該項(xiàng),否則計(jì)時(shí)器重新置位,。如果某個(gè)地址的計(jì)時(shí)器過期,,則從列表中刪除。當(dāng)節(jié)點(diǎn)要加入一個(gè)組播組時(shí),,主動(dòng)發(fā)送組播監(jiān)聽報(bào)告,,向路由器報(bào)告組成員的存在。節(jié)點(diǎn)退出組播組時(shí),,發(fā)送完成分組,,刪除有關(guān)路徑。當(dāng)請求狀態(tài)的路由器從鏈路上接收到一個(gè)完成消息,,如果消息中的組播地址在路由器的列表上,,路由器發(fā)送一個(gè)特定組播地址查詢。如果一段時(shí)延后沒有報(bào)告分組,,則認(rèn)為該組播地址在此鏈路上沒有組成員了,。 2.1.2 MLDv1報(bào)文格式MLDv1的報(bào)文格式如圖2-22所示: 圖2-22 MLDv1報(bào)文格式 (1)類型字段,MLDvl有如下三種報(bào)文類型: ·組播偵聽查詢消息(Type=130),,分為兩種類型:①通用查詢(GeneralQuery),,組地址字段置為全0,對所有的組進(jìn)行組成員查詢;②特定組查詢(Group Pecific Query),,用于判斷一個(gè)特定的組播地址在本地鏈路上是否有組播偵聽者,。 ·組播偵聽報(bào)告消息(Type = 131) ·組播偵聽完成消息(Type = 132) (2)編碼字段,初始值為0,。 (3)校驗(yàn)和字段,。 (4)最大響應(yīng)時(shí)間字段,只有在組播監(jiān)聽者查詢報(bào)文中有效,主機(jī)必須在最大響應(yīng)時(shí)間到達(dá)之前發(fā)出成員關(guān)系報(bào)告報(bào)文,。通過該值,,路由器可以調(diào)節(jié)組成員的離開延遲。 (5)組地址字段,,在通用組查詢中,,置為0;在特定組查詢時(shí),該字段存放要查詢的組播組的地址,。在報(bào)告和完成報(bào)文中,,分別用于存放主機(jī)要加入和離開的組地址。 MLDv1報(bào)文在網(wǎng)絡(luò)中傳輸完整的報(bào)文格式如圖2-23: 圖2-23 在網(wǎng)絡(luò)中傳輸?shù)腗LDv1報(bào)文 以上這些查詢消息和應(yīng)答消息報(bào)文有三種不同的報(bào)文交互方式: 第一種交互方式是由路由器發(fā)起的,。路由器作為詢問者向與其相連接的所有主機(jī)發(fā)送一個(gè)一般查詢消息報(bào)文,。其目的地址是FF02::1。主機(jī)收到此消息后,,應(yīng)答一個(gè)包含當(dāng)前組播地址狀態(tài)記錄的報(bào)文消息,,此報(bào)文告訴路由器此主機(jī)希望接收哪個(gè)組播組或者哪些源發(fā)來的數(shù)據(jù)。 第二種交互方式是由主機(jī)發(fā)起的,。當(dāng)一個(gè)主機(jī)離開一個(gè)組播組時(shí),,它就要向路由器發(fā)送組播偵聽者完成消息,該消息包括一個(gè)狀態(tài)改變一記錄,。路由器收到此消息后,,向其相連的鏈路上發(fā)送一個(gè)特定組播地址查詢,詢問是否還有主機(jī)加人了此特定的組,。 第三種交互方式是由路由器發(fā)起的,。如果在路由器的組播地址表中某一個(gè)組播地址的相關(guān)定時(shí)器超時(shí)后,仍然沒有收到主機(jī)發(fā)來的包含狀態(tài)變化記錄的組播偵聽者報(bào)告消息,,路由器則向所有主機(jī)發(fā)送一個(gè)特定組查詢消息,,確認(rèn)該組播組是否還有組播偵聽者。 2.1.3 MLDv1工作流程當(dāng)一個(gè)網(wǎng)段內(nèi)連接有多臺(tái)路由器運(yùn)行MLDvl協(xié)議時(shí),,必須選舉一臺(tái)路由器作為查詢路由器,,其余的自然成為非查詢路由器。選舉的機(jī)制是:地址最小的路由器當(dāng)選,。非查詢路由器中有一個(gè)其他查詢路由器存在計(jì)時(shí)器,,當(dāng)該計(jì)時(shí)器到期仍沒有收到來自查詢路由器的報(bào)文,則認(rèn)為該查詢路由器失效,,重新開始新的選舉,。 路由器定期向子網(wǎng)內(nèi)所有的主機(jī)廣播查詢報(bào)文(目的地址為FF02::1),目的是獲得主機(jī)的報(bào)告報(bào)文,。在路由器剛開始工作時(shí),,會(huì)快速連續(xù)地發(fā)送查詢報(bào)文,,以便盡快搜集到子網(wǎng)內(nèi)的組成員信息。 當(dāng)主機(jī)接收到一個(gè)查詢報(bào)文后,,就為每一個(gè)要接收的組地址啟動(dòng)一個(gè)延遲定時(shí)器,。定時(shí)器的值在[0,最大響應(yīng)時(shí)間]之間取一個(gè)隨機(jī)數(shù),。如果查詢報(bào)文中的最大響應(yīng)時(shí)間字段被置為0,,則定時(shí)器立刻到期。定時(shí)器到期后,,主機(jī)會(huì)發(fā)送一個(gè)報(bào)告報(bào)文給路由器,,通知路由器主機(jī)想接收的組播組地址。 如果一臺(tái)主機(jī)在定時(shí)器還未到期時(shí),,就收到其它主機(jī)通告路由器的報(bào)告報(bào)文,,則讀取該報(bào)文的組地址,,如果和自己需要通告的組地址相同,,則立刻停止相應(yīng)的定時(shí)器,,并不再發(fā)送關(guān)于該組地址的報(bào)告報(bào)文,這樣就可以避免多臺(tái)主機(jī)發(fā)送相同內(nèi)容的報(bào)告報(bào)文給路由器,,這種機(jī)制稱為“響應(yīng)抑制”。路由器收到來自主機(jī)的報(bào)告報(bào)文后,,查看其中的組地址,,如果該地址未在路由器的組地址列表中,則將其添加到組地址列表中,,同時(shí)為其啟動(dòng)一個(gè)相應(yīng)的定時(shí)器,;如果該地址已經(jīng)在路由器的組地址列表中,則將相應(yīng)的定時(shí)器恢復(fù)最大值,。如果一個(gè)組地址的定時(shí)器到期了,,則說明該組地址在子網(wǎng)內(nèi)已經(jīng)沒有接收者了,路由器會(huì)將此組地址從列表中刪除,。 當(dāng)一臺(tái)主機(jī)想要加入某個(gè)組播組時(shí),,可以不必等待路由器的查詢報(bào)文,而是直接向路由器發(fā)送報(bào)告報(bào)文,。為了保障該報(bào)文的可靠性,,一般會(huì)進(jìn)行重傳。當(dāng)一臺(tái)主機(jī)想要離開某個(gè)組播組時(shí),,必須發(fā)送一個(gè)離開報(bào)文給子網(wǎng)內(nèi)的路由器,。路由器收到離開報(bào)文后,會(huì)首先查看該組地址是否在組地址列表中,,如果在,,則發(fā)送一個(gè)特定組地址查詢給子網(wǎng)內(nèi)的所有主機(jī)。在一定的時(shí)間內(nèi),路由器收不到來自主機(jī)的應(yīng)答,,則會(huì)認(rèn)為該組已經(jīng)沒有接收者,,于是將該組地址從列表中刪除。非查詢路由器會(huì)忽略所有的離開報(bào)文,。 2.2 MLDv2協(xié)議MLDv2從IGMPv3中發(fā)展過來,,和MLDvl相比,增加了IGMPv3所具有的源過濾功能,,不僅能夠支持ASM模式組播路由協(xié)議,,而且還能夠支持基于IPv6的SSM模式組播路由協(xié)議。 MLDv2在MLDv1的基礎(chǔ)上添加了源組播 (Source Specific Multieast)的概念,,主機(jī)可以組播源報(bào)告(Group-Source Report)報(bào)告感興趣的源,,路由器則只轉(zhuǎn)發(fā)該鏈路上所有組成員感興趣的源所發(fā)送的報(bào)文。當(dāng)主機(jī)想退出某組播源時(shí),,主機(jī)發(fā)送離開組播源報(bào)告(Group-Source Leave),,查詢者在接收到該報(bào)告后可以發(fā)送指定組播源請求,確認(rèn)是否仍有組成員關(guān)心該組播源,。MLDv2支持源過濾 (SourceFiltering),,因此比MLDvl具備更高的可管理性和安全性。此外MLDv2還可以與MLDvl兼容,。 2.2.1 工作原理MLD協(xié)議的目的是使每一個(gè)組播路由器知道在本地鏈路上監(jiān)聽者對哪些組播地址和源地址感興趣,。被MLD收集到的信息提供給在路由器上運(yùn)行的任何組播路由協(xié)議,來保證組播數(shù)據(jù)包被傳遞到組播組成員,。組播路由器只需要知道在一個(gè)鏈路上,,至少有一個(gè)節(jié)點(diǎn)正在監(jiān)聽從一個(gè)特定的源發(fā)給一個(gè)特定組播地址的數(shù)據(jù)包,它不需要知道有多少個(gè)這樣的節(jié)點(diǎn),。 MLDv2是一個(gè)不對稱的協(xié)議,,它包括分離的兩部分:針對組播地址偵聽者部分(監(jiān)聽組播數(shù)據(jù)包的主機(jī)或者路由器)和組播路由器部分。它為組播地址偵聽者和組播路由器定義了不同的行為,。當(dāng)執(zhí)行“組播路由器”功能時(shí),,收集組播路由協(xié)議所需要的組播偵聽者信息;當(dāng)執(zhí)行“組播地址偵聽者”功能時(shí),通知本身和其他鄰居組播路由器他的偵聽狀態(tài),。需要注意的是,,一個(gè)組播路由器可以本身是一個(gè)或者多個(gè)組播地址的偵聽者,執(zhí)行“組播路由器”和“組播地址偵聽者”雙重功能,。 組播地址監(jiān)聽者在所有的支持組播的接口上執(zhí)行MLDv2協(xié)議的“組播地址監(jiān)聽者”功能,。 組播路由器在它的每一個(gè)接口上執(zhí)行MLDv2協(xié)議的“組播路由器”功能。如果在同一個(gè)子網(wǎng)上具有不止一個(gè)組播路由器,,組播路由器將運(yùn)行查詢者選舉機(jī)制來選擇一個(gè)組播路由器來充當(dāng)查詢路由器,。在這個(gè)子網(wǎng)上的所有的組播路由器都在監(jiān)聽由組播地址監(jiān)聽者發(fā)送的消息,,并且維護(hù)相同的組播監(jiān)聽信息狀態(tài),以便于當(dāng)目前的查詢路由器不能工作時(shí),,接替查詢路由器的工作,,但是只有查詢路由器在子網(wǎng)上能夠發(fā)送周期的消息和被觸發(fā)的查詢消息。 2.2.2 MLDv2報(bào)文格式為了支持以上的功能,,MLDv2除了兼容支持MLDvl所有的三種報(bào)文:組播偵聽查詢(MLD消息類型值為130),,包括一般查詢和特定組播地址查詢:組播偵聽報(bào)告(MLD消息類型值為131);組播偵聽完成(MLD消息類型值為 132)外,還增加了MLDv2查詢消息(一般的查詢,、特定組播地址查詢,,特定組播地址和源查詢)和“偵聽者報(bào)告”報(bào)文?!皞陕犝邎?bào)告”報(bào)文是向鄰居路由器報(bào)告當(dāng)前的組播偵聽狀態(tài),,或者聲明偵聽狀態(tài)變化情況。 綜上,,MLDv2消息中的所有消息如下: n 兩種類型的MLDv2消息: l 組播偵聽查詢(類型值=130) l Version 2組播偵聽報(bào)告(類型值=143) n 為保證和MLDvl的兼容,,MLDv2還要支持以下兩種消息: l Versionl組播偵聽報(bào)告(類型值=131)[RFC2710] l versionl組播偵聽完成(類型值=132)[RFC2710] 以下詳細(xì)介紹兩種類型的MLDv2消息內(nèi)容。 a) MLDv2偵聽查詢消息 組播偵聽查詢消息是在請求狀態(tài)的路由器發(fā)出來的,,它用來查詢鄰居接口的偵聽狀態(tài),。它的消息格式如圖2-24所示: 圖2-24 MLDv2偵聽查詢消息 (1)編碼 被發(fā)送者初始化為0,接收者被忽略,。 (2)校驗(yàn)和 標(biāo)準(zhǔn)的ICMPv6校驗(yàn)和;算它,,它需要計(jì)算整個(gè)消息,包括IPv6的偽造報(bào)頭,。為了計(jì)算它,首先把它設(shè)置為0,。收到包后,,要先驗(yàn)證后處理。 (3)最大響應(yīng)延遲 最大響應(yīng)延遲編碼域指定了在發(fā)送響應(yīng)報(bào)告的允許的最大延遲,。實(shí)際時(shí)間叫做最大響應(yīng)延遲,,單位為毫秒。它們之間編碼方式如下: l 如果最大響應(yīng)延遲編碼<32768,,則最大響應(yīng)延遲=最大響應(yīng)延遲編碼,。 l 如果最大響應(yīng)延遲編碼>=32768,則最大響應(yīng)延遲編碼構(gòu)成如圖2-25所示: 圖2-25 最大響應(yīng)延遲編碼構(gòu)成圖 而且最大響應(yīng)延遲=(mant| 0x1000) << (exp+3),。 值比較小的最大響應(yīng)延遲允許MLDv2路由器調(diào)整“離開潛伏期”(鏈路上最后一個(gè)節(jié)點(diǎn)停止偵聽某個(gè)特定的組播地址到路由協(xié)議認(rèn)為對于這個(gè)地址沒有偵聽者的時(shí)間),。值比較大的最大響應(yīng)延遲,尤其是編碼的那些,,是用來調(diào)整在鏈路上的爆炸性的MLD消息的傳輸,。 (4)預(yù)留 被發(fā)送者初始化為0,,被接收者忽略。 (5)組播地址 對于一般的查詢消息,,組播地址為0,。對于特定組地址或者特定組地址和源的查詢消息來說,組播地址被設(shè)置成需要查詢的地址,。 (6)S Flag(抑制路由器端的處理) 如果設(shè)置成1,,則表示對于所有接收在收到查詢消息時(shí)抑制計(jì)時(shí)器更新。不過,,并不抑制選舉查詢者和主機(jī)端對一類查詢消息的處理,,這類查詢是路由器請求實(shí)現(xiàn)組播偵聽者的功能。 (7)QRV(查詢者活躍變量) 如果非0,,那么查詢者活躍變量域包含查詢者使用的活躍變量值,。如果活躍變量大于7(查詢者活躍變量域的最大值),查詢者活躍變量域被設(shè)置為0,。 路由器把近期收到的查詢消息中的查詢者活躍變量值設(shè)置為自己的活躍變量值,,除非近期收到的查詢消息中多數(shù)的查詢者活躍變量值都為0。在多數(shù)的查詢者活躍變量值都為0的清況時(shí),,就使用缺省值,,或者靜態(tài)配置特定的值。 (8)QQIC(查詢者查詢間隔編碼) 查詢者查詢間隔編碼域指定了查詢者使用的查詢間隔,。實(shí)際間隔被叫作查詢者查詢間隔(QQI),,它是以秒為單位的。它們之間的轉(zhuǎn)換如下: l 如果QQIC<128,,那么QQI=QQIC,。 l 如果QQIC>=128,則查詢者查詢間隔編碼構(gòu)成如圖2-26所示: 圖2-26 查詢者查詢間隔編碼構(gòu)成圖 而且QQI = (mant | 0x10) << (exp+ 3),。 不是當(dāng)前查詢者的組播路由器把最新收到的查詢消息中的QQI值作為自己的查詢間隔時(shí)間,,除非近期收到的查詢消息中多數(shù)的QQI值都為0。在都為0情況時(shí),,就使用缺省值 (9)源個(gè)數(shù)(N) 源個(gè)數(shù)(N)指出在當(dāng)前處在查詢的源地址的個(gè)數(shù),。在一般查詢消息或者特定組播地址的查詢消息中源個(gè)數(shù)都為0,在特定源和組地址的查詢消息中不為0,。源個(gè)數(shù)的大小由鏈路上可傳輸?shù)淖畲髨?bào)文決定,。例如,在Ethernet上,,可傳輸?shù)淖畲髨?bào)文是1500字節(jié),,攜帶路由警報(bào)選項(xiàng)的8字節(jié)的Hop-By-Hop擴(kuò)展頭和40字節(jié)的IPv6頭一共48字節(jié);源個(gè)數(shù)域前的MLD頭共28字節(jié),這樣留給源個(gè)數(shù)域的有1424字節(jié),,所以源個(gè)數(shù)最大為89(1424/16),。 (10)源地址[i] 源地址[i]域是指向n的單播地址,,n既是源個(gè)數(shù)域中的值。 (11)附加數(shù)據(jù)區(qū) 如果收到的查詢消息中的IPv6頭的負(fù)載長度域指定了需要有附加數(shù)據(jù)存在時(shí),,執(zhí)行MLDv2時(shí)必須包含附加字節(jié),,用來確認(rèn)收到MLD消息的校驗(yàn)和,否則就忽略附加字節(jié),。當(dāng)發(fā)送查詢消息時(shí),,一定不含附加消息。 (12)查詢變量 查詢消息中有三類查詢變量: l “一般查詢消息”是查詢路由器發(fā)出的,,用來查詢相連的鏈路上哪個(gè)組播地址有偵聽者,。組播地址和源個(gè)數(shù)都為0。 l “特定組地址查詢消息”是查詢路由器發(fā)出的,,用來查詢相連的鏈路上某個(gè)特定的組播地址是否有偵聽者,。在特定組地址查詢消息中,包括希望查詢的組地址,,源個(gè)數(shù)為0,。 l “特定組地址和源查詢消息”是查詢路由器發(fā)出的,用來查詢相連的鏈路上某個(gè)特定的組播地址并且是來自特定的源的消息是否有偵聽者,。在特定組地址和源查詢消息中,,包括希望查詢的組地址,源地址列表包含關(guān)注的源地址,。 (13)查詢消息源地址 所有MLDv2的查詢消息的源地址為可用的IPv6鏈路本地地址,。如果節(jié)點(diǎn)(路由器或主機(jī))收到的來自不明的地址的查詢消息,或者不是可用的IPv6鏈路本地地址時(shí),,它就丟棄這個(gè)消息,,同時(shí)記錄警報(bào)。 (14)查詢消息目的地址 在MLDv2協(xié)議中,,一般查詢消息是發(fā)給鏈路內(nèi)所有節(jié)點(diǎn)的地址的(FF02::1),。特定組地址查詢消息和特定組地址和源查詢消息都發(fā)給希望查詢的組地址。同時(shí)節(jié)點(diǎn)必須接收和處理所有的IP目的地址是任意的單播或組播地址的查詢消息,,這樣有利于調(diào)試,。 MLDv2偵聽查詢報(bào)文在網(wǎng)絡(luò)中傳輸完整的報(bào)文格式如圖2-27: 圖2-27 在網(wǎng)絡(luò)中傳輸?shù)腗LDv2偵聽查詢報(bào)文 b) MLDv2組播偵聽報(bào)告 MLDv2組播偵聽報(bào)告是IP節(jié)點(diǎn)發(fā)送的,,它可以用來向鄰居報(bào)告當(dāng)前的偵聽狀態(tài)和以身改變接口上的組播偵聽狀態(tài),。消息格式如圖2-28所示: 圖2-28MLDv2組播偵聽報(bào)告報(bào)文 組地址記錄的消息格式如圖2-29所示: 圖2-29 組地址記錄的消息格式 (1) 類型字段,在MLDv2偵聽報(bào)告置為143,。 (2) 預(yù)留,,被發(fā)送者初始化為0,被接收者忽略,。 (3) 校驗(yàn)和 標(biāo)準(zhǔn)的ICMPv6校驗(yàn)和;它需要計(jì)算整個(gè)消息,,包括IPv6的偽造報(bào)頭,。為了計(jì)算它,首先把它設(shè)置為0,。收到包后,,要先驗(yàn)證后處理。 (4) 組播地址記錄個(gè)數(shù)(M) 組播地址記錄個(gè)數(shù)(M)指出在當(dāng)前偵聽報(bào)告中的組播地址一記錄的個(gè)數(shù),。 (5) 組播地址記錄 組播地址記錄是由來自報(bào)告發(fā)送的接口的發(fā)送者偵聽每個(gè)組播地址的信息組成,。具體記錄如下: ① 記錄類型 當(dāng)前狀態(tài)報(bào)告是用來在收到查詢消息的接口上節(jié)點(diǎn)發(fā)出的消息。它報(bào)告接口對于每一個(gè)組地址的當(dāng)前的偵聽狀態(tài),。以下兩類,,如表2-2所示 表2-2 當(dāng)前狀態(tài)報(bào)告類型
過濾模式變化報(bào)告是接點(diǎn)在本地的接口層對于特殊的組地址狀態(tài)變化時(shí)引起的IPv6 Multicast Listen請求而發(fā)出的報(bào)告,,這種報(bào)告無論源地址是否發(fā)生變化都要發(fā)送。只有狀態(tài)變化的接口才發(fā)送這類的報(bào)告,。以下兩類,,如表2-3所示: 表2-3 過濾模式變化報(bào)告
源列表改變報(bào)告是節(jié)點(diǎn)發(fā)出的,當(dāng)源列表改變,,過濾模式和組地址不改變時(shí)會(huì)觸發(fā)發(fā)送此消息,。以下兩類,如表2-4示 表2-4 源列表改變報(bào)告
② 附加數(shù)據(jù)長度 附加數(shù)據(jù)長度域包含在當(dāng)前在偵聽報(bào)告中的附加數(shù)據(jù)長度,,單位是字(32bits),。如果為0,則表示沒有附加數(shù)據(jù),。 ③ 源個(gè)數(shù)(N) 源個(gè)數(shù)(N)指出在當(dāng)前在偵聽報(bào)告中的源地址記錄的個(gè)數(shù),。 ④ 組播地址 組播地址域包含組播偵聽報(bào)告中有的組播地址。 ⑤ 源地址[i] 源地址[i]域是指向n的單播地址,,n既是源個(gè)數(shù)域中的值,。 ⑥ 輔助數(shù)據(jù)區(qū) 如果存在輔助數(shù)據(jù)區(qū),那么它是用來補(bǔ)充說明組播地址報(bào)告的,。在MLDv2協(xié)議中沒有定義間接尋址數(shù)據(jù),,所以不需要包括輔助數(shù)據(jù)區(qū)。因此設(shè)置輔助數(shù)據(jù)區(qū)為0,,收到時(shí)也忽略,。留出這樣一部分輔助數(shù)據(jù)區(qū)是為了以后能夠擴(kuò)展MLD。 MLDv2組播偵聽報(bào)告報(bào)文在網(wǎng)絡(luò)中傳輸完整的報(bào)文格式如圖2-30: 圖2-30 在網(wǎng)絡(luò)中傳輸?shù)腗LDv2組播偵聽報(bào)告報(bào)文 2.2.3 MLDv2工作過程MLDv2的工作過程可以分成三部分:一是偵聽者端建立“組播偵聽狀態(tài)”,;二是偵聽者端和路由器端之間交換各種報(bào)文,;三是路由器端建立偵聽者狀態(tài)列表。 a) 建立偵聽狀態(tài) 偵聽者根據(jù)自身的需要指定它所感興趣的組播組和組的源地址,,建立自身的偵聽狀態(tài),,即加入列表或排除列表,然后主動(dòng)或被動(dòng)通知鄰居組播路由器它的偵聽狀態(tài),。 偵聽者執(zhí)行MLDv2協(xié)議的“偵聽部分”的功能,。無論節(jié)點(diǎn)上的接口是否在同一鏈路上.每個(gè)接口上都會(huì)執(zhí)行偵聽者功能。運(yùn)行在偵聽節(jié)點(diǎn)上層的協(xié)議或者應(yīng)用通過“套接字組播狀態(tài)”函數(shù)IPv6 Multicast Listen告知接口啟用或禁用組播功能,。 IPv6MuhieastListen的格式如下: IPv6MulticastListen(套接口,,接口,IPv6組播地址,,過濾模式,,源列表) 套接口:用來區(qū)分節(jié)點(diǎn)內(nèi)不同的組播請求實(shí)體(如進(jìn)程用程序等)。 接口:表示一個(gè)本地網(wǎng)絡(luò)接口.通過該接口可以啟用或禁用組播功能,。 IPv6組播地址:表示請求加入的組播地址,。如果一個(gè)接口接收多于一個(gè)組播的分組,IPv6Multicast Listen就會(huì)被每個(gè)組播單獨(dú)調(diào)用,。 過濾模式:過濾模式分為“INCLUDEMODE”(包含模式)和“EXCLUDEMODE”(排除模式)兩種,。 源列表:一個(gè)無序的地址列表,可以為空,。 除了“套接字組播狀態(tài)”之外,,節(jié)點(diǎn)必須維護(hù)或計(jì)算出每個(gè)接口的組播偵聽狀態(tài),,稱為“接口組播狀態(tài)”,,表示為(IPv6組播地址,,過濾模式,源列表),?!敖涌诮M播狀態(tài)”從“套接字組播狀態(tài)”推導(dǎo)出來。從“套接字組播狀態(tài)”導(dǎo)出“接口組播狀態(tài)”的一般規(guī)律如下:根據(jù)具有相同接口(IPv6組播地址)的“套接字組播狀態(tài)”記錄,,推導(dǎo)出一個(gè)“接口組播狀態(tài)”,。 (1)若有“套接字組播狀態(tài)”記錄處于排除模式,那么“接口組播狀態(tài)”的過濾模式就是“排除模式”,,且“源地址列表”等于所有“排除模式”“套接字組播狀態(tài)”記錄中的源地址列表的交集,,減去所有“包含模式”“套接字組播狀態(tài)”記錄中的源地址列表。 (2)若所有“套接字組播狀態(tài)”記錄都是“包含模式”,,那么“接口組播狀態(tài)”就是“包含模式”,,且“源地址列表”等于所有“套接字組播狀態(tài)”記錄中源地址列表的并集。 偵聽者通過上述算法可以建立起自己的“接口組播狀態(tài)”,。當(dāng)接口收到組播分組之后,,就會(huì)根據(jù)應(yīng)用或者進(jìn)程的“套接字組播狀態(tài)”判斷是否將數(shù)據(jù)分組傳給上層。MLDv2報(bào)文不受源地址過濾影響,,能夠被所有的主機(jī)或路由器處理,。 b) 交換各種報(bào)文 偵聽者端和路由器端之間交換各種報(bào)文是協(xié)議的重要部分,在此過程中計(jì)時(shí)器會(huì)保持各個(gè)功能實(shí)體的可用性,,若計(jì)時(shí)器到期會(huì)重新選舉新的偵聽者和查詢器,。 同一子網(wǎng)內(nèi)的運(yùn)行MLDv2協(xié)議的路由器首先通過1P地址最小的接口為查詢接口的“查詢器選舉機(jī)制”選舉出一臺(tái)“查詢器”(Querierrouter),其余的路由自然成為非查詢路由器(Non-Querier router),。被當(dāng)選為“查詢器”的接口周期性的在子網(wǎng)內(nèi)發(fā)布一般查詢報(bào)文,,觸發(fā)性地發(fā)布特定組播地址查詢報(bào)文和特定組播地址和源查詢報(bào)文,查詢鄰居接口的組播偵聽者發(fā)出的組播偵聽狀態(tài)路由器周期性地發(fā)送一般查詢報(bào)文,,以查詢該鏈路上是否存在某組播地址的組成員,。 在接收到收到路由器發(fā)送的一般查詢報(bào)文后,節(jié)點(diǎn)經(jīng)過[0,,最大響應(yīng)時(shí)間〕之間的隨機(jī)時(shí)延后發(fā)出組播偵聽報(bào)告,,通過“當(dāng)前狀態(tài)報(bào)告”報(bào)告自己的“接口組播狀態(tài)”。經(jīng)過隨機(jī)時(shí)延是為了防止所有的節(jié)點(diǎn)都在同一時(shí)間發(fā)出報(bào)告分組,,從而避免網(wǎng)絡(luò)的突發(fā)性阻塞,。當(dāng)偵聽者端改變自己的接口組播狀態(tài)時(shí),如想要加入某個(gè)組播組時(shí)或改變對某個(gè)源的接收狀態(tài),,就可以不必等待路由器的查詢報(bào)文,,而是直接向路由器發(fā)送報(bào)告報(bào)文。如果節(jié)點(diǎn)狀態(tài)發(fā)生變化,會(huì)立刻發(fā)送并重傳“狀態(tài)變化報(bào)告”,。在舊的“狀態(tài)變化報(bào)告”重傳過程中.如果又有新的狀態(tài)變化發(fā)生,,這個(gè)新的狀態(tài)變化就會(huì)和原來的狀態(tài)變化合并,然后組成新的“狀態(tài)變化報(bào)告”重新發(fā)送,,同時(shí)重置“重傳次數(shù)”,。節(jié)點(diǎn)新舊狀態(tài)的變化引起的狀態(tài)變化報(bào)告算法表如表2-5所示: 表2-5狀態(tài)變化報(bào)告算法表
在表中A和B為源地址列表,,“包含”和“排除”指的是接口過濾模式,“允許”的意思是希望偵聽的新增的源地址列表,,“阻止”的意思是希望不再偵聽的舊的源地址列表,。 路由器收到偵聽者針對某組播的“狀態(tài)變化報(bào)告”后,查詢器會(huì)發(fā)送“組播地址指定查詢”或者“組播地址和源地址指定查詢”,,以確定鏈路上是否還有其他偵聽者,,如果在“查詢超時(shí)時(shí)鐘”超時(shí)之前,收到其他偵聽者的“當(dāng)前狀態(tài)報(bào)告”,,則重置計(jì)時(shí)器,。否則將修改相應(yīng)的“組播偵聽者狀態(tài)”。 c) 建立偵聽狀態(tài)列表 通過偵聽來自偵聽者的報(bào)告報(bào)文,,子網(wǎng)內(nèi)所有路由器維持相同的“組播偵聽狀態(tài)”,。當(dāng)路由器收到鏈路上的報(bào)告分組時(shí),如果報(bào)告地址不在路由器的列表上,,則加入該項(xiàng),,否則計(jì)時(shí)器重新置位。路由器為它所在的每一條鏈路維護(hù)一個(gè)列表,,除了組播地址列表外,,還維護(hù)著每個(gè)組播地址相關(guān)的過濾模式、源地址列表,、該地址相應(yīng)的源計(jì)時(shí)器等信息,。如果某個(gè)計(jì)時(shí)器過期,則把相應(yīng)的表項(xiàng)從列表中刪除,。 通過收到的偵聽者報(bào)告,,路由器(包括查詢器和非查詢器)可以在其接口上建立自己的“組播偵聽者狀態(tài)”信息表。與偵聽者不同,,如果路由器有多個(gè)接口處于同一子網(wǎng)內(nèi),,則只在其中一個(gè)接口建立“偵聽者狀態(tài)”信息?!皞陕犝郀顟B(tài)”由過濾模式,、過濾時(shí)鐘和源地址列表三部分組成,。如果鏈路上某一組播的所有偵聽者都是“包含模式”。則接口處于該組播的“包含模式”,,用INCLUDE(A)表示,。其中A表示源地址列表,INCLUDE(A)稱為“包含列表”,。如果“包含模式”偵聽者發(fā)送了包含特定源地址的“當(dāng)前狀態(tài)報(bào)告”或者“狀態(tài)變化報(bào)告”,該源地址就會(huì)被加入到“包含列表”中,?!鞍斜怼敝忻恳粋€(gè)源地址都有“源地址時(shí)鐘”,一旦“包含模式”偵聽者發(fā)送報(bào)告證實(shí)自己在偵聽著某一特定源地址.“源地址時(shí)鐘”就會(huì)被更新,。如果“包含列表”中的“源地址時(shí)鐘”由于長時(shí)間得不到更新而到期,,該源地址就會(huì)從“包含列表”中刪除。這稱為“軟離開”機(jī)制,。 除了“軟離開”之外,,還有一種“快速離開”機(jī)制。當(dāng)“包含模式”偵聽者通過“狀態(tài)變化報(bào)告”聲明不再偵聽特定源地址時(shí),,鏈路上所有的路由器就會(huì)降低該源地址的“源地址時(shí)鐘”,。隨后查詢器會(huì)發(fā)出“組播地址和源地址指定查詢”,用以驗(yàn)證該鏈路是否還有該源地址的偵聽者,。如果“源地址時(shí)鐘”到期,,該源地址就會(huì)從“包含列表”中刪除。 如果鏈路上存在處于“排除模式”的偵聽者,,則接口處于該組播的“排除模式”,。收到第一個(gè)“排除模式”偵聽者的報(bào)文時(shí)起,路由器就設(shè)定該組播的“過濾時(shí)鐘”,。每當(dāng)“排除模式”偵聽者通過“當(dāng)前狀態(tài)報(bào)告”證實(shí)自己的偵聽狀態(tài)時(shí),,“過濾時(shí)鐘”被更新。當(dāng)一個(gè)“包含模式”偵聽者,,通過“狀態(tài)變化報(bào)告”聲明自己變?yōu)椤芭懦J健睍r(shí),,該“過濾時(shí)鐘”也會(huì)被更新。如果“過濾時(shí)鐘”過期,,路由器便將偵聽者狀態(tài)切換成“包含模式”,。處于“排除模式”的路由器接口。偵聽者狀態(tài)由符號(hào)Exclude(X,,Y)表示,,其中X表示“請求列表”,Y表示“排除列表”,。除了“排除列表”之外所有的源地址發(fā)出的組播分組,,都會(huì)被路由器轉(zhuǎn)發(fā),。雖然“請求列表”對于轉(zhuǎn)發(fā)分組沒有任何影響,但是路由器必須保持“請求列表”,。原因如下: (1)為了標(biāo)明“包含模式”偵聽者所偵聽的源地址,。當(dāng)鏈路中沒有“排除模式”偵聽者時(shí),能及時(shí)將路由器轉(zhuǎn)換成“包含模式”,。這種轉(zhuǎn)換不應(yīng)該中斷向該組播“包含模式”偵聽者傳輸?shù)臄?shù)據(jù)流,。當(dāng)路由器切換成“包含模式”時(shí)?!罢埱罅斜怼敝械脑吹刂繁晦D(zhuǎn)移到“包含列表”中,,“排除列表”被刪除。 (2)用來對原來沒有“排除”的源地址進(jìn)行快速的“排除”,。如果路由器接收到一個(gè)特定源地址請求的報(bào)告,。源地址就會(huì)被加入到“請求列表”,源地址時(shí)鐘被賦值.隨后查詢器發(fā)出“組播地址和源地址指定查詢”,。用以檢測該鏈路上是否還有對這些源地址感興趣的節(jié)點(diǎn),。如果源地址的時(shí)鐘就會(huì)到期時(shí)。仍沒有偵聽者響應(yīng),。這時(shí),,這些源地址就會(huì)從“請求列表”移到“排除列表”。從這時(shí)起,,該源地址就會(huì)被路由器阻斷[15],。 |
|