トラフィック制御 / SD-WANロードバランス
SD-WANロードバランスは、複数の回線(インターフェース)を利用してトラフィック負荷を分散させる機能です。本機能は、VPNをはじめとする各種回線(インターフェース)のジッター、レイテンシー、パケットロスを監視して回線状況を評価するリンク監視機能と、既存のポリシーベースルーティング(PBR)機能を組み合わせることで実現します。PBRの基本機能により、始点・終点アドレスだけでなく、アプリケーションごとの制御も可能です。
本機能はPBRとリンク監視機能を組み合わせて実現しますので、以下では「SD-WANロードバランス」を、「PBRルール」のネクストホップに「リンク監視グループ」と「リンク性能プロファイル」を指定している場合という意味で使用します。
本解説編ではおもにリンク監視機能の設定について述べます。PBRの詳細については「トラフィック制御」/「ポリシーベースルーティング」をご参照ください。
SD-WANロードバランス機能の基本仕様は次のとおりです。
- SD-WANロードバランスでは、複数回線(インターフェース)間でトラフィックを分散させることが可能です。
- IPsecで暗号化されたトンネルにおいても、アプリケーションコントロール(DPI)を利用してトラフィックを分類することが可能です。
- ロードバランスはフロー単位で行われます。1つのフローが同時に複数の回線を使用して送信されることはありません。
- 各フローの送出回線を決定する方式には次の2種類があります。これはリンク監視グループモードのload-balancingコマンドで選択できます。
- リンクアグリゲーション(load-balancing)無効 - リンク監視グループ内でもっとも状況のよい回線1本だけを使用
- リンクアグリゲーション(load-balancing)有効 - リンク監視グループ内でgood(良)と判定されている回線間で各フローを分散
- リンクアグリゲーション(load-balancing)無効 - リンク監視グループ内でもっとも状況のよい回線1本だけを使用
- ロードバランス対象回線(トンネルインターフェースなど)の下位層(PPP、Ethernetなど)は別途冗長化してください(例:複数の異なるISPに接続する、VRRPを使う、など)。
基本設定
SD-WANロードバランスの設定は、リンク監視機能、PBRルールの順に行います。以下、それぞれの手順について説明します。
なお、具体的なネットワーク構成については、設定例集をご覧ください。
リンク監視機能
リンク監視機能は、Ping(ICMP Echo)パケットを使って各回線の状況を継続的に監視し、ジッター、レイテンシー、パケットロス等の情報を収集する機能です。SD-WANロードバランスでは、この情報をポリシーベースルーティング(PBR)のネクストホップ選択時に使用することで、回線の状況に応じたトラフィック分散を実現します。
リンク監視機能の設定は次の流れで行います。
- 使用する回線(インターフェース)ごとに、調査パケットの送信先を「リンク監視プローブ」として定義します。
これには、linkmon probeコマンドでプローブの名前を指定し、destinationコマンドで調査パケットの送信先を指定します。
また、作成直後のプローブは無効状態なため、enableコマンドで有効化します。
awplus(config)# linkmon probe name TUNNEL1 type icmp-ping awplus(config-linkmon-probe)# destination 172.16.0.1 awplus(config-linkmon-probe)# enable awplus(config-linkmon-probe)# exit awplus(config)# linkmon probe name TUNNEL2 type icmp-ping awplus(config-linkmon-probe)# destination 172.17.0.1 awplus(config-linkmon-probe)# enable awplus(config-linkmon-probe)# exit
- 各回線の状況を評価するための基準を「リンク性能プロファイル」として定義します。
これには、linkmon profileコマンドでプロファイルを作成し、latency bad-above、jitter bad-above、pktloss bad-aboveコマンドでしきい値を設定します。また、preferenceコマンドで優先的に使う情報を指定することもできます。
awplus(config)# linkmon profile tunnelquality awplus(config-linkmon-profile)# latency bad-above 100 awplus(config-linkmon-profile)# jitter bad-above 30 awplus(config-linkmon-profile)# pktloss bad-above 1.0 awplus(config-linkmon-profile)# preference pktloss awplus(config-linkmon-profile)# exit
- ロードバランス対象の回線を「リンク監視グループ」として束ねます。これには、linkmon groupコマンドでグループを作成し、memberコマンドで各回線に対応するネクストホップアドレスとリンク監視プローブを指定します。
load-balancingコマンドの有無により、グループ内の回線をどのように使うかが異なります。
- load-balancing無効 - もっとも状況のよい回線1本だけを使用する
awplus(config)# linkmon group GROUP1 awplus(config-linkmon-group)# member 10 destination 172.16.0.1 probe TUNNEL1 awplus(config-linkmon-group)# member 20 destination 172.17.0.1 probe TUNNEL2 awplus(config-linkmon-group)# exit
- load-balancing有効 - good(良)と判定されている回線間で各フローを分散する
awplus(config)# linkmon group GROUP1 awplus(config-linkmon-group)# member 10 destination 172.16.0.1 probe TUNNEL1 awplus(config-linkmon-group)# member 20 destination 172.17.0.1 probe TUNNEL2 awplus(config-linkmon-group)# load-balancing awplus(config-linkmon-group)# exit
- load-balancing無効 - もっとも状況のよい回線1本だけを使用する
以上でリンク監視機能の設定は完了です。
あとは、PBRルールのネクストホップとして、通常のネクストホップアドレスではなく、「リンク監視グループ」と「リンク性能プロファイル」を指定することで、プロファイルに応じた各回線の評価が行われ、PBRルールにマッチするトラフィックが下記のとおり送信されるようになります。
- リンクアグリゲーション(load-balancing)無効時 - もっとも状況のよい回線1本だけを使用します。
- リンクアグリゲーション(load-balancing)有効時 - good(良)判定の回線間で各フローを分散します。
リンク監視機能の設定は、show linkmon probeコマンドで確認できます。
awplus# show linkmon probe
回線状況が変化したときにスクリプトを自動実行させるには、リンク監視プローブトリガーを作成します。
type linkmon-probeコマンドでは、該当回線の監視に使用しているリンク監視プローブとリンク性能プロファイルを指定し、さらに回線状況が「good」、「bad」、「unreachable」のどれに遷移したときにスクリプトを実行するかを指定します(「any」を指定すれば、遷移先に関わらず回線状況が変化したときはつねにスクリプトを実行させることが可能です)。
awplus(config)# trigger 15 awplus(config-trigger)# type linkmon-probe PROBE1 PROF1 good awplus(config-trigger)# script 1 flash:/good.scp
リンク監視プローブトリガーに関する情報は、show linkmon triggerコマンドで確認できます。
awplus# show linkmon trigger
リンク監視機能が収集した回線状況の履歴を一定数保持し、あとで確認することもできます。
- linkmon probe-historyコマンドで履歴収集インスタンスを作成し、保存対象のリンク監視プローブ、保存間隔、情報の保持数を指定します。
たとえば、リンク監視プローブ「TUNNEL1」の履歴情報を60秒に1回、1440回分(1日分)保持する履歴収集インスタンスを定義するには、次のようにします。
awplus(config)# linkmon probe-history 10 probe TUNNEL1 interval 60 buckets 1440
- 履歴情報を確認するには、show linkmon probe-historyコマンドを使います。
awplus# show linkmon probe-history
PBRルール
リンク監視機能を利用したPBRルールを作成するには、ip policy-routeコマンド、ipv6 policy-routeコマンドのlinkmon-groupパラメーターとlinkmon-profileパラメーターを使います。たとえば、ゾーン「branch」から「center」へのトラフィックを、リンク監視グループ「GROUP1」所属の回線間で、リンク性能プロファイル「tunnelquality」にもとづく回線状況に応じて負荷分散するには、次のようなPBRルールを作成します。
awplus(config)# policy-based-routing awplus(config-pbr)# policy-based-routing enable awplus(config-pbr)# ip policy-route 10 from branch to center linkmon-group GROUP1 linkmon-profile tunnelquality本PBRルールにおいて、リンク監視グループ「GROUP1」に所属する各回線は、リンク性能プロファイル「tunnelquality」で指定されたしきい値にもとづき、good(良)、bad(不良)の2段階でリアルタイムに評価されます。
そして、このPBRルールにマッチするトラフィックは、リンク監視グループにおけるリンクアグリゲーション(load-balancing)の設定によって、下記のとおり送信されるようになります。
- リンクアグリゲーション(load-balancing)無効時
その時点でgood(良)と判定されている回線のうち、パケットロス率がもっとも低い回線(ネクストホップ)経由で送信されます(リンク性能プロファイルのpreferenceコマンドでpktlossを指定しているため)。もし2つの回線のパケットロス率が等しい場合は、リンク監視グループにおけるメンバーID(memberコマンドの<1-128>パラメーター)の小さいほうが選択されます。
- リンクアグリゲーション(load-balancing)有効時
その時点でgood(良)と判定されている回線間で各フローを分散します。good判定の回線が存在する場合preferenceコマンドの設定は使用されません。
good判定の回線が存在しないときは、bad(不良)判定の中から最善の回線1本だけ選択して使用します。もしそれがnullインターフェースだった場合は該当フローを破棄します。
good、badを問わず、使用可能な回線が存在しないときは、PBRルールではなく通常の経路表にしたがって転送動作を行います。
リンク監視機能を利用したPBRの設定は、show pbr rulesコマンドで確認できます。
awplus> show pbr rules awplus> show pbr rules 10 awplus> show pbr rules group GROUP1 awplus> show pbr rules profile tunnelquality
ポリシーベースルーティングの詳細は「トラフィック制御」/「ポリシーベースルーティング」を、ゾーンなどのエンティティー定義については「UTM」/「エンティティー定義」をご参照ください。
また、具体的な設定例については、設定例集をご覧ください。