Коллеги прошу помощи в советах. Не могу понять кто валит наш шлюз, либо физик какой-то, либо странность в сети.
Имеются два шлюза IBM для ната, перед ними есть bras в роли циски ASR1002.
Оба шлюза под управлением FreeBSD 7.3 с yandex драйверами 1.36.2.17 (сетевые Intel® PRO/1000, хорошие сетевые, с трафиком не подводили). Работают они отлично и уже очень длительное время.
После bras default-маршрут идет на первый шлюз, а на второй мы скинули 16 сетей (Для балансировки входящего в нашу сеть трафика, знаю что криво, но работает). Оба шлюза физически подключены в разные места (в разные коммутаторы), поэтому проблема точно не в физике (т.к. при переносе всего трафика на один из шлюзов, проблема повторяется).
Теперь о самой проблеме.
Вчера первый шлюз стал загибаться, процессы rx_kthread стали взлетать до 100%, тем самым съедать весь процессор.
При выводе команды netstat -hw 1 (данные пока не сохранил) увидел, что копятся errs на input, при этом количество пакетов начинает падать (например с 60K до 3-4K, а ошибки возрастают до 6-7K). Суть в том, что длится это не долго, было вчера 3 раза и каждый такой сбой был от 3 до 10 минут.
Bras (ASR1002) не загибается. Колбасит при этом первый шлюз очень даже не дурно. А вот со вторым шлюзом все нормально. Я думал, что это сам шлюз глючит, но когда я весь трафик перекинул на второй, второй стал тоже загибаться с такими же симптомами.
tcpdump не выявил ничего плохого.
Посмотрел дебаг сетевух:
Код: Выделить всё
sysctl dev.em.2.stats=1
Dec 10 08:48:41 gwibm kernel: em2: Excessive collisions = 0
Dec 10 08:48:41 gwibm kernel: em2: Sequence errors = 0
Dec 10 08:48:41 gwibm kernel: em2: Defer count = 0
Dec 10 08:48:41 gwibm kernel: em2: Missed Packets = 7216624
Dec 10 08:48:41 gwibm kernel: em2: Receive No Buffers = 1084060
Dec 10 08:48:41 gwibm kernel: em2: Receive Length Errors = 0
Dec 10 08:48:41 gwibm kernel: em2: Receive errors = 0
Dec 10 08:48:41 gwibm kernel: em2: Crc errors = 0
Dec 10 08:48:41 gwibm kernel: em2: Alignment errors = 0
Dec 10 08:48:41 gwibm kernel: em2: Collision/Carrier extension errors = 0
Dec 10 08:48:41 gwibm kernel: em2: RX overruns = 101
Dec 10 08:48:41 gwibm kernel: em2: watchdog timeouts = 0
Dec 10 08:48:41 gwibm kernel: em2: RX MSIX IRQ = 0 TX MSIX IRQ = 0 LINK MSIX IRQ = 0
Dec 10 08:48:41 gwibm kernel: em2: XON Rcvd = 0
Dec 10 08:48:41 gwibm kernel: em2: XON Xmtd = 61562
Dec 10 08:48:41 gwibm kernel: em2: XOFF Rcvd = 0
Dec 10 08:48:41 gwibm kernel: em2: XOFF Xmtd = 7275240
Dec 10 08:48:41 gwibm kernel: em2: Good Packets Rcvd = 1779196668
Dec 10 08:48:41 gwibm kernel: em2: Good Packets Xmtd = 1735225671
Dec 10 08:48:41 gwibm kernel: em2: TSO Contexts Xmtd = 0
Dec 10 08:48:41 gwibm kernel: em2: TSO Contexts Failed = 0
sysctl dev.em.2.debug=1
Dec 10 08:49:21 gwibm kernel: em2: Adapter hardware address = 0xc566a218
Dec 10 08:49:21 gwibm kernel: em2: CTRL = 0x581c0241 RCTL = 0x8002
Dec 10 08:49:21 gwibm kernel: em2: Packet buffer = Tx=16k Rx=32k
Dec 10 08:49:21 gwibm kernel: em2: Flow control watermarks high = 30720 low = 29220
Dec 10 08:49:21 gwibm kernel: em2: tx_int_delay = 100, tx_abs_int_delay = 195
Dec 10 08:49:21 gwibm kernel: em2: rx_int_delay = 0, rx_abs_int_delay = 200
Dec 10 08:49:21 gwibm kernel: em2: fifo workaround = 0, fifo_reset_count = 0
Dec 10 08:49:21 gwibm kernel: em2: hw tdh = 1090, hw tdt = 1090
Dec 10 08:49:21 gwibm kernel: em2: hw rdh = 3104, hw rdt = 3103, next_rx_desc_to_check = 3104
Dec 10 08:49:21 gwibm kernel: em2: Num Tx descriptors avail = 4068
Dec 10 08:49:21 gwibm kernel: em2: Tx Descriptors not avail1 = 0
Dec 10 08:49:21 gwibm kernel: em2: Tx Descriptors not avail2 = 0
Dec 10 08:49:21 gwibm kernel: em2: Std mbuf failed = 0
Dec 10 08:49:21 gwibm kernel: em2: Std mbuf cluster failed = 0
Dec 10 08:49:21 gwibm kernel: em2: Driver dropped packets = 0
Dec 10 08:49:21 gwibm kernel: em2: Driver tx dma failure in encap = 0
Dec 10 08:49:21 gwibm kernel: em2: Packets pended due to reorder = 0
Dec 10 08:49:21 gwibm kernel: em2: RX interrupts has been masked = 99250334
Dec 10 08:49:21 gwibm kernel: em2: TX interrupts has been generated = 0
Код: Выделить всё
dev.em.2.rx_int_delay=100
dev.em.2.tx_int_delay=100
dev.em.2.rx_abs_int_delay=200
dev.em.2.tx_abs_int_delay=200
dev.em.2.rx_kthreads=4
P.S. Раньше когда трафика было много и шлюз был один, то при перегрузке ошибки появлялись на интерфейсе, но количество пакетов так сильно не падало (ну может на 2-3K, но не на 40K же). Когда появляется вышеописанная проблема, взлет трафика нет, по количеству пакетов сказать пока сложно, но вроде тоже не возрастает.