【Azure】ExpressRoute実装フロー

今回はAzureのExpressRouteの記事を書きます。
オンプレミスからクラウドへプライベート接続を実装するAzureの重要サービスなのですが、仕様上個人で検証するのは難しいと思いました。
なので私が何度か経験した構築の流れを残して、次に作業する人の参考になるように記事を書くことにしました。
初めにお伝えすると[ポートの種類]はプロバイダーを前提としたお話です。
（私はこれ以外経験がなく、一緒に働いた仲間に聞いても経験した人がおらず、、）

# ExpressRouteとは
上でも記載したようにオンプレミスからクラウドへプライベート接続を実装するAzureのサービスです。
オンプレミス環境からAzureへ接続する方法の中で最もセキュアで安定した速度を出せる接続方法がこちらです。
Azure VPN Gatewayを利用してAzureへ接続する方法もありますが、ExpressRouteは専用線の扱いなのでより信頼性の高い方法になります。

# どうやって構築するのか
Azureと提携している接続プロバイダーとの契約が必要です。
私の経験上、equinixというプロバイダーが最も一般的ではないかと思います。
https://www.equinix.co.jp/partners/microsoft-azure

## その他提携プロバイダーは以下
https://learn.microsoft.com/ja-jp/azure/expressroute/expressroute-locations?tabs=asia%2Ca-c%2Cus-government-cloud%2Ca-C

利用しているデータセンターからAzureと提携しているデータセンターに回線を引き、引き込んだ線をMicrosoft エンタープライズ エッジ (MSEE) デバイスが配置されているコロケーション（Meet meとも呼ばれている）へ繋ぐ必要があります。
※引き込んだ回線をMeet meへ繋ぐ方法は契約しているラックのルームの位置によって変わるため、プロバイダーとよく相談してください。
　構内配線で可能な場合もあれば、Meet meとラックルームの距離が遠く回線を引く必要があるパターンもありました。

# 接続プロトコル
オンプレミスからExpressRouteへはeBGPを利用します。
<拠点データセンターのルーター>-<提携プロバイダーDCのルーター>-<AzureExpressRoute>間でNeighborを張っていくようなイメージです。
ExpressRouteは1リソース作成すると、1系と2系がセットで作成されるのでBGPの重みづけを設計する必要があります。
上りはLocal Preference、下りはas path attributeで1系に重みづけする構成が私の中では基本構成でした。

# Azure側操作

ではここからAzure側の操作に触れていきます。
大きく流れは以下になると思います。

1\. ExpressRoute GWを作成 
2\. ExpressRoute circuits 回線を作成
3\. サービスキーをプロバイダーに登録してもらう
4\. ExpressRouteでピアリング設定しプロバイダーと接続する
5\. ExpressRoute GWと ExpressRouteの[接続]を作成する

## 1. ExpressRoute GWを作成 
こちらはAzureの仮想ネットワークゲートウェイから作成できます。
ゲートウェイの種類で[ExpressRoute]を選択して構築すればExpressRoute GWとなります。
ExpressRouteから通ってきた通信をどこのVnet、リソースに流したいかを考慮して[地域][仮想ネットワーク]のパラメータを決定していきます。
ゲートウェイサブネットというものが必要なので、/28（ゾーン冗長またはゾーンGWを展開する場合は27）の空きが選択するVnetに必要になります。
またSKUで何を選ぶかによって、対応可能な通信量が決まるため、要件に合わせて選択します。
そしてパブリックIPアドレスも一つ作成、もしくは既存の他のリソースで使用されていないものを選択する必要があります。


## 2. ExpressRoute circuits 回線を作成
ExpressRoute回線の作成についてです。
この新規作成した時点ではどこのNWにも属しておらず、ただ土管がぶら下がっている状態だと考えておくのが良いと思いました。
ここで要件に適した帯域の回線を作成します。
重要な設定値としては[ピアリングの場所][課金モデル][SKU][ポートの種類]です。

### [ピアリングの場所]も以下を参照して、どのプロバイダーがどの場所をサポートしているかをご確認ください。
https://learn.microsoft.com/ja-jp/azure/expressroute/expressroute-locations?tabs=asia%2Ca-c%2Cus-government-cloud%2Ca-C

### [課金モデル]は従量課金制と無制限を選択することができます。
以下からコストを算出出来ます。
https://azure.microsoft.com/ja-jp/pricing/details/expressroute/
従量課金制はデータ転送量に応じて毎月のコストが変わります。
無制限は月額固定制を意味します。（翻訳のせいか無制限と固定制だと意味合いが異なるような、、）

### [SKU]
このSKUにより接続可能な地域が変わってきます。
- Local:最低1Gbpsの契約から選択出来るようになり、送信データに関しては無料になりますが代わりに接続場所の最寄りのリージョンにのみ接続可能になります。
例えば大阪で契約すると、西日本リージョンのリソースとのみ接続することが出来ます。
- Standard:接続場所と同地域のリージョンとのみ接続可能です。
- Global:世界中どこのリソースとも接続させることが可能です。

どこが同一地域と定義されているかは以下にまとめられています。
https://learn.microsoft.com/ja-jp/azure/expressroute/expressroute-locations?tabs=america%2Ca-c%2Cus-government-cloud%2Ca-C#locations



### [ポートの種類]
ここでは[直接(direct)]と[プロバイダー]を選択出来ます。
- プロバイダー：まず今まで話してきたやり方がこちらを前提にした話でequinixなどのプロバイダーと契約して自社の機器から回線をMeet meに引き込んでもらうことで接続するやりかたです。
- 直接：接続プロバイダーの回線を経由せずにAzureに直接光ファイバーケーブルで接続する方式です。
広帯域が前提となっており10G、100Gの契約が可能で、物理回線の中で仮想的に複数のExpressrouteを作成することが出来ます。

# 3.サービスキーをプロバイダーに登録してもらう
ExpressRoute circuitsを作成したらサービスキーというコードが自動的に発行されます。
このサービスキーをAzureポータルからコピーしてプロバイダーに連携して事前作業をしてもらいます。
事前作業が完了されてからAzureポータルのExpressRouteの概要を見るとステータスが[プロビジョニング済み]に変更されます。

# 4.ExpressRouteでピアリング設定しプロバイダーと接続する
ここからがやっと接続作業です。
ここの設定値はオンプレミス環境のNW設計次第になりますが、オンプレミス側ルータ及びL3SWのNeighborIPaddressやVlanIDの設定値と揃える必要があります。
ここの設定値がズレると一向に接続できません。

# 5.ExpressRoute GWと ExpressRouteの[接続]を作成する
AzureのVnet内にあるリソースが、オンプレミスDC環境から疎通が取れるように接続というリソースを作成していきます。
Azureサービスから[接続]を検索して、VMなどと同様に[作成]をクリックしてリソースを作成していきます。
接続させたいExpressRouteとVnetGWを間違えなければ、ここは設定ミスは起こりえないと思います。

# さいごに

以上でExpressRoute実装フローは終わりです。
接続作業後はAzureモニターからBitinpersecondやBitoutpersecond、オンプレミスのルータのNeighborステータス等をみて正常に通信が通っているか確認しておくと良いと思います。