UDPマルチキャストはUnixでどのように機能しますか?

UDPマルチキャストはUnixでどのように機能しますか?

Unixの専門家は、ipマルチキャストがIPv4マルチキャストの代わりにイーサネットマルチキャスト(MACアドレス伝播に依存)を使用すると述べました。

これは本当ですか?カーネルやバージョンによって異なりますか?

ベストアンサー1

ここには用語上の混乱があるようです。実際、IP層とリンク層は連携してマルチキャスト操作を実行します。

IPv4とIPv6の両方がマルチキャストIPアドレスをリンク層マルチキャストMACアドレスにマップします。専用マルチキャスト専用MACアドレスがあります。 IPv4の場合、MACアドレス形式は01:00:5e:xx:yy:zzIPv6の場合、MACアドレス形式はです33:33:ww:xx:yy:zz

デフォルトでは、これらのMACアドレスに送信されたフレームはイーサネットスイッチを介してVLANのすべてのポートにフラッディングされますが、最適化により、スイッチはIGMPスヌーピングを実装して、実際にマルチキャストグループに参加しているポートに基づくポートを制限できます。フレーム。

ホストがマルチキャストグループの受信を開始すると、対応するイーサネットMAC層は、適切なMACアドレスに送信されたフレームが通過できるようにプログラムされます。それ以外の場合、イーサネットハードウェアは、無差別モードでない限り、これらのフレームを削除します。

マルチキャストフレームがホストによって受信されると(イーサネットスイッチがフレームを転送し、MAC層がフレーム受信を許可したため)、IP層はIPアドレスを表示し、パケットを適切なソケットに送信します。

プライベートマルチキャストMACアドレスの詳細

異なるマルチキャストアドレスに対して異なるMACアドレスを使用すると、ホストはそのホストが参加しているマルチキャストグループに関連付けられたイーサネットフレームのみを簡単に受信できます(つまり、グループに参加しているホストにアクティブソケットが1つ以上あることを意味します。意味)。他のものは、ホスト自身のイーサネットチップまたはネットワークのイーサネットスイッチを介してハードウェアから効果的に廃棄される。

プライベートMACアドレスよりもマルチキャストグループが多いため、実際には多くのIPマルチキャストアドレスが同じMACアドレスにマッピングされます。これは、上記のフィルタリングが完璧ではないことを意味します。ハードウェアがMACアドレスを許可するように設定されている場合、これは実際にはIPマルチキャストアドレスセットに送信されるパケットを許可します。それにもかかわらず、ハードウェアは依然としてほとんどのフィルタリングを実行するので、十分に効率的です。

IPv4の場合、IPマルチキャストアドレスは268435456個で、MACアドレスは8388608個しかないため、マッピングは32:1(IPアドレス32個あたりMACアドレス1個)です。RFC 1112セクション6.4を参照してください。

IPv6の場合、多数のIPマルチキャストアドレスと4294967296のMACアドレスしかないため、マッピングは多対一です。RFC 2464セクション7を参照してください。。このマッピングを少なくとも1:1に近づけておくことをお勧めしますが、IPv6アドレス空間のサイズのため不可能です。数年前、私は32ビットMACアドレスを維持することさえすでに負担になるという話を話しました。話は、IEEEのMACアドレス割り当て方式(IEEEがMACアドレス割り当てを担当する)によると、このMACアドレスの数は256個のOUI割り当てに対応し、IEEEはOUI割り当てにかかる金銭的コストの256倍を要求するということです。 ; IETFがIEEEがあまりにも多くのお金を支払うので、IETFが正しいサイズとソートの明確に使用されていないブロックを選択して取得することは不可能です。

おすすめ記事