HSRP(Hot Stanby Router Protocol)
Ciscoが開発したデフォルトゲートウェイを冗長化するためのプロトコル。PCのデフォルトゲートウェイの設定を変更しなくても切り替えができるようになり、冗長化を行うことで耐障害性が向上される。
他にもGLBP(Gateway Load Balancing Protocol)、標準化されたVRRP(Virtual Router Redundancy Protocol)などが該当する。これらをまとめてFHRP(First Hop Redundancy Protocols)という
HSRPスタンバイグループ
複数のファーストホップルータを共通のグループに割り当てたもの。0~255(バージョン1の場合)、0~4095(バージョン2の場合)の番号で管理されている。同じグループに所属するルータ同士で連携をとることで、PCには1台のルータ(仮想ルータ)だけが存在しているように見せかけることができる。
仮想IPアドレス
共通のデフォルトゲートウェイのIPアドレスとして設定することで、障害発生時に即座に切り替えることができる。設定できるのは、デフォルトゲートウェイとして動作するネットワーク内で使用されていないIPアドレスで、ルータのインターフェイスに設定されているIPアドレスは使用できない。
仮想Macアドレス
共通の宛先Macアドレスとして使用することもできる。前半の5オクテットがそれぞれ決められている。
-
0000.0C07.AC〇〇
(バージョン1の場合) -
0000.0C9F.F〇〇〇
(バージョン2の場合)
アクティブルータ
転送処理を行うルータのこと。通常の転送のほか、仮想IPアドレスを問い合わせるARPへの応答などを行う。HSRPプライオリティを基準に選出され、0~255の値を設定できる。デフォルトは100。
HSRPプライオリティが最も大きいルータがアクティブルータとなり、差がない場合HSRPが動作しているインターフェイスのIPアドレスが最も大きいルータがアクティブルータになる。
スタンバイルータ
アクティブルータのバックアップとなるルータで、アクティブルータに障害が起きた際にその役割を引き継ぐ。スタンバイグループ内でプライオリティが2番目に大きいルータが選出される。
スタンバイグループ内にルータが3つ以上ある場合、アクティブにもスタンバイにもならなかったルータはその他のルータとなる。
HSRPの動作
Helloパケットの交換
ルータはHSRPの設定を有効すると、Helloパケット(UDP1985)をマルチキャストアドレスの224.0.0.2
に送信する。Helloパケットによりルータ間でHSRP情報を交換する。送信間隔はデフォルトは3秒。
アクティブルータとスタンバイルータの選出
Helloパケットにより送信されたHSRP情報を基にそれぞれ選出される。3台以上で構成されていた場合は、3台目以降はその他のルータになる。
Helloパケットによる生存確認
それぞれのルータが決定した後は、それぞれがHelloパケットを送信するし、その他のルータはHelloパケットを受け取るだけのListen状態になる。
PCからの通信
PCは異なるネットワークに送信するとき、デフォルトゲートウェイのMacアドレスを問い合わせるARP要求を送信する。それぞれのルータがARP要求を受け取るが、アクティブルータだけARP応答を返す。この時含Macアドレスは0000.0C07.AC01
障害初声時の動作
スタンバイルータは、アクティブルータからHelloパケットを10秒間受け取らなかった場合、ダウンしたと判断してアクティブルータに昇格する。その際、スイッチへ特殊なARPパケットを送りMacアドレステーブルの内容を書き換える。
Gratuitous ARP
自身と同じIPアドレスに対するMacアドレスを問い合わせるARPパケット。DHCPでIPアドレスのコンフリクトを検出する際などにも使用される。
HSRPの状態推移
状態 | 定義 |
---|---|
Initial | 最初の状態。HSRPを設定した直後などはこの状態となる |
Learn | ルータがアクティブルータからHelloパケットを受け取っておらず、仮想IPアドレスを認識していない状態 |
Listen | アクティブにもスタンバイにもならなかったルータがこの状態となる。Helloパケットを送信していないが受信はしている |
Speak | Helloパケットを送信してアクティブルータとスタンバイルータの選出を行っている状態 |
Standby | スタンバイルータがこの状態となる。Helloパケットを定期的に送信している |
Active | アクティブルータがこの状態となる。Helloパケットを定期的に送信している。仮想Macアドレス宛てのパケットの転送処理を行う |
HSRPの機能
プリエンプト
プライオリティが大きいルータが常にアクティブルータになる機能
インターフェイストラッキング
HSRPを動作させているインターフェイス以外を追跡し、そのアップ/ダウンによりプライオリティを変更する機能。追跡対象のインターフェイスがダウンすると、プライオリティが指定した値だけ小さくなる。プライオリティが小さくなると、ほかのルータのプライオリティが大きくなり、そのルータがアクティブルータに変わる。ただし、プリエンプトを設定していないと切り替わらない。
オブジェクトトラッキング
インターフェイスのラインプロトコル状態や、IPが設定されていてルーティング可能かどうか(IPルーティングステート)、宛先ネットワークまでのメトリック値など、それ以外の様々なものを追跡対象として指定することができる。
設定手順
①監視対象とするオブジェクトを作成する
②作成したオブジェクトをスタンバイグループに適用する
認証機能
想定外のルータがスタンバイグループに接続されても仮想IPアドレスなどを習得できない。
- プレーンテキスト認証:パスワードを暗号化しない
- MD5認証:パスワードを暗号化する
バージョン
HSRPにはバージョン1と2がある。
項目 | バージョン1 | バージョン2 |
---|---|---|
Helloパケットの宛先 | 224.0.0.2 | 224.0.0.102 |
グループの範囲 | 0~255 | 0~4095 |
仮想Macアドレス | 0000.0C07.AC[グループ番号] | 0000.0C9F.F[グループ番号] |
IPv6サポート | なし | あり |
MHSRP(Multiple HSRP)
待ち状態となっているアクティブルータ以外のルータも有効に活用できるように考えられ、各ルータを複数のスタンバイグループに参加させること。それぞれのグループでアクティブルータ、スタンバイルータになるルータを変えることで、負荷の分散を行うことができる。
HSRPの設定
syandby ipコマンド
書式:standby [<スタンバイグループ番号>] ip [<仮想IPアドレス>]
HSRPを有効にするコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
オプション | 内容 |
---|---|
スタンバイグループ番号 | バージョン1であれば0~255、バージョン2であれば0~4095の番号を指定し、省略した場合は0となる。 |
仮想IPアドレス | 省略した場合、スタンバイグループ内の他のルータから送信されてきたHelloパケットから仮想IPアドレスを学習する |
スタンバイグループ内の1台は必ず仮想IPアドレスを設定しておく必要があり、ルータに設定されているIPアドレスは仮想IPアドレスに出来ない
standby priorityコマンド
書式:standby [<スタンバイグループ番号>] priority <プライオリティ値>
HSRPプライオリティ値の設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。プライオリティ値は0~255の間で指定し、省略した場合はデフォルトの100となる。
standby preemptコマンド
書式:standby [<スタンバイグループ番号>] preempt [delay < minimum | reload> <秒数>]
プリエンプトを設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。現在の状態によらず、プライオリティ値の高いルータをアクティブルータ(プライマリルータ)とさせる時に利用する。
オプション | 内容 |
---|---|
delay | アクティブルータとなるまでの時間を一定時間送らせることができる |
standby trackコマンド
書式:standby [<スタンバイグループ番号>] track <インターフェイス> [<減少値>]
インターフェイストラッキングの設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。HSRPプライオリティ値を減少させたい場合に使用する。減少値はdownするとその値だけ減少し、upすると元の値に戻る。デフォルトの設定は10。
track interfaceコマンド
書式:track <オブジェクト番号> interface <インターフェイス> < line-protocol | ip routing>
インターフェイスの状態を対象としたオブジェクトの設定を行うコマンド。グローバルコンフィギュレーションモードで行う必要がある。
オプション | 内容 |
---|---|
line-protocol | 対象インターフェイスのラインプロトコルの状態を追跡する。状態がupであればオブジェクトの状態もupと見なされ、状態がdownであればdownと見なされる |
ip routing | 対象のインターフェイスのラインプロトコルの状態がupか、IPアドレスが設定されているか、インターフェイスのルーティングが有効かを追跡する。全て満たされていると状態がupと見なされ、どれか1つでも満たされていない場合はdownと見なされる |
コマンド実行後、トラッキングコンフィギュレーションモードに移行するが、このモードで必須の設定項目はない
track ip routeコマンド
書式:track <オブジェクト番号> ip route <ネットワーク> <サブネットマスク> < reachability | metric threshold>
ルーティングテーブルの経路情報を対象としたオブジェクトを設定するコマンド。グローバルコンフィギュレーションモードで行う必要がある。コマンド実行後、トラッキングコンフィギュレーションモードに移行する。
オプション | 内容 |
---|---|
reachability | 該当する経路情報がルーティングテーブル上に登録されていれば状態もupと見なされ、登録されていなければdownと見なされる |
metric threshold | 該当する経路情報がルーティングテーブル上に登録されており、かつメトリックが設定した閾値より小さければupと見なされ、閾値より大きければdownと見なされる |
threshold metricコマンド
書式:threshold metric up <メトリック1> down <メトリック2>
metric thresholdを指定して経路情報のメトリックを監視対象とする場合、閾値を設定するコマンド。トラッキングコンフィギュレーションモードで行う必要がある。
standby trackコマンド
書式:standby [<スタンバイグループ番号>] track <オブジェクト番号> [decrement <減少値>]
トラッキングの指定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。decrementでHSPRのプライオリティの減少値を指定する。省略した場合は減少値は10となる。
standby authenticationコマンド
書式:standby [<スタンバイグループ番号>] authentication [text] <文字列>
プレーンテキスト認証の設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
standby authentication ms5コマンド
書式:standby [<スタンバイグループ番号>] authentication md5 < key-string [0|7] <文字列> | key-chain <キーチェーン名>>
MD5認証の設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
オプション | 内容 |
---|---|
key-string | 認証に使用する文字列を直接指定する。オプションに0を指定した場合は後ろの<文字列>には暗号化されていない文字列を、7を指定した場合はMD5ハッシュ値を指定する。省略時は0が指定される |
key-chain | 認証に使用するキーチェーンを指定する。使用する場合はあらかじめ作成しておく必要がある |
standby version
書式:standby version <1|2>
HSRPのバージョンを変更するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。デフォルトはバージョン1となっている。変更すると使用する仮想MACアドレスも変わるため、スタンバイグループがリセットされ、再度ステータスの遷移や役割の決定が行われる。
standby mac-addressコマンド
書式:standby [<スタンバイグループ番号>] mac-address < MACアドレス>
仮想MACアドレスを手動で変更するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
HSRPの設定の確認
show standby briefコマンド
HSRPの要約情報を確認するコマンド。特権EXECモードで行う必要がある。
RT1#show standby brief
P indicates configured to preempt.
|
Interface Grp Pri P State Active Standby Virtual IP
Fa0/0 1 110 P Active local 192.168.1.110 192.168.1.254
Fa0/1 2 110 P Active local 172.16.1.110 172.16.1.254
項目 | 説明 |
---|---|
Interface | HSRPが有効になっているインターフェイス |
Grp | スタンバイグループ番号 |
Prio | プライオリティ値 |
P | プリエンプトが有効になっていることを表す |
State | ルータの役割で、Activeはアクティブルータ、Standbyはスタンバイルータを表す |
Active | アクティブルータのIPアドレス、Localは自身を表す |
Standby | スタンバイルータのIPアドレス。Localは自身を表す |
Virtual IP | 仮想IPアドレス |
show standbyコマンド
HSRPの詳細情報を確認するコマンド。特権EXECモードで行う必要がある。
番号 | 項目内容 |
---|---|
1 | HSRPが動作するインターフェースとHSRPグループ番号 |
2 | HSRPグループの仮想ルータIPアドレス |
3 | HSRPのタイマー(デフォルト:Hello 3秒、hold time 10秒) |
4 | プリエンプト動作設定(disabled:無効 / enabled:有効) |
5 | 現在のアクティブルータの情報(アクティブルータの実IPアドレス、プライオリティ。localは自身を表す) |
6 | 現在のスタンバイルータの情報(スタンバイルータの実IPアドレス、プライオリティ。localは自身を表す) |
7 | 自身の現在のプライオリティ(defaultは設定されたプライオリティを表す) |
show trackコマンド
トラックオブジェクトを確認するコマンド。特権EXECモードで行う必要がある。
GLBP(Gateway Load Balancing Protocol)
HSRP同様ルータを冗長化するCisco独自のプロトコル。1つのグループで不可分散を行うことが可能になっている。GLBPグループ(1つの仮想ルータとして見せること)は1023まで作成可能。
- 最大4つの仮想Macアドレスを使用
- 仮想Macアドレスは
0007.B400.XXYY
⇒X部分にGLBPグループ番号16進数に変換した値
⇒Y部分に01~04までの値が使用される
プライオリティに1~255の値を設定することができ、プライオリティが最も高いルータがAVG(Active Virtual Gateway)に選出される。プライオリティが同じだった場合は、IPアドレスが最も大きいルータが選出される。
最大4台のAVF(Acitve Virtual Forwarder)を選出し、割り当てられた仮想MACアドレス宛てのパケット転送を行う。GLBPでは、マルチキャストアドレス224.0.0.102
に対してHelloパケットを送信する。
GLBPの負荷分散方式
以下の様に3種類あり、デフォルトはラウンドロビンとなっている。
方式 | 動作 |
---|---|
ラウンドロビン | ARP要求に対して仮想MACアドレスを順番に返答していく |
重み付け | AVFのweightingに応じて返答に使用するMACアドレスの割合を変える |
ホスト依存 | 同じホストには常に同じMACアドレスを返答する |
GLBPの設定
glbp ipコマンド
書式:glbp <グループ番号> ip [<仮想IPアドレス>]
GLBPを有効にするコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。仮想IPアドレスはHSRPと同様に省略することが可能。省略した場合は、GLBPグループ内の他のルータから送信されてきたHelloパケットから仮想IPアドレスを学習する。
glbp priorityコマンド
書式:glbp <グループ番号> priority <プライオリティ値>
GLBPのプライオリティを設定するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。指定できる値は1~255で、デフォルトは100。
glbp weightingコマンド
書式:glbp <グループ番号> weighting <最大値> [lower <下限値>] [upper <上限値>]
AVFのweightingの初期値と、役割を無効にしたり有効にしたりする際の閾値を設定するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
- <最大値>は初期のweightingの値となる
- weightingが<下限値>を下回った場合、AVFの役割が無効になり他のルータに役割が移る
- weightingが<上限値>を上回った場合、AVFとしての役割が有効になる
glbp preemptコマンド
書式:glbp <グループ番号> preempt [delay minimum <秒数>]
プリエンプトの設定を設定するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
glbp weighting trackコマンド
書式:glbp <グループ番号> weighting track <オブジェクト番号> [decrement <減少値>]
AVFの役割の有効化、無効化に関する値であるweightingをインターフェイスの状態などのオブジェクトで減少させるコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。減少値を省略した場合、デフォルトは10となる。
glbp load-balancingコマンド
書式:glbp <グループ番号> load-balancing [host-dependent | round-robin | weighted]
ロードバランシング方式を変更するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。省略した場合はラウンドロビン方式となる
glbp authentication textコマンド
glbp <グループ番号> authentication text <文字列>
プレーンテキスト認証を設定するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
glbp authentication md5コマンド
書式:glbp authentication md5 < key-string [0|7] <文字列> | key-chain <キーチェーン名>>
MD5認証の設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
VRRP(Virtual Router Redundancy Protocol)
RFCで標準化されているプロトコルで、HSRPと違い様々なベンダーの機器で使用することが可能。マスタールータがHSRPのアクティブルータの役割をし、残りのルータは全てバックアップルータと呼ばれる。
VRRPでは、仮想IPアドレスにルータに実際に割り当てられているIPアドレスを設定することが可能。割り当てるとそのルータのプライオリティが255と最大になり、必ずマスタールータに選出される。プリエンプトはデフォルトで有効になっており、仮想MACアドレスは0000.5E00.01xx
VRRPのバージョン
バージョンは3まであり、Cisco機器はバージョン2と3に対応している。
バージョン | 内容 |
---|---|
バージョン2 | IPv4のみ対応しており、Cisco機器ではデフォルトで動作している |
バージョン3 | IPv4とIPv6に対応している |
プロトコル番号
TCPやUDPといったレイヤ4のプロトコルは使用しない。レイヤ3でIPプロトコル番号112を使用している。
HSRPはUDPを使用するプロトコルで、ポート番号は1985を使用する。
VRRPアドバタイズメント
有効化すると、アドバタイズメントメッセージをマルチキャストアドレス224.0.0.18
宛に送信する。バージョン3でも同じマルチキャストアドレスを使用する。1秒間隔で送信しており、3秒間受信しなかったらダウンと判断される。
また、TTLを255にして送信しており、減少せずそのままで届く。そのため、255未満だった場合は不正なパケットとしてみなして破棄する。
VRRPの設定
vrrp ipコマンド
書式:vrrp < VRRPグループ番号> ip <仮想IPアドレス>
VRRPを有効にするコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。グループ番号は1~255で指定する。
vrrp priorityコマンド
書式:vrrp < VRRPグループ番号> priority <プライオリティ値>
VRRPのプライオリティ値を設定するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。プライオリティ値は1~254まで設定可能。
255は仮想IPアドレスとインターフェイスのIPアドレスが一致しているルータが、専用で使用する値
vrrp preemptコマンド
書式:vrrp < VRRPグループ番号> preempt [delay minimum <秒数>]
プリエンプトの設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。プリエンプトの設定がデフォルトで有効のため、遅延秒数を設定する場合やプリエンプトの設定を無効化する際に使用する。
vrrp trackコマンド
書式:vrrp < VRRPグループ番号> track <オブジェクト番号> [decrement <減少値>]
トラッキングの指定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
VRRPではインターフェイストラッキングのコマンドは実行不可
vrrp authenticationコマンド
書式:vrrp < VRRPループ番号> authentication [text] <文字列>
プレーンテキスト認証の設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
vrrp authentication ms5コマンド
書式:standby < VRRPループ番号> authentication md5 < key-string [0|7] <文字列> | key-chain <キーチェーン名>>
MD5認証の設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
オプション | 内容 |
---|---|
key-string | 認証に使用する文字列を直接指定する。オプションに0を指定した場合は後ろの<文字列>には暗号化されていない文字列を、7を指定した場合はMD5ハッシュ値を指定する。省略時は0が指定される |
key-chain | 認証に使用するキーチェーンを指定する。使用する場合はあらかじめ作成しておく必要がある |
fhrp version vrrpコマンド
書式:fhrp version vrrp < v2 | v3>
VRRPのバージョンを変更するコマンド。グローバルコンフィギュレーションモードで行う必要がある。
StackWiseテクノロジー
複数のスイッチを仮想的に1台の論理スイッチとして扱うことのできる技術のことで、論理スイッチとして扱うことを「スタックする」という。冗長性や高い可用性を実現することができる。
- 専用のStackWiseケーブルでスイッチ間を接続することで、管理の手間を省くことができる
- スタック内にスイッチを追加することで容易に拡張が可能
- 複数の機器を仮想的に1台として扱えるため、障害が起きても接続性を保ち、可用性を向上させられる
StackWiseケーブルの接続方法
StackWiseケーブルに障害が発生した場合、スタックを構成するスイッチ間の帯域幅は半分になってしまう。
スタックメンバの追加と削除
メンバを追加する際は、追加するスイッチの電源を落とした状態でStackWiseケーブルを使用して接続し、その後起動する。追加するだけなら追加設定の必要はいらない。
削除する場合は、スイッチの電源をオフにしてケーブルを取り外す。
スタックマスター
スタック内には最大8台のスイッチを接続することができ、それぞれのスイッチは1~8のスタックメンバ番号が重複しないように割り当てられる。初期状態は1となる。
ルーティングテーブルやMACアドレステーブルの作成などを行い、その情報をスタックメンバに配布するなどスタックを構成しているスイッチの管理を行う。
スタックマスターの選出順序
- 現在スタックマスターとなっているスイッチ
- スタックメンバ内で最もプライオリティの大きいスイッチ
- デフォルトのインターフェイスレベルの設定となっていないスイッチ
- ハードウェアやソフトウェアのプライオリティが大きいスイッチ
- 最も稼働時間が長いスイッチ
- MACアドレスが最も小さいスイッチ
StackWiseの設定と確認
switch priorityコマンド
書式:switch <スタック番号> priority <プライオリティ値>
プライオリティを変更するコマンド。グローバルコンフィギュレーションモードで行う必要がある。プライオリティ値は1~15まで指定可能
switch renumberコマンド
書式:switch <現在のスタックメンバ番号> renumber <新しいスタックメンバ番号>
スタックメンバ番号を変更するコマンド。グローバルコンフィギュレーションモードで行う必要がある。
スタックメンバ番号は電源を落としても保持される。コマンド実行後、再起動を行えば設定が反映される。
show switchコマンド
スタック番号やプライオリティなどを確認するコマンド。特権EXECモードで行う必要がある。
VSS(Virtual Switching System)
Catalyst4500、Catalyst6500スイッチなどで利用できる、2台のスイッチを1台の仮想的なスイッチとして動作させることのできる技術のこと。1台の仮想スイッチとして見せることが出来るため、HSRPやSTPの設定が不要となる。
VSL(Virtul Switch Link)
2つのスイッチ間でデータや制御情報をやり取りするのに使用する。VSS同士を接続する仮想的なリンクで、通常のLANケーブルなどで接続する。
スーパーバイザエンジンの冗長化
スーパーバイザエンジンとは、スイッチを制御するCPUやメモリを載せたもの。障害が発生しても、もう1方に切り替えることで動作し続けることが可能。冗長化を行ったときに使用できる動作モードには次のものがある。
モード | 内容 |
---|---|
RPR(Route Processor Redundancy) | 予備のスーパーバイザエンジンが完全に起動できるまでに最も時間のかかるモード |
RPR+ | RPRが改良されたもの。モジュールの読み込みは行うが、レイヤ2、レイヤ3の転送情報は読み込まない。RPRよりも切り替えの時間が短くなっている |
SSO(Stateful Switchover) | レイヤ2の転送に関して切り替えが発生してもすぐ同期を行うことが可能。ルーティングに関しては再起動を行うため、隣接機器と再度ネイバー関係を結ぶなどの処理が必要 |
NSF/SSO(Nonstop Forwading/SSO) | SSOと連携して動作するため、レイヤ3の転送も可能。 |
Qos(Quality of Service)
ネットワークを介して提供しているサービスの品質を保つための技術のこと。設定を行うことで、遅延やばらつき、損失に敏感な音声データを優先的に転送することができる。
ネットワークにおける「サービスの品質」は、以下の4つの項目で評価される。
項目 | 内容 |
---|---|
帯域幅(Bandwidth) | 1秒間に送信できるデータ量、bps(bits per second)で表す |
遅延(Delay) | 送ったデータが相手に届くまでにかかる時間(片方向遅延)や、相手まで届きその応答が帰ってくるまでにかかる時間(往復遅延)のこと。主にミリ秒(ms)で表す |
ジッタ(Jitter) | 遅延のゆらぎのこと。遅延の時間が一定の場合はジッタが発生していないと言い、パケットごとの遅延が異なる(例:100ms、115ms、98ms、108ms、など)場合は、その遅延の差分(例では、15ms、17ms、10ms)をジッタと呼ぶ |
損失(Loss) | 相手に届かなかったパケットの割合 |
音声とビデオのQoS要件にはガイドラインがあり、以下の範囲に収まることが求められる。
ベストエフォート
QoSのデフォルトの動作。パケットの優先順位などは考慮せず、先に来たものを先に出すという処理を行う。そのため、通信品質は保証されない。
IntServ(Integrated Services)
アプリケーションのフローごとにエンドツーエンドのQoSを提供するモデル。フローごとに帯域を予約するために、RCVP(Resource reSerVation Protocol:リソース予約プロトコル)を使用する。各アプリケーションが必要とする帯域幅を経路上のデバイスに予約するのでエンドツーエンドのQoSを提供できる反面、拡張性が低いという特徴を持つ。複雑で運用しづらいといった理由からほとんど普及していない。
DiffServ(Differentiated Services)
各ルータやスイッチごとにパケットの優先順位に基づいて区別して転送処理を行うアーキテクチャ。あらかじめ送信元から宛先までの帯域を確保するのではなく、パケットに設定されている優先度に従って、転送処理を行う各ネットワーク機器がパケットを処理している。
以下のような仕組みになっている。
分類
届いたパケットの種類などを調べてクラスと呼ばれるカテゴリに分ける。IPアドレスやCoS、DSCPの値から、優先度の高いクラスなのか低いクラスなのかを決定する。
マーキング
分類によりクラス分けされたパケットに優先度を設定していく。フレームやパケットのCoSやDSCPなどをポリシーに従って変更する。
L2マーキング
IEEE 802.1Qフレームのタグに含まれるフィールド「PCP(CoS)」に、0~7のCoS値を設定することでフレームの優先度を示す。
L3マーキング
IPPやDSCPの値を設定するマーキング方法
DSCP(Differrentiated Services Code Point)
マーキングに使用される値の一つで、IPパケットの優先度を表すもの。同様なものでIP Precedenceというものもある。ToS(Type Of Service)フィールドの前半の6ビットを使用して、前半3ビットで優先度を表し残り3ビットで破棄されやすさを表す。
値に応じて各ルータやスイッチは転送処理を行う。こうしたホップごとの動作を決めたPHB(Per Hop Behavior)に応じてトラフィックは処理される。
細かくマーキングが可能で、以下の4種類がある。
マーキングの値 | 内容 |
---|---|
EF(Expedited Forwarding) | 10進数で46(2進数では101110)の値。最優先で処理したいパケット用のマーキング。主にIP電話のような音声パケットに使用する。 |
AF(Assured Forwarding) | 1桁目(1-4)で優先度、2桁目(1-3)で破棄レベルを表す値。優先度と破棄レベルの組み合わせを12段階で指定できるマーキング。 |
CS(Class Selector) | 先頭3ビットをIPPと同じ値にし、残り3ビットは全て0となる値。DSCPとIPPの互換用のマーキング。 |
DF(Default Forwarding) | 10進数で0(2進数では000000)の値。ベストエフォート用のマーキング。QoSによる優先処理を行わない。 |
信頼境界(Trust Boundary)
送られてきたパケットのDSCPやCoSの値の信頼する部分と信頼しない部分を区別する境界のこと。一般的に送信元に近いところに設定する。デフォルトのスイッチの設定では、受信したパケットの優先度は0となる。
アクセススイッチやIP電話が信頼境界の機器とするのが望ましい。
QoSツール
ポリシング
QoSツールの1つで、主にネットワークの入り口で実装される。
- 設定値や最低限保証されているCIR(Committed Information Rate:伝送速度)を超えて送受信されたパケットを破棄したり、優先度を変更したりする
- パケットを着信した際や発信する際に適用可能。損失発生の要因となるが、キューイングが行われないため遅延やジッタは発生しない。
- 一旦受け取ったうえでレートを超えたパケットに再マーキングしてレート超えのパケットであることを判定できるようにしておき、輻輳状態を検知したら再マーキングされたパケットを優先して破棄する
ジッタ(Jitter)とは??
遅延のゆらぎのこと。
シェーピング
ネットワークへデータを送信する側で実装される。指定した送出レートを超えないように、送出レートを超えるパケットをキューに保持し、送信可能になった時点で送信する。リアルタイムに送信されない場合があるため、遅延、ジッタ発生の要因となる。
- 帯域制御の役割を持つQoSツール
- 利用可能な最大送出レートをあらかじめ設定しておく
- 送出レートを超えるパケットをキューに保持する
IP SLA(Service Level Agreement)
パケットを生成してネットワークのパフォーマンスを監視/測定する機能のこと。通常のサーバをターゲットにすることも可能だが、IP SLAレスポンダ(ターゲットもIOSを搭載しIP SLAをサポートしているデバイス)を用意することで、測定精度が向上し、VoIPの遅延やジッタを測定することも可能になる。これらの機能により、IP SLAはQoSが十分働いているかの検証を行う際にも使われる。
キューイングとスケジューリング
-
キューイング
送信するパケットをキューと呼ばれる領域に並べていく。ソフトウェアキューに並べていき、マーキングで設定された優先度によって、どのソフトウェアキューに並べられるかが変わる。 -
スケジューリング
ソフトウェアキューに並んだパケットをどういった割合や順番でハードウェアキューに並べられるかを決定する。
キューイング、スケジューリングにはいくつかの方式がある。
FIFO(First in First Out)
デフォルトのキューイング方式で「先入先出」と訳される通り、パケットを到着した順番通りに送信する方式。
PQ(Priority Queuing)
優先度が異なるキューを4つ用意してキューイングする方式。High,Medium,Normal,Lowのパケットを振り分けられ、優先度の高いパケットを転送する。優先度の低いパケットは、優先度の高いパケットがなくなってから転送する。
一般的に音声パケットを割り当てることで、音声パケットの低遅延、低ジッタ、低損失を実現する(通話品質の向上)
CQ(Custom Queuing)
各キューに定義したバイト数ずつパケットを転送する方式。キューごとに転送できる最大バイト数を指定できる。
WFQ(Weighted Fair Queuing)
アプリケーションのフローごとにキューを自動的に作成し、どのキューからのパケットも転送されるようにしたキューイング方式。全てのキューが平等ではなく、キューごとに重みを付けて送信されるパケットの比率を変える。
CB-WFQ(Class-Based WFQ)
クラスごとにキューを割り当てる方式。ユーザーが定義したクラスごとにキューを割り当て、最低帯域幅の指定によって送信されるパケットの比率を変えられる。
LLQ(Low Latency Queuing)
PQとCBWFQの2つの特徴を併せ持つ方式。優先度の高いパケットを最優先で転送しながらも、優先度の低いパケットもある程度転送する。
輻輳の管理
輻輳とは、同時に大量の通信が届くなどの状況でネットワーク機器の処理が追い付かなくなり送受信が出来なくなる状況のこと。大量の通信が届いた際、送信されるパケットよりも受信するパケットが多くなってしまいキューに溜まってしまう。
輻輳管理を行うことで、輻輳が発生した場合でも重要な通信への影響を抑えることができる。そのために、以下の事を行う。
- 分類:QoS適用対象となるパケットを分類する
- マーキング:分類されたパケットに優先度識別用の印を付ける
- キューイング:パケットに付けられたマークを使って、それぞれの優先度に応じたキュー(パケットを溜めるバッファ)に格納する
- スケジューリング:各キューからデータを取り出して送信する
テールドロップ
キューが一杯になると以後到達するパケットは全て優先順位に関係なく破棄(ドロップ)されること。破棄されると、TCPの場合は送信量の抑制などが行われ、その通信を抑えている間にUDPのパケットに帯域を占められる現象や、TCPの通信が一斉に通信量を下げたりあげたりする現象が発生する。
RED(Random Early Detection)
ランダム早期検出と呼ばれ、キューが一杯になる前に少しずつパケットを破棄していく方式。ランダムに破棄するため、優先度の高いパケットも破棄される可能性がある。
WRED(Weighted Random Early Detection)
重みづけランダム早期検出と呼ばれ、REDと同じだがパケットの優先順位を考慮して破棄する。