はじめに
大規模なネットワークの設計を行っていると、必ずスケールアウトの際に問題になる課題があります。
それがVLANの拡張問題です。
これについてまとめてみます。
歴史
VLAN不足問題
VLAN(IEEE 802.1Q, タグVLAN, dot1q)は、1つの物理ネットワークを論理的に分割する技術で、今日のネットワーク設計では必ず使用されると言ってもいいほど広く普及している技術です。
VLANは次のようなヘッダー構成をしています。

このうち、VIDがVLAN IDを示し、12ビットのため 4096 件 (一部は予約で使用不可)まで使用することができます。
しかしながら、約4000件というのは実用上厳しい場合があり、2000年頃にインターネットが普及し始めると主にプロバイダーを中心に拡張を要望されるようになりました。
プロバイダーでは、各加入者にVLANを振っていましたが、4000ユーザーなどすぐに超えてしまい問題となりました。
QinQ
このようなVLAN不足問題に対応するため、様々な実装が考えられました。その中で標準化されたのがQinQ(IEEE 802.1ad、二重タグ方式)です。

QinQは非常にシンプルな仕様で、タグVLANのヘッダーの外に、もう一つタグVLANのヘッダーを付けます。こうすることで、4096 * 4096 = 1677万7216 件までVLANを拡張することができます。
タグVLANの規格番号のQを使用して、Qの中にQを入れる意味で QinQ と通称されています。
他の仕様に比べて実装も容易で、タグVLANのASICを流用できる場合が多いためスイッチの負荷も低く、安価なスイッチにも実装されていることが多い技術です。
主にプロバイダーで使用されることを想定した仕様であったため、内側のタグをCustomer VLAN、外側のタグを Service VLAN と呼びます。

しかし、このプロトコルにも弱点があります。
通常、L2スイッチはどの端末がどこに繋がっているかを示すMACアドレステーブルを持っているのですが、QinQはL2をそのまま拡張するため、L2スイッチには接続台数分のMACアドレスの登録が必要になります。
そのため、このMACアドレステーブルのサイズが実質的な接続台数の制限になってしまいます。(接続はできますがテーブルサイズを超えるとブロードキャストが増えるため遅延が発生するようになる)
以下はFS.COMのスイッチで、こちらは3万テーブル程度となっています。TP-Linkの場合は1万件ほど、Ciscoの場合も1000シリーズは1.6万、9200シリーズで3.2万ほどです。



もちろん、多くのMACアドレスを登録できるスイッチもありますが、より高額なL2スイッチが必要になってしまいます。
エッジを含むすべてのスイッチに、これだけのスペックが必要なため、QinQは接続台数が増えるとコストがかかる技術という課題を持っています。
このため、次にMACアドレステーブル不足問題が叫ばれるようになりました。
MAC-in-MAC
このような問題に対処するため、考えられたのがIEEE 802.1ahです。
この技術は、MACアドレスを二重にするため、通称として MAC-in-MAC とも呼ばれています。(QinQとネーミングセンスが同じ・・・)
IEEE 802.1ah のヘッダーは次のとおりです。

この方式は、MACアドレスを二重にすることで、ネットワークを分割し、1つのエッジスイッチで管理する機器の台数を制限することができます。
また、ahを拡張した IEEE 802.1aq も登場し、拡張性をより高めることとなりました。
しかし、この技術はプロバイダーなどでは使用されましたが、ユーザーがごく一部のためスイッチが高額になることなどから広くは普及しませんでした。
VXLAN
MACアドレス問題には、前述のようにIEEE 802.1ahなどが対処法として確立しましたが、ユーザー企業の仮想化の流行により、更なる転機がきます。
仮想マシンが広く普及すると、L3で区切った別ネットワーク間で仮想マシンを移動・展開させたいという要望が現れ始めました。
これには、次の様々な実装がありましたが、Ciscoなどが主体となっていたVXLANが広く普及しました。


VXLANは、VLANやQinQなどと比べると少々複雑です。
ヘッダーは以下のようになっており、L4までのヘッダーを付加して、元データをカプセル化します。見ての通りVPNなどと似た技術になります。

このような構成のため、MACアドレスはエンドポイントのスイッチのMACアドレスのみを学習すれば良くなり、MACアドレステーブルの問題も発生しません。
また、VLAN ID(VXLANの場合はVNIと呼ぶ)も24ビットあるため、16,777,216件までVLAN IDをサポートしています。
VXLAN は VLAN 不足という観点では少々過剰な機能が多く、要求性能も高いのですが、仮想環境との相性が良いことからユーザー企業が主体となって導入が増え、多くのスイッチに導入され価格も安くなっています。
VLANやQinQ対応製品に比べると高価なものの、MACinMACに比べると安いモデルに搭載されています。
昨今はCPUの進化もあり、Ciscoなどエンタープライズ向けのスイッチの場合は、おおむね最新のL3以上のスイッチを購入すれば使用できます。
このため、現在では、VXLANを使用する構成は人気があります。
IP Clos
VXLANはL2の問題解決としては適切な対応ができるのですが、機能過多・高負荷なため、より大規模なネットワークでは負荷が無視できなくなります。
そこで考えられたのが「IP Clos」です。これは端的に言うと「データセンター内にインターネットを構築する設計」だと考えればわかりやすいと思います。
一般的な設計では上位にL3スイッチを置き下位にL2スイッチを組み合わせて構成しますが、IP Clos では、ほぼすべてのスイッチをL3スイッチで構成し、BGP等のルーティングプロトコルで制御します(OSPFを使用する場合もありますがBGPが一般的)。

このように構成することで、L2の制限を受けず、ハードウェア障害時・交換時に別ルートに迂回したり、BGPの高度な制御機能を使用できるメリットがあります。また、BGPが何十年もインターネットを支えてきた安定したプロトコル・実装である点も人気の理由です。
一方、この設計のデメリットはいくつかあります。
・高性能なL3スイッチを使用するためネットワーク機器のコストが増える
・BGPに対応していない機器は別途設計を変える必要がある (場合によっては自作する必要あり)
・ルーティング制御の管理が複雑化しやすい
・導入企業が少なく市場に対応できるエンジニアも少ないため採用が難しい
このように高コスト化しやすいため、ある程度の規模・体力のある企業でなければ厳しい構成となります。
国内では、Yahoo、DMM、LINE、さくらインターネットなどが採用しているようです。
昨今では、大規模事業者の間では IP Clos で設計することがスタンダードとなりつつあります。
参考文献
ahについて詳しい
https://journal.ntt.co.jp/backnumber2/0604/files/jn200604012.pdf
QinQを使わずL2 VRRPで解消している案
https://www.janog.gr.jp/meeting/janog10/pdf/janog10-l2-ando.pdf
https://www.janog.gr.jp/meeting/janog10/log/janog10-vlan.txt
さくらインターネットはQinQとVXLANを組み合わせており、VXLANに移行中
https://www.janog.gr.jp/meeting/janog39/application/files/3814/8479/0067/janog39-qinq-ito-01.pdf
関連技術がよくまとまっている
https://milestone-of-se.nesuke.com/nw-advanced/spb/spbm-summary/
IP Closの解説
https://foobaron.hatenablog.com/entry/bgp-in-the-data-center-01
DMMの例、Clos+EVPN+VXLAN
https://inside.dmm.com/articles/dmm-evpn-vxlan_1
コメント