前回記事はこちら。
スイッチング
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つのネットワークしか生み出せない。(=これらのデバイスは通常1つのVLANだけに属する、ということ)
PCやプリンターは、このアクセスポートとつながらないとスイッチを介して情報収集やデータ送信などができないため、これが必須だということ。
そのデバイスが複数VLANをまたぐ必要があるか? を判断基準とし、アクセスポートを付与するか、トランクポートを付与するかを検討すればよい。
トランクポート
複数のVLANのトラフィックを同時に通すポート。主にスイッチ間の接続やルータとの接続に使われる。
データを送る時に、どのアクセスポートに送るかを送る側のスイッチがタグ付けする。
受け取った側のスイッチはつけられたタグを読み取り、対象のアクセスポートへ送る。この機能により、送り先に正確な情報を送ることができる。
例
スイッチAとスイッチBをトランクポートで接続すると、VLAN 10、20、30のトラフィックを1本のリンクで同時に通せる。
STP(スパニングツリーアルゴリズム)
スイッチ同士が繋がっている場合に使われる仕組み。
そもそもスイッチは、 「どこにデータを送ればいいか」を見て、正しい方向にデータを中継(リレー) する機械。
たとえば、こんな順番。
①Aさん → スイッチ → Bさん にメッセージを送る
②スイッチは「Bさんはこのポートにつながってるな」と判断して、そこにデータを送る
でもスイッチは 「最初は誰がどこにつながってるか」を知らない ので、初めは「とりあえず全部の出口に送ってみよう」とする。
※これを「フラッディング(flooding)」という。
ループするとどうなるか?
例として、スイッチが3台(スイッチA~B)あるとする。
これが三角形のようにつながってるとする(=ループ)。

ここでAにデータが入ってくると…
①Aは「誰宛かわからないから、全部に送ろう!」→ BとCに送る。
②Bは「新しいデータきた!全部に送ろう!」→ AとCに送る。
③Cも同じように → AとBに送る。
……あれ?
Aが出したデータが、またAに戻ってきちゃう!
そしてそのデータがまたフラッディングされて…永遠にぐるぐるぐるぐる……止まらない!
ループすると、データが何重にも増えてネットワークがパンクするし、スイッチが混乱して、誰がどこにいるのか覚えられなくなるし、最悪、全員ネットが使えなくなる。(通信が麻痺)
これを防ぐのがSTP!!!(キラキラキラ
STPを有効化すると?
STPはネットワークを見て、「あ、このルートはループになるから、一時的に切っとこう」と判断する。
その結果、以下のようになる。

これならループは起きない。
しかも、 もしどこかのスイッチが壊れても、「お、じゃあさっき切ってた道、いま開通させるね!」と自動で直してくれる。 これが本当に便利!
STPを有効化するような構成は?
スイッチが 複数の道でつながってる(冗長構成) 。(例は以下)

スイッチが1本ずつ直列につながってるだけなら使わない。ループが生まれないからね!(例は以下)

ルートブリッジ(Root Bridge)
ルートブリッジは、STPにとっての「中心点」。
すべてのスイッチは「ルートブリッジを起点に、どの道が一番近いか?」を考える。
そうすることで、「この道は使おう」「この道は封鎖しよう(ブロックしよう)」ってちゃんと決められる。
結果として、ループのない安全なネットワークができる!
ルートブリッジはどのようにして決まる?
BPDUに格納されているBridge IDという数字を見て、それが一番小さい人がルートブリッジになる。
順序としては以下。
- 全スイッチが「自分がリーダーだ」と思ってBPDUを出す。
- ほかのスイッチがそのBPDUを受け取って「自分より小さい番号の人がいる!」と気づく。
- 一番ブリッジIDが小さいスイッチが、最終的にルートブリッジとして残る、ということ。
Bridge IDの構成
プライオリティ(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送る? 古くなったら無効にする?」など |
