Bluemix Infrastructure(旧SoftLayer)でのVLAN Spanningに関するよくあるFAQ

#1. はじめに
Bluemix Infrastructure（旧SoftLayer）には、VLAN Spanningという機能（？）がありますが、この機能について理解できない？何のための機能なんだ？専用線で使えなくなったんだけど大丈夫か？などの質問を受けることがありますので、本記事で説明してみたいと思います。以後、Bluemix Infrastructureだと長いので、旧称のSoftLayerのままで呼びます。

#2. VLAN Spanningとは何か？

##2.1 初期構成はどうなっているか？
SoftLayerのサーバーを最初に購入した際には、下図のように各アカウントごとにインターネット側に接続可能なPublic VLANと、プライベートネットワーク側に配置されているPrivate VLANに接続されています。このVLANはアカウント固有のものであり、他アカウントとは共有していません。（正確には、サーバーはPublic VLANには配置しなくても構いませんが、Private VLANには必ず配置されていなければいけません）。

![kousei1.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/db2f9751-f4b1-10fd-c535-d4febbb59f35.jpeg)

##2.2 VLANを足した構成を考えてみる
SoftLayerではPublic VLANやPrivate VLANを複数購入することでもう少し柔軟なネットワーク構成が可能です。下図では①と②は別々のPrivate VLANに配置されています。また、別データセンターにある③も当然別のPrivate VLANです。このようなケースにおいて、**複数のPrivate VLAN間の通信をSoftLayerのルーターで許可を与えるのがVLAN Spanning=ONの意味です**。デフォルトではVLAN SpanningはOFFになっているので、①と②と③は互いに通信ができません。SoftLayerではGlobal Networkを使ったデータセンター間通信が無料だと謡っていますが、この恩恵を受けるためにはVLAN Spanning=ONにして①と③の間のような通信を許可する必要があります。逆にVLAN Spanning=ONにしないと、①と③の間のデータセンター間通信をPrivate NW経由で行うことはできません。
なお、VLAN Spanning=OFFのままでも、①～③はストレージやDNSなどのSoftLayerが提供するサービスを利用することは可能です。あくまでVLAN Spanningは利用者のPrivate VLAN間を制御する機能です。

* 注１）「VLAN SpanningっていうからVLANをL2延伸しているんだと誤解していた」「VLAN間を通信許可させているのだからNetwork Spanning(L3 Spanning)というべきなのではないか？」という方がいらっしゃれば、私もその考えに同意です。なお、VLANはbroadcast domainの境界であり、VLANとサブネットは1:1に必ずしも対応している必要はありません（1:1に対応させる方が一般的な設計ですが）。SoftLayerではVLANには複数のサブネットが紐付けられることがありますが、VLAN Spanning=OFFだと同一VLAN内のサブネット間通信もSoftLayerのルーターは通信許可しません。よって、VLAN Spanningという用語は、あまり良い用語ではないと個人的には思います。
* 注２）「VLAN Spanning」機能を有効にしなくても①と②はPublic NW経由であれば接続できます。あくまでVLAN SpanningはPrivate NW側を操作する機能です。
![kousei2.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/c423a40d-817c-57ba-43fb-058936574953.jpeg)

##2.3 Vyattaを足してみる
SoftLayerにはVyatta Gateway Appliance（以下Vyatta）というソフトウェアルーターがあります。Vyattaは特定のVLANを紐付けてrouted modeにすることで、next hopがSoftLayerが管理するルーターではなくVyattaになるように構成することが可能です。例えば、下図においては、④のサーバーはSoftLayer管理のルーターに接続したままですが、②や③はVyattaがnext hopになっています。
このような構成では、**利用者自身がVyattaを使ってVLANを制御しているため、①と②と③の間のVLANは、VLAN SpanningのON/OFFに関わらず通信可能**です。
ただし①、②、③が④や⑤と通信する場合には、SoftLayerが管理するルーターを経由する必要があります。このような場合においては、先述のとおり複数のPrivate VLAN間での通信許可が必要になるため、やはりVLAN Spanning=ONにしておく必要があります。
![kousei3.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/66aab710-9f5f-7111-fe5e-e67aa7ba7642.jpeg)

#3. VLAN SpanningにまつわるFAQ

##Q1. VLAN Spanningはどこで設定するのですか？
Customer Portalにて、Network -> IP Management -> VLANから、"Span"というタブをクリックすることで設定変更可能です。**繰り返しですが、デフォルトではOFFです。**
もしVLAN間通信やデータセンター間通信を実現したい場合は、ONに変更して下さい。
![VLAN_config.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/e2cca052-f101-c826-6ff3-82e74c030cb5.jpeg)

##Q2. VLAN Spanningは実際にはどういう仕組みを使っているのですか？
SoftLayerでは、フラットな物理ネットワークをACLで制御することで自アカウントだけでなく他アカウントまで含めたVLAN間の通信を分離しています。VLAN SpanningのON/OFFというのはこのACL設定を変更して、すべての自分の所有するVLAN間での通信を許可・禁止を切り替えるという操作を内部的に行っています。

##Q3. 特定のVLANとの間のみ通信を許可し、それ以外は通信させないようにすることはできますか？
いいえ。残念ながら現在の仕様ではできません。All（VLAN Spanning=ON: 自アカウントのVLAN間の通信を全部許可する） or nothing（VLAN Spanning=OFF: 自アカウントのVLAN間の通信を全部許可しない）です。

##Q4. 専用線を申し込んだたらVLAN Spanningは無効になると言われたのですが、その場合はVLAN間通信ができなくなるのですか？

**いいえ。紛らわしい表現ですが、これは「ユーザーが選択したVLAN Spanningの設定の有無に関係なく、VLAN間通信は暗黙的に有効になる」という意味です。。**

もうちょっと丁寧に説明しましょう。
専用線を申し込む際には、専用線接続用のVLANがクロスコネクトルーター(XCR)と呼ばれる専用線接続用ルーター側に暗黙的に作成されます。その新規に作成されたVLANとサーバーが配置されているVLANとの間で通信できる必要があるため、過去の仕様では利用者がVLAN Spanningをどのように設定しておこうが、専用線利用時にはシステム内部的にVLAN Spanning=ONに変更されるようになっていました。
しかし、先述のQ&Aにもあるとおり、VLAN SpanningのON/OFFはACL制御のみで行われています。これではネットワークが完全に分離できているとは言い切れませんでした。そこで、ACL制御の負荷や今後の専用線設定作業の自動化を鑑み、専用線利用者のネットワークはVRF（Virtual Routing and Forwarding）を使って厳密に他アカウントとネットワークを分離することに仕様変更しました。このため、VLAN間はACLを使ってわざわざ他アカウントと分離する必要がなくなったため、VLAN SpanningをON/OFFにするという機能自体が無効になり、VLAN間は自由に通信が可能になりました。
https://knowledgelayer.softlayer.com/learning/introduction-direct-link-0
https://knowledgelayer.softlayer.com/learning/management-vpn-access-case-vrf-direct-link

結論として、新旧どちらの専用線の仕様であっても、「VLAN間通信は暗黙的に有効になる」という事実は変わりがありません。

##Q5. 異なるアカウント間をPrivate NW（アカウント間 Spanning）で通信することはできますか？
できません。
先述のとおり、SoftLayerはデフォルトではACL制御でVLAN間通信を制御しています。過去はアカウント間のVLANのACL許可を与えることで例外的に通信できるようにしていた時期もありました（アカウント間VLAN Spanning)。しかし、セキュリティーや管理の上でSoftLayerは現在は原則このやり方は認めていません。
また、新仕様の専用線を利用した場合には、各アカウント間はVRFを使ってネットワーク的に分離されてしまうため、ACL制御をするVLAN Spanning機能ではアカウント間を通信させることは技術的にできなくなりました。

異なるアカウント間を通信させるためには、今は以下の3通りの方法が推奨されます。

- 異なる複数のアカウントを、１つのアカウントに統合する。
- 各アカウントに専用線を引いて、専用線経由で折り返す。これにより、Public NWを利用せずに通信することが可能です。
- Public NW経由で通信する。なお、Public NW経由であっても同一デーセンター内のアカウントであればデータセンターからパケットは流出しませんし、異なるデータセンター間の通信であってもSoftLayer AS36351 ネットワーク( https://www.ibm.com/cloud-computing/bluemix/ja/peering )からパケットが出るわけではないので、インターネットと必ずしも通信するわけではありません。セキュリティーは多層防御で保護するのが基本ですので、IPsec VPNやSSL通信を併用することでセキュアな通信が可能となります。