主機IP軟件需要進行組播擴展,才能使主機能夠在本地網絡上收發(fā)組播分組。但僅靠這一點是不夠的,因為跨越多個網絡的組播轉發(fā)必須依賴于路由器。路由器為建立組播轉發(fā)路由必需了解每個組員在Internet中的分布,這要求主機必須能將其所在的組播組通知給本地路由器,這也是建立組播轉發(fā)路由的基礎。主機與本地路由器之間使用Internet組管理協(xié)議(IGMP,Internet Group Management Protocol)來進行組播組成員信息的交互。在此基礎上,本地路由器再你信息與她組播路由器通信,傳播組播組的成員信息,并建立組播路由。這個過程與路由器之間的常規(guī)單播路由。這個過程與路由器之間的常規(guī)單播路由的傳播十分相似。
IGMP是TCP/IP中重要標準之一,所有IP組播系統(tǒng)(包括主機和路由器)都需要支持IGMP協(xié)議。組播協(xié)議包括組成員管理協(xié)議和組播路由協(xié)議。組成員管理協(xié)議用于管理組播組成員的加入和離開,組播路由協(xié)議負責在路由器之間交互信息來建立組播樹。IGMP屬于前者,是組播路由器用來維護組播組成員信息的協(xié)議,運行于主機和和組播路由器之間。IGMP 信息封裝在IP報文中,其IP的協(xié)議號為2。若一個主機想要接收發(fā)送到一個特定組的組播數據包,它需要監(jiān)聽發(fā)往那個特定組的所有數據包。為解決Internet上組播數據包的路徑選擇,主機需通過通知其子網上的組播路由器來加入或離開一個組,組播中采用IGMP來完成這一任務。這樣,組播路由器就可以知道網絡上組播組的成員,并由此決定是否向它們的網絡轉發(fā)組播數據包。當一個組播路由器收到一個組播分組時,它檢查數據包的組播目的地址,僅當接口上有那個組的成員時才向其轉發(fā)。IGMP提供了在轉發(fā)組播數據包到目的地的最后階段所需的信息,實現如下雙向的功能:
主機通過IGMP通知路由器希望接收或離開某個特定組播組的信息。
路由器通過IGMP周期性地查詢局域網內的組播組成員是否處于活動狀態(tài),實現所連網段組成員關系的收集與維護。
IGMP共有三個版本,即IGMP v1、v2 和 v3。
IGMPv1 定義了主機只可以加入組播組,但沒有定義離開成員組的信息,路由器基于成員組的超時機制發(fā)現離線的組成員。
IGMPv1 主要基于查詢和響應機制來完成對組播組成員的管理。當一個網段內有多臺組播路由器時,由于它們都能從主機那里收到IGMP 成員關系報告報文(Membership Report Message),因此只需要其中一臺路由器發(fā)送IGMP查詢報文(Query Message)就足夠了。這就需要有一個查詢器(Querier)的選舉機制來確定由哪臺路由器作為IGMP 查詢器。對于IGMPv1 來說,由組播路由協(xié)議(如PIM)選舉出唯一的組播信息轉發(fā)者DR(Designated Router,指定路由器)作為IGMP 查詢器。IGMPv1 沒有專門定義離開組播組的報文。當運行IGMPv1 的主機離開某組播組時,將不會向其要離開的組播組發(fā)送報告報文。當網段中不再存在該組播組的成員后,IGMP路由器將收不到任何發(fā)往該組播組的報告報文,于是IGMP 路由器在一段時間之后便刪除該組播組所對應的組播轉發(fā)項。