4.2. Delete traffic control (tcdel command)

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

Note

tcdel delete mangle tables in iptables. (any other tables are not affected).

4.2.1. tcdel command help

usage: tcdel [-h] [-V] [--tc-command | --tc-script] [--debug | --quiet]
             [--debug-query] [--stacktrace] [-a] [--id FILTER_ID]
             [--direction {outgoing,incoming}] [--network DST_NETWORK]
             [--src-network SRC_NETWORK] [--port DST_PORT]
             [--src-port SRC_PORT] [--ipv6] [--docker]
             [--src-container SRC_CONTAINER] [--dst-container DST_CONTAINER]
             device

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit
  --tc-command          display tc commands to be executed and exit. these
                        commands are not actually executed.
  --tc-script           generate a shell script file that described tc
                        commands. this tc script execution result nearly
                        equivalent with the tcconfig command. the script can
                        be executed without tcconfig package installation.
  --debug               for debug print.
  --quiet               suppress execution log messages.

Debug:
  --debug-query         for debug print.
  --stacktrace          print stack trace for debug information. --debug
                        option required to see the debug print.

Traffic Control:
  device                network device name (e.g. eth0)
  -a, --all             delete all of the shaping rules.
  --id FILTER_ID        delete a shaping rule which has a specific id. you can
                        get an id (filter_id) by tcshow command output. e.g.
                        "filter_id": "800::801"

Routing:
  --direction {outgoing,incoming}
                        the direction of network communication that imposes
                        traffic control. 'incoming' requires ifb kernel module
                        and Linux kernel 2.6.20 or later. (default = outgoing)
  --network DST_NETWORK, --dst-network DST_NETWORK
                        specify destination IP-address/network that applies
                        traffic control. defaults to any.
  --src-network SRC_NETWORK
                        specify source IP-address/network that applies traffic
                        control. defaults to any. this option has no effect
                        when executing with "--direction incoming" option.
                        note: this option required to execute with the
                        --iptables option when using tbf algorithm.
  --port DST_PORT, --dst-port DST_PORT
                        specify destination port number that applies traffic
                        control. defaults to any.
  --src-port SRC_PORT   specify source port number that applies traffic
                        control. defaults to any.
  --ipv6                apply traffic control to IPv6 packets rather than
                        IPv4.

Docker:
  --docker              apply traffic control to a docker container. to use
                        this option, you will need to specify a container id
                        as 'device' as follows: tcset --container <container
                        id>
  --src-container SRC_CONTAINER
                        specify source container id or name.
  --dst-container DST_CONTAINER
                        specify destination container id or name.

Documentation: https://tcconfig.rtfd.io/
Issue tracker: https://github.com/thombashi/tcconfig/issues

4.2.1.1. e.g. Delete traffic control of eth0

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

# tcdel eth0 --all

4.2.2. Advanced usage

You can delete a specific shaping rule by either network specifier or filter_id.

# tcset eth0 --delay 10ms --rate 10Kbps --network 192.168.1.2 --overwrite
# tcset eth0 --delay 100ms --rate 50Kbps --network 192.168.1.3 --add
# tcset eth0 --delay 200ms --rate 100Kbps --network 192.168.0.0/24 --add
# tcshow eth0
{
    "eth0": {
        "outgoing": {
            "dst-network=192.168.1.2/32, protocol=ip": {
                "filter_id": "800::800",
                "delay": "10.0ms",
                "rate": "10Kbps"
            },
            "dst-network=192.168.1.3/32, protocol=ip": {
                "filter_id": "800::801",
                "delay": "100.0ms",
                "rate": "50Kbps"
            },
            "dst-network=192.168.0.0/24, protocol=ip": {
                "filter_id": "800::802",
                "delay": "200.0ms",
                "rate": "100Kbps"
            }
        },
        "incoming": {}
    }
}

e.g. Delete a shaping rule with network specifier:

# tcdel eth0 --dst-network 192.168.1.2
# tcshow eth0
{
    "eth0": {
        "outgoing": {
            "dst-network=192.168.1.3/32, protocol=ip": {
                "filter_id": "800::801",
                "delay": "100.0ms",
                "rate": "50Kbps"
            },
            "dst-network=192.168.0.0/24, protocol=ip": {
                "filter_id": "800::802",
                "delay": "200.0ms",
                "rate": "100Kbps"
            }
        },
        "incoming": {}
    }
}

e.g. Delete a shaping rule with filter id:

# tcdel eth0 --id 800::801
# tcshow eth0
{
    "eth0": {
        "outgoing": {
            "dst-network=192.168.0.0/24, protocol=ip": {
                "filter_id": "800::802",
                "delay": "200.0ms",
                "rate": "100Kbps"
            }
        },
        "incoming": {}
    }
}