はじめに
ITの勉強において、やっぱり全範囲を網羅的に勉強しようと思ってもなかなか、先輩・上司に追いつき追い抜くことって時間がかかるものです。そのせいでモチベーション下がったり……
だったら、1つのことに1点集中して『これに関しては同レベルor僕の方が上だ!』と思える領域を少しずつ作っていきましょう!それを続けていけば、どんどんどんどん勝てる領域が多くなり、気づいたら自分が行きたい場所に登り詰めるでしょう!
ということで今回はマルチキャストについて知見を深めていきましょう!
マルチキャストの基本知識
マルチキャストは、1つのデータを特定のグループ(複数のホスト)に効率的に届けるための通信方式です。ユニキャスト(1対1)やブロードキャスト(1対全員)とは異なり、1対複数の効率的なデータ配信が目的です。マルチキャストを制御するプロトコルにはPIM、IGMPがあります。
また、マルチキャストはクラスDに属しIPアドレスの範囲は224.0.0.0~239.255.255.255までの範囲を持っています。
ちなみにクラスA~Eの範囲は
クラスA: 0.0.0.0 ~ 127.255.255.255
クラスB: 128.0.0.0 ~ 191.255.255.255
クラスC: 192.0.0.0 ~ 223.255.255.255
クラスD: 224.0.0.0 ~ 239.255.255.255
クラスE: 240.0.0.0 ~ 255.255.255.255
A~Cはユニキャスト、Dがマルチキャスト、Eが研究や実験目的で予約されているアドレス範囲を表します。
マルチキャストIPアドレスの種類
マルチキャストのIPアドレスには用途に応じて、リンクローカルアドレス、グローバルアドレス、プライベートアドレスという種類があります。では、見ていきましょう!
リンクローカルアドレス:
- アドレス範囲は224.0.0.0 ~ 224.0.0.255
- 同一リンク内でのみ使用されるアドレス。ルータによる転送は行われません。(=ルータを越えた通信は不可)
また、リンクローカルアドレスには予約済みのIPアドレスがあります。
- 224.0.0.1:同一リンク上のすべてのホストに送信
- 224.0.0.2:同一リンク上のすべてのルータに送信
もし、リンクからここに飛んできた場合は、こちらからさっきの箇所に戻れます。
グローバルアドレス:
- アドレス範囲は224.0.1.0 ~ 238.255.255.255
- インターネット上で使用できるマルチキャストアドレス。
プライベートアドレス:
- アドレス範囲は239.0.0.0 ~ 239.255.255.255
- 組織内部のLANで使用されるプライベートマルチキャストアドレス。インターネットでは使用されません。
では、表で確認しましょう!
種類 | アドレス範囲 | 特徴 |
---|---|---|
リンクローカルアドレス | 224.0.0.0 ~ 224.0.0.255 | 同一リンク内で使用。ルータによる転送は行われない。 |
グローバルアドレス | 224.0.1.0 ~ 238.255.255.255 | インターネット上で使用可能。 |
プライベートアドレス | 239.0.0.0 ~ 239.255.255.255 | 組織内部のLANで使用。インターネットでは使用されない。 |
マルチキャストMACアドレス
マルチキャスト通信では、IPアドレスだけでなくMACアドレスも特定の形式に従います。この特定の形式に従ったMACアドレスをマルチキャストMACアドレスと呼びます。これは通常のMACアドレスと同様にNIC(ネットワークインターフェイスカード)が管理します。
マルチキャストIPアドレスだけでは、レイヤー3までのルーティングしかできません。レイヤー2でもデータ処理をするなら、やっぱりMACアドレスが必要になります。
マルチキャストMACアドレスの特徴
- マルチキャストMACアドレスはマルチキャストIPアドレスから導出される
- 48ビットのアドレス
- 最初の24ビットは01:00:5E: の固定値、25ビット目も「0」で固定、残り23ビットはマルチキャストIPアドレスの下位23ビット
ちなみに、マルチキャストIPアドレスは通常のIPアドレスと同様の32ビットアドレスです。
|←ーー | 上位25 | 固定 | ーー→| | |←ー | 下位23 | ー→| |
---|---|---|---|---|---|---|
01 | 00 | 5E | 0 | ~ | ~ | ~ |
00000001 | 00000000 | 01011110 | 0 | 変動 | 変動 | 変動 |
たとえば、
マルチキャストIPアドレスが 224.0.0.1 の場合、対応するMACアドレスは 01:00:5E:00:00:01 となります。
マルチキャストの転送プロセス
一般的なマルチキャスト通信がネットワーク内でどのように動作するかを見ていきましょう。
- 送信側がマルチキャストパケットを送信:
- マルチキャスト送信元は、特定のマルチキャストIPアドレス(例: 239.1.1.1)を宛先とするパケットを送信します。
- マルチキャスト対応ルータがルーティング:
- 受け取ったパケットを、IGMP(Internet Group Management Protocol)などを使ってマルチキャストグループに参加しているホストに届けます。
- L2スイッチがフラッディング:
- L2スイッチは、受け取ったマルチキャストパケットをすべてのポートに一度送信する「フラッディング」を行います。ただし、IGMPスヌーピングが有効な場合、パケットは必要なポートにのみ送信されます。
- IGMPスヌーピングは、スイッチがIGMPメッセージを「スヌーピング(監視)」して、どのポートがどのマルチキャストグループに参加しているかを記録する機能です。
- デバイスがマルチキャストグループに所属しているか判断:
- パケットを受け取ったデバイスが、そのマルチキャストグループに参加していればパケットを受け取ります。参加していない場合はパケットを破棄します。
IGMP(Internet Group Management Protocol)
マルチキャストグループへの参加、維持、脱退を管理するプロトコルです。IGMPには以下の様なメッセージの種類があります。
Membership Report: (ホスト→ルータ)
ホストが「このマルチキャストグループに参加します」とルータに知らせるためのメッセージ。これが送信されることで、ルータがそのホストをマルチキャストグループに追加します。
別名、IGMP joinと呼ぶ。
Membership Query: (ルータ→全ホスト)
ルータが「このマルチキャストグループにまだ参加しているホストはいるか?」と確認するためのメッセージ。宛先は224.0.0.1です。
先ほどのリンクローカルアドレスで、挙げた全ホストへの送信を意味する224.0.0.1です。
Leave Group:(ホスト→全ルータ)
ホストが「このマルチキャストグループから脱退します」とルータに通知するメッセージ。宛先は224.0.0.2です。
別名、IGMP leaveと呼ぶ。
先ほどのリンクローカルアドレスで、挙げた全ルータへの送信を意味する224.0.0.2です。
フラッディングの原因
通常、スイッチはMACアドレステーブルを使ってフレームの転送先を決定します。MACアドレステーブルには、ユニキャスト通信の送信元MACアドレスと、そのMACアドレスに対応するスイッチのポート番号が記録されています。ユニキャストでは、送信元と送信先が特定されているため、スイッチはテーブルを参照して特定のポートにパケットを転送できます。
しかし、マルチキャストの場合、マルチキャストMACアドレスが送信元になることはないのでスイッチは、通常のユニキャスト同じ方法でMACアドレステーブルに登録することができません。結果としてスイッチはそのパケットをフラッディングします。つまり、スイッチは「どのポートに転送すべきかわからないため、すべてのポートにパケットを送る(フラッディング)」という訳です。
しかし、安心してください。IGMPスヌーピングという機能を使えば不必要なポートに送信することなく効率的な処理ができるようになります。
また、スヌーピングは「覗き見」を意味します。
IGMPスヌーピング
通常のL2スイッチでは、マルチキャストパケットはフラッディングされますが、IGMPスヌーピングを使用することで、パケットが効率的に特定のポートにのみ転送されます。
なぜスヌーピング(覗き見)と表現されるの?
マルチキャスト通信では、スイッチがIGMPメッセージ(Layer 3のプロトコル)をチェックして、どのポートにどのホストがマルチキャストグループに参加しているかを把握する必要があります。本来Layer 3の情報を見るべきでないスイッチが、このIGMPメッセージを「覗き見」して、Layer 3の情報を利用してマルチキャストの転送を効率化します。つまり、スイッチが通常のLayer 2の役割を超えて、Layer 3のデータを「スヌーピング(覗き見)」するというところから、この名前がついています。
要するに、スイッチが通常の役割を超えて、ルーターに送られるはずのLayer 3の情報を参照するという行動が「覗き見」にあたるということです。
具体的な動作:
具体的には、以下のような動作が行われます。
1. IGMP Joinメッセージの監視:
- ホストがマルチキャストグループに参加する際、IGMP Joinメッセージを送信します。このメッセージはルータに送られますが、スイッチがIGMPスヌーピング機能を持っている場合、このメッセージを「スヌーピング」して、どのポートのホストがどのマルチキャストグループに参加しているかを記録します。
2. IGMPスヌーピングによる効率化:
- スイッチは、この「IGMP Joinメッセージ」と送信元のポートを基に、マルチキャストグループに属するホストが接続されたポートをMACアドレステーブルに記録します。これにより、スイッチはそのマルチキャストトラフィックを特定のポートにのみ転送でき、全ポートにフラッディングする必要がなくなります。
3. IGMP Leaveメッセージの監視:
- ホストがマルチキャストグループを離脱する際には、IGMP Leaveメッセージを送信します。これをスイッチが監視することで、そのホストが接続されているポートをマルチキャストグループから除外します。
まとめ
要するに…
マルチキャストは、複数のホストに効率的にデータを送信するための通信方式で、ユニキャスト(1対1)やブロードキャスト(全員に送信)とは異なり、1対多のデータ伝送を実現します。マルチキャストで使用されるIPアドレスの範囲は、224.0.0.0~239.255.255.255で、これはクラスDアドレスに属しています。この範囲が224から始まる理由は、クラスAからクラスCまでが223.255.255.255まで使われているためです。
マルチキャストアドレスには大きく分けて3つの種類があります。まず、リンクローカルアドレスがあり、これは同一リンク内でのみ使用されるアドレスです。具体的には、224.0.0.0~224.0.0.255の範囲がリンクローカルアドレスに該当し、ルーターを超えて転送されることはありません。さらに、この範囲内には予約されているアドレスが存在し、例えば224.0.0.1は同一リンク上の全ホストに対するマルチキャストに使用され、224.0.0.2は全ルーターに対してマルチキャストする際に使用されます。
次に、グローバルアドレスがあります。これはインターネット上で使用できるマルチキャストアドレスで、224.0.1.0~238.255.255.255までの範囲に該当します。グローバルアドレスは、インターネット上でマルチキャストを実現する際に使われ、広範なネットワークに対して効率的にデータを送信することができます。
最後に、プライベートアドレスがあります。この範囲は239.0.0.0~239.255.255.255までで、組織内部のLANで使用されるプライベートなマルチキャストアドレスです。これらのアドレスはインターネット上では使われず、主に社内ネットワークや閉じた環境でのマルチキャスト通信に使用されます。
マルチキャスト通信を実現するためには、マルチキャストIPアドレスだけではなく、レイヤー2での通信を可能にするためのマルチキャストMACアドレスも必要です。MACアドレスは通常48ビットで構成されますが、マルチキャストMACアドレスのフォーマットは特定の規則に従います。まず、最初の24ビットは固定されており、これは「01:00:5E(固定値)」という値です。25ビット目もゼロで固定されており、残りの23ビットにマルチキャストIPアドレスの下位23ビットが使われます。これにより、マルチキャストIPアドレスを対応するMACアドレスに変換して、レイヤー2での通信が可能になります。
マルチキャストの転送プロセスは次のように行われます。①送信側がマルチキャストIPアドレス宛てにデータを送信すると、そのデータは参加しているホストに向けて転送されます。しかし、スイッチがマルチキャストを処理する際、IGMPスヌーピングという技術がなければ、どのポートにマルチキャストデータを送るべきかがわからないため、すべてのポートにデータをフラッディングすることになります。IGMPスヌーピングがない場合、マルチキャストデータが関係のないホストにも送信されるため、ネットワークに無駄な負荷がかかります。しかし、IGMPスヌーピングを有効にすると、スイッチがIGMPメッセージを覗き見し、どのポートにどのホストが接続されているかを記録します。これにより、フラッディングを防ぎ、特定のポートにのみマルチキャストデータを効率的に送信できるようになります。
IGMPスヌーピングは、スイッチがレイヤー2のデバイスでありながら、レイヤー3のIGMPメッセージを処理することを意味します。通常、IGMPメッセージはルーターに向けて送信されるものですが、スイッチがこのメッセージを「覗き見」することで、マルチキャストグループのメンバーシップ情報を取得します。このようにして、IGMPスヌーピングによってスイッチは、マルチキャストを必要としているホストにのみデータを送信することが可能になります。
IGMPにはいくつかの重要なメッセージがあります。例えば、ホストがマルチキャストグループに参加する際にルーターに送信する「IGMP Membership Report」や、ルーターが定期的にグループメンバーシップを確認するために送信する「IGMP Membership Query」があります。ルーターはこの確認メッセージを、224.0.0.1という全ホスト向けのアドレスに送信します。また、ホストがグループから脱退する際には、ルーターに向けて224.0.0.2という全ルーター宛てのメッセージを送信します。
フラッディングの原因は、通常のMACアドレステーブルが送信元MACアドレスを基にポートを記録するのに対し、マルチキャストMACアドレスは送信元として使われないため、どのポートに送信すべきかを決定できない点にあります。そのため、スイッチは全ポートにデータを送信するフラッディングを行います。しかし、IGMPスヌーピングを有効にすることで、スイッチは特定のポートにのみマルチキャストデータを送信できるようになり、無駄なフラッディングを回避することができます。
このように、マルチキャスト通信の基本的な仕組みやプロトコル、スイッチの動作、そしてIGMPスヌーピングの役割について理解することで、効率的なマルチキャスト通信がどのように実現されるかがわかります。
おわりに
本日は『マルチキャスト』について知見を深めました!
これでまた、一歩成長しました!これからも焦らず、1つずつこれからも頑張っていきましょう!では、さらばじゃっ!また会おうぞ!
今日はこの曲でお別れです。Luis Fonsi, Daddy Yankee Despacito ft. Justin Bieberです。ラテン調で夏にピッタリな曲です。では、どうぞっ