LINUX.ORG.RU

Бредовая идея с Bonding сетевых карт

 


0

1

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

Допустим имеется провайдер Ростелеком, оптика, заводиться она на huawei hg8245, девайс переведён в режим бриджа.

Имеется роутер из компа на основе Ubuntu с четырёх портовой интеловской сетевой к которому от huawei идёт один кабель, и уже на роутере поднимается PPPoE.

Так вот вопрос, что мы получим если от huawei к роутеру будет идти не один а два провода, на роутере мы делаем Bonding двух портов сетевой как одного устройства и уже на этом устройстве поднимаем PPPoE.

Будет ли такое работать и самое интересное даст ли это хоть какой то плюс хоть в чём то?!
Какой Плюс..., ну допусти DDOS с большим кол-вом мелких пакетов..., то что в работе будет две сетевых даст ли запас прочности или это не будет играть никакой роли и всё упрётся в какое-то узкое место?!

Я сознательно опускаю возможность того что может не справиться сам huawei, пока меня интериеует именно часть связанная с роутером.

Ответ на: комментарий от mumpster

Неужели huawei в любом случае «помрёт» раньше, и нет никакого промежутка в кол-ве PPS в котором моя схема даст прирост пропускаемого трафика?!

Uranus ()
Ответ на: комментарий от Uranus

приведу простой жизненный пример вот у вас есть шланг из него течет вода, пусть будет 3 литр/минуту, подсоединяем к нему насадку для полива, вопрос сколько прольется воды за туже минуту?! Шланг -это ваш хуавей

Silerus ★★★ ()
Ответ на: комментарий от Uranus

Неужели huawei в любом случае «помрёт» раньше

По оптике прилетает гигабит? Сетевая плата гигабитная? Откуда возьмётся второй гигабит?

AS ★★★★★ ()
Ответ на: комментарий от AS

у нас ростело даёт кое-где реальный гигабит по оптике, GPON называется. но смысла делать 2 гигабит эзернет нетути т.к. гигабит - это max в любом случае.

mumpster ★★★★★ ()
Ответ на: комментарий от Silerus

Вы не поняли, если мне забьют канал это понятно, в этом случае такое распределение ничего не даст, я спрашиваю о том случае когда из за большого PPS (но ещё до падения huawei) начинаются затыки с дропами пакетов на самих сетевых.
Бывает входящий трафик всего 30мбит, а сеть уже лежит, потому что много мелких пакетов в трафике.
Если же сетевых будет две, не позволит ли это роутеру лучше сопротивляться такой атаке до того как забьют канал?!

Uranus ()

пока меня интериеует именно часть связанная с роутером.

Лучшее что можно сделать со всеми этими портами — настроить failover. Если в результате какого-то странного явления умрет один порт на карточке (но не все остальное) или будет перекушен один из проводов, идущих до хуавея, можно будет иметь резервный канал.

Deleted ()
Ответ на: комментарий от Uranus

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

Это странно. Если 4-портовка, то это серверный Intel. Ему сильно много пакетов надо, чтобы завалить PPS-ом. Даже одной голове. Надо проблему в другом месте искать. Сколько там очередей на порт, сколько ядер у компа и как очереди по ядрам раскиданы? Короче, cat /proc/interrupts

AS ★★★★★ ()
Ответ на: комментарий от AS

Сетевая I350 (если не ошибаюсь 8 очередей), 6 ядерный(HT 12) I7, распределения по ядрам вроде работает, скину что выдаёт команда позже, на данный момент не имею туда доступа, но когда я проверял последний раз заполнение было более-менее ровным. PPS там (дай бог памяти) вроде 100к порой бывает, но хватает и меньше...

Uranus ()
Ответ на: комментарий от Uranus

Т.е извне. Тогда почему вы пытаетесь решить проблемы хуавея ниже уровнем? Логично было бы подключить несколько хуавеев к роутеру и вот тут бы уже играться с балансировкой. И вот тут мы получим и прирост скорости для клиентов роутера и отказаустойчивость.

Silerus ★★★ ()
Ответ на: комментарий от Silerus

Я думаю использовать тут Bonding не для прироста скорости, а для надежности и выживаемости роутера, вот и пытаюсь понять будут ли какие то «плюшки» с такого подключения, пусть даже в узком промежутке.

Uranus ()
Ответ на: комментарий от Silerus

Потому что у него сетевуха без sfp. Да и вообще ростелекомовскую оптику кто-нибудь «напрямую» к себе втыкал? Может есть истории успеха? А то я слышал, что они какой-то странный коннектор используют.

Deleted ()
Ответ на: комментарий от Deleted

Я тоже подумывал таком, по сути мне этот huawei не сдался, но не уверен что сам осилю, а техники Ростелекома которые ко мне приходили, технично уклонились от ответа :).

Uranus ()
Ответ на: комментарий от Uranus

Я просто переезжаю в скором времени, и в тех краях нет провайдеров кроме вышеупомянутого РТЛ. Читаю вот такие ужасы и думаю что все с этим GPON фигово.

Deleted ()
Ответ на: комментарий от Deleted

Ну у нас тут есть другие провы, но они не лучше, а многие и хуже, уже убедился на своём опыте.

Uranus ()
Ответ на: комментарий от Deleted

Да и вообще ростелекомовскую оптику кто-нибудь «напрямую» к себе втыкал?

В этой оптике GPON, а не ethernet. GPON-адаптеры а-ля сетевая карта бывают? Если бывают, то можно попробовать купить и воткнуть, но я бы не заморачивался: не факт, что оборудование совместимо будет. GPON вроде бы стандарт, но, на практике, кто в лес, кто по дрова. Так что лучше использовать, что оператор выдал.

А то ещё есть вариант вообще весь куст с соседями завалить несовместимым оборудованием. Потом могут и с ломом прийти. ;-)

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от Uranus

PPS там (дай бог памяти) вроде 100к порой бывает, но хватает и меньше...
Бывает входящий трафик всего 30мбит, а сеть уже лежит,

Всё же бы понять статистику. При 600 Мегабитах и 60-70К PPS при этом я проблем на Intel 82576 не вижу. Тоже 8 очередей. Распределено по 4 очереди на ядро, но ядра только для этой нагруженной головы, всё остальное распределяется по другим ядрам. Но нет PPPoE.

Поставил бы, кстати, collectd там, может помочь понять, что и куда упирается.

AS ★★★★★ ()
Ответ на: комментарий от AS

При 600 Мегабитах и 60-70К PPS

Это на вход. Ещё плюс 200М и 40-50К PPS на выход.

AS ★★★★★ ()
Ответ на: комментарий от Uranus

Нужно вам сделал картинкой

Схемотехника платы такова, что прерывания могут обрабатываться на всех ядрах сразу. Давно, кстати, таких не видел - у меня все современные (ну как современные, новее 8 лет, но старше 4) умеют одно прерывание только на одном ядре. Обрабатывать очередь на всех ядрах сразу хорошо в том плане, что некоторое время можно не думать: если схемотехника платы может только одну очередь на одном ядре, то без irqbalance (утилита такая) все прерывания садятся на нулевое ядро, и опа наступает практически сразу, вынуждая заниматься тем, что тебе предстоит только сейчас. Размазывание прерывания, на котором висит очередь, по всем ядрам ухудшает возможности кэширования. В общем, через /proc/irq/.../smp_affinity развешивай очереди на конкретные ядра (причём, раз у тебя ещё и HT, используй одно ядро из каждой пары виртуальных). То, что не относится к сетевым картам, можно на одном отдельном ядре собрать, или рассовать вместе с очередями, которые не нагружены.

AS ★★★★★ ()
Ответ на: комментарий от AS

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

Хотя нет, наверное ошибаюсь - цифры для одной очереди на каждом ядре сильно различаются, так что, наверное, тоже одно прерывание - одно ядро, а тягает irqbalance как раз. Но, всё равно, надо сделать так, чтобы очереди не скакали по ядрам хаотично. И обязательно, чтобы на два виртуальных ядра с одного физического вместе не садились. Можешь сразу забанить в irqbalance, скажем, нечётные CPU. Может и сразу полегчает.

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 2)
Ответ на: комментарий от AS

Ничего по распределению IRQ специально не настраивали, по сути это то что показывает так сказать сразу после установки.
Ну то что скачет по ядрам думаю не плохо, если одно ядро не справляется можно и другое подключить.
Во время DDOS атак загрузка никогда не поднимается больше 10-15 процентов, это при больших PPS, при обычных так вообще до 10 бывает не дотягивает, но при больших PPS как я и писал канал не забивается, не справляется или сама сетевая или её драйвер.

Если вы думаете что можно сделать более правильные настройки для моего роутера то ткните в ссылку где почитать или даже в пример который мне подойдёт!

Uranus ()
Ответ на: комментарий от Uranus

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

Как раз плохо в том плане, что не очень понятно, как это всё распределяется раз, и плохо влияет на использование кэша CPU.

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

Так я принцип рассказал уже основной:
1) убрать из выбора irqballance парные ядра, так как если одна очередь повиснет, например, на CPU0, а вторая на CPU1, то ничего хорошего не будет: это же две очереди одного физического ядра;
2) растащить очереди руками: вероятно, это получится лучше.

п1 надо сделать однозначно (хотя, может быть, irqballance это и как-то сам умеет - этот вопрос я не изучал), п2 по ситуации.

то ткните в ссылку где почитать или даже в пример который мне подойдёт!

Гуглить на тему оптимизации очередей и прерываний на роутера, я сильно давно находил. Может быть на форуме nag.ru, не помню.

Один вариант я предложил: основной интерфейс развесить на два ядра, по 4 очереди на ядро, всё остальное поделить между оставшимися четырьмя ядрами.

AS ★★★★★ ()
Ответ на: комментарий от AS

Может быть, как вариант, гипертрединг в BIOS отключить. Если роутер не нагружен чем-то таким, где от HT может быть выигрыш.

AS ★★★★★ ()
Ответ на: комментарий от AS

Так, тогда попробую для начала отключить HT, ядер станет 6, может тогда лучше использовать 4 ядра, по две очереди на ядро ?

Uranus ()
Ответ на: комментарий от Uranus

может тогда лучше использовать 4 ядра, по две очереди на ядро ?

Вот это, по идее, статистика должна показать, а для сбора я уже предлагал collectd поставить. Для просмотра - web collection3 (в тарболе с cillectd в контрибах), либо kcollectd. Ну или ещё какая смотрелка.

AS ★★★★★ ()
Ответ на: комментарий от AS

Так для начала, у меня два провайдера, соответственно на том выводе cat /proc/interrupts что я сюда закинул enp3s0f0 это локалка, а enp3s0f2 и enp3s0f3 это два провайдера.
DDOS атаки идут на enp3s0f2, это и самый загруженный провайдер, второй тоже работает, но больше как резерв и чтобы при DDOS не остаться без инета.
Но нулевая цепочка «enp3s0fX-TxRx-0» равномерно загружена только у одного провайдера, причём именно у резервного, не самого загруженого?
И да, я почитал что вы советовали, и там сказано что в случае нескольких сетевых которые передают данные одна на другую, лучше привязывать исходящий канал (TX карты работающей с провайдером) на то же ядро процессора что и входящий канал (RX карты работающей с локалкой),но у меня то две сетевые работают с провайдерами, мне что по три канала вешать на одно ядро процессора, что-то я вообще не пойму как тогда по ядрам раскидывать.

Uranus ()
Ответ на: комментарий от Uranus

лучше привязывать исходящий канал (TX карты работающей с провайдером) на то же ядро процессора что и входящий канал (RX карты работающей с локалкой)

А там не про вариант, когда 4 очереди rx, а 4 tx? У тебя же все 8 rxtx. Тут так не развесишь.

Почитай параметры, которые допустимы для igb.ko, там много всего. Как именно использовать очереди, похоже, тоже задаётся там, но это я только сейчас посмотрел, сам не пробовал. QueuePairs, похоже.

что-то я вообще не пойму как тогда по ядрам раскидывать.

Экспериментировать. От того, что провайдеров два, почти ничего не меняется, если от одного нагрузка сильно больше. Вот его на два отдельных ядра по 4 очереди и повесить, а остальное по другим раскидывать.

AS ★★★★★ ()
Ответ на: комментарий от Uranus

Да, для мониторинга у меня NetData стоит.

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

AS ★★★★★ ()
Ответ на: комментарий от AS

И ещё один глупый вопрос, если я сам распределяю IRQ, я должен отключать irqballance, но ведь тогда надо ещё и распределить и прерывания не только сетевых, но и других устройств ?!

И как я давно читал пары rxtx вроде можно разбивать на отдельные rx tx, нужно будет поискать где я это читал.

По NetData, да там много что есть, даже ссылки есть в информации на то что показываемый параметр значит и как его менять (некоторые вещи только что сам заметил, там и по irqballance ссылка есть оказывается :) ).

Uranus ()
Ответ на: комментарий от Uranus

но ведь тогда надо ещё и распределить и прерывания не только сетевых, но и других устройств ?!

Вариантов много. Можно всё руками, а можно воспользоваться тем, что у irqballance есть параметр --banirq, и он смотрит в переменную окружения IRQBALANCE_BANNED_CPUS (тут битовая маска). Соответственно, можно вывести из обработки 8 нужных прерываний и 2 ядра. Прерывания, кстати, могут меняться от ребута к ребуту, я их при загрузке вот так ищу:

ETH0TxRx0=`grep "eth0-TxRx-0" /proc/interrupts | awk '{ print $1 }' | sed "s/://"`
И так 8 переменных набираю для --banirq.

AS ★★★★★ ()
Ответ на: комментарий от AS

Хотя awk можно и убрать:

grep "eth0-TxRx-0" /proc/interrupts | sed "s/ \+\([0-9]\+\):.*/\1/"
Но это разово, при загрузке, так что не сильно принципиально.

AS ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.