Augmented Traffic Control (ATC) es una herramienta de código abierto (GitHub) desarrollada por Facebook para simular distintas condiciones de red para probar como se comportan sus aplicaciones. Se creó sobretodo para simular entornos de peor conectividad que los de sus laboratorios. De forma genérica permite controlar la conexión que tiene un dispositivo hacia Internet, concretamente:
- Ancho de banda
- Latencia
- Pérdida de paquetes
- Paquetes corruptos
- Orden de paquetes
Para que ATC sea capaz de controlar y modificar el tráfico debe ejecutarse en un dispositivo que enrute el tráfico y tengan un IP real, como la del gateway de la LAN del entorno.
ATC está hecho de múltiples componentes que interaccionan entre sí:
- atcd: el demonio de ATC responsable de configurar/desconfigurar el traffic shaping. atcd tiene un interfaz de Apache Thrift para interactuar.
- django-atc-api: Un aplicación Django basada en Django Rest Framework que facilita a atcd un interfaz RESTful.
- django-atc-demo-ui: Un aplicación Django que provee un sencillo Web UI para usar ATC desde un teléfono móvil.
- django-atc-profile-storage: Un aplicación Django que puede ser usada para salvar los perfiles de control de tráfico, haciendo más fácil reusarlo después sin tener que volver a introducir manualmente las configuraciones.
Al dividir ATC en sub-componentes, es más fácil trastear con él. Aunque django-atc-demo-ui se distribuye en el repositorio principal para facilitar su uso, también se facilita una REST API para interactuar con atcd vía comandos y permitir a la comunidad crear nuevas herramientas.
Instalación
La forma más fácil de instalar ATC es usando PIP:
Si te devuelve algún error con los READMEs (manifiestos) puedes descargar el repo de GitHub e instalarlo de forma local:
git clone https://github.com/facebook/augmented-traffic-control.git
pip install -e atc_thrift/
...
Después tendremos que crear un nuevo proyecto en Django que usaremos con nuestra app.
django-admin startproject atcui
cd atcui
A continuación editamos atcui/settings.py y activamos las aplicaciones ATC añadiéndolas a INSTALLED_APPS:
Posteriormente abrimos atcui/urls.py y activamos el routing a las apps ATC añadiendo las rutas a urlpatterns:
Finalmente actualizamos la BD de Django:
Corriendo ATC
Ahora que hemos instalado y configurado los paquetes tenemos que ejecutar el demonio y el interfaz UI.
atcd modifica la configuración de la red y por lo tanto necesita ejecutarse en modo privilegiado:
sudo atcd
Suponiendo que eth0 es tu interfaz para conectar a Internet y eth1 el interfaz para conexiones a la red LAN, esto debería funcionar. Si la configuración es un poco diferente, utiliza los argumentos de la línea de comandos --atcd-wan y --atcd-lan para adaptarse a la configuración del entorno.
La interfaz de usuario por el contrario es una aplicación web estándar de Django y se puede ejecutar con un usuario normal. Asegúrate de que está en el directorio que se creó cuando ejecutó django-admin startproject atcui y ejecuta:
python manage.py runserver 0.0.0.0:8000
Ahora deberías ser capaz de acceder a la interfaz web en http://localhost:8000:
En ambos casos se recomienda poner en el arranque ambos:
sysvinit y upstart scripts.
Fuente: Augmented Traffic Control: A tool to simulate network conditions
- Ancho de banda
- Latencia
- Pérdida de paquetes
- Paquetes corruptos
- Orden de paquetes
Para que ATC sea capaz de controlar y modificar el tráfico debe ejecutarse en un dispositivo que enrute el tráfico y tengan un IP real, como la del gateway de la LAN del entorno.
ATC está hecho de múltiples componentes que interaccionan entre sí:
- atcd: el demonio de ATC responsable de configurar/desconfigurar el traffic shaping. atcd tiene un interfaz de Apache Thrift para interactuar.
- django-atc-api: Un aplicación Django basada en Django Rest Framework que facilita a atcd un interfaz RESTful.
- django-atc-demo-ui: Un aplicación Django que provee un sencillo Web UI para usar ATC desde un teléfono móvil.
- django-atc-profile-storage: Un aplicación Django que puede ser usada para salvar los perfiles de control de tráfico, haciendo más fácil reusarlo después sin tener que volver a introducir manualmente las configuraciones.
Al dividir ATC en sub-componentes, es más fácil trastear con él. Aunque django-atc-demo-ui se distribuye en el repositorio principal para facilitar su uso, también se facilita una REST API para interactuar con atcd vía comandos y permitir a la comunidad crear nuevas herramientas.
Instalación
La forma más fácil de instalar ATC es usando PIP:
apt-get install python-pip
pip install Django==1.7.7
for pkg in \
atc_thrift atcd django-atc-api \
django-atc-demo-ui django-atc-profile-storage
do
pip install $pkg
done
Si te devuelve algún error con los READMEs (manifiestos) puedes descargar el repo de GitHub e instalarlo de forma local:
git clone https://github.com/facebook/augmented-traffic-control.git
pip install -e atc_thrift/
...
Después tendremos que crear un nuevo proyecto en Django que usaremos con nuestra app.
django-admin startproject atcui
cd atcui
A continuación editamos atcui/settings.py y activamos las aplicaciones ATC añadiéndolas a INSTALLED_APPS:
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',
)
Posteriormente abrimos atcui/urls.py y activamos el routing a las apps ATC añadiendo las rutas a urlpatterns:
...
...
from django.views.generic.base import RedirectView
urlpatterns = patterns('',
...
# 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)),
)
Finalmente actualizamos la BD de Django:
python manage.py migrate
Operations to perform:
Synchronize unmigrated apps: rest_framework, django_static_jquery
Apply all migrations: admin, atc_profile_storage, contenttypes, auth, sessions
Synchronizing apps without migrations:
Creating tables...
Installing custom SQL...
Installing indexes...
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying atc_profile_storage.0001_initial... OK
Applying sessions.0001_initial... OK
Corriendo ATC
Ahora que hemos instalado y configurado los paquetes tenemos que ejecutar el demonio y el interfaz UI.
atcd modifica la configuración de la red y por lo tanto necesita ejecutarse en modo privilegiado:
sudo atcd
Suponiendo que eth0 es tu interfaz para conectar a Internet y eth1 el interfaz para conexiones a la red LAN, esto debería funcionar. Si la configuración es un poco diferente, utiliza los argumentos de la línea de comandos --atcd-wan y --atcd-lan para adaptarse a la configuración del entorno.
La interfaz de usuario por el contrario es una aplicación web estándar de Django y se puede ejecutar con un usuario normal. Asegúrate de que está en el directorio que se creó cuando ejecutó django-admin startproject atcui y ejecuta:
python manage.py runserver 0.0.0.0:8000
Ahora deberías ser capaz de acceder a la interfaz web en http://localhost:8000:
En ambos casos se recomienda poner en el arranque ambos:
sysvinit y upstart scripts.
Fuente: Augmented Traffic Control: A tool to simulate network conditions
Muy buenos contenidos. Me encanta este blog, sobre todo es muy entretenido. Seguid así
ResponderEliminar