Facebook представил новый открытый проект ATC (Augmented Traffic Control), предназначенный для организации тестирования приложений в условиях их применения в сетях различного качества. ATC позволяет симулировать такие ситуации, как падение пропускной способности, возникновение задержек в передаче пакетов, различные уровни потери и повреждения пакетов, нарушение порядка следования пакетов. ATC позволяет значительно упростить оценку качества работы любых сервисов и приложений в различных условиях подключения пользователя к сети, например, симулируя типовые характеристики сети 2G или 3G.


Augmented Traffic Control UI

Код ATC написан на языке Python и распространяется под лицензией BSD. Инструментарий состоит из двух компонентов: web-интерфейс на базе фреймворка Django для управления процессом симуляции и демон atcd, который запускается на сетевом шлюзе и вносит те или иные изменения в характер прохождения трафика. Для влияния на трафик применяются штатные механизмы ядра Linux, доступ к которым производится через API netlink, для работы с которым применяется pyroute2. Взаимодействие web-интерфейса и демона управления трафиком построено с использованием REST API и интерфейса Apache Thrift.


Traffic flow

Для оценки влияния сетевых аномалий, достаточно обеспечить выход исследуемой системы через сетевой шлюз, на котором установлен atcd. Симуляция применяется выборочно только к участвующим в эксперименте IP-адресам, что позволяет применять ATC на обычных шлюзах, обрабатывающих реальный трафик. Для маркировки участвующих в эксперименте пакетов применяется iptables (цель MARK в таблице mangle). Урезание трафика и внесения изменений в его характер производится с использованием методов классификации трафика (filter, class, qdisc), задаваемых утилитой tc из состава пакета iproute2.


Augmented Traffic Control Scheme

Источник opennet.ru
Оригинал новости на facebook.com
Код проекта на github.io