HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: api, проектная работа, программирование на python, разработчик python, wrex, api trex, трафик, генератор трафика, cisco trex</p>
1 <p>Теги: api, проектная работа, программирование на python, разработчик python, wrex, api trex, трафик, генератор трафика, cisco trex</p>
2 <p>Ситуация такая. Я работаю в компании, которая выпускает шлюзы сетевой<strong>безопасности</strong>. И нам, помимо тестирования работоспособности кода, нужно ещё тестировать эксплуатационные характеристики продукта. То есть необходимо понимать, не возникает каких-либо<strong>проблем с трафиком</strong>определённого типа или с большой нагрузкой, что происходит с производительностью для новых релизов на старой линейке оборудования, как себя ведет ПО на новой линейке и т. д.</p>
2 <p>Ситуация такая. Я работаю в компании, которая выпускает шлюзы сетевой<strong>безопасности</strong>. И нам, помимо тестирования работоспособности кода, нужно ещё тестировать эксплуатационные характеристики продукта. То есть необходимо понимать, не возникает каких-либо<strong>проблем с трафиком</strong>определённого типа или с большой нагрузкой, что происходит с производительностью для новых релизов на старой линейке оборудования, как себя ведет ПО на новой линейке и т. д.</p>
3 <p>Для всего этого используются специальные инструменты. Чаще всего они представляют собой<strong>генератор трафика</strong>, который может производить потоки трафика с некими заданными характеристиками, а также<strong>коллектор трафика</strong>, который улавливает эти потоки и предоставляет разного рода метрики для каждого из них. На основе этих<strong>метрик</strong>можно делать определенные выводы о поведении софта в некой среде.</p>
3 <p>Для всего этого используются специальные инструменты. Чаще всего они представляют собой<strong>генератор трафика</strong>, который может производить потоки трафика с некими заданными характеристиками, а также<strong>коллектор трафика</strong>, который улавливает эти потоки и предоставляет разного рода метрики для каждого из них. На основе этих<strong>метрик</strong>можно делать определенные выводы о поведении софта в некой среде.</p>
4 <p>Мы используем для этого<strong>Cisco TRex</strong>, потому что: - это открытый продукт; - <strong>Cisco</strong>- это крупнейший, один из старейших и, наверное, самый известный в мире вендор, который точно разбирается в сетях; - в основе своей использует<strong>DPDK</strong>, что позволяет получать хорошую сетевую производительность на весьма скромном железе; - там есть<strong>python API</strong>.</p>
4 <p>Мы используем для этого<strong>Cisco TRex</strong>, потому что: - это открытый продукт; - <strong>Cisco</strong>- это крупнейший, один из старейших и, наверное, самый известный в мире вендор, который точно разбирается в сетях; - в основе своей использует<strong>DPDK</strong>, что позволяет получать хорошую сетевую производительность на весьма скромном железе; - там есть<strong>python API</strong>.</p>
5 <h2>Так что же такое wrex и зачем я его написал?</h2>
5 <h2>Так что же такое wrex и зачем я его написал?</h2>
6 <p>Собственно,<strong>wrex</strong>- это обёртка над<strong>API TRex</strong>, которая нужна для того, чтобы избежать некоторых проблем в эксплуатации и получить то, что нам нужно. Как и любой другой продукт,<strong>TRex</strong>не идеален: я писал багрепорты, делал пулреквесты, потому что были определенные проблемы.</p>
6 <p>Собственно,<strong>wrex</strong>- это обёртка над<strong>API TRex</strong>, которая нужна для того, чтобы избежать некоторых проблем в эксплуатации и получить то, что нам нужно. Как и любой другой продукт,<strong>TRex</strong>не идеален: я писал багрепорты, делал пулреквесты, потому что были определенные проблемы.</p>
7 <p>К тому же, всё, что<strong>API</strong>умеет - это просто запустить тест с некоторыми характеристиками и получить оттуда данные по запросу. Помимо того,<strong>TRex API</strong>имеет 2 разных синтаксиса для его разных режимов работы, что неудобно, не говоря уже о порой невнятных сообщениях об ошибках.</p>
7 <p>К тому же, всё, что<strong>API</strong>умеет - это просто запустить тест с некоторыми характеристиками и получить оттуда данные по запросу. Помимо того,<strong>TRex API</strong>имеет 2 разных синтаксиса для его разных режимов работы, что неудобно, не говоря уже о порой невнятных сообщениях об ошибках.</p>
8 <p>В общем, задача была привести всё это дело к<strong>единому интерфейсу</strong>, а также иметь возможность нормально обрабатывать ошибки. Это во-первых. Во-вторых, нужно было что-то, что позволило бы запускать тесты в виде некой<strong>последовательности</strong>задач, поскольку у параметров тестирования могла быть своя логика. В-третьих, нужна была возможность использовать<strong>сложные солверы</strong>, которые могли бы перезапускать тесты с некими новыми вычисленными параметрами для проверки каких-то гипотез и т. п. Кроме того, API генерирует много данных, хотелось бы их как-то гибко<strong>фильтровать</strong>.</p>
8 <p>В общем, задача была привести всё это дело к<strong>единому интерфейсу</strong>, а также иметь возможность нормально обрабатывать ошибки. Это во-первых. Во-вторых, нужно было что-то, что позволило бы запускать тесты в виде некой<strong>последовательности</strong>задач, поскольку у параметров тестирования могла быть своя логика. В-третьих, нужна была возможность использовать<strong>сложные солверы</strong>, которые могли бы перезапускать тесты с некими новыми вычисленными параметрами для проверки каких-то гипотез и т. п. Кроме того, API генерирует много данных, хотелось бы их как-то гибко<strong>фильтровать</strong>.</p>
9 <p>Всем вышеперечисленным обёртка<strong>wrex</strong>и занимается. Она предоставляет единый интерфейс для режимов оригинального TRex, имеет какие-то генерик солверы и позволяет использовать внешние солверы, написанные на python, благодаря которым тесты могут иметь специфические параметры, основанные на некоторой внешней логике, и вместо того, чтобы писать всё вручную, система позволяет получать<strong>итоговый результат автоматически</strong>.</p>
9 <p>Всем вышеперечисленным обёртка<strong>wrex</strong>и занимается. Она предоставляет единый интерфейс для режимов оригинального TRex, имеет какие-то генерик солверы и позволяет использовать внешние солверы, написанные на python, благодаря которым тесты могут иметь специфические параметры, основанные на некоторой внешней логике, и вместо того, чтобы писать всё вручную, система позволяет получать<strong>итоговый результат автоматически</strong>.</p>
10 <h2>Как это работает?</h2>
10 <h2>Как это работает?</h2>
11 <p>Например, нужно выяснить параметры пропускной способности новой модели оборудования для некого паттерна трафика. Всё, что потребуется сделать, - это указать<strong>паттерн</strong>и<strong>солвер</strong>с некоторыми входными параметрами и просто подождать - система сама всё сделает. Никто ведь не будет спорить с тем, что вручную это делать тяжело, тем более, если тест, например, стабильности должен длиться сутками. И ещё один момент: результаты тестов можно хранить с целью<strong>анализа</strong>в будущем, так как система позволяет сохранить все данные, включая дополнительно отфильтрованные данные, если, к примеру, они нужны для чего-то другого.</p>
11 <p>Например, нужно выяснить параметры пропускной способности новой модели оборудования для некого паттерна трафика. Всё, что потребуется сделать, - это указать<strong>паттерн</strong>и<strong>солвер</strong>с некоторыми входными параметрами и просто подождать - система сама всё сделает. Никто ведь не будет спорить с тем, что вручную это делать тяжело, тем более, если тест, например, стабильности должен длиться сутками. И ещё один момент: результаты тестов можно хранить с целью<strong>анализа</strong>в будущем, так как система позволяет сохранить все данные, включая дополнительно отфильтрованные данные, если, к примеру, они нужны для чего-то другого.</p>
12 <p><em>Ознакомиться с исходным кодом обёртки<strong>wrex</strong>можно по ссылке на<a>репозиторий</a>в GitHub. Свои вопросы по работе Wrex оставляйте в комментариях.</em></p>
12 <p><em>Ознакомиться с исходным кодом обёртки<strong>wrex</strong>можно по ссылке на<a>репозиторий</a>в GitHub. Свои вопросы по работе Wrex оставляйте в комментариях.</em></p>
13  
13