IGMP版本迭代
IGMPv2
igmp版本2對版本1所做的改進主要有:(1)共享網(wǎng)段上組播路由器的選舉機制共享網(wǎng)段表示一個網(wǎng)段上有多個組播路由器的情況。在這種情況下,由于此網(wǎng)段上運行igmp的路由器都能從主機那里收到成員資格報告消息,因此,只需要一個路由器發(fā)送成員資格查詢消息,這就需要一個路由器選舉機制來確定一個路由器作為查詢器。其選舉過程如下:(1) 所有IGMPv2路由器在初始時都認為自己是查詢器,并向本地網(wǎng)段內(nèi)的所有主機和路由器發(fā)送IGMP 普遍組查詢(General Query)報文(目的地址為:224.0.0.1)
(2) 本地網(wǎng)段中的其它IGMPv2路由器在收到該報文后,將報文的源IP 地址與自己的接口地址作比較。通過比較,IP 地址最小的路由器將成為查詢器,其它路由器成為非查詢器(Non-Querier);(3) 所有非查詢器上都會啟動一個定時器(即其它查詢器存在時間定時器OtherQuerier Present Timer)。在該定時器超時前,如果收到了來自查詢器的IGMP查詢報文,則重置該定時器;否則,就認為原查詢器失效,并發(fā)起新的查詢器選舉過程。在igmp版本1中,查詢器的選擇由組播路由協(xié)議決定;igmp版本2對此做了改進,規(guī)定同一網(wǎng)段上有多個組播路由器時,具有最小ip地址的組播路由器被選舉出來充當查詢器。(2)igmp版本2增加了離開組機制在igmp版本1中,主機悄然離開組播組,不會給任何組播路由器發(fā)出任何通知。造成組播路由器只能依靠組播組響應超時來確定組播成員的離開。而在版本2中,當一個主機決定離開時,如果它是對一條成員資格查詢消息作出響應的主機,那么它就會發(fā)送一條離開組的消息。在IGMPv2 中,當一個主機離開某組播組時:(1) 該主機向本地網(wǎng)段內(nèi)的所有組播路由器(目的地址為224.0.0.2)發(fā)送離開組(Leave Group)報文;(2) 當查詢器收到該報文后,向該主機所聲明要離開的那個組播組發(fā)送特定組查詢(Group-Specific Query)報文(目的地址字段和組地址字段均填充為所要查詢的組播組地址);(3) 如果該網(wǎng)段內(nèi)還有該組播組的其它成員,則這些成員在收到特定組查詢報文后,會在該報文中所設定的最大響應時間(Max Response Time)內(nèi)發(fā)送成員關(guān)系報告報文;(4) 如果在最大響應時間內(nèi)收到了該組播組其它成員發(fā)送的成員關(guān)系報告報文,查詢器就會繼續(xù)維護該組播組的成員關(guān)系;否則,查詢器將認為該網(wǎng)段內(nèi)已無該組播組的成員,于是不再維護這個組播組的成員關(guān)系。(3)igmp版本2增加了對特定組的查詢在igmp版本1中,組播路由器的一次查詢,是針對該網(wǎng)段下的所有組播組。這種查詢稱為普遍組查詢。在igmp版本2中,在普遍組查詢之外增加了特定組的查詢,這種查詢報文的目的ip地址為該組播組的ip地址,報文中的組地址域部分也為該組播組的ip地址。這樣就避免了屬于其它組播組成員的主機發(fā)送響應報文。(4)igmp版本2增加了最大響應時間字段igmp版本2增加最大響應時間字段,以動態(tài)地調(diào)整主機對組查詢報文的響應時間。
IGMPv3
1)主機控制能力的增強IGMPv3 增加了針對組播源的過濾模式(INCLUDE/EXCLUDE),使主機在加入某組播組G 的同時,能夠明確要求接收或拒絕來自某特定組播源S 的組播信息。當主機加入組播組時:若要求只接收來自指定組播源如S1、S2、……的組播信息,則其報告報文中可以標記為INCLUDE Sources(S1,S2,……);若拒絕接收來自指定組播源如S1、S2、……的組播信息,則其報告報文中可以標記為EXCLUDE Sources(S1,S2,……)。2)查詢和報告報文功能的增強(1) 攜帶源地址的查詢報文IGMPv3 不僅支持IGMPv1 的普遍組查詢和IGMPv2 的特定組查詢,而且還增加了對特定源組查詢的支持:z 普遍組查詢報文中,既不攜帶組地址,也不攜帶源地址;z 特定組查詢報文中,攜帶組地址,但不攜帶源地址;z 特定源組查詢報文中,既攜帶組地址,還攜帶一個或多個源地址。(2) 包含多組記錄的報告報文IGMPv3 報告報文的目的地址為224.0.0.22,可以攜帶一個或多個組記錄。在每個組記錄中,包含有組播組地址和組播源地址列表。組記錄可以分為多種類型,如下:IS_IN:表示組播組與組播源列表之間的過濾模式為INCLUDE,即只接收從指定組播源列表發(fā)往該組播組的組播數(shù)據(jù)。IS_EX:表示組播組與組播源列表之間的過濾模式為EXCLUDE,即只接收從指定組播源列表之外的組播源發(fā)往該組播組的組播數(shù)據(jù)。z TO_IN:表示組播組與組播源列表之間的過濾模式由EXCLUDE 轉(zhuǎn)變?yōu)镮NCLUDE。TO_EX:表示組播組與組播源列表之間的過濾模式由INCLUDE 轉(zhuǎn)變?yōu)镋XCLUDE。ALLOW:表示在現(xiàn)有狀態(tài)的基礎上,還希望從某些組播源接收組播數(shù)據(jù)。如果當前的對應關(guān)系為INCLUDE,則向現(xiàn)有組播源列表中添加這些組播源;如果當前的對應關(guān)系為EXCLUDE,則從現(xiàn)有組播源列表中刪除這些組播源。BLOCK:表示在現(xiàn)有狀態(tài)的基礎上,不再希望從某些組播源接收組播數(shù)據(jù)。如果當前的對應關(guān)系為INCLUDE,則從現(xiàn)有組播源列表中刪除這些組播源;如果當前的對應關(guān)系為EXCLUDE,則向現(xiàn)有組播源列表中添加這些組播源。實現(xiàn)步驟如下:1、當主機某個進程加入一個組播組時,主機發(fā)送一個IGMP 報告。若一個主機多個進程同時加入同一組,則發(fā)送一個IGMP 報告。2、進程離開一個多播組時,主機不發(fā)送IGMP 報告,即便是組中最后一個進程離開多播組。當主機確定已不再有組成員后,在隨后收到的IGMP 查詢中就不應答報文。3、多播路由器定時發(fā)送IGMP 查詢是否還有其他主機包含有屬于多播組的進程。多播路由器必須向每個接口發(fā)送IGMP 查詢。4、主機通過發(fā)送IGMP 報告來響應一個IGMP 查詢,對每個至少還包含一個進程的組均要發(fā)回IGMP 報告。使用上述查詢和報告報文,多播路由器對每個接口保持一張映射表,表中記錄了接口上包含的一個或多個主機多播組。當路由器收到要轉(zhuǎn)發(fā)的多播數(shù)據(jù)報時,只需將該數(shù)據(jù)報轉(zhuǎn)發(fā)到該接口上。