Jump to content

BGP 10G Soft Router Своими руками v1.0


Recommended Posts

может быть за счет оптимизаций над вычислением контрольных сумм?

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

 

Не, ну для чего то ж эти jumbo-frame-ы придумали-то.

Их придумали тогда, когда компьютеры были большими и медленными, а сетевухи были еще очень глупыми, с маленькими буферами и без interrupt moderation, для того, чтобы на всем этом гогне хоть как-то прокачать гигабит, не забивая проц прерываниями.

 

и получится обмен файлами на 1Гбит в 1 поток, а не 200-300мбит как обычно.

ftp с гиговой сетевухой, тазик (не помню уже что, то ли атлон 2-головый, то ли семпрон ам3, то ли что-то более раритетное) с igb, клиент - семпрон сокет 754 с forcedeth сетевкой. wget тянул 110МБ/с+ превосходно через этот стенд. Потому даже в такой ситуации польза от JF сомнительна.

О всяческих segmentation offload'ах - вообще молчу.

Link to post
Share on other sites
  • Replies 477
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Сорри за оффтоп, но в данной теме оффтоп уже сплошной...     На Украинском форуме начинают как на русском, продолжают как на еврейском, и, часто минуя американский вариант, начинают меряться фуям

Nexus 9372 может уже 128к маршрутов, а 93180 - весь мильен. Вообще не вижу места серверу на бордере.

А смысл? Нынче железо настолько дёшево и быстро, что наоборот, в спец-железках все меньше и меньше смысла. Сервер за 300$ может жевать 10G, а это на минуточку уровень такого себе оператора средне

Posted Images

jumbo фреймы это транспортный уровень,

и для тазика лишняя математика, равно как и для аппаратного роутера,

просто на аппаратных роутерах, jumbo разбирается на аппаратном уровне.

Соственно на аппаратном уровне, пакет должны разбирать и сетевые.

Но это только теория, а производителей вагон и тележка.

 

Для роутера, для того чтобы прогнать через маску, будь это ацл маршрут, правила, или нат,

всеравно нужно курить каждый пакет.

Link to post
Share on other sites

jumbo фреймы это транспортный уровень,

и для тазика лишняя математика, равно как и для аппаратного роутера,

просто на аппаратных роутерах, jumbo разбирается на аппаратном уровне.

 

Да никто ничего не разбирает. Jumbo frame - это всего лишь фрейм, размер которого - не 1500 байт, а больше. Все. Никаких других отличий он не имеет.

Link to post
Share on other sites

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

Nov 27 21:29:41 gw_neo kernel: [56984.810590] ------------[ cut here ]------------
Nov 27 21:29:41 gw_neo kernel: [56984.810596] WARNING: at net/sched/sch_generic.c:255 dev_watchdog+0xf4/0x154()
Nov 27 21:29:41 gw_neo kernel: [56984.810597] Hardware name: Z68A-D3H-B3
Nov 27 21:29:41 gw_neo kernel: [56984.810598] NETDEV WATCHDOG: eth2 (ixgbe): transmit queue 0 timed out
Nov 27 21:29:41 gw_neo kernel: [56984.810598] Modules linked in: tun xt_set ip_set_hash_ip ip_set 8021q igb(O) ixgbe(O) dca
Nov 27 21:29:41 gw_neo kernel: [56984.810604] Pid: 0, comm: swapper/0 Tainted: G		   O 3.6.6-gentoo #1
Nov 27 21:29:41 gw_neo kernel: [56984.810604] Call Trace:
Nov 27 21:29:41 gw_neo kernel: [56984.810605]  <IRQ>  [<ffffffff8148b10c>] ? dev_watchdog+0xf4/0x154
Nov 27 21:29:41 gw_neo kernel: [56984.810610]  [<ffffffff810302a7>] warn_slowpath_common+0x80/0x98
Nov 27 21:29:41 gw_neo kernel: [56984.810612]  [<ffffffff81030353>] warn_slowpath_fmt+0x41/0x43
Nov 27 21:29:41 gw_neo kernel: [56984.810614]  [<ffffffff8148af91>] ? netif_tx_lock+0x45/0x7a
Nov 27 21:29:41 gw_neo kernel: [56984.810616]  [<ffffffff8148b10c>] dev_watchdog+0xf4/0x154
Nov 27 21:29:41 gw_neo kernel: [56984.810619]  [<ffffffff8103d31e>] run_timer_softirq+0x1d1/0x29b
Nov 27 21:29:41 gw_neo kernel: [56984.810621]  [<ffffffff8148b018>] ? netif_tx_unlock+0x52/0x52
Nov 27 21:29:41 gw_neo kernel: [56984.810623]  [<ffffffff8101d2c9>] ? apic_write+0x11/0x13
Nov 27 21:29:41 gw_neo kernel: [56984.810625]  [<ffffffff810371b7>] __do_softirq+0xd4/0x1ad
Nov 27 21:29:41 gw_neo kernel: [56984.810628]  [<ffffffff8106dbff>] ? tick_program_event+0x1f/0x21
Nov 27 21:29:41 gw_neo kernel: [56984.810630]  [<ffffffff81577cec>] call_softirq+0x1c/0x30
Nov 27 21:29:41 gw_neo kernel: [56984.810631]  [<ffffffff81003ce8>] do_softirq+0x33/0x6b
Nov 27 21:29:41 gw_neo kernel: [56984.810633]  [<ffffffff8103743f>] irq_exit+0x3f/0x9a
Nov 27 21:29:41 gw_neo kernel: [56984.810635]  [<ffffffff8101d856>] smp_apic_timer_interrupt+0x77/0x85
Nov 27 21:29:41 gw_neo kernel: [56984.810637]  [<ffffffff81577607>] apic_timer_interrupt+0x67/0x70
Nov 27 21:29:41 gw_neo kernel: [56984.810638]  <EOI>  [<ffffffff812d3fec>] ? acpi_idle_enter_simple+0xbf/0xf5
Nov 27 21:29:41 gw_neo kernel: [56984.810643]  [<ffffffff812d3fe7>] ? acpi_idle_enter_simple+0xba/0xf5
Nov 27 21:29:41 gw_neo kernel: [56984.810645]  [<ffffffff8144a15a>] cpuidle_enter+0x12/0x14
Nov 27 21:29:41 gw_neo kernel: [56984.810647]  [<ffffffff8144a5f0>] cpuidle_enter_state+0x12/0x3a
Nov 27 21:29:41 gw_neo kernel: [56984.810648]  [<ffffffff8144a6f0>] cpuidle_idle_call+0xd8/0x14b
Nov 27 21:29:41 gw_neo kernel: [56984.810650]  [<ffffffff810096f7>] cpu_idle+0x56/0x7f
Nov 27 21:29:41 gw_neo kernel: [56984.810652]  [<ffffffff81552629>] rest_init+0x6d/0x6f
Nov 27 21:29:41 gw_neo kernel: [56984.810655]  [<ffffffff81ab2ae5>] start_kernel+0x33b/0x348
Nov 27 21:29:41 gw_neo kernel: [56984.810656]  [<ffffffff81ab251d>] ? repair_env_string+0x56/0x56
Nov 27 21:29:41 gw_neo kernel: [56984.810658]  [<ffffffff81ab22b2>] x86_64_start_reservations+0xb6/0xbb
Nov 27 21:29:41 gw_neo kernel: [56984.810659]  [<ffffffff81ab23a9>] x86_64_start_kernel+0xf2/0xf9
Nov 27 21:29:41 gw_neo kernel: [56984.810660] ---[ end trace 9b4294d240768f82 ]---
Nov 27 21:29:41 gw_neo kernel: [56984.810665] ixgbe 0000:01:00.0: eth2: Fake Tx hang detected with timeout of 5 seconds
Nov 27 21:29:41 gw_neo bird: KRT: Received route 10.250.250.0/24 with strange next-hop 10.250.250.1
Nov 27 21:29:51 gw_neo kernel: [56994.798027] ixgbe 0000:01:00.0: eth2: Fake Tx hang detected with timeout of 10 seconds

 

Может кто знает, что еще можно подправить?

Link to post
Share on other sites

так и не смог заставить работать 10G на i5. Собственно что было сделано - откатил ядро на версию < 3.3. Т.е. с 3,6,6 перешел на 3,0,53.

дополнительно выполнил команды

 

ethtool -K ethX tso off tx on sg on gro off lro off

ifconfig ethX txqueuelen 10000

 

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

Попытался нагрузить сервер iperf-ом. получил показания прием/отдача 5/3 G одновременно. Или 8G в одну сторону. Можно было бы получить и больше, но не хватило мощностей для создания нагрузки.

И что получил в итоге - теперь сервер не подвисает наглухо, теперь он просто перегружается.

На момент ребута загрузка интерфейса составляла 3,5/1,5G.

LA~0.1

CPU SI 35-40% на каждом ядре.

CPU idle time 65% в ЧНН.

 

и рушилось все это дело с такими ошибками

Dec  3 14:20:40 gw_neo kernel: [31341.684411] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:40 gw_neo kernel: [31341.883829] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected
Dec  3 14:20:42 gw_neo kernel: [31343.682696] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:42 gw_neo kernel: [31343.882122] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected
Dec  3 14:20:44 gw_neo kernel: [31345.680983] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:44 gw_neo kernel: [31345.880408] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected
Dec  3 14:20:46 gw_neo kernel: [31347.679258] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:46 gw_neo kernel: [31347.878714] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected
Dec  3 14:20:48 gw_neo kernel: [31349.677562] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:48 gw_neo kernel: [31349.876988] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected
Dec  3 14:20:48 gw_neo bird: KRT: Received route 10.250.250.0/24 with strange next-hop 10.250.250.1
Dec  3 14:20:50 gw_neo kernel: [31351.675838] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:50 gw_neo kernel: [31351.875269] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected
Dec  3 14:20:50 gw_neo kernel: [31351.675838] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:50 gw_neo kernel: [31351.875269] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected
Dec  3 14:20:50 gw_neo kernel: [31352.219332] ------------[ cut here ]------------
Dec  3 14:20:50 gw_neo kernel: [31352.219338] WARNING: at net/sched/sch_generic.c:255 dev_watchdog+0xeb/0x14b()
Dec  3 14:20:50 gw_neo kernel: [31352.219339] Hardware name: Z68A-D3H-B3
Dec  3 14:20:50 gw_neo kernel: [31352.219340] NETDEV WATCHDOG: eth2 (ixgbe): transmit queue 0 timed out
Dec  3 14:20:50 gw_neo kernel: [31352.219341] Modules linked in: tun xt_set ip_set_hash_ip ip_set 8021q igb ixgbe dca
Dec  3 14:20:50 gw_neo kernel: [31352.219346] Pid: 0, comm: swapper Tainted: G	    W   3.0.53-gentoo #1
Dec  3 14:20:50 gw_neo kernel: [31352.219347] Call Trace:
Dec  3 14:20:50 gw_neo kernel: [31352.219348]  <IRQ>  [<ffffffff8103aa51>] warn_slowpath_common+0x80/0x98
Dec  3 14:20:50 gw_neo kernel: [31352.219354]  [<ffffffff8103aafd>] warn_slowpath_fmt+0x41/0x43
Dec  3 14:20:50 gw_neo kernel: [31352.219356]  [<ffffffff81443e82>] ? netif_tx_lock+0x45/0x76
Dec  3 14:20:50 gw_neo kernel: [31352.219358]  [<ffffffff81443fec>] dev_watchdog+0xeb/0x14b
Dec  3 14:20:50 gw_neo kernel: [31352.219360]  [<ffffffff81046ef2>] run_timer_softirq+0x1c4/0x28d
Dec  3 14:20:50 gw_neo kernel: [31352.219362]  [<ffffffff81443f01>] ? netif_tx_unlock+0x4e/0x4e
Dec  3 14:20:50 gw_neo kernel: [31352.219365]  [<ffffffff81017cce>] ? lapic_next_event+0x10/0x14
Dec  3 14:20:50 gw_neo kernel: [31352.219367]  [<ffffffff81040242>] __do_softirq+0xbe/0x17b
Dec  3 14:20:50 gw_neo kernel: [31352.219370]  [<ffffffff81061a02>] ? tick_program_event+0x1a/0x1c
Dec  3 14:20:50 gw_neo kernel: [31352.219374]  [<ffffffff8152ed0c>] call_softirq+0x1c/0x30
Dec  3 14:20:50 gw_neo kernel: [31352.219377]  [<ffffffff81003ae6>] do_softirq+0x33/0x69
Dec  3 14:20:50 gw_neo kernel: [31352.219379]  [<ffffffff810404a7>] irq_exit+0x3f/0x9c
Dec  3 14:20:50 gw_neo kernel: [31352.219381]  [<ffffffff8101815b>] smp_apic_timer_interrupt+0x77/0x85
Dec  3 14:20:50 gw_neo kernel: [31352.219383]  [<ffffffff8152e4d3>] apic_timer_interrupt+0x13/0x20
Dec  3 14:20:50 gw_neo kernel: [31352.219384]  <EOI>  [<ffffffff812b5793>] ? acpi_idle_enter_bm+0x200/0x234
Dec  3 14:20:50 gw_neo kernel: [31352.219388]  [<ffffffff812b578e>] ? acpi_idle_enter_bm+0x1fb/0x234
Dec  3 14:20:50 gw_neo kernel: [31352.219390]  [<ffffffff814153e6>] cpuidle_idle_call+0xd9/0x157
Dec  3 14:20:50 gw_neo kernel: [31352.219393]  [<ffffffff8100123c>] cpu_idle+0x56/0x78
Dec  3 14:20:50 gw_neo kernel: [31352.219395]  [<ffffffff8150ab49>] rest_init+0x6d/0x6f
Dec  3 14:20:50 gw_neo kernel: [31352.219397]  [<ffffffff81a9cad4>] start_kernel+0x343/0x34e
Dec  3 14:20:50 gw_neo kernel: [31352.219399]  [<ffffffff81a9c2a6>] x86_64_start_reservations+0xb6/0xba
Dec  3 14:20:50 gw_neo kernel: [31352.219401]  [<ffffffff81a9c39c>] x86_64_start_kernel+0xf2/0xf9
Dec  3 14:20:50 gw_neo kernel: [31352.219402] ---[ end trace 8720a024bf0aa566 ]---
Dec  3 14:20:50 gw_neo kernel: [31352.219407] ixgbe 0000:01:00.0: eth2: Fake Tx hang detected with timeout of 5 seconds
Dec  3 14:20:52 gw_neo kernel: [31353.674115] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:52 gw_neo kernel: [31353.873555] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected
Dec  3 14:20:54 gw_neo kernel: [31355.672422] ixgbe 0000:01:00.0: eth2: -1 Spoofed packets detected
Dec  3 14:20:54 gw_neo kernel: [31355.871891] ixgbe 0000:01:00.1: eth3: -1 Spoofed packets detected

 

Куда еще копать - не знаю.

Осталось только проверить гипертрейнинг.... Дальше фантазия заканчивается

Link to post
Share on other sites

Какой гипертрейдинг на i5?

А копать ИМХО в сторону железа (глюкавая карточка/глюкавая память/глюкавая мать). Для начала - memtest86 на сутки-другие, потом - перетыкивание карточки в другой подручный тазик, потом - замена карточки...

Link to post
Share on other sites

Так есть те, у кого на фряхе 10G крутится ?

 

У нас есть. Двухпортовая Х520-DA2, апнут один порт.

Бегает до 2800\2800 по 10Г линку. Сервер занимается БГП (несколько аплинков) + шейпер. Загрузка гдето 27%

Проц Intel® Core™ i7-3930K CPU @ 3.20GHz

 

ApmeM, мать то какая ? Марка\производитель ?

У меня тут была похожая темка про мамки АсРок... не жильцы при больших нагрузках.

Link to post
Share on other sites

Спасибо NiTr0 за техэкскурс.

 

to Elisium:

 

А какие модули используете, и что за железка на втором конце линка ?

Link to post
Share on other sites

to Elisium:

А какие модули используете, и что за железка на втором конце линка ?

Медный шнурок 10Г

На другом конце длинк 3420.

п.с. Драйвера, само собой, патченные для неродных СФП+.

Link to post
Share on other sites
  • 1 month later...

Up time скоко?

 

растет по чуть чуть ;)

поставил свежие дрова и ядро :)

хотя итак все жило без проблем

10.5.0.3_tg3_6-month.png

Up time скоко?

 

два месяца было

ядро обновлял пришлось ребутнуться

Link to post
Share on other sites
  • 2 months later...

Прошло несколько месяцев. Попробую еще раз задать интересующий меня вопрос:

На фряхе так никому и не удалось собрать рабочий 10Г софт роутер?

Link to post
Share on other sites

Почему не удалось? Работает. Без извращений никак: НАТит,  шейпит. Графики похожи.

CPU: Intel® Xeon® CPU E31270

avail memory = 8212676608 (7832 MB)

ix0: <Intel® PRO/10GbE PCI-Express Network Driver, Version - 2.4.8> port 0xe020-0xe03f mem 0xfb280000-0xfb2fffff,0xfb704000-0xfb707fff irq 17 at device 0.0 on pci2

ix1: <Intel® PRO/10GbE PCI-Express Network Driver, Version - 2.4.8> port 0xe000-0xe01f mem 0xfb180000-0xfb1fffff,0xfb700000-0xfb703fff irq 18 at device 0.1 on pci2

 

 

netstat -w1 -I ххх
input (user0) output
packets errs idrops bytes packets errs bytes colls
77489 0 0 24148429 115693 0 141062643 0
73964 0 0 24211243 112355 0 136747843 0
74133 0 0 22569613 108376 0 131884464 0
75460 0 0 24975746 109987 0 132511907 0
72825 0 0 26353052 100845 0 118390713 0
71768 0 0 25226660 103174 0 122400746 0
73587 0 0 24539708 106375 0 125208926 0

Не час пик.

Link to post
Share on other sites

Почему не удалось? Работает. Без извращений никак: НАТит,  шейпит. Графики похожи.

CPU: Intel® Xeon® CPU E31270

avail memory = 8212676608 (7832 MB)

ix0: <Intel® PRO/10GbE PCI-Express Network Driver, Version - 2.4.8> port 0xe020-0xe03f mem 0xfb280000-0xfb2fffff,0xfb704000-0xfb707fff irq 17 at device 0.0 on pci2

ix1: <Intel® PRO/10GbE PCI-Express Network Driver, Version - 2.4.8> port 0xe000-0xe01f mem 0xfb180000-0xfb1fffff,0xfb700000-0xfb703fff irq 18 at device 0.1 on pci2

 

 

netstat -w1 -I ххх

input (user0) output

packets errs idrops bytes packets errs bytes colls

77489 0 0 24148429 115693 0 141062643 0

73964 0 0 24211243 112355 0 136747843 0

74133 0 0 22569613 108376 0 131884464 0

75460 0 0 24975746 109987 0 132511907 0

72825 0 0 26353052 100845 0 118390713 0

71768 0 0 25226660 103174 0 122400746 0

73587 0 0 24539708 106375 0 125208926 0

Не час пик.

 

Какая версия фри? Какие дрова? В 8.3 не подымается линк, на свитче активен, на сетевой пусто :(

Link to post
Share on other sites

Я написал, графики похожие.

Чуть больше 2х. 

 

вот
packets errs idrops bytes packets errs bytes colls
131721 0 0 41411104 230504 0 293796288 0
137513 0 0 42369197 249114 0 318266887 0
137495 0 0 41307320 248265 0 318069772 0
131563 0 0 41534123 232846 0 299400594 0
129189 0 0 39348142 230539 0 295692121 0
131099 0 0 38836366 231288 0 296942489 0

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...