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

ubuntu NAT карта 10 Гбит Intel 82599 ошибки.

Добрый день коллеги. К сожалению не селен в linux, проще было бы мне в freebsd . Но так сложилось, на BSD не получилось отнатить 4 гбит. Вообщем снимаю по snmp in discards, растут ошибки в часпик до 500 пакетов в сек. Прерывания раскинуты .

99 процентов ната. В часик-пик загрузка по ядрам не более 30 процентов.

Загрузка порта RX до 3.5 Гбит TX 900 мбит ,PPS до 300K

NAT трансляций до 850К

Железо

Проц-Intel® Xeon® CPU E5-2430 0 @ 2.20GHz stepping 07- 2шт!

В итоге 12 ядер.

Карта Intel X520-DA2 2-х портовая

Модули SFP+ 10Гбит

 

 

Версия ubuntu

root@rnet:~#  lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 12.04.3 LTS
Release:	12.04
Codename:	precise

 

Uplink eth4 10 Гбит

 

ethtool -S eth4


NIC statistics:
    rx_packets: 2281837791254
    tx_packets: 1714884457027
    rx_bytes: 2458944620767114
    tx_bytes: 713850616560437
    rx_pkts_nic: 2281837791052
    tx_pkts_nic: 1714884457008
    rx_bytes_nic: 2477311750854909
    tx_bytes_nic: 728663330317895
    lsc_int: 2
    non_eop_descs: 9
    multicast: 1
    broadcast: 960
    hw_rsc_aggregated: 15
    hw_rsc_flushed: 26
    fdir_match: 65123211499
    fdir_miss: 2204988624648
    fdir_overflow: 9955974
    rx_missed_errors: 118547603
    tx_restart_queue: 29439
    tx_flow_control_xon: 12386
    tx_flow_control_xoff: 431040
    rx_csum_offload_errors: 2628282
    tx_queue_0_packets: 145570098723
    tx_queue_0_bytes: 59530974036735
    tx_queue_1_packets: 145792522736
    tx_queue_1_bytes: 59652362364862
    tx_queue_2_packets: 145467571335
    tx_queue_2_bytes: 59293847520514
    tx_queue_3_packets: 146324266280
    tx_queue_3_bytes: 60407360990113
    tx_queue_4_packets: 146632796887
    tx_queue_4_bytes: 60060125217545
    tx_queue_5_packets: 146645141775
    tx_queue_5_bytes: 60457453745238
    tx_queue_6_packets: 147328612595
    tx_queue_6_bytes: 60279191922175
    tx_queue_7_packets: 147355006841
    tx_queue_7_bytes: 60431622487538
    tx_queue_8_packets: 133822337856
    tx_queue_8_bytes: 55024357873923
    tx_queue_9_packets: 143519877889
    tx_queue_9_bytes: 69625941384816
    tx_queue_10_packets: 133634699485
    tx_queue_10_bytes: 54922287432649
    tx_queue_11_packets: 132791524625
    tx_queue_11_bytes: 54165091584329
    rx_queue_0_packets: 195539798787
    rx_queue_0_bytes: 210098193551648
    rx_queue_1_packets: 194862210458
    rx_queue_1_bytes: 209882133072875
    rx_queue_2_packets: 195754385267
    rx_queue_2_bytes: 210619066792512
    rx_queue_3_packets: 195212331342
    rx_queue_3_bytes: 210519930267758
    rx_queue_4_packets: 194694253963
    rx_queue_4_bytes: 209620468286436
    rx_queue_5_packets: 195284532207
    rx_queue_5_bytes: 210088592508940
    rx_queue_6_packets: 195610999116
    rx_queue_6_bytes: 210127124668886
    rx_queue_7_packets: 195536266216
    rx_queue_7_bytes: 209959122182999
    rx_queue_8_packets: 176927220669
    rx_queue_8_bytes: 190155306684887
    rx_queue_9_packets: 186966868361
    rx_queue_9_bytes: 205574678271421
    rx_queue_10_packets: 177697979776
    rx_queue_10_bytes: 191108615422454
    rx_queue_11_packets: 177750945092
    rx_queue_11_bytes: 191191389056298

 

ethtool -k eth4

 

Offload parameters for eth4:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off
receive-hashing: on

 

 

ethtool -i eth4

driver: ixgbe
version: 3.6.7-k
firmware-version: 0x61ae0001
bus-info: 0000:06:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes

 

NAT по подсетям, на каждый реальный ip сеть/23.

Итого гдето 44 IP. Может стоит разбить на hash ?

Edited by roysbike

Share this post


Link to post
Share on other sites

rx_missed_errors - ring buffer крутить нужно насколько я понимаю.

Share this post


Link to post
Share on other sites

tcp-segmentation-offload: on

generic-segmentation-offload: on

generic-receive-offload: on

 

Вырубить нафиг, оно для серваков только.

ну и не мешало бы взглянуть какие опции sysctl крутили, а если не крутили - то вот еще поле где копать нужно )

Share this post


Link to post
Share on other sites
rx_missed_errors: 118547603

ethtool -G eth4 tx 4096 rx 4096

Ещё можно уменьшить тайминги conntrack до минимумов и

посмотреть в iptables сколько правил проходит отначиваемый трафик, оставить минимум или привести к древовидной структуре.

Share this post


Link to post
Share on other sites

rx_missed_errors - ring buffer крутить нужно насколько я понимаю.

rx_missed_errors: 118547603

ethtool -G eth4 tx 4096 rx 4096

Ещё можно уменьшить тайминги conntrack до минимумов и

посмотреть в iptables сколько правил проходит отначиваемый трафик, оставить минимум или привести к древовидной структуре.

 

Спасибо ! Пока помогло! вроде больше rx_missed_errors: не растет. in_discard тоже не растет.

Как можно сбросить счетчики которые в ethtool -S?

NAT выглядит так

 

#NAT PPPoE 
$IPTABLES -t nat -A POSTROUTING -o $OUT_IFACE2 -s 172.30.0.0/23  -j SNAT --to-source 31.210.x.1
$IPTABLES -t nat -A POSTROUTING -o $OUT_IFACE2 -s 172.30.2.0/23  -j SNAT --to-source 31.210.x.2
$IPTABLES -t nat -A POSTROUTING -o $OUT_IFACE2 -s 172.30.4.0/23  -j SNAT --to-source 31.210.x.3
$IPTABLES -t nat -A POSTROUTING -o $OUT_IFACE2 -s 172.30.6.0/23 -j SNAT --to-source 31.210.x.4
$IPTABLES -t nat -A POSTROUTING -o $OUT_IFACE2 -s 172.30.8.0/23 -j SNAT --to-source 31.210.x.5
$IPTABLES -t nat -A POSTROUTING -o $OUT_IFACE2 -s 172.30.10.0/23 -j SNAT --to-source 31.210.x.6
$IPTABLES -t nat -A POSTROUTING -o $OUT_IFACE2 -s 172.30.12.0/23 -j SNAT --to-source 31.210.x.7
$IPTABLES -t nat -A POSTROUTING -o $OUT_IFACE2 -s 172.30.14.0/23 -j SNAT --to-source 31.210.x.8
и тд 44 IP

 

sysctl

 


net.ipv4.neigh.default.gc_thresh1 = 8192
net.ipv4.neigh.default.gc_thresh2 = 16384
net.ipv4.neigh.default.gc_thresh3 = 16384
net.ipv4.neigh.default.base_reachable_time=86400
net.netfilter.nf_conntrack_generic_timeout=120

et.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0



Edited by roysbike

Share this post


Link to post
Share on other sites
Как можно сбросить счетчики которые в ethtool -S?

Отключить карту и выгрузить модуль. Либо ребут.

 

Таймауты уменьшить примерно так.

net.ipv4.netfilter.ip_conntrack_generic_timeout = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 15
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 15
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 900
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 20
net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10
net.ipv4.netfilter.ip_conntrack_udp_timeout = 30
net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 45
net.ipv4.netfilter.ip_conntrack_icmp_timeout = 10

 

Особый вред несёт завышенный ip_conntrack_tcp_timeout_syn_sent, сканы tcp портов вирусни забивают таблицу.

Share this post


Link to post
Share on other sites

спасибо за советы, таблица трансляций conntrack уменьшилась почти в 2 раза. Но в час-пик растет ping, дропов нет, не пойму где узкое место. Растут только rx_csum_offload_errors: 2858568 . Может конечно проблемы у вышестоящего, но до их шлюза тоже icmp ответы растут. У меня 2 uplink физический в одном порту на сервере, раскинуты vlan-ами, на 2-ом провайдере до их шлюза ping ровный не растет. МОжет всетаки карточка не "упирается"?

Edited by roysbike

Share this post


Link to post
Share on other sites

всем спасибо! Были проблемы у вышестоящего! На сколько критичны ошибки rx_csum_offload_errors?

Share this post


Link to post
Share on other sites
tcp-segmentation-offload: on

generic-segmentation-offload: on

generic-receive-offload: on

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

сейчас на штатных дровах centos с ethtool применил только размер очередей и количество очередей

ethtool -L ix0 combined 6

ethtool -L ix1 combined 6

ethtool -G ix1 tx 4096 rx 4096

ethtool -G ix0 tx 4096 rx 4096

и проблемы все с ошибками ушли. все tso, gro и т.д. опции читал по интел документации и все параметры настраивал и с другой стороны. Факт на лицо, без касания этих именно параметров стало лучше. Увы тестировать какой именно проблему вызывает на рабочей системе не могу :( , хотя крутил их ночью и по очереди и с перезагрузкой сервера.

Share this post


Link to post
Share on other sites
tcp-segmentation-offload: on

generic-segmentation-offload: on

generic-receive-offload: on

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

сейчас на штатных дровах centos с ethtool применил только размер очередей и количество очередей

ethtool -L ix0 combined 6

ethtool -L ix1 combined 6

ethtool -G ix1 tx 4096 rx 4096

ethtool -G ix0 tx 4096 rx 4096

и проблемы все с ошибками ушли. все tso, gro и т.д. опции читал по интел документации и все параметры настраивал и с другой стороны. Факт на лицо, без касания этих именно параметров стало лучше. Увы тестировать какой именно проблему вызывает на рабочей системе не могу :( , хотя крутил их ночью и по очереди и с перезагрузкой сервера.

Сколько в час-пик прокачилвали , если не секрет. У меня чисто NAT, RX3.5 Гбит TX 0.8 Гбит, 400 PPS , прервания до 45 процентов на ядро. 12 ядер

Share this post


Link to post
Share on other sites

а пуругружать то сервак зачем ??.. И почитайте в документации дров что рекомендует Интел по поводу TSO

Share this post


Link to post
Share on other sites
а пуругружать то сервак зачем ??

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

но я привык делать так.

#!/bin/sh

ethtool -x xxxxxx

sleep 60

reboot

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

 

Сколько в час-пик прокачилвали , если не секрет. У меня чисто NAT, RX3.5 Гбит TX 0.8 Гбит, 400 PPS , прервания до 45 процентов на ядро. 12 ядер

600Кппс, 5Гб вход, 1,2Г аут, 1,5Мега стейтов. NAT + policer (ISG) загрузка проца 60% в пике.

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

Share this post


Link to post
Share on other sites

Добрый вечер, уважаемые коллеги. Проблема выше исправилась, но в час-пик есть потери icmp и не много вырос RTA , c 15 мс до 17мс. rx_missed_errors не растут. Люди жалуются на танки и другие онлайн игры в час-пик. Машина только для NAT. Шейпера и сенсора нет. Может конечно грешить на вышестоящий.

 

ethtool -S eth4

 

NIC statistics:
    rx_packets: 2886465335970
    tx_packets: 2165188625753
    rx_bytes: 3113059633577509
    tx_bytes: 893750844384680
    rx_pkts_nic: 2886464940796
    tx_pkts_nic: 2165188328332
    rx_bytes_nic: 3136265031853335
    tx_bytes_nic: 912448206320290
    lsc_int: 17
    tx_busy: 0
    non_eop_descs: 9
    rx_errors: 0
    tx_errors: 0
    rx_dropped: 0
    tx_dropped: 0
    multicast: 1
    broadcast: 962
    rx_no_buffer_count: 0
    collisions: 0
    rx_over_errors: 0
    rx_crc_errors: 0
    rx_frame_errors: 0
    hw_rsc_aggregated: 15
    hw_rsc_flushed: 26
    fdir_match: 65178682629
    fdir_miss: 2810039567478
    fdir_overflow: 14811414
    rx_fifo_errors: 0
    rx_missed_errors: 120476794
    tx_aborted_errors: 0
    tx_carrier_errors: 0
    tx_fifo_errors: 0
    tx_heartbeat_errors: 0
    tx_timeout_count: 6
    tx_restart_queue: 37902
    rx_long_length_errors: 0
    rx_short_length_errors: 0
    tx_flow_control_xon: 12557
    rx_flow_control_xon: 0
    tx_flow_control_xoff: 443384
    rx_flow_control_xoff: 0
    rx_csum_offload_errors: 3614194
    alloc_rx_page_failed: 0
    alloc_rx_buff_failed: 0
    rx_no_dma_resources: 0
    os2bmc_rx_by_bmc: 0
    os2bmc_tx_by_bmc: 0
    os2bmc_tx_by_host: 0
    os2bmc_rx_by_host: 0
    fcoe_bad_fccrc: 0
    rx_fcoe_dropped: 0
    rx_fcoe_packets: 0
    rx_fcoe_dwords: 0
    fcoe_noddp: 0
    fcoe_noddp_ext_buff: 0
    tx_fcoe_packets: 0
    tx_fcoe_dwords: 0
    tx_queue_0_packets: 183957153296
    tx_queue_0_bytes: 74734667038402
    tx_queue_1_packets: 184406005117
    tx_queue_1_bytes: 75091128364271
    tx_queue_2_packets: 183941002115
    tx_queue_2_bytes: 74535583525494
    tx_queue_3_packets: 184623948185
    tx_queue_3_bytes: 75621811307920
    tx_queue_4_packets: 185556215897
    tx_queue_4_bytes: 75678077255457
    tx_queue_5_packets: 185283538689
    tx_queue_5_bytes: 76044349202059
    tx_queue_6_packets: 186051031044
    tx_queue_6_bytes: 75760776988042
    tx_queue_7_packets: 186568737232
    tx_queue_7_bytes: 76076597407057
    tx_queue_8_packets: 169154101354
    tx_queue_8_bytes: 69107443921754
    tx_queue_9_packets: 178706198246
    tx_queue_9_bytes: 83636053156613
    tx_queue_10_packets: 168893214955
    tx_queue_10_bytes: 69140231329551
    tx_queue_11_packets: 168047479623
    tx_queue_11_bytes: 68324124888060
    rx_queue_0_packets: 247435821456
    rx_queue_0_bytes: 266335072400937
    rx_queue_1_packets: 246919420907
    rx_queue_1_bytes: 266241209343231
    rx_queue_2_packets: 247745477826
    rx_queue_2_bytes: 266826656951940
    rx_queue_3_packets: 246976750994
    rx_queue_3_bytes: 266485040685455
    rx_queue_4_packets: 246485975584
    rx_queue_4_bytes: 265826380521477
    rx_queue_5_packets: 247518157879
    rx_queue_5_bytes: 266483424993475
    rx_queue_6_packets: 247675384406
    rx_queue_6_bytes: 266296200605502
    rx_queue_7_packets: 247410174477
    rx_queue_7_bytes: 266010612489679
    rx_queue_8_packets: 224124823450
    rx_queue_8_bytes: 241288419381790
    rx_queue_9_packets: 234173968221
    rx_queue_9_bytes: 256657232219425
    rx_queue_10_packets: 224798624627
    rx_queue_10_bytes: 242085487703227
    rx_queue_11_packets: 225200756143
    rx_queue_11_bytes: 242523896281371

 

ethtool -a eth4

Pause parameters for eth4:
Autonegotiate:	off
RX:		off
TX:		off

 

ethtool -k eth4

 

Offload parameters for eth4:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: off
udp-fragmentation-offload: off
generic-segmentation-offload: off
generic-receive-offload: off
large-receive-offload: off
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off
receive-hashing: on

 

ethtool -g eth4

Ring parameters for eth4:
Pre-set maximums:
RX:		4096
RX Mini:	0
RX Jumbo:	0
TX:		4096
Current hardware settings:
RX:		4096
RX Mini:	0
RX Jumbo:	0
TX:		4096

 

sysctl.conf

 

net.ipv4.neigh.default.gc_thresh1 = 8192
net.ipv4.neigh.default.gc_thresh2 = 16384
net.ipv4.neigh.default.gc_thresh3 = 16384
net.ipv4.ip_local_port_range = 1024	65000
net.netfilter.nf_conntrack_generic_timeout=120

net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0


net.ipv4.netfilter.ip_conntrack_generic_timeout = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 15
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 15
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 900
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 20
net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10
net.ipv4.netfilter.ip_conntrack_udp_timeout = 30
net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 45
net.ipv4.netfilter.ip_conntrack_icmp_timeout = 10

 

 

top

 

top - 21:41:46 up 228 days, 12:20,  2 users,  load average: 0.08, 0.13, 0.13
Tasks: 143 total,   1 running, 142 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.3%us,  0.7%sy,  0.0%ni, 70.1%id,  0.0%wa,  0.0%hi, 28.9%si,  0.0%st
Cpu1  :  0.3%us,  0.0%sy,  0.0%ni, 67.0%id,  0.0%wa,  0.0%hi, 32.7%si,  0.0%st
Cpu2  :  0.3%us,  0.3%sy,  0.0%ni, 70.8%id,  0.0%wa,  0.0%hi, 28.5%si,  0.0%st
Cpu3  :  0.3%us,  0.0%sy,  0.0%ni, 71.5%id,  0.0%wa,  0.0%hi, 28.1%si,  0.0%st
Cpu4  :  0.0%us,  0.3%sy,  0.0%ni, 71.5%id,  0.0%wa,  0.0%hi, 28.1%si,  0.0%st
Cpu5  :  0.7%us,  0.0%sy,  0.0%ni, 71.0%id,  0.0%wa,  0.0%hi, 28.3%si,  0.0%st
Cpu6  :  0.3%us,  0.0%sy,  0.0%ni, 70.6%id,  0.0%wa,  0.0%hi, 29.0%si,  0.0%st
Cpu7  :  0.3%us,  0.0%sy,  0.0%ni, 66.8%id,  0.0%wa,  0.0%hi, 32.9%si,  0.0%st
Cpu8  :  0.3%us,  0.3%sy,  0.0%ni, 70.4%id,  0.0%wa,  0.0%hi, 28.9%si,  0.0%st
Cpu9  :  1.0%us,  0.0%sy,  0.0%ni, 70.9%id,  0.0%wa,  0.0%hi, 28.0%si,  0.0%st
Cpu10 :  0.3%us,  0.3%sy,  0.0%ni, 70.6%id,  0.0%wa,  0.0%hi, 28.7%si,  0.0%st
Cpu11 :  0.3%us,  0.0%sy,  0.0%ni, 72.0%id,  0.0%wa,  0.0%hi, 27.7%si,  0.0%st
Mem:  24651672k total,  3814112k used, 20837560k free,   223092k buffers
Swap:        0k total,        0k used,        0k free,  1627072k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                               
20206 bind      20   0  998m 152m 2892 S   11  0.6   2356:53 named                                                                                                                  
  23 root      20   0     0    0    0 S    0  0.0 157:05.78 ksoftirqd/4                                                                                                            
  92 root      20   0     0    0    0 S    0  0.0   3:26.73 kworker/u:5                                                                                                            
 386 root      20   0     0    0    0 S    0  0.0  22:08.66 md0_raid1                                                                                                              
33450 root      20   0     0    0    0 S    0  0.0   0:16.84 kworker/0:1                                                                                                            
41595 root      20   0 17340 1328  972 R    0  0.0   0:00.04 top                                                                                                                    
49286 snmp      20   0 51784 5588 2816 S    0  0.0   5:01.38 snmpd                                                                                                                  
   1 root      20   0 24332 2332 1360 S    0  0.0   3:02.62 init                                     

CPU

post-88211-085282600 1392744420_thumb.png

post-88211-043678600 1392744422_thumb.png

post-88211-080726000 1392744423_thumb.png

post-88211-006315700 1392744425_thumb.png

post-88211-040955000 1392744426_thumb.png

Edited by roysbike

Share this post


Link to post
Share on other sites

roysbike сори за оффтоп, чем состоится график? :)

Share this post


Link to post
Share on other sites

roysbike сори за оффтоп, чем состоится график? :)

Рисует это все в связке, nagios+pnp4nagios (основа rrdtool) , самопиные скрипты для nagios и шаблоны для pnp4nagios. Шаблон взял за основу http://docs.pnp4nagios.org/templates/gradient

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
Sign in to follow this