Skip to content
Published on

[コンピュータネットワーク] 16. イーサネット、スイッチ、VLAN

Authors

イーサネット、スイッチ、VLAN

イーサネット(Ethernet)は有線LANの事実上の標準で、世界中のLANトラフィックの大部分を処理しています。1973年にBob Metcalfeが発明して以来、10Mbpsから現在の400Gbpsまで発展しました。

この記事では、MACアドレスとARPプロトコル、イーサネットフレーム構造、リンク層スイッチの動作、VLAN、そしてデータセンターネットワークを見ていきます。


1. MACアドレスとARP

1.1 MACアドレス

MAC(Media Access Control)アドレスは、ネットワークインタフェースに割り当てられた48ビット(6バイト)の物理アドレスです。

MACアドレスの構造
==================

1A:2B:3C:4D:5E:6F(16進数表記)

- 48ビット = 6バイト
- 先頭24ビット:OUI(製造者識別子)
  例:00:1A:2B = Ayecom Technology
- 後半24ビット:製造者が割り当てる固有番号
- ブロードキャストアドレス:FF:FF:FF:FF:FF:FF

IPアドレス vs MACアドレス:
  IPアドレス:ネットワーク層、論理的、場所によって変更
  MACアドレス:リンク層、物理的、固定(NICに内蔵)

1.2 ARP(Address Resolution Protocol)

ARPはIPアドレスをMACアドレスに変換するプロトコルです。同じサブネット内で動作します。

ARPの動作過程
===============

ホストA(192.168.1.10)がホストB(192.168.1.20)にデータ送信

1. AのARPテーブルにBのMACアドレスがない

2. AがARP要求をブロードキャスト:
   「192.168.1.20のMACアドレスは?」
   宛先MAC:FF:FF:FF:FF:FF:FF(ブロードキャスト)
   送信元MAC:AのMACアドレス

3. サブネットのすべてのノードがARP要求を受信
   Bだけが応答:「私のMACアドレスはBB:BB:BB:BB:BB:BBです」
   宛先MAC:AのMACアドレス(ユニキャスト)

4. AがARPテーブルにBのマッピングを保存(TTL:通常20分)

ARPテーブルの例:
  IPアドレス      | MACアドレス          | TTL
  ----------------+---------------------+------
  192.168.1.20    | BB:BB:BB:BB:BB:BB   | 13分
  192.168.1.1     | AA:AA:AA:AA:AA:AA   | 8分

1.3 異なるサブネット間の通信

異なるサブネットのホストと通信する場合は、ゲートウェイルータのMACアドレスを使用します。

サブネット間通信
==================

ホストA(10.0.0.2)--> ホストB(20.0.0.2)

サブネット1              ルータ                サブネット2
[A: 10.0.0.2]  ----  [10.0.0.1 | 20.0.0.1]  ----  [B: 20.0.0.2]
 MAC: AA              MAC: R1L  | MAC: R1R           MAC: BB

ステップ1:AがルータにN送信
  送信元MAC:AA、宛先MAC:R1L
  送信元IP:10.0.0.2、宛先IP:20.0.0.2

ステップ2:ルータがBに送信
  送信元MAC:R1R、宛先MAC:BB
  送信元IP:10.0.0.2、宛先IP:20.0.0.2

  --> MACアドレスはホップごとに変更、IPアドレスはエンドツーエンドで維持

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

イーサネットフレーム形式
==========================

+----------+----------+----------+------+----------+-----+
| Preamble | Dest MAC | Src MAC  | Type |   Data   | CRC |
| 8 bytes  | 6 bytes  | 6 bytes  | 2 B  | 46~1500  | 4 B |
+----------+----------+----------+------+----------+-----+

フィールド説明:
  Preamble(8バイト):
    - 7バイト:10101010パターン(クロック同期)
    - 1バイト:10101011(SFD、フレーム開始表示)

  Dest MAC(6バイト):宛先MACアドレス
  Src MAC(6バイト): 送信元MACアドレス

  Type(2バイト):上位層プロトコル識別
    - 0x0800:IPv4
    - 0x0806:ARP
    - 0x86DD:IPv6

  Data(46~1500バイト):ペイロード
    - 最小46バイト(未満ならパディング追加)
    - 最大1500バイト(MTU)

  CRC(4バイト):エラー検出(CRC-32)

2.1 イーサネットの特性

イーサネットの特性
====================

- コネクションレス:ハンドシェイクなし
- 非信頼的:ACK/NAKなし、エラーフレームは単純に破棄
  (上位層のTCPが再送を担当)
- CSMA/CD使用(半二重モード)
  (全二重モードではCSMA/CD不要)

イーサネット速度の発展:
  10 Mbps    (10BASE-T)      1990年代
  100 Mbps   (Fast Ethernet)  1995年
  1 Gbps     (Gigabit)        1999年
  10 Gbps    (10GbE)          2002年
  40/100 Gbps                 2010年
  400 Gbps                    2017年

3. リンク層スイッチ

3.1 スイッチの役割

リンク層スイッチは、入ってくるフレームのMACアドレスを検査して適切なポートに転送します。ホストやルータに対して自身の存在が透過的(transparent)です。

スイッチ動作の概要
====================

     ポート1   ポート2   ポート3   ポート4
      |        |        |        |
   +--+--------+--------+--------+--+
   |         リンク層スイッチ          |
   +--+--------+--------+--------+--+
      |        |        |        |
    [A]      [B]      [C]      [D]

AがCにフレーム送信:
  1. スイッチがポート1でフレーム受信
  2. 宛先MAC = CのMAC
  3. スイッチテーブル検索:Cはポート3に接続
  4. フレームをポート3にのみ転送
  --> BとDはこのフレームを受信しない

3.2 自己学習(Self-Learning)

スイッチは別途の設定なしに自動的にスイッチテーブルを構成します。

自己学習アルゴリズム
=====================

フレームがポートxから送信元MAC = AAで到着すると:
  --> スイッチテーブルに記録:MAC AAはポートxに接続(TTL設定)

スイッチテーブル構成過程:
  時点0:テーブルは空

  時点1:A(ポート1)がCにフレーム送信
    テーブル:A -> ポート1
    Cの位置不明 --> フラッディング(ポート1以外のすべてのポートに送信)

  時点2:C(ポート3)がAに応答
    テーブル:A -> ポート1、C -> ポート3
    Aの位置は既知 --> ポート1にのみ転送

  時点3:B(ポート2)がAに送信
    テーブル:A -> ポート1、C -> ポート3、B -> ポート2
    Aの位置は既知 --> ポート1にのみ転送

3.3 スパニングツリープロトコル(STP)

ネットワークにループがあるとフレームが無限に循環します。STPはループを防止するために一部のポートを無効化してツリー構造を作ります。

スパニングツリーの例
=====================

ループのあるトポロジ:

  [SW1] ---- [SW2]
    |    \    / |
    |     \ /   |
    |      X    |
    |     / \   |
    |    /    \ |
  [SW3] ---- [SW4]

STP適用後(一部リンク無効化):

  [SW1] ---- [SW2]
    |              |
    |              |
  [SW3]       [SW4]

  無効化されたリンク:SW1-SW4、SW2-SW3、SW3-SW4
  --> ループのないツリー構造形成

STPの動作過程:

  1. ルートブリッジ選出:最小のブリッジIDを持つスイッチがルート
  2. ルートポート決定:各非ルートスイッチでルートまでの最小コスト経路のポート
  3. 指定ポート決定:各セグメントでルートまでのコストが最小のポート
  4. 残りのポートをブロック:ルートポートでも指定ポートでもないポートをブロッキング

4. スイッチ vs ルータ

スイッチ vs ルータ比較
========================

項目              | スイッチ(L2)       | ルータ(L3)
------------------+---------------------+--------------------
動作層            | リンク層(L2)       | ネットワーク層(L3)
使用アドレス      | MACアドレス          | IPアドレス
テーブル          | スイッチテーブル     | フォワーディングテーブル
プラグアンドプレイ | 自己学習(対応)     | 設定必要(部分的)
ループ処理        | STP必要              | TTLで自然に除去
ブロードキャスト  | 全体に伝播           | ブロック可能
スケーラビリティ  | 大規模で限界         | 階層的な拡張可能

5. VLAN(Virtual Local Area Network)

5.1 VLANの必要性

1つの物理スイッチを複数の論理LANに分離します。

VLANが必要な状況
==================

物理的に1つのスイッチ:
  ポート1-4:マーケティングチーム
  ポート5-8:開発チーム
  ポート9-12:経営陣

VLANなし:すべてのブロードキャストが全ポートに伝播
  --> セキュリティ問題、パフォーマンス低下

VLAN適用:
  VLAN 10(マーケティング):ポート1-4
  VLAN 20(開発):         ポート5-8
  VLAN 30(経営):         ポート9-12

  --> 各VLANは独立したブロードキャストドメイン
  --> VLAN間の通信はルータを通じてのみ可能

5.2 トランクポートと802.1Q

複数のスイッチにまたがるVLANを構成する場合、トランクポートを使用します。

VLANトランキング
==================

[スイッチ1]                        [スイッチ2]
VLAN 10:ポート1,2     トランク     VLAN 10:ポート1,2
VLAN 20:ポート3,4  <=========>    VLAN 20:ポート3,4

トランクポート:複数のVLANのフレームを1つのリンクで転送

802.1Qタグ(4バイト):
+--------+-----+-------+---------+
| TPID   | PRI | CFI   | VLAN ID |
| 0x8100 | 3b  | 1b    | 12ビット |
+--------+-----+-------+---------+

VLAN ID:0~4095(4096個のVLANが可能)

動作:トランクにフレーム送信時に802.1Qタグを追加
      受信側でタグを確認し該当VLANポートに転送

6. MPLS(Multiprotocol Label Switching)

6.1 MPLSの概念

MPLSはIPアドレスの代わりに短いラベルを使用して高速なフォワーディングを実行します。リンク層とネットワーク層の間で動作します。

MPLSの動作
===========

通常のIPルーティング:
  各ルータでIPアドレスに基づいて最長プレフィックスマッチングを実行(遅い)

MPLSルーティング:
  入口ルータでラベルを割り当て --> 中間ルータはラベルのみ参照(速い)

パケット構造:
  [L2ヘッダ][MPLSラベル][IPヘッダ][データ]

MPLSヘッダ(4バイト):
  +-------+-----+---+-----+
  | Label | Exp | S | TTL |
  | 20bit | 3b  | 1b| 8b  |
  +-------+-----+---+-----+

利点:
  - IPルーティングより高速なフォワーディング
  - トラフィックエンジニアリングが可能
  - VPN構成が容易

7. データセンターネットワーク

7.1 データセンターの規模

大規模データセンターは数万~数十万台のサーバを収容し、それらを接続するネットワーク設計が重要です。

データセンターネットワークトポロジ
====================================

従来の階層構造:

          [コアスイッチ]
         /      |      \
    [集約スイッチ] [集約スイッチ] [集約スイッチ]
    /    \     /    \     /    \
 [ToR]  [ToR] [ToR] [ToR] [ToR] [ToR]
  |||    |||   |||   |||   |||   |||
 サーバ  サーバ サーバ サーバ サーバ サーバ

ToR:Top-of-Rackスイッチ(ラック上部に配置)
集約:Aggregationスイッチ
コア:Coreスイッチ

問題点:上位層に行くほど帯域幅のボトルネック

7.2 Fat-Treeトポロジ

Fat-Treeトポロジ
==================

         [コアスイッチ群]
        / | | | | | | | \
   [集約1]   [集約2]   [集約3]   [集約4]
   / | \    / | \    / | \    / | \
 [ToR] [ToR] [ToR] [ToR] [ToR] [ToR]

特徴:
  - すべての層で同一の帯域幅を提供
  - 複数の経路を通じた負荷分散
  - 低コストの汎用スイッチが使用可能
  - サーバ間のバイセクション帯域幅を最大化

7.3 ロードバランシング

データセンターのロードバランシング
====================================

外部リクエスト --> [ロードバランサ] --> サーバ1
                                   --> サーバ2
                                   --> サーバ3
                                   --> サーバ4

ロードバランサの役割:
  - 外部に1つのグローバルIPを公開
  - 着信リクエストを内部サーバに分配
  - サーバ状態のモニタリング(ヘルスチェック)
  - L4(TCPポートベース)またはL7(HTTPベース)の分配

8. まとめ

概念核心内容
MACアドレス48ビットの物理アドレス、NICに固定
ARPIPアドレスをMACアドレスに変換、ブロードキャスト要求
イーサネットフレームPreamble + MAC + Type + Data + CRC
自己学習スイッチが送信元MACを見てテーブルを自動構成
STPループ防止のためのツリー構造維持
VLAN1つのスイッチを複数の論理LANに分離
802.1QVLANタグ(4バイト)をフレームに追加
MPLSラベルベースの高速フォワーディング

次の記事では、無線ネットワークとモバイル通信の特性を見ていきます。


参考資料

  • James F. Kurose, Keith W. Ross, "Computer Networking: A Top-Down Approach", 6th Edition, Chapter 5
  • IEEE 802.3 - Ethernet Standard
  • IEEE 802.1Q - VLAN Tagging
  • RFC 826 - An Ethernet Address Resolution Protocol