Wan Emulator Overview
This tool is a front end to monitor and config a WAN Emulator appliance.
This appliance can be physical or virtual and it works by leveraging the Linux Kernel Packet Scheduler through the use of the utility program TC (Traffic Control) and NetEm (Network Emulator) to emulate conditions like Bandwidth, delay, packet loss in a link that represent a WAN (Wide Area Network) Link.
The Frontend was developed in python using Flask and the subprocess library, the web application is delivered with Gunicorn and NGINX.
The appliances where this tool will be installed should have at least a total of 3 interfaces, 1 management interface and a minimum of 2 and a maximum of 10 interfaces that will create 1 to 5 bridge interfaces.
The front end has been tested with the following OS's:
- Ubuntu 16.04 LTS
- Ubuntu 18.04 LTS
How it works
This tool works by leveraging the Linux kernel tc (traffic control) command, this command manipulate the traffic control settings.
When traffic control is used in Linux, all traffic is queued before dispatching them to the network drivers. Traffic control uses "qdisc" queueing discipline to take decisions on how the traffic is queued, the most simple qdisc is a pure FIFO (First In First Out) queue, but there are different queueing disciplines that can be used in order to modify the traffic behavior.
The first one is "netem" (network emulator), with netem the system can add delay and packet loss, duplication and others.
The second one is "tbf" (Token Bucket Filter) and it is used to slow down the traffic rate by using the concept of token buckets.
Another important concept is Bridging, a bridge interface is a logical interface that is conformed by members and what it does is that when a packet is received in one of the members immediately is replicated without modification to the other members of the bridge interface, this allows a linux machine to be put in the network and act as a bump in the wire (L2 transparent device)
This concepts along with the tc qdisc are used by the front end tool to simulate a WAN link.
If you need more information on how tc and bridge interfaces, please see the man page for this commands.
man tc man bridge
This toolis provided as_is, no support comes with it and you are responsible to run it on your systems. If there are any issues with the tool you can open an issue on the Github page and we will try our best to help (It will take time for sure). Please read the Contribute section to know how to do it.
If you are looking for support for one of your projects, please Contact Us.