[CCNA ICND1] 08. ルーティングの基礎

# 1. ルーティング

ルータはネットワークを相互接続し、パケットを中継するレイヤ3デバイス。

パケットを中稀有する際には、宛先IPアドレスとルーティングテーブルを参照して最適経路を選択する。

ルーティングはルータの重要機能であり、IPネットワークを理解するには、ルーティングの知識が不可欠。

## 1.1. ルーティング

ルーティングとは、パケットを宛先ホストに届けるために最適な経路を選択して転送するプロセスのこと。

ルータは最適経路を選択するためにルーティングテーブルを使用する。

ルーティングテーブルとは、受信したパケットを次にどこへ転送すべきかを決定するための経路情報を保持しているデータ構造。

### 1.1.1. ルーティングテーブルの学習方法

1. 直接接続ルートを使用する

2. スタティックルートを使用する

3. ダイナミックルートを使用する

### 1.1.2. ルーティングテーブルの表示

```shell-session
RT# show ip route

Codes: ....

Gateway of last resort is not set①

③ 172.16.0.0/16 is variably subnetted, 5 subnets, 2 masks②
C 172.16.1.0/24 is directly connected, FastEthernet0
L 172.16.1.1/32 is directly connected, FastEthernet0
C 172.16.2.0/24 is directly connected, FastEthernet1
L 172.16.2.1/32 is directly connected, FastEthernet1
D 172.16.3.0/24 [90/30720] via 172.16.2.2, 00:00:43, FastEthernet1④
S 192.168.1.0/24 [1/0] via 172.16.2.2
```

1. デフォルトルート(ラストリゾートゲートウェイ) 
 「not set」はデフォルトルートが存在しないことを表す。
 デフォルトルートが存在する場合にはネクストホップアドレスが表される。

2. サブネット情報
 172.16.0.0/16のネットワークのサブネット情報

3. 経路情報の情報源(種類)を表すコード 
「Codes」を参照

4. ダイナミックルート 
ルーティングプロトコルによって動的に学習したダイナミックルートの情報 
宛先「192.168.3.0」と通信するときには、「90」の信頼性と「30720」のコストを持つ経路を利用する。 
「FastEthernet1」と接続されているネクストホップネットワークアドレスは「172.16.2.2」。 
最後の情報アップデートから「43」病が経過したことを表す。

# 2. スタティックルーティング

管理者がてどうで設定した経路情報をスタティックルーティングという。

## 2.1. スタティックルーティングの使用理由

1. メモリやCPUなどのシステムリソースに制限がある場合

2. スタブネットワークの場合

3. デフォルトルートを使用する場合

4. 宛先へのダイナミックルートがない場合

5. ISPから顧客の内部ネットワークへの経路が必要な場合

6. ダイヤルアップ接続の場合

ルーティングテーブルにスタティックルートを登録するには、「ip route」コマンドを使用する。

```
* スタブネットワーク
外部ネットワークに連結されている端末が1つしかないネットワーク

* ダイヤルアップ
インターネットや社内LANに接続する際に、電話回線やISDN回線などの公衆回線とモデムを使用してプロバイダに電話をかけて接続する方法
```

## 2.2. スタティックルートの設定

```shell-session
(config)# ip route <ip-addr> <subnetmask> {<next-hop>|<interface>} [<distance>] [<permanent>]

# distance：アドミニストレーティブディスタンス値(デフォルトは1)
# permanent：インターフェイスがダウンしても、経路情報がルーティングテーブルから削除されないように設定
```


### 2.2.1. 設定方法1：ネクストホップアドレス指定

```shell-session
RT# show ip route

Codes:
...
S 172.16.2.0/24 [1/0] via 172.16.12.2
```


### 2.2.2. 設定方法2：出力インターフェイス指定

```shell-session
RT# show ip route

Codes:
...
S 172.16.2.0/24 is directly connected, Serial0/0/1
```

## 2.3. デフォルトルート

デフォルトルートは、ルーティングて0ブルに明示的に登録されていないネットワーク宛のパケットを転送する際に使用する経路情報のこと。

```shell-session
(config)# ip route 0.0.0.0 0.0.0.0 {<next-hop>|<interface>}
```

```
* 注意：ip default-gatewayとの比較
ルータで「no ip routing」を実行し、IPルーティング機能が無効になっている場合に使用する。
L2SWにはルーティング機能がないため、「ip default-gateway」を使用する。

* ルーティングはレイヤ3の機能のことを覚えておこう！
```

### 2.3.1. 試験対策1

1. ISP、または大規模ネットワーク側は`スタティックルート`を設定

2. 顧客、またはスタブネットワーク側は`デフォルトルート`を設定

### 2.3.2. 試験対策2

【ルーティングテーブル】

|経路|宛先|ネクストホップ|
|:---:|:---|:---|
|A|172.16.0.0/16|via 192.168.1.2|
|B|172.16.1.0/24|via 192.168.2.2|
|C|172.16.1.32/27|via 192.168.3.2|
|D|172.16.1.80/30|via 192.168.4.2|
|E|0.0.0.0/0|via 192.168.5.2|

1. 宛先IPアドレス：172.16.1.60

||2進数|
|:---:|:---|
|B(24)|`x.x.0000 0001`.0000 0000|
|宛先|`x.x.0000 0001.001`1 1100|
|C(27)|`x.x.0000 0001.001`0 0000|

Cを選択して通信を行う。

2. 宛先IPアドレス：172.16.2.32

||2進数|
|:---:|:---|
|A(16)|`x.x`.0000 0000.0000 0000|
|宛先|`x.x`.0000 0010.0010 0000|
|B(24)|`x.x.0000 0001`.0000 0000|

Aを選択して通信を行う。

3. 宛先IPアドレス：172.17.1.1

全てのビットが不一致のため、Eを選択して通信を行う。

```
パケットを転送する際にどの経路を選択するかは、「プレフィックス長の長い方」を優先する。
つまり、プレフィックス長(サブネットマスク)で決定する。
```

# 3. ダイナミックルーティング

ルーテxングプロトコルによって動的に学習されたダイナミックルートを使用したルーティングのこと。

## 3.1. ルーティングプロトコルの種類

ネットワークの規模やトポロジ、レーティングデバイスなどに応じて適切なルーティングプロトコルを選択できるよう、書くプロトコルの特徴を理解しておく必要がある。

### 3.1.1. IGPとEGP

ルーティングプロトコルは、IGPかEGPに大別できる。

IGPはAS内部のルーティングに使用され、EGPはAS間でのルーティングに使用される。

```
* IGP：Interior Gateway Protocol
* EGP：Exterior Gateway Protocol
```

1. IGPの種類：RIP、OSPF、EIGRP

2. EGPの種類：BGP

### 3.1.2. ルーティングアルゴリズム

ルーティングアルゴリズムによるIGPの分類は次のようになる。

1. ディスタンスベクター：RIP、IGRP

2. リンクステート：OSPF、IS-IS

3. ハイブリッド：EIGRP(拡張ディスタンスベクタ)

#### 3.1.2.1. ディスタンスベクタ型

ルーティングテーブルの情報を交換し、距離(Distance)と方向(Vector)に基づいて最適経路を決定する方式。

#### 3.1.2.2. リンクステート型

書くルータが持つインターフェイスのリンク(Link)の状態(State)を交換し、そのリンク情報に基づいて最適経路を決定する方式。

#### 3.1.2.3. ハイブリッド型

ディスタンスベクターとリンクステートの両方の機能を合わせたルーティングアルゴリズム。

EIGRPは、ディスタンスベクター型のルーティングプロトコルであるIGRPにリンクステートの機能を取り入れたもの。

そのため、ハイブリッド型または拡張ディスタンスベクター型に分類される。


### 3.1.3. クラスフルルーティングとクラスレスルーティング

ルーティングプロトコルは、経路情報をアドバタイズ(通知)する際にサブネットマスクを含めるかどうかにより、次のように分類できる。

1. クラスフルルーティングプロトコル：サブネットマスクを含まない(RIPv1、IGRP)

2. クラスレスルーティングプロトコル：サブネットマスクを含む(RIPv2、EIGRP、OSPF)

#### 3.1.3.1. クラスフルルーティングプロトコル

サブネットマスクを通知しないため、受信側のルータで経路情報にサブネットマスクを付加してルーティングテーブルに学習する。

この時、どのようなマスク長にするかは、次の規則によって決定している。

1. 同じクラスフルアドレスの場合：受信インターフェイスのサブネットマスクを使用

2. 異なるクラスフルアドレスの場合：デフォルトのサブネットマスクを使用

クラスフルアドレスとは、クラスA、B、Cの概念に基づいたネットワークアドレスを指す。

同じクラスフルアドレスから派生した経路情報を受信した場合、受信インターフェイスに割り当てられているサブネットマスクを使用する。

そのため、クラスフルルーティングプロトコルを利用する場合、1つのネットワークアドレスから派生するサブネットは、マスク長を固定して割り当てる必要があり、VLSMによってIPアドレスを効率的に使用することはできない。

#### 3.1.3.2. ツボ：ルーティングアルゴリズの比較

||ディスタンスベクター|リンクステート|ハイブリッド|
|:---|:---|:---|:---|
|最適経路の決定|距離と方向|リンク情報|距離と方向|
|アルゴリズム|ベルマンフォード|SPF|DUAL|
|コンバージェンス|遅い|速い|非常に速い|
|ルータの負担|小|大|小|
|ルーティングプロトコル|RIP、IGRP|OSPF、IS-IS|EIRGP|

![08.1. クラスフルルーティング.png](https://qiita-image-store.s3.amazonaws.com/0/122648/a30db315-8825-4316-21a7-1d52512fc717.png)


# 4. 経路集約

VLSMによって、管理者はより多くの軽装型アドレッシングを設計することができる。

経路集約は、分割された一連のサブネットアドレスを1つの集約アドレスとして表現する。

そのため、書くルータで管理される経路情報の数を減らすことができる。

## 4.1. 経路集約とは

ルーティングテーブルに学習された複数のネットワークアドレスを1つにまとめること。

## 4.2. 経路集約の利点

1. ルーティングテーブルのサイズを縮小し、メモリ使用量とルーティングプロトコルのトラフィック量を削減する

2. 特定サブネットがダウンした時、集約アドレスしか持たないルータへ通知する必要がないため、トポロジ変更時に影響が及ぶ範囲を小さくすることができる。

## 4.3. 経路集約の方法

![08.2 経路集約.png](https://qiita-image-store.s3.amazonaws.com/0/122648/0fb5deac-57a8-62ee-afb3-72cbd756dbdc.png)


連続するネットワークアドレスを2進数にした時、上位ビットのならびが共通する部分までプレフィックス長を変更して1つのアドレスに集約。

## 4.4. ルーティングプロトコルによる経路集約

集約アドレスをルーティングプロトコルによって通知する場合、クラスフルルーティングプロトコルとクラスレスルーティングプロトコルでは経路集約の方式が異なる。

### 4.4.1. クラスフルルーティングプロトコルの経路集約

クラスフルルーティングプロトコルでは、クラスフルネットワークの境界で経路情報をクラス単位に自動集約する。

クラスフルルーティングプロトコルの場合、自動集約を無効にすることはできない。

### 4.4.2. クラスレスルーティングプロトコルの経路集約

クラスレスルーティングプロトコルでは、管理者によって手動で経路集約を行うことができる。

### 4.4.2.1. ディスタンスベクター型のRIPv2とEIGRP

任意のルータのインターフェイス上で自由に手動集約することが可能。

また、クラスフルネットワークの境界で自動集約を行い、軽快に応じて自動集約を無効にすることもできる。

#### 4.4.2.2. リンクステート型

エリア内のすべてのルータが同じリンク情報を持つことが前提で動作する。

従って、経路情報雨を集約できるルータは限定されている。

また、クラスフルネットワークの境界で自動集約されることはない。

## 4.4. 経路集約のまとめ

|種別|プロトコル|説明|
|:---|:---|:---|
|クラスフル|RIPv1、IGRP|自動集約(無効できない)|
|クラスレス|RIPv2、EIGRP|自動集約、手動集約可能|
|クラスレス|OSPF|手動集約可能(AS間も可能)|

## 4.5. 試験対策

|種類|説明|
|:---|:---|
|クラスフルネットワーク|クラスを基にしたネットワークアドレス|
|クラスフルルーテイングプロトコル|サブネットマスクを含まずに通知するルーティングプロトコル|


# 5. メトリックとアドミニストレーティブディスタンス

ルーティングとは、受信したパケットの最適経路を選択するプロセス。

その経路選択の基準となる血がメトリック。

同じ宛先ネットワークの情報源が複数ある場合、どれを優先すべきかアドミニストレーティブディスタンス値で判断する。

## 5.1. メトリック

同じ宛先ネットワークに対して複数の経路が存在する場合、書くルーティングプロトコルは最適経路を決定するため経路ごとにメトリックと呼ばれる数値を生成し、メトリック血が最小の経路を最適とみなす。

【ルーティングプロトコルのメトリック】

|プロトコル|メトリック|
|:---|:---|
|RIP|ホップカウント|
|OSPF|コスト|
|EIGRP|帯域幅、遅延|

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

プロトコルの優先度を決定するための管理値。

【ルーティングプロトコルのメトリック】

|経路の情報源|デフォルト値|
|:---|:---|
|直接接続|0|
|スタティックルート|1|
|EIGRP集約|5|
|BGP(外部)|20|
|EIGRP(内部)|90|
|OSPF|110|
|RIP|120|
|EIGRP(外部)|170|
|BGP(内部)|200|
|不明|255|