Help us understand the problem. What is going on with this article?

ある特定のportだけ外部に出るトラフィックの帯域を制限する

More than 1 year has passed since last update.

目標

あるポートで、外に出るトラフィックのみ帯域制限する

解決策

# DEV=<device>
DEV=eth0
# sudo tc qdisc del dev $DEV root
sudo tc qdisc add dev $DEV root handle 1: htb default 20
sudo tc class add dev $DEV parent 1: classid 1:1 htb rate 1000Mbit ceil 1000Mbit burst 10Mb cburst 10Mb
sudo tc class add dev $DEV parent 1:1 classid 1:10 htb rate 1Kbit ceil 1Kbit burst 1Kb cburst 1Kb
sudo tc class add dev $DEV parent 1:1 classid 1:20 htb rate 800Mbit ceil 1000Mbit burst 10Mb cburst 10Mb
sudo tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip dport 5044 0xffff flowid 1:10

解説

Deviceを環境変数に入れておく

DEV=eth0

qdisc(がある場合は)消す

sudo tc qdisc del dev $DEV root

qdiscを追加

sudo tc qdisc add dev $DEV root handle 1: htb default 20

classを追加 (ここで帯域制限のルールを書く)。3つある理由は、一番上がデフォルト、以下でセットするfilterに引っかかる場合を2番目に、3番目は、それ以外という感じでTree構造になってるため。今回は、2行目が大事。

sudo tc class add dev $DEV parent 1: classid 1:1 htb rate 1000Mbit ceil 1000Mbit burst 10Mb cburst 10Mb
sudo tc class add dev $DEV parent 1:1 classid 1:10 htb rate 1Kbit ceil 1Kbit burst 1Kb cburst 1Kb
sudo tc class add dev $DEV parent 1:1 classid 1:20 htb rate 800Mbit ceil 1000Mbit burst 10Mb cburst 10Mb

filterの設定 dport 5044 部分でポート番号を指定

sudo tc filter add dev $DEV protocol ip parent 1:0 prio 1 u32 match ip dport 5044 0xffff flowid 1:10

上記説明は、結構適当で詳細は http://labs.gree.jp/blog/2014/10/11266/ を参考に。こちらの説明が素晴らしい!

おまけ

traffic関係で使ったコマンド

iftop
gymnstcs
東大広域システム→吉林大学修士&3idea Web開発データ解析→bytedanceレコメンドエンジニア→beBitエンジニア。趣味: データ解析, 言語:Python, Ruby, C++, Java, 技術: k8s, terraform, Kafka, Athena, (Hadoop, Spark, Storm, Flink, Hive)
bebit
ユーザ視点からの価値創出を追求するエクスペリエンス・デザイン・パートナー
https://www.bebit.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした