Skip to main content

A Simple tc command wrapper tool. Easy to set up traffic control of network bandwidth/latency/packet loss/packet-corruption 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/packet-corruption to a network interface.

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

Traffic control features

Traffic shaping target

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

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 [%]

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

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

e.g. Set 0.1% packet loss

# tcset eth0 --loss 0.1

e.g. All of the above at once

# tcset eth0 --rate 100k --delay 100 --loss 0.1

e.g. Specify the IP address of traffic control

# tcset eth0 --delay 100 --network 192.168.0.10

e.g. Specify the IP network and port of traffic control

# tcset eth0 --delay 100 --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": {
                "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"
            }
        }
    }
}

For more information

More examples are available at http://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.18.2/tcconfig_0.18.2_amd64.deb
$ sudo dpkg -i tcconfig_0.18.2_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

http://tcconfig.rtfd.io/

Troubleshooting

http://tcconfig.readthedocs.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.19.0.tar.gz (49.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tcconfig-0.19.0-py2.py3-none-any.whl (47.1 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: tcconfig-0.19.0.tar.gz
  • Upload date:
  • Size: 49.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for tcconfig-0.19.0.tar.gz
Algorithm Hash digest
SHA256 a67fdba12d3cb4245f6f7d8ea81ac0cea0cfa3c7d5687d73adb13e1d61241170
MD5 e0efeceaa52b530cc9f4ca74f73c95a8
BLAKE2b-256 ad01f34bbf63aeac6163dcf9022ea5e2681bda2fd7c499a2e2296eb23502a03c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tcconfig-0.19.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 89fe0407da97111bbc88f1f02adee424128301e2de108c4ad9a8908a5583ff26
MD5 4b5d277c2e6287790ffada08e3604aaf
BLAKE2b-256 00adb9b705ce178a18cf416f040979aea3b6171e095134ad8e3327e96043d899

See more details on using hashes here.

Supported by

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