OSI参照モデル 深掘り解説:第2層 データリンク層

データリンク層(L2)は、同一ネットワークセグメント内の「機器間通信」を制御する層です。NW試験では、スイッチの動作原理はもちろん、ループ防止プロトコルであるSTP(スパニングツリー)の内部動作が頻繁に問われます。とくにルートブリッジ選定の比較ロジックは、手順を一つでも誤ると致命的な失点につながるため、本記事で完璧に固めておきましょう。

1. データリンク層の主要機能

データリンク層はIEEE 802委員会が定める規格群に基づき、主に2つのサブレイヤに分かれています。

サブレイヤ 正式名称 主な役割
LLC Logical Link Control 上位プロトコル(IPなど)との識別・多重化。フロー制御・誤り制御の定義。
MAC Media Access Control MACアドレスによるフレームのアドレッシング。共有媒体へのアクセス制御(CSMA/CD等)。

2. イーサネットフレームの構造

イーサネット(IEEE 802.3)のフレームは以下のフィールドで構成されます。試験では各フィールドのサイズが問われることがあります。

フィールド サイズ 内容
プリアンブル + SFD 8バイト フレーム開始の同期信号。SFD(Start Frame Delimiter)はフレーム本体の開始を示す。
宛先MACアドレス 6バイト フレームの宛先機器のMACアドレス。
送信元MACアドレス 6バイト フレームの送信元機器のMACアドレス。
タイプ / 長さ 2バイト 1500以下なら「長さ」(802.3)、1536以上なら「タイプ」(Ethernet II)。IPv4は0x0800。
データ(ペイロード) 46〜1500バイト 上位層から渡されたデータ。最小46バイトに満たない場合はパディングで補完。
FCS 4バイト CRC-32による誤り検出コード。受信側でチェックし、不一致ならフレームを破棄する。※計算対象は宛先MACアドレスからデータ末尾まで。物理層のプリアンブルとSFDはFCSの計算に含まれない。

3. スイッチの動作:MACアドレステーブル

スイッチはMACアドレステーブル(CAMテーブル)を動的に学習することで、フレームを必要なポートのみに転送します。この動作は試験のシナリオ問題で頻出です。

動作 発生条件 内容
学習(Learning) フレーム受信時(常時) 受信フレームの送信元MACアドレスとポートをテーブルに登録する。
フラッディング(Flooding) 宛先MACアドレスがテーブルに未登録 受信ポート以外の全ポートにフレームを送出する。
転送(Forwarding) 宛先MACアドレスが別ポートに登録済み 該当ポートのみにフレームを転送する。
フィルタリング(Filtering) 宛先MACアドレスが受信ポートと同一 フレームを破棄する(不要な転送を抑制)。

4. STP(スパニングツリープロトコル)の必要性

スイッチを複数台接続して冗長パスを確保する構成は、可用性の向上に不可欠です。しかし、冗長パスはブロードキャストループ(ブロードキャストストーム)やMACアドレスフラッピングを引き起こします。STP(IEEE 802.1D)は、論理的に一部のポートをブロッキング状態にすることでループを排除しつつ、障害発生時には自動的に代替パスへ切り替えます。

5. ルートブリッジ選定プロセス:ステップバイステップ

STPの動作はすべて「ルートブリッジは誰か」という問いを起点とします。ここを誤解すると、その後のポートロール決定もすべて崩れます。

ブリッジIDの構成

ルートブリッジの選定は「ブリッジID」の大小比較で決まります。ブリッジIDは2つのフィールドで構成されます。

フィールド サイズ デフォルト値 備考
ブリッジプライオリティ 2バイト(16ビット) 32768 (0x8000) 上位4ビットがプライオリティ値(0〜15)、下位12ビットが拡張システムID(Extended System ID = VLAN ID)。この構造のためプライオリティの設定可能値は4096の倍数(0〜61440)に限られる。値が小さいほど優先。
MACアドレス 6バイト(48ビット) 機器固有の値 プライオリティが同一の場合のタイブレーカー。値が小さい(数値的に若い)ほど優先。

ブリッジIDの比較ルール:プライオリティを先に比較し、同値の場合のみMACアドレスを比較する。

ブリッジプライオリティの内部構造(16ビット)

ブリッジプライオリティの2バイト(16ビット)は、さらに上位4ビットと下位12ビットに分割されています。

ビット位置 15〜12(上位 4ビット) 11〜0(下位 12ビット)
役割 プライオリティ値 拡張システムID(VLAN ID)
取り得る範囲 0〜15 0〜4095
設定単位 1ステップ = 2¹² = 4096 刻み VLANごとに自動付加(手動設定不可)

この構造により、管理者が設定できるプライオリティ値は 4096の倍数(0 / 4096 / 8192 … / 61440)のみに制限されます。たとえば「プライオリティを32768に設定、VLAN 10」の場合、実際のブリッジプライオリティフィールドは 32768 + 10 = 32778 となります。

現場メモ(拡張システムIDについて): Cisco機器をはじめ多くのベンダー実装では、拡張システムIDとしてVLAN IDがブリッジプライオリティの下位12ビットに自動的に付加されます。たとえばVLAN 10のプライオリティが32768の場合、実際のブリッジIDは32768 + 10 = 32778として扱われます。試験問題でVLAN別STPが登場した際は、この加算を忘れずに計算してください。

ステップ1:全スイッチが自分をルートブリッジと仮定してBPDUを送出

起動直後、すべてのスイッチは「自分がルートブリッジである」という情報を含むBPDU(Bridge Protocol Data Unit / 設定BPDU)をすべてのポートから2秒ごとに送出します。BPDUには「ルートブリッジID」「送信元ブリッジID」「ルートへのパスコスト」が含まれます。

ステップ2:BPDUの比較によりルートブリッジを1台に絞る

各スイッチは受信したBPDUの「ルートブリッジID」と自身が認識しているルートブリッジIDを比較します。

  • 受信したルートブリッジIDが自身の認識より小さければ(優先度が高ければ)、そちらを新しいルートブリッジとして採用し、BPDUを更新して転送する。
  • 受信したルートブリッジIDが自身の認識より大きければ、受信したBPDUを破棄し、自身のBPDUを送り続ける。

この比較をネットワーク全体で繰り返すことで、最終的に最小のブリッジIDを持つスイッチ1台がルートブリッジとして収束します。

ステップ3:ルートポートの決定(非ルートブリッジの作業)

ルートブリッジ以外の各スイッチは、自身の各ポートでルートブリッジまでの「ルートパスコスト」を計算し、最も小さいポートをルートポート(Root Port)として1つだけ選択します。ルートポートはフォワーディング状態になります。

ルートパスコストが同値の場合は、以下の順序でタイブレークします。

比較順序 比較対象(※注) 選択基準
1位 ルートパスコスト(自スイッチが計算) 値が小さいポート(ルートへの経路が短い)
2位 BPDUを送信してきた上流スイッチのブリッジID 上流スイッチのブリッジIDが小さい側のポート
3位 BPDUを送信してきた上流スイッチのポートID 上流スイッチのポートIDが小さい側につながるポート

※注(2位・3位について): 2位・3位で比較する「ブリッジID」「ポートID」は、自スイッチの値ではなく、BPDUを送信してきた上流(対向)スイッチの値です。自スイッチは受け取ったBPDUに記載された上流側の情報を読み取って比較します。この視点を誤ると、冗長構成でどのポートがブロッキングになるかを正反対に判断してしまうため注意してください。

ポートIDによるタイブレーク(冗長接続の場合): 2台のスイッチ間が2本以上のケーブルで接続されている冗長構成では、パスコストも対向スイッチのブリッジIDも同一になります。この場合、最終的な決め手は対向スイッチ(上流側)のポートIDです。ポートIDは「ポートプライオリティ(8ビット、デフォルト128)」と「ポート番号(8ビット)」を連結した16ビット値です。たとえば上流スイッチのGi0/1(ポート番号1)とGi0/2(ポート番号2)の2本で繋がっているなら、ポートID値が小さいGi0/1側につながる自スイッチのポートがルートポートに選ばれ、もう一方はブロッキング状態になります。試験のシナリオ問題で「どのポートがブロックされるか」を問う設問では、この第3タイブレークが正解の鍵を握ります。

ステップ4:指定ポートの決定(各セグメント1ポート)

各セグメント(リンク)には、ルートブリッジ方向にフレームを転送する責任ポートとして指定ポート(Designated Port)が1つだけ選ばれます。選定基準はルートポートと同じ比較順序(パスコスト→ブリッジID→ポートID)ですが、セグメントを共有する2台のスイッチのどちらが担当するかを決める点が異なります。ここで比較する「ブリッジID」「ポートID」は、セグメントを挟んだ対向スイッチ(相手側)の値との比較です。自スイッチの値が小さければ自スイッチが指定ポートを担当します。

  • ルートブリッジのすべてのポートは、必ず指定ポートになります(ルートへのコストが0で最小のため)。

ステップ5:非指定ポートをブロッキング状態に設定

ルートポートにも指定ポートにも選ばれなかったポートは非指定ポート(Non-Designated Port)となり、ブロッキング状態に設定されます。このポートはフレームの送受信を行わず(BPDUの受信のみ許可)、論理的にループが断ち切られます。

6. パスコストの標準値

STPでのパスコストはIEEE 802.1D-1998(旧規格)とIEEE 802.1D-2004(新規格)で異なります。試験ではどちらの規格を前提とするか問題文を確認することが重要です。

リンク速度 旧規格コスト(1998) 新規格コスト(2004)
10 Mbps 100 2000000
100 Mbps 19 200000
1 Gbps 4 20000
10 Gbps 2 2000

パスコストはルートブリッジに向かうリンクを通過するたびに加算されます。ルートブリッジ自身のルートパスコストは0です。

現場の知見(混在リスクと10G超の落とし穴): 旧規格と新規格のコスト体系は桁が2〜3桁異なります。ネットワーク内に異なる規格で動作するスイッチが混在すると、各スイッチが計算するルートパスコストに大きなズレが生じ、意図しないポートがルートポートに選ばれる誤動作が起きます。検証環境と本番環境でスイッチベンダーやファームウェアバージョンが異なる場合は、必ず spanning-tree pathcost method の設定を統一してください。また旧規格では10 Gbpsのコストが2と定義されており、40 Gbps・100 Gbpsといった高速インタフェースを区別できません(コストは最小値1に丸められる)。DC環境や高密度コアスイッチを扱う現場では新規格への統一が必須です。

Long/Short方式:Cisco実機での統一手順

Cisco機器では、パスコスト計算方式を Short(旧規格)Long(新規格) のどちらかにグローバル設定します。

# 新規格(Long)に統一する場合 
spanning-tree pathcost method long 

# 旧規格(Short)に統一する場合(デフォルト) 
spanning-tree pathcost method short 

Long方式では40 Gbps以上の高速インタフェースも区別可能なコスト値が割り当てられます。

リンク速度 Long方式コスト(新規格) Short方式コスト(旧規格)
10 Gbps 2000 2
40 Gbps 500 1(最小値に丸め)
100 Gbps 200 1(最小値に丸め)
400 Gbps 50 1(最小値に丸め)

Short方式では40 Gbps以上はすべてコスト1に丸められるため、複数の高速リンクが存在する環境でSTPが正しく動作しません。DCコアやスパイン-リーフ構成を扱う場合は Long方式への統一と全スイッチでの設定確認が必須 です。

7. STPのポート状態遷移

STPポートは電源投入後、次の順序で状態が遷移します。各状態の滞在時間はタイマーで管理されており、試験での頻出ポイントです。

状態 滞在時間 フレーム転送 MACアドレス学習 BPDU処理
ブロッキング(Blocking) 最大20秒(Max Age) しない しない 受信のみ
リスニング(Listening) 15秒(Forward Delay) しない しない 送受信
ラーニング(Learning) 15秒(Forward Delay) しない する 送受信
フォワーディング(Forwarding) 障害発生まで継続 する する 送受信

STPの収束(起動からフォワーディングまで)には最大で約50秒(Max Age 20秒 + Forward Delay 15秒 × 2)かかります。この収束の遅さは、ネットワーク障害時の通信断時間として現場で大きな問題となってきました。

この課題を根本から解決したのがRSTP(Rapid STP / IEEE 802.1w)です。RSTPでは従来の5状態を整理し、「ブロッキング・リスニング・ディセーブル」をDiscarding(廃棄)という1つの状態に統合しました。これにより状態遷移のロジックが大幅に簡素化され、ネイバースイッチとの直接ネゴシエーション(Proposal/Agreement)によってコンバージェンスを数秒以内に短縮しています。次回記事では、このRSTPのポート状態・ポートロール・高速収束の仕組みを詳しく掘り下げます。

8. PortFastとBPDUGuard

試験では、STPの最適化設定も問われます。

PortFast: エンドデバイス(PCやサーバ)が接続されるポートに設定し、ブロッキング→リスニング→ラーニングの待機をスキップして即時フォワーディング状態にします。スイッチが接続されたポートには設定してはいけません(ループのリスク)。

BPDUGuard: PortFastが有効なポートでBPDUを受信した場合に、そのポートを即座にerr-disabled状態にシャットダウンします。不正なスイッチの接続によるSTPトポロジの改ざんを防ぎます。

NW試験でのチェックポイント

本記事の内容を試験本番で確実に活かすために、以下の項目を最終確認してください。

ルートブリッジ選定の比較順序(これだけは絶対に暗記)

  1. ブリッジプライオリティ(小さい方が優先)を最初に比較する
  2. プライオリティが同じ場合のみ、MACアドレス(小さい方が優先)を比較する
  3. プライオリティを管理者が明示的に変更することで、任意のスイッチをルートブリッジにできる

ルートポート選定の比較順序(3段階を順番通りに)

  1. ルートパスコスト(小さい方が優先)
  2. 対向スイッチのブリッジID(小さい方が優先)
  3. 対向スイッチのポートID(小さい方が優先)→ スイッチ間冗長接続時の最終決着

パスコストに関する注意点

  • コストはルートブリッジ「から」ではなく、ルートブリッジ「に向かう」リンクで加算する方向に注意する
  • 問題文に規格の明示がない場合は旧規格(100/19/4/2)を使うケースが多いが、必ず問題文のコスト設定を確認すること
  • 旧規格と新規格の混在は誤動作の原因。実機確認コマンドで統一を徹底すること

STPタイマーの数値(穴埋め問題対策)

  • Hello Time(BPDU送出間隔):2秒
  • Max Age(ブロッキング待機):20秒
  • Forward Delay(リスニング/ラーニング各):15秒
  • 収束時間の最大値:約50秒(= 20 + 15 + 15)

実機確認コマンド(実地感覚を養う)

# STPの状態を確認する基本コマンド 
show spanning-tree 
 → Root ID / Bridge ID・Hello/Max/FwdDelay・各ポートのRole(Root/Desg/Altn)とSts(FWD/BLK)を一覧表示 
# 特定VLANのSTP情報を確認する 
show spanning-tree vlan <vlan-id> 
 → VLANごとのルートブリッジID・ローカルブリッジID・パスコストを確認 

# ルートブリッジ情報とポートロールを詳細表示 
show spanning-tree detail 
 → 各ポートのコスト・ポートID・タイマー値・BPDU送受信カウンタを詳細確認 

# ポートのSTP状態を個別確認 
show spanning-tree interface <interface-id> 
 → 対象ポートのRole / State / Cost / Port ID を単体確認 

試験の午後問題では「このポートの状態を答えよ」という設問が頻出です。上記コマンドの出力フォーマット(Root Port / Designated Port / Blocking の表示)に慣れておくと、問題文の読解速度が上がります。

試験頻出ワード

  • ブリッジID = ブリッジプライオリティ(上位4ビット+拡張システムID下位12ビット)+ MACアドレス
  • BPDU = STP制御パケット(Configuration BPDU / TCN BPDU)
  • RSTP(802.1w)= STP(802.1D)の高速版。ポート状態がDiscarding / Learning / Forwardingの3つに統合される
  • PortFast + BPDUGuardはセットで問われることが多い

次回はRSTPの仕組みと、ループ構成のネットワーク図を用いた具体的なポート切り替わりを深掘りします。

コメントを残す

Smart Logic Tech Blogをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む