【VMware@SoftLayer】L2VPN編（Standalone Edge編）

#内容
NSXと、VMwareから無料で提供されているNSX Standalone Edgeを使ったL2VPNの構築手順になります。

#参考記事
<a href="http://www.sneaku.com/2015/07/14/nsx-l2vpn-with-standalone-edge/" >NSX L2VPN with Standalone Edge – SneakU</a>
<a href="http://pubs.vmware.com/NSX-62/index.jsp#com.vmware.nsx.admin.doc/GUID-CBDF43D6-DBDE-4CE0-B891-875ED9A00E29.html" >VMware NSX for vSphere 6.2 ドキュメント センター - L2VPNの構成</a>

#NSX Standalone Edgeとは
NSXをすでに導入済みのサイトがある場合、他のサイトにNSXを導入しなくても、L2延伸が可能です。
具体的には、他のサイトにNSX Standalone Edge（仮想アプライアンス）を配布し、NSX導入済みサイトにあるEdge Service Gateway（NSXが必要なネイティブなEdge）とL2VPNを張ることで可能になります。
なんとNSX Standalone Edgeは**無料**です。

- Edge Service Gateway --> L2VPNサーバー
- Standalone Edge --> L2PVNクライアント

図でいうとこんな感じです。
From <a href="http://www.slideshare.net/testtesttest6/vmware-on-ibm-cloud-softlayer" >【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版</a> のP78
<img width="855" alt="qiita_standalone_edge_02.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/242e9749-0636-45cc-ac50-8e152d608b76.png">

オンプレミス（左）とクラウド（右）を同じL2セグメントで接続したい場合を考えると、オンプレミスの環境になるべく手を加えたくないということがあるかと思います。
この方式の場合、オンプレミスにはStandalone Edgeの仮想アプライアンスをデプロイするだけでよいので、非常に簡単に接続が可能です。
例えば、**オンプレミス側のVLANで使っている192.168.x.xのアドレスを、クラウド側のVXLANで192.168.x.xを引き続き利用が可能です**。
VXLANでは自由にL2空間を定義できてしまうので、物理DCやvCenterの垣根を越えた、まさにSDDCを実現しています。
こういったことが手軽にできてしまうのもSoftLayerとVMwareを組み合わせたときの魅力ですね。

NSX Standalone Edgeのダウンロードはこちらから可能です。
<a href="https://my.vmware.com/web/vmware/details?productId=417&downloadGroup=NSXV_624" >Download VMware NSX</a>
![qiita_standalone_edge_01.png](https://qiita-image-store.s3.amazonaws.com/0/101361/23c42619-701e-7ab5-9e3f-bf0cfd20000b.png)

#SoftLayerから提供されるライセンス
なんとStandalone Edgeは**無料**なのでライセンスは不要です。

NSX-V 6.2.2のStandalone Edgeについては、SoftLayer内部からダウンロード可能です。
<a href="http://downloads.service.softlayer.com/vmware/" >SoftLayer - Customer Downloads</a>
<img width="720" alt="qiita_standalone_edge_20.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/8d9e7199-fe5f-1cae-158b-39ff2b88c412.png">


NSXを導入済みのお客様向けに提供されているものなので
NSXについてはもちろんSoftLayerのポータル経由で購入することが可能です。

「Devices」-->「Manage」-->「Order VMware Licenses」から確認できます。
![alt](https://qiita-image-store.s3.amazonaws.com/0/101361/aac024b3-81ff-fe2e-f91e-ac3902d50dc2.png)

月額CPUソケット単位の課金となる、Enterprise Editionのライセンスが提供されています。
試しに使ってみたい方も1か月単位で気軽に試せますね！！！
![qiita_standalone_edge_03.png](https://qiita-image-store.s3.amazonaws.com/0/101361/f43dea7c-9abe-5e99-8840-f9fe2c8cf0b3.png)

#Standalone Edge 導入後イメージ
このようなイメージを持っていただければ、このあとも進めやすいかと思います。
オンプレミス側の192.168.x.xをクラウド上でもそのまま疎通する形で利用できるようになります。
まさにL2延伸ですね！

<img width="848" alt="qiita_standalone_edge_36.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/b335282f-d96c-2d05-766e-272da93502ad.png">
※あくまでIPアドレスなどは例です。

#手順一覧
- 各種ポートグループの準備
    - 1. Uplink PGの準備（つながれば何でも可）
    - 2. Trunk PGの準備
        - VLANタイプで「トランク」を選択
        - トランクレンジは「延伸するVLAN ID」
        - 偽装転送は「承諾」
        - 標準スイッチの場合、無差別モードも「承諾」
- 3. L2VPNサーバーの準備
    - Uplink vNIC の設定
    - L2延伸先となる論理スイッチの作成
    - サブインターフェースの作成
        - Tunnel IDを設定
        - 接続先のVXLANを指定
    - L2VPNの構成
- 4. Standalone Edgeのデプロイ
    - VLAN IDとTunnel IDを指定
    - 暗号化方式を合わせる
- シンクポートの設定

#Uplink PGの準備（**両サイトに作ってください**）
Uplink PGについては、デフォルトで通常のポートグループを**両サイトで**作っておきます。
<img width="968" alt="qiita_standalone_edge_04.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/d79d4136-2bac-83c3-390c-110d7fed87e9.png">

#Trunk PGの準備（**両サイトに作ってください**）
##分散スイッチの場合
以下のような設定で、トランクポートグループを作っておきます。

- VLANタイプで「トランク」を選択
- トランクレンジは「延伸するVLAN ID」を指定可能（デフォルトのままで特に問題ありません）

<img width="968" alt="qiita_standalone_edge_05.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/a0f15585-ab7a-ca68-9e07-907cf8b3c813.png">

- 偽装転送は「承諾」

<img width="969" alt="qiita_standalone_edge_06.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/484a3735-641e-ce2f-8427-c21de860ad6a.png">


##標準スイッチの場合
以下のような設定で、トランクポートグループを作っておきます。

- VLAN IDで「すべて(4095)」を選択

<img width="966" alt="qiita_standalone_edge_07.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/fe343068-afcc-5486-f01a-c17866b6d0f6.png">

一旦、ポートグループを作成後、編集します。

- 偽装転送は「承諾」
- 標準スイッチの場合、無差別モードも「承諾」

<img width="968" alt="qiita_standalone_edge_08.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/716cac19-58e4-ac6a-8d4c-c30432a71338.png">

#Edge Service Gateway(L2VPNサーバー)の準備
##Uplink vNIC が設定されていることを確認
先ほど作ったUplink PGに接続されていることも確認しておきましょう。
![qiita_standalone_edge_09.png](https://qiita-image-store.s3.amazonaws.com/0/101361/12380951-6e5c-064f-a018-53a956687cc9.png)

##L2延伸先となるGlobal Logical Switchの作成
クラスタ内で有効なグローバルトランスポートゾーンを作成します。
（すでに作成されていれば、この作業は不要です。）
<img width="884" alt="qiita_standalone_edge_10.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/8eb6770a-8ad0-9430-3123-9b4e28659a0e.png">

そこにL2延伸先となる論理スイッチを作成しておきます。
（すでに作成されていれば、この作業は不要です。）
<img width="885" alt="qiita_standalone_edge_11.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/cf43f3e5-99e8-ab2e-e35e-45f258b07a69.png">


##サブインターフェースの作成
Edge Service Gatewayのインターフェースを追加します。

- タイプはトランクを選択
- 接続先は、先ほど作ったTrunk PGに接続

<img width="664" alt="qiita_standalone_edge_12.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/54471ce3-bc44-fc16-f855-a4ae7d00bbc5.png">

引き続き、サブインターフェースを作成します。

- トンネル IDを設定
- 先ほど作成した論理スイッチをL2延伸先として指定（接続先のVXLANを指定）

<img width="532" alt="qiita_standalone_edge_13.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/e03c6083-2c6f-dd0d-24a5-31ca07bf5931.png">

このような設定になります。
<img width="664" alt="qiita_standalone_edge_14.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/9ff0911e-e6e4-71d7-9196-01af0baaf6ca.png">


##L2VPNの構成
次に、Edge Service GatewayのL2VPNの構成を進めます。
![qiita_standalone_edge_15.png](https://qiita-image-store.s3.amazonaws.com/0/101361/778e6076-e3c7-f627-723e-425945d593a8.png)

リスナーIPの設定では、暗号化方式を選択します。
後ほどStandalone Edgeの設定では、暗号化方式を揃える必要があります。
<img width="434" alt="qiita_standalone_edge_16.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/bc2fd0b4-921c-ef92-3f30-0a081a9e8d52.png">

ピアサイトの構成では、ID/パスワードを設定し、有効化します。
ここで先ほど作成したサブインターフェースを選択します。
<img width="650" alt="qiita_standalone_edge_17.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/3cc28ca3-c552-97d3-14da-5bf3535af8b7.png">

最後にL2VPNサービスを有効化して、サービスを開始します。
![qiita_standalone_edge_18.png](https://qiita-image-store.s3.amazonaws.com/0/101361/3678d781-b48b-a79c-369b-35a58df4190f.png)

        
#Standalone Edgeのデプロイ
##ダウンロード
NSX-V 6.2.2のStandalone Edgeについては、SoftLayer内部からダウンロード可能です。
ダウンロード後、解凍すると、ovfファイルが出てくるので、それを使います。
<a href="http://downloads.service.softlayer.com/vmware/" >SoftLayer - Customer Downloads</a>
<img width="720" alt="qiita_standalone_edge_20.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/8d9e7199-fe5f-1cae-158b-39ff2b88c412.png">

##OVFデプロイ
ダウンロードしたOVFファイルを選択します。
<img width="966" alt="qiita_standalone_edge_21.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/675d4004-adf9-5c3a-88e0-d18adeffd1be.png">

追加の構成オプションの承諾にチェックを入れて進みます。
<img width="964" alt="qiita_standalone_edge_22.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/cd367559-671d-a0b6-ad70-303fee7b6946.png">

デプロイ先の計算リソースとストレージの場所を選んだ後、
Uplink PGとTrunk PGを選択する必要があるので、オンプレミス側で事前に作っておいたポートグループを選択します。
<img width="964" alt="qiita_standalone_edge_26.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/c32abfc7-11e0-7f07-0344-a9e1e82b3a4f.png">

Standalone Edgeをデプロイした後で、設定変更でCLIに入るためのパスワードを設定します。
<img width="964" alt="qiita_standalone_edge_27.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/cd82066d-79fa-731a-e2a3-92e6087ce9a3.png">

ネットワーク情報を設定します。（この画面では、香港DCのポータブルIPを東京DCに延伸することを試しています。意外とそういうこともできちゃいます）
<img width="964" alt="qiita_standalone_edge_28.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/b3d63af1-cc71-4cd4-890c-200efda66e29.png">

Edge Service Gateway(L2VPNサーバー)で設定してあるL2VPNの暗号化方式と同一方式を選択します。
また、先ほど設定した、対向となるEdge Service Gatewayの情報を入力します。
<img width="966" alt="qiita_standalone_edge_29.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/62b637c1-2dc4-806d-d281-3113d738713c.png">

延伸したいVLAN番号と、先ほどサブインターフェースで設定したトンネルIDを入力します。
ここでは、ネイティブVLAN（VLAN番号 0）を延伸したいので、「0(1000)」と書きます。
（例にあるようにここで複数設定することも可能です。）
<img width="966" alt="qiita_standalone_edge_30.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/bf4327ea-623c-09f6-af77-d5d85144df67.png">

デプロイ後にパワーオンにチェックを入れて、終了します。
<img width="913" alt="qiita_standalone_edge_31.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/e83fa123-804e-c8f0-3320-9b6bd981b2a6.png">

デプロイを待って、L2VPNが接続されていることを確認します。
<img width="1280" alt="qiita_standalone_edge_32.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/cfd4545e-80b4-52e9-1840-9ec477f83618.png">


ここでつながらない(downのまま)場合は、以下の原因が考えられます。

- Uplink同士で疎通が取れていない
- 暗号化方式が揃っていない

それでもつながらない場合は、Standalone Edgeを再デプロイしてみます。

#シンクポートの設定
これでdoneかと思いきや、L2VPNのクライアント・サーバーの接続は完了したものの、まだpingで疎通はできません。
Standalone Edge側のeth1をvNICポートのシンクポートを有効化する必要があります。

下記の情報から、「IBM-DSwitch」の41番ポートのシンクポートを有効にする必要があります。

```sh
$ esxcfg-vswitch -l
Switch Name      Num Ports   Used Ports  Configured Ports  MTU     Uplinks
vSwitch0         1536        3           128               1500    vmnic1
 
DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks
IBM-DSwitch      1536        10          512               1500    vmnic0
 
  DVPort ID           In Use      Client
  32                  1           vmnic0
  0                   1           vmk0
  33                  1           NSX l2vpn Edge.eth0
  17                  1           NSX l2vpn Edge.eth1
```

ホストにSSHで入って、以下のコマンドを実行します。

```sh
$ net-dvs --enableSink 1 -p 41 IBM-DSwitch
$ 
```

以下のコマンドでシンクポートが有効化されているか、確認可能です。

```sh
$ net-dvs -l | grep "port\ [0-9]\|SINK\|com.vmware.common.alias"
                com.vmware.common.alias = IBM-DSwitch ,         propType = CONFIG
        port 32:
        port 0:
        port 33:
        port 17:
                com.vmware.etherswitch.port.extraEthFRP =   SINK
```

ここまでやるとpingで疎通が通るはずです。
L2VPNの設定は以上です。
変なエラーが起こった方は、以下のリンクをお試しください。
<a href="http://pubs.vmware.com/NSX-62/index.jsp#com.vmware.nsx.admin.doc/GUID-AA6B2ED1-3470-4D42-94F6-92556CFE0DA1.html" >VMware NSX for vSphere 6.2 ドキュメント センター - L2VPN のベストプラクティス</a>

#さいごに
オンプレミス側の設定はほぼ不要で、仮想アプライアンスをデプロイするのみで、L2延伸できましたね。
SoftLayerでは簡単にNSXのライセンスも含めて、月額提供しているので、リソースやキャパシティの拡張をしたい場合に、使えそうです。
すでにオンプレミスでNSXを導入済みの方もこの他にも色々な接続パターンが考えられるので、ぜひ一度お試しください。

その他の気づきをまとめておきます。

- オンプレミスVLAN上に1つでもL2VPN接続されたStandalone Edgeがあれば、同VLAN上のトラフィックはすべて延伸される(他ホストでも同VLAN上にあるものすべて、文字通りVLAN全体が延伸された形になる)
- Standalone Edgeはデプロイ後もCLIで少しの設定変更は可能
- Standalone Edge側のSub-Interface先としてはVLANのみサポートされる
- Standalone Edge側の設定で、1つのL2VPN接続に対して、複数のVLAN IDとTunnel IDを指定することが可能
- Standalone Edge側のTrunk-PGは標準スイッチでも可