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

Железо. Собираем идеальный софтовый роутер

немного оффтопика

с чего грузятся ваши софтовые роутеры?

у меня вот половина винтов половина CF флешки, но вот задумался сделать diskless установочную систему.

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

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

Если роутер сломался, флешка клонируется из бэкапа, вставляется в резервный роутер и он ставится на замену сломанному. После чего начинается неспешное разбирательство почему это он вдруг сломался.

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


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

А если вы сделали новую сборку фряхороутера, обновляете путем замены флешки и копирования конфигов с старой флешки на новую?

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


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

А если вы сделали новую сборку фряхороутера, обновляете путем замены флешки и копирования конфигов с старой флешки на новую?

Зависит от того, какая-такая "новая сборка". Если я мигрирую с 6.x на 7.x - то однозначно замена флешки ( точнее замена всего роутера на резервный оттестированный на загрузку с новой флешкой ).

Если же мне просто надо опции ядра поменять, то делается на живую ( предварительно протестировав аналог на стенде ). Конфиги бэкапятся постоянно, то есть копия всегда есть и со старой флешки ничего

не копируется. Флешка обычно смонтирована в RO, для изменений надо перемонтировать в RW, залить по scp, потом обратно.

 

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

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

 

Очень давно ( как появились интелевые карточки с PXE ) проверялись плюсы diskless роутеров - в обычных условиях это нормально работает, но в аварийных ( отсутствие электропитания, авария

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

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


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

скажем порт на циске не успел подняться
со spanning-tree portfast?

А если порт в транке?

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


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

Если порт в транке побоку успел он поднятся или нет, есть на нам stp или нет. pxeboot вланы не шарит.

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

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


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

скажем порт на циске не успел подняться
со spanning-tree portfast?

А если порт в транке?

spanning-tree portfast trunk

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


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

spanning-tree portfast trunk
лупы у меня тоже бывали с portfast и транками (технари начали менять оборудование без согласования)

Траблу я потом долго искал, т.к. в случае portfast выбивает частенько совершенно другой свитч

 

Если порт в транке побоку успел он поднятся или нет, есть на нам stp или нет. pxeboot вланы не шарит.
native vlan может обслуживать PXE, а дальше когда поднимается ОС - обрабатываются уже и тегированные пакеты

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


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

Флешка обычно смонтирована в RO, для изменений надо перемонтировать в RW, залить по scp, потом обратно.

А как происходит установка софта из портов? на сколько я представляю, процесс этот будет очень долгим, а так же будет писатся очень много промежуточных данных на флешку (что полюбому её убивает)?

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


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

А как происходит установка софта из портов? на сколько я представляю, процесс этот будет очень долгим, а так же будет писатся очень много промежуточных данных на флешку (что полюбому её убивает)?

:-)))))))))))))))))))))))))))) Мозги включать не пробовали ?

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


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

man nanobsd для тех, кому лень самому все собирать

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


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

mdmfs -S -o async -s 512m md /usr/obj

mdmfs -S -o async -s 512m md /tmp

 

И диск не напрягается. Только мир так обновить не получится, по очевидным причинам.

 

У меня вообще /tmp всегда меморидиск, так быстрее, а var/tmp на неё смонтирован.

/var/run тоже отдельный меморидиск, только маленький.

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


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

Недавно столкнулся с интересной ситуацией.

 

Имею:

FreeBSD 7.2-STABLE-200906 i386

на Intel S5400SF

CPU: Intel® Xeon® CPU E5472 @ 3.00GHz (2992.51-MHz 686-class CPU)

сетевые карточки: Intel PRO/1000 PT Dual Port Server Adapter

дрова 6.9.6.Yandex[$Revision: 1.36.2.10 $]

hw.em.rxd=4096, hw.em.txd=4096

 

На нём крутится PF с PF-NAT-ом.

 

ubench
CPU: 1098932
MEM:  216933
AVG:  657932

 

На данный момент:

netstat -w1d -I em0
            input          (em0)           output
   packets  errs      bytes    packets  errs      bytes colls
     61861     0   51448613      61722     0   41298573     0
     63224     0   52576667      63347     0   42158414     0
     61317     0   49105607      61522     0   40634633     0
     62569     0   50534536      63166     0   42446905     0
     59208     0   48283050      59477     0   39640865     0
     62020     0   50978795      61053     0   41016699     0
     60187     0   49589923      59897     0   38731987     0
     62295     0   50858048      62014     0   41261804     0
     59008     0   49160978      59090     0   38262584     0
     63466     0   53334080      62334     0   41202621     0

 

top -S
last pid: 69167;  load averages:  8.07,  7.46,  7.29                                                             up 0+20:33:15  17:15:42
85 processes:  13 running, 59 sleeping, 13 waiting
CPU:  0.0% user,  0.0% nice, 97.5% system,  0.0% interrupt,  2.5% idle
Mem: 11M Active, 220M Inact, 242M Wired, 120K Cache, 112M Buf, 1521M Free
Swap: 4000M Total, 4000M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   31 root        1  43    -     0K     8K RUN     3 336:07 45.36% em1_rx_kthread_0
  207 root        1  43    -     0K     8K RUN     2 316:16 44.48% em0_rx_kthread_3
  210 root        1  43    -     0K     8K CPU2    2 335:46 44.09% em1_rx_kthread_2
   32 root        1  43    -     0K     8K RUN     1 335:43 43.55% em1_rx_kthread_1
   27 root        1  43    -     0K     8K RUN     0 315:47 43.07% em0_rx_kthread_0
  211 root        1  43    -     0K     8K RUN     0 335:36 42.48% em1_rx_kthread_3
   28 root        1  43    -     0K     8K CPU0    3 316:13 42.29% em0_rx_kthread_1
  206 root        1  43    -     0K     8K CPU3    2 315:51 42.09% em0_rx_kthread_2
   13 root        1 171 ki31     0K     8K RUN     1 546:41  6.30% idle: cpu1
   12 root        1 171 ki31     0K     8K RUN     2 558:59  5.76% idle: cpu2
   11 root        1 171 ki31     0K     8K RUN     3 571:25  5.66% idle: cpu3
   14 root        1 171 ki31     0K     8K RUN     0 530:23  5.37% idle: cpu0
   30 root        1 -68    -     0K     8K WAIT    3  21:40  1.95% em1_txcleaner
   26 root        1 -68    -     0K     8K WAIT    2  22:03  1.37% em0_txcleaner
   53 root        1  20    -     0K     8K syncer  1   1:12  0.29% syncer
   35 root        1  43    -     0K     8K WAIT    0   7:04  0.00% em2_rx_kthread_0
   36 root        1  43    -     0K     8K WAIT    3   7:02  0.00% em2_rx_kthread_1
  215 root        1  43    -     0K     8K WAIT    2   7:02  0.00% em2_rx_kthread_3
  214 root        1  43    -     0K     8K WAIT    3   7:01  0.00% em2_rx_kthread_2
   47 root        1   8    -     0K     8K pftm    3   6:11  0.00% pfpurge
   18 root        1 -16    -     0K     8K -       3   2:37  0.00% yarrow
  969 root        1  44    0  9884K  5932K select  2   1:22  0.00% snmpd
   16 root        1 -32    -     0K     8K WAIT    0   1:10  0.00% swi4: clock sio

 

pfctl -s info
Status: Enabled for 0 days 20:34:35           Debug: Urgent

State Table                          Total             Rate
  current entries                   133581
  searches                     11446364579       154524.0/s
  inserts                        152135379         2053.8/s
  removals                       152001798         2052.0/s

 

Загрузка на пределе, но пока устраивает.

 

Решили подстраховаться и воткнуть второй процессор.

Сначала обрадовались:

 

ubench
CPU: 2053666
MEM: 241614
AVG: 1147640

 

А потом ужаснулись:

LA зашкаливала под 16, cpu idle =0 при трафике от 300Мегабит/с!!! Появились жуткие задержки и периодически даже потери пакетов.

Попробовали сделать no states в правилах, где это можно.

LA стала под 24.

Откатили назад.

Вернули количество тредов для сетевух с 8 до 4 - как-будто стало немного легче.

Жёстко привязали каждый тред сетевых карточек к своему процессору - как-будто ещё чуть легче.

Убрали всё некритичное из правил фаервола - опять мало толку.

 

Отключили в БИОС ядра процессоров - та же картина.

В итоге пока не выковыряли обратно второй процессор - лучше не стало. Сейчас опять на пределе перевариваем до 500 Мегабит/с почти без задержек и без потерь, но неприятный осадок остался.

 

Кто-нибудь может объяснить - почему с 2-умя процессорами хуже, чем с одним?

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

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


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

Кто-нибудь может объяснить - почему с 2-умя процессорами хуже, чем с одним?

Потому что pf.

 

 

Добавляя процы вы просто увеличиваете количество локов.

 

У меня наилучший результат pf давал на разогнанном Core2Duo с polling'ом. ( То есть фактически совсем без SMP ).

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


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

Кто-нибудь может объяснить - почему с 2-умя процессорами хуже, чем с одним?

Потому что pf.

 

 

Добавляя процы вы просто увеличиваете количество локов.

 

У меня наилучший результат pf давал на разогнанном Core2Duo с polling'ом. ( То есть фактически совсем без SMP ).

т.е. SMP был отключен в ядре?

 

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


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

т.е. SMP был отключен в ядре?

Нет, SMP включен, одно ядро отдано под idle_poll. Собственно - проблема с pf известная, и много где описанная, но дети бесноватого Тео сказали - "народу SMP не нужен".

 

http://www.openbsd.org/faq/pf/perf.html

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


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

 

В результате E8400 разогнанный до 3.4Ghz тянет в пике 800Mbps in + 800Mbps out при 200k states и 300k searches per second. И конечно net.isr.direct=0.

 

Начнет загибаться - сменю на Core i7.

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


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

А в каком процессе Фряха обрабатывает НАТ трансляции через PF?

Стоят драйвера от Яндекса - очевидно это emX_rx_kthread'ы - в этом случая PF видимо параллелится? Или я не прав?

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


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

А в каком процессе Фряха обрабатывает НАТ трансляции через PF?

Стоят драйвера от Яндекса - очевидно это emX_rx_kthread'ы - в этом случая PF видимо параллелится? Или я не прав?

При net.isr.direct=1 - параллелится. При net.isr.direct=0 идет в swi:net. Вот только pf'у от этого параллелизма только хуже становится. Увеличивается количество локов. Ломается конвейер

последовательных операций. Кеш деградирует. RTFS.

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


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

вот тоже интересный момент....

железо ОС:

FreeBSD 8.0-BETA4 #0: Mon Sep 21 09:23:09 UTC 2009
    root@:/usr/obj/usr/src/sys/test1
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Xeon(R) CPU           E5335  @ 2.00GHz (1995.01-MHz K8-class CPU)
real memory  = 2147483648 (2048 MB)
avail memory = 2056568832 (1961 MB)
igb0: <Intel(R) PRO/1000 Network Connection version - 1.7.3> port 0x5000-0x501f mem 0xc6fe0000-0xc6ffffff,0xc6800000-0xc6bfffff,0xc6fdc000-0xc6fdffff irq 16 at device 0.0 on pci19
igb1: <Intel(R) PRO/1000 Network Connection version - 1.7.3> port 0x5020-0x503f mem 0xc6fa0000-0xc6fbffff,0xc6400000-0xc67fffff,0xc6fd8000-0xc6fdbfff irq 17 at device 0.1 on pci19

 

net.inet.ip.forwarding=1
net.inet.ip.fastforwarding=1

 

схема

S1 ---> (igb1) serverNAT(igb0) ---> S2

запускаю тест на один поток с S1 на S2

 iperf -u -c 172.16.80.2 -i 10 -l 500 -t 400 -b 1000M -p 65005

 

теперь смотрим сервер

там в данный момент нет ничего кроме роутинга

делаем следующее

nat# netstat -I igb1 -w1
            input         (igb1)           output
   packets  errs      bytes    packets  errs      bytes colls
    199197     0  107963328          3     0        222     0
    198441     0  107554540          1     0         74     0
    200012     0  108405058          3     0        222     0
    199442     0  108097564          0     0          0     0
    193050     0  104632618          1     0         74     0
^C
nat# pfctl -eN
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled
nat# pfctl -sn -v
No ALTQ support in kernel
ALTQ related functions disabled
nat pass on igb0 inet all -> 172.16.80.1
  [ Evaluations: 38        Packets: 13014489  Bytes: 6871617008  States: 6     ]
  [ Inserted: uid 0 pid 1227 ]
nat# netstat -I igb1 -w1
            input         (igb1)           output
   packets  errs      bytes    packets  errs      bytes colls
    195947    96  106202310          1     0         74     0
    195977   644  106217606          3     0        222     0
    195299   463  105851094          2     0        148     0
    195070  2232  105727940          0     0          0     0
    198063   551  107349664          1     0         74     0
    197533   808  107061922          2     0        148     0
    196750     0  106638018          1     0         74     0

 

Причем это ошибки на интерфейсе принимающем поток igb1

 

cat /etc/pf.conf

set optimization aggressive

set skip on lo0

set skip on lo

set skip on bce0

set skip on bce1

#set skip on igb0

set skip on igb1

ext_if = "igb0"

 

nat pass on $ext_if from any to any -> 172.16.80.1

 

 

pfctl -si
No ALTQ support in kernel
ALTQ related functions disabled
Status: Enabled for 0 days 00:10:05           Debug: Urgent

State Table                          Total             Rate
  current entries                       11
  searches                       228127406       377070.1/s
  inserts                              273            0.5/s
  removals                             262            0.4/s
Counters
  match                          128930324       213108.0/s

 

 

даже если не грузить правила а сделать pfctl -e то сразу появляются ошибки

кстати что интересно при размере пакета в 500байт максимум без ошибок можно выжать 666Mbit/s -- вот такой вот демонизм :)

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


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

Подскажите плиз какой скорости можно ожидать в простом роутинге в дуплексе если поставить две Intel Pro/1000 MT Desktop Adapter PWLA8390M в 815 мамку с PIII 1Ghz процом?

Собираю себе эмулятор ASA5505 (http://asa_project.gromnet.net/), после того как наиграюсь чтоб не выбрасывать думаю куда-то машину поставить роутером (с фрей), но хочется зарание знать примерно сколько она выдержит. Мегабит 200-300 пакетами по 600 вытянет?

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


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

Подскажите плиз какой скорости можно ожидать в простом роутинге в дуплексе если поставить две Intel Pro/1000 MT Desktop Adapter PWLA8390M в 815 мамку с PIII 1Ghz процом?

Собираю себе эмулятор ASA5505 (http://asa_project.gromnet.net/), после того как наиграюсь чтоб не выбрасывать думаю куда-то машину поставить роутером (с фрей), но хочется зарание знать примерно сколько она выдержит. Мегабит 200-300 пакетами по 600 вытянет?

Лучше всего поставить i386sx20/4MB c парой RTL8019AS под FreeBSD 1.1.5.1 и замерить.

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


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

смеяться после слова лопата?

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


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

Недавно столкнулся с интересной ситуацией.

......

В продолжение этой истории.

 

Поставили core i7 - FreeBSD 7.2 i386:

ubench:

 

CPU:  1716084
MEM:   805009
AVG:  1260546

 

last pid: 97217;  load averages:  1.09,  1.08,  1.18                                  up 0+08:24:31  00:17:11
82 processes:  6 running, 61 sleeping, 15 waiting
CPU:  0.0% user,  0.0% nice, 23.5% system,  0.4% interrupt, 76.2% idle
Mem: 14M Active, 18M Inact, 163M Wired, 616K Cache, 44M Buf, 2800M Free
Swap: 2000M Total, 2000M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root        1 171 ki31     0K     8K RUN     3 405:05 84.28% idle: cpu3
   12 root        1 171 ki31     0K     8K RUN     2 399:00 82.08% idle: cpu2
   13 root        1 171 ki31     0K     8K RUN     1 386:14 77.98% idle: cpu1
   14 root        1 171 ki31     0K     8K RUN     0 379:23 72.75% idle: cpu0
   32 root        1  43    -     0K     8K WAIT    0  55:04 11.96% em1_rx_kthread_1
  205 root        1  43    -     0K     8K WAIT    0  55:03 11.57% em1_rx_kthread_3
   31 root        1  43    -     0K     8K WAIT    0  55:01 11.38% em1_rx_kthread_0
  204 root        1  43    -     0K     8K WAIT    1  55:00 11.28% em1_rx_kthread_2
  201 root        1  43    -     0K     8K WAIT    2  49:00 11.18% em0_rx_kthread_3
  200 root        1  43    -     0K     8K WAIT    1  49:01 10.06% em0_rx_kthread_2
   27 root        1  43    -     0K     8K WAIT    0  48:59 10.06% em0_rx_kthread_0
   28 root        1  43    -     0K     8K CPU0    0  49:02  9.96% em0_rx_kthread_1
   21 root        1 -28    -     0K     8K WAIT    3  10:56  1.27% swi5: +
   16 root        1 -32    -     0K     8K WAIT    2   2:40  0.10% swi4: clock sio
   26 root        1 -68    -     0K     8K WAIT    1   2:57  0.00% em0_txcleaner
   30 root        1 -68    -     0K     8K WAIT    3   2:50  0.00% em1_txcleaner
   41 root        1   8    -     0K     8K pftm    0   2:04  0.00% pfpurge
  962 root        1  44    0  8952K  5612K select  3   1:34  0.00% snmpd

 

 netstat -w1d -I em0
            input          (em0)           output
   packets  errs      bytes    packets  errs      bytes colls
     56570     0   49024823      54254     0   32773797     0
     55573     0   48924154      53436     0   33141242     0
     57199     0   50578003      54059     0   31194796     0
     56381     0   51298681      52533     0   30481470     0
     56825     0   50698374      54706     0   31871288     0
     57213     0   50137138      55070     0   33557968     0
     55689     0   47508994      54180     0   33243266     0
     56352     0   48692779      54234     0   32905165     0
     57611     0   48999269      55561     0   33646042     0
     56526     0   48965597      53962     0   32405402     0
     55650     0   49302105      53445     0   31247192     0
     54848     0   48622593      51363     0   30579856     0
     55500     0   48801147      53376     0   32266195     0
     55340     0   49022020      53559     0   32375091     0
     56160     0   49901732      53830     0   32729719     0
     56178     0   49414738      54773     0   32784937     0
     55819     0   47748916      53817     0   33950831     0
     56590     0   49838339      53423     0   32650913     0
     56051     0   49137299      54278     0   33519591     0
     55474     0   49218155      52441     0   32936966     0

доволен

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


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

 

Вы уверены, что вам не Core i5 подсунули ? Где еще четыре ядра ?

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


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

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.