■3日目の復習 □IS-ISとOSPFの相違点 ①エリアの種類 OSPFは多数 IS-ISは一つ ②エリアの境界 OSPFはルータ IS-ISはリンク上 ③メトリック OSPFはbandwidth値で変化 IS-ISはデフォルト値(=10) … 変更可 ④ リンクステートを伝える方法、さらにそのパケットもしくはデータユニットの構造 IS-IS LSP ← LSP全体ににシーケンス番号・ライフタイムがつく +----------+ | TLV | +----------+ | TLV | +----------+ | TLV | +----------+ | TLV | +----------+ OSPF LSU +----------+ | LSA | ← LSA1つ毎にシーケンス番号・エージタイムがある +----------+ | LSA | ← LSA1つ毎にシーケンス番号・エージタイムがある +----------+ | LSA | ← LSA1つ毎にシーケンス番号・エージタイムがある +----------+ | LSA | ← LSA1つ毎にシーケンス番号・エージタイムがある +----------+ □IS-IS ①レベル1ルートを確認するコマンド show isis route ②レベル2ルートを確認するコマンド show clns route □OSPFシュミレーション .1 10.0.0.0/30 .2 .1 172.16.0.0/30 .2 | loop0 R1 s0 ----------------- s0 R2 s1 ----------------- s0 R3 ----+ area 1 area 0 | area 2 | 問 OSPFを動作しているルータが3台ある。 トポロジ条件を満たすように設定せよ。 ただしR3は設定済みとする。 さらに、エリア1には外部自律システムの情報をそのまま流さないものとする。 解1 R1(config)#router ospf 1 R1(config-router)#network 10.0.0.0 0.0.0.3 area 1 R1(config-router)#area 1 stub R2(config)#router ospf 1 R2(config-router)#network 172.16.0.0 0.0.0.3 area 0 R2(config-router)#network 10.0.0.0 0.0.0.3 area 1 R2(config-router)#area 1 stub ※ area 1に集約LSA(Type3LSA)を伝えない<strong>トータリースタブエリア</strong> として構成するときには、 R2(config-router)#area 1 stub no-summary とする。 本日はここから ■ポリシーベースルーティング … PBR □PBRでのroute-map動作 ・denyに一致したパケットは、<strong>廃棄</strong>ではなく、<strong>通常ルート</strong>を利用する。 ・破棄したいときには、<strong>deny</strong>ではなく、<strong>null0</strong>インターフェースへ送出する。 ・送出インターフェースではなく、受信インターフェースに適用する。 □setコマンド Host A-+ s0 ----------------- s0 | +--R1 R2 ----+ | s1 ----------------- s1 | 10.0.0.0/8 PBR … 送信元がAならばs0から出力する R1のルーティングテーブル ① o 10.0.0.0/8 … 明示的なルートがある ② s 0.0.0.0/0 s1 … 明示的なルートがなくデフォルトルートが存在 ①set interface s0 ②set default interface s0 ■ロードバランスPBR □ ■BGP □特徴 ・TCP ・差分のみ送信 ・AS間を接続する。 ・ルーティング情報は「ネットワーク情報」に「アトリビュート」を付与してアドバタイズ。 IGPはネットワークに到達するまでのコストをアドバタイズ ・BGPはネイバーテーブル・BGPテーブル・フォワーディングテーブルを扱う。 ・扱うメッセージは、OPEN・KEEPALIVVE・UPDATE・NOTIFICATION の4つ。 □ネイバー ・ピア もしくは ネイバー … TCPコネクションを形成する二つのルータ ネイバーは明示的に設定するする。 ・EBGPネイバー … ネイバーを形成するルータ・お互いが異なるASに属する config)#router bgp <as-num1> config-router)#neighbor <ip_addr> remote-as AS<num_2> ・IBGPネイバー … ネイバーを形成するルータ・お互いが同じASに属する config)#router bgp <as-num1> config-router)#neighbor <ip_addr> remote-as AS<num_1> .1 10.0.0.0/30 .2 .1 172.16.0.0/30 .2 R1 s0 ----------------- s0 R2 s1 ----------------- s0 R3 ---- RIP RIP RIP C 10.0.0.0 R 172.16.0.0 ※ IBGPネイバーは直接接続している必要はない。例) R1とR3 ※ IBGPネイバーを形成する前にIGPで通信できている必要がある。 □コマンド BGPの有効化 config)#router bgp <as-num> ネイバー指定 config-router)#neighbor {<remote-ip-addr> | peer-group-name } remote-as <remote-as-num> アドバタイズするネットワークの指定 config-router)#network <ip-addr> mask <netmask> AS 65001 AS 65002 R2 ---------------------------------------------------------- R3 ルーティングテーブル BGPテーブル R 10.1.0.0/16 network 10.1.0.0 mask 255.255.0.0 10.1.0.0 R 10.2.0.0/16 R 172.16.0.0/16 R 192.168.0.0/16 network 192.168.0.0 mask 255.255.0.0 192.168.0.0 シャットダウン config-router)#neighbor <ip-addr> shutdown … 無効 config-router)#no neighbor <ip-addr> shutdown … 再度有効 □ネイバーセッション遷移 idle → connect → open sent → open confirm → established ↑ 3 way-hand-shake SYN-ACK □自動集約・アドバタイズ (1)auto-summaryコマンド(デフォルトではno auto-summary) AS 65001 AS 65002 R2 ---------------------------------------------------- R3 ルーティングテーブル BGPテーブル R 10.1.0.0/16 10.0.0.0/8 R 10.2.0.0/16 config-router)#auto-summary config-router)#network 10.0.0.0 (2)ip routeコマンド ルーティングテーブル BGPテーブル R 10.1.0.0/16 10.0.0.0/8 R 10.2.0.0/16 R 10.3.0.0/16 R 10.4.0.0/16 S 10.0.0.0/8 config-router)#network 10.0.0.0 configr)#ip route 10.0.0.0 255.0.0.0 null 0 (3)aggregate-addressコマンド config-router)#aggregate-address <ip-addr> <mask> summary-only □IBGPネイバー R1とR3をネイバーとして設定したい。間に複数経路がある場合、ループバックアドレスを neighborコマンドで指定すると、常に接続性が確保される。 config-router)#neighbor <ip-addr> remote-as <remote-as-num> ↑ ここをloopbackアドレスにする。 異なる経路でBGPセッションを継続したい。以前と異なる送信元アドレスではネイバー関係が破棄されてしまう。 対処するには、送信元アドレスをループバックアドレスにすればよい。 config-router)#neighbor <ip-addr> update-souce <intface-type> <intface-num> ↑ ここをloopbackアドレスにする。 □EBGPネイバー EBGPネイバーでLoopbackアドレスを利用するときには、TTLを変更すること。 □ネクストホップの書換え BGP UPDATEメッセージ内のNEXT_HOPアトリビュートは次のASの入り口のアドレスが格納されている。 EBGPからIBGPにネクストホップが伝わるときにはBGP UPDATEメッセージ内のNEXT_HOPアトリビュートが 書き換えられる。IBGP内では書換えは起こらない。 IBGPでこのアドレスを持つルータと直接接続していないルータはこのメッセージを受け取っても、 NEXT_HOPのアドレスを持つルータに到達できない。この場合、NEXT_HOPアトリビュートのアドレスを 書き換えるとよい。 config-router)#neighbor <ip-addr> next-hop-self ↑ ここをloopbackアドレスにするとIGPでこのループバックアドレスでの ルートを明示的に通知する必要がある。 受け取るルータとこのコマンドを設定したルータが直接接続していれば、 ルートの通知を明示的に設定する必要はない。 □IBGPスプリットホライズンルール デフォルトでは、IBGPから学習したルートは他のIBGPネイバーに転送されない。 → 情報を全IBGPネイバーに伝えるにはフルメッシュトポロジが必要。 □非フルメッシュネットワークでのIBGPルーティング問題 AS65103 → R1 ----------------- R2 ----------------- R3 → AS65101 10.0.0.0 OSPF OSPF OSPF BGP BGP ① ネットワーク10.0.0.0はEBGPセッションを通じてR1にアドバタイズされる ② R1はIBGPセッションでR3にアドバタイズする。 ③ R2はBGPを運用していないため、ネットワーク10.0.0.0を学習しない。 → ブラックホール → R1とR3を直接接続する、 もしくは → IGPでの再配信。 □BGP同期 適合するルートがIGPから学習されるまで ① IBGPが学習したルートを使用したり ② 外部ネイバーにアドバタイズしない IBGPとIGPの情報が一致するまで他のASに情報を転送しない、というルールがある。 → 情報の一貫性 → ブラックホールの回避 フルメッシュや全ルータがBGPを運用しているときには、この同期を無効にしたい。 → IGPでの学習を待ちたくない。 config-router)#no syncronization 同期を無効にした場合の解決方法 ルートリフレクタ … BGPルートリフレクタが他のASからアップデートを受け取ると全てのBGPピアにアップデートを送る ASコンフィデーション □ピアグループ ・ポリシーやパラメータのテンプレレート ・同じポリシーを適用する多数のネイバーが存在する場合に有効 □ORIGINアトリビュート IGP ------------+--- RIP AS内で使用 +--- OSPF +--- EIGRP +--- IS-IS EGP ------------+--- EGP AS間で使用 +--- BGP □ルート選択の決定プロセス ① weight値が最大のルートが選択 weight値とは、どのインターフェースを使うかの優先度 ② local-preference値が最大のルートが選択 local-preference値とは、ASからの出口のどのルータを使うかの優先度 (複数の出口・経路があることが前提) ③ ローカルルータが発生元であるルートが優先 next-hop=0.0.0.0 ④ AS_PATHが最短のルートが選択 通過したASのリストが最小 ⑤ ORIGINコードが最小のルートが選択 IGP < EGP < incomplete ⑥ MED値が最小のルートが選択 MED値とは転送先ASでどの入口(ルータ)を利用するかの優先度 (複数の入口・経路があることが前提) ⑦ IBGPパスよりもEBGPパスが優先 ⑧ 最も近いIGPネイバーが通るパスを選択 ⑨ EBGPパスとして最も古いルートを選択 ⑩ ネイバーのBGPルータIDが最小であるパスを選択 □BGPセッションの解除 BGPはネイバーより学習したルートを失わない → 消去するには明示的消去の必要がある。