Формирование трафика под Linux - PullRequest
5 голосов
/ 10 октября 2009

Где я могу узнать об управлении / опросе сетевого интерфейса в Linux? Я хотел бы получить конкретную скорость загрузки / выгрузки приложения и установить ограничение скорости для конкретного приложения.

Мне особенно нужна информация, которая может помочь мне написать приложение для формирования трафика с использованием Python.

Ответы [ 3 ]

6 голосов
/ 10 октября 2009

На самом деле это довольно сложное формирование для каждого приложения с использованием инструментов ядра Linux, если только приложение не использует конкретные IP-адреса и / или порты, по которым вы можете сопоставить.

Предполагая, что это так, вам нужно прочитать iptables и, в частности, fwmarks. Вам также нужно будет прочитать о tc. В сочетании эти два инструмента могут делать то, что вы хотите. Linux Advanced Routing & Traffic Control - хорошее место для начала.

Если ваше приложение не использует предсказуемый набор портов / IP-адресов, то вам нужно использовать формирователь пользовательского пространства, например Trickle . Это вставляет себя между приложением и ядром и формирует трафик для этого приложения в пользовательском пространстве.

Я не думаю, что есть какие-либо прямые привязки python для какого-либо из этих инструментов, но было бы просто написать их с помощью python и просто вызвать исполняемые файлы напрямую.

6 голосов
/ 10 октября 2009

Вам нужен пакет iproute2, в котором вы используете команду tc . команды tc выглядят как

tc class add dev eth2 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 1600

Вот существующее приложение Python для формирования трафика , которое использует iproute2.

0 голосов
/ 10 октября 2009

Есть ли причина, по которой вы хотите использовать python? Как уже упоминалось, он, скорее всего, будет передаваться только уже разработанным инструментам для этой цели. Однако, если вы оглянетесь вокруг, вы можете найти такие вещи, как Click! modular router, XORP и другие, которые предоставляют всплывающую подсказку о том, что вы хотите сделать - не говоря уже о всех предложенных предложениях (например, iptables и tc)

...