Abstract このドキュメントはLinuxにおいて帯域制限のためにtcを用いる際のガイドラインです。 tcは様々な用途に活用できるものですが、プロダクションにおいて特定のserver daemonのトラフィックを制限するというシナリオで活用することを目的としています。 tcのより詳しい詳細については別にドキュメントを書きましたのでそちらを参照してください。 よくわかるLinux帯域制限 Root qdiscの選定 帯域制限を行いたい場合のqdiscは主に以下のようになるでしょう。 TBF PRIO + 内部qdiscとしてTBF HTB それぞれ用途に合わせて適切なものがあるのですが、機能としてはHTBが前者2つの上位互換となるので、迷った場合にはHTBを使えば問題ありません。ということで以後HTBの設定について解説します。 class構造,トラフィックのclassify, filte
https://kernel.org/doc/Documentation/cgroups/net_cls.txt に書いてあるのを試した。 -------------------------------------------------- root@192.168.0.100 modprobe cls_cgroup mkdir /sys/fs/cgroup/net_cls mount -t cgroup -o net_cls aiueo /sys/fs/cgroup/net_cls mkdir /sys/fs/cgroup/net_cls/{apple,banana} echo 1647 > /sys/fs/cgroup/net_cls/apple/tasks # 1647 とは、別の端末で起動した bash プロセスの PID echo 1516 > /sys/fs/cgroup/ne
矢口です。 みなさんはLinuxのtcという機能をご存知でしょうか。送信するパケットの帯域制御を行うことができる大変強力な機能で、グリーでもいくつかの用途で使用されています。 具体的な事例の一つはRedisです。Redisではreplicationを新規に開始する際やfailoverが発生しmasterが切り替わった際(特に2.6系)にストアされている全データが転送されます。しかし帯域制限をかける機能がないため、ネットワーク帯域を圧迫してしまう危険性があります。また通常のクライアントとの通信でも大量のクエリにより予想以上の帯域を使用してしまう可能性があります。このような場合にtcを用いることでRedisの使用する帯域をコントロールできます。 このように有用なtcですが残念なことに日本語/英語ともにわかりやすい解説や詳細な情報は多くありません。 私も社内において使われていたtcの設定に問題が
* outboundなトラフィックの制御は割と簡単に制御できるんだけど、inboundなトラフィックはingressで書いてやってもなかなか思うような制限値になってくれません。 * そこで、ifb(Intermediate Functional Block device)を使うとよいようです * eth0に入ってくるトラフィックを50Mbpsに制限するスクリプト #!/bin/sh ### traffic shape for inbound eth0 ## Initialize tc qdisc del dev eth0 ingress handle ffff: > /dev/null 2>&1 tc qdisc del dev ifb0 root handle 1: htb > /dev/null 2>&1 ## ifb setup modprobe ifb sleep 2 ip lin
netem ( tcコマンド ) の基本的な使い方。 tc コマンドで、遅延、パケットロス、パケットの重複、パケットの到着順を変える、など模擬することができる。 遅延させ、WAN を模擬し、その時の、ネットワーク機器(フローテーブルをためたときの挙動)や、SLA(遅延が xx秒だとユーザ逃げちゃうだろうな)などのテストができそう。 あと、パケットの到着順をかえたときに、ロードバランサやFirewall が、処理できるか確認してみるとか。 ・delay : outgoing に対して delay を設定 ( WANエミュレーション ) 100ms の delay をかける。 [root@hat1-vm ~]# tc qdisc add dev eth0 root netem delay 100ms [root@hat1-vm ~]# tc qdisc show dev eth0 qdisc
Limiting KVM guest network bandwidth (tc and cgroup) 1 Notify guests bridge(br0) are linked with cgroup. # tc qdisc del dev br0 root # tc qdisc add dev br0 root handle 10: htb # tc filter add dev br0 parent 10: protocol ip prio 10 handle 1: cgroup 2 Define Limiting bandwidth with traffic class. # tc class add dev br0 parent 10: classid 10:1 htb rate 24Mbit # tc class add dev br0 parent 10: c
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く