Skip to main content

A tc command wrapper. Easy to set up traffic control of network bandwidth/latency/packet-loss/packet-corruption/etc. to a network-interface/Docker-container(veth).

Project description

tcconfig

Summary

A tc command wrapper. Easy to set up traffic control of network bandwidth/latency/packet-loss/packet-corruption/etc. to a network-interface/Docker-container(veth).

https://badge.fury.io/py/tcconfig.svg https://img.shields.io/pypi/pyversions/tcconfig.svg Linux CI test status GitHub repository

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 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)

docs/gif/tcset_example.gif

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 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

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 10 --delay-distro 2  --loss 0.01 --rate 0.25M --network 192.168.0.10 --port 8080
# tcset eth0 --delay 1 --loss 0.02 --rate 500K --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 in Debian/Ubuntu from a deb package

  1. wget https://github.com/thombashi/tcconfig/releases/download/<version>/tcconfig_<version>_amd64.deb

  2. 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

  • netifaces
    • Suppress excessive error messages if this package installed

Test dependencies

Documentation

https://tcconfig.rtfd.io/

Troubleshooting

https://tcconfig.rtfd.io/en/latest/pages/troubleshooting.html

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

tcconfig-0.20.3.tar.gz (52.9 kB view details)

Uploaded Source

Built Distribution

tcconfig-0.20.3-py2.py3-none-any.whl (51.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file tcconfig-0.20.3.tar.gz.

File metadata

  • Download URL: tcconfig-0.20.3.tar.gz
  • Upload date:
  • Size: 52.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5

File hashes

Hashes for tcconfig-0.20.3.tar.gz
Algorithm Hash digest
SHA256 5c0a2e3c5a38f2d44070a4bfe4ee578588a3977144fe8093030135d251c54775
MD5 63b7993d372ba92b2c8bd2f6858b3fb2
BLAKE2b-256 f1d19491a42387f0c7bd2e011de83efe5e2305084d3155711a70d653c33dcf57

See more details on using hashes here.

Provenance

File details

Details for the file tcconfig-0.20.3-py2.py3-none-any.whl.

File metadata

  • Download URL: tcconfig-0.20.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 51.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5

File hashes

Hashes for tcconfig-0.20.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9e93e278f1ac75ee222059ec46eb46d33c04d5bebe46a74808f4bcf88267f37b
MD5 0b91873aacdf5a898354d169c42560f0
BLAKE2b-256 db40160a067af28a2bf7116211471eff32e95aad2bc1da5e45ffb4ecc8f61fa8

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page