負荷通知機能

$Date: 2021/04/12 08:01:43 $


目的

QoS機能では、送信するパケットに対してQoSポリシーに応じた制御ができます。しかし受信データ、特にLANインタフェースの入り口で受信オーバーフローとしてカウントされる破棄については、ポリシーに従った制御を行うことは不可能です。つまり受信では、高負荷時に優先度の高いパケットが破棄されてしまう可能性があります。

本機能は、この受信での意図しないパケットの廃棄を最小限に抑えることを目的とします。その手段として、自側機器の負荷状況を監視し、負荷が増大した場合には相手側機器にパケットの送出を抑えるよう働きかけます。

特に本機能は、対向機器の負荷状況を予測できない環境で有効に機能すると考えられます。例えばハブアンドスポーク型ネットワークで、センターが同時に複数拠点からのトラフィックを処理する場合、拠点側機器はセンター側機器の負荷状況を把握できません。この時、センター側機器が自側の負荷状況に応じて拠点側機器に一時的なトラフィックの抑制要請を行うことでパケットロスを防ぎ、通信品質の安定化を図ることが可能です。


  ┏━━┓■■■■→
  ┃拠点┣━━━━━━┓
  ┗━━┛            ┃            各拠点からセンターのサーバへのトラフィックが集中し
                      ┃↓          センターのルータの受信負荷が増大し、パケットの破棄が発生
  ┏━━┓■■■■→  ┃
  ┃拠点┣━━━━┓  ┃              ■  ■            ┏━━━┓
  ┗━━┛        ┃  ┃ ■■■■■■■■■■→       ┣┫サーバ┃
                ┏┻━┻━━━┓      破棄発生        ┃┗━━━┛
  ┏━━┓■■  ┃            ┃        ┏━━━━┓  ┃
  ┃拠点┣━━━┫ネットワーク┣━━━━┫センター┣━┫
  ┗━━┛      ┃            ┃        ┗━━━━┛  ┃
                ┗┳━┳━━━┛
  ┏━━┓■■■  ┃  ┃
  ┃拠点┣━━━━┛  ┃↑
  ┗━━┛            ┃
                      ┃
  ┏━━┓■■■■■  ┃
  ┃拠点┣━━━━━━┛            センターから拠点に対してトラフィック抑制要請を行う
  ┗━━┛              ←────────

       各拠点は送信時にポリシーに応じたQoS制御を行う

  ┏━━┓■   ■→
  ┃拠点┣━━━━━━┓
  ┗━━┛            ┃
                      ┃↓          負荷が軽減しセンターのルータでの受信時のパケット破棄は回避される
  ┏━━┓ ■   ■→  ┃
  ┃拠点┣━━━━┓  ┃                                ┏━━━┓
  ┗━━┛        ┃  ┃         ■   ■   ■→       ┣┫サーバ┃
                ┏┻━┻━━━┓      破棄なし        ┃┗━━━┛
  ┏━━┓  ■  ┃            ┃        ┏━━━━┓  ┃
  ┃拠点┣━━━┫ネットワーク┣━━━━┫センター┣━┫
  ┗━━┛      ┃            ┃        ┗━━━━┛  ┃
                ┗┳━┳━━━┛
  ┏━━┓■  ■  ┃  ┃
  ┃拠点┣━━━━┛  ┃↑
  ┗━━┛            ┃
                      ┃
  ┏━━┓ ■  ■     ┃
  ┃拠点┣━━━━━━┛
  ┗━━┛

一方、全トラフィックのうち制御対象の機器以外との通信が多くの割合を占めるような環境では注意が必要です。例えば上述の例で拠点以外との接続があり、センター機器が受信するトラフィックのうち大部分を拠点との通信ではないトラフィックが占める環境では、拠点からのトラフィックを抑えてもセンター機器の負荷は軽減しません。拠点の送出時のQoS制御で重要パケットのロスは抑えられる可能性はありますが、センター機器の負荷が軽減せず抑制の解除がいつまでもされないと、結果的に制御対象の拠点が使用できる実質的な帯域が狭まってしまいます。

本機能と帯域検出機能との併用はできません。また、RTX1500でサーバとしてトリガにクラス送信量を指定した場合、クライアント動作も同じRTX1500上で併用すると、そのクラス送信量のトリガを検出できないことがあります。


対応機種とファームウェアリビジョン

ヤマハルーターでは以下の機種およびファームウェアで、負荷通知機能をサポートしています。

機種ファームウェア
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コマンド
リモート=サーバ
(クライアント側)
リモート=クライアント
(サーバ側)
必要性初期値必要性初期値
ID1〜100 - -
ROLEserver,client
(server)
-
(client)
-
ADDRESS(注1) - -
OPTIONtriggerトリガ定義番号,複数適用可能 ×- 設定なし
control制御動作定義番号 設定なし ×-
portポート番号を示す10進数 59410 59410
syslogon,off off off
applyon,off (注2)on (注2)on
registeron,off (注3)off ×-
register-interval1〜2147483647 [sec] (注3)1200 ×-
register-time1〜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を設定した場合には、名前が一致する要請や通知だけを受け入れる。

設定例

例1.センターに3拠点がそれぞれ接続しており、センターは負荷に応じて各拠点に抑制要請を送出し、各拠点はそれを受けてQoS設定に反映する

              ┌───┐
 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
拠点A(優先制御)
#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
拠点B(帯域制御)
#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
拠点C
#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

[解説]

センター
#cooperation load-watch trigger 1 lan2 receive high=50m low=20m,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
サーバとして機能させます。
拠点A(優先制御)
#speed lan2 20m
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
センター側をサーバとして登録します。サーバから抑制要請を受けた場合の動作を適用します。
拠点B(帯域制御)
#speed lan2 50m
LAN2インタフェースの速度を設定します。
#queue lan2 type shaping
LAN2インタフェースでは帯域制御を使用します。
#queue lan2 class property 1 bandwidth=30%
負荷通知機能を利用する場合には、queue class propertyコマンドでは帯域を%指定で設定します。%指定以外で設定した場合にはその設定値が保証されません。この他にクラス分けの設定が別途必要です。
この例では、負荷通知に応じて変化するインタフェース速度の30%がクラス1に割り当てられます。
#cooperation load-watch client on
クライアントとして機能させます。
#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
センター側をサーバとして登録します。サーバから抑制要請を受けた場合の動作を適用します。
拠点C
#speed lan2 50m
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
センター側をサーバとして登録します。サーバから抑制要請を受けた場合の動作を適用します。

コマンド


[EOF]