Wireshark 패킷 캡처 지점 [닫기]

Wireshark 패킷 캡처 지점 [닫기]

tc qdisc아래와 같이 eth2 인터페이스의 패킷을 사용하여 지연을 추가하고 있습니다.

sudo tc qdisc add dev eth2 root netem delay 100ms 10ms 25%

그런 다음 호스트에 ping을 실행하여 몇 가지 결과를 얻었습니다. 터미널 결과에는 74밀리초의 RTT가 표시되는 반면, Wireshark 타임스탬프를 기반으로 RTT를 계산한 결과 약 64밀리초였습니다.

이는 Wireshark가 libpcap에서 오는 패킷을 즉시 표시한다는 것을 의미합니다. libpcap은 NIC 뒤에 위치하며 모든 netem 대기 시간은 libpcap이 패킷을 확인한 후에만 추가됩니다. 최종 결과에 대해 ping 프로그램은 netem 지연(예: 100+밀리초) 이후에 패킷을 확인합니다.

Wireshark를 사용하여 애플리케이션 계층이나 netem에서 지연된 패킷을 볼 수 있는 방법이 있습니까?

Wireshark가 이 작업을 수행할 수 없는 경우 누군가 나에게 대안을 제안할 수 있습니까? 나는 테스트 중인 상자 외부의 다른 Linux 상자를 사용할 수 있고 외부 상자에서 연기할 수 있다는 것을 알고 있습니다. 그러나 나는 추가적인 리눅스 박스를 사용하는 것을 피하고 싶습니다.

답변1

Wireshark는 인터페이스를 수신해야 하며 애플리케이션 계층 패킷을 볼 수 없습니다.

Wireshark와 같은 도구가 정말로 필요한 경우 VM 또는 컨테이너에서 ping을 수행하고 Wireshark가 가상 인터페이스 또는 VM을 물리적 인터페이스에 연결하는 브리지에서 (호스트에서) 수신하도록 할 수 있습니다. 가상 머신을 생성하는 부담을 피하고 싶다면 veth 쌍을 설정할 수도 있습니다.

그러나 관심 있는 것이 타이밍이라면 strace현재 구성이면 충분할 수 있습니다.

# strace -r -T -e network ping 1.2.3.4
...
0.000113 sendmsg(...) = 64 <0.000032>
0.000055 recvmsg(...) = 84 <0.101680>
64 bytes from 1.2.3.4: icmp_seq=1 ttl=64 time=101 ms
...

꺾쇠 괄호 사이에는 시스템 호출 중에 소요된 시간이 있습니다. 순간적이기 때문에 sendmsg(바이트가 하위 네트워크 계층으로 직접 이동) 다음 시간은 recvmsg실제로 ping 메시지(즉, RTT)를 보내고 받는 데 걸리는 시간을 (대략적으로) 보여줍니다.

관련 정보