本文描述的設(shè)備為我們自研的RTK switch,有igmp-snooping功能和igmp query功能,沒(méi)有igmp proxy功能
本文列出的測(cè)試點(diǎn)并不是組播所有的測(cè)試點(diǎn),僅可以作為相關(guān)測(cè)試概念的參考。
測(cè)試點(diǎn)1:路由端口測(cè)試
組播路由器端口是連接路由器的端口且該路由器會(huì)發(fā)送igmp query報(bào)文或者pim hello消息。交換機(jī)上所有路由器端口都記錄在交換機(jī)的路由器端口列表中。交換機(jī)路由器端口列表中有靜態(tài)路由器端口和動(dòng)態(tài)路由器端口以及forbidden路由器端口(禁止成為路由器端口)
測(cè)試點(diǎn)2:成員端口測(cè)試
組播組成員端口為開(kāi)啟igmp-snooping后形成的組播轉(zhuǎn)發(fā)表中的端口,組播組成員端口表示該組播組可以轉(zhuǎn)發(fā)到的端口。
測(cè)試點(diǎn)3:普遍組查詢報(bào)文的轉(zhuǎn)發(fā)
普遍組query報(bào)文為組播查詢器定期發(fā)送的報(bào)文,該報(bào)文會(huì)轉(zhuǎn)發(fā)到交換機(jī)vlan內(nèi)的所有端口,該報(bào)文的目的地址為224.0.0.1。
測(cè)試點(diǎn)4:join報(bào)文
當(dāng)收到查詢報(bào)文后,客戶端會(huì)發(fā)送join報(bào)文到交換機(jī),如果開(kāi)啟了igmp-snooping功能會(huì)形成組播轉(zhuǎn)發(fā)表,該報(bào)文會(huì)轉(zhuǎn)發(fā)到交換機(jī)的所有路由器端口,而不會(huì)轉(zhuǎn)發(fā)到其他端口,如果其他端口下面也有該組播組的成員,那么當(dāng)他收到了一個(gè)客戶端的報(bào)告報(bào)文后就不再發(fā)送join報(bào)文了,導(dǎo)致組播轉(zhuǎn)發(fā)表不能再學(xué)習(xí)到該端口。
測(cè)試點(diǎn)5:leave報(bào)文
當(dāng)一個(gè)客戶端想要離開(kāi)某組播組,會(huì)發(fā)送離開(kāi)報(bào)文。IGMPv1不支持leave報(bào)文。如果不存在該組播組對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng),或者該組播組對(duì)應(yīng)轉(zhuǎn)發(fā)表項(xiàng)的出端口列表中不包含該端口,交換機(jī)不會(huì)向任何端口轉(zhuǎn)發(fā)該報(bào)文,而將其直接丟棄;如果存在該組播組對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng),且該組播組對(duì)應(yīng)轉(zhuǎn)發(fā)表項(xiàng)的出端口列表中包含該端口,交換機(jī)會(huì)將該報(bào)文通過(guò)VLAN 內(nèi)的所有路由器端口轉(zhuǎn)發(fā)出去。同時(shí),由于并不知道該接收端口下是否還有該組播組的其它成員,所以交換機(jī)不會(huì)立刻把該端口從該組播組所對(duì)應(yīng)轉(zhuǎn)發(fā)表項(xiàng)的出端口列表中刪除,而是重置其老化定時(shí)器。
測(cè)試點(diǎn)6:報(bào)告報(bào)文抑制功能
為防止交換機(jī)下所有客戶端向同一個(gè)組的報(bào)告報(bào)文都發(fā)送給路由器,造成網(wǎng)絡(luò)負(fù)載過(guò)大,交換機(jī)可以開(kāi)啟報(bào)告報(bào)文抑制功能。抑制效果見(jiàn)下圖

測(cè)試點(diǎn)7:快速離開(kāi)功能測(cè)試
當(dāng)交換機(jī)開(kāi)啟快速離開(kāi)功能后,當(dāng)一個(gè)端口收到了某組的離開(kāi)報(bào)文,查詢器不會(huì)向該端口發(fā)送特定組查詢報(bào)文,所以該端口會(huì)立即從該組播組成員端口中快速刪除,導(dǎo)致該端口下的其他的客戶端也收不到該組播組的流量。反之如果沒(méi)有開(kāi)啟快速離開(kāi)功能的話,該端口收到了某組的離開(kāi)報(bào)文,會(huì)在該組播組轉(zhuǎn)發(fā)表中保留3s,等待特定組查詢報(bào)文的到來(lái),如果3s中內(nèi)未收到特定組查詢報(bào)文,再將該端口從組播組成員端口中刪除。
測(cè)試點(diǎn)8:特定組查詢報(bào)文測(cè)試
特定組查詢報(bào)文配合測(cè)試點(diǎn)7的快速離開(kāi)功能測(cè)試,注意特定組查詢報(bào)文只會(huì)發(fā)給該組播組的成員端口。
下面結(jié)合兩種拓?fù)鋱D對(duì)上面報(bào)文的轉(zhuǎn)發(fā)進(jìn)行分析
拓?fù)?:rtk switch igmp snooping開(kāi)啟、query關(guān)閉,vlc只有一個(gè)組播組

路由器定期發(fā)送查詢報(bào)文,交換機(jī)端口1收到query報(bào)文后動(dòng)態(tài)加入到交換機(jī)的路由器端口列表中同時(shí)將query報(bào)文轉(zhuǎn)發(fā)到除接收端口外的其他端口,此時(shí)pc a、pc b和pc c都收到了查詢報(bào)文,他們都會(huì)發(fā)送join報(bào)文到交換機(jī),但是pc a和pc b的報(bào)告報(bào)文互相都可以收到,所以端口2每次只會(huì)收到他們中的一個(gè)join報(bào)文,由于交換機(jī)開(kāi)啟了igmp snooping,交換機(jī)收到j(luò)oin報(bào)文后會(huì)形成端口2和端口3的組播轉(zhuǎn)發(fā)表,同時(shí)將join報(bào)文轉(zhuǎn)發(fā)到路由端口1,然后再轉(zhuǎn)發(fā)到路由器,如果開(kāi)啟了報(bào)告報(bào)文抑制的話,那么只會(huì)從交換機(jī)路由器端口轉(zhuǎn)發(fā)同一個(gè)組的一個(gè)join報(bào)文到路由器。如果關(guān)閉的話,pc a、pc b和pc c的join報(bào)文都會(huì)轉(zhuǎn)發(fā)到路由器。
交換機(jī)開(kāi)啟快速離開(kāi)功能,pc a發(fā)送leave報(bào)文到交換機(jī),交換機(jī)端口2收到leave報(bào)文后,發(fā)現(xiàn)端口2在它的端口轉(zhuǎn)發(fā)表中,立馬將其刪除,并轉(zhuǎn)發(fā)leave報(bào)文到所有路由器端口,路由器收到leave報(bào)文后會(huì)發(fā)送特定組查詢報(bào)文到收到leave報(bào)文的端口,交換機(jī)收到路由器發(fā)送的特定組查詢報(bào)文后,轉(zhuǎn)發(fā)到它的成員端口,此時(shí)端口2收不到特定組查詢報(bào)文,端口3收到特定組查詢報(bào)文,所以pc a快速離開(kāi)后,pc a和pc b立馬停止接收組播流,pc c繼續(xù)接收組播流。
交換機(jī)不開(kāi)啟快速離開(kāi)功能,pc a發(fā)送的leave報(bào)文到交換機(jī),交換機(jī)端口2收到leave報(bào)文后,發(fā)現(xiàn)端口2在它的端口轉(zhuǎn)發(fā)表中,將會(huì)重置其定時(shí)器,我們的交換機(jī)將其置為3s,并轉(zhuǎn)發(fā)leave報(bào)文到所有路由器端口,然后再轉(zhuǎn)發(fā)到路由器,路由器收到后會(huì)發(fā)送特定組查詢報(bào)文到交換機(jī)的路由器端口,然后再轉(zhuǎn)發(fā)到交換機(jī)組播組的所有成員端口,所有交換機(jī)會(huì)將特定組查詢報(bào)文轉(zhuǎn)發(fā)到端口2和端口3,pc b和pc c都將會(huì)回復(fù)這個(gè)特定組查詢報(bào)文,所以pc a快速離開(kāi)后,pc b和pc c都會(huì)繼續(xù)接收組播流。
拓?fù)?:rtk switch igmp snooping開(kāi)啟、query開(kāi)啟

如上圖,交換機(jī)定期發(fā)送查詢報(bào)文到所有端口。此時(shí)交換機(jī)上不會(huì)存在路由端口,交換機(jī)web頁(yè)面上的報(bào)告報(bào)文抑制功能在此拓?fù)鋱D下不起作用。pc a、pc b和pc c同時(shí)收到了交換機(jī)發(fā)送的query報(bào)文,由于pc a和pc b處在同一鏈路上,他們的報(bào)告報(bào)文會(huì)自動(dòng)抑制,端口2每次只會(huì)收到一個(gè)join報(bào)文。pc c會(huì)發(fā)送加入報(bào)文到交換機(jī)端口3。交換機(jī)開(kāi)啟了igmp snooping,會(huì)形成組播轉(zhuǎn)發(fā)表。
交換機(jī)開(kāi)啟快速離開(kāi)功能,pc a發(fā)送leave報(bào)文到交換機(jī),交換機(jī)立馬將端口2從組播轉(zhuǎn)發(fā)表中刪除,此時(shí)pc b也不會(huì)收到組播數(shù)據(jù)流了,只能等下一個(gè)igmp genery query的到來(lái)。端口3不會(huì)受到影響,依然存在于組播轉(zhuǎn)發(fā)表中。
交換機(jī)關(guān)閉快速離開(kāi)功能,pc a發(fā)送leave報(bào)文到交換機(jī),交換機(jī)不會(huì)立馬將端口2從組播轉(zhuǎn)發(fā)表中刪除,而是重置其老化定時(shí)器,等待特定組查詢報(bào)文的到來(lái)。pc b和pc c都為特定組查詢報(bào)文的接收端口,他們都會(huì)回應(yīng)該報(bào)文。