「ネットワークスイッチ」についてわかりやすくまとめてみた

<h1>スイッチとは？</h1>
スイッチは、OSI参照モデルではレイヤ2のデータリンク層に属する
ネットワークを構成する上で重要な機器です。
スイッチは集線装置であり、<b>接続したコンピュータなどの機器同士の相互通信を可能とします。</b>
集線装置は他にもリピータハブなどがありますが、リピータハブは基本的にデータを受信したポート以外の全てのポートにデータを送信しますが、
<b>スイッチは目的の場所に対してデータを送信することができ、また同時に複数の端末が通信可能という特徴を持っています。</b>
![ダウンロード.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1430519/10489b5a-5b4a-aaa7-1bd6-15526e849c27.jpeg)
こうした動作が実現できるようにスイッチは
<b>①フィルタリング</b>
<b>②MACアドレスの学習</b>
<b>③フロー制御</b>
といった機能を備えています。

<h1>①フィルタリング</h1>
スイッチが目的の相手にのみデータを送信するには、その相手がどのスイッチの、どのポートに接続しているのかを識別できなければなりません。
<b>スイッチでは、受信したフレームの宛先MACアドレスを基に送信先を識別します。</b>
そのためスイッチの内部に、スイッチのポートとそのポートに接続している端末のMACアドレスを紐付けた<b>MACアドレステーブル</b>を持っています。

スイッチは、
<b>①受け取った電気信号をフレームに変換し、宛先MACアドレスを確認します。
②そして、宛先MACアドレスを基にMACアドレステーブルを検索し、該当するポートにデータを送信します。</b>
この動作を<b>フィルタリング</b>と言います。
![https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_1430519_a51bedc8-9b0d-9dbc-d212-4003738acc3b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1430519/004acde7-a9df-7562-9eb6-5cc081790dcc.png)
(受け取ったフレーム内に宛先MACアドレスと送信元MACアドレスが含まれている。)

<h1>②MACアドレスの学習</h1>
フィルタリングで使用するMACアドレステーブルは、最初からMACアドレスとポートの情報が登録されているわけではなく、最初はどのポートにどの端末が接続されているかはわかりません。

<b>スイッチはデータを転送しながらMACアドレスを学習していきます。</b>

MACアドレステーブルに宛先MACアドレス情報がある場合は、対象のポートにだけフレームを転送します。
該当する情報がない場合には<b>フラッディング</b>と呼ばれる、受信したポート以外からの全てのポートからフレームを送信することを行います。
フラッディングをすることで宛先のMACアドレスを見つけることができ、それをMACアドレステーブルに登録することができます。

学習したMACアドレスは、一定時間が経過するとMACアドレステーブルから消去されます。
これを<b>MACアドレスのエージング</b>と言います。

<h1>③フロー制御</h1>
スイッチには、MACアドレステーブルが保存されているメモリとは別にバッファメモリがあり、そこに全てのポートで受信したフレームが蓄積されます。
受信処理が追いつかなくなり、バッファメモリが溢れそうになると、各ポートに接続している機器に信号を送り、フレームの送信を抑制します。
これを<b>フロー制御</b>といい、<b>バックプレッシャ制御</b>と<b>IEEE 802.3xフロー制御</b>の2つの方式があります。

<h2>バックプレッシャ制御</h2>
バックプレッシャ制御は<a href="https://qiita.com/nasii2424/items/36cb1b1edea456ed60c1">CSMA/CD方式のアクセス制御</a>を応用して輻輳制御を行います。
(輻輳(ふくそう)：トラフィックが増大してデータが追いつかない状態)

スイッチは、基本的に受信したフレームをバッファメモリに格納し、そのデータ量を監視しています。
バックプレッシャ制御では、バッファメモリの残り容量に基づき、①〜④のように輻輳制御を行います。

<b>①端末からのフレームを送信し、バッファメモリに格納する
②処理が追いつかなくなり、バッファメモリの残りが減少し、溢れそうになる
③送信側に、衝突が起きたことを知らせるジャム信号を送信する
④フレームの送信元の端末は「コリジョンが発生」と判断し、
　CSMA/CD方式に従ってランダムな時間待つことで送信するデータ量を抑制する

バックプレッシャ制御はCSMA/CD方式を応用した輻輳制御を行うため、
<b>半二重通信</b>で使用されます。
(半二重通信：データの送信と受信を同時に行わず、送信側と受信側が交互にデータを送信することで通信を行う方式)

<h2>IEEE 802.3xフロー制御</h2>
IEEE 802.3xフロー制御は、スイッチ上のバッファメモリを監視する点は同じですが、
<b>データの送信を抑制するためにPAUSEフレームを送信します。</b>

<b>①端末からのフレームを送信し、バッファメモリに格納する
②処理が追いつかなくなり、バッファメモリの残りが減少し、溢れそうになる
③送信側にPAUSEフレームを送信する
④フレームの送信元の端末はPAUSEフレームの情報を基に「指定時間だけ」データの送信を停止する</b>

![2358D30D-84C3-4A0D-9F33-5ADA9A516BC4_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1430519/f060a163-d0f1-4980-ac1f-fbabddc6674a.jpeg)
(引用元：https://atmarkit.itmedia.co.jp/ait/articles/0110/02/news003.html)


IEEE 802.3xフロー制御は、<b>全二重通信</b>で使用されます。
(全二重通信：データの送信と受信を受信側と送信側が同時に行うことができる方式)

<hr>

<h1>スイッチとブリッジの比較</h1>
データリンク層(レイヤ2)で動作する機器にはスイッチ以外にも<b>ブリッジ</b>というネットワーク機器があります。

ブリッジもスイッチ同様、不要な端末にデータを流さない、MACアドレスを学習するといった機能を持っていますが、違いもあります。

<h2>処理体系</h2>
スイッチとブリッジは、どちらもレイヤ2の代表的なネットワーク機器ですが、ブリッジは<b>ソフトウェア</b>、スイッチは<b>ハードウェア</b>で処理を行います。

ブリッジではフレームの転送などの処理をメモリに読み込み、CPUで実行します。
一方、スイッチでは、専用の<b>ASIC（特定の機能を持ったICチップ）</b>で処理を行うため、データの転送処理などがCPUとは別に実行されることになります。

<h2>処理速度</h2>
ブリッジでは、全ての処理がCPU任せになります。
一方、スイッチではASICに機能を分担させられるため、CPUへの負荷が減り、転送処理が速くなります。

<h2>ポート密度</h2>
<b>ポート密度とは、1つのネットワーク機器にあるポートの数のことです。</b>
ブリッジはほとんどが2ポートのみです。
それに対してスイッチは、ブリッジより多くのポートを持ちます。
数百のポートを備えたものもあります。

<hr>

<h1>参考文献</h1>
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313433303531392f63616137346666652d366561332d313161622d363732332d3565386239633366653536622e6a706567.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1430519/311cfad0-d754-ab75-4d0a-adf5e571b591.jpeg)
<a href="https://www.amazon.co.jp/gp/product/B087JKL1JH/ref=ppx_yo_dt_b_d_asin_title_o01?ie=UTF8&psc=1">シスコ技術者認定教科書 CCNA 完全合格テキスト＆問題集</a>