Сложный шейпер ipfw+dummynet (or ng_car). Как ?
Добавлено: 2012-02-12 6:31:44
Добрый день!
Пытаюсь сообразить, каким образом реализовать следующую схемку:
есть канал в мир 10мбит/с, есть NAS (FreeBSD 8.2 + mpd5) и есть биллинг, который управляет mpd через radius, сгребает статистику по netflow.
Есть несколько тарифов с различными полосами (512 кбит/с, 1024, 2048 и т.д.). Сейчас шейпер настроен по прицнипу: 1 тариф = 1 pipe с заданной скоростью и маской-шаблоном для динамических очередей 0xffffffff. Т.е. для каждого пользователя создается динамический pipe со скоростью тарифного плана. Пока канала хватает. Но, если взглянуть чуть вперед, то приходит понимание, что скоро такие "персональные pipes" забьют канал. Есть идея в каждом pipe сделать очереди с маской 0xffffffff, чтобы клиенты разделяли полосу внутри трубы, но это скажется на "честности" тарифа, и в вечернее время вряд ли кто близко увидит заявленную.
Вопрос: возможно ли сделать как бы "pipes in pipe": создать "родительскую" трубу, скажем, 9,5mbit/s, а в ней уже поместить различные pipe (тарифы) с более мелкими скоростями и назначит им приоритеты, чтобы если есть полоса в родительской - то дочерние могли выходить на заявленной скорости тарифа, если в родительской нет полосы - равномерно распределять между тарифами, и внутри тарифа между пользователями. Если есть идеи, как это сделать с помощью Dummynet или Netgraph - буду рад. Спасибо!
Пытаюсь сообразить, каким образом реализовать следующую схемку:
есть канал в мир 10мбит/с, есть NAS (FreeBSD 8.2 + mpd5) и есть биллинг, который управляет mpd через radius, сгребает статистику по netflow.
Есть несколько тарифов с различными полосами (512 кбит/с, 1024, 2048 и т.д.). Сейчас шейпер настроен по прицнипу: 1 тариф = 1 pipe с заданной скоростью и маской-шаблоном для динамических очередей 0xffffffff. Т.е. для каждого пользователя создается динамический pipe со скоростью тарифного плана. Пока канала хватает. Но, если взглянуть чуть вперед, то приходит понимание, что скоро такие "персональные pipes" забьют канал. Есть идея в каждом pipe сделать очереди с маской 0xffffffff, чтобы клиенты разделяли полосу внутри трубы, но это скажется на "честности" тарифа, и в вечернее время вряд ли кто близко увидит заявленную.
Вопрос: возможно ли сделать как бы "pipes in pipe": создать "родительскую" трубу, скажем, 9,5mbit/s, а в ней уже поместить различные pipe (тарифы) с более мелкими скоростями и назначит им приоритеты, чтобы если есть полоса в родительской - то дочерние могли выходить на заявленной скорости тарифа, если в родительской нет полосы - равномерно распределять между тарифами, и внутри тарифа между пользователями. Если есть идеи, как это сделать с помощью Dummynet или Netgraph - буду рад. Спасибо!