mactep001 Posted October 16, 2016 (edited) Имеется системник с 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 October 16, 2016 by mactep001 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Mystray Posted October 16, 2016 Есть подозрение на conntrack, судя по "--rand-source". Что в фаерволе? В логах что-то появляется? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mactep001 Posted October 16, 2016 (edited) 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 October 16, 2016 by mactep001 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Antares Posted October 16, 2016 Уберите dhcp с этой тачки. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Mystray Posted October 16, 2016 Я про -m state и/или NAT, если ни то ни другое не используется, возможно стоит вообще модули контрека из загрузки. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mactep001 Posted October 16, 2016 А как отключить conntrack? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Mystray Posted October 16, 2016 А как отключить conntrack? для начала попробуйте просто увеличить количество на горячую. Может я не прав и причина в другом sysctl -w net.netfilter.nf_conntrack_max=2000000 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mactep002 Posted October 16, 2016 Не помогло Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Antares Posted October 16, 2016 Не помогло Уберите dhcp с этой тачки. Это пробовали?? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mactep002 Posted October 16, 2016 (edited) Спасибо, отключение dhcpd помогло. 500к пакетов, нагрузка 0% Edited October 16, 2016 by mactep002 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Antares Posted October 16, 2016 Не за что, это старая проблема. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mactep002 Posted October 16, 2016 (edited) Ещё есть такая штука: http://github.com/danieltt/pktgen/blob/master/examples/pktgen.conf-1-1 Если такой же эксперимент проделать, то генерируется 200к пакетов, нагрузка на маршрутизатор 0%, а у абонентов потери. Edited October 16, 2016 by mactep002 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
stalker86 Posted October 16, 2016 Не за что, это старая проблема. А если не секрет - что там за проблема и откуда ноги растут? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Antares Posted October 17, 2016 А если не секрет - что там за проблема и откуда ноги растут? Сейчас точно не вспомню, на форуме пролетала...)) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mactep001 Posted October 17, 2016 (edited) Убираем 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 October 17, 2016 by mactep001 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
zhenya` Posted October 17, 2016 нет. если dhcpd isc. То достаточно в shared-network Добавить subnet со свитчами и все. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mactep001 Posted October 18, 2016 Поднял на 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 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
stalker86 Posted October 19, 2016 Сейчас точно не вспомню, на форуме пролетала...)) Что-то не удалось с хода найти.. а ключевые слова для поиска не вспомните часом? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
bos9 Posted October 20, 2016 Сейчас точно не вспомню, на форуме пролетала...)) Что-то не удалось с хода найти.. а ключевые слова для поиска не вспомните часом? dhcp raw socket Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
stalker86 Posted October 20, 2016 В общем если кому ещё интересно http://forum.nag.ru/forum/index.php?showtopic=113425&st=40 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
BETEPAH Posted October 20, 2016 Интересно, спасибо. Только хотел спросить ссылочку. Просто у меня 410к прерываний и DHCP на одном сервере, вот и подумал, мало ли что. У меня нет на нем BGP и PPP. Живёт нормально. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...