ルータの機能とルーティング【ルーティングの設定】

CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。


前回投稿記事
-
こちらの[「ルータの機能とルーティング【ルータの設定】」](https://qiita.com/k-yasuhiro/items/a763283d7c33a269e3bb)投稿記事の続きです。
<br>


2. ルーティングの基本
-

#### 2-1.ルーティングテーブルの確認
ルータは、ルーティングの際にルーティングテーブルを参照してパケットを転送しまする為、
ルーティングテーブルの状態を確認する事はとても重要です。

ルーティングテーブルの確認をするには、<b>特権EXECモード</b>で、
次の<font color="Red"><b>show ip routeコマンド</b></font>を実行します。

```
# show ip route
```
<br>

#### 2-2.ルーティングテーブルの見方
<img width="600" alt="ファイル名" src="https://i.gyazo.com/67f0cd55d454e7a2edf16bab55ced0a3.png">

||各項目|説明|
|:---:|:---|:---|
|①|ルートの情報源|そのルートがどのようにルーティングテーブルに追加されたのかを示すコード。※1|
|②|宛先ルート、サブネットマスク|宛先ネットワークを示すアドレスとサブネットマスクの情報。|
|③|アドミニストレーティブディスタンス|ルーティングテーブル上に、プレフィックス長が同じ宛先ルートが複数ある場合、このアドミニストレーティブディスタンス(AD)の値が参照される。|
|④|メトリック|ダイナミックルーティングにおいて、宛先ルートに対し複数のルートが存在する場合に最適経路を選択する為に使用される値。|
|⑤|ネクストホップ|受信したパケットを宛先ネットワークに転送するために次にパケットを転送する隣接ルータのIPアドレスのこと。|
|⑥|宛先ルートの学習時間|ダイナミックルーティングにおいて、宛先ルートが追加されてからの経過時間。|
|⑦|出力インターフェース|受信パケットを宛先ネットワークに転送するための出力インターフェースを表示。|
>
※1　直接接続ルートの場合「 C 」、スタティックルートの場合「 S 」、
ダイナミックルートの場合はルーティングプロトコルによりコードが異なり、
今回はルータでRIPを有効にしているので、ルーティングテーブル上では「 R 」が表示されている。
また、OSPFを有効にしている場合「 O 」、EIGRPを有効にしている場合「 D 」で表示される。
>
※「 directly connected 」と表示されているのは、直接ルータに接続されている事を表しているので、
次に経由するルータはありません。こうした直接接続されているインターフェイス上のネットワークを、<b>接続ルート</b>といいます。

#### 2-3.ローカルルート
ルータの機種によっては、接続ルート以外に<font color="red">ローカルルート</font>がルーティングテーブルに、
表示される事があります。ローカルルートは、<b>コード「 L 」</b>で表示され、
ルータのインタフェースに設定されているIPアドレスを、示すホストルートです。
ホストルートとは、サブネットマスク/32のルート情報です。

<font color="green">接続ルートには、接続しているネットワークのネットワークアドレスが、表示され
ローカルルートには、接続している自身のインターフェイスのIPアドレスが表示されます。</font>
<br>

#### 2-4.ロンゲストマッチ
ルーティングテーブルに登録されている宛先ネットワークを選択するとき、
宛先が複数ある場合、ネットワークアドレスのビットに最も長く一致しているルートに転送します。
この規則のことを<font color="red"><b>ロンゲストマッチ（最長一致)</b></font>といいます。


<img width="600" alt="ファイル名" src="https://i.gyazo.com/0c60f32adf94d62df1d8c884c1141773.png">
上図のようなルーティングテーブルを持つルータを例にあげると、
宛先が「172.16.1.1」宛てのパケットは、ルーティングテーブルに登録されている、
<b>「172.16.0.0/16」</b>と<b>「172.16.1.0/24」</b>両方の宛先ネットワークに該当します。
この時、宛先ネットワークのアドレスのビットが最も長く一致しているルートを選択します。
この場合は、<font color="green">ビットが「/24」まで合致している「172.16.1.0/24」を選択します。</font>
なので、ルータは F0/1のインターフェースから 10.1.2.253 のルータにパケットを転送します。
<br>

#### 2-5.デフォルトルート
ルータはルーティングテーブルに宛先ネットワークの情報がなければ、パケットを破棄してしまいます。
しかし、インターネット上には70万を超えるルートが存在しています。これら全てを登録する事は、
処理性能といった面から普通のルータには不可能です。

そこで、宛先が分からないパケットを、ある特定のルートに送信するように
ルーティングテーブルを設定出来るようになっています。
このルートを<font color="red"><b>デフォルトルート</b></font>といいます。
また、ルーティングテーブルに宛先がない場合の最後の手段という意味で、
<font color="Green">ラストリゾートゲートウェイ</font>ともいわれます。

⚫️ デフォルトルートのメリット
デフォルトルートを設定する事で、ルーティングテーブルに該当するルート情報がなくても
パケットが破棄されず、デフォルトルートに送信されるようになります。
その為、宛先を1つずつ登録する必要がなくなります。またルータが記憶しておかなければ
ならないルートの数が減るのでCPUに掛かる負荷を抑える事にも繋がります。
<br>



3.スタティックルーティング
-

#### 3-1.スタティックルーティングとは？

スタティックルーティングとは、管理者がルーティングテーブルにルート情報を手動で、
設定したルートのことです。スタティックルーティングでは、スタティックルートという手動で
登録したルートを利用して、パケットを転送します。

##### ■ 3-1-1.スタティックルーティングのメリット
・手動でルート情報を登録するので、基本的にはルーティングテーブルからその情報は消えません。
・ルータが最適な経路を自分で計算する訳でないので、ルータのCPUにかかる負荷が小さい、また
　ルート間でルートの情報を交換する必要がない為、帯域にかかる負荷も小さい。

##### ■ 3-1-2.スタティックルーティングのデメリット
・ネットワークの状態に変化があった場合でも、自動的にルートの切り替えができない為
　障害は発生したとしても、そのまま転送して切り替わることはありません。

<br>

#### 3-2.スタティックルーティングの設定

スタティックルーティングの設定をするには、<b>グローバルコンフィグレーションモード</b>で、
次の <font color="Red"><b>ip routeコマンド</b></font>を実行します。

```
(config)# ip route < 宛先ネットワーク > < サブネットマスク > < ネクストホップ | 出力インターフェイス > 
　　　　　　[< アドミニストレーティブディスタンス値 >]
```
>
＜宛先ネットワーク＞ と ＜サブネットマスク＞は、宛先となっているネットワークを指定します。
＜ネクストホップ＞は、その宛先ネットワークに向かう為のネクストホップの<b>IPアドレス</b>を指定します。
＜出力インターフェース＞は、出力インターフェースを指定しますが、Serialなどのポイントツーポイントのインターフェースであることが条件。
＜アドミニストレーティブディスタンス値＞は、後程詳しく説明

下記の図を基に、スタティックルーティングの設定の流れを確認
<img width="800" alt="ファイル名" src="https://i.gyazo.com/f99f4623443476d0b014f82ac29f616e.png">
IPアドレスを設定しただけの、各ルータのルーティングテーブルは上記のようになっていて、
両ルータ共に<b>接続ルート</b>しか存在していません。
Router1が PC-Aからの通信を PC-Bに転送するには、接続ルートの192.168.0.0/24 と
192.168.1.0/24 以外に <font color="green">「192.168.2.0/24」</font>の情報が必要です。
この情報を ip routeコマンドで追加します。

```
Router1(config)# ip route 192.168.2.0 255.255.255.0 192.168.1.253
```
Router1が知らないルート「192.168.2.0/24」なので、<b>宛先にはそのネットワークを指定</b>します。
ネクストホップは、Router2になるので、Router2のIPアドレスである<font color="green">「192.168.1.253」</font>を指定します。
ネクストホップで指定するIPアドレスは、設定しているルータと直接繋がっている隣接のルータの、
IPアドレスなので、Router1と繋がっているRouter2のF1のIPアドレスを指定する。
要は、<font color="green">「192.168.1」の同じネットワーク内</font>で繋がっているので、Router1と繋がっているRouter2の
F1のIPアドレスを指定する。

<img width="800" alt="ファイル名" src="https://i.gyazo.com/db81ea434423f6b9b047dbbfa1807a74.png">

これで、Router1のルーティングテーブルに、スタティックルートの追加がされた事で、
PC-Aから送信されたパケットが Router1、2を通り PC-Bに届きますが、
これだけでは、PC-Aと PC-Bの通信は出来ません。

PC-Aから送信されたパケットが、PC-Bに届き、それに対してPC-Bが返信する場合、
PC-Bから PC-A宛の通信が、まず Router2に送信されます。
「192.168.0.10」宛の通信を受け取った Router2は、該当するネットワークがない為、
パケットを破棄しまいます。
そこで、Router2にもスタティックルートの追加する必要があります。

```
Router2(config)# ip route 192.168.0.0 255.255.255.0 192.168.1.254
```
Router2は、192.168.0.0/24 を知らないので、そのネットワークを追加します。
ネクストホップは、Router1になるので、Router1のIPアドレスである<font color="green">「192.168.1.254」</font>を指定します。

<img width="800" alt="ファイル名" src="https://i.gyazo.com/d84f977a533f4a76b7b0c500f6eb4c97.png">

このようにして、スタティックルーティングの設定は手動で宛先を追加していきます。
<br>
Router2のスタティックルーティングの設定後のルーティングテーブル
では下記のうように表示されます。
<img width="600" alt="ファイル名" src="https://i.gyazo.com/0955e789f255a305fb706348e08fb328.png">
>
・スタティックルートコードは「S」になります。
・接続ルートの違い [ 1 / 0 ] が表示されています。
[ 1 ]の部分は、<b>アドミニストレーティブディスタンス値</b>を表し、[ 0 ]の部分は、<b>メトリック</b>を表します。
「via 192.168.1.254」は、ネクストホップを表しています。
<br>

#### 3-3.デフォルトルートの設定

スタティックルートでは、通信したい宛先ネットワーク事に、スタティックルートを1行ずつ
設定していく必要があります。しかし、通信したい宛先ネットワークが膨大な場合、
設定していくのが非常に手間です。
そのような場合は<b>デフォルトルート</b>という特別なルートを設定します。

デフォルトルートの設定をするには、<b>グローバルコンフィグレーションモード</b>で、
次の <font color="Red"><b>ip routeコマンド</b></font>を実行します。

```
(config)# ip route 0.0.0.0.0.0.0.0 <ネクストホップ | 出力インターフェイス>
　　　　　　[<アドミニストレーティブディスタンス値>]
```
デフォルトルートの設定は、スタティックルート追加の際に宛先ネットワークとサブネットマスクを、
指定していた部分を<font color="green">全て0にします。</font>
その他は、スタティックルート追加の時と同様です。

デフォルトルートの設定の場合、PCからの通信をインターネット上に転送するには、
取り敢えずもう一方のRouterに向かえば良いので、次のような設定をします。

```
Router1(config)# ip route 0.0.0.0.0.0.0.0 192.168.1.253
```

<img width="800" alt="ファイル名" src="https://i.gyazo.com/94964212881c5e7e4a859ee785059a70.png">

こうする事で、ルーティングテーブルに宛先ネットワークの情報が登録されていなくても、
Router1は、192.168.1.253にパケットを転送するするようになります。
そして、Router1から転送されてきた通信を受け取るもう一方のRouterにも、
転送先はインターネット側に向けてデフォルトルートの設定が必要です。宛先がわからない場合、
ISPに転送することになります。後は、このパケットを受け取った 
ISP(インターネットサービスプロバイダ)ルータが適切な処理をしてくれます。


Router1のデフォルトルートの設定後のルーティングテーブル
では下記のように表示されます。
<img width="600" alt="ファイル名" src="https://i.gyazo.com/810e99062dd79f555cd1ad6fbb525893.png">

デフォルトルートコードも「S」となりますが、ただその<font color="green">後ろにデフォルトルートである事を、
表す「*」が付きます。</font>また、ネットワークもプレフィックスも全て0になります。

<br>
4.ダイナミックルーティング
-

#### 4-1.ダイナミックルーティングとは？

ダイナミックルーティングとは、ルータ同士がルーティングテーブルの作成に必要な情報を、
自動でやり取り、その情報を基に宛先へのルートを決定し登録します。

##### ■ 4-1-1.ダイナミックルーティングのメリット
・自動的にルーティングテーブルの学習、変更、保存、管理者の負担を大幅に削減出来る。
・ルータ同士が自動で情報を交換している為、障害が発生すれば他のルータにも伝えられ、
　もし別のルートが存在している場合、自動でそちらに切り替わる。

##### ■ 4-1-2.ダイナミックルーティングのデメリット
交換した情報から最適なルートを選び出す為の計算を行う為、パケットのやり取りを定期的に
行う事で帯域幅の消費、メモリやCPUの負荷がかかる。
<br>

ダイナミックルーティングは、ルータ同士が自動で情報を交換するので、
ルータ間でどのような情報をどのようなタイミングで交換するかなどルールが必要です。
そこで、<font color="Red"><b>ルーティングプロトコル</b></font>を策定して自動でルート情報を交換出来るようにしています。
<br>

#### 4-2.ルーティングプロトコル

ダイナミックルーティングで使われるルーティングプロトコルには、複数の種類があり、
それぞれ最適な経路判断する基準や、他のルータに通知する情報の内容や動作などが異なります。
各プロトコルの特徴や動作を理解し、環境にあったプロトコルの選択をする必要がある。

また、ルーティングプロトコルを説明するのに必要なキーワードがあり、
<font color="Red">「メトリック」</font>と<font color="Red">「アドバタイズ」</font>、そして<font color="Red">「コンバージェンス」</font>です。

##### ■ 4-2-1.メトリック
メトリックとは、<b>「最適なルートの選択基準」</b>を決める為のものです。
最適なルートとは、宛先のネットワークに最短で到達出来るルートとの事です。
ルーティングプロトコルでルートのの情報をやりとりする場合、ルート情報が同じ
ルーティングプロトコルで複数伝わってくる事があります。その場合、どれが最適なルートなのかを
判断する必要があり、その判断基準として使われるのがメトリックの値です。
<font color="green">最もメトリックの値が小さいものから優先され、ルーティングテーブルに登録されます。</font>

例えば、ルーティングプロトコルの RIPの場合は、<font color="Red"><b>ホップ数（中継するルータ数）</b></font>を
メトリックとして使用します。また OSPSだった場合、<font color="Red"><b>帯域幅</b></font>から計算する等プロトコルに
よって選択基準が異なります。

##### ■ 4-2-2.アドバタイズ
ダイナミックルーティングでルータ同士が交換しているルート情報を、
<font color="green"><b>ルーティングアップデート</b></font>といい、またルートの情報を隣接ルータに通知する事を、
アドバタイズといいます。

##### ■ 4-2-3.コンバージェンス
コンバージェンスとは、<b>「全てのルータにルート情報が行き渡った状態の事」</b>です。
ネットワークの追加、削除、障害発生などにより、ネットワーク全体の構成が変わることがあります。
その際、ルータが古い情報に基づいてルーティングをすると正しくパケットが届かない場合があります。
なので、「全てコンバージェンスになるまでの時間」がルーティングプロトコルでは、
重要なポイントになります。

<br>

#### 4-3.ルーティングプロトコルの分類

##### ■ EGPとIGP
ルーティングプロトコルは複数の種類がありますが、先ず大きくわけて2種類に分かれます。

<font color="Green">自律システム（AS：Autonomous System）</font>間ルーティングプロトコルの、
<font color="Red"><b>EGP（Exterior Gateway Protocol）</b></font>と自律システム内で経路情報交換をするルーティングプロトコルの、
<font color="Red"><b>IGP（Interior Gateway Protocol）</b></font>です。

自律システム（AS）とは、1つの管理ポリシーで制御されるネットワークの集合体の事です。
インターネットのような巨大なネットワークでは、ルータごとにそのネットワークを把握する事は、
困難なので、そこで各ルータごとに把握するのではなく、組織事のルータやネットワークを、
ひとまとめにして、ASという単位で考え、AS単位事にネットワークを管理します。
<img width="500" alt="ファイル名" src="https://i.gyazo.com/8b7e6fe10642903d56cf4e0613f6abe4.png">


自律システム（AS）は、<font color="Red"><b>インターネットサービスプロパイダ（ISP）</b></font>等がこれにあたり、
自律システム（AS）にはインターネットで、ICANNから一意な番号（自律システム番号）が
割り振られます（日本の場合はJPNICから割り振られます）
この自律システムの集合体がインターネットという形になっています。
<br>

また、自律システム（AS）内部の経路情報をやり取りに使用されているのが、
IGPに分類されるルーティングプロトコルです。下記のものがIGPに分類されます。
・RIP （Routing Information Protocol）
・OSPF （Open Shortest Path First）
・EIGRP （Enhanced Interior Gateway Routing Protocol）

#### 4-4.アルゴリズムによる分類
ルーティングプロトコルは、最適なルートを計算する際の考え方が異なります。
この考え方を、<font color="Red"><b>ルーティングアルゴリズム</b></font>といいます。
IGPに分類されるルーティングプロトコル（RIP等）は、さらにその動作の違いにより、
3種類に分ける事が出来ます。
「ディスタンスベクタ型」「リンクステート型」「ハイブリッド型」の3種類です。
<br>

##### ■ 4-4-1.ディスタンスベクタ型
ディスタンスベクタ型は、ルーティングテーブルの情報を交換し<font color="Green">距離（Distance）</font>と<font color="Green">方向（Vector）</font>に
より最適経路を決定する方式です。
<font color="green"><b>ベルマン-フォード法<b></font>というアルゴリズムを使って、宛先のネットワーク迄の最適なルート選出します。
ディスタンスベクタ型に分類されるルーティングプロトコルは、<font color="Red">RIP※1</font>です。
>
※1 RIPは，ネットワークで接続したルータ間で使用するルーティングプロトコルです。
各ルータはRIPを使用して自ルータから到達できるネットワークとそのネットワークへの
ホップ数(メトリック)を通知し合う事によって経路情報を生成します。


##### ■ 4-4-2.リンクステート型
リンクステート型は、インターフェイスのリンク（Link）の状態（State）の情報を交換し合い、
全体構造を把握してから最適なルートを選出します。
リンクの状態の情報を交換し合う事により、各ルータがネットワークの全体構成を把握し、
その情報から、<font color="green"><b>SPFアルゴリズム</b></font>を使って計算し最適なルート選出します。
リンクステート型に分類されるルーティングプロトコルは、<font color="Red">OSPF※2</font>と <font color="Red">IS-IS※3</font>です。
>
※2 OSPFは、ダイナミックルーティングを実現するルーティングプロトコルです。
※3 IS-ISは、ルータ間の接続の状態（トポロジ）に基づき最短経路を計算するプロトコルです。

##### ■ 4-4-3.ハイブリッド型（拡張ディスタンスベクタ型）
ハイブリッド型は、ディスタンスベクタ型の利点とリンクステート型の利点を組み合わせた方式。
基本としては、ディスタンスベクタ型なので、<font color="green">拡張ディスタンスベクタ型</font>とも呼ばれる。
アルゴリズムは、<font color="green"><b>DAUL</b></font>を使用します。
ハイブリッド型に分類されるルーティングプロトコルは、<font color="Red">EIGRP※4</font>です。
>
※4 EIGRPは、シスコ独自のルーティングプロトコルで、ディスタンスベクタ型とリンクステート型の
両方の利点を備えているルーティングプロトコルです。

DAULは、帯域幅や遅延、信頼性、負荷、そしてMTUの５つの値に<b>K値</b>という重みを掛けて、
メトリックを計算します。
その結果から、最もメトリックが最も小さいものを最適なルート（<font color="green">サクセサ</font>）します。
また、最適なルートがダウンした際の予備のルート（<font color="green">フィージブルサクセサ</font>）を、
用意して切り替えられるようにしています。
<br>

|項目　　　　|ディスタンスベクタ型|ハイブリッド型|リンクステート型|
|:---|:---|:---|:---|
|アルゴリズム|ベルマン-フォード法|DAUL|SPF|
|交換する情報|ルーティングテーブル|ルーティングテーブル一部|リンクステート|
|コンバージェンス|遅い|速い|速い|
|ルータの処理負|小さい|リンクステートよりは小さい|大きい|
|プロトコル|RIP|EIGRP|OSPF IS-IS|

<br>

#### 4-5.ルーティングアップデートにサブネットマスクを含めるかどうかで分類

ルーティングアップデートにサブネットマスクを含めるかどうかで分類する事も出来ます。

ルーティングアップデートにサブネットマスクの情報を含めないルーティングプロトコルを、
<font color="Red">クラスフルルーティングプロトコル※5</font>といい、サブネットマスクの情報を含めるルーティングプロトコルを、
<font color="Red">クラスレスルーティングプロトコル</font>といいます。

先程のプロトコルでは、RIPがクラスフルルーティングプロトコルで、OSPFやIS-IS、EIGRP等は、
クラスレスルーティングプロトコルに分類されます。
またVLSM環境では、サブネットマスクの情報を伝えられないクラスフルルーティングプロトコルは、
使用出来ません。
>
※5 クラスフルルーティングプロトコルは、クラス単位でネットワークアドレスを認識するので、
ネットワークアドレスとホストアドレスの区切りを示すサブネットマスクは必要ありません。

<br>

#### 4-6.アドミニストレーティブディスタンス

##### ■ 4-6-1.アドミニストレーティブディスタンスとは？
ルータでは、ルーティングプロトコルを必ずしもネットワークで1種類だけ使うという訳ではありません。
構成や状態に応じて複数のルーティングプロトコルを併用することも可能ですし、
スタティックルーティングとダイナミックルーティングを併用する事も出来ます。


その場合、ルーティングテーブルにはいずれかの最適ルートしか載りません。
よって、どのルーティングプロトコルから入手した経路がよりベストかということを、
決定しなければいけません。
これはルータにより判断基準が異なりますが、シスコ製ルータの場合、
<font color="Red">アドミニストレーティブディスタンス</font>と呼ばれる値で、決定されます。
<font color="green">アドミニストレーティブディスタンス値は、ルーティングプロトコルの優先度で、
値が小さい値の方が優先度が高くまります。</font>

アドミニストレーティブディスタンス値は、下の表のように定義されています。
<img width="700" alt="ファイル名" src="https://i.gyazo.com/8d0e5ab6b501da4a7d1f0e36d065d885.png">
例えば、OSPF と RIPを比較した場合、OSPFの値が１１０、RIPの値が１２０という事で、
OSPFの値の方が小さいので、OSPFのルートが優先される。
<br>

##### ■ 4-6-2.フローティングスタティックルート
スタティックルートは、デフォルトでのアドミニストレーティブディスタンス値（AD値）が 1と
なる為、ダイナミックルーティングで登録されたルートよりも優先されます。これは、
<b>プライマリルート</b>として使用するといった形になります。

しかし、AD値を変える事で、普段はダイナミックルーティングプロトコルを利用し、障害発生等で
ダイナミックルーティングプロトコルによるルートの学習が出来なくなった際に、スタティックルート
を使用するようにする事も出来ます。これは、<b>バックアップルート</b>として使用するといった形になります。
このスタティックルートを、<font color="Red">フローティングスタティックルート</font>といいます。
<br>

##### ■ 4-6-3.フローティングスタティックルート設定例

接続したい経路（スタティックルート）が2経路あり、
かつRouterB経由を優先し、RouterBに障害が発生した場合に
RouterC経由にする場合はRouterAで以下を設定を行います。

<img width="700" alt="ファイル名" src="https://i.gyazo.com/2f26dbf251506fbc3a3682bb7027db22.png">

```
RouterA(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1      // RouterBの経路設定
RouterA(config)#ip route 192.168.1.0 255.255.255.0 192.168.3.1 100  // RouterCの経路設定
```

この設定でRouterCの経路を設定したスタティックルートは、
AD値が100に設定されるので、RouterB経由の経路が優先されます。
スタティックルートのデフォルト値は1なのでそれよりも大きい値を設定する。

RouterBの障害等でRouterB経由の経路が、
ルーティングテーブルからなくなるとRouterCの経路が有効になります。
 
RouterBが復旧するとRouterB経由のスタティックルーティングの経路が有効になり、
切り戻されます。

また、スタティックルート2つ設定した場合、ルーティングテーブルには優先されるRouterBの、
経路しか登録されていません。どちらのコマンドもコマンドとしては有効ではあるのですが、
<font color="green">ルーティングテーブルには優先度の高いルートしか登録されません。</font>