ハイブリッドクラウドの本番/災対構成にOCI DRGリモートピアリングを使用

## 概要
OCIの動的ルーティング・ゲートウェイ(DRG)を使用したハイブリッドクラウドの本番/災対ネットワーク構成を考えました。
## 背景
従来のオンプレミス環境から一部の業務をパブリッククラウドに移行することがあると思います。オンプレミス環境が本番/災対で構成している場合、パブリッククラウドも障害/災害に備えて本番/災対構成を検討もされているかと思います。
 * センター自体の障害（電源障害等）
 * 地震等の広域災害（長期間の停電も含む）
 
オンプレミス(本番/災対)にパブリッククラウド(本番/災対)を追加すると4DCのネットワーク構成を検討する必要があります。
障害の内容によって災対発動する対象DCが異なるという要件があるかもしれません。
例えば、パブリッククラウド本番が長期間の障害になった場合にオンプレミス本番-パブリッククラウド災対といった構成を求められる可能性があります。
この記事では4DCの構成と障害迂回についてネットワークの観点より考えてみました。

## ネットワーク構成
ホップ数を考慮してメッシュ構成も可能かと思いますが、今回は以下のようにシンプルな構成を考えました。
【DC】
 * オンプレミス東京本番(OnP本番)
 * オンプレミス大阪災対(OnP災対)
 * パブリッククラウド東京本番(OCI本番)
 * パブリッククラウド大阪災対(OCI災対)
 
【NWの回線種別とルーティングプロトコル】 
 * OnP本番-OnP災対：既存の専用線ネットワーク、動的ルーティングを使用前提
 * OnP本番-OCI本番：専用接続またはIPSecVPN(今回はVPNを検討)、BGPを使用
 * OnP災対-OCI災対：IPSecVPN、スタティックルートを使用
 * OCI本番-OCI災対：DRGリモートピアリング、動的ルーティングを使用
 
DRGリモートピアリングについての詳細説明は以下のリンクから参照可能です。
DRGを介した異なるリージョン内のVCNのピアリング
https://docs.oracle.com/ja-jp/iaas/Content/Network/Tasks/scenario_e.htm
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/5816777c-1f82-69e6-d912-e9d09c782d0d.png)

【障害想定内容】
 * 障害なし：OnP本番-OCI本番
 * OCI本番全体障害：OnP本番-OCI災対
 * OnP本番全体障害：OnP災対-OCI本番
 * 東京広域災害：OnP災対-OCI災対
 * OnP本番-OCI本番間NW障害：OnP本番-OCI本番(通信経路はOnP災対-OCI災対を経由)
 * 災対の障害：OnP本番-OCI本番(変更なし)

## ネットワーク詳細(正常時)
各DCのルータやDRGは以下の設定を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/a48e618a-56cb-d1f6-4054-9f0cdfe1fb88.png)

【OnP本番ルータ】
　OCI本番に対してIPSecVPN設定を行います。ルーティングはBGPを設定しサブネットをルート交換します。
　OnP災対に対しては既存ネットワークで動的ルーティングを稼働させているものとします。
　OnPルータのRouting Tableは以下のようになります。
  OCI本番のVCN 10.105.0.0/16はOnP災対から再配布されています。
``` 
OnP本番Router:~$ sh ip ro
B>* 10.105.0.0/16 via OnP災対Router
B>* 10.105.2.0/24 via OCI本番tunnel1
B>* 10.107.0.0/16 via OnP災対Router
B>* 10.108.0.0/16 via OnP災対Router
``` 
【OnP災対ルータ】
　OCI災対に対してIPSecVPN設定を行います。ルーティングはStaticでVCNのCIDRを設定します。
　OnP本番に対しては既存ネットワークで動的ルーティングを稼働させているものとします。
　OnPルータのRouting Tableは以下のようになります。
``` 
OnP本番Router:~$ sh ip ro
B>* 10.105.0.0/16 via OCI災対tunnel1/2
B>* 10.105.2.0/24 via OnP本番Router
B>* 10.107.0.0/16 via OCI災対tunnel1/2
B>* 10.108.0.0/16 via OCI災対tunnel1/2
``` 
【OCI本番DRG】
  DRGはVCN,IPSecVPNやDRGリモートピアリングをアタッチしてそれぞれRouting Tableを割り当てることができます。
  また、Routing TableはRoute import条件が指定でき(例えばVCNの情報だけ取り込む)、またimport元のルーティングに変化があった場合は自動的に反映します。例えばIPSecVPNが持っているRoute情報を取り込む設定にしていた場合、IPSecVPNが接続断になると消えるRoute情報もRouting Tableに反映されます。
  今回は一つのRouting TableをアタッチしたVCN,IPSecVPNやDRGリモートピアリングに割り当てます。
　
``` 
#OCI本番DRG Routing Table
タイプ  宛先CIDR      次のホップ・アタッチメント・タイプ 次のホップ・アタッチメント名 ルート・ステータス
--------------------------------------------------------------------------------------------------
DYNAMIC 10.105.2.0/24 Virtual Cloud Network              DRG Attachment for VCN           Active
DYNAMIC 10.106.0.0/16 Remote Peering Connection          DRG Attachment for RPC           Active
DYNAMIC 10.106.2.0/24 IPSec Tunnel                       DRG Attachment for IPSec Tunnel  Active
DYNAMIC 10.107.4.0/24 Remote Peering Connection          DRG Attachment for RPC           Active
DYNAMIC 10.107.5.0/24 Remote Peering Connection          DRG Attachment for RPC           Active
``` 
【OCI災対DRG】
  DRGはVCN,IPSecVPNやDRGリモートピアリングをアタッチしてそれぞれRouting Tableを割り当てることができます。
  今回は一つのRouting TableをアタッチしたVCN,IPSecVPNやDRGリモートピアリングに割り当てます。
　
``` 
#OCI災対DRG Routing Table
タイプ  宛先CIDR      次のホップ・アタッチメント・タイプ 次のホップ・アタッチメント名    ルート・ステータス
------------------------------------------------------------------------------------------------------------------
DYNAMIC 10.105.2.0/24 Remote Peering Connection          DRG Attachment for RPC           Active
DYNAMIC 10.106.0.0/16 IPSec Tunnel                       DRG Attachment for IPSec Tunnel  Active
DYNAMIC 10.106.2.0/24 Remote Peering Connection          DRG Attachment for RPC           Active
DYNAMIC 10.107.4.0/24 Virtual Cloud Network              DRG Attachment for VCN           Active 
DYNAMIC 10.107.5.0/24 Virtual Cloud Network              DRG Attachment for VCN           Active
``` 

## ネットワーク詳細(OnP本番-OCI本番間NW障害時)
OnP本番-OCI本番間NW障害時はOnP本番-OCI本番間BGP断によりルーティングが以下のように変化し、OnP本番-OCI本番通信はOnP災対-OCI災対を経由します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/4c1b5dff-4524-3095-36a3-92bbcfe79a2f.png)


【OnP本番ルータ】
　OnP本番-OCI本番間BGP断により対象のルートが消失します。
　そのため、OCI本番の10.105.2.0/24はOnP災対から再配布されたルートが選択されます。
``` 
OnP本番Router:~$ sh ip ro
B>* 10.105.0.0/16 via OnP災対Router
B>* 10.107.0.0/16 via OnP災対Router
B>* 10.108.0.0/16 via OnP災対Router
``` 
【OnP災対ルータ】
　OnP本番ルータから受け取っていたルートは消失します。
　そのため、OCI本番の10.105.2.0/24はIPSecVPNのStatic Routeが選択されます。
``` 
OnP本番Router:~$ sh ip ro
B>* 10.105.0.0/16 via OCI災対tunnel1/2
B>* 10.107.0.0/16 via OCI災対tunnel1/2
B>* 10.108.0.0/16 via OCI災対tunnel1/2
``` 
【OCI本番DRG】
  IPSecVPNから受け取っていたOnP本番のサブネット10.106.2.0/24が障害により消失します。
  そのため、OCI災対のDRGリモートピアリングへのルートが選択されます。
　
``` 
#OCI本番DRG Routing Table
タイプ  宛先CIDR      次のホップ・アタッチメント・タイプ 次のホップ・アタッチメント名 ルート・ステータス
--------------------------------------------------------------------------------------------------
DYNAMIC 10.105.2.0/24 Virtual Cloud Network              DRG Attachment for VCN           Active
DYNAMIC 10.106.0.0/16 Remote Peering Connection          DRG Attachment for RPC           Active
DYNAMIC 10.107.4.0/24 Remote Peering Connection          DRG Attachment for RPC           Active
DYNAMIC 10.107.5.0/24 Remote Peering Connection          DRG Attachment for RPC           Active
``` 
【OCI災対DRG】
  OCI本番DRGから受け取っていたOnP本番のサブネット10.106.2.0/24が障害により消失します。
  そのため、OnP災対向けのIPSecVPNへのルートが選択されます。
　
``` 
#OCI災対DRG Routing Table
タイプ  宛先CIDR      次のホップ・アタッチメント・タイプ 次のホップ・アタッチメント名    ルート・ステータス
------------------------------------------------------------------------------------------------------------------
DYNAMIC 10.105.2.0/24 Remote Peering Connection          DRG Attachment for RPC           Active
DYNAMIC 10.106.0.0/16 IPSec Tunnel                       DRG Attachment for IPSec Tunnel  Active
DYNAMIC 10.107.4.0/24 Virtual Cloud Network              DRG Attachment for VCN           Active 
DYNAMIC 10.107.5.0/24 Virtual Cloud Network              DRG Attachment for VCN           Active
``` 
## 最後に

今回は障害1ケースのみについての検証でしたが、その他の障害についてもルーティングが適切に変更されるか設計やテストが必要かと思います。