Bug 999869

Summary: windows guest can not ping ext host using packet size 65500 when using rtl8139 and vhost is on
Product: Red Hat Enterprise Linux 7 Reporter: yunpingzheng <yunzheng>
Component: qemu-kvmAssignee: Yvugenfi <yvugenfi>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.0CC: acathrow, dfleytma, hhuang, juzhang, michen, rhod, shuang, sluo, virt-maint, yunzheng
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-08-19 07:54:12 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description yunpingzheng 2013-08-22 09:44:50 UTC
Description of problem:
when boot a windows guest with rtl8139 and vhost=on. 
can not ping ext host with packet size 65500(the max packet size support is 63632)
when ping host that vm is runing can ping with packet size 65500.

when using e1000 and virtio_net it works ok

test on rhel6.4 host it works ok.

Version-Release number of selected component (if applicable):
host: RHEL.7
kernel-3.10.0-2.el7.x86_64
qemu-kvm-1.5.2-3.el7.x86_64

guest: any windows guest.

How reproducible:
100%

Steps to Reproduce:
1. boot guest wit rtl8139 nic, and vhost=on
2. from an ext host ping the guest 
  #ping -s 65507 $ip_win_guest
3. in guest ping the ext host
  # ping -l 65500 $ext_host_ip
4. in guest ping the host
  #ping -l 65500 $host_ip.

Actual results:
in step 3 and step 4, ping timeout. when using -l 63632 it works, 63233 it can not works.

Expected results:

all ping should works

Additional info:
qemu_cmd:
/usr/libexec/qemu-kvm -M pc -name vm0 \
-chardev socket,id=qmp_monitor1,path=/tmp/qmp_monitor1,server,nowait \
-mon chardev=qmp_monitor1,mode=control \
-drive file=/mnt/windows/win8-64.qcow2,index=0,if=none,id=drive-virtio-disk1,media=disk,cache=none,snapshot=on,format=qcow2,aio=native \
-device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,id=virtio-disk1 \
-drive file=/home/kvm_autotest_root/iso/windows/winutils.iso,if=none,id=iso1,media=cdrom,format=raw \
-device ide-drive,bus=ide.1,unit=0,drive=iso1,id=cdrom1 \
-device e1000,netdev=idKF4XM9,mac=9a:9b:68:24:99:73,id=ndev00idKF4XM9 \
-netdev tap,id=idKF4XM9,vhost=on,script=qemu-ifup-switch \
-smp 4,cores=2,threads=1,sockets=4,maxcpus=255 \
-m 4096 -vnc :0 -monitor stdio -boot order=cdn,once=c,menu=on

host nic:
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 04)

Comment 4 Yvugenfi@redhat.com 2014-08-13 12:54:31 UTC
Please retest with latest RHEL7.0 kernel.

Comment 5 juzhang 2014-08-14 01:49:40 UTC
Hi Sibiao,

Can you have a try this?

Best Regards,
Junyi

Comment 6 Sibiao Luo 2014-08-19 05:37:21 UTC
(In reply to yunpingzheng from comment #0)
> Description of problem:
> when boot a windows guest with rtl8139 and vhost=on. 
> can not ping ext host with packet size 65500(the max packet size support is
> 63632)
> when ping host that vm is runing can ping with packet size 65500.
> 
> when using e1000 and virtio_net it works ok
> 
> test on rhel6.4 host it works ok.
> 
> Version-Release number of selected component (if applicable):
> host: RHEL.7
> kernel-3.10.0-2.el7.x86_64
> qemu-kvm-1.5.2-3.el7.x86_64
> 
> guest: any windows guest.
> 
> How reproducible:
> 100%
> 
> Steps to Reproduce:
> 1. boot guest wit rtl8139 nic, and vhost=on
> 2. from an ext host ping the guest 
>   #ping -s 65507 $ip_win_guest
> 3. in guest ping the ext host
>   # ping -l 65500 $ext_host_ip
> 4. in guest ping the host
>   #ping -l 65500 $host_ip.
> 
> Actual results:
> in step 3 and step 4, ping timeout. when using -l 63632 it works, 63233 it
> can not works.
> 
> Expected results:
> 
> all ping should works
> 
> Additional info:
> qemu_cmd:
> /usr/libexec/qemu-kvm -M pc -name vm0 \
> -chardev socket,id=qmp_monitor1,path=/tmp/qmp_monitor1,server,nowait \
> -mon chardev=qmp_monitor1,mode=control \
> -drive
> file=/mnt/windows/win8-64.qcow2,index=0,if=none,id=drive-virtio-disk1,
> media=disk,cache=none,snapshot=on,format=qcow2,aio=native \
> -device
> virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,id=virtio-disk1 \
> -drive
> file=/home/kvm_autotest_root/iso/windows/winutils.iso,if=none,id=iso1,
> media=cdrom,format=raw \
> -device ide-drive,bus=ide.1,unit=0,drive=iso1,id=cdrom1 \
> -device e1000,netdev=idKF4XM9,mac=9a:9b:68:24:99:73,id=ndev00idKF4XM9 \
> -netdev tap,id=idKF4XM9,vhost=on,script=qemu-ifup-switch \
> -smp 4,cores=2,threads=1,sockets=4,maxcpus=255 \
> -m 4096 -vnc :0 -monitor stdio -boot order=cdn,once=c,menu=on
> 
> host nic:
> 00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network
> Connection (rev 04)

Retried with the same testing on the latest kernel version which did not hit it any more, all the ping works successfully.

host info:
# uname -r && rpm -q qemu-kvm-rhev && rpm -q seabios
3.10.0-145.el7.x86_64
qemu-kvm-rhev-2.1.0-2.el7.x86_64
seabios-1.7.5-4.el7.x86_64
guest info:
win7 64bit

host nic info:
# lspci | grep Ether
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 04)

Best Regards,
sluo

Comment 7 Yvugenfi@redhat.com 2014-08-19 07:54:12 UTC
Closing based on comment #6.

Thanks!