IGMP協(xié)議簡(jiǎn)介
主機(jī)IP軟件需要進(jìn)行組播擴(kuò)展,才能使主機(jī)能夠在本地網(wǎng)絡(luò)上收發(fā)組播分組。但僅靠這一點(diǎn)是不夠的,因?yàn)榭缭蕉鄠€(gè)網(wǎng)絡(luò)的組播轉(zhuǎn)發(fā)必須依賴于路由器。路由器為建立組播轉(zhuǎn)發(fā)路由必需了解每個(gè)組員在Internet中的分布,這要求主機(jī)必須能將其所在的組播組通知給本地路由器,這也是建立組播轉(zhuǎn)發(fā)路由的基礎(chǔ)。主機(jī)與本地路由器之間使用Internet組管理協(xié)議(IGMP,Internet Group Management Protocol)來(lái)進(jìn)行組播組成員信息的交互。在此基礎(chǔ)上,本地路由器再你信息與她組播路由器通信,傳播組播組的成員信息,并建立組播路由。這個(gè)過(guò)程與路由器之間的常規(guī)單播路由。這個(gè)過(guò)程與路由器之間的常規(guī)單播路由的傳播十分相似。
IGMP是TCP/IP中重要標(biāo)準(zhǔn)之一,所有IP組播系統(tǒng)(包括主機(jī)和路由器)都需要支持IGMP協(xié)議。組播協(xié)議包括組成員管理協(xié)議和組播路由協(xié)議。組成員管理協(xié)議用于管理組播組成員的加入和離開(kāi),組播路由協(xié)議負(fù)責(zé)在路由器之間交互信息來(lái)建立組播樹(shù)。IGMP屬于前者,是組播路由器用來(lái)維護(hù)組播組成員信息的協(xié)議,運(yùn)行于主機(jī)和和組播路由器之間。IGMP 信息封裝在IP報(bào)文中,其IP的協(xié)議號(hào)為2。若一個(gè)主機(jī)想要接收發(fā)送到一個(gè)特定組的組播數(shù)據(jù)包,它需要監(jiān)聽(tīng)發(fā)往那個(gè)特定組的所有數(shù)據(jù)包。為解決Internet上組播數(shù)據(jù)包的路徑選擇,主機(jī)需通過(guò)通知其子網(wǎng)上的組播路由器來(lái)加入或離開(kāi)一個(gè)組,組播中采用IGMP來(lái)完成這一任務(wù)。這樣,組播路由器就可以知道網(wǎng)絡(luò)上組播組的成員,并由此決定是否向它們的網(wǎng)絡(luò)轉(zhuǎn)發(fā)組播數(shù)據(jù)包。當(dāng)一個(gè)組播路由器收到一個(gè)組播分組時(shí),它檢查數(shù)據(jù)包的組播目的地址,僅當(dāng)接口上有那個(gè)組的成員時(shí)才向其轉(zhuǎn)發(fā)。IGMP提供了在轉(zhuǎn)發(fā)組播數(shù)據(jù)包到目的地的最后階段所需的信息,實(shí)現(xiàn)如下雙向的功能:
主機(jī)通過(guò)IGMP通知路由器希望接收或離開(kāi)某個(gè)特定組播組的信息。
路由器通過(guò)IGMP周期性地查詢局域網(wǎng)內(nèi)的組播組成員是否處于活動(dòng)狀態(tài),實(shí)現(xiàn)所連網(wǎng)段組成員關(guān)系的收集與維護(hù)。
IGMP共有三個(gè)版本,即IGMP v1、v2 和 v3。
IGMPv1 定義了主機(jī)只可以加入組播組,但沒(méi)有定義離開(kāi)成員組的信息,路由器基于成員組的超時(shí)機(jī)制發(fā)現(xiàn)離線的組成員。
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)。