「VLANの掟!」で理解する「ポートVLAN」

Layer2:MAC層

「ポートVLAN」も「VLANの掟!」で説明できるのですが、よくある「ポートVLAN」の説明では、「タグ」を使った「VLANの掟!」とは全く違った機能のようにも思えます。

この記事で検証してみます。

「ポートVLAN」混乱の元凶?!用語

VLANの掟!」の「IEEE802.1Q対応スイッチングHUB(スイッチ)の概念的構造、基本要素と動作」の項で「ポート」についての説明では、

•「ポート」

・スイッチの外の機器と接続されていて外から到来するフレームを受信し「スイッチエンジン」に渡す
・untagフレームを受信した際には「PrimaryVID=PVID」をVIDに持つ「タグ」を追加する
・「スイッチエンジン」から渡されたフレームを接続されている機器に送信する
という機能を果たす部位を指します。
理想的なIEEE802.1Q対応スイッチの各ポートは、スイッチに設定された複数のVLANに所属させることが可能であるべきです。

と記載しています。

ところが、よくある「ポートVLAN」についての説明では、

一つの物理ポートは、一つのVLANにしか所属させることができない」という制約がある。一つの物理ポートが複数のVLANに所属できると、スイッチの物理ポートに届いたパケットがどのVLANから届いたものかが区別することができないからだ。
(記載例引用元:日経クロステック 基礎から分かるVLAN入門 「ポートVLANとタグVLANの違いとは?」

といった論調のものが多く見られます。これ、まるで「VLANの掟!」で説明していることと反対のことを言っているようにも見えます!さて、どう考えたらよいのでしょう?現実にありうるポートVLANの事例を考えてみましょう。

「ポートVLAN」事例を「VLANの掟!」で理解する

★IEEE802.1Q VLANの掟★

まず「VLANの掟!」をおさらいしておきましょう。

  1. ポートは受信したフレームに次の処理をして、スイッチエンジンに渡す
    Taggedフレームはそのまま
    Untagフレームは当該ポートのPVIDの値を「VIDフィールド」に持つ「タグ」フィールドを追加(FCSも計算しなおしたうえで)
  2. スイッチエンジンは、渡されたフレーム内「VIDフィールド」値をVIDにもつVLANに属するメンバポートに当該フレームを渡す
  3. 渡された各ポートは、渡されたフレーム内の「タグ」に次の処理をし、宛先MACアドレスの学習状況にしたがって送信可能な場合外へ送信する
    ・自身が当該のVLANにおいてtaggedメンバに設定されている場合は、そのまま「タグ」フィールド
    ・自身が当該のVLANにおいてuntagメンバに設定されている場合は、「タグ」フィールドを削除して(当然FCSも計算しなおし)

「ポートVLAN」事例を「VLANの掟!」で理解する

ポートVLANの設定例
事務所PC群接続ポート1~3はVLAN1だけにuntagメンバ、来客PC群接続ポート4,5はVLAN2だけにuntagメンバである。

図1はいわゆる事務所PC群と来客PC群はお互いに通信はできない「ポートVLAN」の構成事例です。(管理VLAN・スイッチの設定にしかアクセスできない設定用PC・スイッチのCPUもあえて記載しています。)

順にみていきましょう。
「ポート1~ポート3」はVLAN1だけのuntagメンバであり、PVID=1です。
「ポート1~ポート3」に受信したフレームには「VID=1」の「タグ」が追加され(掟第1条)、VLAN1のメンバだけにしか転送されません
図2ではポート1に受信したブロードキャストフレームの動きを示しています。ポート1のPVIDであるVID=1の「タグ」を追加されたフレームは、スイッチエンジンによってVLAN1のメンバであるポート2、ポート3とCPUには転送されますが、VLAN1のメンバではないポート4、ポート5、ポートnには転送されません。(掟第2条)

ポートVLAN設定でのフレームの動き
事務所PCが送信したブロードキャストフレームは、VDI=1のタグが付与され事務所PCの接続ポートにだけ転送されて、来客PCには到達しない。

同様に「ポート4・ポート5」はVLAN2だけのuntagメンバであり、PVID=2です。(図2)
「ポート4・ポート5」に受信したフレームには「VID=2」のタグが追加され(掟第1条)、VLAN2のメンバだけにしか転送されません(掟第2条)。
図3ではポート4に受信したブロードキャストフレームの動きを示しています。ポート4のPVIDであるVID=2のタグを追加され(掟第1条)たフレームは、スイッチエンジンによってVLAN2のメンバであるポート5とCPUには転送されますが、VLAN2のメンバではないポート1~3とポートnには転送されません(掟第2条)。

ポートVLAN設定でのフレームの動き
来客PCが送信したブロードキャストフレームは、VID=2のタグが付与され、来客PCの接続ポートにだけ転送されて、事務所PCには到達しない。

このように、いわゆる「ポートVLAN」の状態が成立しています。つまり、

「一つの物理ポートは、一つのVLANにしか所属できない」という制約がある

というよりは、

各VLANのメンバポート間だけで通信させる「ポートVLAN」を構築したいのであれば、それぞれ「一つの物理ポートは、一つのVLANについてだけメンバとするという設定を行えばよい

ということなのです。

一つの物理ポートが複数のVLANに所属できると、スイッチの物理ポートに届いたパケットがどのVLANから届いたものかが区別することができないからだ

という説明は、「複数のVLANについて、すべてuntagメンバに設定したポート」に接続された機器の立場からすれば、その通りの状態ですが、「マルチプルVLAN」の項で解説しているとおり、正しく設計していれば、意図したとおりであり、何の問題もありません。
「制約がある」のではなく、どういうネットワークを構成したいのか、に依存していることなのです。
もし、「ポートVLAN」を構成したいのであれば、ポートVLANを構成するポートについては、必然的に「一つの物理ポートは、一つのVLANにだけ所属させる」設定をせざるを得ないわけです。

ポートVLANのつもりなのに、複数のVLANに所属するポートがあったら?

では、もし、「一つの物理ポートが複数のVLANに所属している」状態だったら、何が起こるのでしょうか?これも事例を、「VLANの掟」で確認してみましょう。

図1の構成を考えて設定したのですが、ポート5をVLAN1のメンバにもしてしまっている設定ミスの例を考えてみます(図4)。

ポート5をVLAN2だけでなくVLAN1のメンバにもしてしまっている設定ミスの例(図4)

図3の場合と同様にポート4に受信したブロードキャストフレームは、
ポート4のPVIDであるVID=2のタグを追加され(掟第1条)、
スイッチエンジンによってVLAN2のメンバであるポート5とCPUには転送されますが、
VLAN2のメンバではないポート1~3とポートnには転送されません(図5)(掟第2条)。

設定ミス事例でのフレームの動き。
ポート4の来客PCからのフレームはVID=2のタグが付与され、VLAN2のメンバである来客PCには到達するが、事務所PCには到達しない

では、ポート1に受信したブロードキャストフレームの動きはどうなるでしょう?
図6で見てみましょう。
ポート1のPVIDであるVID=1のタグを追加され(掟第1条)たフレームは、
VLAN1のメンバではないポート4とポートnには転送されませんが、
VLAN1のメンバであるポート2、ポート3とCPUに加えポート5にも転送されます(掟第2条)。

設定ミス事例でのフレームの動き。
ポート1の事務所PCからのフレームはVID=1のタグが付与され、VLAN1のメンバである事務所PC以外にも設定ミスでVLAN1のuntagメンバであるポート5に接続した来客PCにも到達する。

一方で、来客PCが送信したフレームは、来客PCを接続したポートのPVIDである「VID=2」のタグが追加されるため、VLAN2のメンバポートにはつながっていない事務所PCでは受信できません。したがって、来客PCと事務所PCが相互にやり取りをすることはできません。
もし、図1のような構成を考えていたのに、図4のように誤ってポート5をVLAN1のメンバにも設定してしまっても、目指していた来客PCと事務所PCの相互通信をさせないようにする状態は一応できています。誤りには気が付きにくいですし、一見実害はなさそうにも見えます。
ただし、もしポート5に接続した来客PCでWireSharkなどで採取していれば、事務所PCが送信したブロードキャスト・マルチキャストフレームも採取できてしまいます
これはセキュリティ上好ましくありませんね。しかも、ポート5には余計なフレームが到達してしまうので、通信フレーム数が余分に増えることにもなります。

まとめ

以上で、「ポートVLAN」についても「VLANの掟!」で動作が説明できることが検証できました。

「ポートVLAN」とは、「構成する一つ一つの物理ポートを、それぞれ一つのVLANにだけ所属させる」ように設定した状態のこと

「ポートVLAN」とは、「構成する一つ一つの物理ポートを、それぞれ一つのVLANにだけ所属させる」ように設定した状態のことです。
一つのスイッチ内で「マルチプルVLAN」を構成する部分、「ポートVLAN」を構成する部分などの混在状態にすることも可能です(taggedフレームを他のスイッチとやり取りする「tagVLAN」を混在させ、他のスイッチ内で同じPVIDを持つポートに接続した機器と相互通信させることももちろん可能)。

コメント

タイトルとURLをコピーしました