<html>
  <head>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-1">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <div class="moz-text-html" lang="x-unicode"> Hi all,<br>
      <br>
      I'm presenting here my proposal for the feature "Guest migration"
      which<br>
      is expected to be implemented for Kimchi 1.4.
      <h2> Description </h2>
      Migrate guest vm within peer/host discovered by Kimchi peers using
      openSLP.<br>
      In the first stage 1, only do migration will be supported, <br>
      in stage2, migrateCancel and migrateMonitor will be supported.<br>
      <br>
      <b>Migration Mode: </b><br>
      1. Support libvirt tunnelled transport&nbsp; managed by direct
      migration.<br>
      2. Only support Live migration mode.<br>
      3. Only support migration over TCP <br>
      <br>
      <b>Migration Capability Check</b><br>
      -&nbsp; Source libvirtd/client should be able to connect destination
      libvirtd.<br>
      -&nbsp; CPU architectures compare(X86 vs PPC). <br>
      -&nbsp; No PCI device passthrough.<br>
      -&nbsp; In a shared storage pool and the pool can be access/write by
      destination.<br>
      <br>
      <h2> REST API </h2>
      Only one new REST command will be added in stage 1.
      <h4> Syntax </h4>
      <tt>POST /vms/</tt><tt><i>&lt;vm-name&gt;</i></tt><tt>/migrate</tt>
      <h4> Parameters: </h4>
      <small>in config.py.in: <br>
        <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ('migration_destination_timeout', '21600',<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Maximum time the destination waits for the
        migration to finish. <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21600 should be enough since all the peers will be in
        the same LAN'),<br>
        <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ('migration_max_bandwidth', 'unlimited',<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'default in libvirt is unlimited'),<br>
        <br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ('migration_downtime', '500',<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Maxmium allowed downtime for live migration in
        milliseconds '<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '(anything below 100ms is ignored) if you do not
        care about '<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'liveness of migration, set to a very high value,
        such as '<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '600000.'),<br>
      </small>
      <h4> Return: </h4>
      An asynchronous Task with "<tt>target_uri</tt>" containing "<tt>/vms/&lt;</tt><tt><i>new-vm-name</i></tt><tt>&gt;</tt>".<br>
      As expected with any Task, the cloning process can be tracked by<br>
      checking the corresponding task's status. <br>
      <br>
      <b>Do_migration step:</b><br>
      -&nbsp; migration source check .<br>
      -&nbsp; connect migration destination, guest vm config/params transfer
      and setup.<br>
      -&nbsp; migration source prepare.<br>
      -&nbsp; do actually migration.<br>
      -&nbsp; recover if failed.<br>
      -&nbsp; do finish if migration successful.<br>
      <br>
      <br>
      Comments are welcome!<br>
    </div>
    <pre class="moz-signature" cols="72">-- 
Yun Tong Jin, Simon
Linux Technology Center, Open Virtualization project
IBM Systems &amp; Technology Group
<a class="moz-txt-link-abbreviated" href="mailto:jinyt@cn.ibm.com">jinyt@cn.ibm.com</a>, Phone: 824549654 </pre>
  </body>
</html>