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

Linux softrouter Ошибки rx_csum_offload_errors

Уважаемые коллеги!

 

Прошу у вас помощи в решении проблемы с появлением ошибок в rx_csum_offload_errors.

Наша организация имеет статус автономной системы, необходимый нам для сервисов, предоставляемых нашим клиентам. Мы используем маршрутизатор на базе ОС Linux с несколькими сетевыми картами подключенными к трем провайдерам на скорости до 10Мбит/c каждый, только маршрутизация, nat, шейперы и т.д. не используются.

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

Спасибо.

 

lspci | grep Ether

 

00:19.0 Ethernet controller: Intel Corporation 82567LM-3 Gigabit Network Connection (rev 02)

03:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)

03:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)

04:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)

04:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)

07:00.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)

07:02.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)

 

ethtool -i eth3

driver: e1000e

version: 1.2.10-NAPI

firmware-version: 5.10-2

bus-info: 0000:03:00.0

 

ifconfig eth3

eth3 Link encap:Ethernet HWaddr 00:15:17:F7:08:39

inet addr:XXXX Bcast:XXXX Mask:255.255.255.252

inet6 addr: XXXX/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:5210669 errors:0 dropped:0 overruns:0 frame:0

TX packets:966423 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:2000

RX bytes:2816587882 (2.6 GiB) TX bytes:392453661 (374.2 MiB)

Interrupt:90 Memory:f7880000-f78a0000

 

ethtool eth3

Settings for eth3:

Supported ports: [ TP ]

Supported link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

1000baseT/Full

Supports auto-negotiation: Yes

Advertised link modes: 10baseT/Half 10baseT/Full

100baseT/Half 100baseT/Full

1000baseT/Full

Advertised auto-negotiation: Yes

Speed: 100Mb/s

Duplex: Full

Port: Twisted Pair

PHYAD: 1

Transceiver: internal

Auto-negotiation: on

Supports Wake-on: pumbag

Wake-on: g

Current message level: 0x00000001 (1)

Link detected: yes

 

ethtool -g eth3

Ring parameters for eth3:

Pre-set maximums:

RX: 4096

RX Mini: 0

RX Jumbo: 0

TX: 4096

Current hardware settings:

RX: 256

RX Mini: 0

RX Jumbo: 0

TX: 256

 

ethtool -k eth3

Offload parameters for eth3:

Cannot get device udp large send offload settings: Operation not supported

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

 

ethtool -S eth3

NIC statistics:

rx_packets: 5210935

tx_packets: 966542

rx_bytes: 2837662325

tx_bytes: 399171547

rx_broadcast: 6534

tx_broadcast: 5

rx_multicast: 0

tx_multicast: 6

rx_errors: 0

tx_errors: 0

tx_dropped: 0

multicast: 0

collisions: 0

rx_length_errors: 0

rx_over_errors: 0

rx_crc_errors: 0

rx_frame_errors: 0

rx_no_buffer_count: 0

rx_missed_errors: 0

tx_aborted_errors: 0

tx_carrier_errors: 0

tx_fifo_errors: 0

tx_heartbeat_errors: 0

tx_window_errors: 0

tx_abort_late_coll: 0

tx_deferred_ok: 0

tx_single_coll_ok: 0

tx_multi_coll_ok: 0

tx_timeout_count: 0

tx_restart_queue: 0

rx_long_length_errors: 0

rx_short_length_errors: 0

rx_align_errors: 0

tx_tcp_seg_good: 0

tx_tcp_seg_failed: 0

rx_flow_control_xon: 0

rx_flow_control_xoff: 0

tx_flow_control_xon: 0

tx_flow_control_xoff: 0

rx_long_byte_count: 2837662325

rx_csum_offload_good: 4709385

rx_csum_offload_errors: 1037

rx_header_split: 0

alloc_rx_buff_failed: 0

tx_smbus: 0

rx_smbus: 0

dropped_smbus: 0

rx_dma_failed: 0

tx_dma_failed: 0

 

cat /proc/cpuinfo

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 23

model name : Intel® Core2 Duo CPU E8400 @ 3.00GHz

stepping : 10

cpu MHz : 2992.503

cache size : 6144 KB

physical id : 0

siblings : 2

core id : 0

cpu cores : 2

apicid : 0

fpu : yes

fpu_exception : yes

cpuid level : 13

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm

bogomips : 5985.00

clflush size : 64

cache_alignment : 64

address sizes : 36 bits physical, 48 bits virtual

power management:

 

processor : 1

vendor_id : GenuineIntel

cpu family : 6

model : 23

model name : Intel® Core2 Duo CPU E8400 @ 3.00GHz

stepping : 10

cpu MHz : 2992.503

cache size : 6144 KB

physical id : 0

siblings : 2

core id : 1

cpu cores : 2

apicid : 1

fpu : yes

fpu_exception : yes

cpuid level : 13

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm

bogomips : 5984.94

clflush size : 64

cache_alignment : 64

address sizes : 36 bits physical, 48 bits virtual

power management:

 

cat /proc/interrupts

CPU0 CPU1

0: 244895069 0 IO-APIC-edge timer

1: 2 0 IO-APIC-edge i8042

8: 1 0 IO-APIC-edge rtc

9: 0 0 IO-APIC-level acpi

12: 4 0 IO-APIC-edge i8042

50: 17500395 0 IO-APIC-level ehci_hcd:usb2, uhci_hcd:usb6

58: 16 0 IO-APIC-level uhci_hcd:usb8

66: 1895387 0 PCI-MSI ahci

138: 12847473 0 PCI-MSI eth2

154: 4964596 0 PCI-MSI eth3

169: 18 0 IO-APIC-level uhci_hcd:usb3

170: 7397518 0 PCI-MSI eth4

177: 2 0 IO-APIC-level uhci_hcd:usb4, uhci_hcd:usb7

186: 1273715 0 PCI-MSI eth5

233: 0 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb5

NMI: 6900 28954

LOC: 244894824 244894768

ERR: 0

MIS: 0

 

Share this post


Link to post
Share on other sites

Причина скорее всего в глюках драйвера для сетевух. Нужно принудительно отключить rx checksum offload через ethtool, это мало повлияет на загрузку процессора, т.к. скорости у вас до 10 Мбит.

Edited by photon

Share this post


Link to post
Share on other sites
Причина скорее всего в глюках драйвера для сетевух. Нужно принудительно отключить rx checksum offload через ethtool, это мало повлияет на загрузку процессора, т.к. скорости у вас до 10 Мбит.
Как тогда объяснить отсутствие данной ошибки на интерфейсе смотрящем в нашу сеть? Там тоже используется драйвер e1000e.

Спасибо.

 

ethtool -i eth2

driver: e1000e

version: 1.2.10-NAPI

firmware-version: 0.5-3

bus-info: 0000:00:19.0

 

ethtool -S eth2

NIC statistics:

rx_packets: 8133167

tx_packets: 8243901

rx_bytes: 3859184764

tx_bytes: 3803628570

rx_broadcast: 189

tx_broadcast: 414388

rx_multicast: 0

tx_multicast: 6

rx_errors: 0

tx_errors: 0

tx_dropped: 0

multicast: 0

collisions: 0

rx_length_errors: 0

rx_over_errors: 0

rx_crc_errors: 0

rx_frame_errors: 0

rx_no_buffer_count: 0

rx_missed_errors: 0

tx_aborted_errors: 0

tx_carrier_errors: 0

tx_fifo_errors: 0

tx_heartbeat_errors: 0

tx_window_errors: 0

tx_abort_late_coll: 0

tx_deferred_ok: 0

tx_single_coll_ok: 0

tx_multi_coll_ok: 0

tx_timeout_count: 0

tx_restart_queue: 1

rx_long_length_errors: 0

rx_short_length_errors: 0

rx_align_errors: 0

tx_tcp_seg_good: 0

tx_tcp_seg_failed: 0

rx_flow_control_xon: 0

rx_flow_control_xoff: 0

tx_flow_control_xon: 0

tx_flow_control_xoff: 0

rx_long_byte_count: 3859184764

rx_csum_offload_good: 6387618

rx_csum_offload_errors: 0

rx_header_split: 0

alloc_rx_buff_failed: 0

tx_smbus: 0

rx_smbus: 0

dropped_smbus: 0

rx_dma_failed: 0

tx_dma_failed: 0

 

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

 

cat /proc/interrupts | grep eth

138: 12974038 0 PCI-MSI eth2

154: 4985346 0 PCI-MSI eth3

170: 7512112 0 PCI-MSI eth4

186: 1289298 0 PCI-MSI eth5

Share this post


Link to post
Share on other sites
И еще, как я понял у нас загружено всего лишь одно ядро процессора, как можно распределить нагрузку на оба ядра?

 

cat /proc/interrupts | grep eth

138: 12974038 0 PCI-MSI eth2

154: 4985346 0 PCI-MSI eth3

170: 7512112 0 PCI-MSI eth4

186: 1289298 0 PCI-MSI eth5

Поставьте irqbalance, или напишите скрипт, пишущий при загрузке битовую маску нужного ядра в /proc/irq/xxx/smp_affinity

Share this post


Link to post
Share on other sites
Поставьте irqbalance, или напишите скрипт, пишущий при загрузке битовую маску нужного ядра в /proc/irq/xxx/smp_affinity
Спасибо за совет.

Ребята, еще одна имеется проблема как мне кажется:

netstat -s
Ip:
    24619678 total packets received
    3039 with invalid headers
    24389313 forwarded
    0 incoming packets discarded
    219870 incoming packets delivered
    24791678 requests sent out
    21 outgoing packets dropped
    10 dropped because of missing route
    21 fragments failed
Icmp:
    2173 ICMP messages received
    297 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 27
        timeout in transit: 192
        redirects: 11
        echo requests: 1901
        echo replies: 18
    205953 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 201306
        time exceeded: 2948
        echo request: 18
        echo replies: 1681
IcmpMsg:
        InType0: 18
        InType3: 27
        InType5: 11
        InType8: 1901
        InType11: 192
        OutType0: 1681
        OutType3: 201306
        OutType8: 18
        OutType11: 2948
Tcp:
    234 active connections openings
    895 passive connection openings
    1 failed connection attempts
    7 connection resets received
    4 connections established
    215823 segments received
    194363 segments send out
    58 segments retransmited
    101 bad segments received.
    9299 resets sent
Udp:
    1151 packets received
    488 packets to unknown port received.
    0 packet receive errors
    1979 packets sent
TcpExt:
    1726 invalid SYN cookies received
    21 packets pruned from receive queue because of socket buffer overrun
    91 TCP sockets finished time wait in fast timer
    108 TCP sockets finished time wait in slow timer
    845 delayed acks sent
    Quick ack mode was activated 44 times
    36 packets directly queued to recvmsg prequeue.
    12 packets directly received from prequeue
    130263 packets header predicted
    20532 acknowledgments not containing data received
    2472 predicted acknowledgments
    TCPDSACKUndo: 1
    1 congestion windows recovered after partial ack
    0 TCP data loss events
    1 timeouts after reno fast retransmit
    3 timeouts after SACK recovery
    2 retransmits in slow start
    39 other TCP timeouts
    1388 packets collapsed in receive queue due to low socket buffer
    14 DSACKs sent for old packets
    5 DSACKs received
    861 connections reset due to unexpected data
    7 connections reset due to early user close
IpExt:
    InNoRoutes: 626
    InBcastPkts: 1064

Беспокоит появление ошибок packets pruned from receive queue because of socket buffer overrun, подскажите пожалуйста в какую сторону смотреть, для устранению их появления в дальнейшем?

 

Спасибо.

 

net.ipv4.tcp_mem = 65536 131072 262144

net.ipv4.udp_mem = 65536 131072 262144

net.ipv4.tcp_rmem = 8192 87380 16777216

net.ipv4.udp_rmem_min = 16384

net.core.rmem_default = 87380

net.core.rmem_max = 16777216

net.ipv4.tcp_wmem = 8192 65536 16777216

net.ipv4.udp_wmem_min = 16384

net.core.wmem_default = 65536

net.core.wmem_max = 16777216

net.core.optmem_max = 65536

 

cat /proc/meminfo
MemTotal:      8009032 kB
MemFree:       7148480 kB
Buffers:         59200 kB
Cached:         339472 kB
SwapCached:          0 kB
Active:         681160 kB
Inactive:        68792 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      8009032 kB
LowFree:       7148480 kB
SwapTotal:    10059768 kB
SwapFree:     10059768 kB
Dirty:               4 kB
Writeback:           0 kB
AnonPages:      351236 kB
Mapped:           8496 kB
Slab:            83048 kB
PageTables:       2968 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:  10059768 kB
Committed_AS:   362860 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    271044 kB
VmallocChunk: 34359465799 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

Edited by Phoenix

Share this post


Link to post
Share on other sites
Беспокоит появление ошибок packets pruned from receive queue because of socket buffer overrun, подскажите пожалуйста в какую сторону смотреть, для устранению их появления в дальнейшем?
Раз socket buffer overrun, речь идет не о транзитных пакетах, а на это конкретное устройство.

 

Share this post


Link to post
Share on other sites
Раз socket buffer overrun, речь идет не о транзитных пакетах, а на это конкретное устройство.
Спасибо, нас конечно же интересует транзитный трафик.

Вопрос о rx_csum_offload_errors остался открытым, хочется все же понять на сколько появление данной ошибки говорит о серьезных проблемах и в каком направлении стоит идти, чтобы избавиться от появления ее в дальнейшем?

Спасибо.

Edited by Phoenix

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