2009-06-18 7 views
1

Я хотел бы контролировать объем загрузки/скорость на моей стороне - и на стороне сервера, а также (чтобы быть вежливым). ... нет о «мой собственный менеджер закачек».контроль (замедление) загрузки на серверной стороне

Предположим: я разрешаю сыну загружать максимум 500 Мб/день с utube, и все же он инициирует сеанс для загрузки HD-видео 10Gb. (Не обязательно родительский контроль, но технически это хороший пример).

Вопрос у меня есть: как ограничить. Я хочу написать драйвер, который будет управлять этим на уровне TCP (IP?). Возможно ли это на уровне TCP?

Я знаю, что могу обрабатывать его локально (например, сужая окно TCP, которое я рекламирую на сервере, или просто закрывая соединение после XXX байтов).

Но я действительно хочу сказать вежливо (utu) utube: (после того, как соединение было установлено и выполняется загрузка): не пытайтесь изо всех сил пытаться сжать этот фильм на небольшие сегменты, и создать много перегрузок на н/д - мы закончили.

Я бы хотел избежать ненужного н/д на любой стороне; в основном, я хотел бы иметь возможность (на уровне TCP) рассказать другой конец: это он, мы сделали на сегодня. Пожалуйста, не повторите попытку доставить весь фильм, меня не интересует остальная часть (сегодня). (Так что utube просто перестанет загрязнять полосу пропускания мгновенно).

Может запутать вас больше - но, надеюсь прояснить, - вот отрывок из «Полного руководства по программированию сети Linux», стр.31: (Говоря о 6 битой части заголовка TCP: URG, ACK, PSH, RST, SYS, FIN): "" ... возникают ситуации, когда данные должны передаваться вне диапазона. ... Это то, что бит URG вступает в игру. Рассмотрим соединение пользователь хочет прервать, такие как ...»(и т.д.)

Это, вероятно, что я ищу:. отправить Utube„ URG“с„Прервать“ только вещь, которая мне не ясна из этого текста, это «Прервать». это «RST»? или что?

Пожалуйста, нажмите меня немного в правильном направлении.

+0

Что это «Utube»? –

+0

, вы также можете попробовать свою удачу на www.serverfault.com. – akf

ответ

0

Вы можете использовать инфраструктуру существующих QoS для сделать формирование трафика в вашем ящике Linux.

Лучший способ сделать это использовать команду iproute's tc (или) для создания разных очередей и установить ограничения для каждого И, чтобы использовать iptables для классификации пакетов в одну из существующих очередей. Это даст вам максимальную гибкость и тем меньше кода для написания :-) (Что может быть или не быть тем, что вы хотите). Я нашел tool, что supposedly облегчает весь этот процесс.

Примеры here и here.

Вы также можете захотеть взглянуть на Shaperd, чтобы увидеть пример кода (если староват), который использует libipq, что позволяет пакета в очередь в пользовательском пространстве (который впоследствии был заменен libnetfilter_queue).

Если вы не используете Linux, но для Windows, вы можете захотеть взглянуть на QoS API или существующего программного обеспечения, который будет делать это для вас, как Traffic Shaper

+0

Vinko, Это очень информативно, я копаю в нем. СПАСИБО !!! – bzdjamboo

Смежные вопросы