イーサネット ⑥レイヤ2スイッチの動作を理解する
今回は、レイヤ2スイッチの動きについて書いていきます。
レイヤ2スイッチとは、レイヤ2のデータリンク層に位置するスイッチです。データリンク層のプロトコルは、MACアドレスですね。レイヤ2のMACアドレスを見て処理をするのがレイヤ2スイッチです。
さて、いよいよ通信の流れや動きの話をしていきます。
用語の記憶だけだと、イメージするのも難しいですし、勉強していても辛いだけです。しかし、動作の流れを理解できてくると、視界が開ける感じがしてほんと楽しくなってきます。
難しい専門用語が出てきますが、なるべく分かりやすく、イメージしやすいように書いていきます。
Contents
レイヤ2スイッチはどうやって通信しているの?
レイヤ2スイッチは、受け取ったフレームからMACアドレスを見て、「このポートに転送しよう」と決めています。フレームとは、データをEtherヘッダでカプセル化した(被せた)ものです。
MACアドレスを見て転送といっても、通信の流れの理解は難しいと思うので、絵を使って説明します。
通信の流れ
コンピュータの通信は、MACアドレスだけで通信するわけではありません。IPアドレスとMACアドレスを見て通信します。IPアドレスは、レイヤ3ですね。
では、通信の流れで見ていきましょう。
ホストAは、ホストBの写真を見たいとします。
①ホストAは、ホストBのIPアドレス 192.168.0.2にアクセスするため、フレームを送信します。
②フレームを受け取ったレイヤ2スイッチは、宛先MACアドレスを見て転送します。宛先MACアドレスは、相手のMACアドレスです。今回の例ではホストBのMACアドレスです。Etherヘッダに書き込まれています。Etherヘッダには、送信元MACアドレスもあります。これは、送信したホストのMACアドレスです。ホストAのMACアドレスです。
【MACアドレスを見て学習】
【Etherヘッダの中身】
③レイヤ2スイッチは、MACアドレステーブルを見ます。MACアドレステーブルとは、どのホストのMACアドレスがどのポートにあるか記録しているものです。下のオレンジ色の表のことです。このおかげでレイヤ2スイッチは、BのMACアドレスは1番ポートだなということが分かります。そして転送をします。
④最後にホストBは、受け取ったフレームを見ます。自分自身のMACアドレス、IPアドレスのため、そのフレームを受信します。もしこれが、自分のものでなかったら、フレームを捨てます。
MACアドレスの学習はどうやっているの?
レイヤ2スイッチは、フレームを受信した時に「送信元MACアドレス」を見て学習をします。送信元MACアドレスとは、送信したホストのMACアドレスでしたね。学習したMACアドレスは、MACアドレステーブルに記録されます。
下の絵の場合、レイヤ2スイッチは、ホストAのフレームを受信したときに、MACアドレスを学習します。「MACアドレス00:00:00:00:00:01は、Gi1から受信」というようにMACアドレステーブルに記録するのです。
フラディング
フラッディングは、受信したポート以外の全てのポートにフレーム転送をすることです。3つパターンがあります。
- ①宛先MACアドレスがMACアドレステーブルに登録されていない。
→つまり知らない宛先MACアドレスが来た場合 - ②ブロードキャスト
→同じリンクの全員に対して通信するものです。ブロードキャストを受け取ったスイッチは、受信したポート以外の全ポートにフラッディングします。
- ③学習していないマルチキャスト
→マルチキャストは、同じグループ宛に送信するものです。下の絵の通りです。
ですが、マルチキャストMACアドレスを学習していない場合は、フラッディングしてしまいます。
効率がいい全二重(Full Duplex)通信
送信と受信を同時にできるのが、全二重通信です。つまり効率がいいわけですね。
反対に同時に行えないのが半二重通信です。半二重通信は、通信するときに衝突が起こります。そのため、CSMA/CDによるアクセス制御が必要になります。CSMA/CDの詳細(イーサネット④CSMA/CDの動作を覚える)
全二重通信になるためには、全二重通信に対応した装置であることが必要です。レイヤ2スイッチは対応していますが、ハブは全二重に対応していません。
マイクロセグメンテーション。コリジョンドメインを最小分割
このキーワードも覚える必要があります。
マイクロセグメンテーションとは、1つのスイッチのポートに接続してコリジョンドメインを分割することを言います。
普段意識しないけど使っているオートネゴシエーション
オートネゴシエーションは、自動で速度を判別してくれる機能です。
例えば、1000Mbpsで全二重通信のパソコンとスイッチの1000Mbpsのポートを接続すれば、速度は1000Mbps&全二重通信と自動で決めてくれます。
イーサネットには、10Mbps、100Mbpsといろんな速度があります。速度はお互いに一致していることが必要です。ですので、自動でお互いの速度を判別をして決めているのです。
お互い速度が違っていたら?
より速度が低い方に合わせます。
パソコンが100Mbpsで、接続したスイッチが1000Mbpsだったら、遅い方の100Mbpsになります。速度が遅いパソコンの方に合わせるわけです。
自分はオートネゴシエーションだけど相手がオートネゴシエーションが無効だったら
自分のパソコンは全二重通信、相手は半二重通信となってしまいます。
この場合、うまく通信することができません。
実際にレイヤ2スイッチをコマンドで設定していくと、オートネゴシエーションを無効にするときがあります。スイッチは、オートネゴシエーションが無効だけど、パソコンはオートネゴシエーションというケースがあったりします。そのとき接続すると、半二重通信となります。half duplexともいいます。
こうならないようにお互いに設定を同じにすることが大切です。
まとめ
今回は、レイヤ2スイッチの通信の流れとレイヤ2スイッチの機能についてお伝えしました。もし自宅の環境や会社の環境にレイヤ2スイッチがあったら、どうやって通信しているんだろうと意識して考えると楽しく覚えることができると思います。
<レイヤ2スイッチの動作>
- MACアドレスの学習は、フレームを受信して行う。
- 転送(1)フレームのEtherヘッダにある宛先MACアドレスを見る。(2) MACアドレステーブルを参照する。
- フラッディング(全ポート)に出す。
- 知らないMACアドレス
- ブロードキャスト
- 登録されていないマルチキャスト
<レイヤ2スイッチの機能>
- 効率がいいのは全二重通信。効率が悪いのが半二重通信。
- レイヤ2スイッチのポートにホストを接続すれば、コリジョンドメインを最小化。これをマイクロセグメンテーションという。
- オートネゴシエーションは、速度を自動で判別してくれる機能
- お互いにネゴシエーションの設定を合わせないとうまく通信できなくなる。全二重通信/半二重通信となる。