Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

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.

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 --device 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 --device eth0 --delay 100ms
Set 10 seconds network latency
# tcset --device eth0 --delay 10sec
Set 0.5 minutes (30 seconds) network latency
# tcset --device eth0 --delay 0.5min

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 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 --device 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 --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": {
            "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"
            }
        }
    }
}

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

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

Project details


Release history Release notifications

This version
History Node

0.18.2

History Node

0.18.1

History Node

0.18.0

History Node

0.17.3

History Node

0.17.2

History Node

0.17.1

History Node

0.17.0

History Node

0.16.2

History Node

0.16.1

History Node

0.16.0

History Node

0.15.0

History Node

0.14.1

History Node

0.14.0

History Node

0.13.2

History Node

0.13.1

History Node

0.13.0

History Node

0.12.2

History Node

0.12.1

History Node

0.12.0

History Node

0.11.0

History Node

0.10.1

History Node

0.10.0

History Node

0.9.0

History Node

0.8.0

History Node

0.7.2

History Node

0.7.1

History Node

0.7.1a0

History Node

0.7.0

History Node

0.7.0a4

History Node

0.7.0a3

History Node

0.7.0a2

History Node

0.7.0a1

History Node

0.7.0a0

History Node

0.6.6

History Node

0.6.5

History Node

0.6.4

History Node

0.6.3

History Node

0.6.2

History Node

0.6.1

History Node

0.6.0

History Node

0.5.0

History Node

0.4.0

History Node

0.3.0

History Node

0.2.0

History Node

0.1.4

History Node

0.1.3

History Node

0.1.2

History Node

0.1.1

History Node

0.1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
tcconfig-0.18.2-py2.py3-none-any.whl (45.8 kB) Copy SHA256 hash SHA256 Wheel py2.py3 May 4, 2018
tcconfig-0.18.2.tar.gz (47.7 kB) Copy SHA256 hash SHA256 Source None May 4, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page