Azure の バックボーン通信について

こんにちは駆け出しアーキテクトのやまぱんです。
本記事は、[Microsoft Azure Tech Advent Calendar 2023](https://qiita.com/advent-calendar/2023/microsoft-azure-tech) の 12/16 の投稿です。

私は MS に入って、また Azureを触るようになって 4 年ほど経ちますが、毎年毎年会話する内容として、**バックボーン通信**ネタがあります。

また、社内でミーティングをしていてもこの点の前提認識が揃っていないなーっと感じることも時々あったので今回改めて私の理解を書いてみます。

（質問や突っ込みなどありましたら是非、優しく指摘していただければと思います）


## バックボーン通信ってそもそも何
バックボーンってもともとは背骨っていう意味です。
言葉的には基盤側で処理される通信かな？ぐらいな意味に感じてました。
個人的にはとてもファジーな言葉だなと思ってます。

+ ChatGptによれば下記の返答が返って来ました。
> バックボーン通信（Backbone通信）は、ネットワークや通信において主要な経路や中心的な部分を指す用語です。通常、バックボーンは大容量のデータを高速で転送できるように設計されており、複数のネットワークやサブネットワークを接続するのに使用されます。
> バックボーン通信は、インターネットや企業内ネットワークなどで広く利用されています。これにより、異なる地域や拠点間でデータが迅速かつ信頼性高く伝送されることが可能になります。通常、ファイバーオプティックケーブルや専用の通信回線が使用され、高い帯域幅を提供します。

## いろいろある バックボーン通信
バックボーン通信といった時に前提理解が異なることがあって、大きく下の 3 パターンがあります。(聞いたことがあります)。
もっともよく出てくるのはパターンその 1 とパターンその 2 だと思います。
パターンその 3 は結構レア。


そして、Azure でいう場合はパターンその１の文脈で使われることが多い気がしますが、知らない方が時々いらっしゃるので是非このタイミングで知ってもらえればハッピーです。


なお、後述の[Azure VM] - [Azure PaaS] 間の接続例では Azure VM 強制トンネリングなどはしていない構成とします。
(強制トンネリング (Forced tunneling / Full tunneling) などによりオンプレミス迂回や他社のサービスを通すような構成をしている場合は当たり前ですが、MS ネットワーク内で完結しません。)

### その 1 : パブリックなインターネットを通らない通信 (MSバックボーン通信)
宛先 IP アドレスに Public IPを使ってはいるものの、パブリックな ( MS ネットワーク外の) インターネットを通らず、インターネット上の Microsoft のネットワークノードのみを経由し MS ネットワーク内でのみ通信が完結する通信。
これらは MS バックボーン通信や Azure バックボーン通信と呼ばれることがあります。


[Azure VM] - [Azure PaaS] 間の接続の場合は、**Public IP を用いた接続 (サービスエンドポイントがある場合も無い場合も含む)** が該当します。
サービスエンドポイント構成時も Public IP を宛先 IP として利用します。
サービスエンドポイント構成時は **Azure VM のプライベートIP から PaaS のグローバル IP 宛に通信することができ、Azure VM 側に Public IPアドレスが不要です。**

その 2 のプライベート エンドポイントを使っていても MS バックボーン通信になりますが、ここでは分けて記載します。

この <font color="red">**Public IP を使った通信だとしても MS バックボーン通信となる**</font>ことについて公式ドキュメントでは下記の通り記載されています。

・最高のクラウド ネットワークの実現 - マイクロソフトのグローバル ネットワーク

https://learn.microsoft.com/ja-jp/azure/networking/microsoft-global-network#get-the-premium-cloud-network
> Microsoft サービスの使用時はすべてのトラフィックがこのようにルーティングされるのでしょうか。 はい。**Microsoft Azure 内のデータセンター間、または Virtual Machines、Microsoft 365、Xbox、SQL DB、Storage、仮想ネットワークなどの Microsoft サービス間のあらゆるトラフィックはこのグローバル トラフィック内でルーティングされ、決してパブリック インターネットを経由しません。** このルーティングにより、最適なパフォーマンスと整合性が保証されます。


・マイクロソフトは高速で信頼性の高いグローバル ネットワークをどのように構築しているのか

https://azure.microsoft.com/ja-jp/blog/how-microsoft-builds-its-fast-and-reliable-global-network/
> データセンター間の Azure トラフィック、および世界中の Microsoft サービス間のトラフィックはすべて Microsoft のネットワーク上に常に存在し、インターネットに流出することはありません。たとえば Azure 内部では、仮想マシン、ストレージ、SQL 通信間のトラフィックは、送信元や送信先のリージョンにかかわらずマイクロソフトのネットワーク内のみを移動します。

:::note info
MS サービス間の通信は Public IPを用いていても、 MSバックボーン通信 (MSネットワーク内で完結する)となり、パブリックなインターネットを経由しません。
この場合、サービスエンドポイントやプライベート エンドポイントの構成も不要。
:::


<span style="font-size: 16px;">＊認証系の一部の通信は MS 以外のサービスの宛先に通信をするものがあり、その通信に限ってはパブリックなインターネットを経由します。</span>


+ またこの MS バックボーン通信については Azure の中の人が下記で語ってくれているので紹介いたします。
(29:35秒あたりから)

https://youtu.be/zRXDpyN86Gg?si=2yOKTI0HSzih78W2&t=1776


### その 2 : Private IP を使った通信
宛先 IP アドレスに Private IP を使った通信。
[Azure VM] - [Azure PaaS] 間の接続の場合は**プライベート エンドポイントを用いた場合**が該当します。
これもその１のパターンと同じでもちろん、MSバックボーン通信となります。
大きな違いは閉域で接続できる、つまり**宛先エンドポイントが外部のインターネットに露出しない点**が大きな違いとなると思います。

### その 3 : Wire Server (168.63.129.16) への通信
Azure VM のゲストエージェントが行う Azure ホストの仮想IPへの通信です。
バックボーンもバックボーン、ホスト内で完結する通信です。

:::note info
 Wire Server / 168.63.129.16 については下記の公式ドキュメントがあるので見てもらえればと思います。
 ・IP アドレス 168.63.129.16 とは
 https://learn.microsoft.com/ja-jp/azure/virtual-network/what-is-ip-address-168-63-129-16
:::

:::note info
余談ですが、プロキシを設定している場合は Wire Server (168.63.129.16) および、169.254.169.254 への通信は除外するのが推奨です。
169.254.169.254 については下記の公式ドキュメントがあります。
・Azure Instance Metadata Service
https://learn.microsoft.com/ja-jp/azure/virtual-machines/instance-metadata-service?tabs=windows
:::

## 参考 
### サービス エンドポイントとプライベート エンドポイント
「MS バックボーン通信経由にするためにはプライベート エンドポイントやサービスエンドポイントは不要です」と書きましたが、これらの違いについては Azure サポートのブログがあるので参考になるかと思います。

・サービス エンドポイントとプライベート エンドポイントの違い

https://jpaztech.github.io/blog/network/pe-difference-se/

・Connecting to Azure Services on the Microsoft Global Network

https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/connecting-to-azure-services-on-the-microsoft-global-network/ba-p/3994886

### Azure サービスの IP レンジ
下記の json に Azure で使われるサービスのIPレンジ内にあります。
ただし、このjsonは毎週更新されます。(すべてのIPレンジが変更されるわけではないが、週次で変わる可能性があります。)

・Azure IP Ranges and Service Tags – Public Cloud

https://www.microsoft.com/en-us/download/details.aspx?id=56519

例えば適当に作ったストレージ アカウントや Key Vaultなどのパブリック エンドポイントの URL の名前解決をすると上記からダウンロードできる json の IP レンジに含まれています。

## 謝辞
このエントリを書くにあたって、協力いただきました社内の有志のメンバーの皆さまありがとうございました。