トラフィック制御 / ポリシーベースルーティング
ポリシーベースルーティング(PBR)は、始点・終点IPv4/IPv6アドレス、TCP/UDPポートなどのさまざまな条件に基づいて、ルーティング対象パケットの転送先(ネクストホップ)を決定する仕組みです。経路表を用いる通常のIPv4/IPv6ルーティングでは転送先の判断に終点IPアドレスしか使いませんが、ポリシーベースルーティングではエンティティー定義とアプリケーション定義で指定可能なすべての条件を使用できるため、より細やかな経路制御が可能です。
本製品では、「PBRルール」を登録し、ポリシーベースルーティング機能を有効化することで、ポリシーベースルーティングを実現します。
ポリシーベースルーティングの基本的な仕様は次のとおりです。
- PBRルールはIPv4/IPv6あわせて500個まで登録可能
- 各ルールでは対象となるパケットの条件をアプリケーション定義(パケット種別)とエンティティー定義(送信元、宛先)で指定する。
アプリケーション定義ではDSCP値も条件に指定できる(DSCP値はPBRとQoSでのみサポート)。
- 各ルールではネクストホップを8つまで指定できる。
使用するネクストホップを決定する方式には次の2種類があります。これは各PBRルールのload-balanceオプションで選択できます。
- リンクアグリゲーション(load-balance)無効 - 使用可能なネクストホップ1つだけを使用。
通常時は最初に指定したネクストホップが使われるが、同ネクストホップが使用できなくなった場合は次に指定したネクストホップが使われる。
また、ネクストホップとして特殊なインターフェース名 null を指定することで、該当パケットを破棄する設定も可能。
- リンクアグリゲーション(load-balance)有効 - 使用可能なネクストホップ間で各フローを分散。
- リンクアグリゲーション(load-balance)無効 - 使用可能なネクストホップ1つだけを使用。
- IPv4/IPv6パケットの転送判断は以下の通り。
-
1. 通常のIPv4/IPv6経路エントリーにしたがって転送先を決定する。
2. PBRルールをID順(1~500)に検索し、最初にマッチしたルールで指定されたネクストホップに転送先を変更する。
3. どのPBRルールにもマッチしなかったパケットは、通常のIPv4/IPv6経路エントリーにしたがって転送する。
なお、PBRルールは、回線状況に応じて複数回線間でトラフィックを分散させるSD-WANロードバランスでも使用します。これについては、「トラフィック制御」/「SD-WANロードバランス」をご参照ください。
基本設定
ポリシーベースルーティングの基本的な設定手順を説明します。ここでは、ネットワーク「172.16.0.0/16」宛ての経路が2つスタティックに登録されているものとします。
awplus(config)# ip route 172.16.0.0/16 tunnel0 awplus(config)# ip route 172.16.0.0/16 tunnel1
本製品の初期設定では4経路までのECMP(等コストマルチパス)ルーティングが有効なため、172.16.0.0/16宛てのパケットは前記の2経路にロードバランスされます。ただしこの場合、どのパケットがどちらの経路を通るかは制御できません。
そこで、ポリシーベースルーティング機能を利用して、192.168.10.0/24から172.16.0.0/16に宛てたパケットはtunnel0側の経路を、192.168.20.0/24から172.16.0.0/16に宛てたパケットはtunnel1側の経路を使うよう設定してみます。
- PBRルールはアプリケーションとエンティティーを使って定義するため、最初にこれらを定義します。
ここでは、送信元「192.168.10.0/24」、「192.168.20.0/24」と宛先「172.16.0.0/16」を識別するためのエンティティーを定義します。
awplus(config)# zone local awplus(config-zone)# network net10 awplus(config-network)# ip subnet 192.168.10.0/24 awplus(config-network)# exit awplus(config-zone)# network net20 awplus(config-network)# ip subnet 192.168.20.0/24 awplus(config-network)# exit awplus(config-zone)# exit awplus(config)# zone remote awplus(config-zone)# network net awplus(config-network)# ip subnet 172.16.0.0/16 awplus(config-network)# exit awplus(config-zone)# exit
- ポリシーベースルーティングの設定を行うため、policy-based-routingコマンドでポリシーベースルーティングモードに移動します。
awplus(config)# policy-based-routing
- PBRルールを登録します。
IPv4の場合はip policy-routeコマンドを、IPv6の場合はipv6 policy-routeコマンドを使います。
ここではIPv4用のip policy-routeコマンドを使っていますが、パケットの種類(アプリケーション)には関知せず、すべてのIPv4パケットを対象とするため、matchパラメーターは省略しています(明示的に「match any」と指定しても同じです)。
awplus(config-pbr)# ip policy-route from local.net10 to remote.net nexthop tunnel0 awplus(config-pbr)# ip policy-route from local.net20 to remote.net nexthop tunnel1
- ポリシーベースルーティングを有効にします。これには、policy-based-routing enableコマンドを使います。
awplus(config-pbr)# policy-based-routing enable
設定は以上です。
ポリシーベースルーティングの有効・無効とPBRルールの一覧はshow pbr rules briefコマンドで確認できます。
awplus# show pbr rules brief
PBRルールの詳細はshow pbr rulesコマンドで確認できます。
awplus# show pbr rules
IPv4のPBR設定を通常のIP経路とともに確認するには、show ip pbr routeコマンドを使います。
awplus# show ip pbr route
IPv6のPBR設定を通常のIPv6経路とともに確認するには、show ipv6 pbr routeコマンドを使います。
awplus# show ipv6 pbr route
アプリケーションコントロール(DPI)を併用する
PBRルールの条件としてDPIアプリケーションを使用する場合は、以下の点にご注意ください。アプリケーションコントロール(DPI)では、各アプリケーション固有の通信パターンを検出するために一定量のパケットを検査する必要があることから、特定トラフィックに対する判定が「undecided」(未判別)→「HTTP一般」→「特定アプリケーション」のように段階的に行われる場合があります。その場合、該当トラフィックがマッチするPBRルールも変化し、結果的に同一フローに属するパケットの転送経路が途中で変動する可能性があります。
PBR・DPI併用時の意図せぬ経路変動を防ぐには、以下の設定を追加してください。
- ポリシーベースルーティングにおいて、個々のトラフィックフローのアプリケーション判定をフローごとに一回だけ行うよう設定する。これには、ポリシーベースルーティングモードのapplication-decisionコマンドでonce-onlyを指定します。
awplus(config)# policy-based-routing awplus(config-pbr)# application-decision once-only
- DPI学習機能を有効にする。これには、DPIモードのlearningコマンドを使います。
awplus(config)# dpi awplus(config-dpi)# learning
単にapplication-decisionの設定をonce-onlyに変更しただけでは多くのフローが「未判別(undecided)」扱いとなり、DPIによるアプリケーション判定がほとんど利用されなくなってしまいますが、あわせて DPI学習機能(learningコマンド)を有効にすれば、学習済みのアプリケーションについては1パケット目から判別が可能になるため、該当アプリケーション用のPBRルールにしたがった転送が可能になります。