「ブリッジの掟!」でも触れたとおり、今日のスイッチ製品の基本的な動作は、「アドレス学習されたMACアドレスあてのユニキャストフレームは、当該ポートだけに転送する」というものです。このアドレス学習により、転送不要なポート間のフレーム転送が抑制され、転送にかかわっていないポート同志の転送を平行して行うことができます。
VLAN機能のないスイッチについては、ここまでですが、VLAN機能があるスイッチについては、その学習を行う方式が2種類あります。
この記事では、それぞれの学習方式でのふるまいと発生する問題、および問題への対処方法を解説します。
VLAN-MACアドレス学習方式には2つの種類がある
VLAN機能があるスイッチのMACアドレス学習を行う方式には、SVLとIVLの2種類があります。
SVL 同一MACアMACアドレスドレスは、スイッチ全体で一つのポートにだけ学習する
一つのソースMACアドレスについて、VLANによらずスイッチ全体で一つのポートに学習をする方式を「SVL(Shared VLAN Learning:共有VLAN学習)」と呼びます。比較的低価格のスイッチ製品でSVLが採用されています。MACアドレスを記憶するメモリの量が比較的小容量で済むので、スイッチチップが安く作れるのでしょうね。
SVLで動作するスイッチでは、フレームの宛先MACアドレスがどこかのポートに学習されている場合、その学習されたポートでだけフレームを送信が可能になります。ただし、その学習済ポートがVIDフィールドのVLANのメンバでない場合にはフレームが送信されません。どのポートにも学習されていないMACアドレス宛のフレームは、VIDフィールドのVLANのメンバポートすべてで送信されます(フラッディング)。
宛先MACアドレス学習状態 | どのポートにも学習されていない | 当該ポートに学習済 | 他のポートに学習済 |
送信可否 | 送信可 | 送信可 | 送信不可 |
IVL 同一のMACアドレスはVLAN毎に一つのポートに学習する
一つのソースMACアドレスについて、VLAN毎に学習する方式を「IVL(Independent VLAN Learning:独立VLAN学習)」と呼びます。IVLは、Layer3機能を持つなど比較的高価格のスイッチ製品で多く採用されています。
VLAN毎の学習なので、複数のポートに同じMACアドレスが学習されても、それぞれ別のVLANのメンバであれば、問題は発生しません。ただ、出力されるVLANに学習されていないMACアドレス宛のフレームは当該VLANの全メンバーポートから送信されることになります。直接通信障害には至りませんが、本来流れてほしくないポートからも不要なフレームが送信されてしまい、トラフィックを無駄に増やすことになるうえ、セキュリティ上も好ましくはありません。
宛先MACアドレス学習状態 | フレーム中VIDのVLANにおいて、どのメンバポートにも学習されていない | フレーム中VIDのVLANメンバである当該ポートに学習済 | フレーム中VIDのVLANメンバである他のポートに学習済 |
送信可否 | 送信可 | 送信可 | 送信不可 |
SVLとIVL それぞれの問題点
このようにSVLとIVLは動作が異なり、それぞれ都合の良い点悪い点があります。
SVLだと問題が発生するネットワーク構成事例
SVLでは、同じソースMACアドレスのフレームが複数ポートに流入する構成のネットワークである場合、都度学習されるポートが移動するため、タイミングによって通信が成り立たない問題が発生するので注意が必要です。
図3-1は、事務所内のセグメントとは別の上位ネットワークのセグメントに設置するサーバが同一事務所内にあり、上位セグメントと事務所内のセグメントをルータで分割している「ポートVLAN」の構成事例です。事務所内セグメントについては、事務所内機器を収容するVLAN2とルータLAN側からの応答を返すための「お帰りVLAN」であるVLAN1、そしてルータのWAN側である上位セグメント用のVLAN3が設定されています。実際には、ルータLAN側を事務所内機器と共用し、事務所内機器とは通信させたくない来客用のVLANも設けた「マルチプルVLAN」構成になっていることも多いでしょう。
これは少し極端な事例にも見えますが、小規模な事務所などでスイッチ設置に適切な場所が少なかったりコンセントが少ないような設置場所で十分あり得る構成でしょう。上記程度の設置台数だと8ポートのスイッチでポート数としては事足りるので、ネットワーク機器の設置には8ポートスイッチとルータだけで十分です。
ただ、問題はルータのMACアドレスです。このルータが例えばコンシューマ向けのWi-Fiルータの場合、多くのWi-Fiルータ製品では、出荷時設定では、WAN側セグメント通信用のMACアドレスとLAN側セグメントの有線LAN通信用のMACアドレス、2.4GHz帯の無線LAN通信用のMACアドレスが同じMACアドレスになっています。この事例ではそれを「R」としています。
まず事務所PC1からルータ経由インターネットに向けたフレームが送信されると、当該フレームはポート4に接続されたルータに届きます。
ルータは事務所PC1からのフレームに乗ったIPパケットをルーティングしてWAN側から上位ネットワークに向けて送信しますが、その時のソースMACアドレスにはデフォルトでは「R」がセットされていますので、ポート4に学習されていたMACアドレス「R」は消去され、改めてポート3に学習されます。
その直後に事務所PC2がインターネット向けの通信を開始するべくルータあてのフレームを送信した場合、宛先MACアドレス「R」を学習しているのはポート3しかありませんが、ポート3はVLAN2のメンバではないため、スイッチエンジンは当該フレームをポート3には転送しません。また、宛先MACアドレス「R」はスイッチ全体としては学習済でありながら、VLAN2のメンバポートには「R」を学習しているポートがないため、当該フレームはどこからも送信されません。
SVLだと問題が発生するネットワーク構成事例への対処方法
図3の構成での問題を解消する対処方法には次の二つがあります。
- IVLスイッチを使う
IVLスイッチであれば、VLAN2のポート4にMACアドレス「R」が学習された状態を維持したまま、VLAN3のポート3にもMACアドレス「R」を学習するので、事務所PC2からのフレームはポート3に転送され、ルータに届きます。
ただし、スイッチ製品が高価になる可能性があることと、マルチプルVLAN構成にしている場合には本来届いてほしくない他のポートにも余分なフレームが届いてしまう状態になります。 - ルータのWAN側MACアドレスをデフォルト値から変更する
ルータ製品の多くはWAN側のMACアドレスを任意な値に設定することが可能です。本来は物理的なネットワークの中でユニークな値であることが必要なMACアドレス値なので、安易な値を設定することは控えるべきですが、例えば、そのルータがWi-Fiルータで2.4GHz帯だけでなく5GHz帯も使用する製品であれば、有線側では使われることがない5GHz帯用のMACアドレスをWAN側に設定することで、運用回避が可能です。
なお、2項は、あくまで「一つのルータのWAN側とLAN側を同じスイッチに収容する構成での対処方法」なので、二つのセグメントにそれぞれ別のLANポートで接続していてしかもすべて一つのMACアドレスを使うことしかできないような(例えばNASなどの)機器が存在し、それぞれのセグメント向けに作成した別のVLANにそれぞれ流入してくるような場合には、1項すなわちIVLスイッチを使うしか対処方法はありません。
IVL+マルチプルVLANの構成で発生する問題
ではIVLのスイッチを使えば、全く問題はないのでしょうか?
前述しましたが、IVLスイッチでマルチプルVLANを構成した場合、出力されるVLANに学習されていないMACアドレス宛のフレームは当該VLANの全メンバーポートに転送され送信されることになります。直接通信障害には至りませんが、本来流れてほしくないポートへも不要なフレームが送信されてしまい、トラフィックを無駄に増やすことになるうえ、セキュリティ上も好ましくはありません。
例えば、事務所PCがインターネット向けに通信を開始し、その応答をルータが中継して、事務所PCに返すときを考えてみましょう。
- ポート1から入った応答を乗せたフレームにはポート1のPVIDである「1」をVIDにセットしたタグが追加され、スイッチエンジンに送られます。
- スイッチエンジンはVID=1であるVLAN1(お帰りVLAN)のメンバであるポートにフレームを転送します。「B」はVLAN2のポート2にだけ学習されている状態であるため、VLAN1には宛先MACアドレスである「B」が学習されているポートは存在しません。ルータからのフレームをVLAN1のメンバポートであるポート3やポートnでもフレームを送信します。
- untagメンバである各ポートは転送されたフレームから「タグ」を除去して接続先機器に向けて送信します。したがって客先PCでもルータから事務所PCに向けて送信したフレームを受信できてしまいます。客先PCで受信されるトラフィックは不要な事務所PC向けのフレームで不要な増加をしているだけでなく、受信できるフレームがhttpなど可読な内容であれば、キャプチャして通信内容を知ることも可能になります。
L2レイヤでのマルチプルVLANは、比較的低コストでネットワーク分割と機器共有を行える手法ですが、IVLスイッチを使うことはお勧めできません。
まとめ
この記事では、二つのVLAN MACアドレス学習方式について、「VLANの掟!」に基づいて、それぞれの学習方式でのふるまいと発生する問題、および問題への対処方法を解説しました。それぞれの特性を把握して、基本は適材適所。そして利用する機器側で対処できるものがあります。
SVL:ある機器のMACアドレスが、別々のPVIDを設定した複数のポートから流入する場合には、タイミングによって通信ができなくなる
設置現場の電源などの制約からスイッチを一台で済ませたい場合などの陥り勝ちな問題です。ポートVLANで分離された複数VLANを設定されたスイッチで、同一MACアドレスからのフレームが別々のPVIDを設定した複数のポートから流入する場合、タイミングによってはそのMACアドレスの機器との通信ができなくなる問題が発生します。
対処方法1:IVLスイッチを使う
IVLであればMACアドレス学習がVLAN毎なので、同じMACアドレスが分離されたVLANのVIDをPVIDとする複数のポートに受信しても、SVLで発生する通信できない問題は発生しません。
対処方法2:接続機器ポート毎のMACアドレスを変更する
サーバ、NASなどでポート毎に異なるMACアドレスが使われている場合には問題は発生しません。ルータのWAN側とLAN側を一つのスイッチに収容したい場合、ルータ製品によっては、WAN側のMACアドレスをデフォルト値から変更可能です。Wi-Fiルータであれば、5GHz帯用のMACアドレスをWAN側MACアドレスとして設定するとよいでしょう。
また、「ポートVLAN」では、できるだけIVLスイッチをつかいましょう。「ポートVLAN」部分と「マルチプルVLAN」部分が混在している場合やSVLスイッチを使わざるを得ない場合は、接続機器のMACアドレスに注意が必要です。一つの機器の複数ポートを同じスイッチに接続する場合には、それぞれのポートに使用するMACアドレスが別々のものか・別々のMACアドレスに変更可能か確認しましょう。別々のMACアドレスにできない場合には、SVLスイッチは使えません。
IVL:マルチプルVLAN構成では、届いてほしくないところに届いてほしくないフレームが届いてしまう
IVLスイッチを使って「マルチプルVLAN」を構成した場合、SVLでの問題のように、通信ができないという事態は発生しませんが、不要な通信量の増加を招き、またセキュリティ上も好ましくありません。
対処方法1:マルチプルVLANにしない
対処方法2:SVLスイッチを使う
IVLスイッチを使って「マルチプルVLAN」を構成することはお勧めしません。マルチプルVLANは、できるだけSVLスイッチで構成しましょう。
コメント