第8章 ルーティングの基礎
ルーティングとは
今回出てくる用語
・ルーティングとは
◆ ルーティングとは
ルーティングとは、宛先となるホストまでパケットを送信する時に最適な経路を選択して転送することです。
このルーティングは、ルータやL3スイッチなどのレイヤ3で動作するネットワーク機器によって行われます。
ルータは最適な経路を決定するためにルーティングテーブルを参照します。ルーティングテーブルは、受信
したパケットをどこへ転送するべきかを決定するための宛先ルートの一覧情報です。重要な点は、ルータは
ルーティングテーブルを参照し、ルーティングの際に受信パケットの宛先アドレスを見て転送していること。
上図で10.1.1.1から10.1.4.1宛てのパケットをR1が受信すると、パケットの宛先IPアドレスを見ます。次に
自身のルーティングテーブルを参照します。「10.1.4.1」は「10.1.4.0/24」のネットワークに該当するので
R1はルーティングテーブルに従い、F0/1のI/Fから「10.1.2.253」のIPアドレスを持つ機器(R3)に対して
パケットを転送します。パケットを受信したR3はパケットの宛先IPアドレスを見ます。次に、ルーティング
テーブルを参照します。10.1.4.1は自身のI/FのネットワークなのでARP情報に基づきパケットを転送します。
ネクストホップとは受信したパケットを宛先ネットワークに転送するために次にパケットを転送する隣接ルータのIPアドレスのこと。
ネクストホップがDirectly Connectedの場合、自分自身のインターフェースが直接そのネットワークに接続している事を意味します。
◆ ルーティングの原則 その1
ルータは、ルーティングテーブル上には存在しない宛先ネットワークあてのパケットは破棄してしまいます。
パケット破棄の後、ルータはパケットの送信元へ宛先到達不能( Destination Unrechable )メッセージを
ICMPパケットで通知します。そのため、通信に必要な宛先ネットワークの経路情報はルーティングテーブル
に保持している必要があります。下図は、10.1.1.1から10.1.9.1宛てのパケットを送信した所、10.1.9.1の
宛先ネットワークがルーティングテーブルにないことから、パケットを破棄しICMPで結果を通知しています。
◆ ルーティングの原則 その2
受信パケットの宛先IPアドレスに該当するルート情報がルーティングテーブルに複数ある場合、そのルータは
ロンゲストマッチの法則に従いパケットを転送します。ロンゲストマッチとはパケットを転送するための宛先
ネットワークがルーティングテーブルに複数ある時、宛先ネットワークのアドレスビット(プレフィックス長)
が最も長く一致する宛先ルートをパケットの転送先として選択するルールのことです。下図の説明どおりです。
上図の「172.16.1.1」宛てのパケットが「172.16.0.0/16」と「172.16.1.0/24」両方の宛先ネットワーク
に該当する場合、宛先ネットワークのアドレスのビットが最も長く一致しているのは「/24」まで合致している
172.16.1.0/24 であるので、ルータはF0/1のインターフェースから 10.1.2.253 のルータにパケットを転送。
ルーティングでは、複数の宛先ルートがある場合、色々な基準により最適ルートを選択することになりますが
ロンゲストマッチが最適経路の選択に最優先されます。アドミニストレーティブディスタンス、メトリックは
この次に考えられる値です。ロンゲストマッチの法則は、ネットワークエンジニアにとってとても大切な知識。
まとめ
・ルーティングとは
→宛先となるホストまでパケットを送信する時に最適な経路を選択して転送することです。
ルーティングテーブルの見方
今回出てくる用語
・直接接続ルート
・スタティックルート
・ダイナミックルート
・show up route
◆ ルーティングテーブルへのルート情報の追加
ルータのルーティングテーブルにルート情報を追加するためには、以下の3通りの方法があります。
ルート情報の追加方法 | 説明 |
直接接続ルート | ルータの自身のI/FにIPアドレスを設定して、I/Fを有効化することで追加されるルートのこと。 前提として、そのインターフェースがリンクアップして “up/up” の状態である必要がある。 |
スタティックルート | 管理者が宛先ネットワークへの最適なルートを手動で設定したルートのこと。 |
ダイナミックルート | ルータで設定されたルーティングプロトコルにより、自動的に追加されるルートのこと。 |
◆ ルーティングテーブルの見方
ここではCisco機器を例にして、ルーティングテーブルを詳細に見ていきます。Cisco機器でルーティング
テーブルを確認するためには、show ip routeコマンドを入力する必要があります。
項番 | 各項目 | 説明 |
① | ルートの情報源 | そのルートがどのようにルーティングテーブルに追加されたのかを示すコード。 直接接続ルートの場合「 C 」、スタティックルートの場合「S」、ダイナミック ルートの場合はルーティングプロトコルによりコードが異なる。今回はルータで RIPを有効にしているので、ルーティングテーブル上では「R」が表示されている。 |
② | 宛先ルート、サブネットマスク | 宛先ネットワークを示すアドレスとサブネットマスクの情報。サブネットマスクは ネットワークアドレスの区切りを示し、ロンゲストマッチの際に参照される情報源。 |
③ | アドミニストレーティブ ディスタンス | ルーティングテーブル上に、プレフィックス長が同じ宛先ルートが複数ある場合 このアドミニストレーティブディスタンス(AD)の値が参照される。AD値が小さい 宛先ルートがルーティングテーブルに追加される。RIPは、AD値が 120 となる。 |
④ | メトリック | ダイナミックルーティングにおいて、宛先ルートに対し複数のルートが存在する 場合に最適経路を選択するために使用される値。このメトリック値は、使用して いるダイナミックルーティングプロトコルにより値の意味が異なる。 |
⑤ | ネクストホップアドレス | 受信したパケットを宛先ネットワークに転送するために次にパケットを転送する 隣接ルータのIPアドレスのこと。今回は、192.168.0.0/24の宛先ルートに対しては 192.168.1.254がネクストホップアドレスであることが分かる。viaは「~経由」の 意味であり、192.168.1.254経由で192.168.0.0/24のルートが学習されたと分かる。 directly connected は直接接続ルートであることからネクストホップは存在しない。 |
⑥ | 宛先ルートの学習時間 | ダイナミックルーティングにおいて、宛先ルートが追加されてからの経過時間。 上図の場合、「192.168.0.0/24」のルート情報を受信してから6秒経過している。 |
⑦ | 出力インターフェース | 受信パケットを宛先ネットワークに転送するための出力インターフェースを表示。 上図「192.168.0.0/24」宛のパケットはR2の「FastEthernet 1」から転送される。 |
ネットワークエンジニアにとってCiscoルータの show ip route が確認できることは超必須なことなので、しっかり理解しましょう。
まとめ
・直接接続ルート
→ルータの自身のI/FにIPアドレスを設定して、I/Fを有効化することで追加されるルートのこと。
・スタティックルート
→管理者が宛先ネットワークへの最適なルートを手動で設定したルートのこと。
・ダイナミックルート
→ルータで設定されたルーティングプロトコルにより、自動的に追加されるルートのこと。
・show up route
→Cisco機器でルーティングテーブルを確認するためのコマンド
スタティックルーティング
今回出てくる用語
・スタティックルーティングとは
◆ スタティックルーティングとは
スタティックルートとは、管理者が宛先ネットワークへの最適なルートを手動で設定したルートのことです。
スタティックルートの情報は他のルータへ通知されることはありません。また、ネットワークの状態に変化
があった場合でも、他に有効な宛先ルートがあっても、自動的にそのルートに切り替わることはありません。
ルータでこのスタティックルートを使用したルーティングのことを、スタティックルーティングと言います。
◆ スタティックルートの設定
下図は、それぞれのルータのI/FにIPアドレスの設定と有効化(no shutdown)をしている状態となります。
この時点でルータは直接接続ルートを追加することになるので、ルーティングテーブルは下図のとおりです。
この状態ではルーティングテーブルどおり端末AからBにパケットを送信しても届きません。なぜなら、R1の
ルーティングテーブルには、宛先IPアドレス「192.168.2.10」に該当する宛先ルートが存在しないからです。
そこでR1にスタティックルートの設定をしてみます。Cisco機器ではスタティックルートを設定するためには
グローバルコンフィグレーションモードでip routeコマンドを使用します。引数は以下となります。現時点で
初心者のネットワークエンジニアは、引数の distance と permanent については理解していなくてもOKです。
◆ スタティックルートの設定
(config) # ip route network mask ip-address | interface [ distance ] [ permanent ]
ip route コマンドの引数 | 説明 |
network | 宛先ネットワークのアドレスを指定する。 |
mask | 宛先ネットワークに対するサブネットマスクを指定する。 |
ip-address or interface | ネクストホップアドレス、または出力インターフェースを指定する。出力インターフェースを 指定する場合は、Serial などのポイントツーポイントのインターフェースであることが条件。 |
distance | アドミニストレーティブディスタンス値(AD)を変更したい場合に数値を指定する。(オプション) |
permanent | 宛先ルートへの出力インターフェースがダウンした場合でも、設定したスタティックルートが ルーティングテーブルから削除されないようにしたい時にpermanentと指定する。(オプション) |
R1は「192.168.2.0/24」の宛先ルートを学習する必要があるので、以下のスタティックルートを設定します。
上での設定により下図の通り端末AからBへパケットが届くようになります。しかし端末Aからのパケットが
Bへ送信できたとしても、端末BからAへ送信できないことがR2のルーティングテーブルを見れば分かります。
R2のルーティングテーブルには端末Aのアドレスに該当する 192.168.0.0/24 の宛先ルートが存在しません。
従って、端末A ⇔ B間で相互に通信できるようにするためには、R2に以下のスタティックルートが必要です。
R2でもスタティックルートを設定することで、端末A⇔B間で双方向に通信できるようになります。
このようにスタティックルートは、双方向に設定する 必要あります。パケットを送信できたとしても返りの スタティックルートがなければ、受信したパケット を送り返すことができません。これとても重要です。 コンピュータ間の通信は双方向に通信してはじめて 成立するので、片側だけのパケットが送信できても 意味がないのです。このようにスタティックルート を設定する場合、双方向に通信できるか確認します。 |
◆ デフォルトルートの設定
スタティックルートの場合、通信したい宛先ネットワークごとにスタティックルートを1行ずつ設定していく
必要があります。しかし、通信したい宛先ネットワークが膨大にある場合、設定していくのが非常に手間です。
そこで、その場合はデフォルトルートという特別なルートを設定します。デフォルトルートとは「0.0.0.0/0」
で全てのネットワークを示して、受信したパケットの宛先ネットワークアドレスが、ルーティングテーブルに
登録されていない場合でも指定したネクストホップアドレスにパケットを転送してくれる便利で特別なルート。
デフォルトルートはインターネットに接続する企業ネットワークのルータにはとても役立ちます。例えば下図
では、https://www.yahoo.co.jp/をブラウザで開いた時のパケットですが、このようなグローバルIPアドレスで
あっても、デフォルトルートを設定しておけば「0.0.0.0/0」に合致しネクストホップアドレス 192.168.1.253
に転送されます。インターネット上の通信したいグローバルIPアドレスを1行ずつ設定する必要はないのです。
デフォルトのルートの設定はスタティックルート同様に ip route コマンドを使用します。設定コマンド
引数なども全て同じ内容ですが、宛先アドレスには必ず「0.0.0.0 0.0.0.0」と指定する必要があります。
まとめ
・スタティックルーティングとは
→管理者が宛先ネットワークへの最適なルートを手動で設定したルートのことです。
スタティックルーティング – route add
今回出てくる用語
・route addコマンドとは
◆ スタティックルーティング – route addコマンドとは
route addコマンドは、ルータなどのネットワーク機器に設定するコマンドではなく、クライアントPCや
サーバなどに設定することができるコマンドです。このroute addコマンドの設定によって、特定の宛先
ネットワークに対して、デフォルトゲートウェイとは異なるゲートウェイのIPアドレスを指定できます。
実は、ルータやL3スイッチだけでなく、1つのインターフェースしか持たないクライアントPCやサーバでも
ルーティングテーブルを持っています。例えば、Windows クライアントPCの場合、コマンドプロンプトで
route printコマンドを入力すればルーティングテーブルを確認することができます。
上記の結果は、クライアントPCに対してIPアドレス「192.168.0.10」サブネットマスク「255.255.255.0」
デフォルトゲートウェイ「192.168.0.254」と設定した時の結果。つまりPCにIPアドレス関連の設定を行うと
ループバックアドレス、マルチキャストアドレス、ブロードキャストアドレス等がOSで自動的に登録されます。
※ つまり上記で意識すべきは、このPCにはデフォルトゲートウェイが「192.168.0.254」に設定されているという青枠の部分だけ。
route print コマンドの見方 | ||
① | Interface List | このサーバ(PC)で有効なインターフェースのリストが表示される。このサーバ(PC)では 0x1 (ループバックI/F)、0x2 (有線LANのI/F) 、0x3 (無線LANのI/F)の3つを確認できる。 |
② | Network Destination | 宛先ネットワークのアドレス |
③ | Netmask | 宛先ネットワークのサブネットマスク |
④ | Gateway | ゲートウェイのIPアドレス( いわばネクストホップのIPアドレス ) |
⑤ | Interface | パケットを送出するインターフェースのIPアドレス |
⑥ | Metric | メトリック値。宛先ネットワークへのルートが複数ある場合小さいメトリック値のパスを選択。 |
◆ スタティックルーティング – route addコマンドの使い方
route addコマンドを使用する時は、サーバでデフォルトゲートウェイを設定しているだけでは通信要件が
満たせない場合やゲートウェイのルータを制御できない場合など、特別な条件がある時にのみ利用します。
例えば下図のように、R1が外部ユーザの資産機器、R2がキャリアのレンタルルータなどにより設定変更が
できない、あるいは、セキュリティ上の問題でルーティング設定ができないとします。下図では、サーバは
インターネットとの通信はデフォルトゲートウェイ(254)にパケットを転送するので通信できますが、R1
の「172.16.20.0/24」の宛先ネットワークとはR2の機器を変更できない前提では通信ができない状態です。
※ R2のルータを自由に設定変更してよい場合、ルーティング設定やポリシーベースルーティング等で通信させることが可能です。
そこで、サーバ上でroute addコマンドを設定して、特定の宛先ネットワーク「172.16.20.0/24」に対し
デフォルトゲートウェイ (192.168.0.254) とは異なるゲートウェイのIPアドレス (192.168.0.1) を指定。
上図のNW構成でサーバ上のコマンドプロンプトで設定すべきroute addコマンドは以下の通りとなります。
route addコマンドのパラメータ説明 | |
① | route addコマンドの間に 「 -p 」 を指定することにより、OSの再起動後にもroute addのルートが保持される。つまり 「 -p 」を指定しない場合、再起動後にroute addが消えてしまうので、検証ではないのなら必ず設定するようにしよう。 「 -f 」を指定した場合、route addによるルート追加前に現在の経路情報を全て削除してしまう。基本的に使用しない。 |
② | 宛先ネットワークを定義 |
③ | 宛先ネットワークのサブネットマスクを定義 |
④ | ゲートウェイのIPアドレス( いわばネクストホップのIPアドレス )を定義 |
⑤ | オプション設定。経路のメトリック値を定義。同じ宛先へのルートが複数ある場合は数値が小さいルートが優先される。 今回の構成では、172.16.20.0/24への宛先ルートは1つしかないので、どのような値を定義しても通信上問題はない。 |
⑥ | オプション設定。パケットを送出するインターフェースを定義。指定しない場合は最適なI/Fが自動的に決定される。 今回の構成では、有線LANのNICに「192.168.0.10/24」のIPを割り当てているので、有線LANのNIC(0x2)を指定する。 |
route addコマンドの設定後、正しく設定されていることを確認するためにroute printコマンドを入力します。
以下の通り「172.16.20.0/24」の宛先ネットワークのゲートウェイは「192.168.0.1」になっていることが
確認できます。また、一番下の「Persistent Routes:」という項目にも、今回設定した route add の内容が
反映されています。つまり、このroute addの設定内容はOSの再起動後も削除されないこを意味します。重要。
route addコマンドで追加したスタティックルートを削除したい場合、route deleteコマンドを使用します。
以下の通りroute deleteの後に宛先ネットワークを指定します。その後、route printコマンドで反映を確認。
すでに述べましたが、上図の構成ではルータ側で ルーティング制御すれば、サーバ側でroute addに よる宛先ルートの設定は不要です。しかしながら、 前提条件を書きましたが、実際のNW環境では、 設定変更できない位置付けの機器が存在したり、 セキュリティ要件でサーバ側だけで通信制御して 欲しい、という要望が多くありますので、上図の 単純な構成で実装するケースが意外と多いです。 あと、同じことを申し上げますがroute addを指定 する際に「-p」の指定は忘れないようにご注意を! 「-p」を忘れるとOS再起動の後に設定は消えます。 |
まとめ
・route addコマンドとは
→ ルータなどのネットワーク機器に設定するコマンドではなく、クライアントPCやサーバなどに設定することができるコマンドです。
ダイナミックルーティング – 概要
・ダイナミックルーティングとは
→ルータで設定されたルーティングプロトコルで動的に追加されるルートのこと。
◆ ダイナミックルーティングとは
ダイナミックルートとは、ルータで設定されたルーティングプロトコルで動的に追加されるルートのこと。
ダイナミックルートの情報は、ルータで設定されたルーティングプロトコルの動作に従って他のルータに
対して自動的に通知されます。また、ネットワークの状態に変化があった場合、他に有効な宛先ルートが
あれば自動的にそのルートに切り替わります。ネットワーク経路の追加、変更等は全て動的に伝わります。
ルータでルーティングプロトコルを使用したルーティングのことをダイナミックルーティングと言います。
比較項目 | スタティックルーティング | ダイナミックルーティング |
ルートの設定方法 | 管理者が手動で設定 | ルーティングプロトコルにより動的に追加 |
ネットワーク状態の変化時 | 宛先ルートに変化なし | 宛先ルートが動的に更新される |
ルータの負荷 | 負荷はない | ルーティングプロトコルでCPUとメモリをやや消費 |
管理者の負荷 | ネットワークが大きい場合、設定する ルート数が多くなり、設定の手間がある | 複雑なネットワークの場合においては ルーティングプロトコルの深い知識が必要となる。 |
◆ ルーティングプロトコルの設定
ルーティングプロトコルにはRIP、EIGRP、OSPF、IS-IS、BGPなどの種類があります。今回は、RIPv2を
使用してどのような設定が必要になるのか、ダイナミックルートがどのように追加されるのかを解説します。
下図では、それぞれのルータの I/F にIPアドレスの設定と有効化( no shutdown )をしている状態です。
この時点でルータは直接接続ルートを追加することになるので、ルーティングテーブルは下図の通りです。
この状態ではルーティングテーブルどおり端末AからBにパケットを送信しても届きません。なぜならR1の
ルーティングテーブルには宛先IPアドレス「192.168.2.10」に該当する宛先ルートが存在しないからです。
端末AとBが通信できるように、R1とR2のルータでRIPv2を有効にし、RIPv2を有効化させるI/Fを指定します。
上記のように設定すると、R1とR2それぞれが自身のルーティングテーブルにある経路情報を、ルーティング
アップデートとして隣接ルータに通知(アドバタイズ)します。結果、R1は自身のルーティングテーブルには
ない「192.168.2.0/24」の宛先ルートをルーティングテーブルに登録し、同様にR2は「192.168.0.0/24」の
宛先ルートをルーティングテーブルに登録します。その結果、ルーティングテーブルは下図の通りになります。
下図は、端末A ⇔ B間で双方向に通信している様子を表したものです。下図で、赤字にしている部分が実際に
パケットの着信時に参照されるルーティングテーブルの該当箇所となっています。ダイナミックルーティング
の場合、通信させたいネットワークのインターフェースを有効化すれば自動的に経路情報がアドバタイズされて
いくのでスタティックルーティングのようにネクストホップのアドレスを確認しながら1つ1つ指定する必要が
ありません。大規模ネットワークでは、ダイナミックルーティングプロトコルを使用することが適しています。
まとめ
・ダイナミックルーティングとは
→ルータで設定されたルーティングプロトコルで動的に追加されるルートのこと。
ダイナミックルーティング – 詳細
今回出てくる用語
・ルーティングプロトコルの分類とは
・経路集約とは
◆ ルーティングプロトコルの分類
ルーティングプロトコルには、RIP、EIGRP、OSPF、IS-IS、BGPなど多くの種類があります。これらは
内部ゲートウェイプロトコルのIGP( Interior Gateway Protocol )と、外部ゲートウェイプロトコルの
EGP(Exterior Gateway Protocol) の大きく2種類に分類されます。下図のAS (Autonomous System) は
1つのISP、企業、研究機関など共通ポリシーにより運用されるネットワークの集合体のことを意味します。
内部 or 外部 | 説明 | ルーティングプロトコルの例 |
IGP | AS内で使用されるルーティングプロトコル | RIP、EIGRP、OSPF、IS-IS |
EGP | AS間で使用されるルーティングプロトコル | BGP |
この自律システムには一意の識別番号が割り当てられており、それをIANAが管理し、日本ではJPNICが割り
当てを行っています。具体例としてNTT東日本のAS番号は”17933″、早稲田大学は”7956″となっています。
上図でも分かる通りインターネットとはASの集合体とも言えます。なおAS内でどのルーティングプロトコル
(RIP or EIGRP or OSPF or IS-IS)を使用するのかはネットワーク環境や導入機器の実装などに依存します。
◆ IGPのルーティングプロトコルの分類 ( アルゴリズムによる分類 )
ルーティングプロトコルには大きくIGPとEGPがあることが分かりました。そして、IGPにはRIP、EIGRP
OSPF、IS-ISなどがあることが分かりました。さて、このIGPですが、ルーティングのアルゴリズムにより
ディスタンスベクター、リンクステート、ハイブリッドの3つに分類できます。それぞれの特性は以下です。
比較項目 | ディスタンスベクター | リンクステート | ハイブリッド |
最適ルートの決め方 | 距離と方向(ホップ数) | リンクの状態(コスト値) | 距離と方向(複合値) |
使用するアルゴリズム | ベルマンフォード | SPF | DUAL |
コンバージェンス | 遅い | 速い | 速い |
ルータの負荷 | 小さい | 大きい | 小さい |
ルーティングプロトコル | RIPv1、RIPv2 | OSPF、IS-IS | EIGRP |
コンバージェンス(収束)とはネットワークの安定した状態のこと。具体的にはネットワーク上の全ての
ルータがルーティングテーブル上に本来あるべき必要な宛先ルートを安定して保持している状態のことです。
ディスタンスベクターはディスタンス(距離)とベクター(方向)で最適なルートを決定するアルゴリズム。
簡単にいえば、ホップ数により最適なルートを決定します。ルータ間では定期的にルーティングテーブル全体
を交換し合うことでリモートネットワークの宛先ルートを受信します。単純な動作で収束が遅いのが特徴です。
リンクステートは、ルーティングプロトコルがネットワーク全体のトポロジーを把握した上で宛先への最適
ルートを決定するアルゴリズム。最適ルートの計算にSPF (Shortest Path First) を使用します。ルータ間で
ルーティングテーブル全体を交換するのではなくて、LSA (Link State Advertisement) と呼ばれるリンク、
つまり、I/Fに関連する状態を交換して、ネットワーク変化時に必要な情報だけをルータ間でやりとりします。
ハイブリッドは、ディスタンスベクターとリンクステートの両方の機能を組み合わせたアルゴリズム。これは
Cisco Systems独自のアルゴリズムであるDUALを使用し、宛先への最適ルートの計算を行っています。この
DUALでは最適ルートの決定と同時にバックアップルートを決定するため、収束が高速なのが特徴となります。
◆ IGPのルーティングプロトコルの分類(クラスフル/クラスレスによる分類)
先ほどはIGPのルーティングプロトコルを「ルーティングアルゴリズム」の点から分類してみました。今回は
IGPのルーティングプロトコルを通知するルート情報にサブネットマスクを含めるかどうかの点で分類します。
通知するルート情報にサブネットマスクを含めないのがクラスフルルーティングプロトコルです。それに対し
通知するルート情報にサブネットマスクを含めるのがクラスレスルーティングプロトコルです。一般的に使用。
クラスフル / クラスレス | 説明 | ルーティングプロトコルの例 |
クラスフルルーティングプロトコル | 通知するルート情報にサブネットマスクを含めない | RIPv1 |
クラスレスルーティングプロトコル | 通知するルート情報にサブネットマスクを含める | RIPv2、EIGRP、OSPF、IS-IS |
クラスフルルーティングプロトコルは通知するルート情報にサブネットマスクを含まないため、同じクラスフル
ネットワークにおいては同じサブネットマスクを使用する必要があります。例えば、以下のネットワーク体系と
なります。ネットワーク上の機器台数に関係なく全てのネットワークで同じサブネットマスクにする必要がある
ため効率的なアドレッシングができません。このアドレッシングが、FLSM( 固定長サブネットマスク )です。
クラスレスルーティングプロトコルは、通知するルート情報のサブネットマスクを含むので、同じクラスフル
ネットワークにおいて異なるサブネットマスクを使用することができます。例えば、以下のネットワーク体系
となります。ネットワーク上の機器台数に応じて、異なるサブネットマスクを使用することができることから
効率的なIPアドレッシングが可能です。このアドレッシングが、VLSM( 可変調サブネットマスク )です。
◆ 経路集約
ルーティングテーブル上の複数のルートを1つのルートにまとめることを経路集約と言います。経路集約には
自動経路集約と手動経路集約の2つがあり。自動経路集約はクラスフルネットワーク(クラスA or B or C)の
境界で自動的に行われる経路集約です。手動経路集約は、管理者で手動で設定可能な経路集約です。
自動経路集約では、集約される経路はクラスA ( /8 )、クラスB ( /16 )、クラスC ( /24 ) の3通りとなります。
下図においてR2はクラスフルネットワークの境界ルータとなります。R1からR2に対しては「172.16.0.0/24」
「172.16.1.0/24」「172.16.2.0/24」のネットワークは「/24」として通知されますがクラス境界ルータの
R2からR3にルート情報を通知する場合には、自動的に経路集約されて「172.16.0.0/16」として通知されます。
手動経路集約では、集約経路は管理者がルート情報の内容に応じて自由に定義することができます。上図R2が
クラスフルネットワークの境界ルータです。R2に「172.16.0.0/24」「172.16.1.0/24」「172.16.2.0/24」
のネットワークは「/24」として通知されます。境界ルータにおいて「172.16.0.0/24 ~ 172.16.3.0/24」の
4つのルートを持っている場合、これら4つのルートを含めることができる「172.16.0.0/22」というルートを
手動で定義することで、無駄なく適正に隣接ルータにルート情報を通知できます。手動で経路集約を行う場合
その集約経路に含めたいルートが含まれているかどうかを「サブネットマスクの計算ツール」でご確認下さい。
クラスフルルーティングプロトコルであるRIPv1では、自動経路集約が自動的に実行されます。さらに
自動経路集約は強制で、無効化することができません。一方で、クラスレスルーティングプロトコルでは
RIPv2とEIGRPでは自動経路集約と手動経路集約のどちらでも実行可能で自動経路集約も無効化できます。
OSPFとIS-ISでは、手動経路集約のみ実行可能です。ややこしいので、これらの内容を下表にまとめます。
ルーティングプロトコル | 自動経路集約 | 手動経路集約 | |
クラスフルルーティングプロトコル | RIPv1 | ○ ( 無効化は不可 ) | × |
クラスレスルーティングプロトコル | RIPv2、EIGRP | ○ ( 無効化は可能 ) | ○ |
OSPF、IS-IS | × | ○ |
クラスレスルーティングプロトコルで手動経路集約を行わない場合、上図では「172.16.0.0/24~3.0/24」の
経路が「/24」としてそのままR3に通知されることになります。従って、R2で手動経路集約が行われない場合
R3のルーティングテーブルでは「172.16.0.0/24」「172.16.1.0/24」「172.16.2.0/24」「172.16.3.0/24」
の状態で存在します。クラスレスルーティングプロトコルではサブネットマスクの情報が通知されるからです。
◆ クラスフルルーティングの問題点( 不連続サブネットの問題点 )
クラスフルルーティングでは不連続サブネットをサポートできません。不連続サブネットとは異なるクラスフル
ネットワークにより分断されているサブネットのことです。例えば下図の「172.16.1.0/24 と 172.16.2.0/24」
のネットワークは、「192.168.1.0/24」や「192.168.2.0/24」の異なるクラスフルネットワークによって分断
されていて、クラスフルルーティングプロトコルのRIPv1を使用した場合には、通信上に不具合が発生します。
R1がR2に「172.16.1.0/24」ネットワークを通知する時は、自動経路集約が実行される結果「172.16.0.0/16」
として通知されるので、R2のルーティングテーブルでは「172.16.0.0/16」のネクストホップは192.168.1.254
として登録されます。また、R3がR2に「172.16.2.0/24」のネットワークを通知する時には自動経路集約が実行
される結果「172.16.0.0/16」として通知されることから、R2のルーティングテーブルの「172.16.0.0/16」の
ネクストホップは今度は「192.168.2.254」として登録されます。
結果、R2のルーティングテーブルでは「172.16.0.0/16」という宛先ルートが2つ登録される結果となります。
このような状態では上図の説明にあるように通信できなくなります。以上のことからも、不連続サブネットが
存在するネットワークにおいては、クラスレスルーティングプロトコルをルータに実装させる必要があります。
まとめ
・ルーティングプロトコルの分類とは
→ 内部ゲートウェイプロトコルのIGP( Interior Gateway Protocol )と、外部ゲートウェイプロトコルのEGP(Exterior Gateway Protocol) の大きく2種類に分類されます。
・経路集約とは
→ルーティングテーブル上の複数のルートを1つのルートにまとめることを経路集約と言います。
ルーティング – ADとは
今回出てくる用語
・アドミニストレーティブディスタンス( AD )とは
◆ アドミニストレーティブディスタンス( AD )とは
1台のルータには、スタティックルートとダイナミックルートを混在させられます。また、1台のルータに
複数のルーティングプロトコルを設定できます。下図R1のルーティングテーブルで「172.16.4.0/24」の
宛先ルートをスタティックルートとして保持するだけではなく、RIPによるダイナミックルートとして受信
しているとします。このような場合には、ルータは信頼度の高いルーティングプロトコルからの情報だけを
ルーティングテーブルに登録します。この信頼度を決めるための値がアドミニストレーティブディスタンス。
R1では「172.16.4.0/24」の宛先ルートに対してRIPによるダイナミックルートとスタティックルートの
2つの情報源があります。RIPのダイナミックルートとスタティックルートではスタティックルートの方が
信頼度が高い(AD値が小さい)ため、ルーティングテーブルでは、スタティックルートの経路情報を登録。
信頼度が高い(情報源:S 宛先ルート:172.16.4.0/24 ネクストホップ:172.16.3.254 インターフェース:FastEthernet0/3)
信頼度が低い(情報源:R 宛先ルート:172.16.4.0/24 ネクストホップ:172.16.2.254 インターフェース:FastEthernet0/2)
ただし、R3のルータがダウン(電源OFF)すればR1で設定しているスタティックルートはネクストホップが
見えなくなるので、ルーティングテーブルからスタティックルートが消えます。そしてR2から受信している
RIPのダイナミックルートがR1のルーティングテーブルに登録されて、172.16.4.5 とはR2経由で通信します。
Cisco機器におけるデフォルトのAD値 | ||
ルート情報 | AD値 | 信頼度 |
直接接続ルート | 0 | 最も高い |
スタティックルート | 1 | |
EIGRP – サマリールート | 5 | |
BGP – 外部 | 20 | |
EIGRP – 内部 | 90 | |
OSPF | 110 | |
IS-IS | 115 | |
RIP | 120 | |
ODR | 160 | |
EIGRP – 外部 | 170 | |
BGP – 内部 | 200 | |
不明 ( Routing Table にのらない ) | 255 | 最も低い |
EIGRPやBGPの”外部”というルートは、他のルーティングプロトコルで再配布され、EIGRP/BGPルートに変換されたルートのこと。
ルーティングテーブルの比較基準には3つあります。 ① ロンゲストマッチ ② アドミニストレーティブディスタンス ③ メトリック ルーティングテーブルにおける優先順位は例外なく ①、②、③の順番で比較されていくことになります。 ルーティングテーブルにパケットが着信した時にその パケットの宛先アドレスを見て、これらの優先順位に 従ってパケットが転送されていきます。この考え方は 非常に重要です。ネットワークエンジニアとして仕事 をしていく上で、常に求められるNW技術と言えます。 |
まとめ
・アドミニストレーティブディスタンス( AD )とは
→ ルーティングテーブルに登録する際の信頼度を決める値のこと
ルーティング – メトリックとは
・メトリックとは
◆ メトリックとは
複数のルーティングプロトコルが動作していて、複数の情報源により得られた宛先ルートが複数ある場合は
AD(administrative distance)値に従い、1つの最適な宛先ルートがルーティングテーブルに登録されます。
そして、ある1つのルーティングプロトコルで得られた宛先ルートが複数ある場合、メトリックの値が小さい
経路が最適な宛先ルートとしてルーティングテーブルに登録されます。このメトリックを以下で説明します。
下図では「172.16.1.0/24」から「172.16.4.0/24」という宛先ネットワークへは、2つの通り道があります。
1つは「R1 ⇒ R2 ⇒ R3」という経路、もう1つは「R1 ⇒ R4」という経路。下図の各ルータにてRIPが有効な
場合、RIPではメトリック値にホップ数(ルータから宛先ルートまでに経由するルータの数)を使用すること
になりますのでホップ数が少ない(メトリック値が小さい)R1 ⇒ R4の経路で通信を行います。R1⇒R2⇒R3
の経路ではホップ数は「2」となります。一方、「R1⇒R4」の経路においては、ホップ数が「1」となります。
以上の内容から、RIPでは、ホップ数の少ない経路である「R1 ⇒ R4」のパスにて通信を行うことになります。
ルーティングプロトコルによりこのメトリックの値は異なります。RIPではホップをメトリックの値にしますが
OSPFの場合はコスト(インターフェースの帯域幅)をメトリックの値に使用します。従って、例えば下図では
OSPFをルーティングプロトコルに使用している場合、「172.16.4.0/24」へR1⇒R2⇒R3の経路で通信します。
OSPFでは10Mbpsのリンクはコスト値が 10 となります。そして100Mbpsのリンクはコスト値が1となります。
下図のR1⇒R2⇒R3では、100Mbpsのリンクを2回経由することになるので「1+1」でコスト値は2となります。
R1⇒R4では10Mbpsのリンクを経由するのでコスト値は10。2 と 10 とでは 2 の方がメトリック値が低いです。
メトリック値の定義と基準はルーティングプロトコルにより異なりますが、小さい値が優先されるのは絶対。
ルーティングプロトコル | メトリック | 説明 |
RIP | ホップ数 | ルータから宛先ルートまでに経由するルータの数 |
EIGRP | 複合メトリック | インターフェースの帯域幅、遅延、信頼性、負荷、MTU |
OSPF | コスト | インターフェースの帯域幅 |
IS-IS | ナローメトリック ワイドメトリック | ナローメトリック : I/F上のメトリック(1 ~ 63) ワイドメトリック : I/F上のメトリック(1 ~ 16777214) |
Ciscoルータのルーティングテーブルでのメトリック値の確認方法はルーティングテーブルの見方でご確認を。
繰り返しになりますが、ルーティングテーブルでは 先ず、ロンゲストマッチに従い宛先ルートへのパス が決定します。ルーティングにおける大原則です。 次に、ルータ上で複数のルーティングプロトコルが 動作していて、複数の情報源により宛先ルートを 得る場合、AD値の最も低いルーティングプロトコル のルート情報をルーティングテーブルに登録します。 最後に、ある1つのルーティングプロトコルにおいて 得られた宛先ルートが複数ある場合、メトリック値の 最も小さいパスのルート情報をルーティングテーブル に登録します。メトリック値が全く同じである場合は 複数のルートがルーティングテーブルに存在して、 パケットのロードバランスして送出されていきます。 |
まとめ
・メトリックとは
→ADの次に最適なルートを判断するための値で、小さい値が優先される
ルーティング – フローティングスタティックルート
今回出てくる用語
・フローティングスタティックルートとは
フローティングスタティックとは、ダイナミックルーティングプロトコルでルート情報が受信できなくなった場合に、AD値を調整したスタティックルートでトラフィックを救済する技法のことです。人によっては、略して「フロスタ」と言っている方もいらっしゃいます。
デフォルトでは、スティックルートのAD値は「1」となっていることから、ダイナミックルーティングプロトコルによって学習したルート情報よりもスタティックルートは優先されます。そこで、スタティックルートのAD値を、ダイナミックルーティングプロトコルのAD値よりも大きな値に設定することで、そのスタティックルートはダイナミックルーティングプロトコルからルート情報を受信できなくなった場合にトラフィックを救済することができます。
この種のスタティックルートは「フローティングスタティックルート」と呼ばれており、このスタティックルート情報は、ルーティングテーブルにダイナミックルート情報が消失した場合にだけ、ルーティングテーブルにインストールされます。
◆ フローティングスタティックの設定:従来の主流な利用例
フローティングスタティックルートは、従来のWAN構成ではISDNをバックアップ回線として使用していたネットワークでよく利用されていました。
ISDN回線をご存知でない方にとっては、上図の構成なら主回線と副回線ともにダイナミックルーティングプロトコルを動作させればいいのではないかと考えてしまうかもしれません。
しかし、従量課金のサービスであった場合、普段は使用しないのにトラフィックを流すのは、コスト面から非常に問題であることが分かるかと思います。そのため、上図のような過去のWANではフローティングスタティックルートとダイヤルオンデマンドルーティングがセットでよく実装されていました。なつかしいですね。
フローティングスタティックの設定:現在の主流な利用例
フローティングスタティックが、AD値の高いスタティックルートを設定することで実現できるバックアップの手法という観点から、IP SLAの機能と併用してAD値を設定するスタティックルートについても、フローティングスタティックルートと言えることができます。
本記事の冒頭で、フローティングスタティックルートはダイナミックルーティングプロトコルでルート情報が受信できなくなった時にAD値を調整したスタティックルートでトラフィックを救済する技法と紹介しましたが、ダイナミックルートに関係なく、あるスタティックルートのルート情報がルーティングテーブルから消失した時にもフロスタを利用することができます。
はじめて実装する方は少し複雑に感じてしまうかもしれませんが、一度でも経験すればとても簡単な仕組みであることを理解できるかと思います。
詳細については、IP SLA – Object Trackingによる経路のバックアップとその設定例として、IP SLA – Object Trackingによる経路バックアップの設定例とコマンド解説をご参考頂ければと思います。
もちろん、この記事で書いた以外の手法でフローティングスタティックルートは実装することができます。要するに、AD値を調整したスタティックルートを潜伏させてバックアップ経路を生成させておきたい時に実装する手法です。
なお、企業LANネットワークで実装する場合は必ず双方向通信を意識して実装させましょう。
まとめ
・フローティングスタティックルートとは
→ダイナミックルーティングプロトコルでルート情報が受信できなくなった場合に、AD値を調整したスタティックルートでトラフィックを救済する技法のことです。
CEFとは
今回出てくる用語
・CEFとは
◆ CEFとは
ルータが、パケットを着信インターフェースから発信インターフェースへ転送する機能をスイッチングと
言います。Ciscoでサポートしているスイッチング方式には以下があり、デフォルトでは、CEFが有効です。
プロセススイッチング ⇒ ファストスイッチング ⇒ CEFの順で技術開発が進んでいき改善されてきました。
スイッチング方式 | 転送処理 | 説明 |
プロセススイッチング | 低速 | パケット単位でCPU処理して転送する方式 |
ファストスイッチング | 中速 | パケットのフロー単位でCPU処理して転送を行う方式 |
CEF | 高速 | 全てのパケットをハードウェアで転送する方式 |
ファストスイッチングのフローとは「送信元から宛先へのデータの流れ」のことです。Ciscoルータでは
着信した最初のパケットのみCPUで処理して、同じフローの後続パケットは、ハードウェアで処理します。
◆ CEF(Cisco Express Forwarding)とは
CEFとは、全てのパケットをハードウェア処理してパケット転送を行うシスコ独自のスイッチング方式です。
スイッチング処理はコントロールプレーンとデータプレーンで実行されますが、CEFはデータプレーンでのみ
スイッチングを行うことで高速なパケット転送を実現しています。
プレーン | 説明 |
コントロールプレーン | CPUを使用してデバイス全体の制御を実行する |
データプレーン | ASICを使用したハードウェア処理によるスイッチングを実行する |
CEFでは、データプレーン上でFIBテーブルとAdjacencyテーブル(隣接テーブル)を使用します。
データプレーンで使用するテーブル | 説明 |
FIBテーブル | ルーティングテーブルに該当する役割( ルーティングテーブルをもとに作成 ) |
Adjacencyテーブル | ARPテーブルに該当する役割( ARPテーブルをもとに作成 ) |
CEFでは、コントロールプレーンのルーティングテーブルを基に、データプレンのFIBテーブルが作成して
コントロールプレーンのARPキャッシュを基に、データプレンのAdjacencyテーブルが作成されることから、
キャッシュ情報が必要なく、全パケットがハードウェアで処理されるのでCPU負荷も少なく高速処理します。
◆ CEFの有効化
Ciscoルータではデフォルトで以下の1行が設定されており、CEFが有効化されています。
Cisco(config)# ip cef |
FIBテーブルとAdjacencyテーブルは、それぞれ以下のコマンドでステータスを確認できます。
ハードウェア | 説明 |
FIBテーブル | show ip cef |
Adjacencyテーブル | show adjacency detail |
まとめ
・CEFとは
→全てのパケットをハードウェア処理してパケット転送を行うシスコ独自のスイッチング方式です。
VRRPとは
今回出てくる用語
・VRRPとは
◆ デフォルトゲートウェイの冗長化
デフォルトゲートウェイの冗長化とは、ホスト ⇒ ルータ間の通信において通信経路を冗長化させることです。
クライアントPCは通常はデフォルトゲートウェイを1つしか指定できないので、下図の構成で、ホストAが
デフォルトゲートウェイを「172.16.1.1」と指定した場合、そのIPアドレスを持つR1に障害が発生した場合、
PC側でデフォルトゲートウェイを「172.16.1.2」と設定変更しなければ、通信が出来なくなってしまいます。
デフォルトゲートウェイを冗長化するためのプロトコルにはVRRPやHSRP等があります。このプロトコルを
使用することにより、物理的には2台あるルータを論理的(仮想的)に1台のルータに見せることができます。
下図でR1とR2でVRRPを実装させています。ホストAのデフォルトゲートウェイのIPアドレスは、R1やR2の
物理IPアドレスではなく仮想IPアドレス (VIP) を指定します。ホストAからパケットを受信した仮想ルータは
物理的にはMasterルータと呼ばれるActiveなルータ(下図ではR1)でパケット転送などの処理が行われます。
また、MasterルータのR1に障害が発生した場合 BackupルータのR2が、自動的にMasterルータに 切り替わり、パケット転送の処理を行います。 このように仮想ルータを構成する物理的なルータに 障害が発生した場合でもホストのデフォルトゲート ウェイのIPアドレスは仮想IPを指定しているので、 アドレスの設定変更を手動で行う必要がなく、通信 を継続することができます。ただし障害が発生した 場合はBackupルータがMasterルータに切り替わる まで数秒くらいの通信できない時間は発生します。 ※ HSRPの場合、デフォルト値なら10秒くらい。 |
※ 仮想IPアドレスに物理インターフェースのIPアドレス(上図では”172.16.1.1″) の指定も可能です。
※ 冗長化プロトコルのHSRPはCisco独自のプロトコルですが、考え方自体は上図のVRRPと同じです。
複数のルータやL3スイッチをグループ化して、デフォルトゲートウェイを冗長化させるHSRP、VRRP、
GLBPなどのプロトコルは、総称として FHRP(First Hop Redundancy Protocol)と呼ばれています。
まとめ
・VRRPとは
→デフォルトゲートウェイを冗長化するためのプロトコル
Proxy ARPとは
・Proxy ARPとは
◆ Proxy ARP(プロキシARP)とは
Proxy ARPとは、他のデバイス宛てのARP要求に対して、本来の問い合わせ先に代わってARP応答する機能。
Proxy ARPはルータなどのL3デバイスで実装します。Proxy ARPはサブネット化されたネットワーク環境で
サブネットマスクを認識しない旧式のホストが通信する時に、一般的に使用されていた機能ではありますが、
現在では、サブネットを設定できない旧式ホストは存在せず、またサブネットを適正に実装することからも
この観点でのProxy ARPの実装例は少なく、単に、ARPの代理応答という観点で実装するケースがあります。
◆ Proxy ARP(プロキシARP)の説明 – サブネットを認識できない旧式ホストが存在するケース
下図で、ホストAからBにパケットを送信する時、ホストAはネットワークアドレスを比較してホストBが同じ
セグメントにいると判断して、デフォルトゲートウェイのアドレスへARP要求を行うのではなく、ホストBの
IPアドレスにARP要求を行います。プロキシARPが有効な I/F を持つルータがこのARP要求を受信した場合、
ホストBの代わりにプロキシARP応答パケットを送信します。その結果、下図においても、ホストAとBは同じ
セグメントにいるような通信を行えます。Cisco機器では、プロキシARPはデフォルトで有効になっています。
◆ Proxy ARPの有効化( デフォルトで有効 )
Cisco(config)# interface gigabitEthernet 0/1 Cisco(config-if)# ip proxy-arp |
◆ 参考情報:ARP Request と ARP Reply パケットの中身
まとめ
・Proxy ARPとは
→他のデバイス宛てのARP要求に対して、本来の問い合わせ先に代わってARP応答する機能。
IRDP(ICMP Router Discovery Protocol)とは
今回出てくる用語
・IRDPとは
◆ IRDPとは
IRDPは、有効なデフォルトルートを通知するメカニズムをルータに提供する「ICMPの拡張機能」です。
IPホストは既存のプライマリールートが利用不能になった時にIRDPを使用して新しいパスを得ることが
できます。IRDPでは、ホストでの手動設定も必要なく、ルーティングプロトコルを認識する必要もない。
※ 現在の企業ネットワークにおいて、このような怪しいプロトコルが使用されることは先ずありません。
IRDPを使用するホストは、I/F上でIRDPが有効になっているルータから、IRDPアドバタイズメントを
リスンします。その通知された情報は予め定義されたホールドタイム値の間だけ有効とみなされます。
ホールドタイム値の期間中に新しいアドバタイズメントを受信できなかった場合、アドバタイズされた
情報は無効と見なされ削除されます。IRDPのアドバタイズメントはデフォルトで450秒~600秒ごとに
一回送信されます。デフォルトのホールドタイム値は30分。※ IRDPの機能はデフォルトで無効です。
◆ IRDPのコマンド
IRDPはデフォルトでディセーブルであり、IRDPを利用するためには以下のI/F設定を行う必要があります。
Cisco(config-if)# ip irdp [ multicast | holdtime seconds | maxadvertinterval seconds | minadvertinterval seconds | preference number | address address number ] |
キーワード | 説明 |
multicast | 任意:IRDPアドバタイズメントをマルチキャストで行う場合に使用。 デフォルトではIRDPアドバタイズメントはブロードキャストで転送される。 |
holdtime seconds | 任意:アドバタイズメントが有効とみなされるホールドタイム値。デフォルトでは maxadvertinterval の3倍の値であり maxadvertinterval よりも大きい必要がある。 |
maxadvertinterval seconds | 任意:アドバタイズされるまでの最大インターバル値。1秒から1800までの間。 0を指定した場合、求められた時だけアドバタイズします。デフォルト値は600秒。 |
minadvertinterval seconds | 任意:アドバタイズされるまでの最小インターバル値。1秒から1800までの間。 デフォルト値は450秒。 |
preference number | 任意:プレファレンス値。この値が大きいほどルータの優先度が高くなり IRDPのプライマリールータとなる。デフォルト値は 0 。 |
address address [ number ] | 任意:proxy advertiseへのIPアドレス。そのアドレスに対してプレファレンス値も指定可。 |
◆ IRDPの設定例
下図では、IRDPにより2つのルータがIRDP対応ホストに対してデフォルトルートをアドバタイズしています。
ホストは2つのデフォルトルートを保持することになりますが、優先パスはR1から受信したデフォルトルート
になるようpreference値をR1に100と設定しています。R1のルータがダウン後、ホールタイム値が過ぎれば
R2から受信したデフォルトルートを使用しますが、R1がアクティブになるとR1から受信したデフォルトルート
を使用するようになります。アドバタイズメントインターバル値は「3~6秒」、ホールド値は「18秒」と定義。
R1(config)# interface FastEthernet 0/0 R1(config-if)# ip address 192.168.0.1 255.255.255.0 R1(config-if)# ip irdp R1(config-if)# ip irdp maxadvertinterval 6 R1(config-if)# ip irdp minadvertinterval 3 R1(config-if)# ip irdp holdtime 18 R1(config-if)# ip irdp preference 100 | R2(config)# interface FastEthernet 0/0 R2(config-if)# ip address 192.168.0.2 255.255.255.0 R2(config-if)# ip irdp R2(config-if)# ip irdp maxadvertinterval 6 R2(config-if)# ip irdp minadvertinterval 3 R2(config-if)# ip irdp holdtime 18 |
実際の検証ではIRDP対応ホストとしてルータを使用(グローバルコンフィグで no ip routing と ip gdp irdp を定義)しました。
R1とR2のIRDPのステータスは show ip irdp で確認、IRDP対応ホスト( ルータ )は show ip route によりステータスを確認。
◆ LANホストからのファーストホップ
ある宛先に至るファーストホップとなるルータ(デフォルトゲートウェイ)をホスト(クライアントPC)が
調べる方法には以下の方法があります。今日の企業LANでは、一般的にVRRPやHSRPなどが使用されます。
※ スタックで冗長化されたL3スイッチがある場合、これらは使用せずにL3スイッチのIPアドレスを指定。
デフォルトゲートウェイをLANホストが調べる方法 | |
ダイナミックプロセス | Proxy ARP / IRDP |
スタティックプロセス | VRRP / HSRP / GLBP |
まとめ
・IRDPとは
→有効なデフォルトルートを通知するメカニズムをルータに提供する「ICMPの拡張機能」です。
ARP Reply を返してくれない時の対処方法
◆ ARP Reply してくれない時の対処
TCP/IPを利用したEthernet LANでの通信には、IPアドレスとMACアドレスの2つの情報が必要となります。
そのため、IPアドレスからEthernetのMACアドレスの情報を得られる ARP を使用します。しかしこちらが
ARPリクエストを送信しても、相手側の機器の仕様によってARPリプライを返してくれない場合があります。
そのような場合、以下の3つの手法によって対処することができます。
① 自身の機器でARPエントリをスタティックで登録
⇒ ARPリプライしてくれないIPアドレスとMACアドレスのARPエントリを静的に登録します。
② 自身の機器で「/32」のホストルートを定義
⇒ ARPリプレイしてくれないデバイスのI/Fをネクストホップとしたホストルートを定義します。
③ 相手側の機器でProxy ARPを有効にする( Juniper SRXなどの場合 )
⇒ ARPリプライしてくれないデバイス(SRXなど)でProxy ARPを有効化して代理応答させます。
注意点として①の手法を採用した場合は、相手側の機器が故障して機器交換になった時はMACアドレスが
変更になるので、再度設定し直す必要があることから運用上の手間が発生してしまいます。その観点から、
当方は基本的に②または③の手法で通信要件を満たすようにしています。では具体的なケースを見てみます。
◆ ケース1:F5 – snat を iRule で定義した時
F5のBIG-IPでバーチャルサーバを作成した場合、BIG-IPはそのバーチャルサーバのIPアドレスに対して
ARPリクエストが着信すれば、ARPリプライを返してくれます。しかし、例えばアウトバウンド通信に
対して送信元アドレス変換を行う定義をiRuleで定義した場合は、その変換後のBIG-IPアドレスに対して
ARPリクエストを送信しても、ARPリプライを返してくれない仕様になっています。そのような場合は、
ARPリプライを求めている上位の機器で「/32」のホストルートを定義することで要件を満たしています。
◆ 上位機器がCisco機器の場合の設定例
Cisco(config)# ip route 10.1.1.10 255.255.255.255 10.1.1.1 |
宛先の「10.1.1.10」がBIG-IPによるNAT変換後のアドレスであり、ネクストホップの「10.1.1.1」はBIG-IPのI/Fのアドレス。
◆ ケース2:Juniper – SRXのNAT変換時
Juniper SRXでは、自分のI/FのIPアドレス以外のARPを返さない仕様になっていることから、NAT変換で
Juniper SRXのIPアドレスを使用するのではなく、そのI/Fと同じセグメントのIPアドレスを使用する場合、
構成によりARPリプライを返してくれません。そのような場合、Juniper社の実装例で紹介されている通り
Proxy ARPをSRXのI/Fで定義します。
◆ fe-0/0/0.0 で 1.1.1.5 のIPアドレスのARPリプライを返すための設定
SRX# set security nat proxy-arp interface fe-0/0/0.0 address 1.1.1.5 |
SRXの I/F と同じセグメントのIPアドレスをNAT変換後のアドレスとして使用する場合でも、対向の機器で
その変換後のアドレスを宛先としたホストルートを定義している場合は、ネクストホップのIPアドレスさえ
MACアドレスを解決(つまりSRXのI/FのMACアドレスの解決)できれば通信できるのでProxy ARPは不要。
また、ホストルートが定義されていない場合でも、例えば、SRX同士のルートベースVPN接続の場合において
自身のトンネルインターフェースのセグメントと、相手のトンネルインターフェースのセグメントが異なれば
SRXのTunnel I/Fと同じセグメントのIPアドレスをNAT変換後のアドレスとして使用する場合でもProxy ARP
の設定は不要となります。Tunnel I/F はLAN接続とは異なり、ピア機器で異なるセグメントを定義できます。
◆ ルートベースVPNで自身のTunnel I/F が 10.1.1.0/29、相手のTunnel I/F が 10.1.2.0/29 時に設定するスタティックルート
SRX# set routing-options static route 10.1.2.0/29 next-hop st0.0 |
OSPF – リンクステート型ルーティングプロトコルとは
今回出てくる用語
・リンクステート型ルーティングプロトコルとは
◆ ダイナミックルーティングプロトコルの2つのタイプ
ダイナミックルーティングプロトコルには大きく2つのタイプのルーティングプロトコルがあります。1つは
ディスタンスベクタ型ルーティングプロトコルです。もう1つはリンクステート型ルーティングプロトコル。
リンクステート型ルーティングプロトコルには、OSPFとIS-ISがあります。日本の企業ネットワークで最も
使用されているリンクステート型ルーティングプロトコルはOSPFです。ちなみに、ディスタンスベクタ型、
リンクステート型以外にもCisco社独自のハイブリッド型(拡張ディスタンスベクタ型)というのもあります。
ディスタンスベクタ型プロトコルのRIPでは、最大ホップ数が15であり拡張性がない点、VLSMに対応して
いない点、コンバージェンス(収束)が遅い点などから大規模なネットワークには適していません。そこで、
大規模なネットワーク用として以下に紹介するリンクステート型ルーティングプロトコルが開発されました。
リンクステート型ルーティングプロトコルではホップ数制限がなく、拡張性もあり、収束も高速になります。
◆ リンクステート型ルーティングプロトコルとは
ディスタンスベクタ型ルーティングプロトコルの場合、下図の通り「自身のルーティングテーブルに、隣の
ルータから通知されたルーティングアップデートの情報をそのまま追加していく」という単純な方式でした。
リンクステート型ルーティングプロトコルではルーティングテーブル作成のために次のステップを踏みます。
① Helloパケットを送信し合い、隣接ルータとネイバー関係を確立し、ネイバーテーブルを作成。
② 全体のネットワーク構成を知るために、そのネットワーク上の全てのルータから情報(LSA)を収集。
③ その収集したLSAをトポロジテーブルに格納する。そして、その情報からトポロジマップを作成。
④ そのトポロジマップから、SPFアルゴリズムによりSPFツリーと呼ばれるネットワーク構成図を作成。
⑤ そのSPFツリーから最短経路を計算し、最短パスをルーティングテーブルに登録。
LSA (Link State Advertisement)には、ルータの I/F のIPアドレス情報、そのルータのリンクに関する情報などが含まれます。
※ 下図のトポロジテーブルは、OSPFでは LSDB( Link State Database )と呼ばれています。
これだけのステップを踏むとはいえ、全て自動的に行われるので、リンクステート型ルーティングの設定自体はとても簡単です。
ディスタンスベクタ型ルーティングプロトコルでは、30秒間隔で全ての経路情報をアップデートしますが
リンクステート型ルーティングプロトコルでは、30分間隔でLSAごとに同期を行うので負荷が少ないです。
リンクステート型ルーティングプロトコルではトポロジに変更があった場合、トリガードアップデートで
即時にLSAをネットワーク内の全てのルータにアドバタイズします。そのLSAを受信した各ルータは、その
LSAをトポロジテーブルに格納 ⇒ トポロジマップの作成 ⇒ SPFツリーの作成 ⇒ ルーティングテーブルの
更新を行います。トポロジチェンジの際は変更部分だけを差分アップデートするので帯域消費が少ないです。
まとめ
・リンクステート型ルーティングプロトコルとは
→大規模なネットワーク用として、日本の企業ネットワークで最も使用されているリンクステート型ルーティングプロトコルはOSPFです。
OSPF – 基本動作
◆ OSPFとは
OSPF (Open Shortest Path First)はリンクステート型ルーティングプロトコル。リンクステート型の
ルーティングプロトコルの特徴は、先に解説したリンクステート型ルーティングプロトコルの通りですが
この解説にOSPFを当てはめて詳細に解説します。OSPFには、IPv4対応の OSPFv2( バージョン2 )と
IPv6対応の OSPFv3( バージョン3 )の2種類ありますが、一般的にOSPFといえばOSPFv2を指します。
◆ OSPF ① Helloパケットによるネイバー関係の確立
OSPFでは隣接ルータとHelloパケットを交換することでネイバー関係を確立します。このHelloパケットは
マルチキャスト(224.0.0.5)で送信しています。ネイバーを認識するとネイバーテーブルに格納されます。
ネイバー確立後、ネイバー関係を維持する(存在を確認する)ために定期的にHelloパケットを送信します。
◆ OSPF ② LSA交換 ⇒ LSDB構築 ⇒ トポロジマップ作成
ネイバー関係の確立後、OSPFルータは自身の持つリンク情報(インターフェース情報)をネイバールータに
LSA(Link State Advertisement)として送信し合います。受信したLSAはトポロジテーブルに格納します。
そして受信したLSAは、別のネイバールータに送信して、最終的にはネットワーク全体でLSAが通知されます。
OSPFではトポロジテーブルのことをLSDB( Link State Database )と呼びます。LSDBは同じエリア内の
全てのルータで同じLSDBを保持します。エリアとはLSAを交換する範囲を示す論理的なグループのことです。
そしてOSPFではLSDBに格納されたLSAを組み合わせてネットワーク全体の地図(トポロジマップ)を作成。
◆ OSPF ③ SPFツリーの作成 ⇒ ルーティングテーブルの作成
トポロジマップを作成したOSPFルータでは、次にSPFアルゴリズム(ダイクストラ)を実行し階層ツリーの
SPFツリーを作成します。SPFは宛先ネットワークに対する最短パスを計算するアルゴリズムです。SPFでは、
各ルータは自身をルートとして頂点に位置付け、宛先ネットワークへのコスト合計値を計算します。コストは
リンク(インターフェース)の帯域幅を基に自動的に算出されます。各リンク毎に手動で設定することも可能。
つまり、10Mbpsのコスト値は 10、100Mbpsのコスト値は 1、1Gbpsのコスト値は、計算上0.1ですが 1 。
下図の場合、全リンクが1Gbpsなので各リンクのコスト値は 1。例えばR1から「192.168.3.0/24」宛へは
R1 ⇔ R2間のコスト 1、R2 ⇔ R3間のコスト 1、R3 ⇔ 192.168.3.0/24間のコスト 1 、の合計値の 3 です。
コスト値の計算について、詳細に確認します。下図の場合、R1から「192.168.9.0/24」のネットワークへ
R2経由とR4経由の2つのパスがありますが、R2経由の合計コストは 3、R4経由の合計コストは 12 になる
ことから、最短パスはR2経由となりルーティングテーブルは下図の通りになります。なお合計コストの値は
その宛先ネットワークへパケットを送出するインターフェースに割り当てられたコストを加算し算出されます。
※ R1から宛先となる「192.168.9.0/24」へは、下図ルータの青○マークの I/F に割り当てられたコストを加算して算出されます。
R4 ⇔ R5間も100Mbpsリンクでコストが 1 である場合、R1から「192.168.9.0/24」のネットワークへは
R2経由でもR4経由でも合計コストが 3 となります。OSPFでは等コストロードバランシング機能をサポート
していることから、R2経由の経路情報、R4経由の経路情報の両方がルーティングテーブルに作成されます。
その場合、その宛先トラフィックをR1が受信するとこれら複数のルートに分散してパケットを転送されます。
, |
OSPF – トポロジ変更時の動作
◆ OSPF – トポロジ変更の動作
OSPFではネットワークトポロジに変化があった場合(ネットワークのダウン、ネットワークの追加等)には
影響があった差分だけをトリガードアップデートします。リンク状態の変化を検出したOSPFルータはLSAを
更新してネイバールータへ通知します。下図では、R1のF0/0リンクがダウンした場合の動作を示しています。
項番 | 説明 |
① | R1 のFa0/0のリンクダウン ( 192.168.0.0/24のダウン ) が発生。 |
② | リンクダウンを検出したR1 は、LSDBにある自身のLSAを更新。 |
③ | SPFアルゴリズムによりSPFツリーを更新し、ルーティングテーブルを更新(リンクダウンした経路の削除) |
④ | R1 は更新したLSAをトリガードアップデートにより、隣接ルータへ通知。 |
⑤ | R2は、受信したLSAが新しい情報だと確認できると、LSDBを更新する。 |
⑤以降は、SPFツリーの更新 ⇒ ルーティングテーブルの更新 ⇒ フラッディングという同じ処理を行います。
この一連処理は、同じエリア内の全てのOSPFルータで行われていき、最終的には同じLSDBが保持されます。
◆ OSPFの特徴
項番 | OSPFの特徴 | 説明 |
① | マルチベンダーのサポート | RIP同様にIETF標準化プロトコルのため、異メーカのルータ間でもOSPF通信が可能。 |
② | リンクステート型プロトコル | リンクステート型ルーティングプロトコル。 |
③ | 高速なコンバージェンス | トポロジ変更時に高速なコンバージェンスを実現。 |
④ | メトリックにコストを使用 | リンクの帯域幅を基に算出するコストをメトリックとして使用。 |
⑤ | VLSMのサポート | 通知する経路情報にサブネットマスクを含められるクラスレスルーティングプロトコル。 |
⑥ | 手動経路集約のサポート | エリア境界ルータ(ABR)やAS境界ルータ(ASBR)上で、手動で経路集約を行える。 |
⑦ | エリアによる階層設計 | LSAを交換する範囲を示す論理グループであるエリアの概念に基づき階層設計が可能。 |
⑧ | 差分アップデート | 定期的なアップデートはせずトポロジ変更時に差分のみマルチキャストでアップデート。 |