本製品は、ポリシーベースルーティング機能を提供します。
ポリシーベースルーティングとは、通常の IP ルーティングのように宛先 IP アドレスだけを元に転送先を決定するのではなく、それ以外のさまざまな情報を用いてパケット(ユニキャスト)のルーティングを制御する機能です。
ポリシーベースルーティングは、複数の通信が発生する場合に有効な技術です。通常のルーティングでは、同一ネットワークアドレス宛のパケットは同じ経路へ転送するため、回線が混雑しやすくパケットのロスや遅延の可能性が高くなります。ポリシーベースルーティングでは、トラフィックの種類(宛先ポート番号)に応じて最適な経路へ転送することで重要なパケットのロスや遅延を防ぐことができます。
本製品では、次のような情報を用いてパケットのルーティングを行うことができます。
Policy Based Routing の略。
通信アクセスを制御する(フレームの許可・拒否を決める)ためのリスト。
アクセスリストによる条件指定と、条件に合致した際に実行する処理の組み合わせを要素(エントリー)としたリスト。
PBR の設定はルートマップをインターフェースへ適用することで行います。
PBR の設定手順を以下に示します。
以下、各機能の詳細を説明します。
ルートマップ(およびエントリー)は route-map コマンドで生成します。また、 route-map コマンドでは生成と同時にルートマップモードへの遷移も行います。
ルートマップモードではエントリーに対し、適用条件、および処理内容を設定できます。
本製品ではルートマップを最大 4094 個まで生成できます。また、一つのルートマップに対しエントリーを最大 64 個まで持つことができます。
エントリーへの適用条件の設定は match コマンドで、処理内容の設定は set コマンドで行います。
それぞれのコマンドで指定可能なパラメータを以下に示します。
適用パケット種別 | match | set |
---|---|---|
IPv4 パケット | IPv4 アクセスリスト MAC アクセスリスト |
IPv4 ネクストホップ(転送先) ドロップ(破棄) |
IPv6 パケット | IPv6 アクセスリスト | IPv6 ネクストホップ(転送先) ドロップ(破棄) |
本製品では、VLAN インターフェースに対してのみルートマップを適用できます。また、一つのインターフェースに対しては IPv4 パケット用と IPv6 パケット用の 2 つのルートマップを適用可能です。IPv4 パケット用は ip policy route-map コマンドで、IPv6 パケット用は ipv6 policy route-map コマンドで適用できます。
インターフェースに適用できるルートマップの数には、ハードウェアリソースの都合上、下記 2 つの制限があります。
以下、各制限の詳細について説明します。
ルートマップがリソースを消費するタイミングは、コマンドによるインターフェースへ適用時ではなく、適用したインターフェースおよびネクストホップがリンクアップした際(適用時にリンクアップ済みの場合はコマンドの直後)になります。
コマンド実行時にはリソースを消費しないためリソース不足でもコマンド自体は成功し、実際にリソースを消費するタイミングで内部的にエラーとします(エラーログを残します)。
保守者はこのエラーが発生することがないようリソース消費量を計算して運用する必要があります。
ルートマップが適用されたインターフェースでパケットを受信した場合、ルートマップの設定に従ってパケットを転送します。
IPv4 パケットを受信した場合は ip policy route-map コマンドで適用したルートマップに、
IPv6 パケットを受信した場合は ipv6 policy route-map コマンドで適用したルートマップに従います。
ルートマップに複数のエントリーが存在する場合は、シーケンス番号順に処理します。
適用条件に合致した時点で処理を実行し、シーケンス処理を終了します(以降のシーケンスは無視します)。
例として、以下のルートマップの処理を説明します。
route-map 1 permit 10 match A set ip next-hop A.B.C.D route-map 1 permit 20 match B route-map 1 permit 30 set ip next-hop E.F.G.H route-map 1 deny 40 match C set ip next-hop I.J.K.L route-map 1 permit 50 match D set interface null
なお、IPv4 パケットを対象として適用したルートマップに IPv6 用のエントリーが含まれている場合は無効なエントリーとみなして無視します。その逆(IPv6 パケットを対象とした場合の IPv4 用エントリー)も同様です。
PBR 機能は pbr enable コマンドで有効化、 pbr disable コマンドで無効化できます。
工場出荷時、PBR 機能は 有効 となっています。 no pbr コマンドでは初期状態である 有効 に戻します。
PBR 機能を無効化した場合でも PBR 関連の設定は消えないため、再度有効化することで無効化前の状態に復元することができます。
関連コマンドについて、以下に示します。
コマンドの詳細は、コマンドリファレンスを参照願います。
操作項目 | 操作コマンド |
---|---|
ルートマップの生成 | route-map |
ルートマップのコメント追加 | description |
ルートマップエントリーへの適用条件設定 | match access-list |
ルートマップエントリーへの処理内容 (IPv4 転送先) 設定 | set ip next-hop |
ルートマップエントリーへの処理内容 (IPv6 転送先) 設定 | set ipv6 next-hop |
ルートマップエントリーへの処理内容 (パケット破棄) 設定 | set interface null |
インターフェースへのルートマップの適用 (IPv4 用) | ip policy route-map |
インターフェースへのルートマップの適用 (IPv6 用) | ipv6 policy route-map |
PBR 機能の有効化/無効化 | pbr |
ルートマップ情報の表示 | show route-map |
IPv4 PBR 情報の表示 | show ip route pbr |
IPv6 PBR 情報の表示 | show ipv6 route pbr |
VLAN #10 に対して、 宛先ポート番号 80 のパケットを ネクストホップ 192.168.20.2 へ転送するよう設定します。
(それ以外の受信パケットは暗黙の deny エントリーにより通常のルーティング機能を介して転送します。)
使用するアクセスリストの ID は #1、ルートマップの ID は #1000、ルートマップの名前は IPV4_NEXTHOP とします。
Yamaha(config)# ip route 0.0.0.0/0 192.168.20.1 ... (スタティックルートの設定) Yamaha(config)#
Yamaha(config)#access-list 1 permit tcp any any eq 80 ... (アクセスリストの生成) Yamaha(config)#
Yamaha(config)#route-map 1000 permit 10 ... (ルートマップとエントリーの生成) Yamaha(config-route-map)#description IPV4_NEXTHOP ... (ルートマップに名前を設定) Yamaha(config-route-map)#match access-list 1 ... (適用条件の設定) Yamaha(config-route-map)#set ip next-hop 192.168.20.2 ... (ネクストホップの設定) Yamaha(config-route-map)#exit Yamaha(config)#
Yamaha(config)#interface vlan10 Yamaha(config-if)#ip policy route-map 1000 ... (ルートマップの適用) Yamaha(config-if)#end Yamaha#
Yamaha#show ip route pbr Policy Routing vlan10 Route Map: 1000, IPV4_NEXTNOP 10 permit match access-list 1 set ip next-hop 192.168.20.2
VLAN #10 に対して、 送信元 IPv6 アドレス 2000:0:0:10::4/128 のパケットを ネクストホップ 2000:0:0:20::2 へ転送するよう設定します。
(それ以外の受信パケットは暗黙の deny エントリーにより通常のルーティング機能を介して転送します。)
使用するアクセスリストの ID は #3001、ルートマップの ID は #2000、ルートマップの名前は IPV6_NEXTHOP とします。
Yamaha(config)# ipv6 route ::/0 2000:0:0:20::1 ... (スタティックルートの設定) Yamaha(config)#
Yamaha(config)#access-list 3001 permit 2000:0:0:10::4/128 ... (アクセスリストの生成) Yamaha(config)#
Yamaha(config)#route-map 2000 permit 10 ... (ルートマップとエントリーの生成) Yamaha(config-route-map)#description IPV6_NEXTHOP ... (ルートマップに名前を設定) Yamaha(config-route-map)#match access-list 3001 ... (適用条件の設定) Yamaha(config-route-map)#set ipv6 next-hop 2000:0:0:20::2 ... (ネクストホップの設定) Yamaha(config-route-map)#exit Yamaha(config)#
Yamaha(config)#interface vlan10 Yamaha(config-if)#ipv6 policy route-map 2000 ... (ルートマップの適用) Yamaha(config-if)#end Yamaha#
Yamaha#show ipv6 route pbr Policy Routing vlan10 Route Map: 2000, IPV6_NEXTHOP 10 permit match access-list 3001 set ipv6 next-hop 2000:0:0:20::2
VLAN #10 に対して、 宛先ポート番号 80 の TCP パケットを ネクストホップ 192.168.20.2 へ転送し、 宛先ポート番号 80 以外 の TCP パケットを 破棄 するよう設定します。
(それ以外の受信パケットは暗黙の deny エントリーにより通常のルーティング機能を介して転送します。)
使用するアクセスリストの ID は #2、 #3、ルートマップの ID は #3000、ルートマップの名前は DROP とします。
Yamaha(config)# ip route 0.0.0.0/0 192.168.20.1 ... (スタティックルートの設定) Yamaha(config)#
Yamaha(config)#access-list 2 permit tcp any any eq 80 ... (アクセスリストの生成) Yamaha(config)#
Yamaha(config)#access-list 3 permit tcp any any ... (アクセスリストの生成) Yamaha(config)#
Yamaha(config)#route-map 3000 permit 10 ... (ルートマップとエントリーの生成) Yamaha(config-route-map)#description DROP ... (ルートマップに名前を設定) Yamaha(config-route-map)#match access-list 2 ... (適用条件の設定) Yamaha(config-route-map)#set next-hop 192.168.20.2 ... (ネクストホップの設定) Yamaha(config-route-map)#exit Yamaha(config)#
Yamaha(config)#route-map 3000 permit 20 ... (エントリーの生成) Yamaha(config-route-map)#match access-list 3 ... (適用条件の設定) Yamaha(config-route-map)#set interface null ... (破棄の設定) Yamaha(config-route-map)#exit Yamaha(config)#
Yamaha(config)#interface vlan10 Yamaha(config-if)#ip policy route-map 3000 ... (ルートマップの適用) Yamaha(config-if)#end Yamaha#
Yamaha#show ip route pbr Policy Routing vlan10 Route Map: 3000, DROP 10 permit match access-list 2 set ip next-hop 192.168.20.2 20 permit match access-list 3 set interface null