其實這是有一段小故事的!
據說當年 IP Multicast 之父 Steve Deering 在還是研究生的時候, 為了要實作 IP Multicast 的驗證雛型, 必然也需要專用的 MAC 位址來給 IP Multicast 封包, 在 LAN 上面傳輸時使用.
各位應該知道, IP Multicast 的位址範圍, 是在 224.0.0.0 ~ 239.255.255.255 間的 D 等級網段. 如果要讓每一個IP Multicast 位址都有專有的 MAC 位址, 一共需要 2^28 個 MAC 位址, 也就是, 需要 16 個 OUI 的範圍才夠.
我們從二進位來看, 就會比較清楚:
33 2 1 0
1098765.43210987.65432109.876543210
-------------------------------------
( 224 . 0 . 0 . 0 )
11100000.00000000.00000000.00000000
11101111.11111111.11111111.11111111
( 239 . 255 . 255 . 255 )
各位應該還記得我前一篇有關 MAC 位址的費用, 現在每一個 OUI 要 US$ 1,650, 當年要價也要 US$ 1,000. 換句話說, Steve 當年需要想辦法來支付 US$ 16,000 (相當於新台幣50多萬元) 給 IEEE, 才夠他完全的一對一來分配唯一的 MAC 位址給每個 IP Multicast 位址專用.
很不幸, 經費沒有那麼多, 只夠他申請一組 OUI, 也就是最多只有 2^24 個 MAC 可以使用. 這組得來不易的 OUI 當然也要省著用, 所以要先保留一個位元不能用, 所以只剩下 23 個位元, 也就是 2^23 個 MAC 位址才可以給 IP Multicast 位址使用.
這個當初 Steve 申請到的 OUI "01-00-5E" (註1), 就成了我們今天 IP Multicast 專用的 MAC 位址的 OUI !
所以各位看到訊框的目的地 MAC 位址, 都會長成這個模樣:
|< 23 bits >|
00000001-00000000-01011110-0XXXXXXX-XXXXXXXX-XXXXXXXX
01 - 00 - 5E -(00~7F) -(00~FF) - (00~FF)
所以這個故事也讓我們學到一件事: 錢還是很重要的!
[參考資料]
- InformIT: Interdomain Multicast Fundamentals > Multicast on the LAN
- Page 31 of Book "Developing IP Multicast Networks", by Beau Williamson
註1: 比較正確一點地說, 應該 Steve 註冊到的 OUI 是 "00-00-5E" 才對. 但是載送 IP Multicast 封包的訊框上第一個 Octet 的 multicast bit 一定是打開的, 所以使用類似 Wireshark 看到的時候外觀都會是 "01-00-5E".
真的沒有看到這篇文章我還從來沒想過原來是這樣,學習到新知識啦!
回覆刪除原來是這樣來的
回覆刪除"如果要讓每一個IP Multicast 位址都有專有的 MAC 位址, 一共需要 2^28 個 MAC 位址, 也就是, 需要 16 個 OUI 的範圍才夠"
回覆刪除後面說
"只夠他申請一組 OUI, 也就是最多只有 2^24 個 MAC 可以使用"
這樣不是也才不夠2^4,為什麼會要16個OUI?
您好!我的計算方式是,全部的 IP Multicast 總共可能的地址有 2^28 個,一個OUI提供 2^24 個地址,因此總共需要這麼多個 OUI: (2^28) / (2^24) = 2^(28-24) = 2^4 = 16。
刪除多謝您仔細地說明 讚
刪除