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

Freebsd теряются пакеты, растет пинг

Схема сети:

Internet ---[em0 ---router em1]--DES3828--[em0 ---accounter2----em1]--DGS1224T--clients

 

Сервер:

[root@ /]# uname -a
FreeBSD accounter2.x.ru 7.2-RELEASE FreeBSD 7.2-RELEASE #1: Fri Oct 30 07:40:53 MSK 2009
2xXEON 5350 (8 ядер)

 

В нём имеем:

2 сетевые карты Intel 1000 Pro 6.9.6 1Гбит/c, в последствии обновлены до 6.9.21

 

На сервере крутится:

mpd с шифрованием
ng_car (шейпинг)
mysql
utm5

 

Проблема в следующем, всё живет где то до потока в 100Мбит/с, дальше потихоньку начинает умирать,

 

top -SP:

531 processes: 20 running, 496 sleeping, 14 waiting, 1 lock
CPU 0:  0.0% user,  0.0% nice, 71.8% system,  2.3% interrupt, 26.0% idle
CPU 1:  2.3% user,  0.0% nice, 69.5% system,  2.3% interrupt, 26.0% idle
CPU 2:  3.1% user,  0.0% nice, 66.9% system,  2.4% interrupt, 27.6% idle
CPU 3:  3.9% user,  0.0% nice, 70.1% system,  0.0% interrupt, 26.0% idle
CPU 4:  0.8% user,  0.0% nice, 61.5% system,  1.5% interrupt, 36.2% idle
CPU 5:  0.8% user,  0.0% nice, 62.3% system,  0.8% interrupt, 36.2% idle
CPU 6:  3.1% user,  0.0% nice, 56.3% system,  2.3% interrupt, 38.3% idle
CPU 7:  2.3% user,  0.0% nice, 64.3% system,  0.0% interrupt, 33.3% idle
Mem: 1908M Active, 249M Inact, 236M Wired, 83M Cache, 112M Buf, 19M Free
Swap: 20G Total, 1356K Used, 20G Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
   37 root        1 128    -     0K     8K CPU1   6 575:48 55.18% em0 taskq
    2 root        1 -68    -     0K     8K sleep  2 225:56 44.38% ng_queue0
    6 root        1 -68    -     0K     8K CPU6   6 225:55 44.09% ng_queue4
    7 root        1 -68    -     0K     8K *ng_no 2 225:58 43.46% ng_queue5
    3 root        1 -68    -     0K     8K sleep  3 225:55 43.16% ng_queue1
    4 root        1 -68    -     0K     8K CPU4   4 225:58 42.38% ng_queue2
    9 root        1 -68    -     0K     8K CPU5   5 225:52 42.09% ng_queue7
    5 root        1 -68    -     0K     8K CPU0   2 225:53 41.80% ng_queue3
    8 root        1 -68    -     0K     8K CPU7   7 225:54 41.16% ng_queue6
   38 root        1 -68    -     0K     8K CPU2   2 201:35 38.28% em1 taskq
   12 root        1 171 ki31     0K     8K RUN    6 908:35 37.16% idle: cpu6
   13 root        1 171 ki31     0K     8K RUN    5 890:05 34.67% idle: cpu5
   14 root        1 171 ki31     0K     8K RUN    4 869:03 33.69% idle: cpu4
   11 root        1 171 ki31     0K     8K RUN    7 912:26 33.40% idle: cpu7
   16 root        1 171 ki31     0K     8K CPU2   2 851:14 30.08% idle: cpu2
   15 root        1 171 ki31     0K     8K RUN    3 864:26 29.39% idle: cpu3
   18 root        1 171 ki31     0K     8K RUN    0 766:18 25.98% idle: cpu0
   17 root        1 171 ki31     0K     8K RUN    1 671:13 24.66% idle: cpu1
   19 root        1 -68    -     0K     8K RUN    2  44:11  6.15% swi4: clock sio
49171 root      367  54  -10   131M 51968K select 5   0:00  3.47% utm5_core
  682 root        1  96    0 59204K 16996K select 6  48:52  1.66% mpd4
3437 mysql      25  44    0  1749M  1704M ucond  3   0:00  1.66% mysqld
   21 root        1  96    -     0K     8K WAIT   5  62:12  0.00% swi1: net
   55 root        1 -68    -     0K     8K -      2   5:31  0.00% dummynet

 

[root@accounter2 /usr/src]# netstat -w1 -h

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
       44K     0        22M        50K     0        31M     0
       42K    55        21M        47K     0        29M     0
       41K     0        21M        46K     0        30M     0
       43K     4        22M        49K     0        31M     0
       42K   164        21M        48K     0        29M     0
       41K    76        21M        47K     0        31M     0
       43K   209        22M        49K     0        32M     0

 

[root@accounter2 /usr/src]# netstat -w1 -h -I em0

            input          (em0)           output
   packets  errs      bytes    packets  errs      bytes colls
       17K    21        11M        11K     0       3.6M     0
       16K    78        11M        10K     0       3.1M     0
       17K   140        12M        10K     0       3.1M     0
       16K     0        10M       9.4K     0       3.2M     0

 

[root@accounter2 /usr/src]# netstat -w1 -h -I em1

            input          (em1)           output
   packets  errs      bytes    packets  errs      bytes colls
       14K     0       5.7M        19K     0        14M     0
       12K     0       4.5M        14K     0        10M     0
       13K     0       4.3M        18K     0        12M     0
       12K     0       4.6M        17K     0        12M     0
       14K     0       5.1M        18K     0        13M     0

Видно что потери на интерфейсе em0, который смотрит в сторону роутера.

 

что было сделано:

1. Обновлены дрова до 6.9.21

2. sysctl.conf:

kern.ipc.maxsockbuf=10485760
net.inet.ip.forwarding=1
net.graph.maxdgram=524288
net.graph.recvspace=524288

 

3. loader.conf:

geom_mirror_load="YES"

if_em_load="YES"

netgraph_load="YES"

ng_ipfw_load="YES"

ng_car_load="YES"

autoboot_delay="3"

kern.ipc.maxpipekva="32000000"

4. а) Отключение резалки не дает результата.

б) Ночью когда нагрузка не велика, iperfом генерил нагрузку

60К pps 40Мб/с прокачивается без ошибок.

в) на свитчах flow control выключен

5. Пробовали менять свитчи/патчкорды - улучшений нет.

 

sysctl -a | grep em

dev.em.0.%desc: Intel(R) PRO/1000 Network Connection 6.9.21
dev.em.0.%driver: em
dev.em.0.%location: slot=0 function=0
dev.em.0.%pnpinfo: vendor=0x8086 device=0x1096 subvendor=0x8086 subdevice=0x3484 class=0x020000
dev.em.0.%parent: pci5
dev.em.0.debug: -1
dev.em.0.stats: -1
dev.em.0.rx_int_delay: 0
dev.em.0.tx_int_delay: 66
dev.em.0.rx_abs_int_delay: 66
dev.em.0.tx_abs_int_delay: 66
dev.em.0.rx_processing_limit: 100
dev.em.1.%desc: Intel(R) PRO/1000 Network Connection 6.9.21
dev.em.1.%driver: em
dev.em.1.%location: slot=0 function=1
dev.em.1.%pnpinfo: vendor=0x8086 device=0x1096 subvendor=0x8086 subdevice=0x3484 class=0x020000
dev.em.1.%parent: pci5
dev.em.1.debug: -1
dev.em.1.stats: -1
dev.em.1.rx_int_delay: 0
dev.em.1.tx_int_delay: 66
dev.em.1.rx_abs_int_delay: 66
dev.em.1.tx_abs_int_delay: 66
dev.em.1.rx_processing_limit: 100

 

sysctl -a | grep forw

kern.smp.forward_roundrobin_enabled: 1
kern.smp.forward_signal_enabled: 1
net.inet.ip.forwarding: 1
net.inet.ip.fastforwarding: 1
net.inet6.ip6.forwarding: 0

 

sysctl -a | grep isr

net.isr.swi_count: 11055948
net.isr.drop: 0
net.isr.queued: 2976347
net.isr.deferred: 117785462
net.isr.directed: 1664621091
net.isr.count: 1781606424
net.isr.direct: 1
net.route.netisr_maxqlen: 256

 

Feb 19 20:28:45 accounter2 em0: Sequence errors = 0
Feb 19 20:28:45 accounter2 em0: Defer count = 0
Feb 19 20:28:45 accounter2 em0: Missed Packets = 3106231
Feb 19 20:28:45 accounter2 em0: Receive No Buffers = 8068013
Feb 19 20:28:45 accounter2 em0: Receive Length Errors = 0
Feb 19 20:28:45 accounter2 em0: Receive errors = 0
Feb 19 20:28:45 accounter2 em0: Crc errors = 0
Feb 19 20:28:45 accounter2 em0: Alignment errors = 0
Feb 19 20:28:45 accounter2 em0: Collision/Carrier extension errors = 0
Feb 19 20:28:45 accounter2 em0: RX overruns = 116026
Feb 19 20:28:45 accounter2 em0: watchdog timeouts = 0
Feb 19 20:28:45 accounter2 em0: RX MSIX IRQ = 0 TX MSIX IRQ = 0 LINK MSIX IRQ = 0
Feb 19 20:28:45 accounter2 em0: XON Rcvd = 0
Feb 19 20:28:45 accounter2 em0: XON Xmtd = 0
Feb 19 20:28:45 accounter2 em0: XOFF Rcvd = 0
Feb 19 20:28:45 accounter2 em0: XOFF Xmtd = 0
Feb 19 20:28:45 accounter2 em0: Good Packets Rcvd = 689415590
Feb 19 20:28:45 accounter2 em0: Good Packets Xmtd = 599617766
Feb 19 20:28:45 accounter2 em0: TSO Contexts Xmtd = 31
Feb 19 20:28:45 accounter2 em0: TSO Contexts Failed = 0

 

В последствии отключил TSO и RXCSUM

ifconfig em0 -rxcsum -tso

ifconfig em1 -rxcsum -tso

что также не дало результатов.

 

Сейчас уже пересобрал ядро с патчем:

ставлю http://alter.org.ua/en/soft/fbsd/netisr/

и ставлю драйвера от яндекса.....больше мыслей нет...подскажиет что делать?

 

P.S.

Кол-во одновременных pptp сессий ~600

В логах ничего подозрительного нет.

Edited by kirush

Share this post


Link to post
Share on other sites

sysctl dev.em.0.rx_int_delay=250
sysctl dev.em.1.rx_int_delay=250
sysctl dev.em.0.tx_int_delay=250
sysctl dev.em.1.tx_int_delay=250
sysctl dev.em.0.rx_abs_int_delay=250
sysctl dev.em.1.rx_abs_int_delay=250
sysctl dev.em.0.tx_abs_int_delay=250
sysctl dev.em.1.tx_abs_int_delay=250
sysctl dev.em.0.rx_processing_limit=400
sysctl dev.em.1.rx_processing_limit=400

 

loader.conf
hw.em.rxd=1024
hw.em.txd=1024

 

начните с этого.

 

Share this post


Link to post
Share on other sites
sysctl dev.em.0.rx_int_delay=250
sysctl dev.em.1.rx_int_delay=250
sysctl dev.em.0.tx_int_delay=250
sysctl dev.em.1.tx_int_delay=250
sysctl dev.em.0.rx_abs_int_delay=250
sysctl dev.em.1.rx_abs_int_delay=250
sysctl dev.em.0.tx_abs_int_delay=250
sysctl dev.em.1.tx_abs_int_delay=250
sysctl dev.em.0.rx_processing_limit=400
sysctl dev.em.1.rx_processing_limit=400

 

loader.conf
hw.em.rxd=1024
hw.em.txd=1024

 

начните с этого.

с этими параметрами уже игрался, не заметно разницы.

А вот в loader.conf ща запихну:

только формат там кажется такой:

hw.em.rxd="1024"

hw.em.txd="1024"

 

После наложения патча: http://alter.org.ua/en/soft/fbsd/netisr/

Выставления net.isr.direct=0

и выставления net.isr.maxthreads=5...8 (ставил 8, по кол-ву ядер).

Потери уменьшились, но не исчезли:

  packets  errs      bytes    packets  errs      bytes colls
       12K    12       9.9M       9.6K     0       3.0M     0
       12K     0        10M       9.8K     0       2.7M     0
       13K     0        10M        10K     0       2.9M     0
       12K     0       9.7M        10K     0       3.1M     0
       12K    37       9.8M        11K     0       3.2M     0
       11K     0        10M       9.7K     0       3.0M     0
       11K     0       9.3M       9.8K     0       3.0M     0
       11K     0       9.3M       8.9K     0       2.7M     0
       12K     0       9.4M       9.4K     0       3.0M     0
       11K    23       8.8M       8.3K     0       2.8M     0
       12K     0       9.3M       8.7K     0       2.8M     0

как только включаю fastforwarding начинаются потери.

 

Edited by kirush

Share this post


Link to post
Share on other sites

Попробуйте передавать правила с УТМ с помощью радиус атрибутов, а не заворачивать ng_car через ipfw, тогда процесс nq-queue должен уйти в нули. Хотя при трафике в 100 Мб должно и так работать, если не сильно накручено с правилами.

Share this post


Link to post
Share on other sites

Попробуйте передавать правила с УТМ с помощью радиус атрибутов, а не заворачивать ng_car через ipfw, тогда процесс nq-queue должен уйти в нули. Хотя при трафике в 100 Мб должно и так работать, если не сильно накручено с правилами.

Отключение резалки не приводит к результатам.

Share this post


Link to post
Share on other sites

Пробовали менять местами em0 и em1 - исключили аппаратную ошибку сетевой карты/слота?

Share this post


Link to post
Share on other sites

em0 и em1 встроенные сетевые карты в 2U сервер ;(.

Share this post


Link to post
Share on other sites

Ну просто провода перетыкните, настройки перекиньте с одного на другой и посмотрите - останется ли эффект на конкретном сетевом выходе. Хотя более советовать ничего не буду - удачи:)

Share this post


Link to post
Share on other sites

Нашел в сервере слот, воткнул туда без рамки (с креплением) Intel Pro 1000Mbit/s, подцепил к ней кабель. Потери исчезли, но пинг вырос вместо стандартных 2-3мс до 50-60мс.

 

Feb 20 20:33:24 accounter2 em2: Excessive collisions = 0

Feb 20 20:33:24 accounter2 em2: Sequence errors = 0

Feb 20 20:33:24 accounter2 em2: Defer count = 0

Feb 20 20:33:24 accounter2 em2: Missed Packets = 172362

Feb 20 20:33:24 accounter2 em2: Receive No Buffers = 403352

Feb 20 20:33:24 accounter2 em2: Receive Length Errors = 0

Feb 20 20:33:24 accounter2 em2: Receive errors = 0

Feb 20 20:33:24 accounter2 em2: Crc errors = 0

Feb 20 20:33:24 accounter2 em2: Alignment errors = 0

Feb 20 20:33:24 accounter2 em2: Collision/Carrier extension errors = 0

Feb 20 20:33:24 accounter2 em2: RX overruns = 4807

Feb 20 20:33:24 accounter2 em2: watchdog timeouts = 0

Feb 20 20:33:24 accounter2 em2: RX MSIX IRQ = 0 TX MSIX IRQ = 0 LINK MSIX IRQ = 0

Feb 20 20:33:24 accounter2 em2: XON Rcvd = 0

Feb 20 20:33:24 accounter2 em2: XON Xmtd = 0

Feb 20 20:33:24 accounter2 em2: XOFF Rcvd = 0

Feb 20 20:33:24 accounter2 em2: XOFF Xmtd = 0

Feb 20 20:33:24 accounter2 em2: Good Packets Rcvd = 35824657

Feb 20 20:33:24 accounter2 em2: Good Packets Xmtd = 29948788

Feb 20 20:33:24 accounter2 em2: TSO Contexts Xmtd = 0

Feb 20 20:33:24 accounter2 em2: TSO Contexts Failed = 0

 

почему то пакеты попадают:

в Missed Packets = 172362

в Receive No Buffers = 403352

Может заменить на какую либо сетевку 2х головую? помощней...?

Edited by kirush

Share this post


Link to post
Share on other sites

Если есть желающие помочь в разрешении проблемы за плату, просьба написать в личку.

Share this post


Link to post
Share on other sites
яндекс-драйвера попробуйте.
драйвера от яндекса нафик, они оптимизированы для веб серверов

надо начать с обновления до стабл, мин тюниг и посм как минимизировать правила файрволла

 

Share this post


Link to post
Share on other sites

Драйвера от яндекса пробовали не помогло.

Проблему подтвердили несколько знакомых в 7.2 с драйверами em, происходит переполнение буфера сетевой карты.

Поможет только обновление ОС.

Share this post


Link to post
Share on other sites
как только включаю fastforwarding начинаются потери.

Цитата со странички наложеного ранее патча http://alter.org.ua/ru/soft/fbsd/netisr/:

Фактически, на время обработки входящего пакета сетевая карта будет заблокирована. Это неплохо смотрится при преобладающем входящем трафике и на однопроцессорных машинах.
Аналогично, у меня при включении фастфорвардинга трафик/ппс падает раз в пять + зашкаливающие пинги итд.

 

п.с. Выключите фастфорвардинг.

 

Share this post


Link to post
Share on other sites
Драйвера от яндекса пробовали не помогло.

Проблему подтвердили несколько знакомых в 7.2 с драйверами em, происходит переполнение буфера сетевой карты.

Поможет только обновление ОС.

Я бы попробовал не обновление системы, а самые свежие драйверы с сайта Интела.

 

Что говорит "sysctl net.inet.ip | grep intr_queue" ?

Share this post


Link to post
Share on other sites

получается дрова от интела лучше работают чем родные во фре ?

 

пробовал дрова для igb- родные 1.4.1 - система еле едет. кол-во перевариваемых пакетов внесколько раз меньше, дрова от интела 1.8.4 работают лучше, но есть проблема со стабильностью

Share this post


Link to post
Share on other sites

Какого рода проблемы со стабильностью? Вот какраз сегодня ночью воткнул ЕТ-шку двухголовую в один из бордеров на 7.2, драйвера 1.8.4

            input         (igb0)           output
   packets  errs      bytes    packets  errs      bytes colls
       31K     0        21M        21K     0       9.7M     0
       32K     0        22M        22K     0        11M     0
       30K     0        21M        21K     0        10M     0
       31K     0        21M        21K     0        11M     0
       30K     0        21M        22K     0        11M     0
       30K     0        21M        22K     0        10M     0
       31K     0        22M        22K     0        10M     0
       31K     0        22M        24K     0        12M     0
       30K     0        21M        21K     0        10M     0
       31K     0        22M        24K     0        11M     0
       30K     0        21M        22K     0        11M     0
       29K     0        21M        22K     0        11M     0
       30K     0        22M        21K     0        10M     0
       31K     0        21M        23K     0        12M     0
       30K     0        22M        22K     0        10M     0
       29K     0        21M        22K     0        10M     0
       28K     0        20M        23K     0        12M     0
       29K     0        21M        22K     0        11M     0
       29K     0        22M        23K     0        12M     0
       30K     0        21M        22K     0        11M     0
       28K     0        21M        20K     0       9.5M     0

sysctl.conf пустой

# cat /boot/loader.conf 
if_igb_load="YES" 
hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.enable_aim=1
hw.igb.low_latency=1000
hw.igb.ave_latency=2000
hw.igb.bulk_latency=4000

hw.igb.rx_process_limit=400
hw.igb.fc_setting=0
hw.igb.lro=0

Share this post


Link to post
Share on other sites

машина ребутилась временами, даже сейчас вылетает в panic

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x6bee2000
fault code              = supervisor read, page not present
instruction pointer     = 0x20:0x806fbef1
stack pointer           = 0x28:0xd2231bc4
frame pointer           = 0x28:0xd2231bd8
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 26 (irq257: igb0)
trap number             = 12
panic: page fault
cpuid = 0
Uptime: 15m24s

 

 

что это за параметр ?

hw.igb.fc_setting=0

 

кстати в текущий момент трафика через сетевушку бежит также порядка 30кппс, но посм что будет вечером, сейчас проц загружен проц на 70.

стоит core2duo 3Ghz

Edited by Mechanic

Share this post


Link to post
Share on other sites
получается дрова от интела лучше работают чем родные во фре ?
дрова от интела - это и есть родные :)

просто на сайте интела они более свежие, чем в релизе freebsd.

Share this post


Link to post
Share on other sites

core2 quad Q6600, 7.0-RELEASE, em 6.7.3-yandex, intel PRO 1000PT Dual:

 

            input          (em0)           output
   packets  errs      bytes    packets  errs      bytes colls
       51K     0        32M        59K     0        38M     0
       49K     0        30M        58K     0        37M     0
       49K     0        30M        58K     0        37M     0
       49K     0        31M        57K     0        37M     0
       49K     0        30M        57K     0        37M     0
       50K     0        31M        57K     0        37M     0
       49K     0        31M        57K     0        36M     0

 

И это далеко не предел возможностей.

Топикстартеру - купить нормальную сетевуху. Да, и вынести всякие UTM, mysql и иже с ними на отдельный сервер, этому на роутере не место.

Edited by dsk

Share this post


Link to post
Share on other sites
что это за параметр ?

hw.igb.fc_setting=0

flow control отключается, если я правильно понял.

Share this post


Link to post
Share on other sites

Решил проблему установкой FreeBSD 8.0

Проблема можно сказать исчезла:

[root@accounter /usr/src]# netstat -w1 -h

input (Total) output

packets errs bytes packets errs bytes colls

53K 0 27M 52K 0 30M 0

51K 0 26M 51K 0 29M 0

56K 0 28M 54K 0 31M 0

51K 0 26M 53K 0 31M 0

53K 0 28M 53K 0 32M 0

в часы пик до 60М

Загрузка системы около 10-15%, interrupt не более 7-10%.

UTM/mysql уносить - жирно ему будет. Достаточно мощный сервер,

2xXeon3.0 53я серия.

На фряхе 8 всплыли другие проблемы:

1. kernel: ifa_del_loopback_route: deletion failed в логах, но это вроде решено в STABLE

2. Дурацкая проблема:

date

Wed Feb 24 19:26:18 MSK 2010

 

в логах, dhcpd пишет правильное время

kernel пишет UTCшное

netup-debug правильное

netup-radius UTCшное

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

timezone заменено на +3

Edited by kirush

Share this post


Link to post
Share on other sites
2. Дурацкая проблема:

date

Wed Feb 24 19:26:18 MSK 2010

 

в логах, dhcpd пишет правильное время

kernel пишет UTCшное

netup-debug правильное

netup-radius UTCшное

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

timezone заменено на +3

Это скорее всего не проблема, а фича.

Про dhcpd можно прочитать на официальном сайте, там было рассказано почему так и почему менять не будут.

Share this post


Link to post
Share on other sites

а сколько трафика может пропустить сетевушка сидящая на pci шине ?

текущая Intel на материнке пропускает порядка 300мбит суммарного трафика и порядка 80кппс( в обе стороны), может быть это ее предел ?

Edited by Mechanic

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