CCNAの内容を復習してみた(ルーティングプロトコル)

# 1.はじめに
前回はルーティングについてざっくり復習しました。
今回は続きとして、ダイナミックルーティングで使用するルーティングプロトコルについてまとめていきます。

# 2.ルーティングプロトコルとは
ルータ同士が情報を交換し合う際に使用するプロトコルです。
ルータは、お互いに情報を交換し合う事で、最適な経路を選択し、自身の保有しているルーティングテーブルを最新の状態に保つことができます。

ルーティングプロトコルはいくつかの種類がありますが、
本ページでは代表的なプロトコルをピックアップして、それぞれの特徴を見ていきたいと思います。

# 3.IGPとEGP
ルーティングプロトコルは、まずIGPとEGPの大きな二つの枠に分類できます。
二つの違いは、ASの内部で使用するプロトコルか、ASの外部で他のASとのやり取りを行う際に使用するプロトコルか、という点です。
AS,IGP,EGPに関する説明は以下に記載します。
<br>
**【3-1】AS(Autonomous System)**
**・AS**
ASはネットワークの構成単位です。
企業ネットワークなど、同一のルーティングポリシーで管理されているネットワークの集合体が一つのASとなります。(インターネット内に存在する自治体みたいなイメージです)
私たちの使用しているPCやデバイスは全て、どれかしらのASに所属するネットワークに接続していることになります。

**・ASN(Autonomous System Number)**
各ASには一意の識別番号(ASN)が割り当てられており、インターネット上で独自のネットワークとして認識されます。
AS番号は、グローバルAS番号とプライベートAS番号の大きく2つに分類することができます。
ASの外部とやり取りをする際は、この番号を使用して他のASと経路情報を交換します。
(ASNはASの外部との通信を行う場合でのみ必要となります。)
<br>
**【3-2】IGP(Interior Gateway Protocol)**
各AS内で経路情報を交換するために使用するプロトコルです。
IGPには、RIP/OSPF/EIGRPなどの種類があります。

**RIP**はルータへの負荷が少なく、設定も簡単ですが、大規模で複雑なネットワーク環境には適していません。
**OSPF**は複雑な処理を行うため、ルータへの負荷は大きいですが、大規模環境や経路上の障害発生時も素早く対応する事が出来ます。
**EIGRP**は上記二つのいいとこ取りという感じですが、Ciscoが独自に開発したプロトコルの為、Cisco製品でのみ使用が可能です。
<br>
**【3-3】EGP(Exterior Gateway Protocol)**
自ASと他のASとのやり取りを行う際に、異なるAS間で経路情報を交換するために使用するプロトコルです。
その中でも、主流のプロトコルとしてBGPがあります。

# 4.IGPに分類されるルーティングプロトコル
**【4-1】RIP(Routing Information Protocol)**
**・概要**
経路を選択する際の計算量が少なくて単純なプロトコルですので、スペックの低いルータなどでも使用できて、管理や設定が容易です。
また、ルータのCPUやメモリの負荷は少なめです。

**・経路の選択方法**
RIPはディスタンスベクタ型のアルゴリズム(処理方法)を使用します。
隣接するルータと30秒間隔で経路情報を交換し合い、最小の「ホップ数」(宛先に辿り着くまでに経由するルータの数)となる経路を最適経路として選択します。
RIPの「メトリック値」＝「ホップ数」となります。

隣接するルータ間で経路情報を交換し合うため、離れているルータまで情報が伝わるのが遅く、大規模環境での使用を得意としていません。
また、RIPがカウントする上限ホップ数は15ですので、宛先までに経由するルータの個数が16を超える場合は到達不能と判断されてしまいます。

**~備考~**
ルーターの経由数のみで最適経路を判断するという性質上、各回線の速度を考慮しないため、結果として通信速度の遅い経路を選択してしまうことがあります。
(以下の図では、赤線の経路を最適経路とします)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950373/a0241e73-81ba-0f6e-8a7e-c3b929a842ab.png)

**・ルーティングループについて**
RIPを使用する上で発生する可能性のある問題がルーティングループです。
経路情報を交換するタイミングで障害が発生すると、ルーティングループ(隣接する機器同士で転送ループが発生し、ホップ数のカウント=メトリックが上がり続ける)が発生してしまいます。

メトリックが上限である16に到達した時点で、到達不能としてルーティングテーブルから破棄されますが、情報交換が30秒間隔の為、メトリックが上限に到達するまでに数分間かかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3950373/47f59b7f-89cb-be7f-3a3b-124784a3b820.png)

なお、ルーティングループを防ぐためには以下の機能を使用します。
(デフォルトで有効になっているらしい)
①スプリットホライズン
②ルートポイズニング
③ポイズンリバース
④ホールドダウンタイマー
⑤トリガードアップデート
<br>



**【4-2】OSPF(Open Shortest Path First)**
**・概要**
仕様や処理が複雑なため、ルータへの負荷が大きく実装も難しいが、ネットワークの変更や経路上の障害にも素早く柔軟に対応でき、負荷分散も可能です。
その為、中～大規模環境向けのルーティングプロトコルと言えます。

**・経路情報の取得方法**
OSPFはリンクステート型のアルゴリズムを使用しています。
ルータ同士でLSA(Link State Advertisement)という情報を交換し、ネットワーク内の情報を集めてLSDB（Link State Database）を作成します。
LSAには、OSPFエリア(LSAを交換する範囲を示す論理グループ)内にいるルータの情報や「コスト(インターフェイスの帯域幅によって算出される値)」情報が含まれており、
OSPFエリア内の各ルータは、それらの情報を基にルーティングテーブルを作成します。
なお、OSPFの「メトリック値」＝「コスト」となります。

情報をルータ同士で交換するには、隣接ルータとネイバー関係を確立させる必要がありますが、そのためには隣接ルータと以下の設定値を完全一致させる必要があります。
①エリアID
②ネットワークマスク
③Hello/Deadインターバル
④スタブエリアフラグ(オプション)
⑤認証設定の値(認証が有効な場合)
⑥隣接するI/FのMTUサイズ


**~備考~**
OSPFエリア内の全てのルータがネットワーク内の情報に関するデータベース(LSDB)を保持しており、ネットワークに変更があった際にLSAを送信して情報の差分を埋める方式(トリガーアップデート)を採用しています。
その為、全てのルータが速やかにネットワーク状況の変更を認識し、最新の経路情報を保持する事ができます。(コンバージェンス)
コンバージェンスが高速なので、RIPのように誤ったルーティングテーブルを保持している事によってルーティングループが発生する、というような事はほとんど発生しません。

# 5.EGPに分類されるルーティングプロトコル
**【5-1】BGP(Border Gateway Protocol )**
**・概要**
BGPは、組織間通信などの、異なるAS間を接続する際に使用され、
「eBGP(exterior BGP)」と「iBGP(interior BGP)」で構成されています。

**eBGP**：異なるAS間を結ぶ境界上のルータ同士がAS間経路情報(自ASが他のどのASと繋がっているか等)を交換します。
**iBGP**：AS内のルータ間でAS間経路情報を交換します。

**・経路情報の取得方法**
BGPはパスベクタ型のアルゴリズムを使用しています。
隣接するAS間で経路情報を交換し合い、AS内の経路情報とパスアストリビュート(各ASの管理者が設定する事のできる経路の優先度)を基に最適経路を選択します。
パスアストリビュートが設定されていないデフォルトの状態では、宛先ネットワークまでに経由するASが少ない経路を最適経路として選択します。
なお、BGPの「メトリック値」＝「パスアトリビュート」となります。

# おわり