Jump to content
Калькуляторы

Linux softrouter

уважаемые, а вот что скажете про идею софтроутера виртуалкой?

для меня эта идея звучит дико, но слышал как сатанисты молотят за неё в плане отказоустойчивости (кластер на vmware - HA, FT) в случае более одной площадки (гео разнесённой) + серьезное железо на хостах....

Share this post


Link to post
Share on other sites

Зависит от объёмов трафика, если до гига, почему бы и не пуркуа па? Скоро предстоит поднять рутер на 100мбит, думаю сделать это на kvm.

Share this post


Link to post
Share on other sites

а почему до 1 гига думаете?

или просто так?

 

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

...есть для виртуальной среды cisco nexus v1000

там виртуальные интерфейсы по 10Г

правдо оно коммутирует... а не роутер, но %)

Share this post


Link to post
Share on other sites

IMHO мудрость про "виртуалки до гига" сильно устарела.

С современным могучим железом на хостах, повальной аппаратной поддержке виртуализации и паравиртуальных сетевках, накладные расходы на маршрутизацию минимальны. Вполне можно и BRASы виртуальные поднимать, и 10ки роутить.

 

P.S. роутер локалки уже несколько лет живет на виртуальной машине, каких-либо изменений не заметил. До гига трафика с НАТом бегает с околонулевой загрузкой под KVM.

Share this post


Link to post
Share on other sites

роутер локалки уже несколько лет живет на виртуальной машине, каких-либо изменений не заметил. До гига трафика с НАТом бегает с околонулевой загрузкой под KVM.

а как именно настроена сеть в kvm?

Share this post


Link to post
Share on other sites

а как именно настроена сеть в kvm?

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

Если прокидывать сетевку гостю накладные расходы вообще околонулевые будут.

Share this post


Link to post
Share on other sites

Приветствую всех.

Помогите найти в чём проблема.

 

Сервер:

-Мать Supermicro

-Xeon E5-2600v4 (2шт)

-16Gb оперативки

-Сетевая карта X520-DA2 (2шт)

 

Стоит Debian 7

Карты собраны в bond 2x10

Прерывания прибиты к ядрам вручную через smp_affinity

 

Задачи сервера: Шейпинг + NAT

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

 

Для начала на время теста NAT и шейпер отключили. Фактически сервер работает как L3 коммутатор, перекладывая пакеты с интерфейса на интерфейс.

Тестируем с помощью https://trex-tgn.cisco.com/trex/doc/trex_manual.html

к примеру t-rex-64 -f avl/sfr_delay_10_1g_no_bundeling.yaml -c 4 -l 10 -d 100000 -m 15

 

Первая проблема:

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

Core0 eth2-TxRx-0 eth3-TxRx-0 eth4-TxRx-0 eth5-TxRx-0

Core1 eth2-TxRx-1 eth3-TxRx-1 eth4-TxRx-1 eth5-TxRx-1

Core2 eth2-TxRx-2 eth3-TxRx-2 eth4-TxRx-2 eth5-TxRx-2

...

т.е. Очереди Х всех карт должны быть на одном и том же ядре

Причём начинать раздавать ядра нужно именно с первого CPU Core0

 

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

Не удаётся каждой очереди карты дать отдельное ядро.

По ethtool видно что TX пакеты перестают распределятся по очередям и весь TX прёт в одну очередь.

 

Примечательно что на работающих серверах такого не происходит.

Может ли это быть из за двух процессорности.

 

 

Вторая проблема:

В тестовом сервере стоит одна X520-DA2 карта 10G так что больше 10 проверить не получится.

Запускаем тест. Трафик начинает ходить, растёт число nf_conntrack_count Загрузка ядер копеечная 5-10%

НО как только sysctl net.netfilter.nf_conntrack_count доходит до 1 миллиона записей загрузка CPU резко вырастает до 40%

Хотя размер таблиц

echo 33554432 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

echo 16777216 > /sys/module/nf_conntrack/parameters/hashsize

 

На первый план выходит do_raw_spin_lock

perf top

8.19% [kernel] [k] do_raw_spin_lock

7.70% [kernel] [k] irq_entries_start

7.53% [ixgbe] [k] ixgbe_poll

5.18% [kernel] [k] ip_route_input_common

4.07% [ip_tables] [k] ipt_do_table

2.52% [kernel] [k] arch_read_lock

 

В логах тишина.

Если очистить conntrack -F то загрузка резко падает, пока снова не набежит около 1 миллиона записей.

Share this post


Link to post
Share on other sites

Вирутализация отключена?? НТ тоже???

 

Гипертрейдинг отключен в BIOS

 

Карты запускаю так (драйвер 5.0.4)

modprobe ixgbe RSS=10,10,10,10 IntMode=2,2,2,2 MQ=1,1,1,1 VMDQ=0,0,0,0

Share this post


Link to post
Share on other sites

А зачем hashsize 16 миллионов? Действительно столько будет сессий? В тесте у вас только 1M.

Потом, ничего страшного если в бакете хеша будет две записи.

 

А сколько t-rex выдает pps? какой размер пакета в тестах? ведь 10 гиг это может быть и 14Mpps и 2, в зависимости от размера пакета.

t-rex dpdk тулза и лего выдаст почти любую скорость в пакетах.

 

Т.е. я к тому, что он быстрее линукса c включенным conntrack как его не тюнь.

 

Я бы начал с небольшого packet rate, постепенно его увеличивая до тех пор, пока принимающая сторона t-rex не начнет рапортавать, что пошли потери.

Share this post


Link to post
Share on other sites

Потом, не очень понятно как будет себя вести connection tracking механизм netfilter'а. Ведь t-rex, насколько я знаю, stateless, т.е. он шлет просто пакеты и не умеет tcp/udp сессии. Поэтому,

как будет вести себя netfilter, не будет ли он создавать "лишние" сессии? т.к. фактически нет tcp/udp, а есть просто пакеты, не связные друг с другом.

 

Для тестов connection tracking'а, я бы взял warp17. он поддерживает tcp сессии и тоже дает огромную нагрузку в pps.

Share this post


Link to post
Share on other sites

Вынимайте один проц.

 

Какие плюсы это даст?

 

Для тестов connection tracking'а, я бы взял warp17. он поддерживает tcp сессии и тоже дает огромную нагрузку в pps.

 

Попробую

Share this post


Link to post
Share on other sites

Задачи сервера: Шейпинг + NAT

 

Может кто посоветует какую ОС лучше ставить для данных задач. Какое ядро и т.п.

Share this post


Link to post
Share on other sites

Задачи сервера: Шейпинг + NAT

 

Может кто посоветует какую ОС лучше ставить для данных задач. Какое ядро и т.п.

Ядро: 4.12

Share this post


Link to post
Share on other sites

может кто то вникал в вопрос

ixgbe-5.1.3 дравер и карточка intel 82599ES 10-Gigabit SFI/SFP+ каким образом прилепляют один "поток" к одной очереди.

тестируем ipef-ом сервер с двух компов и грузится только одно ядро CPU, в принципе это как бы нормально. Вот и вопрос - на основании srcIP,dstIP к очереди трафик прибивается или сетевуха глубже лезет до TCP|UDP и портов?

Edited by QWE

Share this post


Link to post
Share on other sites

может кто то вникал в вопрос

ixgbe-5.1.3 дравер и карточка intel 82599ES 10-Gigabit SFI/SFP+ каким образом прилепляют один "поток" к одной очереди.

тестируем ipef-ом сервер с двух компов и грузится только одно ядро CPU, в принципе это как бы нормально. Вот и вопрос - на основании srcIP,dstIP к очереди трафик прибивается или сетевуха глубже лезет до TCP|UDP и портов?

Вам нужно с разных IP это делать. Балансировка идет по IP SRC DST

Edited by roysbike

Share this post


Link to post
Share on other sites

может кто то вникал в вопрос

ixgbe-5.1.3 дравер и карточка intel 82599ES 10-Gigabit SFI/SFP+ каким образом прилепляют один "поток" к одной очереди.

тестируем ipef-ом сервер с двух компов и грузится только одно ядро CPU, в принципе это как бы нормально. Вот и вопрос - на основании srcIP,dstIP к очереди трафик прибивается или сетевуха глубже лезет до TCP|UDP и портов?

за распределение по очередям отвечает RSS. Для каждого пакета рассчитываешься хэш и в зависимости от его значения пакет попадает в нужную очередь.

Хэш можно настроить так, чтобы он рассчитывался на основе только сетевого уровня (ip src, ip dst), а можно и включить учет портов.

Никогда не настраивал рассчет RSS в линуксе, но вроде это можно сделать с помощью ethtool. Ключевое слово для ethtool rx-flow-hash.

Share this post


Link to post
Share on other sites

оно ж еще альфа, и вяжется с ospf/bgp демонами через жутий анус... + вроде как тот самый анус, именуемый vpp sandbox, у них сейчас разорван разломан и со свежим vpp не собирается/не работает.

Share this post


Link to post
Share on other sites

оно ж еще альфа, и вяжется с ospf/bgp демонами через жутий анус... + вроде как тот самый анус, именуемый vpp sandbox, у них сейчас разорван разломан и со свежим vpp не собирается/не работает.

ну вроде как для НАТа не нужны OSPF/BGP.

Share this post


Link to post
Share on other sites

оно ж еще альфа, и вяжется с ospf/bgp демонами через жутий анус... + вроде как тот самый анус, именуемый vpp sandbox, у них сейчас разорван разломан и со свежим vpp не собирается/не работает.

Я мучался с этим sandbox, даже писал в рассылку...

Попробуйте это решение: https://github.com/FRRouting/frr/wiki/Alternate-forwarding-planes:-VPP

Сейчас тестирую роутер на DPDK, по результатам автор напишет статью)

Share this post


Link to post
Share on other sites

какой прирост в pps даст задействование трех каналов памяти CPU вместо двух?

Share this post


Link to post
Share on other sites

какой прирост в pps даст задействование трех каналов памяти CPU вместо двух?

Околонулевой, или отрицательный. Пропускная способность растет минимально, латентность растет ощутимо.

Share this post


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