Skip to content

A simple tc command wrapper tool. Easy to setup traffic control of network bandwidth/latency/packet-loss/packet-corruption to network interfaces.

License

Notifications You must be signed in to change notification settings

songofhack/tcconfig

 
 

Repository files navigation

tcconfig

image

Linux CI test status

GitHub repository

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

Traffic shaping target

Apply traffic shaping rules to specific target:

  • Outgoing/Incoming packets
  • Certain IP address/network or 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 [%]

image

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 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 shaping rules 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": {
            "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

Installing from PyPI

tcconfig can be installed from PyPI via pip (Python package manager) command.

sudo pip install tcconfig

Installing from files

The following package include tcconfig and dependency packages. This package is for environments which cannot access to PyPI directly.

How to install:

  1. Navigate to https://github.com/thombashi/tcconfig/releases/
  2. Download the latest version of tcconfig_wheel.tar.gz
  3. Copy tcconfig_wheel.tar.gz to installation target
  4. tar xvf tcconfig_wheel.tar.gz
  5. cd tcconfig_wheel/
  6. ./install.sh

Dependencies

Linux packages

  • iproute/iproute2 (mandatory: required for tc command)
  • iptables (optional: required to when you use --iptables option)

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

http://tcconfig.readthedocs.io/en/latest/pages/troubleshooting.html

About

A simple tc command wrapper tool. Easy to setup traffic control of network bandwidth/latency/packet-loss/packet-corruption to network interfaces.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.5%
  • Shell 0.5%