Megaport Cloud Router (MCR) で Azure, Google Cloud, AWS と Oracle Cloudをマルチクラウド接続してみてみた


# ■ 目的
Megaport は Network As A Service(NaaS)プロバイダーです。
[Megaport Cloud Router（MCR）](https://www.megaport.com/services/megaport-cloud-router/)は、[世界中の600を超える主要なデータセンター](https://www.megaport.com/megaport-enabled-locations/)から、レイヤ3でのプライベート接続のための仮想ルーティング機能を備えており、日本のMegaportサービス拠点は既に21箇所あります
　・@Tokyo CC1
　・Equinix TY2
　・Equinix TY4
　・Colt東京塩浜
　・Equinix OS1
　・NTTデータ堂島
MCRは、物理的なインフラがなくても[コストは必要帯域幅のみ](https://www.megaport.com/pricing/)でクラウドからクラウドへの接続およびMegaport Network上のあらゆるプロバイダへ直接接続することができます。
ということで、MCR で Azuer, Google Cloud (GCP), AWS と Oracle Cloud Infrastructure (OCI)を Multicloud 接続してみます。

![Megaport-Cloud-Connectivity-Graphic-1024x464.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/96252a53-6538-3c3c-0ca3-773d8958777f.png)

# ■ 構成
前回の[GCP,AWSとOCIを接続した構成](https://qiita.com/shirok/items/044a5e9c4c33f7417036)にAzure(US East)を追加接続してみてみます
<img width="742" alt="構成図Azure.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/5d45e333-f3e0-e434-7f76-f8bca1bbd121.png">




# ■ Megaport:MCR作成とGCP,AWSとOCI接続
Megaport:MCR作成とOCI,AWS,GCP接続は下記を参考に設定します。
ここでは、OCI,AWS,GCP接続された状態で、Azureを追加します。

・参考：
    [Megaport Cloud Router(MCR)でAWSとOracle Cloudを接続してみてみた](https://qiita.com/shirok/items/e9d0bbad66a46f68dd7d)
    [Megaport Cloud Router(MCR)でGoogle Cloud とAWSとOracle Cloudを接続してみてみた](https://qiita.com/shirok/items/044a5e9c4c33f7417036)



# ■ Azure：ExpressRoute設定

1) AzureにLogin後[すべてのサービス] > [ネットワーキング] > [ExpressRoute回線]をクリック
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/2cafd5c9-abad-5754-b92c-c3b383ce4b43.png)



2) [ExpressRoute回線の作成]をクリック
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e97f8ace-b0e2-61bd-2dca-acc0663d583a.png)



3) 「ExpressRoute回線の作成」画面で以下のように設定し、[作成]をクリックし作成

    ・回線名：任意の名前を設定
    ・プロバイダー：[Oracle Cloud FastConnect]を選択
    ・ピアリングの場所：[Washington DC]を選択
    ・帯域幅：50Mbps〜10Gbps の範囲から選択
    ・SKUと課金モデル：[制限無]もしくは[従量課金]を選択
    ・場所：（米国)米国東部を選択

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d4e5753c-fe56-391d-bbf3-7aaf204a97aa.png)


4) デプロイ実行中
数分待つと作成され、作成されたExpressRouteをダブルクリック
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/dcd4e554-afd8-1f42-8851-58133e8f3884.png)

5) 作成したExpressRoute画面
　「サービス キー」をコピーします。
　この「サービス キー」を使用してMCRと接続します
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b10e2fce-ea65-8652-f47e-5b7b0aea4b70.png)





# ■ Megaport:MCRとAzure接続
ここからは、MegaportのコンソールでAzureで作成したExpressRouteと接続します

① Services画面
Megaportのコンソールから[Services]を選択し、Azureを接続するMCRアイコンの[Connection]をクリック
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/15971e33-0d67-0e74-14d0-3c94e9024486.png)



② New Connection：Select Type画面
[Cloud]をクリック
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/aaebc818-b3c8-8e05-d164-51b2a60b626c.png)



③ New Connection：Select Port画面
以下のように設定し、[Next]をクリック

    ・Select Provider: [Azure ExpressRoute]アイコンを選択
    ・Microsoft Azure Service Key: Azureの「Express Route」作成で発行された[Service Key]を記入
    ・Choose from available Google Ports: ここでは[Washington DC Primary]を選択、２本目は[Secondary]を選択
    　
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b722dd6e-1625-7506-5628-26d35abca44d.png)




④ New Connection：Connection Details画面
以下のように必要項目を設定し[Next]をクリック

    ・Name your Connection: 接続名を設定
    ・Rate Limit: 作成したMCRの帯域範囲内の帯幅を設定

![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1b720718-2748-5636-a5e5-4db10839f589.png)



⑤ New Connection：MCR A End画面
[Next]をクリック
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/b39895f6-1f44-d424-0d5c-e8ab3556e10e.png)


⑥ New Connection：Summary画面　
　設定項目を確認して、[Add VXC]をクリック
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4adaf7c1-db21-0915-1cdc-71b25f71f932.png)




⑦ Megaport Services画面
Azureとの接続が作成されたことを確認し、左ペインにある[Order]をクリック
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0f96233e-749b-9b78-8161-61993e9df0b8.png)


⑧ Order Services画面
書かれている重要事項を確認し、[Order Now]をクリック
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/de7fbdfd-1fdc-e73b-9e91-3b91dccfd183.png)



⑨ Order Services画面
数分しばらくすると
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a38e6040-beab-6cfb-89e3-9bf65ec9aaa0.png)

アイコンがグリーンとなり開通します
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/74fb76a7-9f1b-22c7-b5ae-71ee53c1c0de.png)


# ■ Azure：ExpressRouteとVNet（Virtual Network)接続
VNet内のインスタンスがExpressRouteを通るようExpressRouteとVNetを接続します

## ● 仮想ネットワークゲートウェイ作成

VNetとExpressRouteを接続するためのゲートウェイを作成します

1) [全てのサービス] > [ネットワーキング] > [仮想ネットワークゲートウェイ]をクリック
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e45e05fa-1536-a29e-17ba-3aae7680cdae.png)


2) [仮想ネットワークゲートウェイの作成]をクリック
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d93a3d96-8065-bcf2-7710-66553b9b8629.png)



3) 仮想ネットワーク ゲートウェイの作成画面
以下必要内容を設定し、[確認および作成]をクリック

    ・地域：（米国)米国西部を選択
    ・ゲートウェイの種類：[ExpressRoute]を選択
    ・SKU：必要なSKUを選択
    ・仮想ネットワーク：付属させる仮想ネットワークを選択
    ・ゲートウェイサブネットのアドレス範囲：選択した仮想ネットワーク内に配置するための専用サブネットを設定
    ・パブリックIPアドレス：作成する仮想ネットワーク ゲートウェイのIPを設定
    ・パブリックIPアドレス名：任意の名前を設定

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0ddca5b0-a41a-3db3-0c73-f3904aaed497.png)


4) 確認および作成画面
設定した内容を確認して[作成]をクリック

![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d6c433f1-5cf0-0e34-0613-8225a4cc7621.png)


5)仮想ネットワーク ゲートウェイ画面
作成されたことを確認

![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/41c9682d-f2f7-4248-4504-b3b6e4f8f468.png)


## ● ExpressRouteとVNet(仮想ネットワーク)を接続

ExpressRouteとVNetのデータセンターを接続します

1) [すべてのサービス] > [ネットワーキング] > [接続]をクリック
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/390f35a6-64e3-720c-9e99-c89148c65269.png)


2) 接続画面
［接続の作成]をクリック
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/dc887bc9-25f7-4cfe-4f00-04c3790393ce.png)


3) 接続:[基本]画面
以下のように設定

    ・接続の種類: [ExpressRoute]を選択
    ・サブスクリプション: [従量課金]を選択
    ・リソースグループ: 接続するvNETのグループを選択
    ・場所: [米国]米国西部を選択

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1a248c22-a7a2-537d-c26e-690ed3012e32.png)


4) 接続:[設定]画面
以下のように設定

    ・仮想ネットワークゲートウェイ：作成したExpressRoute用の仮想ネットワークゲートウェイを選択
    ・ExpressRoute回線：作成したExpressRoute回線を選択
    ・接続名：任意の名前を設定
    ・ルーティングの重み：他NWとは接続しないため、[0]を設定

![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/33618f94-3e70-6549-b841-6bdab0dcc327.png)



5) 接続:概要画面
　設定した内容を確認し、[OK]をクリック
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/1ddaf323-6548-0637-bba8-d9c4a5f2c690.png)


6) 作成した接続の状態が「成功」になれば完了
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/fb37cb13-be16-11ac-bf7c-383b96734a88.png)


# ■ Azure：セキュリティとルート設定

## ● ネットワーク セキュリティ グループ設定
以下のように各CLoudとの通信が受信/送信セキュリティ規則が通るように設定
今回は次のPrivate IPを設定します

    10.0.0.0/8
    172.16.0.0/12

<img width="1437" alt="02_SL.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9246f621-7bc3-59ee-ce71-cfc5e08fd614.png">


## ● ルートテーブル設定
Azureと対向の各Cloud間を通すルートを設定
ここでは、次のPrivate IPを設定しています

    10.0.0.0/8
    172.16.0.0/12
　
<img width="1439" alt="01_RT.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/44010aa5-e15d-9fdf-389b-ba70f82bc0c9.png">





# ■ 各Cloudのインスタンス間導通確認
Azureと各Cloudが導通するか確認します
Cloudのファイアウォールだけでなく、各コマンドが通るようOSのファイアーウォールも事前に通るよう設定しておきまます

## ● Azure-OCI
① traceroute：経路確認

```shell
[root@azure-inst01 azure]# traceroute 10.10.0.2
    traceroute to 10.10.0.2 (10.10.0.2), 30 hops max, 60 byte packets
    1  172.20.1.4 (172.20.1.4)  64.149 ms  64.132 ms  64.108 ms
    2  169.254.195.161 (169.254.195.161)  64.252 ms  64.232 ms  64.209 ms
    3  * * *
    4  10.10.0.2 (10.10.0.2)  64.339 ms  64.310 ms  64.264 ms
```

② ping：疎通確認
pingが通ることを確認

```shell
[root@azure-inst01 azure]# ping 10.10.0.2 -c 3
    PING 10.10.0.2 (10.10.0.2) 56(84) bytes of data.
    64 bytes from 10.10.0.2: icmp_seq=1 ttl=60 time=71.8 ms
    64 bytes from 10.10.0.2: icmp_seq=2 ttl=60 time=70.5 ms
    64 bytes from 10.10.0.2: icmp_seq=3 ttl=60 time=71.9 ms

    --- 10.10.0.2 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    rtt min/avg/max/mdev = 70.546/71.447/71.955/0.638 ms
```



③ iperf3：帯域確認
今回は100Mで設定しているので、100M程度あることを確認

```shell
[root@azure-inst01 azure]# iperf3 -c 10.10.0.2
    Connecting to host 10.10.0.2, port 5201
    [  4] local 172.20.0.4 port 44546 connected to 10.10.0.2 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec  22.7 MBytes   191 Mbits/sec    0   6.01 MBytes
    [  4]   1.00-2.00   sec  45.0 MBytes   377 Mbits/sec    0   6.01 MBytes
    [  4]   2.00-3.00   sec  46.2 MBytes   388 Mbits/sec    0   6.01 MBytes
    [  4]   3.00-4.00   sec  26.2 MBytes   220 Mbits/sec  2318    687 KBytes
    [  4]   4.00-5.00   sec  10.0 MBytes  83.9 Mbits/sec  3892    742 KBytes
    [  4]   5.00-6.00   sec  12.5 MBytes   105 Mbits/sec  227    662 KBytes
    [  4]   6.00-7.00   sec  8.75 MBytes  73.4 Mbits/sec   19    592 KBytes
    [  4]   7.00-8.00   sec  8.75 MBytes  73.4 Mbits/sec    0    626 KBytes
    [  4]   8.00-9.00   sec  10.0 MBytes  83.9 Mbits/sec    0    649 KBytes
    [  4]   9.00-10.00  sec  10.0 MBytes  83.9 Mbits/sec    0    660 KBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.00  sec   200 MBytes   168 Mbits/sec  6456             sender
    [  4]   0.00-10.00  sec   197 MBytes   166 Mbits/sec                  receiver
```


④ ssh接続確認
sshでAzureインスタンスへ接続できることを確認

```shell
[root@azure-inst01 azure]# ssh -i id_rsa opc@10.10.0.2 hostname
    oci-inst01
```

## ● Azure-GCP
① traceroute：経路確認
OCIのBGP IP(192.168.255.1)の経路で疎通していることを確認

```shell
[root@azure-inst01 azure]# traceroute 10.150.0.3
    traceroute to 10.150.0.3 (10.150.0.3), 30 hops max, 60 byte packets
    1  172.20.1.4 (172.20.1.4)  64.319 ms  64.308 ms  64.283 ms
    2  169.254.195.161 (169.254.195.161)  64.261 ms  64.237 ms  64.214 ms
    3  * * *
    4  10.150.0.3 (10.150.0.3)  66.902 ms  66.887 ms  66.858 ms
```


② ping：疎通確認
pingが通ることを確認

```shell
[root@azure-inst01 azure]# ping 10.150.0.3 -c 3
    PING 10.150.0.3 (10.150.0.3) 56(84) bytes of data.
    64 bytes from 10.150.0.3: icmp_seq=1 ttl=61 time=72.2 ms
    64 bytes from 10.150.0.3: icmp_seq=2 ttl=61 time=64.3 ms
    64 bytes from 10.150.0.3: icmp_seq=3 ttl=61 time=72.0 ms

    --- 10.150.0.3 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2002ms
    rtt min/avg/max/mdev = 64.399/69.572/72.270/3.658 ms
```


③ iperf3：帯域確認
今回は100Mで設定しているので、100M程度あることを確認

```shell
[root@azure-inst01 azure]# iperf3 -c 10.150.0.3
    Connecting to host 10.150.0.3, port 5201
    [  4] local 172.20.0.4 port 33394 connected to 10.150.0.3 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec  22.8 MBytes   191 Mbits/sec    0   6.00 MBytes
    [  4]   1.00-2.00   sec  35.0 MBytes   294 Mbits/sec  1431    493 KBytes
    [  4]   2.00-3.00   sec  12.5 MBytes   105 Mbits/sec  3938    732 KBytes
    [  4]   3.00-4.00   sec  11.2 MBytes  94.4 Mbits/sec  235    776 KBytes
    [  4]   4.00-5.00   sec  10.0 MBytes  83.9 Mbits/sec    7    586 KBytes
    [  4]   5.00-6.00   sec  8.75 MBytes  73.4 Mbits/sec    0    626 KBytes
    [  4]   6.00-7.00   sec  10.0 MBytes  83.9 Mbits/sec    0    651 KBytes
    [  4]   7.00-8.00   sec  10.0 MBytes  83.9 Mbits/sec    0    665 KBytes
    [  4]   8.00-9.00   sec  10.0 MBytes  83.9 Mbits/sec    0    670 KBytes
    [  4]   9.00-10.00  sec  8.75 MBytes  73.4 Mbits/sec    0    672 KBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.00  sec   139 MBytes   117 Mbits/sec  5611             sender
    [  4]   0.00-10.00  sec   137 MBytes   115 Mbits/sec                  receiver

    iperf Done.
```


④ ssh接続確認
sshでGCPインスタンスへ接続できることを確認

```shell
[root@azure-inst01 azure]# ssh -i GCP_id_rsa gcp@10.150.0.3 hostname
    gcp-inst01
```


## ● Azure-AWS
① traceroute：経路確認
BGP IP(169.254.28.57)の経路で疎通していることを確認

```shell
[root@azure-inst01 azure]# traceroute 172.31.0.10
    traceroute to 172.31.0.10 (172.31.0.10), 30 hops max, 60 byte packets
    1  172.20.1.4 (172.20.1.4)  64.072 ms  64.073 ms  64.048 ms
    2  169.254.195.161 (169.254.195.161)  65.193 ms  65.177 ms  65.153 ms
    3  169.254.28.57 (169.254.28.57)  66.993 ms  66.975 ms  73.236 ms
    4  172.31.0.10 (172.31.0.10)  65.534 ms  65.482 ms  65.440 ms
```

② ping：疎通確認
pingが通ることを確認

```shell
[root@azure-inst01 azure]# ping 172.31.0.10 -c 3
    PING 172.31.0.10 (172.31.0.10) 56(84) bytes of data.
    64 bytes from 172.31.0.10: icmp_seq=1 ttl=244 time=72.2 ms
    64 bytes from 172.31.0.10: icmp_seq=2 ttl=244 time=72.1 ms
    64 bytes from 172.31.0.10: icmp_seq=3 ttl=244 time=65.9 ms

    --- 172.31.0.10 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2002ms
    rtt min/avg/max/mdev = 65.985/70.152/72.282/2.954 ms
```

③ iperf3：帯域確認
今回は100Mで設定しているので、100M程度あることを確認

```shell
[root@azure-inst01 azure]# iperf3 -c 172.31.0.10
    Connecting to host 172.31.0.10, port 5201
    [  4] local 172.20.0.4 port 43068 connected to 172.31.0.10 port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec  10.1 MBytes  84.8 Mbits/sec  508   1.45 MBytes
    [  4]   1.00-2.00   sec  11.2 MBytes  94.4 Mbits/sec  257    777 KBytes
    [  4]   2.00-3.00   sec  12.5 MBytes   105 Mbits/sec    0    825 KBytes
    [  4]   3.00-4.00   sec  12.5 MBytes   105 Mbits/sec    0    854 KBytes
    [  4]   4.00-5.00   sec  12.5 MBytes   105 Mbits/sec    0    873 KBytes
    [  4]   5.00-6.00   sec  12.5 MBytes   105 Mbits/sec    0    881 KBytes
    [  4]   6.00-7.00   sec  13.8 MBytes   115 Mbits/sec    0    884 KBytes
    [  4]   7.00-8.00   sec  12.5 MBytes   105 Mbits/sec    0    884 KBytes
    [  4]   8.00-9.00   sec  13.8 MBytes   115 Mbits/sec    0    884 KBytes
    [  4]   9.00-10.00  sec  12.5 MBytes   105 Mbits/sec    0    890 KBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.00  sec   124 MBytes   104 Mbits/sec  765             sender
    [  4]   0.00-10.00  sec   122 MBytes   102 Mbits/sec                  receiver
```

④ ssh接続確認
sshでAWSインスタンスへ接続できることを確認

```shell
[root@azure-inst01 azure]# ssh -i AWS_id_rsa ec2-user@172.31.0.10 hostname
    ip-172-31-0-10.ec2.internal
```


# ■ 参考
・[Megaport 日本](https://www.megaport.jp/)
・[Megaport](https://www.megaport.com/)
・[Megaport DCロケーション](https://www.megaport.com/megaport-enabled-locations/)
・[Megaport価格 | Megaport Networks](https://www.megaport.com/pricing/)
・[MCR – Oracle via FastConnect (OCI)](https://knowledgebase.megaport.com/megaport-cloud-router/mcr-oracle-oci-fastconnect/)
・[Connect to Oracle Cloud | Megaport Networks](https://www.megaport.com/services/oracle-cloud-fastconnect/)
・[Connect to Amazon Web Services | Megaport Networks](https://www.megaport.com/services/amazon-web-services/)
・[Connect to Google Cloud Platform | Megaport Networks](https://www.megaport.com/services/google-cloud-partner-interconnect/)
・[Connect to Microsoft Azure | Megaport Networks](https://www.megaport.com/services/microsoft-expressroute/)