SOFTWARE DEFINED SYSTEMS
Course Code: SWEG5108
Target Group: 5th Year Software Engineering
                                              2025
                 Outline
Chapter 4        1.   What is virtualization?
Virtualization   2.   Software-defined everything (SDE)
                 3.   Benefits of virtualization
                 4.   Types of virtualizations
                 5.   How secure is virtualization and how
                      are virtual machines managed?
                 6.   Categories of Virtualization
What is virtualization?
   Virtualization is the process of creating a virtual version of a physical
    resource, such as a server, storage device, or network.
   Multiple virtual machines (VMs) can run inside a physical machine
    (PM)
   VM gives user an illusion of running on a physical machine
   Virtualization is a building block for cloud computing
   Virtualization enables multiple clients share the cloud’s compute
    resources
   Multiple users on VMs/containers can share same cloud server
                                  Software Defined System                   3
What is virtualization?
   Virtualization is a basic enabler of Cloud Computing, it simplifies the
    management of physical resources for the three abstractions.
   Virtualization abstracts the underlying resources, simplifies their use,
    isolates users from one another, and supports replication which
    increases the elasticity of a system
                                 Software Defined System                  4
What is virtualization?
   Virtualization simulates the interface to a physical object by:
o   Multiplexing: creates multiple virtual objects from one instance of a
    physical object. Many virtual objects to one physical. Example - a
    processor is multiplexed among a number of processes or threads.
o   Aggregation: creates one virtual object from multiple physical objects. One
    virtual object to many physical objects. Example - a number of physical
    disks are aggregated into a RAID disk.
o   Emulation: constructs a virtual object of a certain type from a different
    type of a physical object. Example - a physical disk emulates a Random
    Access Memory (RAM).
o   Multiplexing and emulation. Examples - virtual memory with paging
    multiplexes real memory and disk; a virtual address emulates a real
    address
                                    Software Defined System                  5
Similarities and Differences with Multiprogramming
   Multi Programming – Each Process thinks it has complete control on all
    of the resources (Virtual Memory, CPU Sharing)
Multi Programming                            Virtualization
   CPU is shared among processes               CPU is shared among OSs.
   Memory is shared using Page                 Memory is shared using more
    Tables.                                      level of indirections.
                                                Multiple Page tables.
   Process knows it is being
    managed- uses system calls.                 OS may or may not know that
                                                 it is being managed
                                Software Defined System                        6
   Similarities and Differences with Multiprogramming
In summary, Multiprogramming focuses on maximizing CPU utilization
by running multiple processes concurrently, while Virtualization
abstracts physical resources into virtual machines, providing isolation
and flexibility.
Multiprogramming operates at the process level, whereas virtualization
operates at the hardware level.
                                  Software Defined System         7
Virtual Machine Monitor (VMM / Hypervisor)
   A virtual machine monitor (VMM/hypervisor) partitions the resources
    of computer system into one or more virtual machines(VMs).
   Allows several operating systems to run concurrently on a single
    hardware platform.
   It is an execution environment that runs an OS
   VM – an isolated environment that appears to be a whole computer,
    but actually only has access to a portion of the computer resources
                                Software Defined System               8
Virtual Machine Monitor (VMM / Hypervisor)
   A VMM allows:
      Multiple services to   share the same platform
      Live
          migration - the movement of a server from
      one platform to another
      System   modification    while     maintaining
      backward compatibility with the original system
      Enforces   isolation among the systems, thus
      security
     Aguest operating system is an OS that runs in a
      VM under the control of the VMM.
                                     Software Defined System   9
How VMM Virtualizes the CPU and the Memory ?
   Traps the privileged instructions executed by a guest OS and enforces the
    correctness and safety of the operation
   Traps interrupts and dispatches them to the individual guest operating
    systems
   Controls the virtual memory management
   Maintains a shadow page table for each guest OS and replicates any
    modification made by the guest OS in its own shadow page table.
   This shadow page table points to the actual page frame and it is used by
    the Memory Management Unit (MMU) for dynamic address translation.
   Monitors the system performance and takes corrective actions to avoid
    performance degradation. For example, the VMM may swap out a VM to
    avoid thrashing
                                  Software Defined System                  10
Type 1 and 2 Hypervisors
Type 1 Hypervisors (Bare-Metal Hypervisors)
   Type 1 hypervisors are installed directly on the hardware, without an underlying
    operating system.
   They are also known as "bare-metal" hypervisors.
   Examples of Type 1 hypervisors include VMware ESXi, Microsoft Hyper-V, and
    Citrix Hypervisor (formerly XenServer).
   Type 1 hypervisors have direct access to the hardware resources, which allows for
    efficient resource management and high performance.
   They are commonly used in enterprise-level virtualization environments, such as
    data centers, where high performance and reliability are critical.
   Type 1 hypervisors are typically more complex to set up and manage compared to
    Type 2 hypervisors.
                                     Software Defined System                        11
Type 1 and 2 Hypervisors
Type 2 Hypervisors (Hosted Hypervisors)
 Type 2 hypervisors are installed on top of an existing operating system, such as
  Windows or Linux.
 They are also known as "hosted" hypervisors.
 Examples of Type 2 hypervisors include VMware Workstation, Oracle VirtualBox,
  and Parallels Desktop.
 Type 2 hypervisors rely on the underlying operating system to provide access to
  the hardware resources.
 They are generally easier to set up and use compared to Type 1 hypervisors, as
  they leverage the existing operating system's functionality.
 Type 2 hypervisors are commonly used on personal computers or workstations
  for testing, development, or running multiple operating systems simultaneously.
 However, they may have slightly lower performance compared to Type 1
  hypervisors due to the additional layer of abstraction.
                                  Software Defined System                       12
Type 1 and 2 Hypervisors
   Type 1 hypervisor: runs directly
    on hardware, no need for host
    OS
   Type 2 (hosted) hypervisor: runs
    as an application on top of host
    OS
                                Software Defined System   13
VM (Virtual Machine) migration
   VM (Virtual Machine) migration refers to the process of moving a
    running virtual machine from one physical host or environment to
    another.
   This can be done for various reasons, such as load balancing,
    maintenance, disaster recovery, or infrastructure upgrades.
   There are two main types of VM migration:
        Live   Migration
        Cold   Migration
                               Software Defined System            14
VM (Virtual Machine) migration
Live Migration
   Live migration is the process of moving a running virtual machine
    from one physical host to another without interrupting the VM's
    operation or user experience.
   This is achieved by seamlessly transferring the VM's memory, CPU
    state, and network connections to the new host.
   Live migration allows for continuous uptime and service availability,
    making it particularly useful for mission-critical applications.
   Examples of live migration technologies include VMware vMotion,
    Microsoft Hyper-V Live Migration, and KVM Live Migration.
                                Software Defined System                 15
VM (Virtual Machine) migration
Cold Migration
   Cold migration, also known as offline migration, involves shutting
    down the virtual machine, transferring its disk image and
    configuration files to the new host, and then restarting the VM on the
    new host.
   This method is simpler and does not require specialized migration
    capabilities, but it results in downtime for the VM during the
    migration process.
   Cold migration is often used for non-critical VMs or during planned
    maintenance windows.
                                Software Defined System                 16
VM (Virtual Machine) migration
   The key steps involved in VM migration (both live and cold) are:
   Preparation: Ensuring the target host has sufficient resources (CPU,
    memory, storage) to accommodate the migrating VM.
   VM state capture: Capturing the current state of the VM, including its
    memory, CPU, and network configurations.
   Data transfer: Transferring the VM's disk image, configuration files,
    and captured state to the target host.
   VM restoration: Restoring the VM on the target host and resuming its
    operation.
                                 Software Defined System                 17
What is load balancing?
   Load balancing is the process of distributing network traffic
    efficiently among multiple servers to optimize application availability
    and ensure a positive end-user experience.
   Load balancing directs and controls internet traffic between the
    application servers and their visitors or clients. As a result, it improves
    an application’s availability, scalability, security, and performance.
   Because high-traffic websites and cloud computing applications
    receive millions of user requests each day, load balancing is an
    essential capability for modern application delivery.
                                  Software Defined System                    18
What is load balancing?
   A web infrastructure with no load balancing might look something like the
    following
   In this example, the user connects directly to the web server, at yourdomain.com.
   If this single web server goes down, the user will no longer be able to access the
    website.
   In addition, if many users try to access the server simultaneously and it is unable
    to handle the load, they may experience slow load times or may be unable to
    connect at all.
                                      Software Defined System                        19
What is load balancing?
   This single point of failure can be
    mitigated by introducing a load
    balancer and at least one additional
    web server on the backend.
   Typically, all of the backend servers will
    supply identical content so that users
    receive consistent content regardless
    of which server responds.
   The user accesses the load balancer,
    which forwards the user’s request to a
    backend server, which then responds
    directly to the user’s request.
                                        Software Defined System   20
Benefits of virtualization
   Instant provisioning - fast scalability
   Live Migration is possible
   Load balancing and consolidation in a Data Center is possible.
   Low downtime for maintenance
   Virtual hardware supports legacy operating systems efficiently
   Security and fault isolation
                                   Software Defined System           21
Types of virtualizations
 There are several types of virtualizations in the world of information
  technology. Here are the main types:
1. Server Virtualization
   This involves running multiple virtual machines (VMs) on a single
    physical server.
   Each VM runs its own operating system and applications, isolated
    from the others.
   Examples: VMware ESXi, Microsoft Hyper-V, Citrix Hypervisor.
                              Software Defined System                  22
Types of virtualizations
2. Desktop Virtualization
 Also known as Virtual Desktop Infrastructure (VDI).
 It involves hosting desktop environments on a centralized server, and users
  access their virtual desktops remotely.
 Allows for centralized management and data security.
 Examples: Citrix Virtual Apps and Desktops, VMware Horizon.
3. Storage Virtualization
 This combines multiple physical storage devices into a single logical storage
  pool.
 Provides abstraction from the underlying physical storage.
 Enables features like automated tiering, backup, and disaster recovery.
 Examples: NetApp ONTAP, VMware vSAN, Red Hat Ceph Storage.
                                 Software Defined System                      23
Types of virtualizations
4. Network Virtualization
   Involves the creation of virtual networks on top of the physical
    network infrastructure.
   Allows for programmatic control and configuration of network
    resources.
   Enables features like software-defined networking (SDN) and network
    function virtualization (NFV).
   Examples: VMware NSX, Microsoft Azure Virtual Network, Cisco ACI.
                               Software Defined System                24
Types of virtualizations
5. Application Virtualization
   This isolates applications from the underlying operating system.
   Allows applications to run without being installed directly on the
    client device.
   Simplifies application management and deployment.
   Examples: Microsoft App-V, Citrix App Layering, VMware ThinApp.
                                 Software Defined System               25
Types of virtualizations
6. Hardware Virtualization
   Also known as server virtualization or platform virtualization.
   Allows multiple virtual machines to run on a single physical server.
   Provides the ability to create and manage virtual machines.
   Examples: VMware ESXi, Microsoft Hyper-V, Citrix Hypervisor.
                                  Software Defined System                  26
Security of Virtualization
   Isolation: Virtualization allows VMs to be isolated from each other
    and the host operating system, reducing the attack surface.
   Containment: Even if a VM is compromised, the damage can be
    contained and prevented from spreading to other VMs or the host.
   Snapshot/Rollback: The ability to quickly snapshot and roll back VMs
    can help recover from security incidents.
   Patching: Virtualization makes it easier to rapidly patch and update
    VMs compared to physical machines.
                                Software Defined System                27
Virtual Machine Management
   Image Management: Carefully managing VM images, templates, and
    snapshots is crucial to prevent security issues from being propagated.
   Access Control: Implementing robust access controls and privilege
    management for VM administration is essential.
   Monitoring and Logging: Comprehensive monitoring and logging of VM
    activity is needed to detect and respond to security incidents.
   Network Security: Securing the virtual network, including firewalls, access
    controls, and encryption, is critical.
   Backup and Disaster Recovery: Regular backups and disaster recovery
    plans are necessary to ensure business continuity in the event of a security
    breach or other incident.
   Compliance: Virtualized environments must be configured to meet relevant
    compliance requirements, such as data protection regulations.
                                   Software Defined System                    28
Challenges of virtualization
Security Risks
 Increased attack surface as VMs can be entry points for malware and cyber
  attacks.
 Risk of VM-to-VM attacks if not properly isolated.
 Potential for privilege escalation if VM administration controls are not robust.
 Securing the virtual network and managing virtual firewalls.
Performance Overhead
 Performance degradation due to the additional abstraction layer and resource
  sharing.
 Ensuring adequate resources (CPU, memory, storage) for VMs to maintain
  acceptable performance.
 Managing resource contention and oversubscription.
                                  Software Defined System                       29
Challenges of virtualization
Complexity
   Increased operational complexity in managing virtual infrastructure, such
    as VM provisioning, migration, and decommissioning.
   Challenges in monitoring and troubleshooting virtualized environments.
   Difficulty in maintaining consistent configurations across multiple VMs.
High Availability and Disaster Recovery
   Ensuring high availability and reliable failover mechanisms for critical VMs.
   Implementing effective backup and disaster recovery strategies for
    virtualized environments.
                                    Software Defined System                         30
Challenges of virtualization
Vendor Lock-in
 Potential vendor lock-in due to the use of proprietary virtualization
  platforms and tools.
 Challenges in migrating VMs across different virtualization platforms.
Licensing and Compliance
 Ensuring compliance with software licensing requirements in a virtualized
  environment.
 Managing software licensing for VMs, especially when using different
  operating systems or applications.
Data Protection and Privacy
 Securing and protecting sensitive data stored or processed within VMs.
 Ensuring data isolation and preventing data leakage between VMs.
                               Software Defined System                   31
What is Software-Defined Everything (SDx)?
   Software-Defined Everything (SDx) is a broad term that refers to the concept
    of using software to control, manage, and configure various IT infrastructure
    components and services.
   The "x" in SDx represents different types of infrastructure, such as storage,
    networking, data centers, and more.
   SDx is a fundamental part of the broader movement towards cloud
    computing, DevOps, and the adoption of modern, software-centric
    approaches to IT infrastructure management.
   The key aspects of Software-Defined Everything (SDx) include Software-
    Defined Storage (SDS), Software-Defined Networking (SDN), Software-Defined
    Data Center (SDDC), Software-Defined Infrastructure (SDI), Software-defined
    security.
                                   Software Defined System                     32
                           THANK YOU
                               ?
                          "Virtualization is the superpower
                          that unleashes the true potential
                                        of IT. "
Software Defined System                           33