サブネット・ブロードキャストドメイン・VLANの本質

腑に落ちなかったこと

ネットワークを学んでいて、ずっと引っかかっていることがあった。

「同じサブネット内のホストは直接通信できる。異なるサブネットへはルータを経由する。」
具体的にどこでこの制約が生まれているのか、なぜサブネットが同じだと直接通信できるのか。

また、VLANを調べると「ネットワークを論理的に分割する技術」と書いてある。だがどうしても腑に落ちない。
VLANが実際にネットワークを分割しているのか?調べてみるとそうではない。ではVLANは実際何を分割しているんだ?

色々と考えて原因がわかった。ネットに上がっている説明や本の説明の多くが、ブロードキャストドメイン(L2)の話とIPアドレス(L3)の話をごっちゃにしているのである。この2つを分けて整理したら、サブネットもVLANもすっきり理解できた。

「直接通信できる」とは?

まずとっかかりとして、「直接通信できる」とは何かを説明する。

直接通信するとは、相手に直接フレームを届けることである。直接フレームを届けるには相手のMACアドレスを知る必要がある。

では相手のMACアドレスをどうやって知るかというと、ARPというプロトコルが用意されている。例えば192.168.1.1のMACアドレスを知りたい場合、ARPは「192.168.1.1のMACアドレスを教えてくれ」というリクエストを、ネットワーク上の全ホストに一斉送信する。この一斉送信をブロードキャストと言い、ブロードキャストが届く範囲がブロードキャストドメインと言う。

このとき、ARPは対象IPアドレスが同じサブネットかどうかの判定などはしないので、サブネットがなんであれブロードキャストで問い合わせることになる。

つまり、直接通信するためには、相手がARPが届く範囲、つまり同じブロードキャストドメインにいさえすればいいのである。

直接通信できる
  = ARPで相手のMACアドレスを得られる
    = ARPブロードキャストが届く
      = 同じブロードキャストドメインにいる

「直接通信できる」と「同じブロードキャストドメインにいる」は同義である。ではブロードキャストドメインは何によって決まるのか。

ブロードキャストドメインとは何か

ブロードキャストドメインとは、ブロードキャストフレームが届く範囲のことである。この範囲を区切っているのがルータである。

スイッチはブロードキャストフレームを受け取ると全ポートに転送する(フラッディング)。一方、ルータはブロードキャストフレームを別のネットワークへ転送しない。ルータの役割はIPパケットの宛先を見て適切なインターフェースに転送することであり、宛先MACがff:ff:ff:ff:ff:ffのフレームをそのまま中継する機能は持たない。

機器ブロードキャストの扱い
スイッチ(L2)全ポートに転送
ルータ(L3)別ネットワークへ転送しない

つまり、ブロードキャストドメインの境界はルータが作る。

ここまでをまとめると、直接通信できる=ARPが届く=同じブロードキャストドメインにいる。そしてブロードキャストドメインの境界はルータが作るのである。

繰り返すが、原理的にはIPのサブネットがなんであれ、同じブロードキャストドメインに属していれば直接通信が可能なのである。

サブネットをブロードキャストドメインに合わせる

さて、ここまでのL2の話とは別に、IPにはIPのルールがある。

IPアドレスにはネットワーク部とホスト部がある。すべてのホストを個別に管理するのではなく、ネットワーク部でグループ化することで、ルータは「ネットワーク部だけ見て転送先を判断する」ことができる。ルーティングを効率化するための階層化である。

郵便に例えると、配達員が全世帯の住所を個別に覚えるのではなく、「東京都千代田区」まで見て配送先の局を決め、局内で番地を見て届ける。ネットワーク部が都道府県・市区町村、ホスト部が番地にあたる。

ネットワーク部が同じホストの集まりがサブネットである。ネットワーク設計では、サブネットをブロードキャストドメインに対応させる。こうすることで、L2で直接通信できる範囲とIPの体系(同じネットワーク=同じグループ)が一致する。

ここで冒頭の話に戻るが、「同じサブネット内のホストは直接通信できる。異なるサブネットへはルータを経由する。」というIPのルールはどのように守られているのか。

実際にIPのルールを守っているのがOSである。OSは通信相手のIPアドレスを見て、「同じサブネットならARPで直接」「別のサブネットならデフォルトゲートウェイへ」と振り分ける。この振り分けを行っているのがOSのルーティングテーブルである。

$ ip route
192.168.1.0/24 dev eth0  proto kernel  scope link    # 同じサブネット → 直接通信
default via 192.168.1.1  dev eth0                     # それ以外 → ゲートウェイ(192.168.1.1)へ
概念決めているもの
ブロードキャストドメインルータの配置
サブネットの振り分けルーティングテーブル

ただし、これはあくまでOSが守っているIPのルールに過ぎない。ルーティングテーブルを書き換えれば、異なるサブネットでも直接通信が可能になる。

# 192.168.1.1 のホストから 192.168.2.0/24 に直接通信する
ip route add 192.168.2.0/24 dev eth0

同じブロードキャストドメインにいるのだからARPは届く。ARPが届けばMACアドレスが分かる。サブネットの境界は、OSが守っている紳士協定なのである。

VLANはブロードキャストドメインをさらに分割する

ルータが作ったブロードキャストドメインの中を、さらに分割したい場合がある。例えば、1台のスイッチに営業部と開発部が繋がっているが、ブロードキャストを互いに届けたくない。しかしスイッチを物理的に分けたくはない。ここで登場するのがVLANである。

VLANは、スイッチ上でポートにタグ(VLAN ID)を割り当て、ブロードキャストドメインを分割する。VLAN 10のポートから送られたブロードキャストは、VLAN 10のポートにしか届かない。これはスイッチが行うL2レベルの制御である。

ここで冒頭の疑問に戻る。VLANがやっているのはブロードキャストドメインの分割だけである。VLANはIPアドレスを知らない。知っているのはポートに付けたタグ番号だけである。

「VLAN 10 = 192.168.10.0/24」にするのは、前章で説明したのと同じ構図で、分割されたブロードキャストドメインにサブネットを合わせる人間の設計である。

教科書の「VLANはネットワークを論理的に分割する」が腑に落ちなかったのは、このL2の話とIPの話が区別されていなかったからだった。

まとめ

正常なネットワーク設計では、1つのブロードキャストドメインに1つのサブネットを対応させる。

理由は単純で、サブネットがブロードキャストドメインからはみ出していたら、同じサブネットなのにARPが届かないホストが発生する。直接通信できるはずなのにできず、設計が破綻する。

だから順序はこうなる。

  1. ルータとVLANでブロードキャストドメインを決める(L2の構成)
  2. 各ブロードキャストドメインにサブネットを割り当てる(OSとIPアドレスの設計)

L2の構成が先にあり、それに合わせてサブネットを設計するのである。

概念何が決めているか役割
ブロードキャストドメインルータ・VLANの配置(L2)直接通信できる範囲を区切る
サブネット人間の設計 + OSのルーティングテーブルブロードキャストドメインにIPアドレス体系を対応させる

この2つを分けて考えれば、サブネットもVLANも腑に落ちる。ごっちゃにしているから分からなかったのである。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする