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