Escalator: Refreshing Your OPNFV Environment With Less Troubles Jie Hu & Zhijiang Hu, ZTE Corporation
Ultimate Goals of Escalator To upgrade the NFVI + VIM without service interruption The subscribers did not feel the service outage To achieve the carrier grade 99.999% service availability This depends on the HA capabilities of the OPNFV itself To support real productive OPNFV environment Large scale upgrade could be orchestrated by NFVO
Escalator Scope
Types of Your OPNFV Environment Minimum Simplest environment for testing purpose, especially in lab High Availability Carrier grade capability by different level redundancy Multi Site Distributed across multiple geographical locations
End to End VNF Service Availability Achieving Five-Nine of VNF Reliability in Telco-Grade OpenStack 99.9% 99.9% 99.99% 99.999%
Requirements on Environment Service handover mechanism Rapid restore to earlier versions Data migration between base and upgraded system Upgrade Interface for orchestration
SAForum Software Management
ETSI ISG NFV REL003 (Published) 1: Software upgrade operation should not cause the decrease of service availability and the interruption of network service (i.e., the disruption of ongoing connections and sessions). 2: The software upgrade may need to update network service and/or VNFFG. Such an update operation should not cause the interruption of network service (i.e., the disruption of on-going connections and sessions). 3: The VNF software and infrastructure software modules (e.g., virtualization layer or hypervisor, virtual switches, Firmware software, etc.) shall be able to be upgraded independently. 4: The software should be able to be upgraded in a scalable way, e.g., upgrading a fraction of the whole capacity, a certain service type or a certain user group, with the constraint of preserving the service availability and service continuity. 5: The upgraded software with corresponding configurations should be able to be verified with real service traffic while the existing network service traffic is handled normally. 6: An upgrade operation of NFV-MANO software shall not have any impact on the availability and continuity of existing network services.
ETSI ISG NFV REL006 (Early Draft)
Functional Requirements Prepare the Plan (A serials of modification steps) Validate your OPNFV Environment match the Plan Backup your Environment (Executable, Data and Configuration) Execute the Plan on your Environment Verify the Function / Performance of the upgraded Environment Rollback to your previous Environment if necessary Monitor the progress of above Functions Log all of related interaction information for record Administrate the operators for initiate the Upgrade OPNFV
Upgrade V.S. Installer Most of their functions are identical Except the Installers did not … consider the service outage backup / rollback fit for a productive environment deploy in a given time window
Reusing the OPNFV Installers Escalator Genesis UX / Deploy as a Service APEX Juju FUEL COMPASS Daisy
Deployment as a Service Installer located at the southbound of Escalator. Depoly/Clean/Upgrade not only the OPNFV but also installer itself. Escalator Deploy/ Clean/ Upgrade Deploy/ Clean/ Upgrade Installer OPNFV(Component)
Scenario1: On Stage Upgrading Escalator Installer(Current) Cluster Upgrade Upgrade
Scenario2: Multi Stage Upgrading Escalator Installer(Current) Cluster UpgradeInstaller Upgrade Upgrade UpgradeInstaller Upgrade Upgrade
Abstracts APIs To Support Scenarios On Stage Component Upgrading: GetVersion(Component) -> GetNextInstaller(Component, NewCompVersion) -> UpgradeCompnent(NextCompVersion). Multi Stage Component Upgrading: UpgradeInstaller(NextInstallerVersion) -> UpgradeComponent(NewCompVersion) -> GetNextInstaller(Component, NewCompVersion) -> … 3) Stop Installer: CleanInstaller() 4) Start Installer: DeployInstaller()
API List API Parameters Return GetVersion() Component/Installer CurrentVersion GetNextInstaller() Component, NewCompVersion NextInstallerVersion/NotExisted UpgradeComponent() NewCompVersion OK/Error/NotSupport UpgradeInstaller() NewInstallerVersion IsInstallerExisted() Void Boolean CleanInstaller() OK/Error DeployInstaller() GetVersion(Component) -> GetNextInstaller(Component, NewCompVersion) -> Upgrade(NewCompVersion). GetVersion(Component) -> GetNextInstaller(Component, NewCompVersion) -> UpgradeInstaller(NewInstallerVersion) -> GetNextInstaller(Component, NewCompVersion) -> UpgradeInstaller(NewInstallerVersion) -> … -> GetNextInstaller(Component, NewCompVersion) -> Upgrade(NewCompVersion). CleanInstaller() DeployInstaller()
Implementation Daisy API Service Escalator GetVersion(), UpgradeCompnent() Daisy API Ext. Registry Service API Ext. Service Subscribe/Publish (Optional) GetNextInstaller() Deploy(), Clean(), UpgradeInstaller() DB GetVersion() DB