3.10.104에서 커널 4.14로 업그레이드한 후 활성 백업 모드의 팀 인터페이스(TX)에서 지속적인 삭제(약 10패킷/초)가 표시됩니다. 물리적 포트에서 txqueuelen을 늘리면 도움이 되지만 여전히 가끔 삭제가 발생합니다.
다음은 eth6에서 txqueuelen 0을 사용한 ifconfig 출력입니다.
team0 Link encap:Ethernet HWaddr 00:1E:67:B5:7F:76
inet addr:192.168.221.203 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::21e:67ff:feb5:7f76/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:837 errors:0 dropped:671 overruns:0 frame:0
TX packets:282219490 errors:0 dropped:169438 overruns:0 carrier:0
collisions:0 txqueuelen:10000
RX bytes:27531 (26.8 KiB) TX bytes:113995992408 (106.1 GiB)
물리적 인터페이스:
eth6 Link encap:Ethernet HWaddr 00:1E:67:B5:7F:76
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:837 errors:0 dropped:0 overruns:0 frame:0
TX packets:282218759 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:74718 (72.9 KiB) TX bytes:383252978322 (356.9 GiB)
이를 디버깅하기 위해 dev_kfree_skb_any가 호출되는 팀 드라이버에 printk를 추가했습니다. 그러나 삭제된 카운터가 증가하는 동안 ethtool로 물리적 인터페이스를 재설정할 때까지 dmesg에 메시지가 표시되지 않으므로 패킷이 다른 곳에서 삭제되고 있습니다. 그러나 현재로서는 정확한 원인을 찾는 방법에 대한 단서가 없습니다.
또한 dropwatch 유틸리티를 사용했는데 수많은 드롭을 보여주는 많은 출력이 생성되지만 커널 3.10에서도 유사한 출력이 생성되는데 ifconfig에서는 드롭이 표시되지 않습니다. 나는 그것이 다른 것, 아마도 커널에 의해 삭제된 입력 패킷 등을 기록한다고 가정하므로 이들 사이에서 유용한 정보가 손실됩니다. 다음은 고유 기호로 정렬된 4.14의 드롭워치 출력입니다.
__udp4_lib_rcv+6b0 (0xffffffff8155ce77)
ip_forward+98 (0xffffffff81534f88)
kfree_skb_list+13 (0xffffffff814f0d22)
sk_stream_kill_queues+4a (0xffffffff814f68a9)
tcp_v4_do_rcv+154 (0xffffffff815508e9)
tcp_v4_rcv+1de (0xffffffff81552490)
unix_stream_connect+3b4 (0xffffffff81586890)
이를 디버깅하는 방법에 대한 아이디어/제안이 있습니까? 감사해요!