Мы делаем QoS (контроль трафика) для нашего серверного приложения. Этот сервер предоставляет пользователям службу загрузки файлов, и мы хотим дать разным пользователям разный приоритет и разную пропускную способность. Предположим, что сервер Linux предоставляет нашему приложению полосу пропускания 1M, тогда мы дадим пользователю с наивысшим приоритетом наибольшую полосу пропускания.
Я собираюсь использовать концепции Token и Token Bucket для достижения этой цели, но я не знаю, как использовать навыки таймера и измерения для управления скоростью генерации токенов, поэтому я решил учиться на существующем исходном коде sw. Может ли кто-нибудь порекомендовать какое-нибудь программное обеспечение / инструменты для контроля трафика?
[Обновить]
Я хочу знать, как использовать таймеры для генерации токенов по скорости (поскольку токены генерируются с некоторой скоростью, поэтому мы можем рассмотреть, что поток, который получает токены, будет отправлять данные в сетевой интерфейс с той же скоростью, что и генерируемые токены) .
Обычно приложение не контролирует полосу пропускания, выделенную для определенных сокетов, и не знает, сколько ядро отправляет свой трафик по сравнению с трафиком других приложений.
Утилита tc
(часть iproute2), в сочетании с установочными метками iptables для пакетов и соединений, может использоваться для реализации произвольно сложной иерархической системы ведра токенов (с ее htb
qdisc), и вам следует подумать над этим.
MasterShapper может быть тем, что вы ищете. Можно читать
Он (MasterShapper) нацелен на то, чтобы позволить пользователям изучить и использовать механизм формирования трафика. Это должно быть возможно для всех, кто не имеет более глубоких знаний о Linux и сложном синтаксисе команд tc из пакета iproute2.
и является Открытый источник, так что вы можете, как вы сказали
учиться на существующем исходном коде SW