Virtual Local Area Network

**Virtual Local Area Network** (バーチャル・ローカル・エリア・ネットワーク、仮想LAN、バーチャルLAN)・**VLAN** (ブイラン)は、物理的な接続形態とは別に、仮想的に分割されたLAN接続のこと。レイヤ2スイッチの機能の1つで、通信帯域の有効利用や情報セキュリティの向上などを目的とする。

様々な方式があるが、IEEE 802.1Qで標準化されたタグVLANが広く使われている。

## 概要
LANでは一般に、ケーブルまたは無線電波などでスイッチに接続されている範囲内は、すべてレイヤ2レベル(データリンク層)での通信が可能である。これを「ブロードキャストドメイン」と呼ぶ。

VLANでは、このような物理的な接続を切り離さなくても、スイッチ内部の処理によってトラフィックを分割することができる。これによりブロードキャストドメインを制限することができ、相互に通信できる端末を小さい範囲内にサブグループ化できる。

VLANを構成する目的は主に以下のものがある。

* ネットワークの大規模化に対してブロードキャストドメインを分割することで通信帯域を確保する
* VLAN間のアクセスを制限することでネットワークセキュリティを確保する
* LAN構成に必要なネットワーク機器の台数を減らす

通常のLAN同様、VLAN間はレイヤ3スイッチなどを用いてルーティングすることでトラフィックを疎通させることができる。

## VLANの方式
VLAN機能を持つスイッチでは様々な設定方法でLANセグメントの分離が実現された。方法は大きく分けて2つあり、接続ポートによるものと受信データによるものとがある。

### 接続ポートによるLAN分離

; ポートベースVLAN
: 接続ポートによりLANセグメントを分離する方式。ポート1・2間とポート3・4間は相互通信できるが、それぞれの組以外のポートとは切り離されている、などの構成が可能となる。
:
; マルチプルVLAN
: ポートベースVLANの機能の1つで、「マルチプルポート」と呼ばれるポートを設定できるもの。マルチプルポートではポートベースVLANで設定した全てのVLANグループと通信可能である。ポート1-4は相互通信できないが、マルチプルポートにあたるポート5とだけはそれぞれ通信できるなどの構成が可能となり、アップリンクとの接続に使われる。タグVLANに似ているが、アップリンクの接続先がVLAN非対応の端末でも使用できる。
:
; プライベートVLAN
: ポートベースVLANの機能の1つで、VLAN内の通信をさらに細分化するもの。ポート1を単独ポート、ポート2-4を相互通信可能なポートとしてグループ分けし、ポート1もポート2-4もグループ外とは通信できないがアップリンクに相当するポート5とは通信できる、などの構成が可能となる。この例では、ポート1-5をプライマリVLAN、このグループ分けをセカンダリVLANと呼び、ポート1はIポート(isolated)、ポート2-4はCポート(community)、ポート5はPポート(promiscuous)と呼ぶ。

なお、これらの方式はタグVLANの一部として実装されることがあり、同じ名称で製品やメーカによって異なる機能を指す場合がある。

### 受信データによるLAN分離
; タグVLAN
: イーサネットフレームに挿入される識別用のタグ(VLANタグ)によりLANを分離する方式。詳細は#タグVLANの節を参照。
:
; MACベースVLAN
: 接続される機器のMACアドレスにより所属するLANセグメントを分離する方式。受信フレームの送信元MACアドレスを見て転送先ポートを決定する。
:
; サブネットベースVLAN
: 接続される機器のIPアドレスのサブネットによりLANセグメントを分離する方式。受信パケットのIPアドレスおよびサブネットマスクを見て転送先ポートを決定する。
:
; プロトコルベースVLAN
: ネットワークプロトコルによりLANセグメントを分離する方式。受信フレームのEtherTypeを見てIP、IPX、AppleTalkなどを判別し、転送先ポートを決定する。
:
; 認証VLAN（ユーザベースVLAN）
: 端末のログイン情報を取得してLANセグメントを分離する方式。登録されたユーザであることが確認できたときのみアップリンクに転送する、などの構成が可能となる。IEEE 802.1Xで標準化され、EAPやRADIUSサーバと組み合せて使われる。

## タグVLAN
**タグVLAN**は、VLANの代表的な実装の1つで、主にイーサネットフレーム内にどのLANに所属する通信かを表すタグを付加して、LAN間の通信を混在・識別させる方式。1998年にIEEE 802.1Qで規定されており、その実装方式を明示するためにしばしば「Dot-1Q VLAN」と呼ばれる。

タグVLANでは一般に、複数のスイッチにわたってVLANを構成しており、送信する側がフレーム内にタグを挿入し、受信する側がそのタグを見て所属するLANを識別する。これにより、一つの通信ポートで複数の異なるVLANを混在させて通信することができる。タグVLAN対応のスイッチでは、VLANの混在の有無で以下のように接続ポートを呼び分ける。

* **アクセスポート** : 1つのLANに属するポート。端末などを接続する。
* **トランクポート** : 複数のLANを混在させるポート。タグを処理できるスイッチ・ルータ・サーバなどを接続する。

### 運用例
下図のように、社内ネットワークが階をまたいでおり、両方の階に開発部署・企画部署の作業部屋がそれぞれあるような場合を考える。上下階をつなぐ物理接続が単一であっても、部署ごとの論理ネットワークに分離し、一方の部署のトラフィックがもう一方の部署からは観測できないようにすることができる。

この例では、各階のエッジスイッチにVLAN設定を入れ、スイッチ間の接続ポートを「トランクポート」、各部署内の接続ポートを「アクセスポート」として扱う。部署ごとに一意のVLAN番号(VLAN IDまたはVID)を割り当て、トランクポートには各部署からの全フレームに適切なVLANタグを挿入するよう設定する。タグつきのフレームがトランクポートから送信されると、受信した宛先階のエッジスイッチはそのタグを見て転送先を決め、部署内に転送する際にVLANタグを除去する。このような方法で、いずれの部署も上下階の自分の部署のみを同じLANとして扱うことができる。

### フレーム書式
VLANタグは、送信元MACアドレスとイーサタイプのフィールドの間に、以下のような書式の4バイト(32ビット)を挿入する。

; TPID (Tag Protocol Identifier)
: 16ビット値`0x8100`で、VLANタグ付きフレームであることを示す。フレーム全体がタグによりカプセル化され、形式上はこの値がEtherType、以降のデータがペイロードとなる。
; PCP (Priority Code Point)
: 優先度(CoS; Class of Service)を指定する。3ビット値で`0`～`7`のいずれかを示し、`7`が最優先となる。各種トラフィック（音声・動画・データなど）の優先順位付けに使う。
; DEI (Drop Eligible Indicator)
: `0`か`1`を指定し、輻輳発生時に破棄してもよい場合に`1`を示す。PCPと組み合わせて判定に使うこともできる。
; VID (VLAN Identifier)
: 12ビット値で、そのフレームが属するVLANを指定する。
: `1～4094 (0x001～0xFFE)`の値はVLANの識別子として使うことができ、最大4094個のVLANを扱える。
: VID=`0`は、どのVLANにも属していないことを意味し、PCP・DEIを通知するための優先度タグとして使われる。
: VID=`1` は、無タグフレーム受信時にスイッチ内部で処理されるVIDであり、これをPVID (ポートVLAN ID)と呼ぶ。PVIDのデフォルト設定値として`1`が規定されているが、変更も可能。
: VID=`2` は、SRP (Stream Reservation Protocol)用途のPVIDで、こちらもデフォルト値であり変更可能。
: VID=`4095 (0xFFF)`はシステム内部のエントリ検索などに用いる予約値で、フレーム送信に使うことはできない。

VLANタグ挿入により最大フレームサイズが4バイト増加するため、トランクポートから発行する際はフレーム全体のFCSを再計算する必要がある。
また、1998年のIEEE 802.3acではフレーム長の最大値が従来の1518バイトからタグの分を増加した1522バイトに変更されており、タグ付きフレームを中継するだけの機器でもこのフレーム長に対応していなければならない。
 
### 古い実装
DEIの領域は、初期にはCFI (Canonical Format Indicator)の名称で規定され、トークンリングなどイーサネットのフレーム書式ではないことを示すものだった。イーサネットポートでCFIを受信した場合、そのフレームは無タグのポートへは転送されない。後の改版でイーサネットでの動作が前提となったためDEIに変更された。

IEEE 802.2のSNAPフレームによるカプセル化にも対応していた。このフレームでSNAPヘッダはOUIとプロトコルIDの値から成る。OUI=`00-00-00`の場合はイーサネットでないフレームであり、このときプロトコルIDの値は`0x8100`と設定され、SNAPヘッダの後ろにVLANタグの4バイトが配置された。

### 二重タグ
**二重タグ**は、イーサネットフレーム内に2つのタグを挿入したもの。2つのタグをそれぞれサービスタグ「S-TAG」とカスタマータグ「C-TAG」と呼ぶ。2005年にIEEE 802.1adで規定され、2011年にIEEE 802.1Qに取り込まれた。「Q-in-Q VLAN」「VLANトンネリング」とも呼ぶ。

インターネットサービスプロバイダでの用途を意図したもので、既にVLANタグの付いた加入者のトラフィックを混合させつつ、プロバイダが内部で独自にVLANタグを使用することができる。S-TAG（プロバイダのVLANタグ）を外側にあたる先に置き、C-TAG（加入者のVLANタグ）を内側にあたる後に置く。このときS-TAGのTPIDは`0x88a8`, `0x88a7`が規定されているが、`0x9100, 0x9200, 0x9300`などの値を使うこともある。

## 出典



## 参考文献
* 
* 
* ISL & 802.1q Frame Formats

## 関連項目
* レイヤ2スイッチ
* レイヤ3スイッチ
* 仮想ネットワーク
* アクセス制御リスト (ACL)
* VLANホッピング
* Shortest Path Bridging (IEEE 802.1aq) - タグVLANを拡張したもので、4096^2個のVLANを扱える
* SDN
* Virtual Extensible LAN (VXLAN)
* Virtual private network (VPN)
* VLAN Trunking Protocol (VTP) - シスコシステムズ独自のVLAN管理プロトコル