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

Всем привет!

Админю небольшую контору, которая предоставляет интернет в небольшом населённом пункте.
Стоит у них роутер на centos с сетевушкой intel 82576 на 4 порта.

На роутере крутится dhcp-server, ipset, 2 fullview и шейпер. Чистый роутинг - НАТа НЕТ.
За последние пол года нагрузка на роутере увеличилась с 500мбит до 1гбита и начались проблемы с шейпером.


Опишу как всё организовано:

- На роутере установлен 12 ядерный процессор xeon

- На каждый порт сетевой установлено 3 потока

- Прерывания распределяются между всеми 12 ядрами (1 порт = 3 ядра)

- На eth0 и eth1 повесили локалку (на eth0 - 10 вланов, на eth1 - 15 вланов)

- На eth2 и eth3 - внешка (на eth2 - 2 влана и на eth3 - 2 влана)
- Трафик с eth2 и eth3 направляется в ifb0 для шейпинга

- Шейпер на хэш таблицах

 

При нагрузке в 800мбит начинается сильный рост NET_TX на 6 ядрах (eth2, eth3) с 5-10к до 50-70к.
При этом проявляется сильное проседание скорости у абонентов, которые шейпятся. Если делать тест скорости с самого роутера, то проседаний нет.
Смотрю в ethtool - дропов и ошибок нет, счётчики стоят

 

Куда ещё смотреть?

Привожу конфиг шейпера:

tc qdisc add dev eth2.50 ingress
tc qdisc add dev eth2.75 ingress
tc qdisc add dev eth3.101 ingress
tc qdisc add dev eth3.102 ingress
tc filter add dev eth2.50 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
tc filter add dev eth2.75 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
tc filter add dev eth3.101 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
tc filter add dev eth3.102 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
#
/sbin/tc qdisc add dev ifb0 root handle 1: htb
/sbin/tc class add dev ifb0 parent 1: classid 1:1 htb rate 2Gbit ceil 2Gbit
#
/sbin/tc filter add dev ifb0 parent 1: handle 2: protocol ip u32 divisor 256
/sbin/tc filter add dev ifb0 parent 1: protocol ip u32 ht 800:: match ip dst 0.0.0.0/0 hashkey mask 0xff000000 at 16 link 2:
/sbin/tc filter add dev ifb0 parent 1: handle 3: protocol ip u32 divisor 256
/sbin/tc filter add dev ifb0 parent 1: protocol ip u32 ht 2:59: match ip dst 1.0.0.0/8 hashkey mask 0xff0000 at 16 link 3:
/sbin/tc filter add dev ifb0 parent 1: handle 4: protocol ip u32 divisor 256
/sbin/tc filter add dev ifb0 parent 1: protocol ip u32 ht 3:bb: match ip dst 1.2.0.0/16 hashkey mask 0xff00 at 16 link 4:
/sbin/tc filter add dev ifb0 parent 1: handle d: protocol ip u32 divisor 256
/sbin/tc filter add dev ifb0 parent 1: protocol ip u32 ht 4:28: match ip dst 1.2.40.0/24 hashkey mask 0xff at 16 link d:
#
/sbin/tc class add dev ifb0 parent 1:2 classid 1:2 htb rate 5mbit ceil 5mbit
/sbin/tc qdisc add dev ifb0 parent 1:2 handle 2: sfq
/sbin/tc filter add dev ifb0 parent 1: handle ::d protocol ip u32 ht d:55: match ip dst 1.2.40.85/32 flowid 1:2


UPD: Долго гуглил, единственное что нашёл - поиграться с задержкой между прерываниями с rx-usecs и tx-usecs (у меня эти значения равны 0), для начала попробую adaptive-rx и adaptive-tx.
Пока сделать это не могу, при изменении параметров выходит ошибка: "Cannot set device coalesce parameters: Unknown error 524".
В community интела пишут, что надо поставить последнюю версию драйвера. Займусь этим ночью.

Может у кого-то есть другие предложения?

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

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


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

Смешная нагрузка, её осилит даже не коредуо а дуалкоре котором уже 17 лет.

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

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


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

47 минут назад, Ivan_83 сказал:

Смешная нагрузка, её осилит даже не коредуо а дуалкоре котором уже 17 лет.

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

Сомневаюсь, что проблема в этом, без шейпера никаких затыков нет. При синтетических тестах спокойно 2гбита маршрутизировалось. Нагрузка на проц 1-2% что с шейпером что без.

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

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


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

6 часов назад, ivanovmt сказал:

роутер на centos

И какой у нас Centos?

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


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

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

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


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

14 часов назад, jffulcrum сказал:

И какой у нас Centos?

Centos7
Ядро 3.10.0-1127.13.1.el7

Новый драйвер не помог, tx-usecs поменять не удаётся

Такая вот картина:

123.png

 

 

11 часов назад, Saab95 сказал:

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

Делал всевозможные манипуляции, никакого эффекта

Изменено пользователем ivanovmt
Дополнение

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


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

22 часа назад, ivanovmt сказал:

/sbin/tc qdisc add dev ifb0 parent 1:2 handle 2: sfq

Вы точно хотите заниматься "равноправным" распределением трафика внутри клиентского трафика? На мой взгляд оператору нужно заниматься распределением трафика между клиентами, а вот перераспределением ресурса в рамках клиенского класса пусть сам клиент занимается. Попробуйте поменять дисциплину с sfq на pfifo, возможно полегчает.

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


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

28 минут назад, taf_321 сказал:

Вы точно хотите заниматься "равноправным" распределением трафика внутри клиентского трафика? На мой взгляд оператору нужно заниматься распределением трафика между клиентами, а вот перераспределением ресурса в рамках клиенского класса пусть сам клиент занимается. Попробуйте поменять дисциплину с sfq на pfifo, возможно полегчает.

Спасибо за совет, попробую.

На самом деле изначально всё работало с приоритезацией. На icmp, voip и http трафик выделялась гарантированная полоса и скорость делилась равномерно. Торрент не мог забрать всю полосу под себя.
До введения приоритезации около 10% абонентов постоянно долбило тех поддержку. Постоянные заявки с жалобами на плохую скорость. Монтажник приходил к абоненту, вырубал торрент, и проблема решалась. Количество заявок на плохую скорость уменьшилось до 1-2 в месяц. Поэтому мне бы очень не хотелось уходить от "равноправного" распределения трафика.
Сейчас начались проблемы с проседанием скоростей, пришлось убрать приоритезацию, но это не решило проблему.

  

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

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


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

1 час назад, taf_321 сказал:

Вы точно хотите заниматься "равноправным" распределением трафика внутри клиентского трафика? На мой взгляд оператору нужно заниматься распределением трафика между клиентами, а вот перераспределением ресурса в рамках клиенского класса пусть сам клиент занимается. Попробуйте поменять дисциплину с sfq на pfifo, возможно полегчает.

Попробовал pfifo, один фиг NET TX растёт до 100к и проявляются проседания

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


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

А приходящий и исходящие порты гигабитные? Нет ли проблем плана что трафик просто в них не влезает?

То есть когда у вас шейпера нет, трафик идет и идет. Когда включаете шейпер у некоторых абонентов трафик отбрасывается, появляются дропы, абоненты перезапрашивают его с ресурсов и он снова дропается. Порой может быть до 10-15-20 процентов потерь входящего трафика при малых размерах буферов.

 

Когда я советовал буфера увеличить то это до 5000-10000 а то и 20000 пакетов на каждого абонента.

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


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

Отключить шейпер для теста?

Собрать таки ipt_ratelimit?

 

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


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

В 17.07.2020 в 13:51, ivanovmt сказал:

На самом деле изначально всё работало с приоритезацией. На icmp, voip и http трафик выделялась гарантированная полоса и скорость делилась равномерно. Торрент не мог забрать всю полосу под себя.
До введения приоритезации около 10% абонентов постоянно долбило тех поддержку. Постоянные заявки с жалобами на плохую скорость. Монтажник приходил к абоненту, вырубал торрент, и проблема решалась. Количество заявок на плохую скорость уменьшилось до 1-2 в месяц. Поэтому мне бы очень не хотелось уходить от "равноправного" распределения трафика.

Придётся, у нас тоже был подобный феншуй и 4 полосы внутри абонского канала, когда цпулоад в чнн на брасе стал 60% на ядро, переехали на полисер, нагрузка упала в 2.5-3 раза

 

6 часов назад, vurd сказал:

Собрать таки ipt_ratelimit?

Таки тоже рекомендую, на него и переехали.

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


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

В 18.07.2020 в 09:08, zhenya` сказал:

Dhcp выносите на другой сервер.

+1. Хотя бы в отдельный влан и релей костылить.

Дхцп сервер работающий на тех же интерфейсах при большом трафике превращает любой роутер в тыкву.

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


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

16 hours ago, kayot said:

+1. Хотя бы в отдельный влан и релей костылить.

Дхцп сервер работающий на тех же интерфейсах при большом трафике превращает любой роутер в тыкву.

Люто плюсую.

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


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

В 18.07.2020 в 09:19, vurd сказал:

Отключить шейпер для теста?

Собрать таки ipt_ratelimit?

 

Собрал, пока не получается настроить под входящую абонентскую скорость
Пишу
iptables -A FORWARD -m ratelimit --ratelimit-set out --ratelimit-mode src -j DROP
Режет исход у абонента
Пишу
iptables -A FORWARD -m ratelimit --ratelimit-set in --ratelimit-mode dst -j DROP
Ничего не происходит
Пробовал указывать различные интерфейсы - не работает

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

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


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

3 minutes ago, ivanovmt said:

Режет исход у абонента

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

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


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

Всем спасибо, ipt_ratelimit работает. С моим кол-вом трафика вообще никакую нагрузку не создаёт. Проблема решена.


Но честно говоря сама работа полисера не радует:
1)Как только абонент начинает качать файл, нагрузка прыгает до 100мбит или до 1гбита в зависимости от порта
2)Установил скорость в 50мбит и включил торрент. iftop показывает среднюю нагрузку в 47мбит, пики до 65мбит, проседания до 40мбит
Не знаю как на это отреагируют пользователи, посмотрим. Сам торрент клиент вроде как ровно показывает скорость.
Есть мысли бизнес абонентов оставить на шейпере.

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

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


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

14 минут назад, ivanovmt сказал:

Но честно говоря сама работа полисера не радует

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

На скоростях от 10 Мбит/с правильная настройка burst позволяет свести к минимуму дискомфорт от полисинга.

 

15 минут назад, ivanovmt сказал:

Есть мысли бизнес абонентов оставить на шейпере.

Шейпинг можно применять на тарифах до 2 Мбит/с. Максимум до 5 Мбит/с.

Если очень хочется, используйте очереди (если железо позволяет).

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


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

В 20.07.2020 в 15:13, alibek сказал:

Шейпинг можно применять на тарифах до 2 Мбит/с. Максимум до 5 Мбит/с.

Если очень хочется, используйте очереди (если железо позволяет).

У нас шейпер и на тарифах 100-200-300М работает. Никаких проблем по нагрузке не создает. Основная масса абонентов с тарифами 30-100М.

Ах да, у нас связки из двух микротиков, первый режет скорость - шейпер, второй делает НАТ. 2 штуки CCR1036 прокачивают 4-5Г в пиках.

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


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

4 часа назад, Saab95 сказал:

Ах да, у нас связки из двух микротиков, первый режет скорость - шейпер, второй делает НАТ. 2 штуки CCR1036 прокачивают 4-5Г в пиках.

И что? У нас 1 штука HP Proliant G8 и натит и режет скорость и прокачивает 4-5Г в пиках

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


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

12 часов назад, pppoetest сказал:

И что? У нас 1 штука HP Proliant G8 и натит и режет скорость и прокачивает 4-5Г в пиках

И в чем суть? Указанный вами сервер больше подходит для других задач, а не роутинга. Во первых у него много медленных ядер, что для роутера не особо без нормального распараллеливания. Видели же что на форумах про CCR пишут - что одно ядро упирается в полку и это влияет на пропуск трафика? Мы, если надо на базе сервера собирать, покупаем последний I7 с большим количеством ядер на максимальной частоте, планку оперативки и серверный корпус простой, все собираем и такое решение на микротике 10Г тянет, упирается в скорости одной двухпортовой сетевушки 10Г. При этом цена дешевле б/у G8, которые дешевле 80 тыс в нормальном состоянии не продаются.

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


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

9 часов назад, Saab95 сказал:

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

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

9 часов назад, Saab95 сказал:

если надо на баз-е сервера собирать, покупаем последний I7 с большим количеством ядер

Покажи мне I7 на 8 ядер, 4ггц на ядро и с 25мбайтами кэша. Есть? Нету? беда печаль.

9 часов назад, Saab95 сказал:

При этом цена дешевле б/у G8, которые дешевле 80 тыс в нормальном состоянии не продаются.

Мы на наге взяли за 82тыс, в нормально состоянии, к нему X520-DA2 c двумя десятками.

 

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


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

11 минут назад, pppoetest сказал:

Покажи мне I7 на 8 ядер, 4ггц на ядро и с 25мбайтами кэша. Есть? Нету? беда печаль.

Есть 8 ядер по 3.8. И где там на Б/У серверах ксеоны с 8 ядрами по 4ггц? Кроме всего не забывайте про то, сколько жрут эти б/у сервера, и частая причина замены старых на новое это как раз снижение энергопотребления.

 

16 минут назад, pppoetest сказал:

Мы на наге взяли за 82тыс, в нормально состоянии, к нему X520-DA2 c двумя десятками.

А мы собирали на новых комплектующих, и с микротиком он легко 10Г прогоняет.

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


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

 

25 минут назад, Saab95 сказал:

И где там на Б/У серверах ксеоны с 8 ядрами по 4ггц?

e5-2667-v2

25 минут назад, Saab95 сказал:

Кроме всего не забывайте про то, сколько жрут эти б/у сервера

0.thumb.jpg.1ff34365de5c1d7d6a37da49b92d56fc.jpg

Аж 160ватт, на два блока питания, кстати в микротик уже завезли два блока питания?

 

25 минут назад, Saab95 сказал:

и с микротиком он легко 10Г прогоняет.

С натом и нарезкой скоростей и бгп? Можно нотариально заверенных скриншотов, с cpu load?

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


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

Join the conversation

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

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

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

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

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

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

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