シェーピング
送信するパケットをバッファにためて、送り出す間隔を調整することで、規定された最大速度を超えないようにトラフィックを平準化するQoSの制御。
イマシルちゃんの解説
シェーピングは、パケットを送るタイミングを調整して、通信の流れを設定した速度に合わせる制御だよ。
たとえば契約した回線の速度より速く送り続けると、途中でパケットが捨てられることがあるんだ。
そこで、今は送れない分を一時的な保存領域のバッファで待たせて、送れるタイミングになってから送り出すの。
少し待ち時間は増えるけれど、急に集中した通信をならして、契約した条件に合わせやすくなるよ。
この解説はわかりやすかったですか?
より深い解説
定義
シェーピングは、送信側の機器で、出ていくトラフィックの速度を監視し、規定の速度(契約した帯域など)を超える分を、すぐには送らずにキューにためておき、後から送り出す制御である。トラフィックの山をならして、規定の速度以下の、なめらかな流れに整える。
ポリシングとの比較
| シェーピング | ポリシング | |
|---|---|---|
| 超えた分の扱い | バッファにためて、後で送る | 破棄する、または優先度を下げる |
| パケットの損失 | 少ない(バッファがあふれない限り) | 多い |
| 遅延 | 増える(待たされる) | 増えない |
| 主に使う場所 | 送信側(出口)。回線を契約した速度に合わせる | 受信側(入口)。通信事業者が契約を超える分を制限する |
| トラフィックの形 | なめらかになる | 上限で切り取られたような形になる |
使われる場面
- 拠点のルータで、広域イーサネットなどの契約帯域(例:物理は1Gbit/s、契約は100Mbit/s)に合わせて送信する。契約を超えて送ると、通信事業者側のポリシングで捨てられてしまうため、手前でシェーピングしておく
- 特定のアプリケーションの通信が、回線の帯域を使い切らないように抑える
トークンバケット
シェーピングやポリシングで、速度を測る仕組みとしてよく使われる。
- バケツに、一定の速度でトークンがたまっていく(バケツの大きさに上限がある)
- パケットを送るときは、その大きさ分のトークンを使う
- トークンが足りないとき、シェーピングはパケットを待たせ、ポリシングはパケットを捨てる(または優先度を下げる)
バケツにたまったトークンの分だけ、短い時間なら規定の速度を超えて送れる(バースト)。