こんにちは!ネットワークトラブル調査歴・ユーザサポート窓口バックサポート歴20年のHyde Niwaです。
「VLAN」について、次のような状態でつまづいていらっしゃる方、いらっしゃるんじゃないでしょうか?
- 概念はわかっていても、いざ実際に自分で設定してみようとしても、どう考えたらいいのかよくわからない
- スイッチ製品を実際の環境に合わせて設定してみると、意図した動作にならない。
製品に添付の「設定事例集」の通りならその通りに動作するんだけどな。。。 - 設定の問題点を探そうにも、勘所がわからない
- ネットで検索しても、高価な大手スイッチメーカ製品が前提になっていてピンとこない
- 「ポートベースVLAN」はまだわかるけど、実際の現場で使いたいものじゃない。「マルチプルVLAN」「タグVLAN」は、なんだか複雑でよくわからない
この記事では、「VLANの掟!」と私が命名した「VLANの動作を理解し、各自の設定・設計を検証するのにも使える基本ルール」を解説します。
「VLANの掟!」を使えば、どんなに大きなネットワークのVLANでも確実に設定でき、確実に検証ができます。
なんだか敬遠したくなる「タグVLAN」も怖くありません。
私は、実際に、次のような場面で「VLANの掟!」をお渡しして、VLANへの理解を深めていただいてきました。
- スイッチ製品ユーザ様からのお問い合わせへの回答
- お問い合わせに対応するサポート窓口の担当者様への教育
- 新たに配属されたトラブル調査員への教育
「VLAN」は難しい?!
機器のメーカによって仕様・動作・用語がまちまちであるためか、「VLANは難しい」と思われている方が多いですね。
また、CISCO社仕様とCISCO社用語が、中途半端な理解のままデファクトスタンダードとして流通していることで、さらに混乱が生じている印象があります。CISCO社一辺倒の情報があふれているのは、これまでの歴史的背景とCCNA/CCNPなどの資格制度も相まってのことでしょうが。
VLANの用語といえば次のようなものです。
•ポートベースVLAN(ポートVLAN)
•tag VLAN(タグVLAN)
•マルチプルVLAN
•アクセスポート、トランクポート
•Native VLAN
など。。。
さらには、Layer3でのネットワーク分割も、その設定方法区分などが同じ機能の延長線上にあって「VLAN」と呼ばれているため、混乱に拍車がかかっています。
そこで、「難しい」と言われている「VLAN」の理解を進められるように、この記事を作成しました。
この記事では、まず、「VLANとはLayer2(L2)でネットワークを分割するしくみである」と定義して進めます。Layer3でのネットワーク分割は、別項「ルータの掟」で見ていくことにしましょう。
VLANには統一規格がある!IEEE802.1Q
L2でネットワークを分割するしくみの規格には、「IEEE802.1Q」というものがあります。
「IEEE802.1Q」はL2フレーム内に設けることができる「VLANのID」と「通信の優先度」を付与する「タグ」フィールドについて規定した規格です。
・「IEEE802.1Q」に規定する「タグ」を利用してネットワークを分割するしくみ
・一般的なスイッチの動作
を組み合わせ、「IEEE802.1Q-VLAN」として理解すると、広く応用できる知識となりえるのです。
「IEEE802.1Q」では何を規定しているか?
それでは、まず「タグ」フィールドとはどういうものか、見ていきましょう。
EthernetⅡとして規定されるDIX規格イーサネットのL2(MAC層)フレームは「図1」のような構造をしています。
・いきなり出てきた「フレーム」って何?
・「パケット」とどう違うの?
という方もいらっしゃるかもしれませんね。
大きな意味で言えば、
データをある一定以内の大きさの塊に分割して送りあう通信方式
を「パケット通信」と呼びますので、その意味では「パケット」とほぼ同義です。
ただ、通信の世界では、
・L2での分割単位を「フレーム」と呼び
・「フレーム」でカプセル化して運ばれるL3以上のペイロード部分を「パケット」と呼ぶ
ことが一般的であり、このサイトでも極力こちらの意味で使っています。
L2(MAC層)フレームには、図2のように「タグ」フィールドをオプションとして追加することができます。
「タグ」フィールドの長さは32ビット(4バイト)で、追加できる位置は、送信元MACアドレスのフィールドとType/Sizeのフィールドの間です。
図1の構造のフレームは、PCなどが直接扱えるフレームの形で、これを「untagフレーム」と呼びます。これに対して図2のように「タグ」フィールドを追加した形のフレームを「taggedフレーム」と呼びます。
「タグ」フィールドのうち、初めの16ビットは「TPID (Tag Protocol Identifier)」、次の16ビットは「TCI (Tag Control Information)」と呼ばれます。
TPID (Tag Protocol Identifier)
「TPID」は、IEEE 802.1Q による「タグ」付きフレームであることを示すため、0x8100 という値を置く16ビットのフィールドです。
EthernetⅡ機器は、到来する信号を概念的には到来順に1ビットずつ受け取っていきます。
そしてType/Sizeフィールドをペイロードの内容・プロトコルを示すEtherTypeとして使います。したがって、「タグ」フィールドの「TPID」は「Type」フィールドとして受信・解釈されることになります。
「Type」フィールドが0x8100であるものがtaggedフレーム、それ以外がuntagでそれぞれ「Type」値が示すプロトコルのフレームという見方もできます。
TCIはさらに以下の部分で構成されます。
PCP (Priority Code Point)
IEEE 802.1p で定義された優先度を指定する3ビットのフィールドです。
フレームの優先度を0(最低)から7(最高)で示し、各種トラフィック(音声、動画、データなど)の優先順位づけに利用されます。
CFI (Canonical Format Indicator)
CFIフィールドは、イーサネットとトークンリングの相互接続時に使われるフィールドで、通常のイーサネットだけで構成したネットワークでは気にする必要のないフィールドです。
1ビットのフィールドで、イーサネットの場合はつねに0です。
イーサネットポートでCFIが1のフレームを受信した場合、そのフレームはタグ付けされていないポートへはブリッジされません(1は、「MACアドレスが正規フォーマットではない」ことを示しています)。
VID (VLAN Identifier)★
12ビットのフィールドで、当該フレームを転送するべきVLANを指定するために使われます。
VID=0の「タグ」は単なる「優先度タグ (priority tag) 」として使われていることを表します。
VID=0xFFFは(実装で使用するために)予約されています。
「0」「0xFFF」以外の全ての値が、VLANの識別子として使われることになり、「0x001」から「0xFFE」の最大4094個のVLANを扱うことができるわけです。
IEEE802.1Qに対応しているスイッチングHUBなどのブリッジ機器の多くが、VIDのうち1番 (0x001) を管理(いわゆる「管理VLAN」)用に予約しているか、初期値として使用しています。
IEEE802.1Q対応スイッチの概念的構造、基本要素と動作
IEEE802.1Q対応スイッチングHUB(スイッチ)の概念的構造、基本要素と動作は、メーカによっても大きな違いはありません。図3のような構造概念で表すことができます。
※なお、これはあくまで動作を理解するための「概念的構造、基本要素と動作」です。実際のハードウェア構造とは異なる可能性があります。
IEEE802.1Q対応スイッチの内部には、
「ポート」
「スイッチエンジン」
「MACアドレス学習機能」
の3つの構成要素があります。
•「ポート」
・スイッチの外の機器と接続されていて外から到来するフレームを受信し「スイッチエンジン」に渡す
・untagフレームを受信した際には「PrimaryVID=PVID」をVIDに持つ「タグ」を追加する
・「スイッチエンジン」から渡されたフレームを接続されている機器に送信する
という機能を果たす部位を指します。
理想的なIEEE802.1Q対応スイッチの各ポートは、スイッチに設定された複数のVLANに所属させることが可能であるべきです。
「ポート」をVLANに所属させることを、当該VLANの「メンバにする」と表現します。
「VLANのメンバ」には「taggedメンバ」と「untagメンバ」の2種類があります。
•「スイッチエンジン」
「ポート」から渡されたフレームを、送信出力する「ポート」へ渡す働きをする部位を指します。
※なお、このサイトではスイッチエンジン内で「VLANn」は「VID=nであるVLAN」を意味するものとして使います。
•「MACアドレス学習機能」
スイッチを含むほとんどのブリッジ機器では、「ポート」に受信したフレームの送信元MACアドレスを受信したポートに紐づけて記憶(学習)する機能を持ちます。この機能を「MACアドレス学習」と呼んでいます。
入力されたフレームの宛先MACアドレスが
- 学習されているポートだけがそのフレームを送信できる
- いずれのポートにも学習されていなければ、当該フレームが転送されるVLANのメンバポートすべてが当該フレームを送信できる(Flooding, フラッディング)
なお、IEEE802.1Q-VLAN対応スイッチングHUBの「MACアドレス学習機能」には2種類の方式があり、
- MACアドレス毎にスイッチ全体で一つのポートにだけ記憶するものを「SVL」
- MACアドレス毎・VLAN毎に記憶するものを「IVL」
と呼びます。「MACアドレス学習機能」の種類ごとの動作概念については、別項で詳細に解説します。
★IEEE802.1Q VLANの掟!★
IEEE802.1Q-VLAN対応のスイッチングHUBの概念的動作は、次の3か条の「掟」ですべてを説明できます。私は、この3か条の「掟」を「VLANの掟!」と呼んでいます。
- 各ポートは、受信したフレームに次の処理をして、スイッチエンジンに渡す
・Taggedフレームはそのまま
・Untagフレームは当該ポートのPVIDの値を「VIDフィールド」に持つ「タグ」フィールドを追加(FCSも計算しなおしたうえで)
ポートに受信したフレーム | untagフレーム | taggedフレーム |
スイッチエンジンに渡すフレームの「VIDフィールド」値 | 受信したポートのPVID値 | 受信したフレームの「タグ」そのまま |
- スイッチエンジンは、渡されたフレーム内「VIDフィールド」値をVIDにもつVLANに属するメンバポートに当該フレームを渡す
- 渡された各ポートは、渡されたフレーム内の「タグ」に次の処理をする。
・自身が当該のVLANにおいてtaggedメンバに設定されている場合は、そのまま「タグ」フィールド付で
・自身が当該のVLANにおいてuntagメンバに設定されている場合は、「タグ」フィールドを削除して(当然FCSも計算しなおし)
スイッチエンジンに渡すフレームのVID値VLANメンバ種別 | untagメンバ | taggedメンバ |
送信フレーム | 「タグ」を取り去ったuntagフレーム | 「タグ」そのままtaggedフレーム |
なお、3項で当該ポートから実際に送信するかどうかは、フレームの宛先MACアドレスの学習状況によって決まります。
宛先MACアドレス学習状態 | どのポートにも学習されていない | 当該ポートに学習済 | 他のポートに学習済 |
送信可否 | 送信可 | 送信可 | 送信不可 |
多くの場合、「tagVLAN(タグVLAN)」は、VLANの中でもさらに特殊な難しいものと捉えられています。しかしながら、実は、この「タグ」を利用してネットワークを分割しているのが「VLAN(IEEE802.1Q VLAN)」である、という考え方をすることで、VLANのすべてが体系的に説明できます。体系化した基本ルールが「VLANの掟!」で、設計・設定の検証ツールとしても使えるのです。
tagVLANもマルチプルVLANもポートVLANもすべて同じ一連のルール「VLANの掟」で理解できる
「VLANの掟!」にしたがえば、「マルチプルVLAN」も「tagVLAN」も「ポートVLAN」もすべて同じ一連のルール(掟)で理解できます。言い方を変えると、VLANを含むネットワーク分割を構築した結果として出来上がったものに、それぞれ別の名前を付けているに過ぎないとも言えるでしょう。
それでは、「マルチプルVLAN」の動作、「tagVLAN」の動作、「ポートVLAN」の動作が「VLANの掟!」でどう説明できるか、それぞれ別項で検証してみましょう。
マルチプルVLAN
L2での「マルチプルVLAN」の構成では、「タグ」を直接扱えない安価なルータやサーバ、NASを、相互に通信させたくない分離したネットワークから共用するネットワークが、一つのIPセグメントで構成できます。
次の記事では「マルチプルVLAN」の動作について「VLANの掟!」で検証をしています。
ルータやサーバなど、分離した各VLANから共有する機器からのフレームを転送させるための「お帰りVLAN」を設定することが重要ポイントです。
そして、実際の「やってみたがうまくいかない」お問い合わせでも、多くがこの点でつまづいておられました。
tagVLAN(タグVLAN)
二つ以上のスイッチを使って、同じ概念で設定したVLANを機能させることができるのが、「tagVLAN」です。
次の記事では「tagVLAN」の動作について「VLANの掟!」で検証をしています。
「VLANの掟!」では、スイッチ内部でタグを使ってVLANの分離を実現していると理解します(掟第2条)。
入り口ポートで受信したフレームがuntagフレームならPVIDの値をVIDに持つ「タグ」の挿入を行います(掟第1条)。
出口ポートではVLANへのメンバ設定にしたがってtagを取り去るか(untagメンバ)、tagを付けたまま送信するか(taggedメンバ)している(掟第3条)
のです。
スイッチ間を接続するポートを、必要なVLANについてtaggedメンバに指定することで、スイッチ間を行きかうフレームにtaggedフレームを使うことができる
taggedフレームを受信した送り先のスイッチでも、「タグ」内のVIDフィールドに指定したVLANのメンバポートにフレームを届けられる
これが「tagVLAN」なのです。
ポートVLAN(ポートベースVLAN)
現実のネットワーク構築において、設置現場のコンセントの数が限られ、複数台のスイッチを設置できないなどの制約がある場合には、「ポートVLAN」を使うことも大変有用です。
次の記事では「ポートVLAN」の動作について「VLANの掟!」で検証をしています。
「ポートVLAN」とは、「構成する一つ一つの物理ポートを、それぞれ一つのVLANにだけ所属させる」ように設定した状態のことです。
一つのスイッチ内で「マルチプルVLAN」を構成する部分、「ポートVLAN」を構成する部分などの混在状態にすることも可能です。
「VLANの掟!」で捉えなおしたCISCO社用語の例
CISCO社用語の「アクセスポート」「トランクポート」を「VLANの掟!」で捉えなおしてみましょう。
CISCO社用語でいう「アクセスポート」は、すべての所属VLANにおいてuntagメンバとなっている状態のポートであると理解できます。
そしてCISCO社製品の事例においては、アクセスポートは所属VLANが通常一つと説明されている事例が多いですね。
CISCO社用語でいう「トランクポート」は、CISCO社デフォルトの設定では
当該スイッチに流入している全VLANのフレームがフラッディングされ、
taggedフレームとして送信されていく
状態のポートです。
ただし、
「Native VLAN」についてだけはuntagメンバになっていて、
「Native VLAN」に指定されたVIDのタグが付与されたフレームだけはタグが除去され、untagフレームとして送信されます。
「Native VLAN」とは、そのポートのPVIDに設定したVIDを持つVLANのことです。
おっと。「Native VLAN」なんで用語も出てきてしまいましたね。「Native VLAN」も含め、CISCO社用語の捉え方については、別項でもあらためて解説しています。
まとめ
以上、VLANの動作を理解し、各自の設定・設計を検証するのにも使える基本ルールを「VLANの掟!」として解説しました。
★IEEE802.1Q VLANの掟!★
IEEE802.1Q-VLAN対応のスイッチングHUBの概念的動作は、次の3か条の「掟」ですべてを説明できます。私は、この3か条の「掟」を「VLANの掟!」と呼んでいます。
- 各ポートは、受信したフレームに次の処理をして、スイッチエンジンに渡す
・Taggedフレームはそのまま
・Untagフレームは当該ポートのPVIDの値を「VIDフィールド」に持つ「タグ」フィールドを追加(FCSも計算しなおしたうえで) - スイッチエンジンは、渡されたフレーム内「VIDフィールド」値をVIDにもつVLANに属するメンバポートに当該フレームを渡す
- 渡された各ポートは、渡されたフレーム内の「タグ」に次の処理をし、宛先MACアドレスの学習状況にしたがって送信可能な場合外へ送信する
・自身が当該のVLANにおいてtaggedメンバに設定されている場合は、そのまま「タグ」フィールド付で
・自身が当該のVLANにおいてuntagメンバに設定されている場合は、「タグ」フィールドを削除して(当然FCSも計算しなおし)
「VLANの掟!」を使って、VLANを理解し、VLAN設定を検証しよう
「VLANの掟!」を使えば、どんなに大きなネットワークのVLANでも確実に設定できます。また、「VLANの掟!」を使って、フレームの流れをStep by Stepで検証することができます。
「難しい」と敬遠されがちな「タグ」こそが、VLANの基本です。
「タグ」を使った動作を理解してしまえば、すべてのVLANの動作が「VLANの掟!」で説明できます。
VLANの構成がどんなに複雑であっても、この「VLANの掟!」で、転送されていくフレームの動きを地道に追うことができますよ。
コメント