MACアドレスは12桁の16進数(長さ48ビット)で、通常はハイフン(-)、またはコロン(:)で区切られた8ビット(1オクテット)のブロックに格納されます(例:00-12-34-56-78-00または00:12:34:56:78:00)。 224.0.0.0〜239.255.255.255の範囲のマルチキャストIPアドレスは、イーサネットインターフェースが特定のグループへのマルチキャストパケットであることを識別できるように、特別なMACアドレスにマッピングされています。
ユニキャスト、マルチキャストMACアドレスの区別
MACアドレスを見ただけで、このMACアドレスはユニキャスト用なのか、ブロードキャストやマルチキャスト用なのかわかります。それは、初めから8ビット目が0であれば、ユニキャスト用MACアドレス、1であれば、ブロードキャスト、もしくはマルチキャスト用のMACアドレスです。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/10104796-AD9F-45E3-B715-979731090ED9-1024x310.png)
マルチキャストMACアドレスの作り方
マルチキャストMACアドレスの最初の3オクテット(24ビット)は常に01:00:5Eで始まります。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/3A50678D-AEB4-4CE6-8EB2-A0A0BD3E425A-1024x207.png)
では、前半第1〜3オクテットが固定なので、残りの第4〜6オクテット(24ビット)のビット列を変更するのかな?と思いますが、ここにトリックがあります。実は、第4オクテットの先頭(25ビット目)は0ビットで固定されます。そのため、個別のマルチキャストの識別に使用できる可変部分は残り23ビットです。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/51A22A94-634A-469C-92C3-9CCC2B681315-1024x203.png)
マルチキャストのIPアドレスとMACアドレスをマッピングしたいと思います。マルチキャストアドレスでは、先頭の4ビット(1110)が固定ですので、可変部分は残り28ビットです。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/6622A0E3-4144-453B-970F-793165DF0583-1.png)
マルチキャストアドレスの下から23ビットをマルチキャストMACアドレスにマッピングします。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/9B744E90-73B2-48A3-A290-79FB86B2FF52-1024x378.png)
マルチキャストアドレスの可変部分が28ビットで、MACアドレスは可変部分は23ビットですので、マッピングしようとすると5ビット分、足りません。これは、異なるマルチキャストアドレスでも同じマルチキャストMACアドレスになる場合があることを意味します。
例えば、マルチキャストアドレス 239.1.1.1 のMACアドレスを計算すると、以下の通り、 01:00:5E:01:01:01 です。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/C1ECBD70-F220-4C09-B86A-08FB8F12A064-1024x396.png)
マッピングをしていないマルチキャストアドレスの5ビット分は、どのようなビット列でもマルチキャストアドレスは変更されません。つまり、32(2の5乗)個のマルチキャストアドレスでMACアドレスが重複します。
例えば、5ビット分を11111とすると、マルチキャストアドレスは239.129.1.1 になります。このMACアドレスも 01:00:5E:01:01:01 です。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/5643D06F-806F-49E2-A452-59C5FD41C7E5-1024x392.png)
実際に239.1.1.1と239.129.1.1のパケットのMACアドレスを見ると、同じ値であることが確認できます。
239.1.1.1の場合
![](https://hirotanoblog.com/wp-content/uploads/2020/07/861CBACE-A77B-4645-A0CB-B082CE9F2721.png)
239.129.1.1の場合
![](https://hirotanoblog.com/wp-content/uploads/2020/07/F6656D8C-23E0-4385-BD0E-7EA5C6C4E5C6.png)
コメント