IGMP定義
IGMP是Internet Group Management Protocol的簡(jiǎn)稱,又被稱為互聯(lián)網(wǎng)組管理協(xié)議,是TCP/IP協(xié)議族中負(fù)責(zé)IPv4組播成員管理的協(xié)議颓遏。IGMP用來(lái)在接收者主機(jī)和與其直接相鄰的組播路由器之間建立和維護(hù)組播組成員關(guān)系。IGMP通過(guò)在接收者主機(jī)和組播路由器之間交互IGMP報(bào)文實(shí)現(xiàn)組成員管理功能悄窃,IGMP報(bào)文封裝在IP報(bào)文中梧兼。
IGMPv1報(bào)文
IGMPv1包括兩種類型的報(bào)文:
??普遍組查詢報(bào)文(General Query):查詢器向共享網(wǎng)絡(luò)上所有主機(jī)和路由器發(fā)送的查詢報(bào)文,用于了解哪些組播組存在成員御毅。
??成員報(bào)告報(bào)文(Report):主機(jī)向查詢器發(fā)送的報(bào)告報(bào)文根欧,用于申請(qǐng)加入某個(gè)組播組或者應(yīng)答查詢報(bào)文。
IGMPv1的文格式如下所示:
普遍組查詢和響應(yīng)機(jī)制
組查詢和響應(yīng)端蛆,IGMP查詢器可以了解到該網(wǎng)段內(nèi)哪些組播組存在成員凤粗。如下圖所示:
a)?IGMP查詢器發(fā)送目的地址為224.0.0.1的普遍組查詢報(bào)文;收到該查詢報(bào)文的組成員啟動(dòng)定時(shí)器今豆。HostA和HostB是組播組G1的成員嫌拣,則在本地啟動(dòng)定時(shí)器Timer-G1柔袁。缺省情況下,定時(shí)器的范圍為0~10秒之間的隨機(jī)值异逐。
b)?第一個(gè)定時(shí)器超時(shí)的組成員發(fā)送針對(duì)該組的報(bào)告報(bào)文捶索。假設(shè)HostA上的Timer-G1首先超時(shí),HostA向該網(wǎng)段發(fā)送目的地址為G1的報(bào)告報(bào)文灰瞻。也想加入組G1的HostB收到此報(bào)告報(bào)文腥例,則停止定時(shí)器Timer-G1,不再發(fā)送針對(duì)G1的報(bào)告報(bào)文酝润。這樣報(bào)告報(bào)文被抑制燎竖,可以減少網(wǎng)段上的流量。
c)?IGMP查詢器接收到HostA的報(bào)告報(bào)文后要销,了解到本網(wǎng)段內(nèi)存在組播組G1的成員底瓣,則由組播路由協(xié)議生成(*,G1)組播轉(zhuǎn)發(fā)表項(xiàng)蕉陋,“*”代表任意組播源捐凭。網(wǎng)絡(luò)中一旦有組播組G1的數(shù)據(jù)到達(dá)路由器,將向該網(wǎng)段轉(zhuǎn)發(fā)凳鬓。
新組成員加入機(jī)制
機(jī)HostC加入組播組G2的過(guò)程如下:
a)?主機(jī)HostC不等待普遍組查詢報(bào)文的到來(lái)茁肠,主動(dòng)發(fā)送針對(duì)G2的報(bào)告報(bào)文以聲明加入。
b)?IGMP查詢器接收到HostC的報(bào)告報(bào)文后缩举,了解到本網(wǎng)段內(nèi)出現(xiàn)了組播組G2的成員垦梆,則生成組播轉(zhuǎn)發(fā)項(xiàng)(*,G2)仅孩。網(wǎng)絡(luò)中一旦有G2的數(shù)據(jù)到達(dá)路由器托猩,將向該網(wǎng)段轉(zhuǎn)發(fā)。
組成員離開機(jī)制
??IGMPv1沒有專門定義離開組消息辽慕。
??當(dāng)Client離開組播組時(shí)京腥,將不會(huì)再對(duì)普遍組查詢報(bào)文做出回應(yīng)。假設(shè)所有Client退出組播組溅蛉,Client將不再對(duì)普遍組查詢報(bào)文進(jìn)行響應(yīng)公浪。由于網(wǎng)段上不存在組播組的其他成員,RTA不會(huì)收到任何成員報(bào)告報(bào)文船侧,則在一定時(shí)間(130秒=120*2+10欠气,即組成員關(guān)系超時(shí)時(shí)間=IGMP普遍查詢消息發(fā)送間隔 × 健壯系數(shù) + 最大查詢響應(yīng)時(shí)間)后,刪除對(duì)應(yīng)的組播轉(zhuǎn)發(fā)項(xiàng)镜撩。