由於是由網路設備複製,網路設備需要知道那些網路埠有接收者,傳送者並不需要知道每個接收者是誰,只要知道有接收者並負責把風包丟出來即可。
IPv4 multicast 位址
- 224.0.0.0/4,開頭為二進位的 1110,範圍為 224.0.0.0 ~ 239.255.255.255。
- 對應的 Ethernet MAC 位址為 01:00:5e:xx:xx:xx,後 23-bit 來自 IP 位址後面 23 bits。可能 IP 位址不同,但 MAC 位址相同,此時 Switch 需要 multicast 它們的聯集。
- 224.0.0/24:local link 區塊,由 IANA 個別指定。對應的 MAC 位址是 01:00:5e:00:00:xx,通常 L2 switch 會 broadcast 處理,不出 router。
- 224.0.0.1:all hosts
- 224.0.0.2:all routers
- 224.0.0.18:VRRP
- 224.0.0.22:IGMPv3 report
- 224.0.0.251:mDNS
- 224.0.0.252:LLMNR
- 224.0.1/24:internetwork 區塊,由 IANA 個別指定
- 224.0.2/24,224.4/15,233.252/14:Ad Hoc
- 224.2/16:SDP/SAP
- 232.0.0.0/8:Source Specific Multicast
- 233.0.0.0/8:GLOP,16-bit ASN
- 234.0.0.0/8:Unicast-Prefix-Based IPv4 Multicast addresses
- 239.0.0.0/8:Administratively Scoped IP Multicast,由網管使用,封包不跨網管,位址在不同網管可重複使用。通常會再切割成較小區塊來限制特定 multicast 應用的範圍,避免小區塊間不必要的資料量。
- 239.192/14:Organization local scope
- 239.255/16:Local scope,不能再分割,可以往下擴充
- Scope Relative addresses:相對於每個小區塊最後一個位址。每個小區塊預留最後 256 個位址
- -0 (239.255.255.255):
- -5 (239.255.255.250):SSDP
- 主要概念是一個 multicast IP 位址及由接收者驅動而建立的 multicast distribution tree
- 接收者透過協定加入 multicast 群組,在 LAN 使用 IGMP (IPv4) 或 MLD (IPv6),在 routing domain 內用 PIM, MOSPF,domain 外用 MBGP
- Protocol Independent Multicast
- 封包傳送要遠離 source IP,跟 unicast 要接近 destination IP 不同。
- IPv6 multicast 位址使用 Ethernet MAC 位址 33:33:xx:xx:xx:xx,後 32-bit 來自 IPv6 位址後面 4 bytes。
- switch 監聽 IGMP 來維護其 multicast 表格稱為 IGMP snooping,如果有 L3 功能則可作為 IGMP querier。如果網路沒有 multicast router,有 IGMP snooping 能力的 switch 可用來產生需要的 IGMP 訊息給用戶加入 multicast 群組。如果 switch 沒這些功能,就只能 broadcast 處理這些 multicast 封包。
- 無線網路原本就是 boardcast 環境,行為跟 Ethernet 有些不同。如果用戶都不在省電模式,multicast 封包會馬上送。如果有用戶在省電模式,AP 只在每個 DTIM interval 後送,且只在一個支援的速率送。無線網路有 ACK 來避免高遺失率,但 multicast 封包並不用 ACK 而可能有高遺失率。現在有一些方法處理這個問題,例如改用 unicast 一個一個傳 (只需改 AP)、或要求每個用戶 ACK (需要 AP 跟用戶都改)。
- RTP、RSVP、mDNS
- multicast 本質比較不適合 connection-oriented 這種有重傳的協定,但也有 TCP 例子 -- Pragmatic General Multicast
- Multicast Paging
沒有留言:
張貼留言