3 개의 QEMU-KVM VM이 Ubuntu 호스트에서 실행 중입니다. 각 VM은 하나의 virt-io NIC을 가지고 호스트 OS의 br0 브리지로 연결됩니다. 모든 NIC의 MTU는 1500으로 구성됩니다.이 플랫폼은 메시지 큐 기반 응용 프로그램을 실행합니다. 하나의 VM은 생성자이고 하나의 VM은 메시지 대기열 서버이고 마지막 VM은 소비자입니다.QEMU-KVM 게스트 OS가 MTU 설정을 고려하지 않습니다.
문제점 : 게스트 VM이 사용 중일 때 메시지 큐 서버 VM은 실제로 2k, 4k 또는 5k 크기의 패킷을 보낼 수 있습니다. NIC의 MTU 값인 1500을 초과합니다! 리눅스 IP 스택이 전송하기 전에 IP 프레임을 MTU 크기보다 작게 잘라야한다는 것을 알고 있습니다. 바쁜 때이 VM이 큰 패킷을 보내는 이유는 무엇입니까? 다음은
플랫폼의 아키텍처 : MTU는 1500 크기로 패킷을 전송, 다음[w2: celery caller (message queue producer) ]
| (messages in TCP)
V
[w3: rabbitmq server]
| (messages in TCP)
V
[w4: celeryd (message queue consumer)]
화면이 W3에서 캡처> 2000
화면이 W4에서 캡처는 MTU는 1500입니다 크기가 2000보다 큰 패킷을 수신함
TSO = TCP 분할 오프로드가 아닌 오프라인 여기에 명령입니다. – osgx
언젠가 같은 문제에 직면했습니다. http://stackoverflow.com/questions/2350985/length-of-captured-packets-more-than-mtu – kumar