1. はじめに

Azureを利用するにあたって逃れられないのが仮想ネットワーク(VNet)の存在です。IaaSの仮想マシンのみならず、一部のPaaSはVNet上にデプロイされます。
Azureの利用用途が拡大し、個々の利用目的で作成した仮想ネットワーク間で通信を行う必要が出てくることがあるかと思います。しかし、それぞれの仮想ネットワークは独立しているため、通常では互いに通信ができません。また、異なるリージョンに作成した仮想ネットワーク同士を接続したいといったケースも考えられます。
そのような場合、どのように仮想ネットワーク間の通信を実現したらよいのでしょうか。本稿ではAzureの仮想ネットワーク同士を接続する方法について紹介していきます。

1.1. Azureの仮想ネットワーク(VNet)

VNetは割り当てられたIPアドレス空間を元に1つ以上のサブネットに分割されます。同一VNet内のサブネット間での通信は自動的にルーティングされるため、単一のVNetでは経路制御を意識せずともネットワーク通信が行えます。
VNetはプライベートなアドレス空間をもつため、デプロイされた仮想マシンは外のネットワークとプライベートアドレスで通信を行うことはできません。前回の記事ではオンプレ拠点とAzureの接続について紹介しました。3つの接続方式はどれもプライベートなネットワーク間での通信を実現できます。

前回の記事:Azureとオンプレミス拠点の接続方法解説!ExpressRouteの紹介

 


2. VNetの接続方式

VNet同士を接続する方式には以下の4つの方法があります。

  • S2S接続(Site-to-Site)
  • V2V接続(VNet-to-VNet)
  • VNetピアリング
  • グローバルVNetピアリング

2.1. S2S接続(Site-to-Site)

S2S接続はオンプレ拠点との接続方式で紹介したものと同じものです。

 

オンプレの場合、拠点側のゲートウェイが持つグローバルIPとオンプレ側のアドレス空間をローカルネットワークゲートウェイに指定することで接続できます。VNetの場合でも同様で、ローカルネットワークゲートウェイに対向のVNetのVPNゲートウェイのパブリックアドレスと、アドレス空間を指定し、他方のVNetをローカルサイトとしてS2S接続を構築可能です。
この接続方法では、接続先のネットワーク情報を静的にしているため、対向VNetのアドレス空間が変更された場合は、手動でローカルネットワークゲートウェイの更新を行う必要があります。

2.2. V2V接続(VNet-to-VNet)

V2V接続はVNet間接続とも呼ばれます。必要なリソースはVPNゲートウェイのみで、実装方法はS2S接続と似ています。どちらの接続もIPsec/IKEのVPNトンネルが確立され、安全な通信機能を提供します。

V2V接続の場合には、ローカルネットワークゲートウェイは自動で作成され、ユーザーが意識することはありません。一方のVNetのアドレス空間が変更されたときには、もう一方のVNetはルーティング情報を自動的に認識し、更新します。このため、V2V接続はS2S接続よりも作成と管理が楽です。
また、V2V接続の場合にはAzureのバックボーンネットワークを利用するため、同じリージョン内であればデータ転送量がかかりません。

参考:VPN Gateway の価格

2.3. VNetピアリング

VNetピアリングはVPNゲートウェイを必要とせずVNet同士を接続できる方法です。VNet同士での相互通信を実現します。通常VNetピアリングではトラフィックの転送は行わないため、通信したいVNetが複数あるときは個別にピアリングを構成する必要があります。

同一リージョン内のVNet同士で構成するVNetピアリングの場合は、どちらかのVNet内にVPNゲートウェイが存在すれば、リモートゲートウェイ転送を有効化する設定を行うことで、トラフィックの転送を行うことができます。
また、通信はAzureバックボーンネットワークを利用するため、高速な伝送が可能です。V2V接続とは違い、同一リージョン内であっても送受信で料金が発生してしまいますが、VPNゲートウェイがボトルネックとならずに高速通信が可能です。

参考:Virtual Networkの価格

2.4. グローバルVNetピアリング

グローバルVNetピアリングは異なるリージョンのVNet間を接続できる方式です。VNetピアリングと同様でVPNゲートウェイなしで相互接続を構成できます。ただし、グローバルVNetではリモートゲートウェイ転送を設定できないため、ピアリング先の仮想ネットワークとの通信のみとなります。
この場合も通信にはAzureのバックボーンネットワークを利用し、VPNゲートウェイも存在しないため、V2V接続よりも高速な接続が可能です。

2.5 VNetピアリングによる接続

VNetピアリングはVPNゲートウェイを必要とせずVNet同士を接続できる便利な機能ですが、制約もあります。VNetピアリングではピアリングされたVNet間でしか通信は行えません。例えば、先の図のVNet1からVNet5への通信といったように、VNetを跨いだ通信は実現できません。
ピアリング先のVNetにVPNゲートウェイがある場合、ピアリング構成時に[リモートゲートウェイを使用する]を有効にし、ピアリング先のVNetからのピアリング構成で[ゲートウェイ転送を許可する]を有効化すると、VPNゲートウェイでトラフィックの転送を行うことが可能です。
ただし、グローバルピアリングの場合はリモートゲートウェイ転送を利用することはできません。また、リモートゲートウェイを使用するピアリングはVNetごとに一つしか指定できず、自身がVPNゲートウェイを持つVNetはピアリング時にリモートゲートウェイの使用を選択できません。


3. V2V接続とVNetピアリングのスループット

今回は東日本リージョンに2つのVNetを作成し、その上に仮想マシンを作成してV2V接続とVNetピアリングの場合のスループットを検証してみました。
スループットの調査方法は以下のページを参考にNTTTCPというツールで計測しました。

VM のネットワーク スループットのテスト

3.1. V2V接続計測

検証構成は以下の通りです。

  • VMサイズ:F8v2(vCPU: 8 core, RAM: 16 GB)
  • VPNゲートウェイSKU:VpnGw2(最大 1 Gbps)
  • 東日本リージョン内でV2V接続

ついでに経路も確認してみましょう。
VMが保持する経路についてはVMに関連付けられているNICのメニューから[有効なルート]をクリックします。VPNゲートウェイ同士が接続されていない状態では以下のような経路情報となっています。

この状態ではお互いのアドレス情報を持っていないため通信できません。
これがV2V接続されると以下のような経路情報となります。

対向VNetのアドレス情報が表示され、ネクストホップは対向VNetのVPNゲートウェイが持つパブリックIPとなっています。この状態になると疎通が取れるようになります。
以下のように計測しました。

受信側コマンド:ntttcp -r -m 16,*,10.20.0.4 -t 20
送信側コマンド:ntttcp -s -m 16,*,10.20.0.4 -t 20スループット:875.736 Mbps

VPNゲートウェイのSKUごとのスループットはそれぞれ以下の通りなので、実測値として正しい範囲の値だと考えられます。

  • VpnGw1: 650 Mbps
  • VpnGw2: 1 Gbps
  • VpnGw3: 1.25 Gbps

3.2. VNetピアリング計測

では次に、VNetピアリング構成での計測を行います。試しに先の環境のままVNetピアリングを構成してみました。以下のような環境になります。

先ほどと同じように経路情報を確認してみると以下のようになりました。

VPNゲートウェイにネクストホップが向いていた経路情報が消え、代わりにVNetピアリングという種類の経路情報が現れました。V2Vでの経路情報よりもVNetピアリングでの経路情報の方が優先されるようです。

先ほどと同様に以下のように計測しました。

受信側コマンド:ntttcp -r -m 16,*,10.20.0.4 -t 20
送信側コマンド:ntttcp -s -m 16,*,10.20.0.4 -t 20スループット:3.1822 Gbps(3258.576 Mbps)

文字通り桁違いの結果となりました。約4倍のスループットです。どちらも高速なAzureのバックボーンネットワークを利用していますが、やはりV2V接続ではVPNゲートウェイがボトルネックとなっていると考えられます。VNetピアリングでは、仮想マシンのサイズをより高性能なものに変えればさらに速度が出るかもしれません。


4. おわりに

今回はVNetの接続方法と、V2V接続・VNetピアリングのスループット比較を行いました。実測値では転送速度でVNetピアリングに分がありましたが、直接接続されるVNet同士でないと通信できないなど、トポロジー上の制約があるのも事実です。オンプレ拠点との接続時には、トラフィックの種類によって宛先を制御したい場合もあります。経路情報の制御にはUDRやBGPなどの要素も絡んできます。よって、リージョンや接続する拠点の種類、必要な帯域幅などを考慮したうえで、Azureの仮想ネットワークを設計する必要があります。


この記事を読んだ方へのオススメコンテンツはこちら


この記事を書いた人

曽根悠斗
曽根悠斗
Azureやってるエンジニア
NWエンジニア⇒クラウドエンジニアへスキルアップし、
IaaSだけでなくAzureの各種サービスを幅広く扱えるように修行中
好きなAzureのサービスはAzure ADとNetwork Watcher
WVDやGlobal Reachなど新しいサービスを追わせてもらっています
真のAzureエキスパートになる日を目指して