The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Facebook открыл код инструментария для симуляции работы в проблемных сетях

23.03.2015 23:15

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

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

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



  1. Главная ссылка к новости (https://code.facebook.com/post...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41896-facebook
Ключевые слова: facebook, atc, traffic, bandwidth
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (53) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, A.Stahl (ok), 23:23, 23/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    >Facebook открыл код инструментария для симуляции работы

    Кто? Что открыл?
    Ну и пусть.
    P.S. Кому интересно, тот и так знает про старую GNU утилиту для эмулирования плохого канала. Даже я, программист, знаю про такую штуку.
    Но это же фейсбук. Все должны восторгаться. Ну восторагайтесь.

     
     
  • 2.3, someAlex (ok), 23:26, 23/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так имя утилиты хотя бы приведите, раз уж заинтересовали.
     
     
  • 3.4, A.Stahl (ok), 23:41, 23/03/2015 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Я программист. Честно - сейчас по-пьяне не вспомню. Но что-то из разряда netstat или около того. Протрезвею -- вспомню. Или кто-то из профессиональных админов напомнит.
     
     
  • 4.9, Crazy Alex (ok), 23:57, 23/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты не tc имел в виду? Если что - сабж - это управлялка для него.
     
     
  • 5.11, Аноним (-), 00:26, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ха, я что то такое и подозревал! :)
     
  • 3.8, Аноним (-), 23:52, 23/03/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Наверное, он имеет ввиду проект netem от Linux Foundation. Программа называется tc. http://www.linuxfoundation.org/collaborate/workgroups/networking/netem
     
  • 2.23, GrammarNazist (?), 08:17, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    GNU-утилиту
     

  • 1.2, Аноним (-), 23:25, 23/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Код ATC написан на языке Python

    Теперь я понимаю почему оно эмулирует плохую, медленную сеть. Хорошая бы все-равно на этом не получилась бы :)

     
     
  • 2.7, Crazy Alex (ok), 23:50, 23/03/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Абсолютно идеальное применение для питона. Там всю раюоту делает стандартная механика ядра. а в управлялках, где важна не скорость и даже не поддерживаемость (потому что код прямой как бревно, начудить сложно), а простота написания - питон очень хорош.

    Это когда на нём пытаются писать большое или то, где нагрузка - там уже беда-печаль.

     
     
  • 3.10, cmp (ok), 00:05, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Исповедь питониста --- именно наш питон идеально подходит для system("tc bla-bla-bla");
    да неужели.
     
     
  • 4.12, Crazy Alex (ok), 01:07, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хм, записать меня в питонисты - это сильно :-) Я, если что, большой сторонник мощных, прагматичных, статически типизированных компилируемых языков - если о реальных задачах говорить. Которых в настоящее время из распространённых примерно полтора - плюсы да C# ещё сошел бы, если б был не завязан на MS и нормально компилировался. Ну и если чудо случится - может D взлететь, что было бы очень приятно.

    А так - да, для ситуаций, где нужно много тривиальной управляющей логики с малым количеством вычислительной или ещё какой работы, да чтобы легко это дело править было - питон вполне на месте. Читается/пишется он в таких штуках хорошо (синтаксис не "замусорен" тем, что нужно для более сложных случаев), производительности не требуется никакой - самое оно.

     
     
  • 5.15, cmp (ok), 01:46, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Почти все перепробовал на роль - "тривиальной управляющей логики", все фигня, питоны-перлы-пхп-явы, монстры кто-то больше, кто-то меньше, луа наболее подходит, но он какой-то не такой, дефолтно глобальные переменные, не то, была надежда на js, были реализации не жирнее awk, но загнулись проекты, остались только монстры, кстате awk при правильном приготовлении иногда доставляет. Но тем не менее для задачи запустить 1000 процессов единовременно, которые бы извлекли данные из "облака" и туда же запихали после минимальной модификации абсолютный вакуум.
     
     
  • 6.19, Аноним (-), 01:58, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > для задачи запустить 1000 процессов единовременно, которые бы извлекли данные из
    > "облака" и туда же запихали после минимальной модификации абсолютный вакуум.

    Потому что you're doing it wrong, Luke. Представляешь себе какой пипец будет когда 1000 процессов начнут стартовать? Тебе потребуется крутой энтерпрайзный сервер, и даже там все это будет оставлять желать.

    Чтобы понять насколько это злобно: берешь апач без лимитов и напускаешь на него хотя-бы родной апачевский ab2. Получаешь 1000 процессов. Если конечно все не загнется еще раньше.

     
     
  • 7.20, cmp (ok), 04:18, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Дык сервера есть "крутые" "ынтерпрайзные", речь не о том что нужно реально 1000, а о том, чтобы тысяча копий не была нештатной, ну пусть медленно, но чтоб оно пережевалось корректно, а не дропнуло половину процессов оом киллером, причем пойди еще разберись каких, конечно можно обойти проблему, всегда можно, написать некую шину которая бы буфферизировала очередь запросов и грузила ими обозначенное кол-во исполнителей, сосбтвенно и апач, и нжинкс, и пхп-фпм и др, так и работают, только скрипт туда не подвязать, на луа можно бы, но тоже не из каробки далеко, вот отсюда ноги и растут, вот и приходится выбирать между костылями.
     
     
  • 8.31, Аноним (-), 08:57, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    AnyEvent Util fork_call ... текст свёрнут, показать
     
  • 8.37, Motif (ok), 10:54, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    man Erlang, однако ... текст свёрнут, показать
     
  • 8.54, Аноним (-), 23:56, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пардон, а ничего что oom killer вызывается ядром ОС Программа в общем виде ниче... большой текст свёрнут, показать
     
     
  • 9.59, cmp (ok), 00:54, 26/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Программа нет, а программист может, еще на стадии разработки не ориентироваться ... текст свёрнут, показать
     
  • 6.43, Аноним (-), 13:24, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если тебе нужно 1000 процессов для чего-то не числодробильного(да и там больше чем ядер не сильно нужно), то у тебя проблемы с архитектурой. Тем более если тебе надо по сети данные извлекать откуда-то из облака, подход с потоками это wrong way

    Осиль асинхронную модель. Например связка EV+AnyEvent+Coro в перле позволяет писать асинхронные проги обрабатывающие тысячи и десятки тысяч конектов вообще не заморачиваясь и не сильно вдаваясь в оптимизацию. При этом Coro отлично маскирует асинхронную логику и не надо писать кучи колбеков, выглядит все будто у тебя потоки, десятки тысяч легковесных корутин - легко, хотя поток на самом деле один. Если нужно больше можно форкать, но для работы с сетью не нужно обычно.

     
  • 5.22, Ilya Indigo (ok), 07:07, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >Ну и если чудо случится - может D взлететь, что было бы очень приятно.

    А что вы понимаете под взлётом?
    Создание Qt-подобного фреймвёрка для него, поддержка в cmake, не помню как правильно называется тип этой утилиты?
    Или в самом языке D чего-то не хватает, или не удобно сделано?

     
     
  • 6.41, Crazy Alex (ok), 13:20, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    О, у меня очень простой и довольно слабый критерий - хотя бы одно приложение, ставшее в своей области стандартом де-факто - хотя бы одним из. Как Docker для Go или рельсы для Ruby. Ну и более сильный - наличие вакансий для D-разработчиков.
     
     
  • 7.55, Dmitry77 (ok), 02:19, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    ещё хорошо бы наличие достаточного количества грамотных разработчиков на D - без этого стартовать проект на D - довольно рискованно.
     
     
  • 8.58, Crazy Alex (ok), 19:12, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так хорошие проекты не растут из ничего Если хоть один взлетел и стал извест... текст свёрнут, показать
     
  • 3.16, Аноним (-), 01:55, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Абсолютно идеальное применение для питона.

    Так я и говорю: настоящий питонист придумает как из бага сделать фичу. Ну или по крайней мере будет убеждать всех что это - фича. А так то да, чтобы tc вызвать - крайне необходимо полкило питонятины и куча заморочек с какой-нибудь там неправильной версией оного.

     
     
  • 4.42, Crazy Alex (ok), 13:21, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Фишка в том, что для той же задачи всего другого будет полтора кило. И да, скриптовые языки примерно для этого и делались - чтобы склеить возможности ОС в удобоваримом виде.
     
  • 2.24, GrammarNazist (?), 08:17, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "всё равно"
     

  • 1.5, джавафоб (?), 23:42, 23/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Уж лучше чем на тормозной джаве
     
     
  • 2.14, Аноним (-), 01:12, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Реал? С каких это пор питончик стал быстрее жабки?
     
  • 2.25, GrammarNazist (?), 08:18, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    "Яве"
     
     
  • 3.39, Аноним (-), 11:13, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    "Джаве"

    http://en.wiktionary.org/wiki/Java

     
     
  • 4.45, Grammar_Nazism (?), 13:27, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тогда не Индия, а Индиэ, ведь https://en.m.wikipedia.org/wiki/India
     
  • 2.29, Петруччо (?), 08:44, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Джава не такая уж и тормозная. Более-менее приемлимо, но если надо делать что-нибудь быстрее - то есть для этих целей C#.
    P.S. Ваши всякие С, С++ не нужны. Забудьте про них. Это технологии 25-летней давности, не надо насиловать трупы
     
     
  • 3.32, Аноним (-), 09:12, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Ваши всякие С, С++ не нужны.

    Когда я начинаю пистать на Java у меня возникает ощущение что над моей работой наблюдают толпа бюрократов, и все знают как лучше мне нужно делать работу, но при этом никто из них не умеет программировать.

    Когда я начинаю писать на Си у меня возникает ощущение что сейчас мне предстоит показать уровень владения "Кун-фу", и здесь и сейчас, и именно от меня и моего уровня мастерства зависит исход ситуации.

    PS: Ну нужно говорить за всех - каждый волен выбирать то что ему больше подходит. Говорите за себя. Лично мне Си ближе - он лучше подходит для меня.

    PPS: С++ комментировать не буду, т.к. код который я пишу он ближе к Си, а код который чаще всего - к Java.

     
  • 3.35, ZiNk (ok), 10:44, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    C# - это .NET и вообще-то медленнее явы судя по бенчмаркам.
    benchmarksgame.alioth.debian.org
    Чисто теоретически - и то и то перегоняется в байткод, который бегает в виртуалке, так что класс производительности у них достаточно близкий.

    Собственно на это указывают и то что всякие твитторы и иже с ними сползают с рубей и рельсов на JVM, когда производительность начинает поджимать.

     
  • 3.38, Grammar_Nazism (?), 11:05, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    "Ява"
     
  • 3.47, dr Equivalent (ok), 16:38, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    В методичке прочел?
     
  • 3.56, Аноним (-), 05:00, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > P.S. Ваши всякие С, С++ не нужны. Забудьте про них. Это технологии
    > 25-летней давности, не надо насиловать трупы

    Сразу после того как ты перепишешь операционку на своем фетише и выставишь с рынка существующие ОС :)

     

  • 1.6, Капитан (??), 23:46, 23/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Адский велосипед сатаны!
     
  • 1.13, Crazy Alex (ok), 01:10, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не знаю, кому что не нравится. Оболочка, дающая возможность удобным образом создать сценарии и управлять ими, реальную работу делегирующая тому, что её отлично умеет делать - ядру и netem. Абсолютно правильная штука же.
     
     
  • 2.26, GrammarNazist (?), 08:19, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    "работу, делегирующую"
     
     
  • 3.33, Аноним (-), 10:22, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Плохой грамма, запятую поставил, а согласование перестал.
     
  • 3.48, Crazy Alex (ok), 17:30, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Мысленно выбрось первый причастный оборот: "Оболочка, реальную работу делегирующая тому, что её умеет делать". Неграмотный какой-то граммар наци попался...
     

  • 1.17, бедный буратино (ok), 01:57, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А симуляцию действий юзеров в соцсетях, позволяющую заменять её контингент, когда откроют? :)
     
  • 1.18, Аноним (-), 01:57, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    sudo tc qdisc add dev lo root netem delay 100ms
    sudo tc qdisc del dev lo root netem delay 100ms
     
  • 1.21, Аноним (-), 04:29, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Изобрели велосипед? В смысле dummynet из состава ipfw, который был придуман и реализован ещё 18 лет назад. Ну молодцы, чо.
     
     
  • 2.44, DeadLoco (ok), 13:26, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    +bpf +ng - это чтобы модифицировать пакеты и менять очередность доставки.
     
     
  • 3.57, Аноним (-), 05:01, 25/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > +bpf +ng - это чтобы модифицировать пакеты и менять очередность доставки.

    Так в линухе это тоже сто лет все есть. И умений tc и соотв. ядерных подсистем хватит на дюжину чертей. А новость - о том что фэйсбучик написал гламурную запускалку tc, собственно :)

     
  • 2.49, Crazy Alex (ok), 17:33, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    БСДшникам лишь бы ipfw гду угодно увидеть. А изобрели управлялку, которая удобно конфигурирует инструменты, которые сто лет как доступны в линуксе.
     

  • 1.36, YetAnotherOnanym (ok), 10:44, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Открыли бы офис где-нибудь в российских е..нях - и площади дешевле, и тормозной канал автоматом прилагается.
     
  • 1.40, Аноним (-), 12:07, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а чо они сами ей не пользуются? в "проблемных сетях" работать с фб не возможно же - все постоянно сыпется.
     
     
  • 2.46, Grammar_Nazism (?), 13:33, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    С фэйсбуком можно работать?
    "невозможно", позорище!
     
  • 2.50, Andrey Mitrofanov (?), 18:18, 24/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > а чо они сами ей не пользуются? в "проблемных сетях" работать с
    > фб не возможно же - все постоянно сыпется.

    Вот тебя они через неё и пользуют?

     

  • 1.53, Аноним (-), 18:43, 24/03/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лично я для имитации "плохих каналов" пользуюсь wanulator'ом (http://wanulator.de/). В настоящее время проект, правда, заброшен, но того, что есть- с лихвой хватает
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру