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
Home-page: https://github.com/thombashi/tcconfig
Author: Tsuyoshi Hombashi
Author-email: tsuyoshi.hombashi@gmail.com
License: MIT License
Description-Content-Type: UNKNOWN
Description: tcconfig
==========
.. 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
.. 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.
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 <https://pypi.python.org/pypi>`__ via
`pip <https://pip.pypa.io/en/stable/installing/>`__ (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/<version>/tcconfig_<version>_amd64.deb``
#. ``dpkg -iv tcconfig_<version>_amd64.deb``
:Example:
.. code:: console
$ 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 <https://pypi.python.org/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
--------------
- ``iproute``/``iproute2``/``iproute-tc`` (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.
- `DataPropery <https://github.com/thombashi/DataProperty>`__
- `ipaddress <https://pypi.python.org/pypi/ipaddress>`__
- `logbook <http://logbook.readthedocs.io/en/stable/>`__
- `pyparsing <https://pyparsing.wikispaces.com/>`__
- `six <https://pypi.python.org/pypi/six/>`__
- `subprocrunner <https://github.com/thombashi/subprocrunner>`__
- `typepy <https://github.com/thombashi/typepy>`__
- `voluptuous <https://github.com/alecthomas/voluptuous>`__
Optional
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `netifaces <https://bitbucket.org/al45tair/netifaces>`__
- Suppress excessive error messages if this package installed
Test dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `allpairspy <https://github.com/thombashi/allpairspy>`__
- `pingparsing <https://github.com/thombashi/pingparsing>`__
- `pytest <http://pytest.org/latest/>`__
- `pytest-runner <https://pypi.python.org/pypi/pytest-runner>`__
- `tox <https://testrun.org/tox/latest/>`__
Documentation
===============
http://tcconfig.rtfd.io/
Troubleshooting
=================
http://tcconfig.readthedocs.io/en/latest/pages/troubleshooting.html
Keywords: traffic control,tc,traffic shaping,bandwidth,latency,packet loss
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: System :: Networking
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*
Author: Tsuyoshi Hombashi
Author-email: tsuyoshi.hombashi@gmail.com
License: MIT License
Description-Content-Type: UNKNOWN
Description: tcconfig
==========
.. 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
.. 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.
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 <https://pypi.python.org/pypi>`__ via
`pip <https://pip.pypa.io/en/stable/installing/>`__ (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/<version>/tcconfig_<version>_amd64.deb``
#. ``dpkg -iv tcconfig_<version>_amd64.deb``
:Example:
.. code:: console
$ 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 <https://pypi.python.org/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
--------------
- ``iproute``/``iproute2``/``iproute-tc`` (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.
- `DataPropery <https://github.com/thombashi/DataProperty>`__
- `ipaddress <https://pypi.python.org/pypi/ipaddress>`__
- `logbook <http://logbook.readthedocs.io/en/stable/>`__
- `pyparsing <https://pyparsing.wikispaces.com/>`__
- `six <https://pypi.python.org/pypi/six/>`__
- `subprocrunner <https://github.com/thombashi/subprocrunner>`__
- `typepy <https://github.com/thombashi/typepy>`__
- `voluptuous <https://github.com/alecthomas/voluptuous>`__
Optional
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `netifaces <https://bitbucket.org/al45tair/netifaces>`__
- Suppress excessive error messages if this package installed
Test dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `allpairspy <https://github.com/thombashi/allpairspy>`__
- `pingparsing <https://github.com/thombashi/pingparsing>`__
- `pytest <http://pytest.org/latest/>`__
- `pytest-runner <https://pypi.python.org/pypi/pytest-runner>`__
- `tox <https://testrun.org/tox/latest/>`__
Documentation
===============
http://tcconfig.rtfd.io/
Troubleshooting
=================
http://tcconfig.readthedocs.io/en/latest/pages/troubleshooting.html
Keywords: traffic control,tc,traffic shaping,bandwidth,latency,packet loss
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: System :: Networking
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tcconfig-0.17.2.tar.gz
(44.6 kB
view details)
Built Distribution
File details
Details for the file tcconfig-0.17.2.tar.gz
.
File metadata
- Download URL: tcconfig-0.17.2.tar.gz
- Upload date:
- Size: 44.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a12e5d6473817e984262258902c826ef68b2b32a99d1426241eb2a5426955a5 |
|
MD5 | 326b160a62655331e5507169951880b5 |
|
BLAKE2b-256 | a303f4db1074b132d57ec03d85e39c83b8e63eda0a7c31b7ebec021104e39b5b |
Provenance
File details
Details for the file tcconfig-0.17.2-py2.py3-none-any.whl
.
File metadata
- Download URL: tcconfig-0.17.2-py2.py3-none-any.whl
- Upload date:
- Size: 45.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05c3c744eb6e60686b9c05f96de1f87c355dd61da9f3de6ddddda6ff4e1f0915 |
|
MD5 | eb7ba9879a41c4d8c4953ca53390b911 |
|
BLAKE2b-256 | 8cd73f3c082abe9b50796a4e54553edacbe6b766c10be767ad65792a70d56c8f |