ポリシーベースルーティング


1 機能概要

本製品は、ポリシーベースルーティング機能を提供します。

ポリシーベースルーティングとは、通常の IP ルーティングのように宛先 IP アドレスだけを元に転送先を決定するのではなく、それ以外のさまざまな情報を用いてパケット(ユニキャスト)のルーティングを制御する機能です。
ポリシーベースルーティングは、複数の通信が発生する場合に有効な技術です。通常のルーティングでは、同一ネットワークアドレス宛のパケットは同じ経路へ転送するため、回線が混雑しやすくパケットのロスや遅延の可能性が高くなります。ポリシーベースルーティングでは、トラフィックの種類(宛先ポート番号)に応じて最適な経路へ転送することで重要なパケットのロスや遅延を防ぐことができます。

本製品では、次のような情報を用いてパケットのルーティングを行うことができます。



2 用語の定義

PBR

Policy Based Routing の略。

アクセスリスト(ACL)

通信アクセスを制御する(フレームの許可・拒否を決める)ためのリスト。

ルートマップ

アクセスリストによる条件指定と、条件に合致した際に実行する処理の組み合わせを要素(エントリー)としたリスト。



3 機能詳細

PBR の設定はルートマップをインターフェースへ適用することで行います。

PBR の設定手順を以下に示します。

  1. ルートマップを生成
  2. ルートマップへ適用条件と処理内容を登録
  3. インターフェースへルートマップを適用

以下、各機能の詳細を説明します。

3.1 ルートマップの生成

ルートマップ(およびエントリー)は route-map コマンドで生成します。また、 route-map コマンドでは生成と同時にルートマップモードへの遷移も行います。
ルートマップモードではエントリーに対し、適用条件、および処理内容を設定できます。
本製品ではルートマップを最大 4094 個まで生成できます。また、一つのルートマップに対しエントリーを最大 64 個まで持つことができます。


3.2 適用条件と処理内容の設定

エントリーへの適用条件の設定は match コマンドで、処理内容の設定は set コマンドで行います。
それぞれのコマンドで指定可能なパラメータを以下に示します。


3.3 インターフェースへの適用

本製品では、VLAN インターフェースに対してのみルートマップを適用できます。また、一つのインターフェースに対しては IPv4 パケット用と IPv6 パケット用の 2 つのルートマップを適用可能です。IPv4 パケット用は ip policy route-map コマンドで、IPv6 パケット用は ipv6 policy route-map コマンドで適用できます。

インターフェースに適用できるルートマップの数には、ハードウェアリソースの都合上、下記 2 つの制限があります。

  1. アクセスリストの制御条件数による制限
  2. ネクストホップ数による制限

以下、各制限の詳細について説明します。

リソース消費タイミング

ルートマップがリソースを消費するタイミングは、コマンドによるインターフェースへ適用時ではなく、適用したインターフェースおよびネクストホップがリンクアップした際(適用時にリンクアップ済みの場合はコマンドの直後)になります。
コマンド実行時にはリソースを消費しないためリソース不足でもコマンド自体は成功し、実際にリソースを消費するタイミングで内部的にエラーとします(エラーログを残します)。
保守者はこのエラーが発生することがないようリソース消費量を計算して運用する必要があります。


3.4 受信パケットのルーティング

ルートマップが適用されたインターフェースでパケットを受信した場合、ルートマップの設定に従ってパケットを転送します。
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

  1. シーケンス番号 10
  2. シーケンス番号 20
  3. シーケンス番号 30
  4. シーケンス番号 40
  5. シーケンス番号 50
  6. 暗黙の deny

なお、IPv4 パケットを対象として適用したルートマップに IPv6 用のエントリーが含まれている場合は無効なエントリーとみなして無視します。その逆(IPv6 パケットを対象とした場合の IPv4 用エントリー)も同様です。

3.5 PBR 機能の有効化・無効化

PBR 機能は pbr enable コマンドで有効化、 pbr disable コマンドで無効化できます。
工場出荷時、PBR 機能は 有効 となっています。 no pbr コマンドでは初期状態である 有効 に戻します。

PBR 機能を無効化した場合でも PBR 関連の設定は消えないため、再度有効化することで無効化前の状態に復元することができます。



4 関連コマンド

関連コマンドについて、以下に示します。
コマンドの詳細は、コマンドリファレンスを参照願います。



5 コマンド実行例

5.1 VLAN インターフェースへのルートマップ適用

5.1.1 IPv4 ネクストホップ設定

VLAN #10 に対して、 宛先ポート番号 80 のパケットを ネクストホップ 192.168.20.2 へ転送するよう設定します。
(それ以外の受信パケットは暗黙の deny エントリーにより通常のルーティング機能を介して転送します。)
使用するアクセスリストの ID は #1、ルートマップの ID は #1000、ルートマップの名前は IPV4_NEXTHOP とします。

  1. 通常のルーティングを設定します。
    Yamaha(config)# ip route 0.0.0.0/0 192.168.20.1             ... (スタティックルートの設定)
    Yamaha(config)#
    
  2. アクセスリスト #1 を生成します。
    Yamaha(config)#access-list 1 permit tcp any any eq 80       ... (アクセスリストの生成)
    Yamaha(config)#
    
  3. ルートマップ #1000シーケンス番号 #10 のエントリーを生成し、 アクセスリスト #1ネクストホップ 192.168.20.2 を設定します。
    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)#
    
  4. ルートマップ #1000VLAN #10 へ適用します。
    Yamaha(config)#interface vlan10
    Yamaha(config-if)#ip policy route-map 1000                  ... (ルートマップの適用)
    Yamaha(config-if)#end
    Yamaha#
    
  5. 適用状態を確認します。
    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
    


5.1.2 IPv6 ネクストホップ設定

VLAN #10 に対して、 送信元 IPv6 アドレス 2000:0:0:10::4/128 のパケットを ネクストホップ 2000:0:0:20::2 へ転送するよう設定します。
(それ以外の受信パケットは暗黙の deny エントリーにより通常のルーティング機能を介して転送します。)
使用するアクセスリストの ID は #3001、ルートマップの ID は #2000、ルートマップの名前は IPV6_NEXTHOP とします。

  1. 通常のルーティングを設定します。
    Yamaha(config)# ipv6 route ::/0 2000:0:0:20::1              ... (スタティックルートの設定)
    Yamaha(config)#
    
  2. アクセスリスト #3001 を生成します。
    Yamaha(config)#access-list 3001 permit 2000:0:0:10::4/128   ... (アクセスリストの生成)
    Yamaha(config)#
    
  3. ルートマップ #2000シーケンス番号 #10 のエントリーを生成し、 アクセスリスト #3001ネクストホップ 2000:0:0:20::2 を設定します。
    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)#
    
  4. ルートマップ #2000VLAN #10 へ適用します。
    Yamaha(config)#interface vlan10
    Yamaha(config-if)#ipv6 policy route-map 2000                ... (ルートマップの適用)
    Yamaha(config-if)#end
    Yamaha#
    
  5. 適用状態を確認します。
    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
    


5.1.3 ドロップ設定

VLAN #10 に対して、 宛先ポート番号 80TCP パケットを ネクストホップ 192.168.20.2 へ転送し、 宛先ポート番号 80 以外TCP パケットを 破棄 するよう設定します。
(それ以外の受信パケットは暗黙の deny エントリーにより通常のルーティング機能を介して転送します。)
使用するアクセスリストの ID は #2#3、ルートマップの ID は #3000、ルートマップの名前は DROP とします。

  1. 通常のルーティングを設定します。
    Yamaha(config)# ip route 0.0.0.0/0 192.168.20.1             ... (スタティックルートの設定)
    Yamaha(config)#
    
  2. アクセスリスト #2 を生成します。
    Yamaha(config)#access-list 2 permit tcp any any eq 80       ... (アクセスリストの生成)
    Yamaha(config)#
    
  3. アクセスリスト #3 を生成します。
    Yamaha(config)#access-list 3 permit tcp any any             ... (アクセスリストの生成)
    Yamaha(config)#
    
  4. ルートマップ #3000シーケンス番号 #10 のエントリーを生成し、 アクセスリスト #2ネクストホップ 192.168.20.2 を設定します。
    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)#
    
  5. シーケンス番号 #20 のエントリーを生成し、 アクセスリスト #3破棄 を設定します。
    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)#
    
  6. ルートマップ #3000VLAN #10 へ適用します。
    Yamaha(config)#interface vlan10
    Yamaha(config-if)#ip policy route-map 3000                  ... (ルートマップの適用)
    Yamaha(config-if)#end
    Yamaha#
    
  7. 適用状態を確認します。
    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
    



6 注意事項


7 関連文書


トップへ戻る