# IP / 経路制御

本製品は以下のIPユニキャスト経路制御方式に対応しています。

- スタティックルーティング
- ダイナミックルーティング
  - RIP（Routing Information Protocol）
  - OSPF（Open Shortest Path First）
  - BGP（Border Gateway Protocol）

また、ダイナミックルーティングプロトコルによる経路情報のやりとりに制限をかける機能（経路フィルタリング機能）や、IPアドレスやTCP/UDPポートなどさまざまな情報に基づいてIPパケットの転送先を決定するポリシーベースルーティング機能も備えています。
ここでは、スタティックルーティングの設定手順について解説します。関連機能については以下のセクションをご覧ください。

- RIP
- OSPF
- BGP
- 経路フィルタリング
- ポリシーベースルーティング

スタティックルーティング（静的経路制御）は、管理者が経路情報を手動で登録するもっとも基本的な経路制御方式です。静的経路には次の種類があります。

- インターフェース経路
- スタティック経路

Note

ICMP Redirect（IPv4/IPv6）の送受信は未サポートです。

## インターフェース経路

本製品に直接接続されているIPネットワークへの経路情報です。ip addressコマンドでインターフェースにIPアドレスを割り当てると、該当インターフェース配下のネットワークに対するインターフェース経路がIP経路表に自動登録されます。たとえば、次のコマンドを実行すると、

    awplus(config)# interface vlan10
    awplus(config-if)# ip address 192.168.10.1/24

次のような経路情報が自動的に登録されます。

    awplus(config-if)# do show ip route database
    Codes: C - connected, S - static, R - RIP, B - BGP
           O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2
           > - selected route, * - FIB route, p - stale info

    C    *> 192.168.10.0/24 is directly connected, vlan10

ここで「192.168.10.0/24 is directly connected, vlan10」は、「192.168.10.0/24がvlan10インターフェースに直接接続されている」の意味になります。また、行頭の「C」も同じように「connected」、すなわち「（直接）接続されている」の省略記号です。「*>」は、該当経路が192.168.10.0/24への最適な経路であり、実際のパケット転送判断に使用されていることを示します。
インターフェース経路は「直接接続されているネットワークへの経路（route to directly connected network）」ですので、「connected経路」、「直結経路」、「ダイレクト経路」などと呼ぶこともあります。
ここでは例として、2つのインターフェースにIPアドレスを割り当て、インターフェース間でIPパケットが転送されるよう設定してみます。

なお、以下の各例では、VLANの設定までは完了しているものとします。VLANの設定については、「L2スイッチング」の「バーチャルLAN」をご覧ください。

1. 各インターフェースにIPアドレスを割り当てます。

       awplus(config)# interface vlan10
       awplus(config-if)# ip address 192.168.10.1/24
       awplus(config-if)# exit
       awplus(config)# interface vlan20
       awplus(config-if)# ip address 192.168.20.1/24
       awplus(config-if)# exit

以上で設定は完了です。IP経路表を確認してみましょう。

    awplus(config-if)# do show ip route database
    Codes: C - connected, S - static, R - RIP, B - BGP
           O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2
           > - selected route, * - FIB route, p - stale info

    C    *> 192.168.10.0/24 is directly connected, vlan10
    C    *> 192.168.20.0/24 is directly connected, vlan20

vlan10とvlan20のインターフェース経路が登録されているのがわかります。

## スタティック経路

ネットワーク上に他のルーターが存在するような場合は、ip routeコマンドを使って、ルーターの先にあるネットワーク（直接接続されていないネットワーク）への経路を手動で登録することができます。このようにして手動登録した経路をスタティック経路と呼びます。
スタティック経路を登録するには、最低限次の情報が必要です。

- 宛先のネットワークアドレス（IPアドレスとマスク長で指定する）
- 宛先への経路上にある最初のルーター（ネクストホップルーター）のIPアドレス

### 通常のスタティック経路

ここでは例として、次のようなネットワークにおけるルーターAとBの設定を示します。

#### ルーターA

1. 各インターフェースにIPアドレスを割り当てます。これにより、直接接続されているネットワーク192.168.10.0/24と192.168.20.0/24へのインターフェース経路が自動登録されます。

       RouterA(config)# interface vlan10
       RouterA(config-if)# ip address 192.168.10.1/24
       RouterA(config-if)# exit
       RouterA(config)# interface vlan20
       RouterA(config-if)# ip address 192.168.20.1/24
       RouterA(config-if)# exit

2. 直接接続されていないネットワーク192.168.30.0/24へのスタティック経路を登録します。同ネットワーク宛てのパケットは、ルーターBのvlan20インターフェース（192.168.20.2）に転送します。

       RouterA(config)# ip route 192.168.30.0/24 192.168.20.2

#### ルーターB

1. 各インターフェースにIPアドレスを割り当てます。これにより、直接接続されているネットワーク192.168.20.0/24と192.168.30.0/24へのインターフェース経路が自動登録されます。

       RouterB(config)# interface vlan20
       RouterB(config-if)# ip address 192.168.20.2/24
       RouterB(config-if)# exit
       RouterB(config)# interface vlan30
       RouterB(config-if)# ip address 192.168.30.1/24
       RouterB(config-if)# exit

2. 直接接続されていないネットワーク192.168.10.0/24へのスタティック経路を登録します。同ネットワーク宛てのパケットは、ルーターAのvlan20インターフェース（192.168.20.1）に転送します。

       RouterB(config)# ip route 192.168.10.0/24 192.168.20.1

以上で設定は完了です。IP経路表を確認してみましょう。

    RouterA(config)# do show ip route database
    Codes: C - connected, S - static, R - RIP, B - BGP
           O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2
           > - selected route, * - FIB route, p - stale info

    C    *> 192.168.10.0/24 is directly connected, vlan10
    C    *> 192.168.20.0/24 is directly connected, vlan20
    S    *> 192.168.30.0/24 [1/0] via 192.168.20.2, vlan20

ここで「192.168.30.0/24 [1/0] via 192.168.20.2, vlan20」は、「192.168.30.0/24へは、vlan20インターフェース上のルーター192.168.20.2（ルーターB）経由で到達できる」の意味になります。スクエアブラケット（[]）で囲まれた2つの数値は、それぞれ管理距離（Administrative Distance）とメトリックを表します（スタティック経路ではメトリックは使用されないためつねに「0」と表示されます）。また、行頭の「S」は「static」、すなわち「スタティック経路」の省略記号です。「*>」は、該当経路が192.168.30.0/24への最適な経路であり、実際のパケット転送判断に使用されていることを示します。

    RouterB(config)# do show ip route database
    Codes: C - connected, S - static, R - RIP, B - BGP
           O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2
           > - selected route, * - FIB route, p - stale info

    S    *> 192.168.10.0/24 [1/0] via 192.168.20.1, vlan20
    C    *> 192.168.20.0/24 is directly connected, vlan20
    C    *> 192.168.30.0/24 is directly connected, vlan30

ここで「192.168.10.0/24 [1/0] via 192.168.20.1, vlan20」は、「192.168.10.0/24へは、vlan20インターフェース上のルーター192.168.20.1（ルーターA）経由で到達できる」の意味になります。スクエアブラケット（[]）で囲まれた2つの数値は、それぞれ管理距離（Administrative Distance）とメトリックを表します（スタティック経路ではメトリックは使用されないためつねに「0」と表示されます）。また、行頭の「S」は「static」、すなわち「スタティック経路」の省略記号です。「*>」は、該当経路が192.168.10.0/24への最適な経路であり、実際のパケット転送判断に使用されていることを示します。

## デフォルト経路

ネットワークの末端に位置するルーターでは、経路表にないネットワーク宛てのパケットをすべて特定のルーターに転送するよう設定することにより、経路設定を簡素化することができます。このような経路をデフォルト経路と呼びます。
デフォルト経路を手動登録するには、ip routeコマンドで宛先ネットワークを0.0.0.0/0と指定します。
ここでは例として、次のようなネットワークにおけるルーターAの設定を示します。

1. 各インターフェースにIPアドレスを割り当てます。これにより、直接接続されているネットワーク192.168.10.0/24と192.168.20.0/24へのインターフェース経路が自動登録されます。

       RouterA(config)# interface vlan10
       RouterA(config-if)# ip address 192.168.10.1/24
       RouterA(config-if)# exit
       RouterA(config)# interface vlan20
       RouterA(config-if)# ip address 192.168.20.1/24
       RouterA(config-if)# exit

2. それ以外のネットワーク宛てのパケットはすべてルーターB（192.168.20.2）に転送します。「0.0.0.0/0」はすべてのIPアドレスにマッチする特殊な指定方法で、デフォルト経路を意味します。

       RouterA(config)# ip route 0.0.0.0/0 192.168.20.2

以上で設定は完了です。IP経路表を確認してみましょう。

    RouterA(config)# do show ip route database
    Codes: C - connected, S - static, R - RIP, B - BGP
           O - OSPF, IA - OSPF inter area
           N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
           E1 - OSPF external type 1, E2 - OSPF external type 2
           > - selected route, * - FIB route, p - stale info

    S    *> 0.0.0.0/0 [1/0] via 192.168.20.2, vlan20
    C    *> 192.168.10.0/24 is directly connected, vlan10
    C    *> 192.168.20.0/24 is directly connected, vlan20

ここで「0.0.0.0/0 [1/0] via 192.168.20.2, vlan20」は、「0.0.0.0/0、すなわち、経路表内の他のエントリーにマッチしなかったすべての宛先には、vlan20インターフェース上のルーター192.168.20.2（ルーターB）経由で到達できる」の意味になります。スクエアブラケット（[]）で囲まれた2つの数値は、それぞれ管理距離（Administrative Distance）とメトリックを表します（スタティック経路ではメトリックは使用されないためつねに「0」と表示されます）。また、行頭の「S」は「static」、すなわち「スタティック経路」の省略記号です。「*>」は、該当経路が0.0.0.0/0への最適な経路であり、実際のパケット転送判断に使用されていることを示します。

## 経路表と経路選択

ここまでの説明では、単に「IP経路表」という言葉を用いましたが、実際には本製品は次に示す2種類のIP経路表を使い分けています。

- RIB（Routing Information Base：IP経路表）
- FIB（Forwarding Information Base：IP転送表）

それぞれの役割は次のとおりです。

### RIB

RIB（Routing Information Base：IP経路表）は、各種情報源から得た経路情報を蓄積するデータベースです。RIBには、管理者の手動設定や経路制御プロトコルによって学習された経路が原則としてすべて登録されます。RIBに経路が登録されるのは、次のときです。

- インターフェースにIPアドレスを割り当てたとき
- スタティック経路を登録したとき
- RIP経由で経路を学習したとき
- OSPF経由で経路を学習したとき
- BGP経由で経路を学習したとき
- DHCPメッセージによって経路を学習したとき

このようにしてRIBに登録された経路のうち、「最適」と判断されたものだけが次に述べるFIBに登録されます。
RIBの内容は、show ip route databaseコマンドで確認できます。

### FIB

FIB（Forwarding Information Base：IP転送表）は、IPパケットの転送判断時に参照するデータベースです。FIBには、RIBに登録されている経路のうち、「最適」と判断されたもの、すなわち、実際にパケット転送に使用される経路だけが登録されます。最適と判断する基準は次に述べる管理距離です。
FIBの内容は、show ip routeコマンドで確認できます。

### 管理距離

RIBに同一宛先への経路が複数登録されている場合は、管理距離（Administrative Distance: AD）と呼ばれる経路エントリーの属性値によって最適な経路を選択します。
管理距離は1～255の整数値で、小さいほど優先度が高くなります。初期状態では、次のように経路種別ごとに値が決まっています。
Note

管理距離255は「信頼できない経路」を表します。「信頼できない経路」は、FIBに登録されず、IPパケットの転送には使われません。

表 1
経路種別 | 管理距離の初期値 | 管理距離の変更方法
直結経路（connected） | - | 設定不可。直結経路は他の経路よりもつねに優先される
スタティック経路（static） | 1 | 経路ごとに、ip routeコマンドの最終パラメーターで任意指定可能。また、DHCPに由来するデフォルト経路の管理距離はip dhcp-client default-route distanceコマンドでインターフェースごとに変更可能
eBGP経路（bgp） | 20 | distanceコマンド（BGPモード）で、eBGP経路、iBGP経路、ローカル経路のそれぞれについて、管理距離を任意の値に変更可能。また、同コマンドでは、学習元BGPピアや宛先プレフィックスごとに個別に管理距離を設定することもできる
OSPF経路（ospf） | 110 | distanceコマンド（OSPFモード）ですべてのOSPF経路に対する管理距離を任意の値に変更可能。また、同コマンドでは、エリア内経路、エリア間経路、外部経路のそれぞれについて、個別に管理距離を設定することもできる
RIP経路（rip） | 120 | distanceコマンド（RIPモード）ですべてのRIP経路に対する管理距離を任意の値に変更可能
iBGP経路（bgp） | 200 | distanceコマンド（BGPモード）で、eBGP経路、iBGP経路、ローカル経路のそれぞれについて、管理距離を任意の値に変更可能。また、同コマンドでは、学習元BGPピアや宛先プレフィックスごとに個別に管理距離を設定することもできる

管理距離は、RIBに登録されている異なる種別の経路間で優劣を判断するときに使用されます。
また、同じサブネット長のスタティック経路を複数登録する場合に、それらの間で優先順位を付けたい場合にも本値を使用できます（フローティングスタティックルートの利用）。
RIBに登録される前、すなわち、RIP、OSPF、BGPの各ルーティングプロセス内で経路の優劣を判断するときには各プロトコル固有のメトリックが使用されます。

### メトリック

RIP、OSPF、BGPのルーティングプロセスは、RIB/FIBとは別に独自の経路表を保持しています。ここでは、これらをRIP経路表、OSPF経路表、BGP経路表と呼ぶことにします。
RIP、OSPF、BGPのルーティングプロセスは、それぞれRIP経路表、OSPF経路表、BGP経路表の中から最適な経路だけを選択して、RIBに登録します。このときの判断基準となるのが、各プロトコル固有のメトリックや各種属性値です。RIPでは通常ホップ数が、OSPFでは通過するインターフェースコストの総和がメトリックとして使用されます。一方BGPでは、単一のメトリックではなく複数の属性値を判断基準として使用します。
メトリックは、RIP、OSPF、BGPのルーティングプロセスによって、同一種別の経路間で優劣を判断するときにだけ使用されます。RIBに登録されている異なる種別の経路間で優劣を判断するときには、前述の管理距離が使用され、メトリックは使用されません（RIPのメトリックとOSPFやBGPのメトリックはそもそも意味合いが違うので、これらを比較すること自体意味がありません）。show ip routeコマンドやshow ip route databaseコマンドでは、管理距離に加えてメトリック値も表示されますが、これはあくまでも参考情報ですのでご注意ください（BGPの場合はMED値が表示されます）。
なお、RIP経路表はshow ip ripコマンド、OSPF経路表はshow ip ospf routeコマンド、OSPF経路表のもとになるトポロジーデータベース（LSDB）はshow ip ospf databaseコマンドとその関連コマンド、BGP経路表はshow ip bgpコマンドによって表示できます。
RIP、OSPF、BGPの詳細については「IP」の「経路制御（RIP）」、「IP」の「経路制御（OSPF）」、「IP」の「経路制御（BGP）」をご覧ください。

### ECMP

FIBには、RIBに登録されている経路のうち「最適」なものだけが登録されますが、RIBに同一宛先への最適経路が複数登録されている場合は、FIBにも複数の経路を登録することができます。
FIBに同一宛先への複数経路が登録されている場合、これらの経路はECMP（等コストマルチパス）グループと呼ばれ、該当宛先へのIPv4パケットはフロー単位でグループ内の各経路にロードバランスされます。
Note

IPv6パケットは終点IPv6アドレスだけにもとづいてロードバランスされます。

FIBに同一宛先への経路をいくつ登録できるかは、maximum-pathsコマンドの設定によって決まります。有効な設定値は1～8。初期設定は4です。

## その他

スタティック経路、デフォルト経路を削除するにはip routeコマンドをno形式で実行します。たとえば、デフォルト経路を削除するには次のようにします。

    awplus(config)# no ip route 0.0.0.0/0 192.168.20.2