AzureとOCIを接続するために、Azureのサイト間(S2S) VPNと、OCI上に立てたWindows ServerのRouting and Remote Access Service (RRAS)を使ってみました。
ただし、Azure VM上ではRRASをサポートしていないことを明示していますので、この構成もサポートされない可能性があることにご注意ください。
構成図
パフォーマンス
[azureuser@Azure-Linux ~]$ ping 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=63 time=10.9 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=63 time=10.4 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=4 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=5 ttl=63 time=10.5 ms
64 bytes from 10.0.1.2: icmp_seq=6 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=7 ttl=63 time=10.7 ms
64 bytes from 10.0.1.2: icmp_seq=8 ttl=63 time=10.8 ms
64 bytes from 10.0.1.2: icmp_seq=9 ttl=63 time=10.9 ms
64 bytes from 10.0.1.2: icmp_seq=10 ttl=63 time=11.1 ms
64 bytes from 10.0.1.2: icmp_seq=11 ttl=63 time=10.8 ms
64 bytes from 10.0.1.2: icmp_seq=12 ttl=63 time=10.8 ms
^C
--- 10.0.1.2 ping statistics ---
12 packets transmitted, 12 received, 0% packet loss, time 11017ms
rtt min/avg/max/mdev = 10.454/10.796/11.132/0.179 ms
[azureuser@Azure-Linux ~]$
- 1本計測
[azureuser@Azure-Linux ~]$ iperf3 -c 10.0.1.2
Connecting to host 10.0.1.2, port 5201
[ 4] local 192.168.0.4 port 54122 connected to 10.0.1.2 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 13.8 MBytes 116 Mbits/sec 0 825 KBytes
[ 4] 1.00-2.00 sec 15.3 MBytes 128 Mbits/sec 9 680 KBytes
[ 4] 2.00-3.00 sec 15.5 MBytes 130 Mbits/sec 0 760 KBytes
[ 4] 3.00-4.00 sec 13.7 MBytes 115 Mbits/sec 0 816 KBytes
[ 4] 4.00-5.00 sec 14.5 MBytes 122 Mbits/sec 34 616 KBytes
[ 4] 5.00-6.00 sec 15.3 MBytes 128 Mbits/sec 0 654 KBytes
[ 4] 6.00-7.00 sec 8.73 MBytes 73.2 Mbits/sec 0 679 KBytes
[ 4] 7.00-8.00 sec 16.1 MBytes 135 Mbits/sec 0 694 KBytes
[ 4] 8.00-9.00 sec 15.9 MBytes 133 Mbits/sec 0 699 KBytes
[ 4] 9.00-10.00 sec 14.7 MBytes 123 Mbits/sec 0 700 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 144 MBytes 120 Mbits/sec 43 sender
[ 4] 0.00-10.00 sec 141 MBytes 119 Mbits/sec receiver
iperf Done.
[azureuser@Azure-Linux ~]$
- 2本同時計測
[azureuser@Azure-Linux ~]$ iperf3 -c 10.0.1.2
Connecting to host 10.0.1.2, port 5201
[ 4] local 192.168.0.4 port 35698 connected to 10.0.1.2 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 6.49 MBytes 54.4 Mbits/sec 0 392 KBytes
[ 4] 1.00-2.00 sec 7.14 MBytes 59.9 Mbits/sec 2 659 KBytes
[ 4] 2.00-3.00 sec 4.66 MBytes 39.1 Mbits/sec 0 662 KBytes
[ 4] 3.00-4.00 sec 4.78 MBytes 40.1 Mbits/sec 0 667 KBytes
[ 4] 4.00-5.00 sec 4.84 MBytes 40.6 Mbits/sec 3 668 KBytes
[ 4] 5.00-6.00 sec 3.66 MBytes 30.7 Mbits/sec 3 477 KBytes
[ 4] 6.00-7.00 sec 2.48 MBytes 20.8 Mbits/sec 1 533 KBytes
[ 4] 7.00-8.00 sec 3.95 MBytes 33.2 Mbits/sec 1 537 KBytes
[ 4] 8.00-9.00 sec 2.54 MBytes 21.3 Mbits/sec 0 540 KBytes
[ 4] 9.00-10.00 sec 4.07 MBytes 34.1 Mbits/sec 1 541 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 44.6 MBytes 37.4 Mbits/sec 11 sender
[ 4] 0.00-10.00 sec 43.1 MBytes 36.1 Mbits/sec receiver
iperf Done.
[azureuser@Azure-Linux ~]$
[azureuser@Azure-Linux2 ~]$ iperf3 -c 10.0.1.3
Connecting to host 10.0.1.3, port 5201
[ 4] local 192.168.0.5 port 50236 connected to 10.0.1.3 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 2.71 MBytes 22.7 Mbits/sec 0 215 KBytes
[ 4] 1.00-2.00 sec 3.83 MBytes 32.2 Mbits/sec 0 374 KBytes
[ 4] 2.00-3.00 sec 4.01 MBytes 33.6 Mbits/sec 19 306 KBytes
[ 4] 3.00-4.00 sec 3.01 MBytes 25.2 Mbits/sec 0 342 KBytes
[ 4] 4.00-5.00 sec 3.83 MBytes 32.2 Mbits/sec 1 356 KBytes
[ 4] 5.00-6.00 sec 5.31 MBytes 44.5 Mbits/sec 0 366 KBytes
[ 4] 6.00-7.00 sec 4.78 MBytes 40.1 Mbits/sec 1 373 KBytes
[ 4] 7.00-8.00 sec 5.84 MBytes 49.0 Mbits/sec 0 382 KBytes
[ 4] 8.00-9.00 sec 5.37 MBytes 45.0 Mbits/sec 0 392 KBytes
[ 4] 9.00-10.00 sec 5.60 MBytes 47.0 Mbits/sec 0 401 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 44.3 MBytes 37.2 Mbits/sec 21 sender
[ 4] 0.00-10.00 sec 43.4 MBytes 36.4 Mbits/sec receiver
iperf Done.
[azureuser@Azure-Linux2 ~]$
- VPNを通さないパブリック同士
[azureuser@Azure-Linux2 ~]$ iperf3 -c 168.138.42.98
Connecting to host 168.138.42.98, port 5201
[ 4] local 192.168.0.5 port 38456 connected to 168.138.42.98 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 86.6 MBytes 726 Mbits/sec 990 1.19 MBytes
[ 4] 1.00-2.00 sec 52.5 MBytes 440 Mbits/sec 287 482 KBytes
[ 4] 2.00-3.00 sec 57.5 MBytes 482 Mbits/sec 0 567 KBytes
[ 4] 3.00-4.00 sec 66.2 MBytes 556 Mbits/sec 0 650 KBytes
[ 4] 4.00-5.00 sec 58.8 MBytes 493 Mbits/sec 113 530 KBytes
[ 4] 5.00-6.00 sec 61.2 MBytes 514 Mbits/sec 0 614 KBytes
[ 4] 6.00-7.00 sec 51.2 MBytes 430 Mbits/sec 48 505 KBytes
[ 4] 7.00-8.00 sec 58.8 MBytes 493 Mbits/sec 0 587 KBytes
[ 4] 8.00-9.00 sec 67.5 MBytes 566 Mbits/sec 66 469 KBytes
[ 4] 9.00-10.00 sec 53.8 MBytes 451 Mbits/sec 0 549 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 614 MBytes 515 Mbits/sec 1504 sender
[ 4] 0.00-10.00 sec 611 MBytes 513 Mbits/sec receiver
iperf Done.
[azureuser@Azure-Linux2 ~]$
計測は、2020年11月15日(日) 午後のものです。
セットアップ
Azure
Azure S2S VPN Gateway
Docsの手順に従ってAzure側をセットアップします。
VPN GatewayのSKUで帯域幅が決まるので、今回は1.25 GbpsのGeneration2 VpnGw2を選択しましたが、上のパフォーマンスを見るとVpnGw1でもよいかもしれません。
ローカルネットワークゲートウェイの作成はOCIのパートを作成してから行います。
OCI
VCN
今回は簡単に、インターネット接続性を持つVCNをウイザードで作成します。
Windows Server VM
Windows Server 2016で作成します。デフォルトのシェイプを選択します。
2020年11月15日現在、Windows Server 2019の"Windows-Server-2019-Standard-Edition-VM-E3-2020.10.20-0"をイメージを使うと、RRASの設定でエラーとなることが多いようなので、Windows Server 2016を今回は使っています。
ネットワークはパブリックサブネットに接続します。
リモートデスクトップでつなぐため、パブリックサブネットのセキュリティリスト、イングレスにRDPを追加します。この時、接続元として利用しているIPアドレスを指定するなどしてもよいと思います。
リモートデスクトップで接続したら、パスワードを設定し、ネットワーク探索はNoで設定します。
RRAS
インストール
サーバーマネージャーからAdd Roles and Featuresを起動します。
設定
サーバーマネージャーからRouting and Remote Accessを起動します。
Azure VNetのアドレス空間
ルーティング設定
仮想NICでのパケット転送許可 (自分のものでないパケットも送受信可能にする)
ルート表
パブリックサブネット
プライベートサブネット
セキュリティリスト
パブリックサブネット
プライベートサブネット
Azure
接続の作成
Docsの手順に従ってローカルネットワークゲートウェイ、およびVPN接続を作成します。接続するIPアドレスにOCI側に立てたWindows Server RRASのパブリックIPアドレス、アドレス空間にOCIのVCNのネットワークを指定します。
接続を作成する際、共有キーを指定して、IKEv2であることを確認して作成します。
OCI
RRAS
接続設定
接続
接続確認
問題なくつながると、下記のようにステータスがConnected
に替わります。
Azure
接続確認
測定用VM
Azure、OCIそれぞれにOracle LinuxのVMを立てて、こちらの手順で計測環境をセットアップします。
考察
パフォーマンス
Azure VPN Gatewayのパフォーマンスについては、Docsに解説があります。
これによると、IPsec 暗号化と整合性のアルゴリズムがスループットに大きく影響を与えていることがわかります。
Windows Server RRASのポリシーを調べてみると、下記のものが使われているようです。(これ以外を指定すると、RRASがポリシーエラーでつながりません)
iperf3を実行中のRRASのCPU
設定
OCIでIPSecパケットのイングレスの設定をしなくてもつながっています。