Skip to main content

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

https://img.shields.io/pypi/pyversions/tcconfig.svg https://travis-ci.org/thombashi/tcconfig.svg?branch=master

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 [%]
docs/gif/tcset_example.gif

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

http://tcconfig.rtfd.io/

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.

Files for tcconfig, version 0.7.0a4
Filename, size File type Python version Upload date Hashes
Filename, size tcconfig-0.7.0a4-py2.py3-none-any.whl (27.8 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size tcconfig-0.7.0a4.tar.gz (26.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page