Отбрасывание пакетов передачи VPN

Я установил VPN с защитой проводов между двумя узлами. При высокой нагрузке у меня возникают пики отбрасывания отдельных пакетов по 50-1500 пакетов каждый (см. Outbound drops wg0 ). Это происходит только на одном сервере.

# netstat -i
Kernel Interface table
Iface      MTU      RX-OK RX-ERR RX-DRP RX-OVR      TX-OK TX-ERR TX-DRP TX-OVR Flg
eno1      1500 2079788141      0      0   1572 3128566305      0      0      0 BMRU
wg0       1420  538066564     46      0      0  810751810      0  26374      0 OPRU
...
# ip a s eno1 
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ab:cd:ef:fe:dc:ba brd ff:ff:ff:ff:ff:ff
    ...
# ip a s wg0
83: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    ...
...

Я использовал dropwatch и perf record , чтобы выяснить, почему ядро ​​отбрасывает эти пакеты.

perf:
kworker/2:2-wg- 32301 [002] 541917.031566: skb:kfree_skb: skbaddr=0xffff9f378059d000 protocol=2048 location=0xffffffffaf
        ffffffffaf3fb324 kfree_skb+0x74 ([kernel.kallsyms])
        ffffffffaf3fb324 kfree_skb+0x74 ([kernel.kallsyms])
        ffffffffaf3fb363 kfree_skb_list+0x13 ([kernel.kallsyms])
        ffffffffaf412778 __dev_queue_xmit+0x888 ([kernel.kallsyms])
        ffffffffaf489c6f ip_finish_output2+0x2cf ([kernel.kallsyms])
        ffffffffaf48b8d9 ip_output+0x69 ([kernel.kallsyms])
        ffffffffaf4dcb7d iptunnel_xmit+0x15d ([kernel.kallsyms])
        ffffffffc10a3777 send4+0x127 ([kernel.kallsyms])
        ffffffffc10a3e15 wg_socket_send_skb_to_peer+0x95 ([kernel.kallsyms])
        ffffffffc10a110f wg_packet_tx_worker+0xaf ([kernel.kallsyms])
        ffffffffaeea15b7 process_one_work+0x1a7 ([kernel.kallsyms])
        ffffffffaeea1c80 worker_thread+0x30 ([kernel.kallsyms])
        ffffffffaeea6f02 kthread+0x112 ([kernel.kallsyms])
        ffffffffaf600215 ret_from_fork+0x35 ([kernel.kallsyms])

dropwatch:
[2019-12-08 16:29:36.293087] 82 drops at kfree_skb_list+13 (0xffffffffaf3fb363)

Я посмотрел исходный код ядра и у меня есть несколько вопросов

  • Какова цель kfree_skb_list в этом контексте ?
  • Пакеты отбрасываются при вставке в txqueue eno1 или где-то еще?
  • Какие настройки можно настроить для решения этой проблемы?
1
задан 10 December 2019 в 22:47
1 ответ

Увеличение txqueuelen интерфейса eno1 решило мою проблему.

0
ответ дан 29 December 2019 в 22:49

Теги

Похожие вопросы