発信帯域を制限できる。
NICのスピード変更(ethtool)では、NIC自体のスピードを変更できる。
bitで指定
tc qdisc add dev eth0 root tbf limit 15Kb buffer 10Kb/8 rate 10Mbit
tc qdisc show qdisc tbf 8002: dev eth0 rate 50000Kbit burst 10Kb lat 819us
tc qdisc delete dev eth0 root tbf
bpsでも指定できる。
tc qdisc add dev eth0 root tbf limit 15Kb buffer 10Kb/8 rate 10Mbps tc qdisc show qdisc tbf 8004: dev eth0 rate 80000Kbit burst 10Kb lat 512us
30MBitに変更制限する場合
tc qdisc change dev rkm5w03y7gq3pv root tbf rate 30mbit latency 50ms burst 1mb [root@hv9142 ~]# tc qdisc | grep rkm5w03y7gq3pv qdisc tbf 8018: dev rkm5w03y7gq3pv rate 30000Kbit burst 1024Kb lat 50.0ms
tc は/proc/net/devで見た時のTransmit(アウトバウンド)にしかかからない。
※HV上から仮想インターフェースにtcを書ける場合、仮想インターフェースのTransmit(VMからみるとインバウンド)にかけることになる。
# i=bond0 # while : ; do _T1=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); \ > sleep 1; _T2=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); \ > echo "$(expr \( \( $_T2 - $_T1 \) \* 8 \) \/ 1024 ) kbps"; done 14 kbps 5 kbps 47177 kbps 204251 kbps 204287 kbps 204298 kbps 204369 kbps 204417 kbps 138687 kbps
# tc qdisc add dev bond0 root tbf rate 10mbit latency 50ms burst 1mb mtu 33000 # tc qdisc | grep bond0 qdisc tbf 800a: dev bond0 rate 10000Kbit burst 1024Kb lat 50.0ms # i=bond0 # while : ; do _T1=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); sleep 1; _T2=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); echo "$(expr \( \( $_T2 - $_T1 \) \* 8 \) \/ 1024 ) kbps"; done 11572 kbps 11590 kbps 11579 kbps 11566 kbps 11578 kbps 11566 kbps 11566 kbps
# i=nxiort3mfzk3mq # while : ; do _T1=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); sleep 1; _T2=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); echo "$(expr \( \( $_T2 - $_T1 \) \* 8 \) \/ 1024 ) kbps"; done 98837 kbps 98661 kbps 98789 kbps 98711 kbps 98765 kbps 98666 kbps 98790 kbps 98779 kbps 98708 kbps 98803 kbps 98660 kbps
tc qdisc change dev nxiort3mfzk3mq root tbf rate 100mbit latency 50ms burst 1mb mtu 33000 # i=nxiort3mfzk3mq # while : ; do _T1=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); sleep 1; _T2=$( grep $i: /proc/net/dev | cut -d: -f 2|awk '{print $9}'); echo "$(expr \( \( $_T2 - $_T1 \) \* 8 \) \/ 1024 ) kbps"; done 1157 kbps 1157 kbps 1157 kbps 1157 kbps 1157 kbps 1157 kbps 1162 kbps