?? rfc2236.txt
字號:
組織:中國互動出版網(http://www.china-pub.com/)
RFC文檔中文翻譯計劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:周海燕(z_d_qx z_d_qx@263.net)
譯文發布時間:2001-4-2
版權:本中文翻譯文檔版權歸中國互動出版網所有。可以用于非商業用途自由轉載,但必須保留本文檔的翻譯及版權信息。
網絡工作組 W. Fenner
RFC: 2236 Xerox PARC
更新: 1112 November 1997
類別 : 標準調試
RFC 2236 Internet組管理協議,版本2
(RFC 2236 Internet Group Management Protocol, Version 2)
備忘錄:
該文檔為Internet團體定義了Internet標準檢測協議,并要求對其進行討論以求進一步的改進。該協議的標準及其請參考當前的“Internet 商業協議標準("Internet Official Protocol Standards" )(STD 1). 該備忘錄可以任意發布。
版權聲明
版權保留歸Internet Society (1997)所有.
摘要:
該備忘文檔IGMPv2,歸IP 主機使用,并向路由器報告他們的組播成員關系。它對STD 5, RFC 1112進行了升級.
IGMPv2 允許組中成員的退出可以迅速報告給路由協議,這一點對于高帶寬的組播組以及其子網中成員關系的動態調整尤為重要。
該文檔是Internet工程技術組織一個域內組播的技術標準。如有任何注釋應向idmr@cs.ucl.ac.uk郵件列表或其作者提出。
目錄
1. 關鍵字定義 3
2. 介紹 3
2.1. 類型 3
2.2. 最大的響應時間 4
2.3. 校驗字 4
2.4. 組地址 4
2.5. 其它域: 4
3. 協議描述 4
4. 與 IGMPv1 路由器的兼容 性 6
5. 和IGMPv1 主機的兼容性 6
6. 主機狀態報文 6
7. 路由器狀態報文 9
8. 定時器表和默認值 13
8.1. 健壯性變量 13
8.2. 查詢周期 13
8.3. 查詢響應周期 13
8.4. 組成員周期 13
8.5. 其它的查詢存在周期 14
8.6. 初始查詢周期 14
8.7. 初始查詢周期 14
8.8. 最后的成員查詢周期 14
8.9. 最后成員計數 14
8.10. 非請求報告周期 14
8.11. 版本1路由器存在超時 14
9. 消息目的地 15
11. 致謝 16
12. 參考 16
13. 附錄 I - 基于IGMPv1的改變 16
14. 作者地址 17
15. 版權聲明 17
1. 關鍵字定義
關鍵字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" 均在RFC 2119 [RFC 2119]有詳細說明。
2. 介紹
Internet組管理協議 (IGMP)在IP主機上應用,并向任一個鄰近的路由器報告他們的組播成員關系。該備忘錄僅描述了 IGMP 在主機和路由器之間如何確定 其組成員關系, 在此路由器和組播成員主機的行為相近。IGMP 也用于兩個路由器之間,但不在此進行討論。
和ICMP一樣, IGMP 也是IP的一個組成部分。要求在所有想接收IP組播的主機都進行實現。IGMP消息封裝在IP報文中,其IP的協議號為2。 所有在該文檔中說明了的IGMP 消息均會用TTL為1進行傳遞 ,并在IP頭中包括了IP 路由檢測選項 [RFC 2113] 。
所有和主機相關 的IGMP 消息見下:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Max Resp Time | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Group Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2.1. 類型
有3種 IGMP 消息和主機與路由器的交互有關:
0x11 = 成員關系查詢
有兩個成員關系查詢的子類型:
- 一般查詢,用于了解一個組中是否有成員在相鄰的網絡中。
- 特定組查詢,用于了解在相鄰的網絡中特定的組是否有成員。
這兩個消息由組地址進行區分,詳見第 1。4章。成員查詢消息則類似于"Query"。
0x16 = 版本 2 成員關系報告。
0x17 = 離開組
為了和IGMP v1兼容,還有另外的一個附加的消息類別:
0x12 = 版本 1 成員報告。
該文檔中的成員關系報告實指“報告”。當沒有定義版 本號時,則同時適用于兩個版本。一個不能識別的消息類型應將其忽略。新的消息類型會用新版本的IGMP,組播路由協議或其它的用途來使用。
2.2. 最大的響應時間
最大的響 應時間域僅在成員關系查詢中有效。規定了在發送一個回應報文時最大的允許時間,(其單位為1/10秒)。在所有其它的消息中,會由發 送者置為0,而接收者則忽略該域。
改變該設置可以允許IGMPv2 路由器調 整離開延時"leave latency" (最后一個成員離開組的時 刻和通知路由協議該處已不在存在成員時的這一段時間。),詳見第7.8節。 也允許調整子網上的IGMP 的突發流量,詳見第 7.3節。
2.3. 校驗字
校驗字是IGMP消息長度(IP包的整個有效負載)的16位檢測。該域設為0,在計算校驗字時將該域包在一起進行計算。當傳送包的時候,必須計算該校驗字并插入到該域中去。當接收包的時候,該校驗字必須在處理該包之前進行檢驗。
2.4. 組地址
在成員查詢消息中,發送一個通常的查詢時組地址域應設為0,當發送一個特定組查詢時,則應設置組的地址。 在成員報告或離開組的消息中,組的地址域保留了要報告或要離開的地址。
2.5. 其它域:
注意IGMP 消息可能會大于8個字節,尤其是將來向后兼容的IGMP版本。有 一點必須注意,一個IGMPv2 的實現在處理包的時候必須忽略第一個8位字節。但是,IGMP的校驗總是在整個IP的有效負載上進行計算的,而不是正好在首先的8字節上。
3. 協議描述
注意:定時器的數值將在該文檔的后面進行描述。定時器和計數器的名字都寫在方括號中。術語"interface" 有時會用于該文檔中,(如果一個路由器在一個網絡上有多個物理接口.)意思是說"鄰接網絡的主接口". 主機, 另一方面來說,需要在所有的的成員加入的接口上來實他們的功能。 組播路由器使用IGMP 來了解在他們所有的鄰接物理網絡上哪個組擁有成員?!〗M播路由器保留有一個組播組成員的列表,和一個針對每個成員的定時器。 "Multicast group memberships" 指在一個指定的鄰接網絡上至少有一個成員存在的組播組,而不是所有成員的列表?!】紤]到其所有的鄰接網絡,一個組應該是兩個角色中的一個:查詢者或非查詢者。在每個物理網絡上僅能有一個查詢者。在每個鄰接的網絡上,開始時所有的路由器都做為一個查詢者。如果一個組播路由器從一個擁有低IP地址的路由器聽到了查詢消息,則在該網絡上它必須作為一個非查詢者。如果一個路由器沒有從其他的路由器那聽到查詢消息(在查詢周期內),則會繼續做為一個查詢者?!≡撀酚善髯鳛橐粋€查詢者周其性的在每個鄰接的(查詢周期)網絡上發出通常的查詢消息,請求得到成員信息。在開始時,路由器應該發送 [初始查詢計數] 間隔短的一般查詢消息,從而可以快速的可靠的確定成員信息。一般查詢的組地址為0,發給所有系統的組播組 (224.0.0.1),有最大的查詢響應時間 [Query Response Interval]。
當一個主機接收到了普通的查詢,它會給每個組(有查詢請求到達并有成員存在的端口,包括所有系統平臺的組)都設一個延時定時器,每一個定時器都設為一個不同的隨機值,該值由主機上所能有的最高時鐘頻率產生,范圍從0,到查詢包中所定義的最大響應時間。當一個主機接收到了一個特定組的查詢,則會將延時定時器設為從0到最大響應時間的一個隨機值。如果定時器已經運行了,則如果所要求的最大響應時間小于當前運行的定時值所剩部份時,重置該定時器。當組的定時器到時后,主機組播一個版本2的成員報告到該組中,其IP 中 TTL的值為1。如主機接收到了另一個主機的報告(版本為1或2),而其本身的定時器還沒有到時,則它會停止其特定組的定時器,且不發送報告,這樣就減少了重復的報告。
當路由器接收到了報告,它就會把該組報告加入到一個組播組成員列表中,并且會為其成員關系設一個值為組成員生存周期的定時器 。重復的報告會導致該定時器的刷新。如果在定時器到時之前沒有接收到一個特定組的報告,路由器則會假定沒有本地的成員,它也不再需要在鄰接的網絡上為該組轉發組播消息了。
當一個主機加入了一個組播組,則應該立即發送一個非請求的版本2的成員關系報告給組,以防它是網絡上該組的第一個成員。初始的成員報告可能會丟失或會受到損害,為了防止此種情況,推薦在短的間隔時間內報告一次或兩次(非請求報告間隔)。(一種簡單的方法可以解決該問題。即通過發送版本號為2的初始成員報告,就好象是從一個組接收到了特定組查詢的消息一樣,并設置適當的定時器)。
當一主機離開一個組播組,如果它是最后一個主機,除它外沒有其它的機器來報告成員關系了,則它應該發送一條離開組的消息 給所有路由器,地址為組播組(224.0.0.2),如它并不是最后一個回答查詢的主機,它可以不發送消息,就好象另一個在子網中的成員一樣。這樣也可以減少了一些數據流量。一個沒有足夠存儲器的主機不能記住是否它是最后一個主機,它離開一個組時,它總是會發送一條離開組的消息。為了和早期的版本標準的兼容,路由器應接收該條離開組的消息。離開組消息發布給所有的路由器組,因為其它的組成員不必知道一個主機是否離開了該組,但它不會破壞該離開組的消息。
當查詢者在其接口上接收到了組成員離開組的消息之后,它發送 [最后成員查詢計數 ] 特定組成員查詢 消息[最后成員查詢間隔] 給正離開的組。這些特定組查詢有最大的響應時間(設為最后成員查詢間隔)。如果在最后查詢的響應時間之后,沒有報告者接到消息,路由器則會假定該組沒有本地的成員。在該時間內,任一個查詢者到非查詢者的傳送都會忽略,一個路由器會繼續發送特定組的查詢。
對于接收端口上沒有組成員時,非查詢者必須忽略離開組的消息,而查詢者則是應該忽略離開組的消息。當查詢者接收發一個特定組查詢消息,如果它的組成員定時器大于[最后成員查詢計數] 消息中所定義的最大響應時間,它會將其組成員計數 為該值。
4. 與 IGMPv1 路由器的兼容 性
在一個路由器沒有升級到IGMPv2的子網上,IGMPv2 主機可能會被取代。如下的請求為IGMPv1 路由器會發送正常的查詢消息,其響應時間設為0。這必須理解為數值100(為10秒鐘點)。
IGMPv1 路由器期望版本1 的成員報告對應于它的查詢,而不會注意版本2的成員報告。因此,對于每個接口都必須保留一個狀態變量,描述在接口中的組播查詢者是運行的IGMPv1還是IGMPv2。 該變量必須由在最后幾秒內是否聽到IGMPv1 查詢來決定。并必須用來決定用什么類型的成員報告來發送非請求的成員報 告以及對查詢響應的成員報告。
一個IGMPv2 主機可以減少使用IGMPv1查詢者所在網絡上的離開組消息。一個 IGMPv2 路由器可被放置在至少有一個路由器沒有被升級為IGMPv2的子網上。,有如下的要求:
如果存在任一個IGMPv1 路由器,查詢者必須使用IGMPv1. IGMPv1 的使用必須有組織的配置,就好象沒有可靠的方法來動態決定在網絡上是否有IGMPv1路由器存在一樣。其實現須提供給系統管理者一個方法來打開這些路由器上IGMPv1 的使用。其配置必須默認為IGMPv2 。在 IGMPv1 模式中, 路由器必須發送最大廈響應時間為0的周期性查詢。 它們必須在接收到IGMPv2 查詢時報警,盡管這些報警會受速率限制。
如果一個路由器沒有顯式地配置為使用IGMPv1 ,且收到了一個IGMPv1 查詢,它應該在日志上寫上一個警告。這些警告必須有速率限制。
5. 和IGMPv1 主機的兼容性
一個 IGMPv2 主機可以被放置 于有一些主機沒有被升級為IGMPv2 的子網上。如下的必要條件為 :
主機必須允許它的成員報告可被其它的版本1或版本2的成員報告所壓制。
一個 IGMPv2 主機可以被放置 于有一些主機沒有被升級為IGMPv2 的子網上。如下的必要條件為 :
主機必須允許它的成員報告可被其它的版本1或版本2的成員報告所壓制。
如果一個路由器收到了一個版本為1的成員報告,它必須設置一個定時器來注明存在一個版本1的主機, 該主機是它接收到報告的組中的成員。該計時器應和[組成員時間間隔。
如果版本1主機聲明為一個特定的組,一個路由器必須忽略任一個它所接收到的離開該組的消息。
6. 主機狀態報文
主機的行為正式上由如下的傳送報文狀態定義??紤]到任一個單個的IP組播組在任一個單一的網絡接口上,主機可以為三個可能狀態中的一個:
- "無成員" 狀態, 當該主機不屬于接口上的組時。這是一個對于所有的網絡接口上的所有成員來說,是一個初始的狀態,它不要求在主機上進行存儲。
"滯留成員" 狀態,當該主機屬于在此接口上的該組時,且對于成員關系有一個報告延遲定時器。
- "空 閑成員" 狀態, 當該主機屬于該接口上的組時,且對于那個成員關系沒有報告定時器正在運行。
有五個明顯的事件,能引起IGMP 狀態的改變:
- "加入組" 發生時間。當主機決定加入該接口上的一個組時,它會 發生。它僅發生在無成員狀態時。
- "離開組" 發生時間。發生在主機決定離開此接口上的該組時,它僅發生在滯留成員以及 空閑 成員狀態時。
"收到的查詢" 發生時間。發生在主機接收到一個有效的一般組成員查詢消息,或者一個有效的特定組成員查詢消息。為了使其有效,查詢消息必須至少為8個字節長,并且有正確的IGMP 校驗字。在IGMP 頭中的組地址必須是0(對于一般的查詢)或者為一個有效 的組播地址(對于特定組的查詢)。一個特定組的查詢應用于接收到查詢的接口上所有的成員關系。對于在非成員狀態中的成員關系,查詢會被忽略。
- "收到的報告" 發生時間。發生在主機接收到一個有效的IGMP 成員報告消息(版本1或版本2)。為了使其有效,此報告消息必須至少有8個字節長并且有正確的IGMP 校驗字。 一個成員關系報告僅應用于成員關系報告所標識的組中的成員關系,位于接收到成員關系的接口上。對于在非成員或空閑成員狀態中的成員關系,會被 忽略。
- "定時器超時" 發生時間。發生在為接口上組設定的報告延時定時器超時時。它僅會發 生在延進成員狀態中。
所有其它的事件中,例如接收有效的IGMP 消息,或者IGMP 消息而不只是查詢或者是報告,在所有的狀態中都會被忽略。這兒有七個可能的反應,對于以上的事件的反應來說:
- "發送報告" 對于接口上的組。這類型的報告由接口的狀態來決定。該報告消息被 發給正被報告的組。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -