BGPとVRRPを利用した経路冗長化を考えてみた。

## 初めに
学習の一環として、BGPとVRRPを利用した経路冗長化ができるか考えてみました。
WEBで調べればやり方は色々あると思いますが、学習の一環として自分のBGPとVRRPの知見範囲で設計が出来るか考えてみました。

## 事前知識
- CCNPで勉強した程度
- 冗長構成のBGP設計経験なし

## ネットワーク構成と論理図
- BGP　
 - AS65001
 - AS65002

- VRRP
 - トラッキングを利用してMaster/Backupの切り替え
![スライド1.PNG](https://qiita-image-store.s3.amazonaws.com/0/160993/37f98aea-b0aa-38f2-a9c3-48b53cd93207.png)


## 正常時の通信フロー
Master側を通信が流れます。

![スライド2.PNG](https://qiita-image-store.s3.amazonaws.com/0/160993/d5026c2e-44d0-27b0-abd3-738fce396143.png)

## 障害時の通信フロー
Master側の回線に障害があった場合、VRRPのMaster/Backupが切り替わります。
R1を例に説明になりますが、対抗のR3も同様の考え方で切り替わります。

仕組みは以下になります。

- VRRPでトラッキング機能を利用してMaster/Backupの切り替え
- VRRP設定インターフェースのダウンによるMaster/Backupの切り替え

**VRRPトラッキング機能**

後述でIPSLAでのトラッキングにするので、ip routeでのトラッキング設定は無くても良い。ダメパターンの設定例として記載しました。

ルーティングテーブルから経路が消えたのを判別して、Master/Backupを切り替えられます。これは対抗のMasterルータ障害や経路障害時にBGPのアドバタイズがされなくなるのを利用して、Master/Backupを切り替えてます。

- 正常時<BR>
172.16.2.20の経路情報がBGPでアドバタイズされています。<BR>

```
Gateway of last resort is not set

     172.16.0.0/24 is subnetted, 2 subnets
C       172.16.1.0 is directly connected, Ethernet1/0
B       172.16.2.0 [20/0] via 10.0.1.2, 00:03:24
     10.0.0.0/24 is subnetted, 1 subnets
C       10.0.1.0 is directly connected, Ethernet1/1
```
- 障害時<BR>
172.16.2.20の経路情報がBGPでアドバタイズされずに、ルーティングテーブルからも消えます。

```
R1#sh ip ro | be Gat
Gateway of last resort is not set

     172.16.0.0/24 is subnetted, 1 subnets
C    172.16.1.0 is directly connected, Ethernet1/0
```
- R3障害
 - 経路がR1にアドバタイズされずルーティングテーブルから消える。 
 - R1とR2間のMaster/Backupが切り替わる。 
![スライド3.PNG](https://qiita-image-store.s3.amazonaws.com/0/160993/9dc317d4-4692-58b6-8499-322fe0c50c6b.png)
- R1とR3間の障害
 - R1とR3間の隣接関係が切れて、経路がルーティングテーブルから消える。  
 - R1とR2間のMaster/Backupが切り替わる。 
![スライド4.PNG](https://qiita-image-store.s3.amazonaws.com/0/160993/0ee05624-3f2f-44e6-eb7a-d81e87ebaf5b.png)

- R1設定

```
track 1 ip route 172.16.2.0 255.255.255.0 reachability
int e1/0
vrrp 1 track 1 decrement 100
```

- R3設定

```
track 1 ip route 172.16.1.0 255.255.255.0 reachability
int e1/0
vrrp 1 track 1 decrement 100
```

**VRRP設定インターフェースのダウンによるMaster/Backupの切り替え**

- R1障害
 - 制御パケットが一定時間R2に到達しない場合、R2がMasterになる。
 - R1はインターフェースがダウンしてBackupになる。
![スライド5.PNG](https://qiita-image-store.s3.amazonaws.com/0/160993/865af376-92cc-fe12-1ca8-4bebc2abaa9b.png)

##R1-SW1、R3-SW2間の障害時の切り替え。
スイッチのインターフェース障害やLANケーブルに障害があった場合に上記設定のみでは対応できない。

SW2のインターフェース障害の場合は、R3→R1への経路アドバタイズは行われる。
ルーティング情報がR1にある場合、R1-R2のMaster/Backupが切り替わらず以下のようになる。

- R3(backup)-R4(Master)
- R1(Master)-R2(Backup)

IPSLAでSWの管理IPを監視して、トラッキングでMaster/Backupの切り替えを行う事で対応できました。

①R1からIPSLAでSW2の管理IPを監視をする。
②R3-SW2間の障害が発生した場合、疎通が取れなくなる。
③疎通が取れなくなった場合、R1のVRRPのトラッキングで
R1のPriorityを下げる様に設定→Master/Backup切り替えされる。

![スライド6.PNG](https://qiita-image-store.s3.amazonaws.com/0/160993/abd153d7-f92b-e9ce-7ebc-80efc0de575d.png)

- R1設定

```
ip sla 1
icmp-echo 172.16.2.254 source-interface e1/1
timeout 5000
frequency 10
ip sla schedule 1 life forever start-time now
track 1 ip sla 1 reachability
!
int e1/0
vrrp 1 track 1 decrement 100
```

- R3設定

```
ip sla 1
icmp-echo 172.16.1.254 source-interface e1/1
timeout 5000
frequency 10
ip sla schedule 1 life forever start-time now
track 1 ip sla 1 reachability
!
int e1/0
vrrp 1 track 1 decrement 100
```