Skip to content

olivierh59500/tcconfig

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tcconfig

image

image

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

Network

Traffic control can be specified network to apply to:

  • Outgoing/Incoming packets
  • Certain IP address/network and 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 impose traffic control 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 control 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": {
            "network=192.168.0.10/32, port=8080": {
                "delay": "10.0",
                "loss": "0.01",
                "rate": "250K",
                "delay-distro": "2.0"
            },
            "network=0.0.0.0/0": {}
        },
        "incoming": {
            "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 via pip

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

sudo pip install tcconfig

Dependencies

Linux packages

  • iproute2 (required for tc command)

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

Phenomenon

tcset command failed with an error message RTNETLINK answers: No such file or directory.

Cause and counter measures

The cause of this error is sch_netem kernel module is not loaded in your system. Execute the following command to solve this problem:

# modprobe sch_netem

The command is loading the sch_netem module. If the command failed with below message, you need to install additional kernel module.

# modprobe: FATAL: Module sch_netem not found in directory /lib/modules/xxxxxx

Execute the following command to install kernel modules (includes the sch_netem module).

# dnf install kernel-modules-extra

(in the case of RHEL/CentOS/Fedora). After that, re-execute modprobe sch_netem command.

# modprobe sch_netem
#

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