Skip to content

ttavi21/tcconfig

 
 

Repository files navigation

tcconfig

Linux CI test status

GitHub repository

Table of Contents

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.

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

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

For more information

More examples are available at http://tcconfig.rtfd.io/en/latest/pages/usage/index.html

Installation

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

sudo pip install tcconfig

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.17.1/tcconfig_0.17.1_amd64.deb
$ sudo dpkg -i tcconfig_0.17.1_amd64.deb

Installing from files

The following package includes 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

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

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.1%
  • Shell 0.9%