tcconfig
Summary
A tc command wrapper. Make it easy to set up traffic control of network bandwidth/latency/packet-loss/packet-corruption/etc. to a network-interface/Docker-container(veth).
Traffic control
Setup traffic shaping rules
Easy to apply traffic shaping rules to specific network:
Outgoing/Incoming packets
Source/Destination IP-address/network (IPv4/IPv6)
Source/Destination ports
Available parameters
The following parameters can be 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 [%]
Targets
Network interfaces: e.g. eth0
Docker container (veth corresponding with a container)
Usage
Set traffic control (tcset command)
tcset is a command to add traffic control rule to a network interface (device).
e.g. Set a limit on bandwidth up to 100Kbps
# tcset eth0 --rate 100Kbps
e.g. Set network latency
You can use time units (such as us/sec/min/etc.) to designate delay time.
Set 100 milliseconds network latency
# tcset eth0 --delay 100ms
Set 10 seconds network latency
# tcset eth0 --delay 10sec
Set 0.5 minutes (30 seconds) network latency
# tcset eth0 --delay 0.5min
You can also use the following time units:
m/min/mins/minute/minutes
s/sec/secs/second/seconds
ms/msec/msecs/millisecond/milliseconds
us/usec/usecs/microsecond/microseconds
e.g. Set 0.1% packet loss
# tcset eth0 --loss 0.1%
e.g. All of the above settings at once
# tcset eth0 --rate 100Kbps --delay 100ms --loss 0.1%
e.g. Specify the IP address of traffic control
# tcset eth0 --delay 100ms --network 192.168.0.10
e.g. Specify the IP network and port of traffic control
# tcset eth0 --delay 100ms --network 192.168.0.0/24 --port 80
Set traffic control to a docker container
Execute tcconfig with --docker option on a Docker host:
# tcset <container name or ID> --docker ...
You could use --src-container/--dst-container options to specify source/destination container.
Set traffic control within a docker container
You need to run a container with --cap-add NET_ADMIN option if you you would like to set a tc rule within a container:
docker run -d --cap-add NET_ADMIN -t <docker image>
A container image that builtin tcconfig can be available at https://hub.docker.com/r/thombashi/tcconfig/
Delete traffic control (tcdel command)
tcdel is a command to delete traffic shaping rules from a network interface (device).
e.g. Delete traffic control of eth0
You can delete all of the shaping rules for the eth0 with -a/--all option:
# tcdel eth0 --all
Display traffic control configurations (tcshow command)
tcshow is a command to display the current traffic control settings for network interface(s).
Example
# tcset eth0 --delay 10ms --delay-distro 2 --loss 0.01% --rate 0.25Mbps --network 192.168.0.10 --port 8080
# tcset eth0 --delay 1ms --loss 0.02% --rate 500Kbps --direction incoming
# tcshow eth0
{
"eth0": {
"outgoing": {
"dst-network=192.168.0.10/32, dst-port=8080, protocol=ip": {
"filter_id": "800::800",
"delay": "10.0ms",
"delay-distro": "2.0ms",
"loss": "0.01%",
"rate": "250Kbps"
}
},
"incoming": {
"protocol=ip": {
"filter_id": "800::800",
"delay": "1.0ms",
"loss": "0.02%",
"rate": "500Kbps"
}
}
}
}
For more information
More examples are available at https://tcconfig.rtfd.io/en/latest/pages/usage/index.html
Installation
Install via pip (recommended)
tcconfig can be installed from PyPI via pip (Python package manager) command.
sudo pip install tcconfig
Install in Debian/Ubuntu from a deb package
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.19.0/tcconfig_0.19.0_amd64.deb $ sudo dpkg -i tcconfig_0.19.0_amd64.deb
Dependencies
Python 2.7+ or 3.4+
Linux packages
- mandatory: required for tc command:
Ubuntu/Debian: iproute2
Fedora/RHEL: iproute-tc
- optional: required to when you use --iptables option:
iptables
Linux kernel module
sch_netem
Python packages
Dependency python packages are automatically installed during tcconfig installation via pip.
Optional Python packages
Test dependencies
Documentation
Troubleshooting
https://tcconfig.rtfd.io/en/latest/pages/troubleshooting.html
Docker image
Metadata
Release files for tcconfig 0.21.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tcconfig-0.21.2.tar.gz | 54.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tcconfig-0.21.2-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 107.8 kB
Release files / tcconfig-0.21.2.tar.gz
| Download URL | tcconfig-0.21.2.tar.gz |
|---|---|
| Size | 54.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8aef7a2d293baaf43206fba4616c5d39ef0c0056fc9ab2db9fdf4ecf838683d5
|
|
BLAKE2b-256 checksum How to use checksums |
d7d2baef70fc0cc43ffec30ccbacb4c9504c55ab8b3852f83111c918bb91ef9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.5
|
Release files / tcconfig-0.21.2-py2.py3-none-any.whl
| Download URL | tcconfig-0.21.2-py2.py3-none-any.whl |
|---|---|
| Size | 53.2 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
127e4f1f32c4f80fcf668a423dc329f0d18764c7bcc6d24e9b133a26670728a6
|
|
BLAKE2b-256 checksum How to use checksums |
bd354ef7884fd32b4f1f8ea492c789186f92a8e1dc0e10733677256a13f019cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.5
|