Jump to content

Recommended Posts

Posted
так и делаем, freebsd, mpd5
А взглянуть на "пакет" передаваемых атрибутов можно?

И еще - сколько макс. он-лайн держит mpd у Вас?

 

Posted (edited)
у меня в потолке было 850 сессий, трафика 57М, 20kpps. Шейп на ngcar, ос 6.4
Неплохо! У меня пока выше 300 сессий не поднималось. Шейп аналогичный (на ng_car), mpd 5.2, FreeBSD 6.3 (amd64)

Скармливаю радиусу такую конструкцию для mpd

mpd-filter +="1#1=nomatch dst net 172.16.0.0/12", 
mpd-filter +="1#2=nomatch dst net 192.33.48.0/23", 
mpd-filter +="2#1=nomatch src net 172.16.0.0/12", 
mpd-filter +="2#2=nomatch src net 192.33.48.0/23", 
mpd-limit +="in#1#Ext=flt1 shape 512000 96000 pass", 
mpd-limit +="in#2#Loc=all shape 384000 72000 pass", 
mpd-limit +="out#1#Ext=flt2 shape 512000 96000 pass", 
mpd-limit +="out#2#Loc=all rate-limit 4000000 750000 1500000 pass", 
mpd-input-acct +="Ext", 
mpd-output-acct +="Ext"

Фильтры только для того, чтобы mpd отдавал радиусу только "внешний" трафик.

Пока всё жужжит очень красиво, тьфу-тьфу-тьфу! :-)

 

P.S. До mpd+ng_car юзал pptpd на Linux (Fedora 6) с "костылями" на скриптах. Не скажу, что было проблемно, т.к. он-лайн было не более 100, больше не нравились собственно "костыли". Так-что испытать все "прелести" pptpd не довелось - вовремя ушел на мпд, чем в настоящее время очень доволен.

Сейчас федора трудится в качестве роутера и фаервола (вот в этом плане, ИМХО, у Linux-а есть свои преимущества перед FreeBSD). Но это уже совсем другая тема...

Edited by AlKov
Posted
у меня в потолке было 850 сессий, трафика 57М, 20kpps. Шейп на ngcar, ос 6.4
Неплохо! У меня пока выше 300 сессий не поднималось. Шейп аналогичный (на ng_car), mpd 5.2, FreeBSD 6.3 (amd64)

Скармливаю радиусу такую конструкцию для mpd

mpd-filter +="1#1=nomatch dst net 172.16.0.0/12", 
mpd-filter +="1#2=nomatch dst net 192.33.48.0/23", 
mpd-filter +="2#1=nomatch src net 172.16.0.0/12", 
mpd-filter +="2#2=nomatch src net 192.33.48.0/23", 
mpd-limit +="in#1#Ext=flt1 shape 512000 96000 pass", 
mpd-limit +="in#2#Loc=all shape 384000 72000 pass", 
mpd-limit +="out#1#Ext=flt2 shape 512000 96000 pass", 
mpd-limit +="out#2#Loc=all rate-limit 4000000 750000 1500000 pass", 
mpd-input-acct +="Ext", 
mpd-output-acct +="Ext"

Фильтры только для того, чтобы mpd отдавал радиусу только "внешний" трафик.

Пока всё жужжит очень красиво, тьфу-тьфу-тьфу! :-)

А на линуксах подобные навороты для подсчета на РРРоЕ можно наколдовать?

Posted

А на линуксах подобные навороты для подсчета на РРРоЕ можно наколдовать?

Скорее всего, что нет. Во всяком случае, для себя я подходящего решения не нашел. Поэтому и перевел все это "хозяйство" на FreeBSD, что и Вам советую. :)

Posted

Переход на новую систему? Было бы толковое руководство с описанием хотя бы основных граблей - переезд на новую платформу - дело хлопотное.

Posted
Переход на новую систему? Было бы толковое руководство с описанием хотя бы основных граблей - переезд на новую платформу - дело хлопотное.
До боли знакомые фразы! Сам "пел" те же песни, пока не попробовал. ;)

Но поступил немного похитрее - выбил у начальства денег на новое железо для NAS-а, неспеша воздвигнул на него FreeBSD (с помощью гугла, плаканья на форумах и какой-то матери:)). Фрю переустанавливал 3 раза. :) Далее также неспешно перетащил на новую машину линуксовый биллинг, запустил второй NAS и приступил к отладочным "играм", не трогая боевую машину.

На все про все (вместе с изучением особенностей незнакомой до этого мне ОС) у меня ушло около 2-х месяцев. При этом еще занимался текущими делами. Затем назначил "час Х" и.. Перевел новую систему в боевое положение. Далее пошел собственно тюнинг (фильтры и проч.) уже на "живых зверях". :)

Правда, работать в эти месяцы пришлось не по 8 час, а по 12-14... Вообщем, было бы желание.

Posted
А на линуксах подобные навороты для подсчета на РРРоЕ можно наколдовать?
Скорее всего, что нет. Во всяком случае, для себя я подходящего решения не нашел. Поэтому и перевел все это "хозяйство" на FreeBSD, что и Вам советую. :)

Можно, можно наколдовать...

Просто немного со скриптами обращаться надо уметь

Posted
А на линуксах подобные навороты для подсчета на РРРоЕ можно наколдовать?
Скорее всего, что нет. Во всяком случае, для себя я подходящего решения не нашел. Поэтому и перевел все это "хозяйство" на FreeBSD, что и Вам советую. :)

Можно, можно наколдовать...

Просто немного со скриптами обращаться надо уметь

Шейпить проблема не большая. Вот подсчет не всего трафика, а части, а еще лучше отдельно 2-3 разных видов отдельно очень интересует.
Posted
Я так понимаю mpd можно указать считать только определенный класс траффика? В этом суть?
угу, в этом то и прикол, что не надо netflow разгребать...

 

mpd при acct-update собирает с ng_bpf нод информацию сколько трафика прошло по каждой,

у каждой ноды есть своё имя (у меня - это идентифатор зоны в базе)

Posted

nuclearcat

У меня нет радиус-аккаунтинга (через тунели только анлимы), но действительно, не могли б натолкнуть на мысль как считать по направлениям.

 

ISG это умеет делать, я проверял, а вот как это сделать с pptpd - нет идей даже отдаленнно.

 

 

Posted (edited)

Linux,

accel-pptpd либо pppoe (можно даже на одном и том же железе одновременно,

pppd, пропатченный для подсчета трафика по разным направлениям (http://abills.net.ua/wiki/doku.php?id=abills:docs:linux:lepppd:ru)

шейпинг через tc (htb, sfq)

 

 

более 1000 сессий - без проблем держит.

железо - Xeon™ CPU 3.00GHz и Core™2 Quad CPU Q8200 @ 2.33GHz

RAM 2 GB

2xIntel gigabit Ethernet

 

вот в данный момент (далеко не ЧНН) - 1031 сессия

Core™2 Quad CPU Q8200 @ 2.33GHz

load average: 0.79, 0.91, 0.81

 

 

Edited by MagMike
Posted
Linux,

accel-pptpd либо pppoe (можно даже на одном и том же железе одновременно,

pppd, пропатченный для подсчета трафика по разным направлениям (http://abills.net.ua/wiki/doku.php?id=abills:docs:linux:lepppd:ru)

шейпинг через tc (htb, sfq)

Вопрос как в accel-pptpd понаправлениям считать )

Для меня задача сугубо теоретическая, но очень интересно.

Статью у Асмодея читал.

 

Posted

Примеры для FreeBSD ерундовые. Ни к чему плодить статические пайпы для каждого пользователя.

Намного удобнее использовать динамику.

 

# 128Kbit pipes
$fwcmd pipe 101 delete
$fwcmd pipe 102 delete
$fwcmd pipe 101 config bw 128Kbit/s queue 11 mask dst-ip 0xffffffff
$fwcmd pipe 102 config bw 128Kbit/s queue 11 mask src-ip 0xffffffff

# 256Kbit pipes
$fwcmd pipe 103 delete
$fwcmd pipe 104 delete
$fwcmd pipe 103 config bw 256Kbit/s queue 22 mask dst-ip 0xffffffff
$fwcmd pipe 104 config bw 256Kbit/s queue 22 mask src-ip 0xffffffff


$fwcmd pipe tablearg ip from any to table(1) 
$fwcmd pipe tablearg ip from any to any src-ip table(2)

 

При этом данные дергаются из радиуса в виде:

 

mpd-table-static += "1=192.168.0.1 101"
mpd-table-static += "2=192.168.0.1 102"

mpd-table-static += "1=192.168.0.2 103"
mpd-table-static += "2=192.168.0.2 104"

 

В случае с ng_car можно упереться в то, что все acl не влезут в пакет радиуса (например, при большом количестве сетей). В mpd 5.3 вроде как сделали профилирование acl через конфиг, еще не смотрел.

Posted
В случае с ng_car можно упереться в то, что все acl не влезут в пакет радиуса (например, при большом количестве сетей).
Это сколько же надо туда напихать?! Вроде как у радиуса пакет до 4Кб.
В mpd 5.3 вроде как сделали профилирование acl через конфиг, еще не смотрел.
Очень интересно! У меня сейчас именно мпд 5.3. А где об этом можно глянуть, не подскажете?

 

Posted
Это сколько же надо туда напихать?! Вроде как у радиуса пакет до 4Кб.
Я уже на сотне префиксов обломался. А по интерфейсу оно фильтровать не умеет ;(
Очень интересно! У меня сейчас именно мпд 5.3. А где об этом можно глянуть, не подскажете?

Added ability to receive link action from AAA in auth reply. It allows AAA to select bundle/repeater configuration for specific user or session.

Added global traffic filters support to reduce auth reply size. 'set global filter ...' commands.

Думаю, плясать нужно от этого. Описывать разные темплейты бандлов с разными глобальными фильтрами, пользователя загонять в тот или иной темплейт в зависимости от тарифа.

Added ability to include other local or remote config files. 'load ...' command able to accept configuration file path/URI as first argument.

А эта штука позволит фильтры хранить в одном месте и при необходимости их обновлять. Смущает только необходимость перезапуска mpd при изменении списка префиксов. Перечитывать конфиг он вроде до сих пор не научился. Поэтому я и предпочитаю работать с пайпами и таблицами в ipfw.

Posted

Linux

по 8к статических хешированных правил tc для всех возможных /19 айпи адресов в сети на каждый из 2-х интерфейсов (вход-исход)

~300м трафика

load average: 0.28, 0.62, 0.80

И не к чему плодить линейные правила.

Posted
azlozello, а можно поподробнее? В частности, не понимаю что значит "cтатических хешированных правил tc", бо в Linux после Фри тяжеловато. Может быть, сможете привести пару примеров?
Posted

Ну простой пример.

tc qdisc add dev eth0 root handle 1: prio bands 3

 

tc qdisc add dev eth0 parent 1:1 handle 10: pfifo

tc qdisc add dev eth0 parent 1:2 handle 11: pfifo

tc qdisc add dev eth0 parent 1:3 handle 14: htb default 0

 

tc filter add dev eth0 parent 14: prio 8 handle 2: protocol ip u32 divisor 32

tc filter add dev eth0 parent 14: prio 8 handle 3: protocol ip u32 divisor 256

tc filter add dev eth0 protocol ip parent 14: prio 8 u32 match ip dst 10.0.0.0/19 hashkey mask 0x00001f00 at 16 link 2:

tc filter add dev eth0 protocol ip parent 14: prio 8 u32 match ip dst 10.0.0.0/19 hashkey mask 0x000000ff at 16 link 3:

 

ну и соответственно по умолчанию ставим например 4к :)

 

tc class add dev eth0 parent 14: classid 14:1000 htb rate 4Kbit ceil 4Kbit quantum 1514 mtu 1500

tc qdisc add dev eth0 parent 14:1000 handle 1000: red limit 1000000 min 5000 max 100000 avpkt 1000 burst 50

tc filter add dev eth0 protocol ip parent 14: prio 8 u32 ht 2:a0: ht 3:00: match ip dst 10.0.0.0/32 flowid 14:1000

--------------------

--------------------

tc class add dev eth0 parent 14: classid 14:10ff htb rate 4Kbit ceil 4Kbit quantum 1514 mtu 1500

tc qdisc add dev eth0 parent 14:10ff handle 10ff: red limit 1000000 min 5000 max 100000 avpkt 1000 burst 50

tc filter add dev eth0 protocol ip parent 14: prio 8 u32 ht 2:a0: ht 3:ff: match ip dst 10.0.0.255/32 flowid 14:10ff

 

---------||-----------

tc class add dev eth0 parent 14: classid 14:1100 htb rate 4Kbit ceil 4Kbit quantum 1514 mtu 1500

tc qdisc add dev eth0 parent 14:1100 handle 1100: red limit 1000000 min 5000 max 100000 avpkt 1000 burst 50

tc filter add dev eth0 protocol ip parent 14: prio 8 u32 ht 2:a1: ht 3:00: match ip dst 10.0.1.0/32 flowid 14:1100

---------||-----------

и т.д. на все возможные айпи адреса

 

Думаю смысл понятен.

Вместо red можно юзать и htb например

 

Потом простецким скриптом делаем

tc class change ...

на нужный нам айпи и выставляем необходимую скорость

 

Этот пример работает достаточно хорошо.

Можно ещё пару оптимизаций сделать для экономии ресурсов и всяких фишек но надо править исходники tc

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.