- EPON技術(shù) 您現(xiàn)在的位置 :首頁(yè) -- 技術(shù)論壇 -- EPON技術(shù)
IGMP知識(shí)簡(jiǎn)介
來(lái)源:金錢(qián)貓科技股份有限公司 發(fā)表于:2010-11-19 瀏覽4263次 |
?
一、協(xié)議簡(jiǎn)介
IGMP是Internet Group Management Protocol(互聯(lián)網(wǎng)組管理協(xié)議)的簡(jiǎn)稱。它是TCP/IP協(xié)議族中負(fù)責(zé) IP組播成員管理的協(xié)議,用來(lái)在 IP主機(jī)和與其直接相鄰的組播路由器之間建立、維護(hù)組播組成員關(guān)系。
參與IP組播的主機(jī)可以在任意位置、任意時(shí)間、成員總數(shù)不受限制地加入或退出組播組。組播路由器不需要也不可能保存所有主機(jī)的成員關(guān)系,它只是通過(guò)IGMP協(xié)議了解每個(gè)接口連接的網(wǎng)段上是否存在某個(gè)組播組的接收者,即組成員。而主機(jī)方只需要保存自己加入了哪些組播組。
IGMP在主機(jī)與路由器之間是不對(duì)稱的:主機(jī)需要響應(yīng)組播路由器的IGMP查詢報(bào)文,即以IGMP membership report報(bào)文響應(yīng);路由器周期性發(fā)送成員資格查詢報(bào)文,然后根據(jù)收到的響應(yīng)報(bào)文確定某個(gè)特定組在自己所在子網(wǎng)上是否有主機(jī)加入,并且當(dāng)收到主機(jī)的退出組的報(bào)告時(shí),發(fā)出特定組的查詢報(bào)文(IGMP版本2),以確定某個(gè)特定組是否已無(wú)成員存在。
二、協(xié)議版本
IGMP具有三種版本,即 IGMP v1、v2 和 v3。
IGMPv1:主機(jī)可以加入組播組。沒(méi)有離開(kāi)信息(leave messages)。路由器使用基于超時(shí)的機(jī)制去發(fā)現(xiàn)其成員不關(guān)注的組。
IGMPv2:該協(xié)議包含了離開(kāi)信息,允許迅速向路由協(xié)議報(bào)告組成員終止情況,這對(duì)高帶寬組播組或易變型組播組成員而言是非常重要的。
IGMPv3:與以上兩種協(xié)議相比,該協(xié)議的主要改動(dòng)為:允許主機(jī)指定它要接收通信流量的主機(jī)對(duì)象。來(lái)自網(wǎng)絡(luò)中其它主機(jī)的流量是被隔離的。IGMPv3也支持主機(jī)阻止那些來(lái)自于非要求的主機(jī)發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)包。
三、協(xié)議變種
IGMP 協(xié)議變種有:
距離矢量組播路由選擇協(xié)議(DVMRP: Distance Vector Multicast Routing Protocol)
IGMP 用戶認(rèn)證協(xié)議 (IGAP: IGMP for user Authentication Protocol)
路由器端口組管理協(xié)議(RGMP: Router-port Group Management Protocol)
四、版本改進(jìn)
IGMP版本2對(duì)版本1所做的改進(jìn)主要有:
(1)共享網(wǎng)段上組播路由器的選舉機(jī)制
共享網(wǎng)段表示一個(gè)網(wǎng)段上有多個(gè)組播路由器的情況。在這種情況下,由于此網(wǎng)段上運(yùn)行IGMP的路由器都能從主機(jī)那里收到成員資格報(bào)告消息,因此,只需要一個(gè)路由器發(fā)送成員資格查詢消息,這就需要一個(gè)路由器選舉機(jī)制來(lái)確定一個(gè)路由器作為查詢器。
在IGMP版本1中,查詢器的選擇由組播路由協(xié)議決定;IGMP版本2對(duì)此做了改進(jìn),規(guī)定同一網(wǎng)段上有多個(gè)組播路由器時(shí),具有最小IP地址的組播路由器被選舉出來(lái)充當(dāng)查詢器。
?(2)IGMP版本2增加了離開(kāi)組機(jī)制
在IGMP版本1中,主機(jī)悄然離開(kāi)組播組,不會(huì)給任何組播路由器發(fā)出任何通知。造成組播路由器只能依靠組播組響應(yīng)超時(shí)來(lái)確定組播成員的離開(kāi)。而在版本2中,當(dāng)一個(gè)主機(jī)決定離開(kāi)時(shí),如果它是對(duì)最近一條成員資格查詢消息作出響應(yīng)的主機(jī),那么它就會(huì)發(fā)送一條離開(kāi)組的消息。
?(3)IGMP版本2增加了對(duì)特定組的查詢
在IGMP版本1中,組播路由器的一次查詢,是針對(duì)該網(wǎng)段下的所有組播組。這種查詢稱為普遍組查詢。
在IGMP版本2中,在普遍組查詢之外增加了特定組的查詢,這種查詢報(bào)文的目的IP地址為該組播組的IP地址,報(bào)文中的組地址域部分也為該組播組的IP地址。這樣就避免了屬于其它組播組成員的主機(jī)發(fā)送響應(yīng)報(bào)文。
?(4)IGMP版本2增加了最大響應(yīng)時(shí)間字段
IGMP版本2增加最大響應(yīng)時(shí)間字段,以動(dòng)態(tài)地調(diào)整主機(jī)對(duì)組查詢報(bào)文的響應(yīng)時(shí)間。
五、工作過(guò)程
????????? IGMPv1 工作機(jī)制
IGMPv1主要基于查詢和響應(yīng)機(jī)制來(lái)完成對(duì)組播組成員的管理。當(dāng)一個(gè)網(wǎng)段內(nèi)有多臺(tái)組播路由器時(shí),由于它們都能從主機(jī)那里收到IGMP 成員關(guān)系報(bào)告報(bào)文(MembershIP Report Message),因此只需要其中一臺(tái)路由器發(fā)送IGMP查詢報(bào)文(Query Message)就足夠了。這就需要有一個(gè)查詢器(Querier)的選舉機(jī)制來(lái)確定由哪臺(tái)路由器作為IGMP查詢器。對(duì)于IGMPv1來(lái)說(shuō),由組播路由協(xié)議(如PIM)選舉出唯一的組播信息轉(zhuǎn)發(fā)者DR(Designated Router,指定路由器)作為IGMP查詢器。
IGMPv1沒(méi)有專(zhuān)門(mén)定義離開(kāi)組播組的報(bào)文。當(dāng)運(yùn)行IGMPv1的主機(jī)離開(kāi)某組播組時(shí),將不會(huì)向其要離開(kāi)的組播組發(fā)送報(bào)告報(bào)文。當(dāng)網(wǎng)段中不再存在該組播組的成員后,IGMP路由器將收不到任何發(fā)往該組播組的報(bào)告報(bào)文,于是IGMP路由器在一段時(shí)間之后便刪除該組播組所對(duì)應(yīng)的組播轉(zhuǎn)發(fā)項(xiàng)。
????????? IGMPv2 的改進(jìn)
與IGMPv1相比,IGMPv2增加了查詢器選舉機(jī)制和離開(kāi)組機(jī)制。
1. 查詢器選舉機(jī)制
在IGMPv1中,當(dāng)某共享網(wǎng)段上存在多個(gè)組播路由器時(shí),由組播路由協(xié)議(如PIM)選舉的指定路由器充當(dāng)查詢器。
在IGMPv2中,增加了獨(dú)立的查詢器選舉機(jī)制,其選舉過(guò)程如下:
(1)所有IGMPv2 路由器在初始時(shí)都認(rèn)為自己是查詢器,并向本地網(wǎng)段內(nèi)的所有主
機(jī)和路由器發(fā)送IGMP 普遍組查詢(General Query)報(bào)文(目的地址為:224.0.0.1);
(2)本地網(wǎng)段中的其它IGMPv2路由器在收到該報(bào)文后,將報(bào)文的源IP地址與自己的接口地址作比較。通過(guò)比較,IP地址最小的路由器將成為查詢器,其它路由器成為非查詢器(Non-Querier);
(3)所有非查詢器上都會(huì)啟動(dòng)一個(gè)定時(shí)器(即其它查詢器存在時(shí)間定時(shí)器OtherQuerier Present Timer)。在該定時(shí)器超時(shí)前,如果收到了來(lái)自查詢器的IGMP查詢報(bào)文,則重置該定時(shí)器;否則,就認(rèn)為原查詢器失效,并發(fā)起新的查詢器選舉過(guò)程。
2. 離開(kāi)組機(jī)制
在IGMPv1中,主機(jī)離開(kāi)組播組時(shí)不會(huì)向組播路由器發(fā)出任何通知,導(dǎo)致組播路由器只能依靠組播組成員查詢的響應(yīng)超時(shí)來(lái)獲知組播組成員的離開(kāi)。
而在IGMPv2中,當(dāng)一個(gè)主機(jī)離開(kāi)某組播組時(shí):
(1)該主機(jī)向本地網(wǎng)段內(nèi)的所有組播路由器(目的地址為224.0.0.2)發(fā)送離開(kāi)組(Leave Group)報(bào)文;
(2)當(dāng)查詢器收到該報(bào)文后,向該主機(jī)所聲明要離開(kāi)的那個(gè)組播組發(fā)送特定組查詢(Group-Specific Query)報(bào)文(目的地址字段和組地址字段均填充為所要查詢的組播組地址);
(3)如果該網(wǎng)段內(nèi)還有該組播組的其它成員,則這些成員在收到特定組查詢報(bào)文后,會(huì)在該報(bào)文中所設(shè)定的最大響應(yīng)時(shí)間(Max Response Time)內(nèi)發(fā)送成員關(guān)系報(bào)告報(bào)文;
(4)如果在最大響應(yīng)時(shí)間內(nèi)收到了該組播組其它成員發(fā)送的成員關(guān)系報(bào)告報(bào)文,查詢器就會(huì)繼續(xù)維護(hù)該組播組的成員關(guān)系;否則,查詢器將認(rèn)為該網(wǎng)段內(nèi)已無(wú)該組播組的成員,于是不再維護(hù)這個(gè)組播組的成員關(guān)系。
????????? IGMPv3 的改進(jìn)
IGMPv3 在兼容和繼承IGMPv1 和IGMPv2 的基礎(chǔ)上,進(jìn)一步增強(qiáng)了主機(jī)的控制能力,并增強(qiáng)了查詢和報(bào)告報(bào)文的功能。
1. 主機(jī)控制能力的增強(qiáng)
IGMPv3增加了針對(duì)組播源的過(guò)濾模式(INCLUDE/EXCLUDE),使主機(jī)在加入某組播組G 的同時(shí),能夠明確要求接收或拒絕來(lái)自某特定組播源S 的組播信息。當(dāng)主機(jī)加入組播組時(shí):
若要求只接收來(lái)自指定組播源如S1、S2、……的組播信息,則其報(bào)告報(bào)文中可以標(biāo)記為INCLUDE Sources(S1,S2,……);
若拒絕接收來(lái)自指定組播源如S1、S2、……的組播信息,則其報(bào)告報(bào)文中可以標(biāo)記為EXCLUDE Sources(S1,S2,……)。
2. 查詢和報(bào)告報(bào)文功能的增強(qiáng)
(1) 攜帶源地址的查詢報(bào)文
IGMPv3不僅支持IGMPv1的普遍組查詢和IGMPv2的特定組查詢,而且還增加了對(duì)特定源組查詢的支持:
????????? 普遍組查詢報(bào)文中,既不攜帶組地址,也不攜帶源地址;
????????? 特定組查詢報(bào)文中,攜帶組地址,但不攜帶源地址;
????????? 特定源組查詢報(bào)文中,既攜帶組地址,還攜帶一個(gè)或多個(gè)源地址。
(2) 包含多組記錄的報(bào)告報(bào)文
IGMPv3報(bào)告報(bào)文的目的地址為224.0.0.22,可以攜帶一個(gè)或多個(gè)組記錄。在每個(gè)組記錄中,包含有組播組地址和組播源地址列表。組記錄可以分為多種類(lèi)型,如下:
IS_IN:表示組播組與組播源列表之間的過(guò)濾模式為INCLUDE,即只接收從指定組播源列表發(fā)往該組播組的組播數(shù)據(jù)。
IS_EX:表示組播組與組播源列表之間的過(guò)濾模式為EXCLUDE,即只接收從指定組播源列表之外的組播源發(fā)往該組播組的組播數(shù)據(jù)。
TO_IN:表示組播組與組播源列表之間的過(guò)濾模式由EXCLUDE 轉(zhuǎn)變?yōu)?span lang="EN-US">INCLUDE。
TO_EX:表示組播組與組播源列表之間的過(guò)濾模式由INCLUDE 轉(zhuǎn)變?yōu)?span lang="EN-US">EXCLUDE。
ALLOW:表示在現(xiàn)有狀態(tài)的基礎(chǔ)上,還希望從某些組播源接收組播數(shù)據(jù)。如果當(dāng)前的對(duì)應(yīng)關(guān)系為INCLUDE,則向現(xiàn)有組播源列表中添加這些組播源;如果當(dāng)前的對(duì)應(yīng)關(guān)系為EXCLUDE,則從現(xiàn)有組播源列表中刪除這些組播源。
BLOCK:表示在現(xiàn)有狀態(tài)的基礎(chǔ)上,不再希望從某些組播源接收組播數(shù)據(jù)。如果當(dāng)前的對(duì)應(yīng)關(guān)系為INCLUDE,則從現(xiàn)有組播源列表中刪除這些組播源;如果當(dāng)前的對(duì)應(yīng)關(guān)系為EXCLUDE,則向現(xiàn)有組播源列表中添加這些組播源。
六、IGMP的功能
IGMP 實(shí)現(xiàn)的功能是雙向的:
????????? 一方面通過(guò) IGMP協(xié)議,主機(jī)通知本地路由器希望加入并接收某個(gè)特定多播組。
????????? 另一方面路由器通過(guò) IGMP協(xié)議,周期性地查詢子網(wǎng)內(nèi)某個(gè)已知組的成員是否處于活動(dòng)狀態(tài),即該網(wǎng)段是否仍有屬于某個(gè)多播組的成員,實(shí)現(xiàn)所連網(wǎng)絡(luò)組成員關(guān)系的收集與維護(hù)。
????????? 通過(guò)IGMP,路由器能夠記錄特定的多播組在某個(gè)主機(jī)上是否有組成員。
????????? IGMP在TCP/IP協(xié)議棧的位置: