A Simple tc command wrapper tool. Easy to set up traffic control of network bandwidth/latency/packet-loss to a network interface.
Project description
tcconfig
Summary
A Simple tc command wrapper tool. Easy to set up traffic control of network bandwidth/latency/packet-loss to a network interface.
Traffic control features
Network
Traffic control can be specified network to apply to:
Outgoing/Incoming packets
Certain IP address/network and port
Available parameters
The following parameters can be set to network interfaces.
Network bandwidth rate [G/M/K bps]
Network latency [milliseconds]
Packet loss rate [%]
Packet corruption rate [%]
Usage
Set traffic control (tcset command)
tcset is a command to impose traffic control to a network interface (device).
e.g. Set a limit on bandwidth up to 100Kbps
# tcset --device eth0 --rate 100k
e.g. Set 100ms network latency
# tcset --device eth0 --delay 100
e.g. Set 0.1% packet loss
# tcset --device eth0 --loss 0.1
e.g. All of the above at once
# tcset --device eth0 --rate 100k --delay 100 --loss 0.1
e.g. Specify the IP address of traffic control
# tcset --device eth0 --delay 100 --network 192.168.0.10
e.g. Specify the IP network and port of traffic control
# tcset --device eth0 --delay 100 --network 192.168.0.0/24 --port 80
Delete traffic control (tcdel command)
tcdel is a command to delete traffic control from a network interface (device).
e.g. Delete traffic control of eth0
# tcdel --device eth0
Display traffic control configurations (tcshow command)
tcshow is a command to display traffic control to network interface(s).
Example
# 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": {
"network=192.168.0.10/32, port=8080": {
"delay": "10.0",
"loss": "0.01",
"rate": "250K",
"delay-distro": "2.0"
},
"network=0.0.0.0/0": {}
},
"incoming": {
"network=0.0.0.0/0": {
"delay": "1.0",
"loss": "0.02",
"rate": "500K"
}
}
}
}
For more information
More examples are available at http://tcconfig.rtfd.io/en/latest/pages/usage/index.html
Installation
Install via pip
tcconfig can be installed via pip (Python package manager).
sudo pip install tcconfig
Dependencies
Linux packages
iproute2 (required for tc command)
Linux kernel module
sch_netem
Python packages
Dependency python packages are automatically installed during tcconfig installation via pip.
Optional
- netifaces
Suppress excessive error messages if this package is installed
Test dependencies
Documentation
Troubleshooting
Phenomenon
tcset command failed with an error message RTNETLINK answers: No such file or directory.
Cause and counter measures
The cause of this error is sch_netem kernel module is not loaded in your system. Execute the following command to solve this problem:
# modprobe sch_netem
The command is loading the sch_netem module. If the command failed with below message, you need to install additional kernel module.
# modprobe: FATAL: Module sch_netem not found in directory /lib/modules/xxxxxx
Execute the following command to install kernel modules (includes the sch_netem module).
# dnf install kernel-modules-extra
(in the case of RHEL/CentOS/Fedora). After that, re-execute modprobe sch_netem command.
# modprobe sch_netem
#
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for tcconfig-0.7.0a4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8706833a0bbbb482f8e01d41d66953adfad6ab77ac6582dfbd6a6e04a8b0db2a |
|
MD5 | 69156972650879bc4e9dde1b0b66eab9 |
|
BLAKE2b-256 | cf5e2c366f90e021046524a86c1c20d902959f342b94b2d5c8a8365d16d731c9 |