A photo of Mitesh Shah

Mitesh Shah

Linux Expert | Automation Enthusiast | Security Consultant

Email Skype Github Twitter Resume Hire Me Keybase LinkedIn Stackoverflow


How to Setup Augmented Traffic Control (ATC)

Overview

How to Setup Augmented Traffic Control (ATC)

Installation

# Install Virtual Environment
$ sudo pip install virtualenv
$ mkdir -p ~/dev/atc
$ virtualenv ~/dev/atc/venv
$ source ~/dev/atc/venv/bin/activate

# Package installation
$ pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage

# Configuration
$ cd ~/dev/atc
$ django-admin startproject atcui
$ cd atcui/
  • At this stage, we have a brand new django project that needs to be configured.
  • First, let’s enable our django apps by editing atcui/settings.py and adding the following apps to INSTALLED_APPS:
$ vim atcui/settings.py
INSTALLED_APPS = (
    ...
    # Django ATC API
    'rest_framework',
    'atc_api',
    # Django ATC Demo UI
    'bootstrap_themes',
    'django_static_jquery',
    'atc_demo_ui',
    # Django ATC Profile Storage
    'atc_profile_storage',
)
  • Now, we need to route requests to the right django app.
  • This is done by editing atcui/urls.py and adding the routes to urlpatterns:
$ vim atcui/urls.py
...
from django.conf.urls import include
from django.views.generic.base import RedirectView

urlpatterns = [
    ...
    # Django ATC API
    url(r'^api/v1/', include('atc_api.urls')),
    # Django ATC Demo UI
    url(r'^atc_demo_ui/', include('atc_demo_ui.urls')),
    # Django ATC profile storage
    url(r'^api/v1/profiles/', include('atc_profile_storage.urls')),
    url(r'^$', RedirectView.as_view(url='/atc_demo_ui/', permanent=False)),
]
  • Finally, migrate the django DB and run the server locally
$ python manage.py migrate
  • That is it, the UI should be set up. Now let’s run it!

Running it

  • Now that we have configured the UI, let’s run the atcd service and run the UI.
  • You need to make sure that you are using your virtual environment.
Starting atcd service
$ test -z $VIRTUAL_ENV && source ~/dev/atc/venv/bin/activate
$ sudo atcd
Start atc demo ui
$ test -z $VIRTUAL_ENV && source ~/dev/atc/venv/bin/activate
$ cd ~/dev/atc/atcui
$ python manage.py runserver 0.0.0.0:8000
  • You should now be able to access the UI at the following address http://localhost:8000 and get the following page.

atc_demo_ui

NOTE! If you are using Django 1.9 then might me you face stylesheet issue.
Refer: Dirty Fix

Import Network Profiles

$ cd ~/dev/atc/
$ git clone https://github.com/facebook/augmented-traffic-control.git
$ cd augmented-traffic-control/utils/
$  bash restore-profiles.sh localhost:8000
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/2G-DevelopingRural.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/2G-DevelopingUrban.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/3G-Average.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/3G-Good.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/Cable.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/DSL.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/Edge-Average.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/Edge-Good.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/Edge-Lossy.json
Added profile ~/dev/atc/augmented-traffic-control/utils/profiles/NoConnectivity.json

Test Augmented Traffic Control

  • Open http://localhost:8000
  • Click on Authentication and add your device ip address and access token, click on Authorize button
  • Click on Profiles and select your testing network profile.
  • Now at top of page you will find Update Shaping button click on it.

Test Augmented Traffic Control (ATC)





Post Navigation