Bug 599286

Summary: download failed after migration on both rhel5.4 and windows2003 guest
Product: Red Hat Enterprise Linux 6 Reporter: Jianjiao Sun <jsun>
Component: libvirtAssignee: Daniel Veillard <veillard>
Status: CLOSED CANTFIX QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: low    
Version: 6.1CC: berrange, xen-maint, yoyzhang
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-06-09 09:08:46 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jianjiao Sun 2010-06-03 03:33:08 UTC
Description of problem:
Before migration ,I download a big file on the guest.After migration on the target machine,download percent stopped,and download failed.On windows guset got a "Time Out" error.

Version-Release number of selected component (if applicable):
# rpm -aq |grep libvirt
libvirt-python-0.8.1-7.el6.x86_64
libvirt-0.8.1-7.el6.x86_64
libvirt-client-0.8.1-7.el6.x86_64
# uname -a
Linux dhcp-65-144.nay.redhat.com 2.6.32-31.el6.x86_64 #1 SMP Thu May 27
18:26:27 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
[root@dhcp-65-144 Downloads]# rpm -qa |grep kvm
qemu-kvm-0.12.1.2-2.68.el6.x86_64


How reproducible:
always

Steps to Reproduce:
1.start the  guset,and download a big file(on linux guest , I have tried two ways,one way use 'wget',the other use'lftp and get';on windows guest download the file from browser)
2.migration 
#virsh migrate --live migratetest qemu+ssh://10.66.65.144/system
3.After migration ,check if the download procedure continue and download the file successfully
  
Actual results:
Download procedure stopped and not download at all,wait a moment ,download failed.On windows guest got a "Time Out" error.

Expected results:
After migration,we can download the file successfully.

Additional info:

Comment 2 RHEL Program Management 2010-06-07 15:58:36 UTC
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux major release.  Product Management has requested further
review of this request by Red Hat Engineering, for potential inclusion in a Red
Hat Enterprise Linux Major release.  This request is not yet committed for
inclusion.

Comment 3 Daniel Berrangé 2010-06-08 12:27:27 UTC
Can you provide the following information

 - virsh dumpxml $GUESTNAME
 - ifconfig -a
 - brctl show

For both source & dest machines involved in the migration.

Comment 4 Jianjiao Sun 2010-06-09 03:06:16 UTC
On source machines
# virsh dumpxml m2
<domain type='kvm'>
  <name>m2</name>
  <uuid>5c9c6853-d89c-c572-69cc-a1c33430affc</uuid>
  <memory>2097152</memory>
  <currentMemory>2097152</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu'/>
      <source file='/var/lib/libvirt/migrate/RHEL-Server-5.5-32-virtio.qcow2.1'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:4f:a5:2c'/>
      <source network='default'/>
      <target dev='vnet0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
  </devices>
</domain>

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:23:AE:9D:84:4A  
          inet addr:10.66.65.135  Bcast:10.66.65.255  Mask:255.255.254.0
          inet6 addr: fe80::223:aeff:fe9d:844a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:23142159 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14037176 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:33932283606 (31.6 GiB)  TX bytes:2054513092 (1.9 GiB)
          Memory:febe0000-fec00000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:126482 errors:0 dropped:0 overruns:0 frame:0
          TX packets:126482 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:255080017 (243.2 MiB)  TX bytes:255080017 (243.2 MiB)

virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9077 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10864 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:711604 (694.9 KiB)  TX bytes:14500056 (13.8 MiB)

# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.000000000000	yes	


On destination machines:
# virsh dumpxml m2
<domain type='kvm' id='1'>
  <name>m2</name>
  <uuid>5c9c6853-d89c-c572-69cc-a1c33430affc</uuid>
  <memory>2097152</memory>
  <currentMemory>2097152</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu'/>
      <source file='/var/lib/libvirt/migrate/RHEL-Server-5.5-32-virtio.qcow2.1'/>
      <target dev='hda' bus='ide'/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:4f:a5:2c'/>
      <source network='default'/>
      <target dev='vnet0'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/3'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/3'>
      <source path='/dev/pts/3'/>
      <target port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' keymap='en-us'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
  </devices>
  <seclabel type='dynamic' model='selinux'>
    <label>system_u:system_r:svirt_t:s0:c932,c1012</label>
    <imagelabel>system_u:object_r:svirt_image_t:s0:c932,c1012</imagelabel>
  </seclabel>
</domain>

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:23:AE:9D:90:9C  
          inet addr:10.66.65.144  Bcast:10.66.65.255  Mask:255.255.254.0
          inet6 addr: fe80::223:aeff:fe9d:909c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25984266 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18914127 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:31791727632 (29.6 GiB)  TX bytes:11502107368 (10.7 GiB)
          Memory:febe0000-fec00000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:74284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:74284 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:171724840 (163.7 MiB)  TX bytes:171724840 (163.7 MiB)

virbr0    Link encap:Ethernet  HWaddr 9E:12:EC:0D:23:37  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:22207 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34671 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1303682 (1.2 MiB)  TX bytes:48172691 (45.9 MiB)

vnet0     Link encap:Ethernet  HWaddr 9E:12:EC:0D:23:37  
          inet6 addr: fe80::9c12:ecff:fe0d:2337/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:899 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:300 (300.0 b)  TX bytes:47786 (46.6 KiB)

# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.9e12ec0d2337	yes		vnet0

Comment 5 Daniel Berrangé 2010-06-09 09:08:46 UTC
Ok this is your problem:


    <interface type='network'>
      <mac address='52:54:00:4f:a5:2c'/>
      <source network='default'/>
      <target dev='vnet0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0'/>
    </interface>


The 'type=network' setup you have here is a per-host  NAT based networking mode. Although you can migrate the guest fine & connect to the NAT network on the destination host, all existing connections will be lost. This is expected behaviour for a NAT based networking mode & can't be "fixed".

Normally if you wish to migrate you should be using type=bridge, at which point network connections will remain operational across migration.