\documentclass{beamer}

\usetheme{Frankfurt}
% preferred themes: Darmstadt Frankfurt Warsaw
% themes: Darmstadt Warsaw Ilmenau JuanLesPins Luebeck Madrid Malmoe Marburg Pittsburgh Rochester Singapore
% \usefonttheme[onlylarge]{structuresmallcapsserif}
\usefonttheme[onlylarge]{structurebold}

\useoutertheme{smoothbars}
% outer themes: default infolines miniframes shadow sidebar smoothbars smoothtree split 

\setbeamerfont*{frametitle}{size=\normalsize,series=\bfseries}
\setbeamertemplate{navigation symbols}{}
\usecolortheme{orchid}
% \usecolortheme{crane}
% colorthemes: crane wolverine albatross orchid rose beaver dolphin dove seahorse

% \usepackage{beamerthemesplit}
\usepackage[english]{babel}
% \usepackage{graphics}
\usepackage{graphicx}
% \usepackage[rflt]{floatflt}
\usepackage{picinpar}
\usepackage{wrapfig}
\usepackage{hyperref}

\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}

\usepackage{tikz}
\usetikzlibrary{arrows}
\tikzstyle{block}=[draw opacity=0.7,line width=1.4cm]

\newcommand\BackgroundPicture[1]{
%  \setbeamertemplate{background}{
    \parbox[c][\paperheight]{\paperwidth}{
      \vfill \hfill
      \includegraphics[width=\paperwidth,height=\paperheight]{#1}
      \hfill \vfill
    }
%  }
}

\title{Whats up at the virtualization/\\ emulation front?}
\author{Christian Horn}
% \author{Christian Horn \\ \texttt{chorn@fluxcoil.net}}
\date{\today}

\begin{document}

\frame{
  \titlepage 
  \centering
  \tiny{ 
    This file is licensed under the Creative Commons Attribution-ShareAlike License\\
    To view a copy of this license, visit \url{http://creativecommons.org/licenses/by-sa/3.0}
  }
  \begin{flushright}\tiny{v1.81}\end{flushright} 
}
%\frame{
%	\frametitle{Outline}
%	\tableofcontents[hideallsubsections]
%}


% ideas for improvement:
% - mm: mehr bilder - mehr uebersichten - weg vom text - und ein vergleich am ende mit dem uebergang zur zukunft
% - Was an VMWare kann man jetzt alles free nutzen, und was kann das unfreie was die anderen Loesungen nicht koennen?
% - Slide zu Kernel-virtualisierenden wie OpenVZ, Linux V-Server, BSD-Jails 
% - Sicherheitsaspekte - welche Technologie hat welche Angriffsvektoren?
%     http://invisiblethingslab.com/itl/Resources.html - attacks on intel trusted execution technology
% - performance comparison
% - cascading kvm on AMD is implemented..

\usebackgroundtemplate{
  \includegraphics[width=\paperwidth,height=\paperheight]{tokyo_imperial_palace_1024x768_white3.eps}
}

\section{start}
\subsection{start}
\begin{frame}
  \frametitle{whoami}
  \begin{itemize}
    \item OpenSource enthusiast, Linux Engineer, Sysadmin
    \item current main topics cobbler, kerberos, ldap, kvm
    \item Japan fan, cycling, reading
    \item first computer was a KC85/3 build in hometown Muehlhausen
    \item RHCA, playing with many linux/bsd distros
    \item mostly redhat/suse at work, debian on private boxes
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
  \frametitle{on the content}
  \begin{block}{notice}
    \begin{itemize}
    \item This is virtualization in a nutshell as i see it.
    \item I will skim through the technology in chronological
      order, basic mechanisms will be explained along that way.
    \item Will just name the most important software from
      my point of view, have to simplify things to some level.
    \item If you have questions, don't wait to ask them!
      If the question will take too long to answer or take us too
      far off topic, we'll move on and you can talk to me afterward.
    \end{itemize}
  \end{block}
\end{frame}
\subsection{why}
\begin{frame}
  \frametitle{Why is it interesting? Potential hackvalue.}
  \centering
  \href{http://xkcd.com/350/}{http://xkcd.com/350/}
  \includegraphics[width=\linewidth]{pics/xkcd.com_350_network.eps}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{big iron}
\subsection{CP/CMS}
\begin{frame}
  \frametitle{IBM System/360 Model 67}
  \begin{itemize}
    \item 24bit mainframe shipped since 1966
    \item CP/CMS works as native hypervisor (so sits directly on metal) 
      comparable to xen-kernel or vmware ESX
    \item features like memory protection appearing, time-sharing 
      comes up (in past single big programs), operating systems managing
      multiple tasks
    \item funny note: first versions of CP/CMS without copyright-notes 
      so free for publice use :)
  \end{itemize}
\end{frame}
\subsection{illustration}
\begin{frame}
  \frametitle{jump single tasks -> OSs with multiple tasks}
    \centering
    \includegraphics[width=\linewidth]{pics/step_to_OSs_with_multiple_tasks2.eps}
\end{frame}
\subsection{CP/CMS}
\begin{frame}
  \frametitle{Also starting.. virtualization!}
  \begin{itemize}
    \item Why virtualization? To keep old software running, the new
      hardware allows this now
    \item accomplishing full virtualization of hardware: all features
      used by software like i/o, cpu functions, memory etc. are provided
      in virtual machines -> multiple OSs can now run virtualized
  \end{itemize}
\end{frame}
\subsection{illustration}
\begin{frame}
  \frametitle{development of hypervisor virtualization}
    \centering
    \includegraphics[width=\linewidth]{pics/hypervisor_setup2.eps}
\end{frame}
\subsection{CP/CMS}
\begin{frame}
  \frametitle{IBM System/360 Model 67 cont'd}
  \begin{itemize}
    \item paravirtualization supported, aka ``DIAGNOSE code'' in IBM-terms
    \item System/360 later evolved into System/370, System/390, zSeries, 
      System z9 and current System z10
    \item current OSs are z/VM or linux. A z/VM acting as hypervisor
      can run other z/VMs virtualized, even cascading possible
    \item nowadays hercules emulates z-architecture, even architectures
      that dont exist in reality
  \end{itemize}
\end{frame}
\subsection{illustration}
\begin{frame}
  \frametitle{cascading virtual machines}
  \centering
  \includegraphics[width=\linewidth]{pics/cascading_virtualmachines.eps}
\end{frame}
\section{void}
\subsection{the void}
\begin{frame}
  \frametitle{the void}
  \begin{itemize}
    \item ...and then during the 1980s and 1990s virtualization is abandoned, 
      the trend is to spread apps over many small lowcost computers
    \item x86 architecture rises as industry standard, but lacks functions
      to support virtualization, grows fast and stays backward compatible
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{bochs}
\subsection{Bochs}
\begin{frame}
  \frametitle{Bochs (spoken: box)}
  \begin{itemize}
    \item created 1998, bought by MandrakeSoft and released under LGPL in 2000
    \item no virtualization, pure emulation of x86-hardware => relatively slow
    \item often used for OS-development when accurate emulation is required and
      speed doesnt count
    \item parts reused in other projects like qemu and kvm
    \item runs on: linux, macosx, bsd, win
    \item as guests: most x86-systems like linux, bsd, dos, win
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{vmware}
\subsection{VMware}
\begin{frame}
  \frametitle{VMware on Desktop}
  \begin{itemize}
    \item 1999 VMware publishes its 'Workstation 1.0': focusing on desktops
    \item among fastest emulators, closed source, HVM required
    \item features: usb, smp (x16), complex snapshots management, seamless mode integrates
      guests apps in hosts windowmanager (aka unity), Directx8/9 for winguests
      % VMI paradriver (vmware initiated) interface about to be removed: cpu-functions efficient enough
      % http://osdir.com/ml/linux-kernel/2009-10/msg05954.html
      % vmw_pvscsi will stay, virtual interface not existant in reality
    \item currently around: Player (free, now also creates VMs, no complex snapshots), 
      Workstation (feature-rich Player, payware), Fusion (Workstation for Mac)
  \end{itemize}
\end{frame}
\subsection{software-emu vs. virtualizer}
\begin{frame}
  \frametitle{software emulators ways of access}
    \includegraphics[width=0.46\linewidth]{pics/softemu_vs_hvm__softonly.eps}
\end{frame}
\begin{frame}
  \frametitle{software emulator vs. virtualizer access}
    \includegraphics[width=\linewidth]{pics/softemu_vs_hvm__both.eps}
\end{frame}
\subsection{Vmware}
\begin{frame}
  \frametitle{VMware Server software}
  \begin{itemize}
    \item in 2001 introducing Vmware Server (lives on host-OS just as another process)
      and ESX-server (running pure ESX-kernel on hardware)
    \item ESXi: by VMware now recommended over ESX
    \item nowadays well established in industry
  \end{itemize}
  \begin{exampleblock}{Why is VMware so widely used?}
    \begin{itemize}
      \item Was first one on market, software long time around
      \item unique features: low skills required
      \item most trusted by companies, together with m\$ and citrix
      \item Contrary to i.e. xen/para, OpenVZ etc. the VMs can be handled like
        usual servers (pxe-deployment etc.) - customers like that
    \end{itemize}
  \end{exampleblock}
\end{frame}
\begin{frame}
  \frametitle{features...}
  \begin{itemize}
    \item overcommit ram/disk, DeDUP for backups/VM snapshots,
    \item famous for conversion-tools, HA-functions, management GUIs
    \item virtualizing complex network-setups, bandwidth limitation
    \item spread VMs as load/energy requires (DRS/DPM)
    \item live-migrate among different storages (Storage VMotion)
    \item run shadow-VM to take over failing VM (Fault Tolerance)
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{lpar}
\subsection{lpar}
\begin{frame}
  \frametitle{IBM power lpars}
  \begin{itemize}
    \item 2001 IBM brings VMs also to Power arch as LogicalPARtitions
    \item hypervisor mainly in hardware, special LPARs for I/O ``VIO''
    \item virtual scsi-traffic among LPARs possible
    \item live migration == Live Partition Mobility (LPM)
    \item Power6 VMs can be live migrated to Power7
    \item ActiveMemorySharing AMS allows in/decreasing RAM of LPARs and overcommit
      to disc, Active Memory Expansion (AME) compresses RAM in VMs, but nothing
      like KVM does with KSM
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{qemu}
\subsection{qemu}
\begin{frame}
  \frametitle{The Qemu generation}
  \begin{itemize}
    \item on Mar/23/2003 Fabrice Bellard (ffmpeg, tcc) announces an ``x86 emulator''
      for x86 and PowerPC Linux hosts: \\ ``Its main goal is to be able to run the
      Wine project on non-x86 architectures.''
      \begin{itemize}
        \item mode linux-user runs linux-binaries across different archs
        \item mode system-emu provides a full system
      \end{itemize}
    \item emulated architectures: x86, ARM, SPARC, MIPS, m68k (and some others like alpha
      in less usable states)
    \item snapshots of virtual machines possible
  \end{itemize}
\end{frame}
\begin{frame}
  \frametitle{Qemu features}
  \begin{itemize}
    \item much hardware emulated: harddisks, cdrom, different nics, sound chips, usb-devices,
      smp cpus, graphic cards
    \item also using hosts usb-devices possible
    \item qcow2 growing diskfiles (think of sparsefiles), http-blockdevices
    \item speedups possible by using kqemu, doesnt require HVM-cpu-technology!
    \item most important opensource-project in virtualization area, many reuses
      in xen, kvm, virtualbox, maemo
    \item >50\% of coders also contribute to linux-kernel
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{xen}
\subsection{Xen}
\begin{frame}
  \frametitle{Xen}
  \begin{itemize}
    \item in 2003 released by Univ. of Cambridge, nowadays owned by Citrix
    \item hypervisor, separated in vm 'dom0' for control and real VMs
    \item 2 modes: paravirt. (OS modified for operation) and fullvirt. (runs unmodified
      OSs)
    \item using QEMU-code for emulation of devices
    \item similiar: commercial Citrix (adds GUI/management), sun xVM (think of
      xen with ZFS and Gui), Hyper-V (since 2k8r2 live-migration, p2v transfer)
  \end{itemize}
\end{frame}
\begin{frame}
  \frametitle{Xen features}
  \begin{itemize}
    \item features: fastest soft for paravirtualization, live migration, nowadays also
      puts newer cpus into sleepstates to save power, GPL paradrivers, pcidevice
      delegation, vista++ have para-extensions for hyper-v, vmgl
    \item since xen 4.0 does 'live transactional synchronization' of a shadow-vm,
      50ms checkpoints, para+hvm domUs supported
    \item problems: fewer features than linuxkernel, code not in vanilla
      kernel, code heavy for adoption
  \end{itemize}
\end{frame}
\subsection{illustration of a live-migration}
\begin{frame}
  \frametitle{live-migration: memorytransfer of running vm}
    \includegraphics[width=\linewidth]{pics/live_migration1_vm_memory_copy.eps}
\end{frame}
\begin{frame}
  \frametitle{live-migration: freezing IO and copy of remaining memory}
    \includegraphics[width=\linewidth]{pics/live_migration2_vm_frozen_and_leftovers_copied.eps}
\end{frame}
\begin{frame}
  \frametitle{live-migration: unfreezing IO, VM is moved}
    \includegraphics[width=\linewidth]{pics/live_migration4_vm_unfrozen_on_new_host.eps}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{vb}
\subsection{virtualbox}
\begin{frame}
  \frametitle{VirtualBox overview}
  \begin{itemize}
    \item in 2007 Innotek (-> SUN -> Oracle) releases VirtualBox OSE (OpenSource Edition) under GPLv2
    \item Oracle sells support for the partly closed 'Personal use and Evaluation' (PUEL)-version, also adds feaures
    \item supports as hosts OS/2 and Solaris (besides usual Linux, MacOS X, Windows)
    \item fastest free emulator for computers without HVM-function in the CPU, comparable to vmware
    \item code partly from qemu, nowadays much faster development than qemu
  \end{itemize}
\end{frame}
\begin{frame}
  \frametitle{VirtualBox features}
  \begin{itemize}
    \item features: rdp-server, usb 1.1/2.0, snapshots, HVM-usage if provided, seamless mode
      integrates guests apps in hosts windowmanager, clipboard, opengl-drivers/Directx8/9 for winguest
      on linux-host, smp, livemigration to different host-OS/cputype (teleportation), ksm-like
      memory folding (page fusion), monitors++, online snapshot merging, MacOnMac
    \item emulates disks backed by files, iscsi, vmdk-files (vmware)
    \item on roadmap: paravirt windows drivers
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{kvm}
\subsection{KVM}
\begin{frame}
  \frametitle{KVM kernelbased virtual machine}
  \begin{itemize}
    \item *2006 in kernel from Qumranet, later bought by RedHat
    \item OpenSource
    \item just a linux kernelmodule utilizing cpus HVM-functions => all features like
      powermanagement already in place, each virtual-cpu is a thread in the host
    \item runs unmodified guests, qemu-code emulates devices in userland
    \item paradrivers for windows \& linux for better performance
    \item AlacrityVM fork for better throughputs\& lower latencies
      % performance gains of alactityVM over kvm
      % http://developer.novell.com/wiki/index.php/AlacrityVM/Results
  \end{itemize}
\end{frame}
\begin{frame}
  \frametitle{KVM features}
  \begin{itemize}
    \item cpu/memory overcommit, live migration, hotplug of cpu/block/nic/pci
    \item SR-IOV (single root i/o virt.): native pci-e device sharing
    \item KSM (Kernel Shared Memory): merges equal memory-pages into ``shared pages'',
      think of filesystem hardlinks or Dedup => 600 VMs on a host with 48 cores and 256GB RAM
      % intel westmare cpu allows also 'unrestricted guest': real mode virtualized instead of emulated
    \item pci dev. assignment: requires VT-d or IOMMU hardwarem (no memory overcommit, 
      no migration, no graphic cards )
    \item Android \& MacOSX virt. possible :)
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{summary}
\subsection{others}
\begin{frame}
  \frametitle{important others that didnt make it to own slides}
  \begin{itemize}
    \item for one OS: wine, dosbox
    \item on one hostkernel: OpenVZ, bsdjails (hirarchical, networked), chroot
    \item guest having own dependent kernel: Solaris Zones, User Mode Linux, Lguest
    \item FAUmachine (Hardware Emu/Virt, also emulates faulty hardware) 
    \item whole hardware emus: UnixAmigaEmulator, hercules (Z-arch), SIMH (pdp, vax)
    \item CooperativeLinux: sharing hardware with windows-kernel at same time
      % Basilisk II (68k-Macintosh-Emulator) 
      % GXemul (ARM-, MIPS-, PowerPC- und SuperH-Emulator) 
      % PersonalAlpha (Alpha-Emulator) 
      % Microsoft Virtual PC (Native Virtualization) 
      % Win4Lin, WinBSD, Win4Solaris 
    \end{itemize}
\end{frame}

\subsection{cascading nowadays}
\begin{frame}
  \frametitle{What about cascading today?}
    \includegraphics[width=\linewidth]{pics/cascading_whom_with_whom.eps}
\end{frame}

\subsection{conclusion}
\begin{frame}
  \frametitle{summarizing the reasons for virtualization}
  \begin{itemize}
    \item security: PS3, separation of daemons into VMs
    \item consolidation: collecting many VMs on one metal
    \item provide rare hardware: macosx@kvm, amiga via uae, winnt@vmware
    \item rapid provisioning: vm-copy
    \item fault tolerance: vm rebooting faster than real hardware, 
      vm-migration to different hardware
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{future}
\subsection{clouds}
\begin{frame}
  \frametitle{cloud overview}
    \includegraphics[width=\linewidth]{pics/clouds2.eps}
\end{frame}

\begin{frame}
  \frametitle{cloud topics}
  \begin{itemize}
    \item customers apps and their interaction have to be cloud-compatible as
      cloud is designed for horizontally scaling apps
    \item cloud-provider trustworthy enough for customers data?
    \item protection of VMs against each other becomes more important
    \item why not using clouds: security, we are cheaper, clouds not yet ready
  \end{itemize}
\end{frame}
\begin{frame}
  \frametitle{clouds: whats coming up}
  \begin{itemize}
    \item libvirt as wrapper
      over xen, kvm, qemu, openvz, vmware, ibm power
    \item Open Virtualization Format (OVF), 
      \href{http://www.dmtf.org/standards/published_documents/DSP0243_1.0.0.pdf}{open specs}
      for storing virtual machines
    \item emerging open frameworks for management: 
      \begin{itemize}
        \item Eucalyptus
        \item RedHats RHEV (version 3.x to work without windows)
      \end{itemize}
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{future}
\begin{frame}
  \frametitle{also in a not too far future...}
  \begin{itemize}
    \item virtualization on embedded/mobile for security, concept of
      \href{http://qubes-os.org/files/doc/arch-spec-0.3.pdf}{http://qubes-os.org/...} 
      uses xen for separation into VMs
    \item linux process freezing/unfreezing
    \item vms get used like appliances (use while still downloading, boot from internet)
    \item live-migrations advancing, proxmox already does kvm-migrations over ssh
    \item getting a common layer spanning all x86-virtualizers? So vms
      are movable/migratable i.e. xen<->kvm
      % http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines
  \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{end}
\subsection{closing words}
\begin{frame}
  \begin{center}
  \begin{Huge}
%    Questions? \\
    Hoping you found the next \\ toy to play with? \\
  \end{Huge}
    \vspace{15px}
%    \includegraphics[width=5cm]{pics/arigatou_gozaimasu.eps} \\
    \vspace{20px}
  \url{http://fluxcoil.net} \\
  \vspace{10px}
  chorn@fluxcoil.net \\
%  chorn@fluxcoil.net / xmpp://chhorn@jabber.ccc.de\\
  \end{center}
%  \vspace{30px}
%  [1] Thank you.
\end{frame}

\end{document}
