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

Маршрутизатор на Centos

Имеется системник с i5-4670 (4 x 3.4ггц) и 2 карточками intel i350-t2. Стоит Centos 7, прерывания раскиданы по ядрам (вручную, irqbalance каждые 5-10 сек менял ядра). Сервер маршрутизирует трафик между миром и локалкой. На нём крутится bgp (без full view), dhcpd и tc шейпер, iptables+ipset.

Пускаем через этот маршрутизатор hping3 с 2х серверов (vlan10) на трейтий сервер (vlan20). Оба влана, например, на eth2. При достижении 300к пакетов на интерфейсе eth2, si показывает 99%, ksoftirqd 100%, 80% потерь пакетов. При 200-250к пакетов - si 12%, ksoftrqd даже не выскакивает. Но есть такой момент, на всех 4х интерфейсах может быть по 200к пакетов и проблемы нет. Нагрузка появляется при 250к+ пакетов.

Вот и возник вопрос. Можно ли это профиксить или только замена железа поможет?

hping3 -d 1 --rand-source ip_address --faster

 28:    2701690    1744748    2344683    2271745  IR-PCI-MSI-edge      eth0
29:          1          0          0          0  IR-PCI-MSI-edge      eth1
30:  171345200  169389507  109184674  218322360  IR-PCI-MSI-edge      eth1-rx-0
31:  150053053   83104599  151165912  223802517  IR-PCI-MSI-edge      eth1-rx-1
32:  186495892  111549142  112436304  234875923  IR-PCI-MSI-edge      eth1-rx-2
33:  158976010  180870431  170022758  111272490  IR-PCI-MSI-edge      eth1-rx-3
34:  180929454  105231181  216153718  115707364  IR-PCI-MSI-edge      eth1-tx-0
35:  189888745  138612562  263748962  124417296  IR-PCI-MSI-edge      eth1-tx-1
36:  205698039  128601088  189239160  221975777  IR-PCI-MSI-edge      eth1-tx-2
37:  185522875  118200837  144223478  194044475  IR-PCI-MSI-edge      eth1-tx-3
40:          1          0          0          0  IR-PCI-MSI-edge      eth2
41:   69800742   58567281   53006256   91392123  IR-PCI-MSI-edge      eth2-rx-0
42:   78854523   65511463   79758929   71591243  IR-PCI-MSI-edge      eth2-rx-1
43:   76845708   86854208   77057444   83671461  IR-PCI-MSI-edge      eth2-rx-2
44:   57003327   83792902   75626361   69263975  IR-PCI-MSI-edge      eth2-rx-3
45:  141779983   71491281  135351424  148587804  IR-PCI-MSI-edge      eth2-tx-0
46:  108230666   67471994  144197484  166486942  IR-PCI-MSI-edge      eth2-tx-1
47:  135353877  139683685   70465709  155690332  IR-PCI-MSI-edge      eth2-tx-2
48:  167780888   79413573  150996982   83099320  IR-PCI-MSI-edge      eth2-tx-3
49:          0          0          0          1  IR-PCI-MSI-edge      eth3
50:  151279126  109191347  144846080  161135569  IR-PCI-MSI-edge      eth3-rx-0
51:  194411603  152782138  185925840  151429478  IR-PCI-MSI-edge      eth3-rx-1
52:  161593990  149918954  144065743  152037226  IR-PCI-MSI-edge      eth3-rx-2
53:  179662779  106820200  164945479  165038101  IR-PCI-MSI-edge      eth3-rx-3
54:  198790323  121198826  209318043  195822376  IR-PCI-MSI-edge      eth3-tx-0
55:  211768250  157071748  221561610  239461157  IR-PCI-MSI-edge      eth3-tx-1
56:  199816800  181533517  201208109  244981838  IR-PCI-MSI-edge      eth3-tx-2
57:  202353183  121875150  185856374  195305669  IR-PCI-MSI-edge      eth3-tx-3
58:          1          0          0          0  IR-PCI-MSI-edge      eth4
59:  124266136  104684657  206826829  150663409  IR-PCI-MSI-edge      eth4-rx-0
60:  136138256  196174592  159019971  126292666  IR-PCI-MSI-edge      eth4-rx-1
61:  180045695  126389834  142231642  121237912  IR-PCI-MSI-edge      eth4-rx-2
62:  152778012  121436005  120753192  193629546  IR-PCI-MSI-edge      eth4-rx-3
63:  173258802  125170439  181964084  140336434  IR-PCI-MSI-edge      eth4-tx-0
64:  152946386  129432795  157884255  186957783  IR-PCI-MSI-edge      eth4-tx-1
65:  175997086  124882943  176990272  166884618  IR-PCI-MSI-edge      eth4-tx-2
66:  164998728  119419200  178964340  174601588  IR-PCI-MSI-edge      eth4-tx-3

ethtool -c eth1,2,3,4

Coalesce parameters for eth1:
Adaptive RX: off  TX: off
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0

rx-usecs: 3
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0

tx-usecs: 3
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 0

rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0

rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0

Edited by mactep001

Share this post


Link to post
Share on other sites

Есть подозрение на conntrack, судя по "--rand-source". Что в фаерволе? В логах что-то появляется?

Share this post


Link to post
Share on other sites

input полностью закрыт кроме 22 порта для нескольких IP, 179 порта для вышестоящих, icmp.

И открываем доступ абонентам в мир

ipset -N users iphash --hashsize 8192
ipset users -A 1.1.1.1
...
iptables -A FORWARD -i eth1+ -m set --match-set users dst,src -j ACCEPT
iptables -A FORWARD -i eth2+ -m set --match-set users dst,src -j ACCEPT
iptables -A FORWARD -i eth1+ -j DROP
iptables -A FORWARD -i eth2+ -j DROP

(eth1 и eth2 - внешка)

Edited by mactep001

Share this post


Link to post
Share on other sites

Я про -m state и/или NAT, если ни то ни другое не используется, возможно стоит вообще модули контрека из загрузки.

Share this post


Link to post
Share on other sites

А как отключить conntrack?

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

sysctl -w net.netfilter.nf_conntrack_max=2000000

Share this post


Link to post
Share on other sites

Ещё есть такая штука:

http://github.com/danieltt/pktgen/blob/master/examples/pktgen.conf-1-1

Если такой же эксперимент проделать, то генерируется 200к пакетов, нагрузка на маршрутизатор 0%, а у абонентов потери.

Edited by mactep002

Share this post


Link to post
Share on other sites

Не за что, это старая проблема.

 

 

А если не секрет - что там за проблема и откуда ноги растут?

Share this post


Link to post
Share on other sites

Убираем dhcp с роутера => надо поставить dhcpd на другой сервер => нужна настройка dhcp relay на свиче. Но тут загвоздка... Чтоб настроить dhcp relay на свиче, надо чтобы сам свич находился в раздаваемых подсетях. Или я не прав?

Например, свитч имеет ip 10.0.1.10/24 (vlan 1), dhcp сервер имеет 10.0.2.10 (vlan 10), раздавать надо 10.1.1.0/30 (vlan 50), 10.1.1.4/30(vlan 60), 10.2.2.0/24(vlan70)...

В данном случае не получится использовать dhcp relay?

Если нет, то как тогда избавить от уязвимости?

Edited by mactep001

Share this post


Link to post
Share on other sites

Поднял на dgs-3120 dhcp relay. Запросы на dhcp сервер приходят только из той подсети, в которой находится сам свитч.

# config dhcp_relay add ipif System ip_address_dhcp_server
# config dhcp_relay option_82 state enable
# enable dhcp_relay

Share this post


Link to post
Share on other sites

Сейчас точно не вспомню, на форуме пролетала...))

 

Что-то не удалось с хода найти.. а ключевые слова для поиска не вспомните часом?

Share this post


Link to post
Share on other sites

Сейчас точно не вспомню, на форуме пролетала...))

 

Что-то не удалось с хода найти.. а ключевые слова для поиска не вспомните часом?

 

dhcp raw socket

Share this post


Link to post
Share on other sites

Интересно, спасибо. Только хотел спросить ссылочку.

Просто у меня 410к прерываний и DHCP на одном сервере, вот и подумал, мало ли что.

У меня нет на нем BGP и PPP.

Живёт нормально.

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.