2012年2月8日 星期三

Multicast (IGMP Snooping)

Multicast, 有別於broadcast(一送全部收)及unicast(一送一個人收).只讓特定的user可以接收到packet,好比一送多個人收。其中主要的protocol為IGMP

IGMP
IGMP, Internet Group Management Protocol. based on network layer的feature。是用來支援主機和路由器之間的Multicast封包的管理協定


IGMP是指router在layer3進行Multicast。但是實際上在layer2時是進行Broadcast。如果switch有支援
IGMP Snooping的話,就會在layer2建立和維護MAC 的Multicast地址表,以達到在layer2也進行Mutlicast,這樣最主要就是為了節省封包流量。


也因為是network layer的feature,所以他的multicast address會帶有特定IP的information. 其中class D(224.0.0.0~239.255.255.255)是用來做multicast group的multicast address

而IGMP目前有三種版本 v1,v2,v3 其中有些許的差別,分別define於RFC 1112, RFC 2236 and RFC 3376.
IGMP-v1:只有query和report的封包,要等到timeout才會leave
IGMP-v2:加入了leave的packet
IGMP-v3:加入了source filter的功能,host端可以決定要收到來自哪些source來的IGMP packet


在Layer 2 switch上跟IGMP有關的功能主要是IGMP Snooping. snooping可以當作是偷看偷學的意思。這feature最主要的用意就是要減少packet的流量。
比方說port 3送了一個Join multicast 224.0.0.1的封包到switch,這時候switch就偷偷地學起來,等到從port 5收到multicast 224.0.0.1的封包時,就知道只要傳給port 3就好了,不用傳給別的port,達到減少流量的優點。

此外,每個VLAN都可以有自己的multicast group,IGMP snooping最多可以support到16個VLAN
所以VLAN 100有multicast group 224.0.0.100
VLAN 200也可以有multicast group 224.0.0.100


在L2 switch上除了減少流量外還可以做到其他setting來做控管。可分成per system及per port的設定,包含了
1)group limit以及max group number /* per port */
2)igmp snooping filtering /* per port */
3)Host Timeout /* per system */
4)replace 802.1p Priority tag /* per system */
5)Unknown Multicast Frame drop or flooding /* per system */
6)reserved multicast group drop of flooding /* per system */
7)report-proxy /* per system */
分簡述如下:

1)group limit abd max group number:
限制per port可以加入幾個multicast group. if 超過設定的group number,則用throttling來設定,可以設定當超過的時候是要把新的group給drop掉還是replace原本最舊的group

2)IGMP Snooping Filtering:
我們可以設定per port可以允許加入的multicast group,如果multicast group不屬於IGMP Filtering Profile,就不會進到此port

3)Host timeout
當開snooping時候可以決定per system多久沒收到report packet的時候就把這個port從那個multicast group給remove. default是260 second

4)replace 802.1p Priority tag
可以決定 pass through switch的IGMP的control packet其中的priority tag被換成多少(0~7 可自行設定)

5)Unknown Multicast Frame drop or flooding
對於這台switch沒有learning到的multicast group pakcet是會被drop還是flooding

6)Reserved Mulitcast Group是指224.0.0.0 ~ 224.0.0.255這段multicast address,這是local network所使用的multicast group
可以設定這個multicast group的packet是會被drop還是flooding

ex. 224.0.0.251, MAC address of 01:00:5E:00:00:FB for IPv4; FF02::FB for IPv6. multicast DNS
224.0.0.252, MAC address of 01-00-5E-00-00-FC for IPv4; FF02::1:3 for IPv6, Link Local Multicast Name Resolution (LLMNR), Windows vista, windows server 2008, windows 7才有

7)report-proxy
用於簡化packet的流量。當有多條IGMP join/report的packet時可以把它整合成一個packet送給multicast router

multicast另外個重要應用為跨VLAN的功能,這主要是用在MoD(Media-on-Demand)之類的應用上。可稱為Multicast VLAN or Multicast VLAN Registration(MVR)

MVR主要會針對IGMP join與leave封包進行處理, IGMP report的封包則是交給IGMP snooping. 這部分可以再另外開個topic來討論...

Reference:
[1] http://guiderworld.blogspot.com/2009/03/multicastigmp.html
[2] http://tw.myblog.yahoo.com/hughes-blog/article?mid=64&prev=66&next=61

沒有留言:

張貼留言