Цитата Rezor666:
Маршутизатор ловит его запрос и изменяет, после этого отправляет дальше на сервер.
Таким образом уже не пользователь Вася будет выбирать битрейт а наш маршутизатор. »
|
Рассуждая чисто теоретически, Вы правы. Таким образом можно было бы управлять скоростью поступления данных.
...если бы такой способ существовал в природе. К сожалению, его нет.
При запросе на передачу потоковых данных, битрейт выбирается не одним из полей запроса, а просто указанием URL.
Щелкнете по одной ссылке на сайте - будет один битрейт. Щелкнете по другой - другой. Или тот же самый. Непредсказуемо.
Сайт может предлагать несколько источников потоковых мультимедийных данных с разным битрейтом. Или несколько разных с одинаковым. Или один источник с несколькими битрейтами. Всё зависит от автора сайта. Даже если какой-то телеканал и можно смотреть с разном качествым (что далеко не всегда так), то автоматизации процесс выбора правильной ссылки абсолютно не поддается.
Еще раз повторю: сам протокол установления RTP-сессии не содержит поля битрейта, который можно было бы изменить.
Правда есть еще один момент, о котором необходимо упомянуть.
Формально до 5% от объема потоковых данных занимают пакеты управляющего протокола RTCP, в котором, в частности, передается статистика по проценту успешно принятых пакетов. Предполагалось, что, обнаружив высокий процент потерь, сервер потоковых данных может уменьшить скорость передачи.
На практике этого никогда не происходит. Почему? Потому что это почти всегда мультикаст - одни и те же данные пересылаются одновременно множеству клиентов. Снижать скорость передачи (даже если эта возможность вообще реализована на сервере) изза одного клиента никто не станет.
Поэтому идея у Вас в теории хорошая, но, увы, не реализуемая.
И это логично. Допустим, у Вас есть DVD диск, который Вы транслируете в интернет. Со стандартным битрейтом - 1.32Мбайт/сек. Тут Вам кто-то сообщает, что не успевает принимать данные и просит снизить битрейт. Как Вы это сделаете? Будете перекодировать видео "на лету" по требованию клиента? А если их сотня и каждый хочет свой собственный битрейт?
Так что единственный способ попытаться дать Пете спокойно пользоваться интернетом - это реагировать на любой большой трафик как на сетевую угрозу (помните, Вы меня в самом начале спрашивали что общего между DDOS и потоковым видео?) и блокировать ip с которого эти данные поступают. Какой-нибудь IDS. Snort, к примеру.
Разумеется это не помешает отправленным с сервера пакетам забить канал. Однако когда соединение с сервером разорвется, сервер перестанет отправлять данные (аналогично: запущенный по ssh ping продолжит работу, но прервется сама ssh сессия).
Но ведь это не то, что мы хотели, правда? Такое решение сводится по сути к отключению Васи от сети. А не к выделению ему остатков от полосы пропусканию не использованных Петей.
К тому же, подобная блокировка легко обходится путем использования proxy-сервера.