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

nshut

Пользователи
  • Публикации

    60
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем nshut


  1. День добрый. Хотелось бы видеть дропы на портах указанный коммутаторов, т.е. если я буду лить трафик в порт ласп или 10Г, больше гигабита, предназначенные в 1г порт этого коммутатора, из-за разности скоростей интерфейсов, обязаны быть дропы. хотелось бы видеть эти показатели. В текущих прошивках этот счетчик показывает всегда 0. Только старшая модель s300x отображает эти данные. Также очень хотелось бы видеть эти данные по SNMP. Наша компания планирует и дальше закупать данные коммутаторы, но нам необходим данный функционал для анализа проблем. Если это технически невозможно, хотелось бы видеть хотябы общий дроп на порту.

  2. Что то далеко от темы ушли все. Я же лично думаю, что процессоры замерли в своей производительности, а сетевые потребности растут. Любая новая идея и продукт требует как минимум внимания. А дальнейшая разработка, поддержка и оплата, это уже дело автора, ну и в конце концов любой код станет опенсорсом или кто-то догадается повторить тоже самое в опен сорс, те же китайцы :)

    Если я не ошибаюсь, в том же линуксе, в свежих версиях достаточно замороченный механизм добавления записей, через rhashtable, очень схожий с тем, что описал Ivan_83, там так сделано не в целях повышения производительности NAT forwarding, имхо этого все равно недостаточно для высокого CPS.

    Что то они там перемудрили сильно, на тестах отказался в пользу 3 ядра, рхашинг ната при определенных условиях проц укладывал.

    Все, почему то прицепились к хашам ната, он не требовательный, посмотрите перф топ. Глобальная проблема как мне кажется все-таки отправка пакетов и разброс их в qdisc в очереди, вот если этот процесс избавить от локов, тогда и роутинг и фул стейты заживут (в текущем линуксе), а да, как раз фул стейты кушают процессорное время по более поиска и всего остального, а избавится от них можно отказавшись от фулстейт и только. Возможно превратить контрак в разные инстансы на процессоры с прибиваниям к очередям и есть альтернативное решение, но опять же исходники кто видел, знает, проще написать с нуля, а если это будет работать, то pptp и другие плюшки вопрос только времени.

  3. поэтому мы натим на дешевых e3-1240 =)

    А в качестве платформы, какое железо?

    и показатели производительности в студию, все-таки 4 ядра, есть 4 ядра. Вообще надо составить табличку и в шапку прилепить. Каждый кто идет в эту тему, ищет такие данные

  4. Но линукс легко роутит десятки гигабит без проблем. Так что 6 mpps - это мало.

    роутить и натить не одно и то же. десятки гигабит и десятки mpps совсем разные вещи.

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

     

    Автор молодец! я лично тоже не нашел готового решения, а искал прилично. Уже ушел на ваш гит, пробовать тестить.

  5. В общем поигрался я и с очередями через исходники, и с разными ядрами и еще много чем.

    Разница в использовании на одном процессоре бондинга и без него составила 100mpps, что примерно 8% от общей производительности, т.е. не загрузка процессора, а именно производительность железа и текущей конфигурации. Тест проводится с идентичными настройками, бондинг был разобран без перезагрузки. Двух процессорный результат получить не удалось, т.к. уперся в полку сетевой. Для себя сделал вывод, 100мппс погоды не играют, т.к. на графиках видно, что сервер когда достигает критического момента производительности, следующие 50-100мппс уложат его в полку, а работа на пределе, это любой флуд сделает ваш сервер трупом. Возможно мои показатели и настройки ужасные, я продолжаю экспереминтировать пока. Тесты проводились на X5660 @ 2.80GHz, память 3CH 1333, сетевая X520da2, сервисы 25правил iptables (есть ipset и xmark), ipt_netflow, весь трафик NATится в 3 подсети.

    Ядро линукса: до этого было 3.10.104, последние тесты на ядре 3.18.45, интересный момент, последнее показывает загрузку на 10-15% меньше в общем, но полка наступает одновременно, т.е. ложит сервер мппс и никаких улучшений в эту сторону не сделано.

    Когда наступает полка: игры с usec_rx и другими умными параметрами сильно результата не дают, т.е. тупо нехватает Mpps vs (частота*ядра).

    Один проц производительнее двух, вымывание кэша в разы меньше, но частота дополнительных ядер отодвигает полку. Отсюда вывод: один проц с кучей ядер и максимальной частотой, точно лучше двух в сумме частота*ядра.

    post-106448-057479700 1481865694_thumb.png

  6. Попробуйте проделать это на свежей ubuntu lts, поставить актуальное ядро, собрать свежий драйвер сетевых карт руками. Мне помогло в свое время

    последую вашему совету, ну немножко. Начал интегрировать свои патчи в ядро 3.18. Увы не хочу переставлять и менять цент на убунту, только из-за ядра, ведь роутинг и нат затрагивают только ядро. Попробовал и 4ое ядро, но не буду разглагольстовать на предмет выбора. В общем на недельку пропал, пока все пилю, далее выложу результаты. Обязательно выложу результаты бондинга и без него, чего увы сам не нашел, да геморой, но истину узнать хочется =)

  7. настройки простые:

    BONDING_OPTS="mode=802.3ad miimon=100 xmit_hash_policy=layer3+4"

    тюнинг и прибитие попробовал, изменений ни в какую сторону не произошло.

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

    и вот на нем четко видно, что в бондинге не размазывается исходящий трафик по очередям, rx все ок, а отправка идет только с одной очереди каждого интерфейса, к примеру ix0 tx_queue_3_packets: 3945387.

    на 3.10 ядрах драйвера менял и интела и родные центоса, не помогало. Видимо bonding зло, другие сервера без него работают прекрасно. Но все-равно пытаюсь разобраться. Т.к. разруливать bgp или еще чем то, это лишний костыль, если есть технология lacp, она обязана работать.

    загрузил 3.10 ядро, подождал 10 сек и снял нагрузку

    tx_queue_0_packets: 796470

    tx_queue_0_bytes: 862901227

    tx_queue_1_packets: 127331

    tx_queue_1_bytes: 154521719

    tx_queue_2_packets: 105433

    tx_queue_2_bytes: 113146569

    tx_queue_3_packets: 110952

    tx_queue_3_bytes: 131290894

    tx_queue_4_packets: 112896

    tx_queue_4_bytes: 139732927

    tx_queue_5_packets: 108352

    tx_queue_5_bytes: 105378175

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

  8. У меня подобное было когда оставлял штатный irqbalancer

    убит на этапе инсталяции оси. прерывания по кол-ву из милиона в районе сотен точно сходятся по ядрам, т.е. все поровну на ядра.

    дело думаю именно в бондинге и его локах, т.к. допустим до 800мппс загрузка максимум 7%, после 850 50%, т.е. слишком резкий рывок, так локи обычно чудят. Да и разбаланс по ядрам видмо tx queue делает. Беда в том, что не могу найти нормальную конфигурацию и тесты бондинга на высокой производительности. Все только пишут как научились болячки бондинга решать, а решений не видел. Может вообще тупость в какой-нить настройке о которой я и не помню(не знаю).

  9. День добрый. Снова вопросы. ядро 3.10.104, использую bonding X520da2. процы 2xX5660.

    Два порта в бондинге, а там вланы. Распределение загрузок ядер неравномерное, т.е. то одни ядра загружены, то другие, каждые 2-5 сек меняется. При 1.7mpps то и дело одно из ядер пытается вырваться в полку. По иперфу на втором месте _raw_spin_lock 2%, выше писали что его бондинг и вызывает. 2% не много, но я понимаю, что на 12 ядрях, 2% это одно ядро в в сплошном локе. очереди 4096. Прерывания в ЧНН и понижал и повышал, через rx-usec. Толку нет. Какие то есть специфические настройки bonding чтобы было ровней все это дело? Никаких потерь и ошибок нет, но в полке конечно будут. На форуме находил кучу обсуждений bondinga, но кроме совета его не использовать решения не видел. Хотя здесь же выше писали что 20gbps выжали и работает. Как он вообще тюнится, где рыть? может есть ixgbe надо специфично настроить для бондинга. и да, очереди конечно прибиты жестко, в интеруптах по количеству прерываний на очередь все ровно, как и сама балансировка.

  10. вообще все параметры описаны тут: https://github.com/aabc/ipt-netflow с объяснением что на что влияет.

    во первых спасибо за разъяснения.

    документацию конечно читал, но или английский слаб или не понимаю просто.

    только если вы используете flow sampling

    к примеру, я не использую, но так и не понял надо ли использовать. Задача: трафик > 10G, подсчет байтов скачанных пока обязателен. На данную задачу необходимы оптимальные параметры. Т.е. если надо использовать для производительности, то я буду. У меня задача оптимизировать максимально, а я туповат :) чтобы понять что делает sampler. На пальцах может кто объяснить зачем он? понятия хашь и рандом я сам знаю, мне цель этого сэмплера не известна

  11. не обязательно линукс, можно и фряху. интересует софтнат. 110 гигабит, хм, наверно размер пакета 1 гиг и был :)

    Там линукс + кастомный софт который через DPDK пакеты жуёт.

    rdp.ru это пишет и барыжит.

     

    В обычных ОС на каждый отдельный пакет сильно много проверок, а там сильно облегчённый даже не стёк а просто транслятор.

    зашел на сайт, кроме красивых слов ничего толком не нашел, ну да ладно. Не раз думал о dpk и нетмап, но от фул стэйт никуда ведь не денешся. А доп протоколы типо гре требуют вмешательства в пакет, как и нат обязан adjust seq делать, т.е. одними заголовками не отделаться. Лень считать по производительности шины и памяти, но софтос врядли 110 выдаст, если речь x86-64, а не специфические спарк и т.д. с ценой соотетствующей.

  12. взлетит ли вообще система на обновлённом ядре, не завалится сразу в kernel panic?

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

  13. И как я понимаю, мне необходимо в grub.conf добавить intel_iommu=off?

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

    не знаю должна ли быть она в выключенном gro, но интел в своих драйверах пишет: "Disable GRO when routing/bridging" ethtool -K ethX gro off".

    как и lro, но опять же, может у вас все это настроено. я верю интел и всегда это выключаю

  14. вот пример моего дампа смерти.

    [11078.080927] RIP: 0010:[<ffffffff81067bf6>] [<ffffffff81067bf6>] internal_ add_timer+0x46/0x150

    [11078.080998] RSP: 0018:ffff88013fc43a08 EFLAGS: 00010002

    [11078.081039] RAX: ffff8801399f1570 RBX: ffff8800a673d308 RCX: 0000000100a48 a5f

    [11078.081092] RDX: ffffffffa042e2a0 RSI: ffff8800a673d308 RDI: ffff8801399f0 000

    [11078.081145] RBP: ffff88013fc43a08 R08: ffff880139ad8128 R09: 0000000000000 000

    [11078.081199] R10: 0000000000000002 R11: 0000000000000000 R12: 0000000100a50 000

    [11078.081253] R13: ffff8801399f0000 R14: 0000000000000000 R15: ffff8801399f0 000

    [11078.081307] FS: 0000000000000000(0000) GS:ffff88013fc40000(0000) knlGS:00 00000000000000

    [11078.081368] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b

    [11078.081411] CR2: ffffffffa042e2a0 CR3: 000000013818a000 CR4: 0000000000000 7e0

    [11078.081465] Stack:

    [11078.081482] ffff88013fc43a58 ffffffff8106a716 ffff8800a673d300 0000000000 000286

    [11078.081546] ffffffff81d1c040 ffffffff81d1c040 ffff8800a673d300 ffffffff82 0f1b00

    [11078.081611] 0000000000000000 0000000000000307 ffff88013fc43aa8 ffffffff81 5b6d64

    [11078.081675] Call Trace:

    [11078.081696] <IRQ>

    [11078.081714]

    [11078.081734] [<ffffffff8106a716>] mod_timer+0x106/0x200

    [11078.081768] [<ffffffff815b6d64>] inet_frag_intern+0x94/0x1a0

    [11078.081815] [<ffffffff815b6f7f>] inet_frag_find+0x10f/0x120

    [11078.081861] [<ffffffff81573299>] ip_defrag+0xc9/0x180

    [11078.081903] [<ffffffff81571520>] ? inet_add_protocol+0x50/0x50

    [11078.081952] [<ffffffffa040809f>] ipv4_conntrack_defrag+0x8f/0xfc [nf_defr

    RIP показывает где умерло, дальше видим, был вызов mod_timer, его вызвал inet_frag_in. выводы, функция фрагментации попыталась обратиться к таймеру, который либо умер, либо нет указателя на него. в общем здесь явно в модуле ядра смерть пришла.

    как то у меня падал роутер связанный с фибом по включенному иому, но это у меня ядро 3.10 было, вылечилось грабе intel_iommu=off

  15. net.netflow.scan-min = 25

    очень информативно...

    у меня было 1, делал 10,20,30,100.

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

  16. Прошу помощь зала..

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

    я краши долго не разгребал, делал только так, в папке с крашем makedumpfile --dump-dmesg vmcore txt

    в трейсе практиески видно кто был инициатором до падения.

  17. Люди добрые, ветку прочитал, но подскажите как тюнить ipt_NETFLOW (без натевентс)?

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

    Интересуют скорости 10Г и больше. Сейчас на моем сервере это самый жрущий процесс, естественно он сидит на одном процессоре, сендер видимо.

    стата:

    Flows: active 249751 (peak 250864 reached 0d0h0m ago), mem 55407K, worker delay 30/1000 [30..100] (21 ms, 0 us, 359:0 0 [cpu2]).

    Hash: size 2097152 (mem 16384K), metric 1.06 [1.02, 1.00, 1.00]. InHash: 61735594 pkt, 68411103 K, InPDU 427, 413759.

    Rate: 2974108518 bits/sec, 317127 packets/sec; Avg 1 min: 2947243075 bps, 314958 pps; 5 min: 2379479772 bps, 255645 pps

    cpu# pps; <search found new [metric], trunc frag alloc maxflows>, traffic: <pkt, bytes>, drop: <pkt, bytes>

    Total 317122; 5777961 84902045 985826 [1.06], 0 0 0 0, traffic: 85887871, 95015 MB, drop: 0, 0 K

    cpu0 22799; 443519 6462857 85099 [1.02], 0 0 0 0, traffic: 6547956, 7040 MB, drop: 0, 0 K

    cpu1 24556; 523816 6711940 85676 [1.05], 0 0 0 0, traffic: 6797616, 7520 MB, drop: 0, 0 K

    cpu2 24930; 363336 6444002 80556 [1.03], 0 0 0 0, traffic: 6524558, 6597 MB, drop: 0, 0 K

    cpu3 25322; 404957 7912739 80706 [1.02], 0 0 0 0, traffic: 7993445, 9436 MB, drop: 0, 0 K

    cpu4 23348; 299822 6653466 81720 [1.01], 0 0 0 0, traffic: 6735186, 7238 MB, drop: 0, 0 K

    cpu5 25581; 551247 6884774 81193 [1.07], 0 0 0 0, traffic: 6965967, 7900 MB, drop: 0, 0 K

    cpu6 26801; 378480 6856966 84374 [1.03], 0 0 0 0, traffic: 6941340, 7484 MB, drop: 0, 0 K

    cpu7 29716; 362770 7155102 83164 [1.02], 0 0 0 0, traffic: 7238266, 7975 MB, drop: 0, 0 K

    cpu8 32271; 672805 7595261 81377 [1.04], 0 0 0 0, traffic: 7676638, 8409 MB, drop: 0, 0 K

    cpu9 25130; 494106 6624542 79212 [1.05], 0 0 0 0, traffic: 6703754, 7186 MB, drop: 0, 0 K

    cpu10 29076; 788791 8295171 81998 [1.06], 0 0 0 0, traffic: 8377169, 9820 MB, drop: 0, 0 K

    cpu11 27592; 494319 7305257 80751 [1.03], 0 0 0 0, traffic: 7386008, 8406 MB, drop: 0, 0 K

    Export: Rate 155550 bytes/s; Total 24535 pkts, 34 MB, 736050 flows; Errors 0 pkts; Traffic lost 0 pkts, 0 Kbytes, 0 flows.

    sock0: 10.ччччч:9993, sndbuf 212992, filled 1, peak 13825; err: sndbuf reached 0, connect 0, cberr 0, other 0

  18. в стейтфул фаерах есть понятие поиск, вставка, удаление сессии. Так доссы и ложат наты, отправляя много новых конектов. На линуксе не видел чтобы это анализировали, фрибсдшники всегда эти данные прикладывают, к примеру графики строить можно отсюда cat /proc/net/stat/nf_conntrack.

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

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

    Процессоры вещь вообще мутная. распайка влияет на производительность факт, но куча процессоров больше сделает чем куча в 2 раза меньше. Сколько не игрался показатели разные. Причем влияет сильно и мать. У меня 2 идентичных сервера lisg. Один лучше на 1 проце (на 2х дропает пакеты, хотя не загружен), второй на двух лучше первого, так что только тестинг.

  19. кстати наличие влана на высоконагруженном интерфейсе может как то влиять на нагрузку?

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

    и еще, когда пишите загрузку, загрузка проца 65% понятие растяжимое, одно ядро 2%, другое 90. ну и плюс все от ппс зависит, трафик может быть ни о чем. графики выше показывают зависимость именно ппс. я бы увеличил tcp_establish время, ибо поиск в контреке это намного быстрее чем удаление, а удалив сессию открытую клиент ее переподымет заново, не знаю поможет ли, но чисто мое мнение. Графиков insert-delete никто (в отличии от бсдшников) не выкладывает, а зря.

  20. 2 Wiredom

    net.netfilter.nf_conntrack_tcp_timeout_established = 90

    жестокий вы человек :)

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

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

  21. Я правильно понимаю, если у вышестоящего прова сделано именно так, как Вы описали, то все любые другие "правильные" манипуляции с маршрутизацией с моей стороны не помогут?

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

    но 1. ничего не надо в лупбэки прописывать. и какие то no_bind тоже в жизни не делал.

    в общем даже нат сеть не назначайте пока. идите на 3120 и sh ipr, может для теста вы там эту подсеть подымали и забыли удалить. пинг с инета и дамп на сетевой. Если он действительно л3, значит собака там зарыта, прошивку в конце концов обновить ибо и покруче у длинков моделей есть баги в не стандартой маской маршрута. они видимо все на 24 тестят

  22. От включенного в conntrack аккаунтинга проц немного растет, замерял давно "на глаз".

    ну netflow коллектор тоже проц грузит, я допустим пока с миррор порта не хочу трафик снимать. На глаз евенты загрузили проц тоже больше, чем трафик правилом, а так как каунтеры не помогли отбросил пока. На больших скоростях погляжу за netflow, может тоже в исходники придется лезть. Сейчас запустил пользователей еще в сервер, в ЧНН поглядим. Пока на одном проце X5660 (частота ограничена 2ггц) 750kpps, 5Gb full duplex загрузка 5%, жду с нетерпением вечера.

  23. но в самом conntrack-е должны обязательно быть включены таймстампы и аккаунтинг.

    а вы с улогом не путаете? а то я обрадовался, все настроил и включил. счетчики по нулям, но сами нат евенты работают прекрастно. ядро 3.10.104, ipt_netflow 2.2.

    получается nat events нужен только для логирования сессий и конечно плюс, не надо расчитывать сначенный ip

  24. У меня есть тазик, в ЧНН 2.6Mpps, но 2x10G

    неплохо, а какие камни и сколько? я на гугл пока натю, но можно сказать специально, сейчас цель проверить производительность. Ибо lisg имеющиеся скоро в полки войдут. Завтра если выпрошу подсеть на нат, плюну 7 гигабит в добавок к 6FD, и будь что будет :)