# tcconfig **Repository Path**: iliangwei/tcconfig ## Basic Information - **Project Name**: tcconfig - **Description**: A simple tc command wrapper tool. Easy to setup traffic control of network bandwidth/latency/packet-loss/packet-corruption to network interfaces. - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README **tcconfig** .. contents:: Table of Contents :depth: 2 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. .. image:: https://travis-ci.org/thombashi/tcconfig.svg?branch=master :target: https://travis-ci.org/thombashi/tcconfig :alt: Linux CI test status .. image:: https://img.shields.io/github/stars/thombashi/tcconfig.svg?style=social&label=Star :target: https://github.com/thombashi/tcconfig :alt: 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 ``[%]`` .. image:: 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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console # 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 ''''''''''''''''''''''''''''''''''''''''''''''''''' .. code-block:: console # tcset --device eth0 --delay 100ms Set 10 seconds network latency ''''''''''''''''''''''''''''''''''''''''''''''''''' .. code-block:: console # tcset --device eth0 --delay 10sec Set 0.5 minutes (30 seconds) network latency ''''''''''''''''''''''''''''''''''''''''''''''''''' .. code-block:: console # tcset --device eth0 --delay 0.5min e.g. Set 0.1% packet loss ^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console # tcset --device eth0 --loss 0.1 e.g. All of the above at once ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console # tcset --device eth0 --rate 100k --delay 100 --loss 0.1 e.g. Specify the IP address of traffic control ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console # tcset --device eth0 --delay 100 --network 192.168.0.10 e.g. Specify the IP network and port of traffic control ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console # 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: .. code-block:: console # 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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console # 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 ============ Install via pip (recommended) ------------------------------ ``tcconfig`` can be installed from `PyPI `__ via `pip `__ (Python package manager) command. .. code:: console sudo pip install tcconfig Install in Debian/Ubuntu from a deb package -------------------------------------------- #. ``wget https://github.com/thombashi/tcconfig/releases/download//tcconfig__amd64.deb`` #. ``dpkg -iv tcconfig__amd64.deb`` :Example: .. code:: console $ 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. - `DataPropery `__ - `ipaddress `__ - `logbook `__ - `msgfy `__ - `pyparsing `__ - `six `__ - `subprocrunner `__ - `typepy `__ - `voluptuous `__ Optional Python packages ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - `netifaces `__ - Suppress excessive error messages if this package installed Test dependencies ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - `allpairspy `__ - `pingparsing `__ - `pytest `__ - `pytest-runner `__ - `tox `__ Documentation =============== http://tcconfig.rtfd.io/ Troubleshooting ================= http://tcconfig.readthedocs.io/en/latest/pages/troubleshooting.html