Visual traffic control configurator (TCGUI) project

Abstract

The Visual Traffic Control Configurator project (TCGUI) provides a tool for designing traffic control structure of Linux systems using the iproute2 networking subsystem. Created configuration schemas keep information about the structure and attributes of shaped interfaces, queuing disciplines, filters and classes. Specifications of supported traffic control objects, their features, attributes and usage are held in separate XML definition files. TCGUI allows exporting the configuration into a shell script, that sets the traffic control configuration of the kernel. Generated scripts are intended to be easy to understand and easy to modify - that makes them independent of TCGUI itself. TCGUI can be run on any platform with Java 1.4 environment and it is based on the JGraph library.

Project purpose

The TCGUI should allow user to easily create a diagram defining the network traffic control. Using this, it is possible e.g. to split the main bandwith into smaller parts with smaller bandwiths defined. Those parts can be subsequently assigned to system services, different processes, i.p. addressess or single users as well. Iproute2, of course, provides lots of other methods and apporoaches and the aim of TCGUI is to reduce the complixity of their usage. After creating of such a diagram user tells TCGUI to generate the configuration script, which is responsible for kernel traffic control setting.

The TCGUI system model

Figure 1 shows modules of TCGUI system.

TCGUI architecture
Fig. 1

Documentation

Installation manual

Installation manual is a part of the TCGUI package, online version is here.

User manual

User manual is a part of the TCGUI package, online version is here.

Configuration example

The following image shows an example configuration.
example configuration
After clicking "Export", we get the following configuration script.
#!/bin/bash

# ###########################################################
# # This script was generated by the TCGUI project.         #
# # http://sourceforge.net/projects/tcgui                   #
# ###########################################################

# Initialize variables used through the script.
DEVICE="eth0"

# Delete all previous egress tc settings on the device.
tc qdisc del dev $DEVICE root >/dev/null 2>&1

# Delete all previous ingress tc settings on the device.
#tc qdisc del dev $DEVICE ingress >/dev/null 2>&1
# (ingress not supported yet, check for new versions)

# create root qdisc 'Root Qdisc' of type htb
tc qdisc add dev $DEVICE root handle 1: htb

# create class 'Main Class' of type htb
tc class add dev $DEVICE parent 1: classid 1:1 htb rate 512kbit

# create class 'LOW Prio' of type htb
tc class add dev $DEVICE parent 1:1 classid 1:3 htb rate 384kbit ceil 512kbit

# create class 'HI Prio' of type htb
tc class add dev $DEVICE parent 1:1 classid 1:2 htb rate 128 ceil 128

# create filter element 'games' for filter 'Main Class Filter' of type u32
tc filter add dev $DEVICE parent 1:1 protocol ip prio 1 u32 match ip sport 27005 0xffff flowid 1:2
# create filter element 'default' for filter 'Main Class Filter' of type u32
tc filter add dev $DEVICE parent 1:1 protocol ip prio 1 u32 match ip src 0.0.0.0/0 flowid 1:3

Browsable API documentation

Browsable bleeding edge javadoc is here.

Documents in Czech

Original TC analysis and GUI design concept is here.

Download

TCGUI is under development, so the packages available for download may often change.

Project hosting

The project is hosted at SourceForge.net.
© 2003 TCGUI team.