====== tcで帯域制限(htb) ====== class構造の制限を用意して、条件を設定し帯域制限する事ができるclassful qdiscにHTB ===== インバウンド ===== この部分で、仮想インターフェース(tlhdj20bhophy4)のtransfer(VMから見るとインバウンド)に制限がかかります。 # tc qdisc add dev tlhdj20bhophy4 root tbf rate 50mbit latency 50ms burst 1mb mtu 33000 ===== アウトバウンド ===== この部分で、bond1からアウトバウンドに制限をかけている。 Running: tc qdisc add dev bond1 root handle 1 htb Running: tc class add dev bond1 parent 1: classid 1:5 htb rate 50Mbit ceil 50Mbit mtu 33000 Running: tc filter add dev bond1 protocol ip parent 1:0 prio 1 handle 5 fw flowid 1:5 ===== 削除 ===== # tc qdisc del dev tlhdj20bhophy4 root ==== 1. CLASS ==== bond1のhtb class 1:5に制限を用意 # tc -s class show dev bond1 class htb 1:5 root prio 0 rate 5000Kbit ceil 5000Kbit burst 33625b cburst 33625b Sent 112955642 bytes 77814 pkt (dropped 615983, overlimits 0 requeues 0) rate 32bit 0pps backlog 0b 0p requeues 0 lended: 78024 borrowed: 0 giants: 0 tokens: 53800 ctokens: 53800 ==== 2. FILTER ==== bond1のフィルターにfwmark 0x5 のトラフィックをcalss 1:5に飛ばす # tc -s filter show dev bond1 filter parent 1: protocol ip pref 1 fw filter parent 1: protocol ip pref 1 fw handle 0x5 classid 1:5 [[https://linuxjf.osdn.jp/JFdocs/Adv-Routing-HOWTO/lartc.qdisc.filters.html|フィルタについて]] ==== 3. IPTABLES ==== 該当のインターフェース(tlhdj20bhophy4)からのパケットに対して0x5のマークを点ける # iptables -L FORWARD -nv -t mangle iptables -A FORWARD -t mangle -m physdev --physdev-in 'tlhdj20bhophy4' -j MARK --set-mark 5 Chain FORWARD (policy ACCEPT 7790K packets, 4496M bytes) pkts bytes target prot opt in out source destination 694K 1035M MARK all -- * * 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in tlhdj20bhophy4 MARK set 0x5 0 0 MARK all -- * * 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-in c29k8sh2hyvosi MARK set 0x5 [[http://labs.gree.jp/blog/2014/10/11288/|参考サイト]] [[http://labs.gree.jp/blog/2014/10/11266/|参考サイト]] {{tag>network}}