Перейти к содержимому
Калькуляторы

BRAS под PPPoE\IPoE выбираем аппаратное решение

Доброго времени суток.

Подскажите по выбору BRAS для терминации абонентов.

Используем PPPoE, в планах перейти на IPoE+Opt82.

Трафик в районе 2Gbps FullDuplex.

 

Вот выбираю между Cisco ASR1002 и Ericsson SE100

Или что оптимальнее по цене\производительность?

 

Щас все построено на FreeBSD+MPD5(PPPoE)+IPFW(шейпер)+PF(NAT) но количество серверов уже зашкаливает, хотелось бы большинство задач(терминирование,шейп(динамический), возможно NAT) свести в одну железку.

 

Или еще может что посоветуете?

Изменено пользователем goletsa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Или еще может что посоветуете?

Alcatel-Lucent 7750 SRc4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

алкктель отнимут много времени на обучение. СЕ100 гораздо проще. сам циско-брасы не трогал, но считаю, что у эрикссона самый человечный ценник на 3гбит браса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно у автора уточнить сколько сессий и сколько серверов?

 

Понятие зашкаливает непонятно. Сам смотрю на свои сервера, трафика пока меньше, но смотрю на будущее. Сейчас стоит 2 сервера, больше для резервирования. Реальная нагрузка при выключении одного сервера - около 1.6к сессий (pptp + pppoe, 70% + 30%), трафик по гигу на вход и выход, нагрузка около 40-50%.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5x(NAT+SHAPER), 3xPPPOE.

Средний трафик через 1 сервер NAT 400-600Mbit FDX, 100(in)+100(out)kpps на интерфейс гдето.

Машинки - 1U платформы на s775(Q9650) или s1156(Xeon 3480).

Сессий на PPPoE (суммарно) порядка 3к

Изменено пользователем goletsa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

как показывает печальный личный опыт нат на asr100x из-за кривости софта и прочих неописуемых глюков работает плохо, например тупо падает и не даёт через себя гонять gre трафик, как pppoe и l2tp bras работает нормально, если абонам белые ипешники давать

 

кривость софта частично компенсируется рутрекером если нету смартнета, который стоит негуманно для людей, вынужденных использовать нат

 

если использовать asr100x как вариант выбить себе белых ипешников и на одной железине сделать pppoe брас + bgp border вопрос упирается только в деньги, которые можно найти в кредитной форме в банке

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня SR1600UR + 2 x X5560.

НАТа нет. Я выдаю белые всем, но на брасе есть шейпер для всех.

Тарифы от 512 до 100. 2 интерфейса, в ЧНН примерно по 200к на вход и выход на каждом.

Судя по загрузке - думаю на 2-3к сессий должне быть затык, но надо проверять, у меня пока нет столько юзверей.

Для надежности два сервака легко прожуют такой траф и сессии.

Под бордер отдельный сервак стоит. Там нагрузка заметно меньше, но там же и биллинг приютился. Просто держит 3 фул-вью и простую маршрутизацию + netflow, ну и сам биллинг.

 

Сам много раз смотрел в сторону железок, но никак не получалось по цене хоть какое-то разумное решение. Обычно разница не менее 10 раз в цене. Это перебор.

М.б. Вам стоит свои сервера оптимизировать? В свое время пришлось попилить немного, иначе затыки были на ровном месте...

Изменено пользователем Hawk128

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У SE вроде с натом тоже проблемы на GRE трафике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насколько смог - оптимизировал.

В основном по прерываниям упираюсь и в шейпер(dummynet много проца ест).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

8 машин на 3к активных абонов? Это дофига ИМХО... Линукс брас (пппое + иерархический шейпер) спокойно держит 800+ абонов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В основном по прерываниям упираюсь

Какие сетевые карты?

Если не Интел, то замените на Интел.

Если Интел, то http://forum.nag.ru/forum/index.php?showtopic=47174 и http://forum.nag.ru/forum/index.php?showtopic=56150 уже прочли?

 

и в шейпер(dummynet много проца ест).

Тоже обсуждалось тут много раз.

Наиболее частая причина - прерывания и dummynet находятся на ядрах с раздельными кэшами и/или прыгают с ядра на ядро.

 

Пример шейпера с Freebsd 8.2, процессор Core2 e8500, встроенные карты broadcom.

Трафик 380+230mbps, 60+50kpps.

Загрузка CPU:

 PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME    CPU COMMAND
  11 root     171 ki31     0K    32K CPU0    0 4440.6 57.96% {idle: cpu0}
  11 root     171 ki31     0K    32K RUN     1 4227.8 49.46% {idle: cpu1}
  12 root     -68    -     0K   272K WAIT    1 3262.2 44.58% {irq257: bge1}
  12 root     -68    -     0K   272K WAIT    0 2805.1 41.41% {irq256: bge0}
   0 root     -68    0     0K   112K -       1 1755.7  2.59% {dummynet}
  12 root     -32    -     0K   272K WAIT    1 214.2H  1.07% {swi4: clock}
  18 root      44    -     0K    16K syncer  0  17.0H  0.00% [syncer]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Карты Intel, 9402 dualport (em драйвер) или встроенные в платформу SR1630HGPRX (igb).

версия FreeBSD - 7.2-7.4 amd64

 

Вот пример цифр с одного из более новых (SR1630HGPRX+Xeon X3470@2.93GHz)

$ top -SP

last pid: 12467;  load averages:  0.16,  0.18,  0.14   up 18+12:42:56  17:08:48
182 processes: 7 running, 152 sleeping, 23 waiting
CPU 0:  1.2% user,  0.0% nice,  1.8% system, 29.2% interrupt, 67.8% idle
CPU 1:  6.4% user,  0.0% nice, 29.8% system,  2.9% interrupt, 60.8% idle
CPU 2:  0.0% user,  0.0% nice,  7.6% system,  0.0% interrupt, 92.4% idle
CPU 3:  0.0% user,  0.0% nice,  4.1% system, 62.6% interrupt, 33.3% idle
Mem: 107M Active, 292M Inact, 580M Wired, 456K Cache, 414M Buf, 2901M Free
Swap: 4096M Total, 4096M Free

 PID USERNAME  THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
  12 root        1 171 ki31     0K    16K CPU2    2 210.1H 88.38% idle: cpu2
  14 root        1 171 ki31     0K    16K CPU0    0 249.9H 69.34% idle: cpu0
  13 root        1 171 ki31     0K    16K RUN     1 327.0H 50.10% idle: cpu1
  30 root        1 -68    -     0K    16K WAIT    3 219.3H 48.34% irq256: igb0
  36 root        1 -68    -     0K    16K CPU0    3 213.0H 45.41% irq260: igb2
1161 root        5   4  -15 30644K 24564K sbwait  3  21.1H 32.81% ipcad
  11 root        1 171 ki31     0K    16K CPU3    3 173.0H 30.22% idle: cpu3
  56 root        1 -68    -     0K    16K CPU2    2 275.4H 25.78% dummynet
1348 root        1   8  -15 61668K 42788K nanslp  3  31.8H  7.28% perl5.12.3
  31 root        1 -68    -     0K    16K -       1 721:56  0.83% igb0 que
  37 root        1 -68    -     0K    16K -       1 853:54  0.20% igb2 que
  16 root        1 -32    -     0K    16K WAIT    0 118:32  0.00% swi4: clock 
1341 root        1   8  -15 24720K  8168K nanslp  1  52:56  0.00% perl5.12.3
[goletsa@nat4 ~]$ netstat -hw1
           input        (Total)           output
  packets  errs      bytes    packets  errs      bytes colls
      69K     0        53M        65K     0        53M     0
      70K     0        56M        66K     0        55M     0
^C


 


$ cat /boot/loader.conf 
geom_mirror_load="YES"

if_igb_load="YES"
hw.igb.rxd=2048
hw.igb.txd=2048
hw.igb.num_queues=1
hw.igb.enable_aim=1
hw.igb.low_latency=1000
hw.igb.ave_latency=2000
hw.igb.bulk_latency=4000
hw.igb.rx_process_limit=100
hw.igb.fc_setting=0

pps_N4.png

bps_n4.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Карты Intel, 9402 dualport (em драйвер) или встроенные в платформу SR1630HGPRX (igb).

версия FreeBSD - 7.2-7.4 amd64

А версии драйверов какие?

 

hw.igb.num_queues=1

Если карт меньше, чем процессорных ядер, то можно сделать больше.

 

Если гипертрединг на Ксеонах включен, то лучше выключить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Наиболее частая причина - прерывания и dummynet находятся на ядрах с раздельными кэшами и/или прыгают с ядра на ядро.

Ещё помогает net.inet.ip.dummynet.hash_size=65535

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

HT естественно выключен.

 

Карты работают 2 из 4 возможных на платформе, по чипам это одно и тоже что ET Dualport(2 чипа на плате).

 

Если я сделаю

hw.igb.num_queues=1
>1 то поидее может процесорного времени для шейпера не остаться?

Плюс тогда небольшой вопрос по pf nat, насколько безопасно задирать значения количества сессий?

 

$ cat /etc/pf.conf 

set limit states 1024000
set optimization aggressive

scrub in all fragment reassemble
scrub out all random-id max-mss 1480

table <peer> const { 10.0.0.0/8}

nat pass on igb2 from 10.0.0.0/8 to !<peer>  -> 178.236.X.X

 

Ещё помогает net.inet.ip.dummynet.hash_size=65535

1024 стоит.

256 насколько помню дефолт.

Не много ли 65535 задирать?

 

И что делать с:

net.inet.ip.dummynet.io_fast
net.inet.ip.fastforwarding

Включение одновременно повышает LA, использую только второе.

Изменено пользователем goletsa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Intel(R) PRO/1000 Network Connection version - 2.0.7

Для igb.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я сделаю

Цитата

hw.igb.num_queues=1

>1 то поидее может процесорного времени для шейпера не остаться?

При правильной настройке dummynet не должен потреблять процессор в отдельном потоке, всё должно шейпироваться в прерываниях.

 

Плюс тогда небольшой вопрос по pf nat, насколько безопасно задирать значения количества сессий?

С этим проблем не возникало. Гораздо хуже, когда их недостаточно.

 

> Ещё помогает net.inet.ip.dummynet.hash_size=65535

 

1024 стоит.

256 насколько помню дефолт.

Не много ли 65535 задирать?

Дефолт - это 64.

Смотрите ipfw pipe list | grep ' buckets '

Желательно, чтобы значение hash_size было с запасом больше, чем значение активных пайпов в каждой строке.

Т.е. это может быть и 1024, и 4096.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

dummynet прибит к одному процу?

Лучше его на ng_car поменять, он многопроцессорность хорошо кушает. (В MPD5 легко вынести через RADIUS атрибуты).

ipcad у Вас нетфлоу гонит? Тогда лучше прицепите на общий интерфейс ng_netflow - нагрузка в разы упадет, и терять ничего не будет.

 

По НАТу - можно попробовать ipfw nat или напрямую ng_nat. В 9-й версии это похоже уже одно и то же...

Изменено пользователем Hawk128

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не прибит

при ng_car возможно ли скорость менять динамически7

ipcad через rsh отдает билингу статистику

 

9 версия кончено хорошо но на нее еще тогда обновиляться надо. И будет ли какой профит от этого пока непонятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я сделаю

Цитата

hw.igb.num_queues=1

>1 то поидее может процесорного времени для шейпера не остаться?

При правильной настройке dummynet не должен потреблять процессор в отдельном потоке, всё должно шейпироваться в прерываниях.

 

Плюс тогда небольшой вопрос по pf nat, насколько безопасно задирать значения количества сессий?

С этим проблем не возникало. Гораздо хуже, когда их недостаточно.

 

> Ещё помогает net.inet.ip.dummynet.hash_size=65535

 

1024 стоит.

256 насколько помню дефолт.

Не много ли 65535 задирать?

Дефолт - это 64.

Смотрите ipfw pipe list | grep ' buckets '

Желательно, чтобы значение hash_size было с запасом больше, чем значение активных пайпов в каждой строке.

Т.е. это может быть и 1024, и 4096.

 

ipfw pipe list | grep 'buckets' | wc -l
   8329

Много строк вида:

17789:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
17569:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
16009:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
09752:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
14388:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
13248:  90.000 Mbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
12708:   2.200 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
06872:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
17637:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
07609:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
08897:  90.000 Mbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
06513:  21.427 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
03428:  90.000 Mbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
15888:  90.000 Mbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail

 

ipfw выглядит както так(почти дефолтовый для nodeny):

00110     4171358      296712175 allow ip from any to any via lo0
00120     7448400      554055491 skipto 1000 ip from me to any
00130     1956986      109813919 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17
00160  1965396487   128688361979 skipto 2000 ip from any to me
00200 75480823456 63083568395706 skipto 500 ip from any to any via igb2
00280      225644       38669136 fwd 127.0.0.1,81 tcp from table(35) to not me dst-port 80 in
00290     3355481      503176061 fwd 127.0.0.1,8080 tcp from not table(0) to not me dst-port 80 in
00300 35412529890 20170914882992 skipto 4500 ip from any to any in
00400 40209132225 42945737401775 skipto 450 ip from any to any recv igb2
00420   380168255   382581090805 tee 1 ip from any to any
00450 40583451430 43321445999613 tee 2 ip from any to any
00490 40566257719 43302207316645 allow ip from any to any
00500 40528358469 43346711412431 skipto 32500 ip from any to any in
00510 35003141734 19775986151944 tee 1 ip from any to any
00540 34982222026 19764419183541 allow ip from any to any
01000           0              0 allow udp from any 53,7723 to any
01010         639         513085 allow tcp from any to any setup keep-state
01020          14           1244 allow udp from any to any keep-state
01100     7448312      554049417 allow ip from any to any
02000           0              0 check-state
02010     3461405     1228284384 allow icmp from any to any
02020      342104       17429675 allow tcp from any to any dst-port 80,443
02050  1948129114   126695436844 deny ip from any to any via igb2
02060           0              0 allow udp from any to any dst-port 53,7723
02100    13463829      746747859 deny ip from any to any
05000     5562336      416155474 deny ip from not table(0) to any
05001           0              0 skipto 5010 ip from table(127) to table(126)
05002 35050196742 19792779040750 skipto 5030 ip from any to not table(2)
05003      364748       18922397 deny ip from any to not table(1)
05004   356404768   377700687792 pipe tablearg ip from table(21) to any
05005           1             40 deny ip from any to any
05010           0              0 pipe tablearg ip from table(127) to any
05030     2188891      105616676 deny tcp from table(15) to any dst-port 25
05130   376047758   267436273428 allow ip from table(31) to table(30)
05400 34671959801 19525237016335 pipe tablearg ip from table(11) to any
32000         292         134311 deny ip from any to any
32490        1295          76539 deny ip from any to any
33000           0              0 pipe tablearg ip from table(126) to table(127)
33001 40528358423 43346711409023 skipto 33010 ip from not table(2) to any
33002          47           4888 pipe tablearg ip from any to table(20)
33003           0              0 deny ip from any to any
33130      747781       47590172 allow ip from table(30) to table(31)
33400 40527326318 43346631542133 pipe tablearg ip from any to table(10)
65535      284355       32280468 allow ip from any to any

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ipfw pipe list | grep 'buckets' | wc -l

Причём здесь это??? Ещё раз:

Смотрите ipfw pipe list | grep ' buckets '

Желательно, чтобы значение hash_size было с запасом больше, чем значение активных пайпов в каждой строке.

Обратите внимание на кавычки с пробелами.

 

Чтобы вывести только превышающие значения:

ipfw pipe list | perl -ne '/ (\d+) buckets (\d+) / and ($1 < $2) and print'

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ipfw pipe list | grep 'buckets' | wc -l

Причём здесь это??? Ещё раз:

Смотрите ipfw pipe list | grep ' buckets '

Желательно, чтобы значение hash_size было с запасом больше, чем значение активных пайпов в каждой строке.

Обратите внимание на кавычки с пробелами.

ничего не показывает вообще

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

dummynet обязательно прибить (cpuset)

да, в ng_car скорость менять на лету можно, сам меняю ночью. Скрипт чуть сложнее чем для dummynet.

неужели все успевает отдавать? при большом трафике лучше уходить на netflow. Что за биллинг?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтобы вывести только превышающие значения:

ipfw pipe list | perl -ne '/ (\d+) buckets (\d+) / and ($1 < $2) and print'

Пусто. Может быть связано что у меня 7.4-RELEASE стоит?

Другой формат вывода, итд...

dummynet обязательно прибить (cpuset)

попробую

да, в ng_car скорость менять на лету можно, сам меняю ночью. Скрипт чуть сложнее чем для dummynet.

у меня шейпер отделен от NAS(PPPOE).

ng_car я так понял по интерфейсам работает или по IP адресам тоже умеет?

неужели все успевает отдавать?

да вроде как

при большом трафике лучше уходить на netflow

думал о ng_netflow но в билинге нетфлоу немного странно настраивается

Что за биллинг?

Nodeny

Изменено пользователем goletsa

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Схемы ng_car разные, но лучше всего на интерфейс, MPD5 умеет его сам прикручивать более менее нормально.

Так что можно вынести на НАСы шейпинг. За одно и НАТ разгрузите. Следом и НАТ можно попробовать бросить на НАСы и посмотреть как отреагирует.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас