細かいネスペ対策 - ルーティング編
ネスペの勉強はもう終盤戦となり、全体的な技術の理解というより細かいところで点数を落とさないようにするためのフェーズとなってきた。そのため、試験前に見返せるようにいくつかの単位に区切って細かい用語やポート番号などの対策をまとめておく。
技術
ルーティングに関する技術についてそれぞれ概要と試験に出そうな特徴を書いていく。
RIP(IGP)
RIP(Routing Information Protocol)は距離ベクトル型のIGP(Interior Gateway Protocol)で、小規模~中規模ネットワークに用いられるシンプルなルーティングプロトコルとなっている。特徴は「距離ベクトル」と書かれている通り宛先までの距離(ホップ数)で経路選択をするという点で、非常にシンプルな設計となっている。
RIPはバージョンが1, 2と二つあり、バージョン1は経路情報の通知がブロードキャストでクラスフル、認証がない。バージョン2は経路情報の通知がマルチキャスト(224.0.0.9)でクラスレス、認証はサポートがあるらしい。試験で問われそうなのはクラスフル/クラスレスあたりかな。
また、RIPは障害時の経路情報更新が遅いというような欠点もある。RIPではリンクダウンなどでトリガーアップデートが発行されるが、通常のルーティングアップデートで誤った古い情報で上書きされる可能性がある。そのため、ホールドダウンタイマーと呼ばれる180秒の経路更新を受け付けない時間があり即座に経路の切り替えができない。
OSPF(IGP)
OSPF(Open Shortest Path First)はリンクステート型のIGPで、中規模~大規模ネットワークに用いられることが多いルーティングプロトコルとなる。主な特徴は全ルータがネットワークトポロジを把握する点と、コストにより柔軟な経路選択をさせることができる点だ。経路探索はダイクストラ法を用いる。
OSPFはバージョン2, 3の二つがあり一般的にはバージョン2を指すことが多い。主な違いは対応しているIPのバージョンで、IPv4にはOSPFv2、IPv6にはOSPFv3がそれぞれ対応している。
また、OSPFでは同じ宛先に対して複数の同コストの経路がある場合に負荷分散をすることができるECMP(Equal Cost Multi Path)という仕組みも存在する。負荷分散方式はルータによるため、OSPFではあくまでルーティングテーブルに複数記載するというところまで。さらに、RIPのようなホールドダウンタイマーがないため障害時に高速に切り替えができ、経路情報交換も間隔が長く負荷が少ない。
BGP(EGP)
BGP(Border Gateway Protocol)はAS(Autonomous System)間で経路交換をするEGP(Exterior Gateway Protocol)で、基本的にAS間はBGPが利用されている。BGPはパスベクタ型と呼ばれるルーティングプロトコルで、その名の通りパス(経路)の情報を付与したRIPのような仕組みになっている。特徴はいくつかのプロパティが用意されているところで、経路の優先度やパス情報などがある。
BGPは一般的にBGP-4が利用されている。もともとはIPv4に対応するように作られているらしいが、IPv6やMPLSなどに対応するようにも拡張されている。それらの拡張を含めてBGP-4+やMBGPと呼ばれたりするらしい。
また、BGPではAS間の境界ルータ間の接続をするeBGPとAS内のBGPルータ間で接続をするiBGPの2種類がある。iBGPが必要な理由は、ある企業が複数の企業とBGPで経路交換をして中継をする場合などがあげられる(ほかにも複数ISPの冗長化の際など)。
ポート番号
ルーティングに関して覚えた方が良いポート番号を書いていく。
ルーティングプロトコルではそこまで覚える必要のあるポート番号はなく、特にOSPFではTCP/UDPではなく別のプロトコルを利用するためTCP/UDPポート番号は利用しない。ネスペではRIPが扱われることはそこまでないと思うので、BGPのTCP 179番を覚えておくと良さそう。
UDP 520:RIP
TCP 179:BGP
※ ちなみに、ポート番号ではないがOSPFはIP上のプロトコル番号89を利用する。
用語
ルーティングに関して覚えた方が良い用語を書いていく。
RIP
距離ベクトル型:RIPのルーティングアルゴリズム
ホップ数:宛先までに通るルータの数で、RIPで用いる
クラスフル/レス:IPアドレスのクラス単位のサブネットか、CIDRか
ルーティングアップデート:RIPの定期的な経路情報通知
トリガーアップデート:RIPの突発的な経路情報通知(障害時など)
スプリットホライズン:受け取った経路情報を送り返さない
ルートポイズニング:リンクダウンしたインターフェスのメトリック値を最大値にして隣接ルータに通知
ポイズンリバース:スプリットホライズンをメトリック値で実現したもの
ホールドダウンタイマー:一定時間経路情報を更新しないタイマー。リンクダウン時に誤った経路情報での上書きを防ぐ
OSPF
リンクステート型:OSPFのルーティングアルゴリズム
Helloパケット:OSPFでネイバー確立&維持に使われるパケット
DBD(Database Description)パケット:自身のLSDBのLSA一覧
LSR(Link State Request)パケット:隣接へ不足したLSAの要求
LSU(Link State Update)パケット:LSRの返信
LSAck(Link State Acknowledgement)パケット:LSU受信の確認応答
ネイバーテーブル:OSPFの隣接機器をまとめた表
LSA(Link State Advertisement):OSPFで交換するルータの情報
LSDB(Link State Database):トポロジテーブル(下記)の別名
トポロジテーブル:収集したLSAを格納するテーブル
トポロジマップ:トポロジテーブルから作ったネットワークトポロジ
SPFツリー:トポロジマップから生成するネットワーク構成図
ECMP(Equal Cost Multi Path):同コストの複数経路をルーティングテーブルに記載する仕組み
エリア:LSAを交換する範囲を示す論理的なグループ
バックボーンエリア:エリア番号0のエリアで、全てのエリアが隣接必須
ABR(Area Border Router):エリアの境界となるルータ
ASBR(AS Boundary Router):ASの境界ルータでルート再配布をする
DR(Designated Router):LAN毎に選出されるLSA交換をするルータ
BDR(Backup Designated Router):LAN毎に選出されるDRの予備
DROTHER:DR、BDRに選出されなかったルータ
ネイバー関係:同じLAN内のOSPFルータ同士の関係
アジャセンシー関係:DR/BDR、DR/DROTHER間のLSAを交換する関係
LSAタイプ:LSAの種別で、1~11まであるがCiscoは1~5, 7のみサポート
LSAタイプ1:ルータLSA(エリア内)
LSAタイプ2:ネットワークLSA(エリア内)
LSAタイプ3:ネットワーク集約LSA(エリア間)
LSAタイプ4:ASBR集約LSA(エリア間)
LSAタイプ5:AS外部LSA(エリア間)
LSAタイプ7:NSSA外部LSA
BGP
AS番号:ASの識別番号でIPと同じくグローバルとプライベートがある
パスアトリビュート:経路情報に付与された属性情報
OPEN:BGPネイバーとセッション開始するためのメッセージ
UPDATE:全て/差分の経路情報を送信するメッセージ
KEEPALIVE:BGPネイバー関係を維持するためのメッセージ
NOTIFICATION:エラー検出時などに通知されるメッセージ
iBGP:AS内のBGPルータ同士での接続で、TTLが255に設定
eBGP:AS間のBGPルータ同士での接続で、TTLが1に設定
BGPネイバーテーブル:BGPネイバーが記載された表
BGPテーブル:UPDATEパケットの経路情報があるテーブル
スタブAS:外部との接続が一つだけのAS
トランジットAS:外部と複数接続し、中継もするAS
非トランジットAS:外部と複数接続するが、中継しないAS
ORIGIN:パスアトリビュートの1つ。小さい方が優先
AS_PATH:パスアトリビュートの1つ。短い方が優先
NEXT_HOP:パスアトリビュートの1つ。前提の到達可能性に使われる
LOCAL_PREF:パスアトリビュートの1つ。大きい方が優先
MED(MULTI_EXIT_DISC):パスアトリビュートの1つ。小さい方が優先
ルーティングプロトコルに関しては覚えた方が良さそうな用語/ポート番号はこんな感じかな。他にもよく出そうなプロトコルの問題点とかそういうのは時間のある限り調べてみても良いかもしれない。どんな題材でもネットワークである以上ルーティングプロトコルはおそらく関係してくるはずだし、この辺にはさらに時間をかけたい。
あと自分でもいまだに苦手だと感じているのはiBGPで、複数のISPと接続した冗長構成にiBGPを用いてBGPルータ同士を接続させる動作がよくわかっていない。題材としては割と出るけど、「iBGPではNEXT_HOP_SELFを設定して…」とか言われているのがあまりイメージがついていない。この辺も後で調べよう。