ネットワーク学校の振り返り 3/n

前回記事は[こちら](https://qiita.com/NAMICHAN/items/6149bcb47a0bb5b82c79)。

# スイッチング
## L2スイッチとL3スイッチ
簡単に、L2スイッチとL3スイッチの比較表を提示する。

| 比較項目         | L2スイッチ（レイヤ2）              | L3スイッチ（レイヤ3）                      |
| ------------ | ------------------------- | --------------------------------- |
| 主な機能         | MACアドレスを使った**スイッチング（転送）** | IPアドレスを使った**ルーティング（経路選択）**        |
| 処理レイヤ（OSI参照） | レイヤ2（データリンク層）             | レイヤ3（ネットワーク層）                     |
| VLAN間通信      | 不可（ルーターやL3スイッチが必要）      | 可能（内部でルーティングできる）                |
| ルーティングプロトコル  | 非対応                     | 対応（OSPF, RIP, static routingなど） |
| 使用場所の例       | 小規模ネットワーク、アクセススイッチなど      | 中規模〜大規模ネットワーク、VLAN間ゲートウェイなど       |

ちなみにルーターとの違いも出しておく。

| 機器         | 主な働き                     | OSI層（参照）      | 通信単位      |
| ---------- | ------------------------ | ------------- | --------- |
| **L2スイッチ** | 同じネットワーク内で通信（MACアドレスで転送） | レイヤ2（データリンク層） | フレーム（MAC） |
| **L3スイッチ** | VLAN間など異なるネットワークの通信が可能   | レイヤ3（ネットワーク層） | パケット（IP）  |
| **ルーター**   | 異なるネットワーク間の通信（インターネット含む） | レイヤ3（ネットワーク層） | パケット（IP）  |



## アクセスポートとトランクポート
主にスイッチのポート設定に関連する用語で、VLANを扱う際に重要な概念である。
違いは以下表参照。

| 特徴         | アクセスポート        | トランクポート        |
| ---------- | -------------- | -------------- |
| 所属できるVLAN数 | 1つのみ           | 複数（タグで識別）      |
| フレームの形式    | タグなし（untagged） | タグ付き（tagged）   |
| 主な用途       | PCやプリンタなどの接続   | スイッチ間やルータとの接続  |
| VLAN識別の方法  | スイッチ側で設定したPVID | 802.1Q タグによる識別 |


### アクセスポート
主にエンドユーザーのデバイス（PC、プリンタなど）を接続するために使われる。
そもそもネットワーク自体は網上に色々な線を張り巡らしているものだが、**アクセスポートからは１つのネットワークしか生み出せない。（＝これらのデバイスは通常1つのVLANだけに属する、ということ）**
PCやプリンターは、このアクセスポートとつながらないとスイッチを介して情報収集やデータ送信などができないため、これが必須だということ。
**そのデバイスが複数VLANをまたぐ必要があるか？** を判断基準とし、アクセスポートを付与するか、トランクポートを付与するかを検討すればよい。


### トランクポート
複数のVLANのトラフィックを同時に通すポート。主にスイッチ間の接続やルータとの接続に使われる。
データを送る時に、どのアクセスポートに送るかを送る側のスイッチがタグ付けする。
受け取った側のスイッチはつけられたタグを読み取り、対象のアクセスポートへ送る。この機能により、送り先に正確な情報を送ることができる。
#### 例
スイッチAとスイッチBをトランクポートで接続すると、VLAN 10、20、30のトラフィックを1本のリンクで同時に通せる。



## STP（スパニングツリーアルゴリズム）
スイッチ同士が繋がっている場合に使われる仕組み。
そもそも**スイッチ**は、 **「どこにデータを送ればいいか」を見て、正しい方向にデータを中継（リレー）** する機械。
たとえば、こんな順番。
①Aさん → スイッチ → Bさん にメッセージを送る
②スイッチは「Bさんはこのポートにつながってるな」と判断して、そこにデータを送る
でもスイッチは **「最初は誰がどこにつながってるか」を知らない** ので、初めは「とりあえず全部の出口に送ってみよう」とする。
※これを「フラッディング（flooding）」という。

### ループするとどうなるか？
例として、スイッチが3台（スイッチA～B）あるとする。
これが三角形のようにつながってるとする（＝ループ）。
![スクリーンショット 2025-06-11 134922.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804761/c5e9bd24-b0e5-4003-9d94-c9ed6b0f370c.png)
ここでAにデータが入ってくると…
①Aは「誰宛かわからないから、全部に送ろう！」→ BとCに送る。
②Bは「新しいデータきた！全部に送ろう！」→ AとCに送る。
③Cも同じように → AとBに送る。
……あれ？
Aが出したデータが、またAに戻ってきちゃう！
そしてそのデータがまたフラッディングされて…永遠にぐるぐるぐるぐる……止まらない！
ループすると、データが何重にも増えてネットワークがパンクするし、スイッチが混乱して、誰がどこにいるのか覚えられなくなるし、最悪、全員ネットが使えなくなる。（通信が麻痺）

**これを防ぐのがSTP！！！（キラキラキラ**

### STPを有効化すると？
STPはネットワークを見て、「あ、このルートはループになるから、一時的に切っとこう」と判断する。
その結果、以下のようになる。
![スクリーンショット 2025-06-11 135441.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804761/04a022ae-2d0f-4997-a663-109070c0ac9d.png)
これならループは起きない。
しかも、 **もしどこかのスイッチが壊れても、「お、じゃあさっき切ってた道、いま開通させるね！」と自動で直してくれる。** これが本当に便利！

### STPを有効化するような構成は？
スイッチが **複数の道でつながってる（冗長構成）** 。（例は以下）
![スクリーンショット 2025-06-11 140528.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804761/92409815-365a-4e2b-b33c-7d85e3c0f663.png)
スイッチが1本ずつ直列につながってるだけなら使わない。ループが生まれないからね！（例は以下）
![スクリーンショット 2025-06-11 140606.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804761/e9d06450-6745-4185-871f-04e1e6ac23bb.png)



## ルートブリッジ（Root Bridge）
ルートブリッジは、STPにとっての「中心点」。
すべてのスイッチは「ルートブリッジを起点に、どの道が一番近いか？」を考える。
そうすることで、「この道は使おう」「この道は封鎖しよう（ブロックしよう）」ってちゃんと決められる。
結果として、ループのない安全なネットワークができる！

### ルートブリッジはどのようにして決まる？
BPDUに格納されているBridge IDという数字を見て、それが一番小さい人がルートブリッジになる。

順序としては以下。
- 全スイッチが「自分がリーダーだ」と思ってBPDUを出す。
- ほかのスイッチがそのBPDUを受け取って「自分より小さい番号の人がいる！」と気づく。
- 一番ブリッジIDが小さいスイッチが、最終的にルートブリッジとして残る、ということ。

### Bridge IDの構成
ブリッジIDは、以下の2つを組み合わせた数字のこと。
![スクリーンショット 2025-06-11 144858.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3804761/a391d3c2-ff0c-4d5e-af78-783292525096.png)
#### プライオリティ（Priority）
スイッチに最初から設定されてる数字。普通は「32768」。
管理者が「このスイッチをリーダーにしたい」と思ったら、この数字を小さくすればよい。
（例：4096や0にすれば、選ばれやすくなる）
#### MACアドレス
スイッチについてる世界で一つの番号。
同じプライオリティのときは、**MACアドレスが小さいほうが勝ち！**

## ルートポート（Root Port）
ルートブリッジに一番近いポートのこと。
他のスイッチから見て、「委員長のところへ行くならこの道がいちばんいいよ！」っていう専用の道。だから、1台のスイッチに1つだけルートポートがある。
各スイッチが、ルートブリッジに向かってデータを送るための「専用通路」みたいなイメージ。
ちなみにルートブリッジ自身にはルートポートはない（自分が委員長だから）。


### ルートポートはどう決まる？
スイッチが受け取ったBPDUを見て、**「コストが一番小さいポート」** を見てルートポートを決定する。
もし同じコストの道が複数ある場合は以下。
- 送ってきたスイッチのBridge IDが小さい方を選ぶ。
- それでも同じなら、ポート番号の小さい方を選ぶ。

## 指定ポート（Designated Port）
1つのネットワークセグメント内で、通信を通してよいと許可された代表ポートのこと。
セグメントごとに1つだけ選ばれ、そのポートから他のスイッチや端末にデータを送信できる。

### 指定ポートはどう決まる？
「そのセグメントから見て、一番効率よくルートブリッジへ行けるポート」が指定ポートに選ばれる。
ルートポートの選出方法とは違って、 **セグメントごとに選ばれるということ！**

選ぶ基準（優先順位）は以下。（ルートポートの選出方法と同じ）
- そのポートからルートブリッジまでのパスコストが最も小さいポート。
- コストが同じなら、そのスイッチのBridge IDが小さい方。
- それも同じなら、ポートID（ポート番号）が小さい方。

| ポートの種類     | どこで選ばれる？ | 目的                                |
| ---------- | -------- | --------------------------------- |
| ルートポート（RP） | 各スイッチごと  | そのスイッチが**ルートブリッジへ向かう最短ルート**を通すポート |
| 指定ポート（DP）  | 各セグメントごと | セグメント内で**ルートブリッジに最も効率よく行ける代表ポート** |


## 非指定ポート（Non Designated Port, Blocking Port）
STPにおいて、ループを防ぐために通信を遮断されているポート（RPにもDPにも選ばれなかったポート）のこと。
**セグメント単位でも、スイッチ単位でもない。**
| 項目     | 内容                              |
| ------ | ------------------------------- |
| 状態     | **Blocking（ブロッキング）状態**          |
| 通信     | データフレームは**通さない**（※ただしBPDUは受信）   |
| 役割     | ループを防ぐため、あえて使わないように「待機状態」にされている |
| 存在する場所 | スイッチのポートで、**RPでもDPでもない**もの      |

### 例
- セグメント：「みんなで集まって、誰がリーダー（指定ポート）になるか決める」
    →それ以外の人は通信を止めて待機（＝非指定ポート）
- スイッチ：「どのポートを使ってルートブリッジに行くか決める（RP）」
    →それ以外は、必要ならDP、いらなければ非指定（＝通行止め）



## BPDU（Bridge Protocol Data Unit）
STPがスイッチ同士でやりとりするメッセージ（フレーム）のこと。
スイッチたちはSTPで「どの道を使って、どの道を止めるか」を決めるが、そのためには、お互いに「今の状態」や「自分がどの位置にいるか」を伝え合う必要がある。
その情報をやりとりするのが、BPDUというメッセージ。

### BPDUに格納されている情報は？
以下のような情報が格納されている。ホントはもっとあるけど、代表的なものを…。
| フィールド  | フィールド（日本語）      | 意味                          |
| ---------- | ---------- | --------------------------- |
| Root ID  | ルートブリッジのID | 経路探索の起点となるスイッチ（ルートブリッジ）のID      |
| Bridge ID  | 送信元ブリッジのID | 自身の識別ID（ブリッジID）            |
| Path Cost  | コスト        | ルートブリッジまでの距離を表す値          |
| Max Age, Hello Time, Forward Delayなど  | タイマー情報     | 「何秒ごとにBPDU送る？ 古くなったら無効にする？」など |

# 参照
- https://www.panduit.co.jp/column/naruhodo/2240/
- https://www.alaxala.com/jp/techinfo/archive/manual/AX3630S/HTML/11_10/OPEREF/0131.HTM