Installing Kernel Based Virtual Machine and User Plane VM

The SMI Cluster Manager utilizes the Kernel Based Virtualization (KVM) – a virtualization technology – to deploy the User Plane Function (UPF) VMs.

To deploy the KVM and UPF:

  1. Setup the KVM and UPF configuration

    The following is a sample KVM and UPF configuration

    software upf <version_number> #For example, v748 
     url <repo_url> 
     user <username> 
     password <password> 
     sha256 <sha256_hash> #For example, 9141df47188fb795f3805fd61abf8784d52d2916f32014f564572a6cbbf7c545 
     description "<description>" #For example, "UPF software version v748" 
     exit 
    
     # associating to Bare Metal environment
    environments bare-metal 
     ucs-server 
     exit 
    
    # General cluster configuration
    clusters <cluster_name> 
      environment bare-metal 
      addons ingress bind-ip-address <bind_ip_address> 
      addons cpu-partitioner enabled 
      configuration master-virtual-ip <master_vip> 
      configuration master-virtual-ip-interface <master_vip_interface_name> #For example, eno1 
      configuration allow-insecure-registry true 
      node-defaults ssh-username <username> 
      node-defaults initial-boot default-user <username> 
      node-defaults initial-boot default-user-ssh-public-key  
      "<SSH_Public_key>"
      node-defaults ssh-connection-private-key  
      "-----BEGIN OPENSSH PRIVATE KEY-----
        <SSH_Private_Key>    
      -----END OPENSSH PRIVATE KEY-----\n"
       node-defaults initial-boot default-user-password <password> 
       node-defaults initial-boot netplan ethernets <ethernet_interface> #For example, eno1 
        dhcp4 false 
        dhcp6 false 
        gateway4 <gateway_ipv4_address> 
        nameservers search <<domain_name>> 
        nameservers addresses <nameserver_ipv4_addresses> 
        exit 
    
     # initial-boot section of node-defaults
       node-defaults ucs-server host initial-boot networking static-ip netmask <ipv4_address> 
       node-defaults ucs-server host initial-boot networking static-ip gateway <ipv4_address> 
       node-defaults ucs-server host initial-boot networking static-ip dns <ipv4_address> 
       node-defaults ucs-server cimc user <username> 
       node-defaults ucs-server cimc password <password> 
       node-defaults ucs-server cimc remote-management sol enabled 
       node-defaults ucs-server cimc remote-management sol baud-rate <baud_rate> 
       node-defaults ucs-server cimc remote-management sol comport <com_port>  
       node-defaults ucs-server cimc remote-management sol ssh-port <ssh_port> 
       node-defaults ucs-server cimc networking ntp enabled 
       node-defaults ucs-server cimc networking ntp servers <ntp_server_url> 
       exit 
     
       node-defaults os proxy https-proxy <proxy_server> 
       node-defaults os proxy no-proxy <proxy_servers> 
       node-defaults os ntp enabled 
       node-defaults os ntp servers <ntp_server_url> 
       #For monitoring the LCM's IP range (Optional)
       node-defaults kvm monitoring local-ip-address-range <ipv4address/subnet>  
       exit 
       node-type-defaults kvm 
         os netplan-additions bridges <bridge_name> #For example, ex4000 
         addresses <ipv4_address/subnet> 
         exit 
       exit 
    
    #node configuration
     nodes <node_name> #For example, kvm-1 
      ssh-ip <ssh_ipv4address> 
      type kvm 
      vms <vm_name> kvm-1 
        upf software <software_version> #For example, v748 
        upf networking management ip <ipv4addess>      
        upf networking management netmask <ipv4address> 
        upf networking management gateway <ipv4address> 
        upf networking management interface-type bridge 
        upf networking management bridge name <bridge_name> #For example, ex4000 
        type upf 
        exit 
      vms <vm_name> #For example, upf2 
        upf software <software_version> #For example, v748 
        upf networking management ip  <ipv4address> 
        upf networking management netmask <ipv4address> 
        upf networking management gateway <ipv4address> 
        upf networking management interface-type bridge 
        upf networking management bridge name <bridge_name> #For example, ex4000 
        type upf 
        exit 
      
    #Default VM configuration
    vm-defaults upf day0 username username 
      vm-defaults upf day0 password password 
      ucs-server host initial-boot networking static-ip ipv4-address <ipv4address> 
      ucs-server cimc ip-address <ipv4address> 
      ucs-server cimc storage-adaptor create-virtual-drive true 
       
      initial-boot netplan ethernets <interface_name> #For example, eno1 
       addresses <ipv4address/subnet> 
       exit 
     exit 
     
    # control-plane node configuration 
      ucs-server host initial-boot networking static-ip ipv4-address <ipv4address>  
      ucs-server cimc ip-address <ipv4address> 
      ucs-server cimc storage-adaptor create-virtual-drive true 
        initial-boot netplan ethernets <interface_name> #For example, eno1 
       addresses <ipv4address/subnet> 
      #Configure secure boot (optional)
      ucs-server cimc bios configured-boot-mode Uefi 
      ucs-server cimc bios uefi-secure-boot yes 
      exit 
     exit 
       ucs-server host initial-boot networking static-ip ipv4-address <ipv4address>  
      ucs-server cimc ip-address <ipv4address> 
      ucs-server cimc storage-adaptor create-virtual-drive true 
      initial-boot netplan ethernets <interface_name> #For example, eno1 
       addresses <ipv4address/subnet> 
      exit 
     exit 
     ops-centers cee <ops_center_name> #For example, cee 
      repository-local <repo_name> cee-2020-02-0-i04 
     exit 
    exit 
    
    Note

    For the Clusters on Edge deployments, you must define the ucs-server host initial-boot networking parameter. This reduces latency in bringing up the ISO media in CIMC. The following is an example configuration for deploying UPF on remote sites:

    ucs-server host initial-boot networking static-ip ipv4-address <IPv4address> 
    ucs-server host initial-boot networking static-ip netmask <IPv4address> 
    ucs-server host initial-boot networking static-ip gateway <IPv4address> 
    ucs-server host initial-boot networking static-ip dns <IPv4address> 

    If ucs-server host initial-boot networking parameter is not defined, the CIMC can timeout (and throw errors) while trying to download a SMI hard drive image instead of embedding it into the ISO file (30 MB versus 300 MB).

  2. Login to the Cluster Manager CLI and enter configuration mode

    • Add the KVM and UPF configuration to deploy the KVM and UPF clusters.

      Note
      A sample configuration to deploy KVM and UPF clusters is provided here.
    • Commit and exit the configuration

    • Validate the cluster configuration in the Cluster Manager

      Example:

      clusters cndp-testbed-cm actions validate-config run log-level DEBUG vmware-checks false k8s-node-checks false
      This will run validation.  Are you sure? [no,yes] yes
      message 2020-05-06 19:50:38.597 INFO __main__: Verifying ntp config ......
      ...
      ...
      2020-05-06 19:50:45.723 INFO __main__: You have not run all checks together. Run clusters cndp-testbed-cm actions validate run
      
      valid TRUE
      
  3. Configure KVM using the following configuration:

    configure
    	  clusters <cluster_name>
    		vm-defaults
    		node-defaults kvm monitoring local-ip-address-range ip-address-and-prefix 
                 node-type-defaults kvm
                 nodes 
    		type <k8s/kvm>
    		vms <name>
    		ssh-ip <kvm_IP>
                 exit
             exit
     
  4. Configure the UPF using the following configuration. The following parameters are specific to UPF configuration:

    • day 0 – Specifies the configuration applicable to the VM when it is first created. After initial creation (day 0), changes here will not apply unless the VM is deleted and redeployed.

      • username – Specifies the StarOS administrator username

      • password – Specifies the StarOS administrator password

      • syslog-ip – Specifies the StarOS logging syslog IP

    • networking – Specifies the configuration for the management interface.

      Note
      Other networks are expected to be provisioned as day 1 configuration by talking directly to the UPF.
      • IP_Address - Specifies the IP address.

      • Netmask - Specifies the Netmask

      • Gateway - Specifies the Gateway

      • interface-type - Only bridge is supported for now

      • bridge name - Specifies the bridge name. For more details, see the bridge section defined in KVM configuration

      • domain-name - Specifies the domain name

      • name-servers - Specifies the name servers

    • ntp-servers – Specifies the NTP (Network Time Protocol) settings for UPF

    • software – Specifies the link to version of UPF to deploy

    • nodes [name] vms - Currently, two UPFs are allowed per node to align with NUMA.

      • type (upf - default upf) - Provides the ability for additional types of VMS in the future. Currently, UPF is the only choice.

    • os enable-passthrough [true_or_false] - To use PCI Passthrough to pass the NIC to UPF, enable-passthrough must be enabled. By default UPFs use SRIOV to configure the network interfaces.

    • os num-vfs-per-pf [vf_num] - Specifies the number of VFs created for each PF. The default value is 16.

  5. Run the synchronization

    clusters cluster_name actions sync run debug true 
    • Monitor the progress of the cluster synchronization

      monitor sync-logs cluster_name 
  6. Connect to the UPF node through console in KVM after the synchronization is complete

    virsh console <upf_name> serial1--force 

    or SSH to UPF if the bridge is configured locally

    ssh username@management_ip 
    Note
    For authentication, you can use the username and password configured in Day 0 configuration. Also, the SMI Cluster Manger is not required for operating the deployed VMs.

NOTES:

  • vm-defaults - Allows configuring the necessary values across all the VMs. It is available at cluster and node level.

  • kvm monitoring local-ip-address-range ip-address-and-prefix – Specifies the IP configuration for UPF LCM.

  • node-type-defaults kvm - Allows configuring the necessary values across all the KVMs.

  • type <k8s/kvm> - Allows only nodes of type kvm to be run

  • vms <name> - Specifies the VM configuration.

  • ssh-ip <kvm_IP> - Specifies the KVM IPv4 address