Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A tc command wrapper. Make it easy to set up traffic control of network bandwidth/latency/packet-loss/packet-corruption/etc. to a network-interface/Docker-container(veth).

License

NotificationsYou must be signed in to change notification settings

thombashi/tcconfig

Repository files navigation

tcconfig is a tc command wrapper. Make it easy to set up traffic control of network bandwidth/latency/packet-loss/packet-corruption/etc. to a network-interface/Docker-container(veth).

PyPI package versionSupported Python versionsTest CI statusBuild CI status

Setup traffic shaping rules

Easy to apply traffic shaping rules to specific networks:

  • Outgoing/Incoming packets
  • Source/Destination IP-address/network (IPv4/IPv6)
  • Source/Destination ports

Available Parameters

The following parameters can be 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[%]
  • Packet limit count[COUNT]

Targets

  • Network interfaces: e.g.eth0
  • Docker container (veth corresponding with a container)

docs/gif/tcset_example.gif

tcset is a command to add a traffic control rule to a network interface (device).

e.g. Set a limit on bandwidth up to 100Kbps

#tcset eth0 --rate 100Kbps

e.g. Set network latency

You can use time units (such as us/sec/min/etc.) to designate delay time.

Set 100 milliseconds of network latency
#tcset eth0 --delay 100ms
Set 10 seconds of network latency
#tcset eth0 --delay 10sec
Set 0.5 minutes (30 seconds) network latency
#tcset eth0 --delay 0.5min

You can also use the following time units:

UnitAvailable specifiers (str)
hoursh/hour/hours
minutesm/min/mins/minute/minutes
secondss/sec/secs/second/seconds
millisecondsms/msec/msecs/millisecond/milliseconds
microsecondsus/usec/usecs/microsecond/microseconds

e.g. Set 0.1% packet loss

#tcset eth0 --loss 0.1%

e.g. All of the above settings at once

#tcset eth0 --rate 100Kbps --delay 100ms --loss 0.1%

e.g. Specify the IP address of the traffic control

#tcset eth0 --delay 100ms --network 192.168.0.10

e.g. Specify the IP network and port of traffic control

#tcset eth0 --delay 100ms --network 192.168.0.0/24 --port 80

Set traffic control to a docker container

Executetcconfig with--docker option on a Docker host:

#tcset<container name or ID> --docker ...

You could use--src-container/--dst-container options to specify the source/destination container.

Set traffic control within a docker container

You need to run a container with--cap-add NET_ADMIN optionif you would like to set a tc rule within a container:

docker run -d --cap-add NET_ADMIN -t <docker image>

A container image that builtin tcconfig can be available athttps://hub.docker.com/r/thombashi/tcconfig/

tcdel is a command to delete traffic shaping rules from a network interface (device).

e.g. Delete traffic control ofeth0

You can delete all of the shaping rules for theeth0 with-a/--all option:

#tcdel eth0 --all

tcshow is a command to display the current traffic control settings for network interface(s).

Example

#tcset eth0 --delay 10ms --delay-distro 2  --loss 0.01% --rate 0.25Mbps --network 192.168.0.10 --port 8080#tcset eth0 --delay 1ms --loss 0.02% --rate 500Kbps --direction incoming#tcshow eth0{    "eth0": {        "outgoing": {            "dst-network=192.168.0.10/32, dst-port=8080, protocol=ip": {                "filter_id": "800::800",                "delay": "10.0ms",                "delay-distro": "2.0ms",                "loss": "0.01%",                "rate": "250Kbps"            }        },        "incoming": {            "protocol=ip": {                "filter_id": "800::800",                "delay": "1.0ms",                "loss": "0.02%",                "rate": "500Kbps"            }        }    }}

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

tcconfig can be installed fromPyPI viapip (Python package manager) command.

sudo pip install tcconfig
curl -sSL https://raw.githubusercontent.com/thombashi/tcconfig/master/scripts/installer.sh | sudo bash
  • mandatory: required fortc command:
    • Ubuntu/Debian:iproute2
    • Fedora/RHEL:iproute-tc
  • optional: required when you use the--iptables option:
    • iptables
  • sch_netem

https://tcconfig.rtfd.io/

https://tcconfig.rtfd.io/en/latest/pages/troubleshooting.html

https://hub.docker.com/r/thombashi/tcconfig/

ex-sponsor: Charles Becker (chasbecker)ex-sponsor: 時雨堂 (shiguredo)onetime: Dmitry Belyaev (b4tman)onetime: Arturi0onetime: GitHub (github)

Become a sponsor

About

A tc command wrapper. Make it easy to set up traffic control of network bandwidth/latency/packet-loss/packet-corruption/etc. to a network-interface/Docker-container(veth).

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp