내가 관찰한 가장 이상한 점은 동일한 인터페이스를 통해 전송된 동일한 패킷, 동일한 크기가 때로는 전체가 전송되고 때로는 인터페이스 MTU를 초과하는 것처럼 조각화된다는 것입니다.
1472 패킷 조각화:
10:10:24.537385 IP 192.168.56.1.35749 > 192.168.56.101.4444: UDP, length 1008
10:10:24.537589 IP 192.168.56.1.35749 > 192.168.56.101.4444: UDP, length 464
1472 패킷이 조각화되지 않았습니다.
10:10:34.168099 IP 192.168.56.1.41252 > 192.168.56.101.44444: UDP, length 1472
이것은 무작위로 발생하는 것 같습니다. 왜 이런 일이 발생합니까?
MTU 1500
1472 udp에 충분한 데이터 패킷을 전송하기 위한 인터페이스가 있습니다 . 그러나 더 작은 패킷에서도 같은 일이 발생합니다. tracepath
또한 경로의 MTU 1500을 표시합니다.
Ubuntu 14.04, 3.13.0-46-generic을 사용하고 있습니다.
답변1
나도 같은 문제가 있었고 내 경우에는 이 동작이 GSO로 인해 발생했습니다.
skb_is_gso(skb)
GSO 상태를 확인 하려면 를 사용하여 GSO를 비활성화할 수 있습니다 skb_gso_reset(skb)
.
답변2
내 질문에 대한 정답은 @Barmar의 의견에 있으며 그는 찬성해야 합니다.
출력을 세그먼트로 플러시하는 명령을 사용하여 패킷을 보냈는데 cli
, 이것이 이상한 결과의 이유입니다.