2014年8月18日 星期一

PIM (PIM-SM, PIM-DM)

用途:
PIM (Protocol Independent Multicast) 是一個 multicast routing protocol.
目的是讓 multicast 的 source 與 接收者 能互相串接起來.

先看以下的圖:
如果用戶 A 和 C 要加入由 multicast source S 所送出的 multicast packets.
那封包就要如同圖上所示的路徑傳送


要完成這樣的任務,先考慮右上角單純只有 router, switch 和兩台電腦的情況
這樣的環境中,要使用的還不是 PIM 等級的 protocol, 需要的是 IGMP (Internet Group Management Protocol), 它是一個 Layer 3 的 protocol, 所以理論上能跨越 switch. 是用戶與 router 直接溝通用.

先看看 用戶A
對於用戶 A 情況很單純,想加入就送出 IGMP join 的封包出去. 接下來就等 multicast 的封包進來.

這樣的封包送出去後,經過 switch, switch 看不懂這樣的封包,就直接再往上的 router 送,router 收到後,經過一些機制後 (PIM), 會收到 multicast packets, 就往 switch 送,switch 再往底下送,用戶就可以收到 multicast packets 了

但這樣的機制下, 因為 switch 看不懂 igmp 的封包,就會往每一個 port 都丟封包,但實際上只有用戶 A 需要,造成頻寬的浪費,因此在 switch 上就有一個機制出現,就是 igmp snooping.

igmp snooping 就是 "偷看" igmp 封包.說偷看是因為 switch 本身是二層機器,理論上不管三層,但為了解決頻寬浪費的問題,所以偷偷的看了 Layer 3 的封包.

igmp snooping 偷看了用戶的 igmp 封包後,就可以知道有哪些 port 有加入該 group, 當該 group 的 packets 來的時候,就只往有加入該 group 的 port 送.