IGMPv1:IP 組播的主機(jī)擴(kuò)展
發(fā)布時(shí)間:2021-09-21作者:小編閱讀:0
IP 組播是將 IP 數(shù)據(jù)報(bào)傳輸?shù)健爸鳈C(jī)組/host group”,即由單個(gè) IP 目標(biāo)地址標(biāo)識(shí)的零個(gè)或多個(gè)主機(jī)的集合。組播數(shù)據(jù)報(bào)以與常規(guī)單播 IP 數(shù)據(jù)報(bào)相同的“盡力而為/best-efforts”可靠性傳送到其目標(biāo)主機(jī)組的所有成員,即,不能保證數(shù)據(jù)報(bào)完整地到達(dá)目標(biāo)組的所有成員或以相同的順序到達(dá)相對于其他數(shù)據(jù)報(bào)。
主機(jī)組的成員資格是動(dòng)態(tài)的;也就是說,主機(jī)可以隨時(shí)加入和離開組。對主機(jī)組中成員的位置或數(shù)量沒有限制。一個(gè)主機(jī)一次可能是多個(gè)組的成員。主機(jī)不需要是組的成員就可以向它發(fā)送數(shù)據(jù)報(bào)。
主機(jī)組可以是永久的或臨時(shí)的。永久組具有眾所周知的管理分配的 IP 地址。永久的是地址,而不是組的成員;在任何時(shí)候,一個(gè)永久組可能有任意數(shù)量的成員,甚至為零。那些不為永久組保留的 IP 組播地址可用于動(dòng)態(tài)分配給臨時(shí)組,只要它們有成員就存在。
IP 組播數(shù)據(jù)報(bào)的互聯(lián)網(wǎng)轉(zhuǎn)發(fā)由“組播路由器/multicast routers”處理,該路由器可能與互聯(lián)網(wǎng)網(wǎng)關(guān)共存或分離。主機(jī)將 IP 組播數(shù)據(jù)報(bào)作為本地網(wǎng)絡(luò)組播傳輸,該數(shù)據(jù)報(bào)到達(dá)目標(biāo)主機(jī)組的所有緊鄰成員。如果數(shù)據(jù)報(bào)的 IP 生存時(shí)間大于 1,則連接到本地網(wǎng)絡(luò)的組播路由器負(fù)責(zé)將其轉(zhuǎn)發(fā)到具有目標(biāo)組成員的所有其他網(wǎng)絡(luò)。在 IP 生存期內(nèi)可達(dá)的其他成員網(wǎng)絡(luò)上,附加的組播路由器通過將數(shù)據(jù)報(bào)作為本地組播傳輸來完成交付。
本備忘錄指定了主機(jī) IP 實(shí)現(xiàn)所需的擴(kuò)展以支持 IP 組播,其中“主機(jī)/host”是除充當(dāng)組播路由器的主機(jī)或網(wǎng)關(guān)之外的任何 Internet 主機(jī)或網(wǎng)關(guān)。組播路由器內(nèi)部和之間使用的算法和協(xié)議對主機(jī)是透明的,并將在單獨(dú)的文檔中指定。本備忘錄也沒有指定如何為所有類型的網(wǎng)絡(luò)實(shí)現(xiàn)本地網(wǎng)絡(luò)組播,盡管它指定了任意本地網(wǎng)絡(luò)所需的服務(wù)接口,并以以太網(wǎng)規(guī)范為例。其他類型網(wǎng)絡(luò)的規(guī)范將成為未來備忘錄的主題。
1. 一致性級(jí)別
本規(guī)范的一致性分為三個(gè)級(jí)別:
級(jí)別0:不支持 IP 組播。
目前,沒有要求所有 IP 實(shí)現(xiàn)都支持 IP 組播。級(jí)別0主機(jī)通常不受組播活動(dòng)的影響。唯一的例外出現(xiàn)在某些類型的本地網(wǎng)絡(luò)上,其中級(jí)別1或級(jí)別2主機(jī)的存在可能導(dǎo)致組播 IP 數(shù)據(jù)報(bào)錯(cuò)誤傳送到級(jí)別0主機(jī)。此類數(shù)據(jù)報(bào)可以通過其目標(biāo)地址字段中存在的 D 類 IP 地址輕松識(shí)別;它們應(yīng)該被不支持 IP 組播的主機(jī)悄悄丟棄。D 類地址在本備忘錄的第 4 節(jié)中描述。
級(jí)別1:支持發(fā)送但不接收組播 IP 數(shù)據(jù)報(bào)。
級(jí)別 1 允許主機(jī)參與一些基于組播的服務(wù),例如資源位置或狀態(tài)報(bào)告,但不允許主機(jī)加入任何主機(jī)組。IP 實(shí)現(xiàn)可以很容易地從級(jí)別0升級(jí)到級(jí)別1,并且?guī)缀醪恍枰麓a。只有本備忘錄的第 4、5 和 6 節(jié)適用于級(jí)別1實(shí)現(xiàn)。
級(jí)別2:完全支持 IP 組播。
級(jí)別2允許主機(jī)加入和離開主機(jī)組,以及向主機(jī)組發(fā)送 IP 數(shù)據(jù)報(bào)。它需要實(shí)施互聯(lián)網(wǎng)組管理協(xié)議 (Internet Group Management Protocol,IGMP) 并擴(kuò)展主機(jī)內(nèi)的 IP 和本地網(wǎng)絡(luò)服務(wù)接口。本備忘錄的以下所有部分都適用于級(jí)別2實(shí)現(xiàn)。
2、 主機(jī)組地址
主機(jī)組由 D 類 IP 地址標(biāo)識(shí),即以“1110”作為其高四位的那些。E 類 IP 地址,即那些以“1111”作為其高四位的地址,保留用于將來的尋址模式。
在 Internet 標(biāo)準(zhǔn)的“點(diǎn)分十進(jìn)制”表示法中,主機(jī)組地址的范圍從 224.0.0.0 到 239.255.255.255。地址224.0.0.0保證不分配給任何組,224.0.0.1分配給所有IP主機(jī)(包括網(wǎng)關(guān))的永久組。這用于尋址直連網(wǎng)絡(luò)上的所有組播主機(jī)。整個(gè) Internet 上的所有主機(jī)都沒有組播地址(或任何其他 IP 地址)。其他著名的永久團(tuán)體的地址將在“指定號(hào)碼”中公布。
附錄2包含一些與主機(jī)組地址相關(guān)的幾個(gè)問題的背景討論。
3、 主機(jī) IP 實(shí)現(xiàn)模型
主機(jī) IP 實(shí)現(xiàn)的組播擴(kuò)展是根據(jù)下面所示的分層模型指定的。在這個(gè)模型中,ICMP和(對于級(jí)別2主機(jī))IGMP被認(rèn)為是在IP模塊內(nèi)部實(shí)現(xiàn)的,IP地址到本地網(wǎng)絡(luò)地址的映射被認(rèn)為是本地網(wǎng)絡(luò)模塊的職責(zé)。此模型僅用于說明目的,不應(yīng)被解釋為限制實(shí)際實(shí)現(xiàn)。
要提供級(jí)別1組播,主機(jī) IP 實(shí)現(xiàn)必須支持組播 IP 數(shù)據(jù)報(bào)的傳輸。要提供級(jí)別2組播,主機(jī)還必須支持組播 IP 數(shù)據(jù)報(bào)的接收。這兩個(gè)新服務(wù)中的每一個(gè)都在下面的單獨(dú)部分中進(jìn)行了描述。對于每個(gè)服務(wù),為IP 服務(wù)接口、IP 模塊、本地網(wǎng)絡(luò)服務(wù)接口和以太網(wǎng)本地網(wǎng)絡(luò)模塊指定了擴(kuò)展。對以太網(wǎng)以外的本地網(wǎng)絡(luò)模塊的擴(kuò)展被簡要提及,但沒有詳細(xì)說明。
4、 發(fā)送組播 IP 數(shù)據(jù)報(bào)
4.1、 IP 服務(wù)接口的擴(kuò)展
使用與發(fā)送單播 IP 數(shù)據(jù)報(bào)相同的“發(fā)送 IP”操作發(fā)送組播 IP 數(shù)據(jù)報(bào);上層協(xié)議模塊只是指定一個(gè)IP主機(jī)組地址,而不是一個(gè)單獨(dú)的IP地址作為目的地。然而,一些擴(kuò)展可能是必要的或可取的。
首先,服務(wù)接口應(yīng)該為上層協(xié)議提供一種方法來指定傳出組播數(shù)據(jù)報(bào)的 IP 生存時(shí)間,如果這種能力尚不存在。如果上層協(xié)議選擇不指定生存時(shí)間,則對于所有組播 IP 數(shù)據(jù)報(bào)應(yīng)默認(rèn)為 1,因此需要明確選擇以超出單個(gè)網(wǎng)絡(luò)進(jìn)行組播。
其次,對于可能連接到多個(gè)網(wǎng)絡(luò)的主機(jī),服務(wù)接口應(yīng)該為上層協(xié)議提供一種方法來識(shí)別哪個(gè)網(wǎng)絡(luò)接口用于組播傳輸。初始傳輸只使用一個(gè)接口;如有必要,組播路由器負(fù)責(zé)轉(zhuǎn)發(fā)到任何其他網(wǎng)絡(luò)。如果上層協(xié)議選擇不標(biāo)識(shí)出接口,則應(yīng)使用默認(rèn)接口,最好在系統(tǒng)管理的控制下。
第三(僅限級(jí)別2實(shí)現(xiàn)),對于主機(jī)本身是數(shù)據(jù)報(bào)發(fā)送到的組的成員的情況,服務(wù)接口應(yīng)該為上層協(xié)議提供一種方法來禁止本地傳輸數(shù)據(jù)報(bào);默認(rèn)情況下,數(shù)據(jù)報(bào)的副本被環(huán)回。這是對上層協(xié)議的性能優(yōu)化,這些協(xié)議將組的成員資格限制為每個(gè)主機(jī)一個(gè)進(jìn)程(例如路由協(xié)議),或者在較高層處理組通信的環(huán)回(例如組播傳輸協(xié)議)。
4.2、 IP 模塊的擴(kuò)展
為了支持組播 IP 數(shù)據(jù)報(bào)的發(fā)送,必須擴(kuò)展 IP 模塊以在路由傳出數(shù)據(jù)報(bào)時(shí)識(shí)別 IP 主機(jī)組地址。大多數(shù) IP 實(shí)現(xiàn)包括以下邏輯:
如果 IP-destination 在同一本地網(wǎng)絡(luò)上,則將數(shù)據(jù)報(bào)本地發(fā)送到 IP-destination;否則,將數(shù)據(jù)報(bào)本地發(fā)送到 GatewayTo( IP-destination )。
要允許組播傳輸,必須將路由邏輯更改為:
如果 IP-destination 在同一個(gè)本地網(wǎng)絡(luò)上或 IP-destination 是一個(gè)主機(jī)組,則將數(shù)據(jù)報(bào)本地發(fā)送到 IP-destination;否則,將數(shù)據(jù)報(bào)本地發(fā)送到 GatewayTo( IP-destination )。
如果發(fā)送主機(jī)本身是傳出接口上目標(biāo)組的成員,則傳出數(shù)據(jù)報(bào)的副本必須環(huán)回本地傳遞,除非被發(fā)送方禁止。(僅限級(jí)別2實(shí)現(xiàn)。)傳出數(shù)據(jù)報(bào)的 IP 源地址必須是對應(yīng)于傳出接口的單個(gè)地址之一。
主機(jī)組地址絕不能放置在源地址字段中,或者位于傳出 IP 數(shù)據(jù)報(bào)的源路由或記錄路由選項(xiàng)中的任何位置。
4.3、 本地網(wǎng)絡(luò)服務(wù)接口的擴(kuò)展
無需更改本地網(wǎng)絡(luò)服務(wù)接口即可支持組播 IP 數(shù)據(jù)報(bào)的發(fā)送。當(dāng) IP 模塊調(diào)用現(xiàn)有的“發(fā)送本地”操作時(shí),它僅指定 IP 主機(jī)組目的地,而不是單個(gè) IP 目的地。
4.4、 以太網(wǎng)本地網(wǎng)絡(luò)模塊的擴(kuò)展
以太網(wǎng)通過在以太網(wǎng)數(shù)據(jù)包的目的字段中允許組播地址來直接支持本地組播數(shù)據(jù)包的發(fā)送。支持組播 IP 數(shù)據(jù)報(bào)發(fā)送所需的只是將 IP 主機(jī)組地址映射到以太網(wǎng)組播地址的過程。
通過將 IP 地址的低 23 位放入以太網(wǎng)組播地址 01-00-5E-00-00-00(十六進(jìn)制)的低 23 位,將 IP 主機(jī)組地址映射到以太網(wǎng)組播地址)。由于 IP 主機(jī)組地址有 28 位有效位,多個(gè)主機(jī)組地址可能映射到同一個(gè)以太網(wǎng)組播地址。
4.5、 對以太網(wǎng)以外的本地網(wǎng)絡(luò)模塊的擴(kuò)展
其他直接支持組播的網(wǎng)絡(luò),例如符合 IEEE 802.2 標(biāo)準(zhǔn)的環(huán)網(wǎng)或總線,為了發(fā)送組播 IP 數(shù)據(jù)報(bào),可以采用與以太網(wǎng)相同的方式進(jìn)行處理。對于支持廣播但不支持組播的網(wǎng)絡(luò),例如實(shí)驗(yàn)以太網(wǎng),所有 IP 主機(jī)組地址都可以映射到單個(gè)本地廣播地址(以增加所有本地主機(jī)的開銷為代價(jià))。對于連接兩臺(tái)主機(jī)(或一臺(tái)主機(jī)和一個(gè)組播路由器)的點(diǎn)對點(diǎn)鏈路,組播應(yīng)該像單播一樣傳輸。對于像 ARPANET 這樣的存儲(chǔ)轉(zhuǎn)發(fā)網(wǎng)絡(luò)或公共 X.25 網(wǎng)絡(luò),所有 IP 主機(jī)組地址都可能映射到 IP 組播路由器的眾所周知的本地地址;這種網(wǎng)絡(luò)上的路由器將負(fù)責(zé)完成網(wǎng)絡(luò)內(nèi)以及網(wǎng)絡(luò)之間的組播傳送。
5、 接收組播 IP 數(shù)據(jù)報(bào)
5.1、 IP 服務(wù)接口的擴(kuò)展
上層協(xié)議模塊使用與正常單播數(shù)據(jù)報(bào)相同的“接收 IP”操作來接收傳入的組播 IP 數(shù)據(jù)報(bào)。目的上層協(xié)議的選擇是基于IP頭中的協(xié)議字段,與目的IP地址無關(guān)。但是,在可以接收任何發(fā)往特定組的數(shù)據(jù)報(bào)之前,上層協(xié)議必須要求 IP 模塊加入該組。因此,必須擴(kuò)展 IP 服務(wù)接口以提供兩個(gè)新操作:
JoinHostGroup(組地址,接口)
LeaveHostGroup(組地址,接口)
JoinHostGroup 操作請求該主機(jī)成為給定網(wǎng)絡(luò)接口上由“group-address”標(biāo)識(shí)的主機(jī)組的成員。LeaveGroup 操作請求該主機(jī)放棄其在給定網(wǎng)絡(luò)接口上由“group-address”標(biāo)識(shí)的主機(jī)組中的成員資格。在僅支持一個(gè)接口的主機(jī)上可以省略 interface 參數(shù)。對于可能連接到多個(gè)網(wǎng)絡(luò)的主機(jī),上層協(xié)議可以選擇不指定接口,在這種情況下,請求將應(yīng)用于發(fā)送組播數(shù)據(jù)報(bào)的默認(rèn)接口(。
允許在多個(gè)接口上加入同一組,在這種情況下可能會(huì)收到重復(fù)的組播數(shù)據(jù)報(bào)。也允許多個(gè)上層協(xié)議請求同一組的成員資格。
兩個(gè)操作都應(yīng)該立即返回(即它們是非阻塞操作),指示成功或失敗。由于組地址或接口標(biāo)識(shí)符無效,任一操作都可能失敗。由于缺少本地資源,JoinHostGroup 可能會(huì)失敗。LeaveHostGroup 可能會(huì)失敗,因?yàn)橹鳈C(jī)不屬于給定接口上的給定組。LeaveHostGroup 可能會(huì)成功,但如果多個(gè)上層協(xié)議請求同一組中的成員身份,則成員身份會(huì)持續(xù)存在。
5.2、 IP 模塊的擴(kuò)展
為了支持組播 IP 數(shù)據(jù)報(bào)的接收,必須擴(kuò)展 IP 模塊以維護(hù)與每個(gè)網(wǎng)絡(luò)接口關(guān)聯(lián)的主機(jī)組成員資格列表。以這些組之一為目的地的傳入數(shù)據(jù)報(bào)的處理方式與以主機(jī)的單個(gè)地址之一為目的地的數(shù)據(jù)報(bào)完全相同。
發(fā)往主機(jī)不屬于的組的傳入數(shù)據(jù)報(bào)將被丟棄,而不會(huì)生成任何錯(cuò)誤報(bào)告或日志條目。在具有多個(gè)網(wǎng)絡(luò)接口的主機(jī)上,如果數(shù)據(jù)報(bào)通過一個(gè)接口到達(dá),而目的地是該主機(jī)所屬的組,但僅在不同的接口上,該數(shù)據(jù)報(bào)將被悄悄丟棄。(這些情況只會(huì)發(fā)生在本地網(wǎng)絡(luò)模塊中組播地址過濾不充分的結(jié)果。)傳入的數(shù)據(jù)報(bào)不會(huì)因?yàn)?IP 生存時(shí)間為 1 而被拒絕(即,生存時(shí)間不應(yīng)在未轉(zhuǎn)發(fā)的到達(dá)數(shù)據(jù)報(bào)上自動(dòng)遞減)。在其源地址字段中包含 IP 主機(jī)組地址的傳入數(shù)據(jù)報(bào)將被悄悄丟棄。響應(yīng)發(fā)往 IP 主機(jī)組的數(shù)據(jù)報(bào),從不生成 ICMP 錯(cuò)誤消息(目標(biāo)不可達(dá)、超時(shí)、參數(shù)問題、源抑制或重定向)。
響應(yīng)來自上層協(xié)議的 JoinHostGroup 和 LeaveHostGroup 請求,更新主機(jī)組成員資格列表。每個(gè)成員都應(yīng)該有一個(gè)關(guān)聯(lián)的引用計(jì)數(shù)或類似的機(jī)制來處理多個(gè)加入和離開同一個(gè)組的請求。在給定接口上的第一個(gè)加入請求和最后一個(gè)離開組的請求時(shí),該接口的本地網(wǎng)絡(luò)模塊會(huì)收到通知,以便它可以更新其組播接收過濾器。
IP 模塊還必須擴(kuò)展以實(shí)現(xiàn) IGMP 協(xié)議,在附錄1中指定。IGMP 用于使相鄰組播路由器了解特定本地網(wǎng)絡(luò)上存在的主機(jī)組成員資格。為了支持 IGMP,每個(gè)級(jí)別2主機(jī)必須在初始化時(shí)加入每個(gè)網(wǎng)絡(luò)接口上的“所有主機(jī)”組(地址 224.0.0.1),并且只要主機(jī)處于活動(dòng)狀態(tài),就必須保持成員身份。
(尋址到所有主機(jī)組的數(shù)據(jù)報(bào)被組播路由器識(shí)別為一種特殊情況并且永遠(yuǎn)不會(huì)轉(zhuǎn)發(fā)到單個(gè)網(wǎng)絡(luò)之外,無論它們的生存時(shí)間如何。因此,所有主機(jī)地址不能用作互聯(lián)網(wǎng)范圍的廣播地址。為了IGMP的目的,只有當(dāng)主機(jī)至少屬于一個(gè)其他組時(shí)才真正需要所有主機(jī)組的成員。但是,指定主機(jī)應(yīng)保持為all-hosts組的成員。主機(jī)組一直是因?yàn)椋?)它更簡單,(2)接收不必要的 IGMP 查詢的頻率應(yīng)該足夠低,開銷可以忽略不計(jì),以及(3)所有主機(jī)地址可以用于其他面向路由的目的,例如通告網(wǎng)關(guān)的存在或解析本地地址。)
5.3、 本地網(wǎng)絡(luò)服務(wù)接口的擴(kuò)展
使用與本地網(wǎng)絡(luò)單播數(shù)據(jù)包相同的“接收本地”操作將傳入的本地網(wǎng)絡(luò)組播數(shù)據(jù)包傳送到 IP 模塊。為了讓 IP 模塊告訴本地網(wǎng)絡(luò)模塊接受哪些組播數(shù)據(jù)包,本地網(wǎng)絡(luò)服務(wù)接口被擴(kuò)展以提供兩個(gè)新的操作:
JoinLocalGroup ( group-address )
LeaveLocalGroup ( group-address )
其中“group-address”是 IP 主機(jī)組地址。JoinLocalGroup 操作請求本地網(wǎng)絡(luò)模塊接受并傳送隨后到達(dá)的以給定 IP 主機(jī)組地址為目的地的數(shù)據(jù)包。LeaveLocalGroup 操作請求本地網(wǎng)絡(luò)模塊停止傳送發(fā)往給定 IP 主機(jī)組地址的數(shù)據(jù)包。本地網(wǎng)絡(luò)模塊應(yīng)根據(jù)需要將 IP 主機(jī)組地址映射到本地網(wǎng)絡(luò)地址,以更新其組播接收過濾器。任何本地網(wǎng)絡(luò)模塊都可以自由地忽略 LeaveLocalGroup 請求,并且如果無法充分過濾傳入的數(shù)據(jù)包,則可以將數(shù)據(jù)包發(fā)送到比 JoinLocalGroup 請求中指定的地址更多的地址。
本地網(wǎng)絡(luò)模塊不得傳送從該模塊傳輸?shù)娜魏谓M播數(shù)據(jù)包;組播的環(huán)回在 IP 層或更高層處理。
5.4、 以太網(wǎng)本地網(wǎng)絡(luò)模塊的擴(kuò)展
為了支持組播 IP 數(shù)據(jù)報(bào)的接收,以太網(wǎng)模塊必須能夠接收尋址到與主機(jī)的 IP 主機(jī)組地址相對應(yīng)的以太網(wǎng)組播地址的數(shù)據(jù)包。非常需要利用以太網(wǎng)硬件接口可能具有的任何地址過濾功能,以便主機(jī)只接收那些發(fā)往它的數(shù)據(jù)包。
不幸的是,許多當(dāng)前的以太網(wǎng)接口對硬件可配置為識(shí)別的地址數(shù)量有很小的限制。然而,實(shí)現(xiàn)必須能夠偵聽任意數(shù)量的以太網(wǎng)組播地址,這可能意味著在地址數(shù)量超過過濾器限制的那些時(shí)間段內(nèi)“打開”地址過濾器以接受所有組播數(shù)據(jù)包。
對于硬件地址過濾不充分的接口,可能需要(出于性能原因)在以太網(wǎng)模塊的軟件中執(zhí)行以太網(wǎng)地址過濾。但是,這不是強(qiáng)制性的,因?yàn)?IP 模塊根據(jù) IP 目標(biāo)地址執(zhí)行自己的過濾。
5.5、 對以太網(wǎng)以外的本地網(wǎng)絡(luò)模塊的擴(kuò)展
其他組播網(wǎng)絡(luò),例如 IEEE 802.2 網(wǎng)絡(luò),可以以與以太網(wǎng)相同的方式處理,以接收組播 IP 數(shù)據(jù)報(bào)。對于純廣播網(wǎng)絡(luò),例如實(shí)驗(yàn)以太網(wǎng),所有傳入的廣播數(shù)據(jù)包都可以被接受并傳遞到 IP 模塊進(jìn)行 IP 級(jí)過濾。在點(diǎn)對點(diǎn)或存儲(chǔ)轉(zhuǎn)發(fā)網(wǎng)絡(luò)上,組播 IP 數(shù)據(jù)報(bào)將作為本地網(wǎng)絡(luò)單播到達(dá),因此無需更改本地網(wǎng)絡(luò)模塊。
附錄1、 互聯(lián)網(wǎng)組管理協(xié)議 (IGMP)
IP 主機(jī)使用互聯(lián)網(wǎng)組管理協(xié)議 (Internet Group Management Protocol,IGMP) 將其主機(jī)組成員身份報(bào)告給任何緊鄰的組播路由器。IGMP 是一種非對稱協(xié)議,這里是從主機(jī)的角度而不是組播路由器的角度來指定的。(IGMP 也可以在組播路由器之間對稱或非對稱地使用。這種用法在此未指定。)與 ICMP 一樣,IGMP 是 IP 的組成部分。要求所有符合 IP 組播規(guī)范級(jí)別2的主機(jī)都實(shí)現(xiàn)。IGMP 消息封裝在 IP 數(shù)據(jù)報(bào)中,IP 協(xié)議編號(hào)為 2。所有與主機(jī)相關(guān)的 IGMP 消息都具有以下格式:
版本/ Version
本備忘錄規(guī)定了 IGMP 的第 1 版。版本 0 在 RFC-988 中指定,現(xiàn)在已過時(shí)。
類型/ Type
主機(jī)關(guān)注的 IGMP 消息有兩種類型:
1 = 主機(jī)成員查詢
2 = 主機(jī)成員報(bào)告
未使用/ Unused
未使用的字段,發(fā)送時(shí)歸零,接收時(shí)忽略。
校驗(yàn)和/ Checksum
校驗(yàn)和是 8 字節(jié) IGMP 消息的補(bǔ)碼和的 16 位補(bǔ)碼。為了計(jì)算校驗(yàn)和,校驗(yàn)和字段被清零。
組地址/ Group Address
在主機(jī)成員查詢消息中,組地址字段在發(fā)送時(shí)為零,在接收時(shí)被忽略。
在主機(jī)成員報(bào)告消息中,組地址字段保存正在報(bào)告的組的 IP 主機(jī)組地址。
非正式協(xié)議說明
組播路由器發(fā)送主機(jī)成員查詢消息(以下稱為查詢)以發(fā)現(xiàn)哪些主機(jī)組在其連接的本地網(wǎng)絡(luò)上有成員。查詢尋址到所有主機(jī)組(地址 224.0.0.1),并攜帶 IP 生存時(shí)間為 1。
主機(jī)通過生成主機(jī)成員報(bào)告(以下稱為報(bào)告)來響應(yīng)查詢,在收到查詢的網(wǎng)絡(luò)接口上報(bào)告它們所屬的每個(gè)主機(jī)組。為了避免并發(fā)報(bào)告的“內(nèi)爆”并減少傳輸?shù)膱?bào)告總數(shù),使用了兩種技術(shù):
1. 當(dāng)主機(jī)接收到查詢時(shí),它不是立即發(fā)送報(bào)告,而是在傳入查詢的網(wǎng)絡(luò)接口上為其每個(gè)組成員啟動(dòng)報(bào)告延遲計(jì)時(shí)器。每個(gè)計(jì)時(shí)器都設(shè)置為一個(gè)不同的、隨機(jī)選擇的值,介于 0 和 D 秒之間。當(dāng)計(jì)時(shí)器到期時(shí),將為相應(yīng)的主機(jī)組生成報(bào)告。因此,報(bào)告分散在 D 秒間隔內(nèi),而不是同時(shí)發(fā)生。
2. 發(fā)送報(bào)告時(shí),IP 目標(biāo)地址與被報(bào)告的主機(jī)組地址相同,IP 生存時(shí)間為 1,以便同一網(wǎng)絡(luò)上同一組的其他成員可以偷聽報(bào)告。如果主機(jī)在該網(wǎng)絡(luò)上聽到其所屬組的報(bào)告,則該主機(jī)將停止該組自己的計(jì)時(shí)器,并且不會(huì)為該組生成報(bào)告。因此,在正常情況下,對于網(wǎng)絡(luò)上存在的每個(gè)組,僅由延遲計(jì)時(shí)器最先到期的成員主機(jī)生成一個(gè)報(bào)告。請注意,組播路由器接收所有 IP 組播數(shù)據(jù)報(bào),因此無需明確尋址。進(jìn)一步注意,路由器不需要知道哪些主機(jī)屬于一個(gè)組,只需知道至少一個(gè)主機(jī)屬于特定網(wǎng)絡(luò)上的一個(gè)組。
上述行為有兩個(gè)例外。首先,如果在接收到查詢時(shí)已經(jīng)為組成員資格運(yùn)行報(bào)告延遲計(jì)時(shí)器,則該計(jì)時(shí)器不會(huì)重置為新的隨機(jī)值,而是允許以其當(dāng)前值繼續(xù)運(yùn)行。其次,永遠(yuǎn)不會(huì)為所有主機(jī)組 (224.0.0.1) 中的主機(jī)成員資格設(shè)置報(bào)告延遲計(jì)時(shí)器,并且永遠(yuǎn)不會(huì)報(bào)告該成員資格。
如果主機(jī)使用偽隨機(jī)數(shù)生成器來計(jì)算報(bào)告延遲,則應(yīng)使用主機(jī)自己的單個(gè) IP 地址之一作為生成器種子的一部分,以減少多臺(tái)主機(jī)生成相同延遲序列的機(jī)會(huì)。
主機(jī)應(yīng)確認(rèn)收到的Report 的IP 目的字段和IGMP 組地址字段中的IP 主機(jī)組地址相同,以確保主機(jī)自己的Report 不會(huì)被錯(cuò)誤接收的Report 取消。主機(jī)應(yīng)該安靜地丟棄除主機(jī)成員查詢或主機(jī)成員報(bào)告之外的任何類型的 IGMP 消息。
組播路由器定期發(fā)送查詢以刷新他們對特定網(wǎng)絡(luò)上存在的成員資格的了解。如果在一定數(shù)量的查詢之后沒有收到特定組的報(bào)告,則路由器假定該組沒有本地成員并且它們不需要將該組的遠(yuǎn)程發(fā)起的組播轉(zhuǎn)發(fā)到本地網(wǎng)絡(luò)。查詢通常很少發(fā)送(每分鐘不超過一次),以便將主機(jī)和網(wǎng)絡(luò)上的 IGMP 開銷保持在非常低的水平。然而,當(dāng)組播路由器啟動(dòng)時(shí),它可能會(huì)發(fā)出幾個(gè)緊密間隔的查詢,以便快速建立其對本地成員資格的了解。
當(dāng)主機(jī)加入一個(gè)新組時(shí),它應(yīng)該立即為該組發(fā)送一個(gè)報(bào)告,而不是等待一個(gè)查詢,以防它是網(wǎng)絡(luò)上該組的第一個(gè)成員。為避免初始報(bào)告丟失或損壞的可能性,建議在短暫延遲后重復(fù)一次或兩次。(實(shí)現(xiàn)此目的的一種簡單方法是將其視為僅收到該組的查詢,設(shè)置該組的隨機(jī)報(bào)告延遲計(jì)時(shí)器。下面的狀態(tài)轉(zhuǎn)換圖說明了這種方法。)請注意,在不存在組播路由器的網(wǎng)絡(luò)上,唯一的 IGMP 流量是主機(jī)加入新組時(shí)發(fā)送的一個(gè)或多個(gè)報(bào)告。
狀態(tài)轉(zhuǎn)換圖
下面的狀態(tài)轉(zhuǎn)換圖更正式地指定了 IGMP 行為。對于任何單個(gè)網(wǎng)絡(luò)接口上的任何單個(gè) IP 主機(jī)組,主機(jī)可能處于以下三種可能狀態(tài)之一:
非成員/ Non-Member狀態(tài),當(dāng)主機(jī)不屬于接口上的組時(shí)。這是所有網(wǎng)絡(luò)接口上所有成員的初始狀態(tài);它不需要主機(jī)中的存儲(chǔ)。
延遲成員/ Delaying Member狀態(tài),當(dāng)主機(jī)屬于接口上的組并且為該成員運(yùn)行報(bào)告延遲計(jì)時(shí)器時(shí)。
空閑成員/ Idle Member狀態(tài),當(dāng)主機(jī)屬于接口上的組并且沒有為該成員運(yùn)行的報(bào)告延遲計(jì)時(shí)器時(shí)。
有五個(gè)重要事件會(huì)導(dǎo)致 IGMP 狀態(tài)轉(zhuǎn)換:
當(dāng)主機(jī)決定加入接口上的組時(shí),會(huì)發(fā)生“加入組/join group”。它可能只發(fā)生在非成員狀態(tài)。
當(dāng)主機(jī)決定離開接口上的組時(shí),會(huì)發(fā)生“離開組/leave group”。它可能只發(fā)生在延遲成員和空閑成員狀態(tài)。
當(dāng)主機(jī)收到有效的 IGMP 主機(jī)成員查詢消息時(shí),會(huì)出現(xiàn)“查詢收到/query received”。要有效,查詢消息必須至少有 8 個(gè)八位字節(jié)長,具有正確的 IGMP 校驗(yàn)和,并且 IP 目標(biāo)地址為 224.0.0.1。單個(gè)查詢適用于接收查詢的接口上的所有成員資格。對于處于非成員或延遲成員狀態(tài)的成員,它會(huì)被忽略。
當(dāng)主機(jī)收到有效的 IGMP 主機(jī)成員報(bào)告消息時(shí),會(huì)出現(xiàn)“報(bào)告收到/report received”。要有效,報(bào)告消息必須至少有 8 個(gè)八位字節(jié)長,具有正確的 IGMP 校驗(yàn)和,并且在其 IP 目標(biāo)字段和 IGMP 組地址字段中包含相同的 IP 主機(jī)組地址。報(bào)告僅適用于在接收報(bào)告的界面上由報(bào)告確定的組中的成員。對于處于非成員或空閑成員狀態(tài)的成員,它會(huì)被忽略。
當(dāng)接口上的組的報(bào)告延遲計(jì)時(shí)器到期時(shí),發(fā)生“計(jì)時(shí)器到期/timer expired”。它可能只發(fā)生在延遲成員國。
所有其他事件,例如接收無效的 IGMP 消息,或除查詢或報(bào)告之外的 IGMP 消息,在所有狀態(tài)下都將被忽略。
針對上述事件,可以采取三種可能的行動(dòng):
在界面上為組“發(fā)送報(bào)告/send report”。
接口上組的“啟動(dòng)計(jì)時(shí)器/start timer”,使用 0 到 D 秒之間的隨機(jī)延遲值。
接口上組的“停止計(jì)時(shí)器/stop timer”。
在下圖中,每個(gè)狀態(tài)轉(zhuǎn)換弧都標(biāo)有導(dǎo)致轉(zhuǎn)換的事件,并在括號(hào)中標(biāo)記了在轉(zhuǎn)換期間采取的任何操作。
all-hosts 組(地址 224.0.0.1)作為特殊情況處理。主機(jī)在每個(gè)接口上以該組的空閑成員狀態(tài)開始,從不轉(zhuǎn)換到另一個(gè)狀態(tài),也從不發(fā)送該組的報(bào)告。
協(xié)議參數(shù)
最大報(bào)告延遲 D 為 10 秒。
附錄2、 主機(jī)組地址問題
本附錄不是 IP 組播規(guī)范的一部分,但提供了與 IP 主機(jī)組地址相關(guān)的幾個(gè)問題的背景討論。
組地址綁定
IP主機(jī)組地址綁定到物理主機(jī)可以認(rèn)為是IP單播地址綁定的泛化。IP 單播地址靜態(tài)綁定到單個(gè) IP 網(wǎng)絡(luò)上的單個(gè)本地網(wǎng)絡(luò)接口。IP 主機(jī)組地址動(dòng)態(tài)綁定到一組 IP 網(wǎng)絡(luò)上的一組本地網(wǎng)絡(luò)接口。
了解 IP 主機(jī)組地址不綁定到一組 IP 單播地址很重要。組播路由器不需要維護(hù)每個(gè)主機(jī)組的單個(gè)成員的列表。例如,連接到以太網(wǎng)的組播路由器只需要將單個(gè)以太網(wǎng)組播地址與具有本地成員的每個(gè)主機(jī)組相關(guān)聯(lián),而不是成員的個(gè)人 IP 或以太網(wǎng)地址的列表。
臨時(shí)主機(jī)組地址的分配
本備忘錄沒有指定如何分配臨時(shí)組地址。預(yù)計(jì) IP 臨時(shí)主機(jī)組地址空間的不同部分將使用不同的技術(shù)進(jìn)行分配。例如,可能有許多服務(wù)器可以聯(lián)系以獲取新的臨時(shí)組地址。一些更高級(jí)別的協(xié)議(例如 RFC-1045 中指定的 VMTP)可能會(huì)生成更高級(jí)別的臨時(shí)“進(jìn)程組”或“實(shí)體組”地址,然后通過算法將這些地址映射到 IP 臨時(shí)主機(jī)組地址的子集,類似于IP 主機(jī)組地址映射到以太網(wǎng)組播地址的方式。IP 組地址空間的一部分可能會(huì)留出供應(yīng)用程序隨機(jī)分配,這些應(yīng)用程序可以容忍與其他組播用戶偶爾發(fā)生沖突,可能會(huì)生成新地址,直到找到合適的“安靜”地址。
通常,主機(jī)不能假設(shè)發(fā)送到任何主機(jī)組地址的數(shù)據(jù)報(bào)只會(huì)到達(dá)預(yù)期的主機(jī),或者作為臨時(shí)主機(jī)組成員接收的數(shù)據(jù)報(bào)是為接收者準(zhǔn)備的。必須使用更高級(jí)別的標(biāo)識(shí)符或身份驗(yàn)證令牌在 IP 之上的級(jí)別檢測誤投。如果發(fā)送者擔(dān)心不需要的監(jiān)聽器,則傳輸?shù)街鳈C(jī)組地址的信息應(yīng)加密或由管理路由控制進(jìn)行管理。
以上就是IGMPv1:IP 組播的主機(jī)擴(kuò)展的介紹。如果你還有其他問題,歡迎進(jìn)行咨詢探討,希望億聯(lián)云的專業(yè)的解決方案,可以解決你目前遇到的問題。億聯(lián)云提供主機(jī)托管、服務(wù)器租用、mpls專線接入、SD-WAN組網(wǎng)等方面的專業(yè)服務(wù),資源覆蓋全球。歡迎咨詢。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,請聯(lián)系站長郵箱:shawn.lee@eliancloud.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。
標(biāo)題:IGMPv1:IP 組播的主機(jī)擴(kuò)展
TAG標(biāo)簽:企業(yè)組網(wǎng)
地址:http://www.dangdangload.com/article/20210922105201.html