ethtool, tcpdump 및 ifconfig로 측정 한 패킷 드롭


1

패킷 방울에 관한 질문이 있습니다.

패킷 손실이 언제 발생하는지 확인하기 위해 테스트를 실행 중입니다. Myricom 카드를 사용하는 서버로 스위치를 통해 Spirent TestCenter를 사용하고 있습니다 (5 포트에서 하나의 광 링크로 이더넷 트래픽을 집계하는 데 필요함).

내 테스트를 실행하는 동안 입력 속도가 특정 값보다 낮 으면 ethtool에서 드롭을보고하지 않습니다 (매우 느린 속도로 증가하는 dropped_multicast_filtered 제외). 그러나 tcpdump는 "커널에 의해 삭제 된"패킷의 X 수를보고합니다. 그런 다음 입력 속도를 높이면 ethtool에서 드랍되지만 "ifconfig eth2"는 표시되지 않습니다. 사실, ifconfig는 전혀 패킷 손실을보고하지 않는 것 같습니다. 그들은 모두 패킷 레벨을 다른 "레벨", 즉 NIC 레벨의 ethtool, 커널 레벨의 tcpdump 등에서 측정합니까?

그리고 들어오는 패킷의 여정에서 NIC 레벨은 "소위"첫 번째 레벨이고, 그 다음 커널이고, 그 다음 사용자 어플리케이션입니다. 그래서 어떤 패킷 드롭은 NIC, 커널 그리고 사용자 어플리케이션에서 먼저 일어날 것입니까? 따라서 NIC에 패킷 손실이 없지만 커널에서 패킷이 끊어지면 병목 현상이 NIC에 있지 않은 것입니까?

고맙습니다.

문안 인사, 레이네


2
실제 사용에서 tcpdump가 "커널에 의해 드롭 된"패킷을보고하는 가장 일반적인 이유는 -n 옵션을 지정하는 것을 잊었고 tcpdump가 이름 조회를 시도하면서 백 로그되고 있기 때문입니다. 그것이 Spirent 테스트와 다른 점을 확인하는 것은 흥미로울 것입니다.
Spiff

감사! -n 옵션을 추가하면 속도가 100Mbps 증가합니다. 또한 net.core.netdev_max_backlog 값을 늘리면 tcpdump가 패킷을 삭제하지 않고 캡처 할 수있는 속도를 상당히 높일 수 있음을 알게되었습니다.
Rayne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.