Azureリソースの優先ルーティング設定について

2020年5月19日、Microsoft Azureのアップデートで[ルーティングの優先順位を使用した新しいネットワーク層のプレビューの提供が開始されました。](https://azure.microsoft.com/ja-jp/updates/azure-routing-preference-is-now-available-in-preview/)

・Microsoftグローバルネットワーク経由での既定のルーティング
・パブリックインターネットルーティング(<font color="orange">New!</font>)
この2つのどちらかを優先ルーティングとしてパブリックIP作成時に選択し、各種リソースに設定することができます。
※既定では、すべての Azure サービスについて、トラフィックは Microsoft グローバル ネットワーク経由でルーティングされます。

各ルーティングをもう少し具体的に説明した文章が以下になります。

**Microsoft グローバル ネットワーク経由での既定のルーティング:**
ユーザーからのトラフィックは、ユーザーに最も近い場所で受け取られ、Microsoft グローバル ネットワーク上で Azure のリソースにルーティングされます。Azure からのリターン トラフィックは同じパスをたどり、ユーザーに最も近い Microsoft ネットワークから出ていきます。トラフィックは可能な限り長い時間 Microsoft ネットワーク上に保持されるので、ホップ数を最小限に抑え、パフォーマンスと可用性を最大限に高めることができます (<font color="Red">コールド ポテト</font>)。

**パブリック インターネット ルーティング:**
ユーザーからのトラフィックは、パブリック インターネット (ISP ネットワーク) を通過し、アクセスされたサービスをホストしているリージョンに最も近い Microsoft ネットワークに入ります。Azure からのリターン トラフィックは、同じリージョン内の Microsoft ネットワークから出ていき、パブリック インターネット ルートをユーザーに送り返します。トラフィックは、パブリック インターネット (<font color="Red">ホット ポテト ルーティング</font>) 上で大半の時間を費やします。パブリック インターネット経由でのエンドツーエンドのネットワーク パフォーマンスは、主に ISP とネットワーク プロバイダーのパフォーマンスに左右されます。

この文章だけだとなかなかイメージが掴めない方も多いのではないでしょうか。
コールドポテト、ホットポテトというルーティングに関する馴染みのない用語も出てきたのでそのあたりも調べながら読み解いてみました。


##コールドポテトルーティングとは
トラフィックを送信する際、トラフィックを次のネットワークに送る前に可能な限り留めておく方法。
今回の例で言うと、Azureリソースからユーザーへのトラフィックは、ISPネットワークに渡される前にできるだけMicrosoftのグローバルネットワークに留まるというルーティング方法になります。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641192/3c4b5c81-47f4-6e10-0920-fed8005c2056.png)

例えば、日本のユーザーがUSのAzureリソースにアクセスする際は、日本にあるMicrosoftのPOPからMicrosoftのグローバルネットワークに入りそのままUSまで通信するイメージです。



##ホットポテトルーティングとは
トラフィックを送信する際、なるべく早く次のネットワークに送ってしまう方法。揚げたてのポテトは熱いので早めに相手に渡してしまおうという意味が込められているらしい。
今回の例で言うと、Azureリソースからユーザーへのトラフィックは、Microsoftのグローバルネットワークからできるだけ早くISPネットワークに受け渡すというルーティング方法になります。
![無題b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641192/c4acecd1-c7d0-4bd3-f909-e89b624f9de9.png)

例えば、日本のユーザーがUSのAzureリソースにアクセスする際は、USにあるMicrosoftのPOPまではISPネットワークを経由し、そこからMicrosoftのグローバルネットワークに入るイメージです。


##まとめ
優先ルーティング設定の違いを理解するうえで必要な視点は
**①誰から見てポテト（トラフィック）が熱々なのか。**
**②ネットワークのパフォーマンスを最大限管理するのはどちらなのか（MicrosoftかISP）。**
だと思います。

①に関しては、ユーザーから見ての話ではなく、Azureリソースから見たときの話です。Azureリソースから送信されるトラフィックが熱々なうちにISPネットワークに渡すのがホットポテト、逆になるべくMicrosoftグローバルネットワーク内で経由させて冷ましてからISPネットワークに渡すのがコールドポテトです。

②に関しては、早く渡せばそれだけトラフィックがMicrosoftグローバルネットワークに滞在する時間が長くなるので、Microsoftがパフォーマンスを最大限管理できる（Microsoft グローバル ネットワーク経由での既定のルーティング/コールドポテト）。
逆になるべくISPネットワークにトラフィックを留める場合、パフォーマンスはISPに依存するということになります（パブリック インターネット ルーティング/ホットポテト）。
以下の通り、データ転送料金はパブリック インターネット ルーティングの方がわずかに安くなっています。

**Microsoft グローバル ネットワーク経由での既定のルーティング時の送信データ転送料金**
**Zone1**
![zone1price.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641192/1650d5fb-0d69-bfea-a9ac-4622b2348aa4.png)

**Zone2**
![zone2price.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641192/cbd07009-286c-0cad-74a1-0ed002fd2140.png)

**パブリック インターネット ルーティング時の送信データ転送料金**
![pnwprice.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641192/2dcbe03d-2d2d-3ab1-e527-f89bd44df586.png)



このことから今回プレビュー追加されたパブリック インターネット ルーティングは**「Microsoftのバックボーンネットワークにトラフィックが滞在する時間が短くなってその分価格も抑えられるけど品質もMicrosoftの範囲外になりますよ」**な方法と言い換えられるかもしれません。



##参考

ちなみに2020年6月4日現在、Azureリソースに優先ルーティングを設定する方法は以下の2通りのようです。

・[Azure PowerShell を使用して VM 用にルーティング優先設定を構成する](https://docs.microsoft.com/ja-jp/azure/virtual-network/configure-routing-preference-virtual-machine-powershell)
・[Azure CLI を使用して VM 用にルーティング優先設定を構成する](https://docs.microsoft.com/ja-jp/azure/virtual-network/configure-routing-preference-virtual-machine-cli)

Azureでの優先ルーティングの挙動についてはまた別の機会に検証できればと思います。