$Date: 2023/07/06 20:22:18 $
QoS機能では、送信するパケットに対してQoSポリシーに応じた制御ができます。しかし受信データ、特にLANインタフェースの入り口で受信オーバーフローとしてカウントされる破棄については、ポリシーに従った制御を行うことは不可能です。つまり受信では、高負荷時に優先度の高いパケットが破棄されてしまう可能性があります。
本機能は、この受信での意図しないパケットの廃棄を最小限に抑えることを目的とします。その手段として、自側機器の負荷状況を監視し、負荷が増大した場合には相手側機器にパケットの送出を抑えるよう働きかけます。
特に本機能は、対向機器の負荷状況を予測できない環境で有効に機能すると考えられます。例えばハブアンドスポーク型ネットワークで、センターが同時に複数拠点からのトラフィックを処理する場合、拠点側機器はセンター側機器の負荷状況を把握できません。この時、センター側機器が自側の負荷状況に応じて拠点側機器に一時的なトラフィックの抑制要請を行うことでパケットロスを防ぎ、通信品質の安定化を図ることが可能です。
┏━━┓■■■■→ ┃拠点┣━━━━━━┓ ┗━━┛ ┃ 各拠点からセンターのサーバへのトラフィックが集中し ┃↓ センターのルータの受信負荷が増大し、パケットの破棄が発生 ┏━━┓■■■■→ ┃ ┃拠点┣━━━━┓ ┃ ■ ■ ┏━━━┓ ┗━━┛ ┃ ┃ ■■■■■■■■■■→ ┣┫サーバ┃ ┏┻━┻━━━┓ 破棄発生 ┃┗━━━┛ ┏━━┓■■ ┃ ┃ ┏━━━━┓ ┃ ┃拠点┣━━━┫ネットワーク┣━━━━┫センター┣━┫ ┗━━┛ ┃ ┃ ┗━━━━┛ ┃ ┗┳━┳━━━┛ ┏━━┓■■■ ┃ ┃ ┃拠点┣━━━━┛ ┃↑ ┗━━┛ ┃ ┃ ┏━━┓■■■■■ ┃ ┃拠点┣━━━━━━┛ センターから拠点に対してトラフィック抑制要請を行う ┗━━┛ ←──────── 各拠点は送信時にポリシーに応じたQoS制御を行う ┏━━┓■ ■→ ┃拠点┣━━━━━━┓ ┗━━┛ ┃ ┃↓ 負荷が軽減しセンターのルータでの受信時のパケット破棄は回避される ┏━━┓ ■ ■→ ┃ ┃拠点┣━━━━┓ ┃ ┏━━━┓ ┗━━┛ ┃ ┃ ■ ■ ■→ ┣┫サーバ┃ ┏┻━┻━━━┓ 破棄なし ┃┗━━━┛ ┏━━┓ ■ ┃ ┃ ┏━━━━┓ ┃ ┃拠点┣━━━┫ネットワーク┣━━━━┫センター┣━┫ ┗━━┛ ┃ ┃ ┗━━━━┛ ┃ ┗┳━┳━━━┛ ┏━━┓■ ■ ┃ ┃ ┃拠点┣━━━━┛ ┃↑ ┗━━┛ ┃ ┃ ┏━━┓ ■ ■ ┃ ┃拠点┣━━━━━━┛ ┗━━┛
一方、全トラフィックのうち制御対象の機器以外との通信が多くの割合を占めるような環境では注意が必要です。例えば上述の例で拠点以外との接続があり、センター機器が受信するトラフィックのうち大部分を拠点との通信ではないトラフィックが占める環境では、拠点からのトラフィックを抑えてもセンター機器の負荷は軽減しません。拠点の送出時のQoS制御で重要パケットのロスは抑えられる可能性はありますが、センター機器の負荷が軽減せず抑制の解除がいつまでもされないと、結果的に制御対象の拠点が使用できる実質的な帯域が狭まってしまいます。
本機能と帯域検出機能との併用はできません。また、RTX1500でサーバとしてトリガにクラス送信量を指定した場合、クライアント動作も同じRTX1500上で併用すると、そのクラス送信量のトリガを検出できないことがあります。
ヤマハルーターでは以下の機種およびファームウェアで、負荷通知機能をサポートしています。
機種 | ファームウェア |
---|---|
RTX3510 | すべてのリビジョン |
RTX1300 | |
RTX1220 | |
RTX830 | |
NVR510 | |
NVR700W | |
RTX1210 | |
RTX5000 | |
RTX3500 | |
FWX120 | |
RTX810 | |
NVR500 | |
RTX1200 | |
SRT100 | |
RT58i | |
RTX3000 | |
RTX1100/RTX1500 | Rev.8.03.37 以降 |
RT107e | Rev.8.03.42 以降 |
機器の負荷を検出する側をサーバ、その結果によりこのサーバから制御要請を受ける側をクライアントとします。
サーバ側では機器の負荷として下記の値を監視します。
サーバで監視するこれらの値が予め設定した抑制要請閾値を越えると、クライアントに抑制要請通知を行います。この閾値を越え続けている限りサーバはクライアントに一定周期で抑制要請通知を行います。また負荷が軽減した時に速やかに元の状態に戻すため、抑制解除閾値を下回るとサーバはクライアントに抑制解除通知を行います。要請と解除の状態が不安定に入れ替わることを防ぐために、このように2種類の異なる閾値を使用するほか、通知に至る検出回数も指定できます。
サーバ側動作例(連続検出3回で通知する例) ↑ 通知 検出値│ 123 ○● │ ○●○ ○ ○○ ● │----------------○------○●----------●○○--○------------------------ 抑制要請閾値 │ ○ ○ ○ │ ○ ○ ○ 負荷の軽減 ○ │ ○ 負荷の上昇 ○ ○ │----○------------------------------------------------○----------○---- 抑制解除閾値 │○○ ○●○○○ │ 123 │ 通知 ─────────────────────────────────────→ 時間 計測するタイミングとその値 : ○ 計測の結果、クライアントに通知: ●
クライアントはサーバからの通知を受けてQoS制御を行います。抑制要請通知を受けると一定割合でトラフィックを抑制します。通知を繰り返し受けることでより多くのトラフィックが抑制されることになります。サーバからの通知を受けない限りは、最大設定帯域あるいは制御開始前の設定値のどちらか小さい値に向けて徐々にトラフィックの抑制量を回復させます。抑制解除通知を受けた場合には速やかに元の状態に戻します。
サーバからの通知を受けたり回復動作によってトラフィック抑制量を変化させる際には内部のQoS機能の動作を変更するので、負荷やタイミングによってはパケットロスが伴ったり、Dynamic Class Controlの動作に一時的な影響を与えることがあります。
クライアント側動作例 ↑ 最大設定帯域で動作 │○○○○○○○○○○--------------------------------------●○○○○○------ 最大設定帯域 設定帯域│ │ ↑ │抑制要請を受けて下げる ○ │抑制解除を受けて戻す │ ↓ ○ 徐々に回復 ○ │ ● ○ ○ │ ○ ○ │ ● ○ ○ 徐々に回復 │ 抑制要請を受けて下げる ○ ○ ○ │ ● ○ ○ │--------------------------------------●----●------------------------------ 最小設定帯域 │ 下限到達 ─────────────────────────────────────→ 時間 設定帯域 : ○ 通知を受けて変化した帯域: ●
オプション設定で相手先毎の動作を定義することができます。オプションの一覧を下記に示します。詳細はコマンドの項を参考にしてください。
[負荷通知機能でサーバとクライアントに必要な設定オプションの一覧]
◎: | 必須の設定 |
○: | 設定可能 |
×: | 設定不可 |
設定項目 | 設定値 | cooperation load-watch remoteコマンド | ||||
リモート=サーバ (クライアント側) | リモート=クライアント (サーバ側) |
|||||
必要性 | 初期値 | 必要性 | 初期値 | |||
ID | 1〜100 | ◎ | - | ◎ | - | |
ROLE | server,client | ◎ (server) | - | ◎ (client) | - | |
ADDRESS | (注1) | ◎ | - | ◎ | - | |
OPTION | trigger | トリガ定義番号,複数適用可能 | × | - | ◎ | 設定なし |
control | 制御動作定義番号 | ◎ | 設定なし | × | - | |
port | ポート番号を示す10進数 | ○ | 59410 | ○ | 59410 | |
syslog | on,off | ○ | off | ○ | off | |
apply | on,off | ○(注2) | on | ○(注2) | on | |
register | on,off | ○(注3) | off | × | - | |
register-interval | 1〜2147483647 [sec] | ○(注3) | 1200 | × | - | |
register-time | 1〜2147483647 [sec] | × | - | ○(注4) | 3600 | |
name | 最大16文字 | ○(注5) | 設定なし | ○(注5) | 設定なし |
[注意事項]
注1: | IPアドレスまたはFQDNまたはanyが設定可能。 クライアント側が不定IPアドレスの場合はサーバ側で"any"を設定し、クライアント側で"register=on"を設定する。 |
注2: | サーバ側で"apply=off"である場合には、検出した結果をクライアントに送信しない。 クライアント側で"apply=off"である場合には、受信した検出結果をQoS制御に適用しない。 |
注3: | サーバ側のADDRESS指定で"any"以外を設定した時に設定できる。 |
注4: | クライアント側のADDRESS指定で"any"を設定した時に設定できる。 |
注5: | nameを設定しない場合には、全ての要請や通知を受け入れる。 nameを設定した場合には、名前が一致する要請や通知だけを受け入れる。 |
┌───┐ 172.16.100.1 │拠点A ├─────┐ └───┘ │ ┌──┴───┐ ┌───┐ │ │ ┌────┐ 172.16.110.1 │拠点B ├──┤ネットワーク├──┤センター│172.16.10.1 └───┘ │ │ └────┘ └──┬───┘ ┌───┐ │ 172.16.120.1 │拠点C ├─────┘ └───┘ センター機器のLAN2での受信負荷監視値の変化の一例: 拠点Aのトラフィックを最も抑制し、拠点Cのトラフィックへの影響を最も小さくする。 センターの負荷が増加減少した場合の挙動例を示す。 [Mbit/s] ↑ │ ○○○○○○ │ ○ ○ │ ●→Cに抑制要請 ○ │ ○ ○ 80 │----------------------------- ●→Bに抑制要請 ○ 負荷減少 │ ○ ○ │ ○ ○ │ ○ ○ │ ●→Aに抑制要請 ○ │ ○ ○ 50 │----------------- ○----------------------------------------------- ●→Cに解除要請 │ ○ ○ │ ○ ●→Bに解除要請 │ 負荷増加 ○ ○ │ ○ ○ │ ○ ○ 20 │----- ○----------------------------------------------------------------------- ●→Aに解除要請 │ ○ ○ │ ○ ○ │○ ○ │ ○ ─────────────────────────────────────────────→ 時間 拠点Aがトラフィック抑制を行う期間 <---------------------------------------------------------> 拠点Bがトラフィック抑制を行う期間 <-----------------------------------------> 拠点Cがトラフィック抑制を行う期間 <--------------------------------->
#cooperation load-watch trigger 1 lan2 receive high=50m low=20m,1 #cooperation load-watch trigger 2 lan2 receive high=80m,1 low=50m #cooperation load-watch trigger 3 lan2 receive high=80m low=50m,1 #cooperation load-watch remote 1 client 172.16.100.1 trigger=1 #cooperation load-watch remote 2 client 172.16.110.1 trigger=2 #cooperation load-watch remote 3 client 172.16.120.1 trigger=3 #cooperation load-watch server on
#speed lan2 20m #queue lan2 type priority #cooperation load-watch client on #cooperation load-watch control 1 high=20m low=1m #cooperation load-watch remote 1 server 172.16.10.1 control=1
#speed lan2 50m #queue lan2 type shaping #queue lan2 class property 1 bandwidth=30% #cooperation load-watch client on #cooperation load-watch control 1 high=50m low=1m lower=50 raise=2 #cooperation load-watch remote 1 server 172.16.10.1 control=1
#speed lan2 50m #queue lan2 type priority #cooperation load-watch client on #cooperation load-watch control 1 high=50m low=10m lower=20 raise=5 #cooperation load-watch remote 1 server 172.16.10.1 control=1
通知のトリガを設定します。単位時間毎にLAN2からの受信バイト数から受信速度を求め、その値が50[Mbit/s]以上であることが連続3回あれば抑制要請を送り、その後20[Mbit/s]以下であることが1度でも観測されれば抑制解除を送ります。#cooperation load-watch trigger 2 lan2 receive high=80m,1 low=50m
通知のトリガを設定します。単位時間毎にLAN2からの受信バイト数から受信速度を求め、その値が80[Mbit/s]以上であることが1度でもあれば抑制要請を送り、その後50[Mbit/s]以下であることが連続3回観測されれば抑制解除を送ります。#cooperation load-watch trigger 3 lan2 receive high=80m low=50m,1
通知のトリガを設定します。単位時間毎にLAN2からの受信バイト数から受信速度を求め、その値が80[Mbit/s]以上であることが連続3回続けば抑制要請を送り、その後50[Mbit/s]以下であることが1度でもあれば抑制解除を送ります。#cooperation load-watch remote 1 client 172.16.100.1 trigger 1
拠点Aをクライアントとして登録します。1番のトリガを通知の対象にします。#cooperation load-watch remote 2 client 172.16.110.1 trigger 2
拠点Bをクライアントとして登録します。2番のトリガを通知の対象にします。#cooperation load-watch remote 3 client 172.16.120.1 trigger 3
拠点Cをクライアントとして登録します。3番のトリガを通知の対象にします。#cooperation load-watch server on
サーバとして機能させます。
LAN2インタフェースの速度を設定します。#queue lan2 type priority
LAN2インタフェースでは優先制御を使用します。この他にクラス分けの設定が別途必要です。#cooperation load-watch client on
クライアントとして機能させます。#cooperation load-watch control 1 high=20m low=1m
抑制動作を設定します。インタフェース速度を最大20[Mbit/s]とし、抑制要請を受けた場合には最小1[Mbit/s]まで速度は低下します。#cooperation load-watch remote 1 server 172.16.10.1 control 1
センター側をサーバとして登録します。サーバから抑制要請を受けた場合の動作を適用します。
LAN2インタフェースの速度を設定します。#queue lan2 type shaping
LAN2インタフェースでは帯域制御を使用します。#queue lan2 class property 1 bandwidth=30%
負荷通知機能を利用する場合には、queue class propertyコマンドでは帯域を%指定で設定します。%指定以外で設定した場合にはその設定値が保証されません。この他にクラス分けの設定が別途必要です。#cooperation load-watch client on
この例では、負荷通知に応じて変化するインタフェース速度の30%がクラス1に割り当てられます。
クライアントとして機能させます。#cooperation load-watch control 1 high=50m low=1m lower=50 raise=2
抑制動作を設定します。インタフェース速度を最大50[Mbit/s]とし、抑制要請を受けた場合には最小1[Mbit/s]まで速度は低下します。抑制要請を受けた場合の抑制比率を50%とし、また単位時間毎に2%ずつ回復するものとします。#cooperation load-watch remote 1 server 172.16.10.1 control 1
センター側をサーバとして登録します。サーバから抑制要請を受けた場合の動作を適用します。
LAN2インタフェースの速度を設定します。#queue lan2 type priority
LAN2インタフェースでは優先制御を使用します。この他にクラス分けの設定が別途必要です。#cooperation load-watch client on
クライアントとして機能させます。#cooperation load-watch control 1 high=50m low=10m lower=20 raise=5
抑制動作を設定します。インタフェース速度を最大50[Mbit/s]とし、抑制要請を受けた場合には最小10[Mbit/s]まで速度は低下します。抑制要請を受けた場合の抑制比率を20%とし、また単位時間毎に5%ずつ回復するものとします。#cooperation load-watch remote 1 server 172.16.10.1 control 1
センター側をサーバとして登録します。サーバから抑制要請を受けた場合の動作を適用します。
[書式] cooperation port PORT no cooperation port [PORT] [設定値] ○PORT ... ポート番号 [説明] 連携動作で使用するUDPのポート番号を設定する。連携動作で送出される パケットの送信元ポート番号にこの番号を使用する。またこのポート番 号宛のパケットを受信した場合には連携動作に関わるパケットとして処 理する。 [初期値] 59410
[書式] cooperation load-watch ROLE SW no cooperation load-watch ROLE [SW] [設定値] ○ROLE ... 連携動作での役割 ●server ... サーバ側動作 ●client ... クライアント側動作 ○SW ●on ... 機能を有効にする ●off ... 機能を無効にする [説明] 負荷監視動作の機能毎の動作を設定する。 [初期値] 全ての機能でoff
[書式] cooperation load-watch remote ID ROLE ADDRESS [OPTION=VALUE] no cooperation load-watch remote ID ROLE [ADDRESS [OPTION=VALUE]] [設定値] ○ID ... 相手先ID番号(1-100) ○ROLE ... 連携動作での相手側の役割 ●server ... 相手側がサーバ側動作を行う ●client ... 相手側がクライアント側動作を行う ○ADDRESS ... 連携動作の相手側IPアドレスまたはFQDNまたは'any' ○OPTION ... オプション ●trigger ... サーバ動作として、クライアントに通知を行う条件のト リガ定義番号、','で区切って複数の指定が可能、 相手側動作をクライアントに設定する時にのみ可能 ●control ... クライアント動作として、サーバから通知を受けた時の 制御動作定義番号、相手側動作をサーバに設定する時に のみ可能 ●port ... 相手側が使用するUDPのポート番号(1-65535) ●syslog ... 動作をログに残すか否か、'on' or 'off' ●apply ... 負荷監視通知の結果を動作に反映させるかどうか、 'on' or 'off' ●register ... サーバに対する登録パケットを送るか否か、 'on' or 'off' ●register-interval ... クライアントからサーバへの登録パケット送信間隔、 (1-2147483647) ●register-time ... サーバでのクライアント登録情報保持時間、 (1-2147483647) ●name ... 相手側を識別する名前、最大16文字 ●local-address ... パケット送信時の始点IPアドレス [説明] 負荷監視通知で連携動作を行う相手毎の動作を設定する。 [ノート] triggerオプションを利用できるのはROLEパラメータでclientを設定する 場合であり、controlオプションが利用できるのはROLEパラメータで serverを設定する場合である。 サーバ側でanyを指定した場合、サーバ側にクライアントの存在を通知登 録するためにクライアント側ではregister=onを設定する必要がある。 nameオプションを設定した場合、サーバとクライアントの双方で同じ名前 を設定した場合にのみ機能する。 複数のトリガを設定した場合、抑制要請の送信タイミングはそれぞれのト リガで個別に検出される。それらの送信タイミングが異なる時には抑制要 請はそれぞれのタイミングで個別に送られ、送信タイミングが一致する時 にはひとつの抑制要請となる。 相手先に一度抑制解除が送られた後は、次に抑制要請を送信するまで抑制 解除は送信しない。 抑制要請を送信していないトリガ条件が抑制解除条件を満たしても抑制解 除通知は送信しない。 抑制制御を行っている最中に相手先情報が削除されると、制御対象のイン タフェースの速度はその時点の設定が保持される。 [初期値] port=59410 syslog=off apply=on register=off register-interval=1200 register-time=3600
[書式] cooperation load-watch trigger ID POINT high=HIGH[,COUNT] low=LOW[,COUNT] [OPTION=VALUE] no cooperation load-watch trigger ID [POINT high=HIGH[,COUNT] low=LOW[,COUNT] [OPTION=VALUE]] [設定値] ○ID ... トリガ定義番号(1-65535) ○POINT ... 負荷監視対象ポイント ●cpu load ... 単位時間間隔でCPU負荷率を監視する 値は%(1-100)で指定する ●INTERFACE receive ... インタフェースでの単位時間当たりの受信量 を監視する 値は1秒あたりのビット数(64k-100M)で指定す る ○INTERFACE ... インタフェース名(LAN, トンネル) ●INTERFACE overflow ... LANインタフェースでの単位時間当たりの受 信オーバフロー発生回数と受信バッファエラ ー発生回数を監視する 値は回数(0-65535)で指定する ○INTERFACE ... LANインタフェース名 ●INTERFACE [CLASS] transmit ... インタフェースでの単位時間当た りの送信量を監視する 値は1秒あたりのビット数(64k-100M) で指定する ○INTERFACE ... インタフェース名(LAN, トンネル) ○CLASS ... クラス番号(LANインタフェースの場合) ○HIGH ... 高負荷検出閾値 ○LOW ... 負荷減少検出閾値 ○COUNT ... 通知を送出するに至る検出回数(1-100)、省略時は3 ○OPTION ... オプション ●interval ... 監視する間隔(1-65535)[sec]、省略時は10[sec] ●syslog ... 動作をログに残すか否か、'on' or 'off'、 省略時は'off' [説明] 機器の負荷を検出して相手側にトラフィック抑制要請を送出する条件を設 定する。監視対象ポイントの負荷を単位時間毎に監視し、highに設定され た閾値を上回ることをCOUNT回数続けて検出すると抑制要請を送出する。こ の状態で閾値を上回る高負荷状態が続く限り、COUNTの間隔で抑制要請を送 出し続ける。 同様に、lowに設定された閾値をCOUNT回数続けて下回って検出すると抑制 解除を送出する。抑制解除は同じ相手に対して連続して送出されない。 classオプションは帯域制御機能が実装されている機種でのみ利用できる。 [ノート] 閾値を決定する際の参考値として、show environmentやshow status lanで 表示される情報のほか、syslogオプションによりログに表示される値も利 用できる。 [初期値] 設定なし [設定例] #cooperation load-watch trigger 1 cpu load high=80 low=30 一定間隔でCPUの負荷率を観測し、負荷率が80%以上であることが連続3回測 定されたら抑制要請を送り、その後30%以下であることが3回続けて観測され たら抑制解除を送る。 #cooperation load-watch trigger 2 lan2 receive high=80m,5 low=50m,1 単位時間内でのLAN2からの受信バイト数から受信速度を求め、その値が80 [Mbit/s]以上であることが連続5回あれば抑制要請を送り、その後50[Mbit/s] 以下であることが1度でも観測されれば抑制解除を送る。 #cooperation load-watch trigger 3 lan2 overflow high=2,1 low=0,5 単位時間内でのLAN2での受信オーバーフロー数の増加を監視し、2回検出さ れることが1度でもあれば抑制要請を送り、検出されないことが5回続けば抑 制解除を送る。
[書式] cooperation load-watch control ID high=HIGH [raise=RAISE] low=LOW [lower=LOWER] [OPTION=VAL] no cooperation load-watch control ID [high=HIGH [raise=RAISE] low=LOW [lower=LOWER] [OPTION=VAL]] [設定値] ○ID ... 制御動作定義番号(1-65535) ○HIGH ... bit/sec、帯域上限値 ○RAISE ... %、帯域上限値に達していない限り、定時間毎にこの割合だ け帯域を増加させる 省略時は5% ○LOW ... bit/sec、帯域下限値 ○LOWER ... %、帯域下限値に達していない限り、抑制要請を受けた時に 現在の帯域からこの割合だけ送出帯域を減少させる 省略時は30% ○OPTION ... オプション ●interval ... 帯域を増加させる間隔(1-65535)[sec]、省略時は10[sec] ●interface ... 帯域を変化させるLANインタフェース ●class ... 帯域を変化させるクラス [説明] トラフィック抑制要請を受けた場合の動作を設定する。帯域はhighに設定さ れた帯域とlowに設定された帯域との間で制御される。 抑制要請を受信すると、送出帯域は現状の運用帯域値のlowerの値に応じた 割合に減少する。帯域がhighに達していない限り、raiseの値に応じて運用 帯域は増加する。 トラフィック抑制解除を受信した場合には、帯域はhighに設定された帯域 に増加する。 classオプションは帯域制御機能が実装されている機種でのみ利用できる。 [初期値] 設定なし
[書式] cooperation load-watch go ID TYPE [設定値] ○ID ... 相手先ID番号(1-100) ○TYPE ... パケットタイプ、'lower' or 'raise' [説明] 指定した相手先に対して負荷監視のトリガで送出されるパケットと同じパケ ットが送出される。 [ノート] 相手の役割がクライアントである相手にのみ有効である。
[書式] show status cooperation TYPE [ID] [設定値] ○TYPE ... 連携動作タイプ ●bandwidth-measuring ... 回線帯域検出 ●load-watch ... 負荷監視通知 ○ID ... 相手先ID番号(1-100) [説明] 連携動作の情報を表示する。 負荷監視通知の場合、以下の項目が表示される。 ○相手先情報 ○状態表示 ●抑制要請回数 ●抑制解除回数 ●履歴