第7回 OSPF

ネットワークエンジニアとして勤務先で運用手順書や詳細設計書を見ると、必ず目にする技術の一つであるOSPF。
よく見かけるけど内容がわからず障害対応時に**show ip ospf neighbor**打って状態が**full**になっているかを確認している人も多いのではないでしょうか？
今回はこのOSPFに関してまとめていきます。

### OSPFとは？
**Open Shortest Path First**の略語で、RFCで標準化されている
小規模から大規模ネットワーク向けの※**リンクステート型**ルーティングプロトコルです。
IPv4アドレス対応の**OSPFv2**とIPv6アドレス対応の**OSPFv3**の2種類があります。

※**リンクステート型**
どのルータとどのルータが隣接(リンク)しているかという接続情報（リンクステート）を交換し合い、この情報の集合に基づいてどこにパケットを送るかの経路を選択する方式です。

###よく見かけるOSPFのエリア構成

####エリア

ルータの I/F のIPアドレス情報、そのルータのリンクに関する情報であるLSA(Link State Advertisement)を交換する範囲を示す論理グループのこと。

- **シングルエリア構成**
<img width="562" alt="シングルエリアOSPF.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/9a62b29b-77d1-3d96-5f4e-13224c02e489.png">
複数のネットワーク帯を一つのエリアで統一した構成

- **マルチエリア構成**
<img width="476" alt="マルチエリアOSPF.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/c0d13d3b-9967-6872-2dff-6d3b417b67d4.png">
複数のネットワーク帯をそれぞれ異なるエリアで統一した構成

参考
[ネットワークエンジニアとして OSPFをはじめから](https://www.infraexpert.com/study/study30.html)
[ネットワークのおべんきょしませんか](https://www.n-study.com/ospf-detail/router-id/)

### OSPFの対応で使用するコマンドを、パケットトレーサーで解説
構築したOSPFマルチエリアのネットワーク構成
<img width="770" alt="ASシステム.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559536/f6ece003-0be6-43b5-f817-45ffe8b805b6.png">

####上記ネットワークに設置したルータの種類
1.内部ルータ　対象:RouterB
すべてのインタフェースが同じエリアに所属しているルータ

2.バックボーンルータ　対象:ABR1,ABR2
バックボーンエリアに所属しているインタフェースを最低1つ持つルータ

3.ABR(Area Border Router)　対象:ABR1,ABR2
複数のエリアに所属するインタフェースを持つ

4.ASBR(AS Boundary Router)　対象:ASBR
インタフェースのうち少なくともひとつが、非OSPFネットワーク(別の自律システム)に所属するルータ


####業務でよく使用する確認コマンドの解説
参照:バックボーンエリアの内部ルーター Router B

## show ip ospf neighbor 

```ruby:RouterB
Neighbor ID     Pri   State           Dead Time   Address         Interface
172.19.0.1        0   FULL/  -        00:00:36    172.19.0.1      Serial1/0
172.21.1.0        0   FULL/  -        00:00:36    172.20.3.0      Serial1/1
Neighbor ID:隣接したルータに登録したOSPFのルータID
Pri:インタフェースのプライオリティ
Address:隣接したルータに登録したIPアドレス
・ABR2のSe1/0に登録した 172.19.0.1 
・ABRのSe1/0に登録した 172.20.3.0
Interface:隣接したルータと接続している自分のインタフェース
State 隣接ルータとOSPFのアジャセンシー関係(Adjacency)が確立した結果"Full State"になる
```
## show ip route ospf 

```ruby:RouterB
--省略--
Gateway of last resort is not set

O E2 172.17.0.0/16 [110/100] via 172.19.0.1, 00:33:53, Serial1/0
※タイプ5 外部AS(RIP)から送られてきた172.17.0.0のルートを受信している
O IA 172.18.0.0/16 [110/128] via 172.19.0.1, 00:33:53, Serial1/0
O IA 172.21.0.0/16 [110/128] via 172.20.3.0, 00:50:43, Serial1/1
※タイプ3　左右のserial1/0,1/1にあるエリア間(エリア0内)ルートから172.18.0.0と172.21.0.0のルートを受信している 

LSAタイプ1、2の経路情報は「Ｏ」のコードが付けられる
LSAタイプ3の経路情報はエリア間ルートを示す「O IA」のコードが付けられる
LSAタイプ5の経路情報は、OSPF外部ルートを示す「O E1」または「O E2」のコードが付けられる
LSAタイプ7の経路情報は、OSPF外部ルートを示す「O N1」または「O N2」のコードが付けられる
```



####LSAタイプまとめ
| LSAタイプ      |    転送範囲    |    LSAの内容    |
|:-----------------|------------------:|:------------------:|
| タイプ1 ルータLSA           |   自身のルータが設置されたエリア内 |        ルータID、リンク数、リンクの種類、コスト値、IPアドレス       |
| タイプ2 ネットワークLSA            |            自身のルータが設置されたエリア内 |       DRのIPアドレス、セグメント上のルータID一覧       |
| タイプ3 ネットワーク集約LSA              |              全エリア（スタブエリア、NSSAを除く） |        各エリアごとの経路情報、コスト値、IPアドレス        |
| タイプ4 ASBR集約LSA              |                AS全体（スタブエリア、NSSAを除く） |         ABRが知っているASBRのルータID、ASBRまでのコスト値        |
| タイプ5 AS外部LSA              |             ASエリア全体（スタブエリア、NSSAを除く）|      OSPF以外の経路情報、コスト、ネクストホップ      |
| タイプ7 NSSA外部LSA          |           NSSAエリアのみ |      OSPF以外の経路情報、コスト、ネクストホップ       |

参考
[ネットワークエンジニアとして OSPF - LSA Type 1 / 2 / 3 / 4 / 5 / 7]
(https://www.infraexpert.com/study/ospfz17.html)

##次回予告