Table of Contents
A Simple tc command wrapper tool. Easy to set up traffic control of network bandwidth/latency/packet loss/packet-corruption to a network interface.
Apply traffic shaping rules to specific targets:
- Outgoing/Incoming packets
- Source/Destination IP-address/network (IPv4/IPv6)
- Source/Destination ports
Moreover, exclude from shaping rules from specific targets:
- Source/Destination IP-address/network (IPv4/IPv6)
- Source/Destination ports
The following parameters can set to network interfaces:
- Network bandwidth rate
[G/M/K bps]
- Network latency
[microseconds/milliseconds/seconds/minutes]
- Packet loss rate
[%]
- Packet corruption rate
[%]
- Packet duplicate rate
[%]
- Packet reordering rate
[%]
tcset
is a command to add traffic control rule to a network interface (device).
# tcset --device eth0 --rate 100k
You can use time units (such as us/sec/min/etc.) to designate delay time.
# tcset --device eth0 --delay 100ms
# tcset --device eth0 --delay 10sec
# tcset --device eth0 --delay 0.5min
# tcset --device eth0 --loss 0.1
# tcset --device eth0 --rate 100k --delay 100 --loss 0.1
# tcset --device eth0 --delay 100 --network 192.168.0.10
# tcset --device eth0 --delay 100 --network 192.168.0.0/24 --port 80
tcdel
is a command to delete traffic shaping rules from a network interface (device).
You can delete all of the shaping rules for the eth0
with -a
/--all
option:
# tcdel --device eth0 --all
tcshow
is a command to display the current traffic control settings for network interface(s).
# tcset --device eth0 --delay 10 --delay-distro 2 --loss 0.01 --rate 0.25M --network 192.168.0.10 --port 8080
# tcset --device eth0 --delay 1 --loss 0.02 --rate 500K --direction incoming
# tcshow --device eth0
{
"eth0": {
"outgoing": {
"dst-network=192.168.0.10/32, dst-port=8080": {
"delay": "10.0",
"loss": "0.01",
"rate": "250K",
"delay-distro": "2.0"
},
"dst-network=0.0.0.0/0": {}
},
"incoming": {
"dst-network=0.0.0.0/0": {
"delay": "1.0",
"loss": "0.02",
"rate": "500K"
}
}
}
}
More examples are available at http://tcconfig.rtfd.io/en/latest/pages/usage/index.html
tcconfig
can be installed from PyPI via pip (Python package manager) command.
sudo pip install tcconfig
wget https://github.com/thombashi/tcconfig/releases/download/<version>/tcconfig_<version>_amd64.deb
dpkg -iv tcconfig_<version>_amd64.deb
- Example
$ wget https://github.com/thombashi/tcconfig/releases/download/v0.17.1/tcconfig_0.17.1_amd64.deb $ sudo dpkg -i tcconfig_0.17.1_amd64.deb
The following package includes tcconfig
and dependency packages. This package is for environments which cannot access to PyPI directly.
How to install:
- Navigate to
https://github.com/thombashi/tcconfig/releases/
- Download the latest version of
tcconfig_wheel.tar.gz
- Copy
tcconfig_wheel.tar.gz
to installation target tar xvf tcconfig_wheel.tar.gz
cd tcconfig_wheel/
./install.sh
Python 2.7+ or 3.4+
- mandatory: required for
tc
command: - ubuntu/`debian`:
iproute2
- fedora/`RHEL`:
iproute-tc
- ubuntu/`debian`:
- mandatory: required for
- optional: required to when you use
--iptables
option: iptables
- optional: required to when you use
sch_netem
Dependency python packages are automatically installed during tcconfig
installation via pip.
- netifaces
- Suppress excessive error messages if this package installed
http://tcconfig.readthedocs.io/en/latest/pages/troubleshooting.html