Packet TracerでBGPを試してみた

# 背景・目的

以前、Packet Tracerでルーターを設置し通信を試しました。今回はBGPを試してみます。

https://qiita.com/zumax/items/282acb1700a562a87fbe

# まとめ

下記に特徴をまとめます。

|特徴|説明|
|:--|:--|
|BGPとは|ボーダーゲートウェイプロトコルのこと<BR><BR>インターネット上でのデータ転送に最適なネットワークルートを決定する一連のルール<BR>BGPの責任は、データが移動する可能性のあるすべての経路を調べ、最適な経路を選択すること|
|BGPの特徴|データルーティングを通じてインターネットを機能させる<BR>インターネットは数十万の自律システムで構成されているため、BGP ルーティングは重要|
|自律システム|単一の管理エンティティの下にある小規模なネットワーク<BR>Internet Assigned Numbers Authority (IANA) によって割り当てられた自律システム番号によって一意に識別できる<BR>データは、送信元から送信先に移動する際、自律システム間を移動する|
|BGPの機能|BGP は、すべての自律システムが機能するように下記をサポートする<BR><BR>・最適なルートを探す<BR>・ネットワーク接続の変更確認<BR>・ネットワークポリシーの管理<BR>・ネットワークセキュリティのレイヤー追加|

# 概要
## BGPとは
下記を基に整理します。

https://aws.amazon.com/jp/what-is/border-gateway-protocol/

### ボーダーゲートウェイプロトコルとは何ですか?
> ボーダーゲートウェイプロトコル (BGP) は、インターネット上でのデータ転送に最適なネットワークルートを決定する一連のルールです。インターネットは、標準化されたプロトコル、デバイス、通信技術によって相互に接続された何千もの民間、公共、企業、および政府のネットワークで構成されています。インターネットを閲覧すると、データは配信先に到達する前に複数のネットワークを経由します。BGP の責任は、データが移動する可能性のあるすべての経路を調べ、最適な経路を選択することです。たとえば、米国のユーザーがヨーロッパのオリジンサーバーでアプリケーションをロードする場合、BGP はその通信を迅速かつ効率的に行います。

- BGP=ボーダーゲートウェイプロトコル
- インターネット上でのデータ転送に最適なネットワークルートを決定する一連のルール
- BGPの責任は、データが移動する可能性のあるすべての経路を調べ、最適な経路を選択すること

### ボーダーゲートウェイプロトコルはなぜ重要なのですか?
> ボーダーゲートウェイプロトコル (BGP) は、データルーティングを通じてインターネットを機能させます。インターネットは数十万の自律システムで構成されているため、BGP ルーティングは重要です。

> 自律システムは、単一の管理エンティティの下にある小規模なネットワークです。このようなネットワークは、Internet Assigned Numbers Authority (IANA) によって割り当てられた自律システム番号によって一意に識別できます。データは、送信元から送信先に移動する際、自律システム間を移動します。

- データルーティングを通じてインターネットを機能させる
- インターネットは数十万の自律システムで構成されているため、BGP ルーティングは重要
- 自律システム
    - 単一の管理エンティティの下にある小規模なネットワーク
    - Internet Assigned Numbers Authority (IANA) によって割り当てられた自律システム番号によって一意に識別できる
    - データは、送信元から送信先に移動する際、自律システム間を移動する

> BGP は、すべての自律システムが次のことを行えるようサポートします。


#### 最適なルートを探す
> 最適ルートを探す
データがインターネットを介して送信元から送信先に移動する際、その間のすべての自律システムが、データパケットの次の送信先を決定する必要があります。

> 地理的な位置、ネットワークの混雑状況、データの転送コストなどのいくつかの要素に基づいて決定されます。BGP ルーティングはこれらの要素を考慮して、データが送信元から送信先までの最短ルートで移動するように、次善の自律システムを決定するのに役立ちます。

- データがインターネットを介して送信元から送信先に移動する際、その間のすべての自律システムが、データパケットの次の送信先を決定する必要がある
- 地理的な位置、ネットワークの混雑状況、データの転送コストなどのいくつかの要素に基づいて決定される
- BGP ルーティングはこれらの要素を考慮して、データが送信元から送信先までの最短ルートで移動するように、次善の自律システムを決定するのに役立つ


#### ネットワーク接続の変更確認
> インターネットの構造は動的です。新しい自律システムが追加され、古いシステムは絶えず削除されています。すべての自律システムは、新しいルートや削除されたルートに関する情報を常に最新の状態に保つ必要があります。BGP は、システムがこのようなネットワークの変化を検出し、常に最新の状態に保つのに役立ちます。

- BGP は、システムがネットークの変化を検出し、常に最新の状態に保つ


#### ネットワークポリシーの管理
> BGP には、自律システム管理者が独自のルーティングポリシーを実装できる柔軟性があります。

> たとえば、BGP を実行するルーターを設定して、自律システムの内部ルートと外部ルートを区別できます。管理者は、データを内部にルーティングするか外部にルーティングするかを決定するルールを設定できます。

- 自律システム管理者が独自のルーティングポリシーを実装できる柔軟性がある
- BGP を実行するルーターを設定して、自律システムの内部ルートと外部ルートを区別できる
- 管理者は、データを内部にルーティングするか外部にルーティングするかを決定するルールを設定できる



#### ネットワークセキュリティのレイヤー追加
> BGP はネットワーク管理のセキュリティをサポートします。たとえば、BGP は事前に設定されたパスワードを使用してルーター間のメッセージを認証できます。管理者は、正規の自律システムから送信される BGP メッセージを検証し、不正なトラフィックを排除できます。

- BGP は事前に設定されたパスワードを使用してルーター間のメッセージを認証できる
- 正規の自律システムから送信される BGP メッセージを検証し、不正なトラフィックを排除できる

### ボーダーゲートウェイプロトコルはどのように機能しますか?
> ボーダーゲートウェイプロトコル (BGP) は、ピアリングと呼ばれるメカニズムを使用して機能します。管理者は、特定のルーターを BGP ピアルーターまたは BGP スピーカルーターとして割り当てます。ピアは、自律システムのエッジまたは境界にあるデバイスと考えることができます。

> BGP ピアは次の主な機能を実行します。

#### ルート検出
> BGP ピアは、ネットワーク層到達性情報 (NLRI) とパス属性を介して隣接 BGP ピアとルーティング情報を交換します。NLRI には、近隣の接続情報が含まれます。パス属性には、遅延、ホップカウント、伝送コストなどの情報が含まれます。

> 情報を交換した後、各 BGP ピアは周囲のネットワーク接続のグラフを作成できます。

- BGP ピアは、ネットワーク層到達性情報 (NLRI) とパス属性を介して隣接 BGP ピアとルーティング情報を交換する
- NLRIには近隣の接続情報が含まれる
- パス属性には、遅延、ホップカウント、伝送コストなどの情報が含まれる

#### ルートストレージ
> 検出プロセス中、すべての BGP ルーターはルート通知情報を収集し、ルーティングテーブルの形式で保存します。ルーティングテーブルを使用してパスを選択し、頻繁に更新します。

> たとえば、BGP ルーターは隣接ルーターから 30 秒ごとにキープアライブメッセージを受信します。保存されているルートを適宜更新します。

-  検出プロセス中、すべての BGP ルーターはルート通知情報を収集し、ルーティングテーブルの形式で保存する
-  ルーティングテーブルを使用してパスを選択し、頻繁に更新する

#### パス選択
> BGP ルーターは、保存された情報を使用してトラフィックを最適にルーティングします。パス選択の主な要素は、保存されているルートグラフによって決定される最短経路です。複数のパスから宛先に到達できる場合、BGP は他のパス属性を順番に評価して最適なものを選択します。

-  BGP ルーターは、保存された情報を使用してトラフィックを最適にルーティングする
-  パス選択の主な要素は、保存されているルートグラフによって決定される最短経路
- 複数のパスから宛先に到達できる場合、BGP は他のパス属性を順番に評価して最適なものを選択する

### ボーダーゲートウェイプロトコルにはどのような種類がありますか?
> ボーダーゲートウェイプロトコル (BGP) は、データのルーティング先に応じて、内部と外部に分類されます。

> 外部 BGP ルーターは、自律システムをグローバルインターネットに接続します。しかし、大きな自律システムは、それ自体がその内部の小さな自律システムで構成されています。内部 BGP はシステム内のデータをルーティングします。

- データのルーティング先に応じて、内部と外部に分類される
- 外部 BGP ルーターは、自律システムをグローバルインターネットに接続する
- 内部 BGP はシステム内のデータをルーティングする

#### 外部 BGP と内部 BGP
> 内部 BGP ピアリングと外部 BGP ピアリングの主な違いは、あるピアから受信した BGP ルートがデフォルトで他のピアに伝播される方法です。説明は次のとおりです。

> - 外部 BGP ピアから学習した新しいルートは、すべてのピアに再通知されます
> - 内部 BGP ピアから学習した新しいルートは、すべての外部ピアにのみ再通知されます
> さらに、組織は外部 BGP を使用して企業ネットワークをインターネットに接続する必要があります。

> 対照的に、内部 BGP を使用する必要はありません。組織のネットワーク要件に基づいて、いくつかの内部ルーティングプロトコルから選択できます。

- あるピアから受信した BGP ルートがデフォルトで他のピアに伝播される方法
- 外部 BGP ピアから学習した新しいルートは、すべてのピアに再通知される
- 内部 BGP ピアから学習した新しいルートは、すべての外部ピアにのみ再通知される
- 組織は外部 BGP を使用して企業ネットワークをインターネットに接続する必要がある

### ボーダーゲートウェイプロトコルはスケールをどのように処理しますか?
> 何百万ものデバイスがインターネットに接続されている中で、1 台のボーダーゲートウェイプロトコル (BGP) ルーターで何千もの潜在的なピアと接続するにはどうすればよいですか? スケールを管理し、インターネットの拡大に対応するには、いくつかのアプローチが用いられています。各ルーターが記憶しなければならないピアの数は管理しやすいように、すべてのレベルで細分化されています。

- 各ルーターが記憶しなければならないピアの数は管理しやすいように、すべてのレベルで細分化されている


> 次に、BGP がスケーリングを処理するいくつかの方法について説明します。

#### ルートリフレクター
> ルートリフレクタ (RR) は、内部 BGP の接続数を減らします。1 台のルーターを、ルーターの内部クラスターとピアリングする中央ハブとして機能できます。

> ネットワークを複数のクラスターと RR に分割できます。RR だけが相互に、また外部の BGP ルーターと通信します。

- 内部 BGP の接続数を減らす
- 1 台のルーターを、ルーターの内部クラスターとピアリングする中央ハブとして機能できる
- ネットワークを複数のクラスターと RR に分割できる

#### コンフェデレーション
> すべての外部 BGP ルーターが、世界中の他のすべての外部 BGP ルーターに接続されているわけではありません。その代わりに、コンフェデレーションが使用されます。コンフェデレーションとは、インターネットの他の部分から見える単一の AS 番号 (ASN) を持つ一連の自律システムです。

> たとえば、ヨーロッパの複数国のインターネットサービスプロバイダー (ISP) がグループになって欧州コンフェデレーションを結成する場合があります。外部には、複数国の単一の ASN が表示されます。

- すべての外部 BGP ルーターが、世界中の他のすべての外部 BGP ルーターに接続されているわけではない
- コンフェデレーションが使用される
- コンフェデレーションとは、インターネットの他の部分から見える単一の AS 番号 (ASN) を持つ一連の自律システム

#### ルート集約
> ルートリフレクタとコンフェデレーションは、グローバルな BGP ネットワークの数を減らすのに役立ちます。しかし、世界のトップレベルの同業他社も指数関数的に成長しています。

> 接続が広範囲に切断されるのを防ぐために、ISP は協力してグローバルルーティングテーブルをできるだけ小さくします。Classless Inter-Domain Routing (CIDR) を使用して IP アドレスをより効率的に割り当てます。また、ルート集約を使用して、複数のネットワークを 1 つのルーティングテーブルエントリに表示します。


- ルートリフレクタとコンフェデレーションは、グローバルな BGP ネットワークの数を減らすのに役立つ
- 接続が広範囲に切断されるのを防ぐために、ISP は協力してグローバルルーティングテーブルをできるだけ小さくする
- Classless Inter-Domain Routing (CIDR) を使用して IP アドレスをより効率的に割り当てる
- ルート集約を使用して、複数のネットワークを 1 つのルーティングテーブルエントリに表示する

### AWS は BGP ルーティングプロトコル要件をどのようにサポートできますか?
> Amazon Web Services (AWS) では、ボーダーゲートウェイプロトコル (BGP) ルーティングプロトコル要件をサポートするために、AWS Transit Gateway と AWS Direct Connect を提供しています。

- BGPをサポートするため下記を提供している
    - AWS Transit Gateway
    - AWS Direct Connect 

# 実践
下記の構成を作成します。

|分類|ノード|設定|内容|備考|
|:--|:--|:--|:--|:--|
|NW1|Router0|hostname|R0|
|||GigabitEthernet0/0/0|192.168.10.1/24|内部NW|
|||GigabitEthernet0/0/1|172.16.0.1/16|外部NW|
||PC0|hostname|PC0|
|||IPv4|192.168.10.10|
|||Subnet Mask|255.255.255.0|
|||Default Gateway|192.168.10.1|
|||BGP AS番号|65010||
|NW2|Router1|hostname|R1|
|||GigabitEthernet0/0/0|192.168.20.1/24|内部NW|
|||GigabitEthernet0/0/1|172.16.0.2/16|外部NW|
||PC1|hostname|PC1|
|||IPv4|192.168.20.10|
|||Subnet Mask|255.255.255.0|
|||Default Gateway|192.168.20.1|
|||BGP AS番号|65020||

## ノードとリンクを配置
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/f227b820-629d-47f7-a9f9-10e34d8174e7.png)

## 基本的な設定
ここでは、ホスト名とインターフェイスを設定します。

### NW0
#### Router0
下記を設定します。

1. Hostnameの変更
    ```bash
    Router#configure terminal 
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)#hostname R0
    R0(config)#
    ```
1. インターフェイスの確認
    ```bash
    R0(config)#do show ip interface brief
    Interface              IP-Address      OK? Method Status                Protocol 
    GigabitEthernet0/0/0   unassigned      YES unset  administratively down down 
    GigabitEthernet0/0/1   unassigned      YES unset  administratively down down 
    GigabitEthernet0/0/2   unassigned      YES unset  administratively down down 
    Vlan1                  unassigned      YES unset  administratively down down
    R0(config)#
    ```
1. 内部インターフェイスの設定（対向はPC0）
    ```bash
    R0(config)#interface GigabitEthernet0/0/0
    R0(config-if)#ip address 192.168.10.1 255.255.255.0
    R0(config-if)#no shutdown
    R0(config-if)#exit
    R0(config)#
    ```

1. 外部インターフェイスの設定（対向はR1）
    ```bash
    R0(config)#interface GigabitEthernet0/0/1
    R0(config-if)#interface GigabitEthernet0/0/1
    R0(config-if)#ip address 172.16.0.1 255.255.0.0
    R0(config-if)#no shutdown
    R0(config-if)#exit
    R0(config)#
    ```

1. 確認します。この時点では、対向のルータR1とつながっていないためGigabitEthernet0/0/1は、Protocolがdownです
    ```bash
    R0(config)#do show ip interface brief
    Interface              IP-Address      OK? Method Status                Protocol 
    GigabitEthernet0/0/0   192.168.10.1    YES manual up                    up 
    GigabitEthernet0/0/1   172.16.0.1      YES manual up                    down 
    GigabitEthernet0/0/2   unassigned      YES unset  administratively down down 
    Vlan1                  unassigned      YES unset  administratively down down
    R0(config)#
    ```

#### PC0
1. IPv4、Subnet Mask、Default Gatewayを設定します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/e9371638-e662-415a-86e2-951b313a62d0.png)

### NW1
#### Router1
1. Hostnameの変更
    ```bash
    Router(config)#hostname R1
    R1(config)#
    ```
1. インターフェイスの確認
    ```bash
    R1#show ip interface brief
    Interface              IP-Address      OK? Method Status                Protocol 
    GigabitEthernet0/0/0   unassigned      YES unset  administratively down down 
    GigabitEthernet0/0/1   unassigned      YES unset  administratively down down 
    GigabitEthernet0/0/2   unassigned      YES unset  administratively down down 
    Vlan1                  unassigned      YES unset  administratively down down
    R1#
    ```
1. 内部インターフェイスの設定（対向はPC1）
    ```bash
    R1(config)#interface GigabitEthernet0/0/0
    R1(config-if)#ip address 192.168.20.1 255.255.255.0
    R1(config-if)#no shutdown 
    
    R1(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/0/0, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to up
    
    R1(config-if)#exit
    R1(config)#
    ```

1. 外部インターフェイスの設定（対向はR0）
    ```bash
    R1(config-if)#ip address 172.16.0.2 255.255.0.0
    R1(config-if)#no shutdown 
    
    R1(config-if)#
    %LINK-5-CHANGED: Interface GigabitEthernet0/0/1, changed state to up
    
    %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/1, changed state to up
    
    R1(config-if)#
    ```
1. 確認します。すべてUpになりました
    ```bash
    R1(config)#do show ip interface brief
    Interface              IP-Address      OK? Method Status                Protocol 
    GigabitEthernet0/0/0   192.168.20.1    YES manual up                    up 
    GigabitEthernet0/0/1   172.16.0.2      YES manual up                    up 
    GigabitEthernet0/0/2   unassigned      YES unset  administratively down down 
    Vlan1                  unassigned      YES unset  administratively down down
    R1(config)#
    ```

1. ワークスペースの状態を確認します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/3d55205b-6994-44db-b3a0-777077e7b2c3.png)

#### PC1
1. IPv4、Subnet Mask、Default Gatewayを設定します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/1cb31986-e608-4ccf-abcc-09d2440d5f35.png)


## BGPの設定
ここでは、BGPの設定をします。


### NW0
1. ルートテーブルを確認します。想定通りです
    ```bash
    R0#show ip route
    Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
           D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
           i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
           * - candidate default, U - per-user static route, o - ODR
           P - periodic downloaded static route
    
    Gateway of last resort is not set
    
         172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
    C       172.16.0.0/16 is directly connected, GigabitEthernet0/0/1
    L       172.16.0.1/32 is directly connected, GigabitEthernet0/0/1
         192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks
    C       192.168.10.0/24 is directly connected, GigabitEthernet0/0/0
    L       192.168.10.1/32 is directly connected, GigabitEthernet0/0/0
    
    R0#
    ```
1. 変更前の BGPの設定を確認します
    ```bash
    R0#show ip bgp
    
    R0#
    R0#show ip bgp summary
    
    R0#
    ```
1. BGPを設定します
    ```bash
    R0(config)#router bgp 65010
    R0(config-router)#neighbor 172.16.0.2 remote-as 65020
    R0(config-router)#network 192.168.10.0 mask 255.255.255.0
    R0(config-router)#exit
    R0(config)#
    ```
1. 変更後の BGPを確認します
    ```bash
    R0#show ip bgp
    BGP table version is 1, local router ID is 192.168.10.1
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
       Network          Next Hop            Metric LocPrf Weight Path
    
    R0#show ip bgp summary
    BGP router identifier 192.168.10.1, local AS number 65010
    BGP table version is 1, main routing table version 6
    0 network entries using 0 bytes of memory
    0 path entries using 0 bytes of memory
    0/0 BGP path/bestpath attribute entries using 0 bytes of memory
    0 BGP AS-PATH entries using 0 bytes of memory
    0 BGP route-map cache entries using 0 bytes of memory
    0 BGP filter-list cache entries using 0 bytes of memory
    Bitfield cache entries: current 1 (at peak 1) using 32 bytes of memory
    BGP using 32 total bytes of memory
    BGP activity 0/0 prefixes, 0/0 paths, scan interval 60 secs
    
    Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
    172.16.0.2      4 65020       0       0        1    0    0 00:37:50        4
    
    R0#
    ```

1. Routeテーブルを確認します。この時点では変わっていません
    ```bash
    R0#show ip route
    Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
           D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
           i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
           * - candidate default, U - per-user static route, o - ODR
           P - periodic downloaded static route
    
    Gateway of last resort is not set
    
         172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
    C       172.16.0.0/16 is directly connected, GigabitEthernet0/0/1
    L       172.16.0.1/32 is directly connected, GigabitEthernet0/0/1
         192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks
    C       192.168.10.0/24 is directly connected, GigabitEthernet0/0/0
    L       192.168.10.1/32 is directly connected, GigabitEthernet0/0/0
    
    R0#
    ```
### NW1
1. ルートテーブルを確認します。想定通りです

    ```bash
    R1#show ip route
    Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
           D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
           i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
           * - candidate default, U - per-user static route, o - ODR
           P - periodic downloaded static route
    
    Gateway of last resort is not set
    
         172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
    C       172.16.0.0/16 is directly connected, GigabitEthernet0/0/1
    L       172.16.0.2/32 is directly connected, GigabitEthernet0/0/1
         192.168.20.0/24 is variably subnetted, 2 subnets, 2 masks
    C       192.168.20.0/24 is directly connected, GigabitEthernet0/0/0
    L       192.168.20.1/32 is directly connected, GigabitEthernet0/0/0
    
    R1#
    ```
1. 変更前の BGPの設定を確認します
    ```bash
    R1#show ip bgp
    
    R1#show ip bgp summary
    
    R1#
    ```
1. BGPを設定します
    ```bash
    R1(config)#router bgp 65020
    R1(config-router)#neighbor 172.16.0.1 remote-as 65010
    R1(config-router)#%BGP-5-ADJCHANGE: neighbor 172.16.0.1 Up
    
    R1(config-router)#network 192.168.20.0 mask 255.255.255.0 
    R1(config-router)#exit
    
    ```
1. 変更後の BGPを確認します。MsgRcvd、MsgSentが送られてきました
    ```bash
    R1#show ip bgp
    BGP table version is 3, local router ID is 192.168.20.1
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
       Network          Next Hop            Metric LocPrf Weight Path
    *> 192.168.10.0/24   172.16.0.1               0     0     0 65010 i
    *> 192.168.20.0/24   0.0.0.0                  0     0 32768 i
    
    R1#show ip bgp summary
    BGP router identifier 192.168.20.1, local AS number 65020
    BGP table version is 3, main routing table version 6
    2 network entries using 264 bytes of memory
    2 path entries using 104 bytes of memory
    1/1 BGP path/bestpath attribute entries using 184 bytes of memory
    2 BGP AS-PATH entries using 48 bytes of memory
    0 BGP route-map cache entries using 0 bytes of memory
    0 BGP filter-list cache entries using 0 bytes of memory
    Bitfield cache entries: current 1 (at peak 1) using 32 bytes of memory
    BGP using 632 total bytes of memory
    BGP activity 2/0 prefixes, 2/0 paths, scan interval 60 secs
    
    Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
    172.16.0.1      4 65010       5       4        3    0    0 00:02:38        4
    
    R1#
    ```
1. 詳細を確認します。RcvdとSendから経路情報を送受信しています
    ```bash
    R1#show ip bgp neighbors 
    BGP neighbor is 172.16.0.1,  remote AS 65010, external link
      BGP version 4, remote router ID 192.168.10.1
      BGP state = Established, up for 00:26:54
      Last read 00:26:54, last write 00:26:54, hold time is 180, keepalive interval is 60 seconds
      Neighbor capabilities:
        Route refresh: advertised and received(new)
        Address family IPv4 Unicast: advertised and received
      Message statistics:
        InQ depth is 0
        OutQ depth is 0
    
                             Sent       Rcvd
        Opens:                  1          1
        Notifications:          0          0
        Updates:                1          1
        Keepalives:            27         27
        Route Refresh:          0          0
        Total:                 29         29
      Default minimum time between advertisements runs is 30 seconds
    
     For address family: IPv4 Unicast
      BGP table version 3, neighbor version 6/0
      Output queue size : 0
      Index 1, Offset 0, Mask 0x2
      1 update-group member
                                     Sent       Rcvd
      Prefix activity:               ----       ----
        Prefixes Current:               1          1 (Consumes 46 bytes)
        Prefixes total:                 1          1
        Implicit Withdraw:              0          0
        Explicit Withdraw:              0          0
        Used as bestpath:             n/a          1
        Used as multipath:            n/a          0
    
                                           Outbound    Inbound
          Local Policy Denied Prefixes:    --------    -------
            Total:                                0          0
          Number of NLRIs in the update sent: max 3, min 1
    
      Address tracking is enabled, the RIB does have a route to 172.16.0.1
      Connections established 1; dropped 0
      Last reset never
      Transport(tcp) path-mtu-discovery is enabled
    Connection state is ESTAB, I/O status: 1, unread input bytes: 0 
    Connection is ECN Disabled, Minimum incoming TTL 0, Outgoing TTL 1
    Local host: 172.16.0.2, Local port: 1025
    Foreign host: 172.16.0.1, Foreign port: 179
    Connection tableid (VRF): 0
    
    Enqueued packets for retransmit: 0, input: 0  mis-ordered: 0 (0 bytes)
    
    Event Timers (current time is 0xC69F4):
    Timer          Starts    Wakeups            Next
    Retrans             0          0             0x0
    TimeWait            0          0             0x0
    AckHold            28          0             0x0
    SendWnd             0          0             0x0
    KeepAlive          27          0             0x0
    GiveUp              0          0             0x0
    PmtuAger            0          0             0x0
    DeadWait            0          0             0x0
    Linger              0          0             0x0
    ProcessQ            0          0             0x0
    
    iss: 2057115318  snduna: 2057115748  sndnxt: 2057115748     sndwnd:  15955
    irs: 3480424370  rcvnxt: 3480424751  rcvwnd:      16004  delrcvwnd:    380
    
    SRTT: 259 ms, RTTO: 579 ms, RTV: 320 ms, KRTT: 0 ms
    minRTT: 16 ms, maxRTT: 300 ms, ACK hold: 200 ms
    Status Flags: passive open, gen tcbs
    Option Flags: nagle, path mtu capable
    IP Precedence value : 6
    
    Datagrams (max data segment is 1460 bytes):
    Rcvd: 29 (out of order: 0), with data: 0, total data bytes: 0
    Sent: 28 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 1, total data bytes: 24
     Packets received in fast path: 0, fast processed: 0, slow path: 0
     fast lock acquisition failures: 0, slow path: 0
    
    
    R1#
    
    ```


1. Routeテーブルを確認します。(B:BGP)の結果が流れてきました
    ```bash
    R1#show ip route
    Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
           D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
           i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
           * - candidate default, U - per-user static route, o - ODR
           P - periodic downloaded static route
    
    Gateway of last resort is not set
    
         172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
    C       172.16.0.0/16 is directly connected, GigabitEthernet0/0/1
    L       172.16.0.2/32 is directly connected, GigabitEthernet0/0/1
    B    192.168.10.0/24 [20/0] via 172.16.0.1, 00:00:00
         192.168.20.0/24 is variably subnetted, 2 subnets, 2 masks
    C       192.168.20.0/24 is directly connected, GigabitEthernet0/0/0
    L       192.168.20.1/32 is directly connected, GigabitEthernet0/0/0
    
    R1#
    ```

## 設定後の確認
### R0の確認
上記で、R1の設定も完了したのであらためて確認します。

1. BGPを確認します
    ```bash
    R0#show ip bgp
    BGP table version is 3, local router ID is 192.168.10.1
    Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
                  r RIB-failure, S Stale
    Origin codes: i - IGP, e - EGP, ? - incomplete
    
       Network          Next Hop            Metric LocPrf Weight Path
    *> 192.168.10.0/24   0.0.0.0                  0     0 32768 i
    *> 192.168.20.0/24   172.16.0.2               0     0     0 65020 i
    
    R0#show ip bgp summary
    BGP router identifier 192.168.10.1, local AS number 65010
    BGP table version is 3, main routing table version 6
    2 network entries using 264 bytes of memory
    2 path entries using 104 bytes of memory
    1/1 BGP path/bestpath attribute entries using 184 bytes of memory
    2 BGP AS-PATH entries using 48 bytes of memory
    0 BGP route-map cache entries using 0 bytes of memory
    0 BGP filter-list cache entries using 0 bytes of memory
    Bitfield cache entries: current 1 (at peak 1) using 32 bytes of memory
    BGP using 632 total bytes of memory
    BGP activity 2/0 prefixes, 2/0 paths, scan interval 60 secs
    
    Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
    172.16.0.2      4 65020      10       9        3    0    0 00:07:34        4
    
    R0#
    ```
1. 詳細を確認します。RcvdとSendから経路情報を送受信しています
    ```bash
    R0#show ip bgp neighbors 
    BGP neighbor is 172.16.0.2,  remote AS 65020, external link
      BGP version 4, remote router ID 192.168.20.1
      BGP state = Established, up for 00:24:30
      Last read 00:24:30, last write 00:24:30, hold time is 180, keepalive interval is 60 seconds
      Neighbor capabilities:
        Route refresh: advertised and received(new)
        Address family IPv4 Unicast: advertised and received
      Message statistics:
        InQ depth is 0
        OutQ depth is 0
    
                             Sent       Rcvd
        Opens:                  1          1
        Notifications:          0          0
        Updates:                1          1
        Keepalives:            25         25
        Route Refresh:          0          0
        Total:                 27         27
      Default minimum time between advertisements runs is 30 seconds
    
     For address family: IPv4 Unicast
      BGP table version 3, neighbor version 6/0
      Output queue size : 0
      Index 1, Offset 0, Mask 0x2
      1 update-group member
                                     Sent       Rcvd
      Prefix activity:               ----       ----
        Prefixes Current:               1          1 (Consumes 46 bytes)
        Prefixes total:                 1          1
        Implicit Withdraw:              0          0
        Explicit Withdraw:              0          0
        Used as bestpath:             n/a          1
        Used as multipath:            n/a          0
    
                                           Outbound    Inbound
          Local Policy Denied Prefixes:    --------    -------
            Total:                                0          0
          Number of NLRIs in the update sent: max 3, min 1
    
      Address tracking is enabled, the RIB does have a route to 172.16.0.2
      Connections established 1; dropped 9
      Last reset never
      Transport(tcp) path-mtu-discovery is enabled
    Connection state is ESTAB, I/O status: 1, unread input bytes: 0 
    Connection is ECN Disabled, Minimum incoming TTL 0, Outgoing TTL 1
    Local host: 172.16.0.1, Local port: 179
    Foreign host: 172.16.0.2, Foreign port: 1025
    Connection tableid (VRF): 0
    
    Enqueued packets for retransmit: 0, input: 0  mis-ordered: 0 (0 bytes)
    
    Event Timers (current time is 0xC69F4):
    Timer          Starts    Wakeups            Next
    Retrans             0          0             0x0
    TimeWait            0          0             0x0
    AckHold            26          0             0x0
    SendWnd             0          0             0x0
    KeepAlive          25          0             0x0
    GiveUp              0          0             0x0
    PmtuAger            0          0             0x0
    DeadWait            0          0             0x0
    Linger              0          0             0x0
    ProcessQ            0          0             0x0
    
    iss: 2057115318  snduna: 2057115748  sndnxt: 2057115748     sndwnd:  15955
    irs: 3480424370  rcvnxt: 3480424751  rcvwnd:      16004  delrcvwnd:    380
    
    SRTT: 259 ms, RTTO: 579 ms, RTV: 320 ms, KRTT: 0 ms
    minRTT: 16 ms, maxRTT: 300 ms, ACK hold: 200 ms
    Status Flags: passive open, gen tcbs
    Option Flags: nagle, path mtu capable
    IP Precedence value : 6
    
    Datagrams (max data segment is 1460 bytes):
    Rcvd: 27 (out of order: 0), with data: 0, total data bytes: 0
    Sent: 26 (retransmit: 0, fastretransmit: 0, partialack: 0, Second Congestion: 0), with data: 1, total data bytes: 24
     Packets received in fast path: 0, fast processed: 0, slow path: 0
     fast lock acquisition failures: 0, slow path: 0
    
    
    R0#
    
    ```

1. Routeテーブルを確認します。(B:BGP)の結果が流れてきました
    ```bash
    R0#show ip route 
    Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
           D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
           i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
           * - candidate default, U - per-user static route, o - ODR
           P - periodic downloaded static route
    
    Gateway of last resort is not set
    
         172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
    C       172.16.0.0/16 is directly connected, GigabitEthernet0/0/1
    L       172.16.0.1/32 is directly connected, GigabitEthernet0/0/1
         192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks
    C       192.168.10.0/24 is directly connected, GigabitEthernet0/0/0
    L       192.168.10.1/32 is directly connected, GigabitEthernet0/0/0
    B    192.168.20.0/24 [20/0] via 172.16.0.2, 00:00:00
    
    R0#
    ```


## 疎通
### PC0→PC1
1. PC0からPC1へpingを実行します。成功しました
    ```powershell
    C:\>ping 192.168.20.10
    
    Pinging 192.168.20.10 with 32 bytes of data:
    
    Reply from 192.168.20.10: bytes=32 time=16ms TTL=126
    Reply from 192.168.20.10: bytes=32 time<1ms TTL=126
    Reply from 192.168.20.10: bytes=32 time<1ms TTL=126
    Reply from 192.168.20.10: bytes=32 time<1ms TTL=126
    
    Ping statistics for 192.168.20.10:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 0ms, Maximum = 16ms, Average = 4ms
    
    C:\>
    ```

### PC1→PC0
1. PC1からPC0へpingを実行します。成功しました

    ```powershell
    C:\>ping 192.168.10.10
    
    Pinging 192.168.10.10 with 32 bytes of data:
    
    Reply from 192.168.10.10: bytes=32 time<1ms TTL=126
    Reply from 192.168.10.10: bytes=32 time<1ms TTL=126
    Reply from 192.168.10.10: bytes=32 time<1ms TTL=126
    Reply from 192.168.10.10: bytes=32 time<1ms TTL=126
    
    Ping statistics for 192.168.10.10:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 0ms, Maximum = 0ms, Average = 0ms
    
    C:\>
    ```
# 考察
今回、BGPを使用して異なるNWセグメントの経路情報の交換を試してみました。
次回以降は、ACLやNATなどをためしてみようとおもい

# 参考

https://qiita.com/zumax/items/282acb1700a562a87fbe

https://aws.amazon.com/jp/what-is/border-gateway-protocol/