ネットワーク学校の振り返り 2/n

前回記事は[こちら](https://qiita.com/NAMICHAN/items/70fff98bb86e808c3213)。

# OSPF/NW構築2
## ルーティングテーブル
IPネットワークに接続したパソコンやルーターなどは、「パケットの最終的な宛先のIPアドレス」と、「最終的な宛先に届けるため、次にパケットを送る先のIPアドレス」（ネクストホップ）をまとめた情報を保持している。これをルーティングテーブルと呼ぶ。
ルーティングテーブルに書かれた情報の一つひとつは、経路情報と呼ばれる。

ルーティングテーブルの作成方法は「スタティックルーティング（静的ルーティング）」と「ダイナミックルーティング（動的ルーティング）」に分別できる。 

### スタティックルーティング
ルート情報を1つ1つ手動で設定する方法。すべてのルータに設定する必要があるため、大規模なネットワークの場合には向かないが、運用しやすさの面で小規模なネットワークのルーティングには適している。

### ダイナミックルーティング
「ルーティングプロトコル」を用いて隣接するルータと情報を交換し、ルーティングテーブルを自動で作成する方法。スタティックルーティングとは異なり、手動で設定をする必要があるルータは限られているため、効率的な管理と維持が可能になる。

## デフォルトルート
ルーティングテーブルにない宛先用の特殊な経路のこと。次にパケットを送る先がルーティングテーブルに明記されていない場合に、パケットを託す相手を表す。
IPv4アドレスであれば、「0.0.0.0/0」で表される。

## ループバック
ネットワークにおいて自分自身の通信機能を確認・テストするために存在する特別なインターフェースやアドレスのこと。
ループバックは、ネットワークインターフェースや物理的な接続に依存せず、ホスト自身で送信したパケットを自分で受信することで、**TCP/IPスタック（通信プロトコルの内部処理）が正常に動作しているか**を確認できる。
IPv4 では 127.0.0.1 が最も有名なループバックアドレスとなる。
実際にコマンドプロンプトで上記のコマンドを打つと、返事が返ってくることが確認できる。

## OSPF
コンピュータやルーターが「どうやってデータを送るか」決めるためのルーティングプロトコルのひとつ。
Open Shortest Path First（一番近くて速い道を見つけて使う）の頭文字をとったもの。

コンピュータのネットワークは、道路と車の流れに似ている。
データは車のようにネットワークを走って、相手のコンピュータに向かう。
ルーターは交差点みたいなもので、「どっちに行けばいいか」考えてくれる。
OSPFは、ルーターたちが協力して一番いいルート（最短の道）を決めるナビのような役目をする。

OSPFを使うと、以下のメリットがある。
- データができるだけ速く届く道を選べる。
- 道（ネットワーク）が壊れても、別の道に自動で切り替えられる。
- ルーター同士がお互いに地図を見せ合って協力できる。

### OSPFの役割
- 隣接ルータの検出
- 隣接関係の維持
- DR/BDRの選出
- OSPFネイバーの条件一致確認（Hello/Dead間隔、エリアIDなど）

### OSPFのネイバー関係
OSPFの世界では、ネイバーは「近くにいるルーターのお友だち」のこと。
OSPFでは、ルーターたちがお互いに情報を交換して、ネットワークの地図を作る。
しかし、知らない相手とはいきなり情報をやりとりできない。
だからまず、「こんにちは！あなたOSPFやってる？友だちになろう！」というやり取りをして、お互いに **ネイバー（仲間）** になる。

#### ネイバーになる方法
OSPFでは、Helloパケットを交換し、いくつかのパラメータが一致していればネイバー関係が確立される。以下がその条件。
- OSPF Area ID が一致していること。
    - 授業ではArea 5を設定したなあ…
- Hello および Dead Interval が一致していること。
    - Hello Interval：Helloパケットを送信する間隔（デフォルトは10秒）
    - Dead Interval：相手からHelloが来なくなったらネイバーを削除するまでの時間（デフォルトは40秒）
    - これらが一致していないと、相手を正しく認識できず、ネイバー関係は形成されない。
- Authentication 設定が一致していること。
    - 認証を有効にしている場合、認証タイプ（なし／シンプル／MD5など）および認証キー（パスワード）が一致している必要がある。認証に失敗すると、Helloパケットは無視される。
- OSPF Network Type が互換性のあること。
    - ネットワークタイプ（Broadcast / Non-Broadcast / Point-to-Point / Point-to-Multipoint）が正しく設定されている必要がある。
    - 例：Broadcast セグメントで片方が Point-to-Point に設定されていれば、ネイバーになれない。
- MTU（Maximum Transmission Unit）が一致していること（RFC上は任意だが現実には重要）。
- Stub フラグが一致していること。
- Router ID が一意であること。

#### ちなみに、Helloパケットが持つ情報はこちら
| 項目名                                   | 説明                                             |
| ------------------------------------- | ---------------------------------------------- |
| **Router ID**                         | このパケットを送信したルータのID（ユニークな識別子）                    |
| **Hello Interval**                    | Helloパケットの送信間隔（秒）                              |
| **Dead Interval**                     | 隣接ルータが応答しなければそのルータを無効とみなすまでの時間（秒）              |
| **Network Mask**                      | インターフェースのサブネットマスク（主にブロードキャストやNBMAネットワークで使用）    |
| **Area ID**                           | このOSPFインターフェースが属するエリア番号                        |
| **認証タイプ / データ**        | 認証が有効な場合に使用される情報（パスワードやハッシュ）                   |
| **Router Priority**                   | DR（Designated Router）選出のための優先度（数値が高いルータが優先される） |
| **DR（Designated Router）アドレス**         | 現在のDRのIPアドレス                                   |
| **BDR（Backup Designated Router）アドレス** | 現在のBDRのIPアドレス                                  |
| **Neighbor List**                     | このルータがすでにHelloを受信している隣接ルータのRouter IDの一覧（＝隣接確認） |

### OSPFセグメント
ルーターが同じネットワークに集まっている「グループ」のこと。
ネットワークの中で、同じ線（LAN）や同じスイッチにぶら下がっているルーターたちは、OSPFから見ると「同じセグメントにいる仲間」として扱われる。
例）
学校にたくさんの生徒（ルーター）がいる。
同じ教室にいる生徒どうしは、すぐに話しかけられる。
でも、ほかの教室の人には、誰かを通して話しかける必要がある。
この「教室」が、OSPFでいうセグメントのこと。

セグメントを作る理由は、**通信の整理ができるから。**
同じセグメント内では、全員が直接やりとりできる（ブロードキャストなど）。
セグメントごとにルールや役割（DR/BDR）を決めることで、効率よく通信できる。

#### OSPFセグメントのメリット
- ネットワークの通信を効率よくできる。
    - ルーターがたくさんいると、それぞれが全員と通信するとものすごい数のやりとりが必要になる。でも、セグメントの中では「代表者（＝DRとBDR）」を1〜2人決めて、その人たちとだけ通信するようにすれば、通信量がぐっと減る！
- ネットワークが大きくなっても安定しやすい。
    - ネットワークにルーターが10台、100台と増えていっても、セグメント内で代表者を決めておけば、1対多で効率よく情報交換ができる。だから、OSPFは大規模ネットワークでも安定して動く。
- 情報のやりとりがムダにならない。
    - OSPFではルーター同士がネットワークの情報（LSA）を交換して、「地図」を作る。セグメント内で代表者がこの情報をまとめて流すようにすれば、同じ情報を何度も送るムダを減らせる。
- 問題が起きたときに切り分けやすい。
    - もし通信のトラブルが起きても、「このセグメント内の問題だな」と判断しやすくなる。ネットワーク全体ではなく、一部に注目して調べられるから、原因特定が早くなる。
- ネットワークの種類に応じた工夫ができる。
    - セグメントのタイプに応じて、OSPFは自動的に最適な動きをしてくれる。
<table>
  <thead>
    <tr>
      <th>セグメントタイプ</th> <th>説明</th> <th>例</th>
    </tr>
  </thead>
  <tr>
    <td> ブロードキャスト型 </td> <td>全員に一気に通知できる</td> <td>Ethernet（LAN）など</td>
  </tr>
  <tr>
    <td> ポイント・ツー・ポイント </td> <td>1対1の通信しかできない</td> <td>シリアル接続など</td>
  </tr>
  <tr>
    <td> NBMA（非ブロードキャスト） </td> <td>全体通知ができないタイプ</td> <td>Frame Relay、MPLSなど</td>
  </tr>
</table>

### DR/BDR
OSPFセグメント内での代表者のこと。ネットワークの効率化と安定化のために存在する。
全ルーターが全員と通信すると、ネイバー関係が指数的に増え、トラフィックが多くなるが、DRを中心にすれば、必要最小限のやりとりで済む。
<table>
  <thead>
    <tr>
      <th>略称</th> <th>名前</th> <th>役割</th>
    </tr>
  </thead>
  <tr>
    <td>DR</td> <td>Designated Router</td> <td>セグメント内の代表者（情報の中心）</td>
  </tr>
  <tr>
    <td>BDR</td> <td>Backup Designated Router</td> <td>DRがダメになったときの補欠</td>
  </tr>
</table>

#### DR/BDRの決まり方
OSPFルーターのインターフェースで設定された優先度（Priority）を見て、値が大きい方が優先される（0だとDR/BDRにはならない）。優先度が同じなら、Router IDが大きいルーターが勝つ。
※Router IDは32ビットの識別番号で、ルーターが自動で決める or 管理者が手動で設定する。

## Loopback
パソコンやルータには、いろいろな通信の出入り口（インターフェース）があるが、その中で、「自分自身に話しかけるための特別な入り口」が Loopback。
カラオケなどで「マイクに向かって話す」と、その声が自分の耳に返ってくることがあるよね？
それがまさに「ループバック（自分に戻ってくる）」ということ！
パソコンやルータも「自分が正しく動いてるか？」を自分自身でチェックするために、このLoopbackを使う。
パソコンに向かって「おーい、聞こえる？」と話しかけて、自分から「はい、聞こえます！」と返ってくる感じ。

### 特徴
- Loopbackは物理ポートに依存せず、ソフトウェア的に常時UP。物理リンクが切れても影響を受けない。
- Loopbackには特別なIPアドレス（127.0.0.1）がある。これを使って通信すると、ぜったいに自分自身に届く。※「127.0.0.1」はどのコンピュータでも「自分自身」を指す。
- OSPFやBGPではLoopback IPをRouter IDとして使うことで、ルータを一貫して識別できる（Loopbackはどの物理インターフェース（ケーブル）が壊れても絶対にダウンしないから、RouterIDとして使うと安全性信頼性が高くなる）。
- 物理リンクに障害が起きても、Loopback IPを使えば別ルートからでも通信が可能。 






# 参照
- https://xtech.nikkei.com/it/article/Keyword/20140327/546643/
- https://catchon-hub.com/blog/202409_3