Below are thoughts to continue the SO-APPC-VFC discussion. So far, we have discussed proposals from Vimal, Lingli, and Jamil.  This page attempts to synthesize and analyze the proposals to help drive further discussion.  Please feel free to update.

Language

One of the first challenges we have is around language.  We use the term “controller” for the entities that bring up SDN services and NFV applications.  However, I can’t find good industry definitions for an “NFV Controller”.  Controller does have widespread use and common definitions in the SDN space, as it operates in the control plane to direct traffic flows. In ONAP, many of the controllers are built on ODL, so this is understandable. On the other hand, NFV generally works in the management plane (providing management, monitoring, and configuration functions).  Indeed, Vimal’s description of a controller covers many of those management functions: “Maintain Topology, Configuration State, Perform Configuration Management and Provide Life Cycle Management Functions (i.e. common verbs – Restart, Suspend, Drain, etc.)”.  ETSI NFV language, too, focuses on managers (Management and Orchestration, Virtual Network Function Manager, Virtual Infrastructure Manager, etc.). Reality is, of course, messier. For example, ODL is primarily an SDN controller, but can also be used for management functions and OpenStack is primarily a manager, but also supports controller functions through Neutron.


I think the term “orchestration” is clearer, with similar definitions coming from ETSI NFV and the computing industry.  To choose two:

  • Orchestration: Aligning business request with applications, data, and infrastructure (Wikipedia)
  • Service Orchestration: The coordination and arrangement of multiple services exposed as a single aggregate service (Mulesoft)

These seem to fit our SO module as a stateless entity that decomposes an aggregate service definition and calls the appropriate component(s) to instantiate and manage it. 


Since I’m having trouble finding clear, consistent industry definitions, I’d like to propose that we use the following for the purposes of this conversation:

  • Service orchestrator: the software module primarily responsible for decomposing an aggregate service and coordinating/arranging it through one or more subordinate modules
  • Manager: a software module primarily responsible for providing management functions (e.g., management, monitoring, and configuring) within its domain
  • Controller: a software module primarily responsible for providing control plane functions (e.g., maintaining network topology, directing traffic flows) within its domain

If you have better definitions, please share.


Note that for clarity, let's still use the terms “APPC” and “VFC” to refer to the modules in question, regardless of whether they are providing controller or manager functions.

 

Goals and questions

Through the various proposals we’ve heard on the topic, there have been several requirements and assumptions – some explicit and some implicit.  


Goals/requirements where we have consensus


  • Flexibility for operator deployments: AT&T, China Mobile, Orange, and others may all want to deploy ONAP differently in their networks, and the system should be able to accommodate their needs.
  • Align with ONAP architecture principles
    • Minimize the impact to external components (e.g., DCAE, A&AI): while some updates may be necessary, we want to fit into the existing framework as best as possible
    • Minimize the impact to VNF vendors: we want to make it easy for VNF vendors to work with ONAP
    • NF/Services/Product agnostic
    • Microservices-based
    • Modular
    • Align with the ONAP charter
    • Capable of delivering in R1

Open questions that have been raised, but where I don’t think we’ve reached consensus

  • Avoid replication of functionality? 
  • ETSI MANO alignment?
  • Feature parity between APP-C and VF-C?  Do we require synchronization or do we allow variation within each module as long as the interfaces and interactions with other modules are consistent?


Functional Definitions


Let’s combine ETSI MANO definitions with service orchestration (which ETSI doesn’t define [VY]  What about Network Service (NS) management in NFVO?) to come up with a set of roles/functions for various components which we can map into deployment scenarios. I’ll work down the stack, starting at the service orchestrator. Note that below, I will use “service orchestrator” to define generic functions and “SO” to talk about the ONAP module which may or may not be covered by a different component in the ETSI MANO architecture that I’ll be using for reference.

Service Orchestrator is responsible for decomposing a complex network service into its constituent parts.

    1. Decompose service template into connectivity and application components
      [VY]  Why cannot we assume that in the service template (probably, similar to NSD in ETSI NFV) we already have separation of application components (VNFs, PNFs) and connectivity components (VLs, VNFFG)?

    2. Call controllers/managers to configure the network and instantiate VNFs

      [VY] This part may need clarification. A call (e.g. voice call) setup, normally does not require instantiation of VNFs or network (re)configuration. Then, why the function of network configuration and VNFs instantiation should be assigned to the call controller/manager?

      For clarification, it will be helpful to provide a definition of the services (orchestration of which is performed by the Service Orchestrator). The term “service” is quite ambiguous. A voice call is a service provided to an individual subscriber. Normally it’s based on control plane procedures and is not related to VNF instantiation and (re)configuration. On the other hand, ETSI NFV Network Service (NS) is a set of VNFs and PNFs together with connections (VLs) and forwarding rules (VNFFG). Setup (instantiation) of the NS is closely linked to VNF instantiation and (re)configuration. 

NFV orchestrator (including Resource Orchestrator) (ETSI MANO: http://www.etsi.org/deliver/etsi_gs/NFV-MAN/001_099/001/01.01.01_60/gs_NFV-MAN001v010101p.pdf)


    1. Management of Network Services deployment templates and VNF Packages (e.g. on-boarding new Network Services and VNF Packages). During on-boarding of NS and VNF, a validation step is required. To support subsequent instantiation of a NS, respectively a VNF, the validation procedure needs to verify the integrity and authenticity of the provided deployment template, and that all mandatory information is present and consistent. In addition, during the on-boarding of VNFs, software images provided in the VNF Package for the different VNF components are catalogued in one or more NFVI-PoPs, using the support of VIM.
    2. Network Service instantiation and Network Service instance lifecycle management, e.g. update, query, scaling, collecting performance measurement results, event collection and correlation, termination.
      [VY] Some of these operations are not considered NS life cycle management operations:
    3. Management of the instantiation of VNF Managers where applicable.
    4. Management of the instantiation of VNFs, in coordination with VNF Managers.
    5. Validation and authorization of NFVI resource requests from VNF Managers, as those may impact Network Services (granting of the requested operation needs to be governed by policies).
    6. Management of the integrity and visibility of the Network Service instances through their lifecycle, and the relationship between the Network Service instances and the VNF instances, using the NFV Instances repository.
    7. Management of the Network Service instances topology (e.g. create, update, query, delete VNF Forwarding Graphs).
    8. Network Service instances automation management (e.g. trigger automatic operational management of NS instances and VNF instances, according to triggers and actions captured in the on-boarded NS and VNF deployment templates and governed by policies applicable to those NS and VNF instances).
    9. Policy management and evaluation for the Network Service instances and VNF instances (e.g. policies related with affinity/anti-affinity, scaling, fault and performance, geography, regulatory rules, NS topology, etc.).
    10. Validation and authorization of NFVI resource requests from VNF Manager(s), as those may impact the way the requested resources are allocated within one NFVI-PoP or across multiple NFVI-PoPs (granting of the requested resources is governed by policies, and may require prior reservation).
    11. NFVI resource management across operator's Infrastructure Domains including the distribution, reservation and allocation of NFVI resources to Network Service instances and VNF instances by using an NFVI resources repository, as well as locating and/or accessing one or more VIMs as needed and providing the location of the appropriate VIM to the VNFM, when required.
    12. Supporting the management of the relationship between the VNF instances and the NFVI resources allocated to those VNF instances by using NFVI Resources repository and information received from the VIMs.
    13. Policy management and enforcement for the Network Service instances and VNF instances (e.g. NFVI resources access control, reservation and/or allocation policies, placement optimization based on affinity and/or anti-affinity rules as well as geography and/or regulatory rules, resource usage, etc.).
    14. Collect usage information of NFVI resources by VNF instances or groups of VNF instances, for example, by collecting information about the quantity of NFVI resources consumed via NFVI interfaces and then correlating NFVI usage records to VNF instances.

VNFM


    1. VNF instantiation, including VNF configuration if required by the VNF deployment template (e.g. VNF initial configuration with IP addresses before completion of the VNF instantiation operation).
    2. VNF instantiation feasibility checking, if required.
    3. VNF instance software update/upgrade.
    4. VNF instance modification.
    5. VNF instance scaling out/in and up/down.
    6. VNF instance-related collection of NFVI performance measurement results and faults/events information, and correlation to VNF instance-related events/faults.
    7. VNF instance assisted or automated healing.
    8. VNF instance termination.
    9. VNF lifecycle management change notification.
    10. Management of the integrity of the VNF instance through its lifecycle.
    11. Overall coordination and adaptation role for configuration and event reporting between the VIM and the EM.


Based on Vimal’s and Lingli’s presentations, let’s map these functions into the various modules (including DCAE & Policy).

SO:

  • 1a&b
    • [VY] ETSI NFVO does not do 1a (=decomposing a complex network service into its constituent parts). For 1b, further clarifications are needed (see above comment). 
  • 2a, c, d, j, k, l

APPC

  • 2 b, g, h
  • 3a-k

VFC

  • 2 a-n
  • 3 a-k (optional – using OPEN-O G-VNFM; other gVNFM or sVNFM possible)

DCAE

  • 2 b, n
  • 3 f

Policy

  • 2 i, m


So, SO+VFC would provide all of 1, 2, and 3, with some overlap in 2 a, c, d, j, k, and l. SO+APPC provides 1, 2 a-d, g, h, j-l. SO+VFC+APPC again provides all of 1, 2, and 3 with overlap in 2 a, c, d, j, k, l. 


Also, regardless of approach, VFC could work with DCAE and Policy on 2 b, i, m, n, and 3 f.


Deployment scenarios


We have seen three different deployment scenarios 

  • Option A: VF-C is “next to” APP-C, and a given service could use either APP-C or VF-C, depending on configuration. This is the “starting point” from the ONS architecture presentation, and is also covered in Lingli’s presentation as Option 2.
  • Option B: APP-C becomes a gVNFM under VF-C. Jamil proposed this during the May Face-to-face.
  • Option C: VF-C is subordinate under APP-C. This was Vimal’s Option 2.


Under Option A, we would need to update SO to support the OS-NFVO southbound interface to VFC, support a configuration parameter specifying whether to use APPC, VFC, or another manager in the future, and include an updated BPMN workflow for VFC (so there may be two or more workflows – existing APPC, new VFC, new TOSCA, etc.).  Both the VFC and APPC path could bring up and manage a VNF.  The VFC path could be used for ETSI NFV-aligned services, or when a VNFM is required.  The APPC path could be used in other circumstances. 

  • This option provides the greatest level of operator flexibility and maximum backwards compatibility for both ECOMP and OPEN-O deployments. Operators could specify whether to use APPC or VFC in SDC when creating the service, and SO would understand how to call the appropriate manager.  Operators could use 100% APPC, 100% VFC, or some mix in the middle, as required.
  • Where required, it provides ETSI NFV alignment
  • We could minimize VNF vendor challenges using a common VNF packaging format and common TOSCA template, and convert to HEAT where applicable.
  • It requires more work in SO up front, but would require fewer changes to VFC and APPC
  • There could be some divergence between VFC (gVNFM) and APPC functionality, but it should be transparent to other ONAP components, so we would have to provide guidance to operators as to the ramifications of each choice.
  • This would probably give us the greatest level of extensibility, as a similar approach could be used to add different types of managers (e.g., IoT manager, cloud manager, etc.) in the future


Under Option B, we would have to update SO to support the OS-NFVO interface and update the BPMN workflow.  We would also need to update APPC to support the OR-VNFM northbound interface.  APPC would provide all gVNFM functionality, but sVNFMs could also be used when required.  Architecturally, I think this is similar to Vimal’s option 1 (he showed SO and VFC combined, but I’m not sure that works since the codebases are too different).

  • Like Option A, this option would provide ETSI NFV services
  • It would require less work in SO and more work in APPC to support the changes. There would be less overall work in VFC, assuming all VNFM work would now be done in APPC.
  • With one path through the system, it would reduce VNF vendor challenges.
  • It would be less backwards compatible than Option A. 


After mapping modules to functionality, I don’t understand the value of Option C.  We would be using a service orchestrator to call a VNFM to call an NFVO to call another VNFM. There would be a lot of functional overlap.  However, applying the same analysis as above, I think it would require APPC to implement the OS-NFVO interface.

  • When APPC invokes VFC, it would support ETSI NFV services
  • It would require no work in SO and more work in APPC.
  • We could again minimize VNF vendor challenges. Services could be configured in SDC to be instantiated by APPC itself or by VFC via APPC. 
  • This option, again, would not be as backwards compatible as C.


So, in my opinion, it comes down to Option A or Option B: do we want APPC to connect directly to SO or do we want it to attach to VFC as a VNFM? From a development perspective, I think Option B shows promise, but Option A will provide the greatest level of operator flexibility and extensibility at the expense of more work up front. 


4 Comments

  1. All,

      Thanks for starting this discussion.  I want to clarify some of the terminology and see how we can quickly agree on short term architecture for release 1 and long term architecture vision. So here are some thoughts.

    Terminology

    • Functions      – These are basic building blocks.       Example of functions are:

    ü  Resource Data Definition

    ü  Management Workflows creation

    ü  Service Decomposition (Service à Resources)

    ü  VNF Orchestration

    ü  Requesting Infrastructure Resources

    ü  Data Collection

    ü  Analytics & Anomaly detection

    ü  Etc. etc.

    • Modules      – Logically relevant functions are grouped together and implemented as      modules within ONAP.  Example      modules are

    ü  SDC, A&AI, SO, App-C, DCAE, VF-C, Multi-VIM, SDN-C, etc.

    ü  Each module as a well defined role and support set of functions.  Overlaps between modules should be avoided.

    • Tasks      – Allows user to accomplish certain results.  One or more modules participate to      complete a task

    ü  Onboard a resource, define management workflow

    ü  Instantiate a VNF or Service (could use multiple VNFs)

    ü  Closed loop automatic action

    ü  Software Upgrade / Change Management

     

    Descriptions of Example Modules

    • SO     Module is stateless and performs transient tasks/functions, such as:

    ü  Service Decomposition (Service à Resources)

    ü  VNF Orchestration

    ü  Functions which are common across various controller modules and are aggregated and consolidated into this common layer

    • Location optimization function to identify best data center placement for the VNF or service
    • Queries inventory (A&AI) to determine resource availability
    • Calls to external license manager to get a valid license to create a new instance of the VNF or service
    • Requests Infrastructure via multi-VIM layer to allocate right compute / memory / storage resources and instantiate the VNF/VNF components (one or more VM’s or one or more containers)

    ü  Coordinates activities between various controllers (Infrastructure, Network, VNF, RAN Controllers) 

    ü  Orchestrator can be organized hierarchically (or multi-tier), Service Orchestrator spawning one or more VNF or network orchestration threads

    ü  Calls service assurance functions (DCAE) to deploy, configure and activate lifecycle management functions (analytics, data collectors, etc.)

    ü  Orchestrator is called to Instantiate / configure VNF / Service, Closed loop action (e.g. Scale Up/Don), Change management, terminate, etc.

    • App-C,      SDN-C Controller Modules Maintain Topology, Configuration State,      Perform Configuration Management and Provide Life Cycle Management      Functions (i.e. common API – Restart, Suspend, Drain, HealthCheck, etc.),      etc.

    ü  Controller must support rich south bound adaption layers – Yang, Netconf, Chef, Ansible, vendor EMS (Ve-Vnfm-em), CLI, vendor VNFM (Ve-Vnfm-vnf), etc.

    ü  Controllers maintains and enforces VNF cross dependencies

    ü  Update A&AI with right topology information for newly deployed VNFs and Services

    ü  When Possible, Leverage a Common Technology Across Various Controllers (Layer 1-3, Layer 4-7, RAN controllers, etc.).

    • Reduces Overlaps, Enhancements / Changes Shared Across All Controllers, Simplifies Operations/Deployment/Scaling, Consistent Artifact Designs

    ü  Drive toward a “Controller Framework” for “Plug-&-Play” controller solutions and transactional roles.

    • Enable controller identities to be defined through roles and requests rather than being predetermined at deployment, enabled by common libraries
    • Support more efficient technology swap-out

    ü  Controller actions are triggered by Orchestrator (e.g. Instantiate), DCAE / Policy (Closed Loop), or Control Plane Events (BGP messages)

    • SDC      Module:

    ü  Onboard Resources

    ü  Create Resource Models

    • Resource Data Definition
    • Management Workflows
    • Associated Policies

    ü  Create Service Model

    • Service Topology and Chaining of Resources
    • Service Data Definition
    • Management Workflows
    • Associated Policies

    ü  Distribute Models to Execution Production Environment

    ü  DCAE

    ü  A&AI

    ü  Etc.

     

     

    General Approach for ONAP Architecture Evolution (Short & Long Term)

     

    • We      have a starting architecture and an implementation with more than 6      million lines of code

    ü  We are not starting from scratch

    ü  Over time community can collectively agree on enhancements that adds value or provide some benefits

    ü  This code has been in production for more than 2 ½ years, supporting a live network and any disruptive architecture changes should be carefully evaluated

    • Short      term architecture enhancement should be driven by merger agreement between OpenECOMP & Open-O
    • In  addition to merger agreement, ONAP community has agreed on architecture principles and those should guide ONAP architecture evolution
    • Relevance of MANO should be objectively evaluated:

    ü  ETSI MANO scope is extremely limited (no design environment, No Data Collection, Correlation, Analytics, No Policy Driven Closed Loop, etc.)

     

    1. Appreciate if you can clarify if at a high level we need to map to ETSI MANO interfaces , External API (north of SO) is where Os-Ma can be reasonably mapped ? Another view is considering VF-C is exposing the NFVO , Is SO acting like a GSO or an E2E SO ? In the latter case probably ETSI Os-Ma may be mapped to interface between SO and NFVO in VF-C. 

  2. Is the provided capabilities of APPC in the VNFM section correct? I have the understanding that APPC supports mainly VNF configuration or re-configuration (audit, test, modify config, ...) and modifies the resource configuration of the server typically required during re-configuration / upgrade ( reset, migrate, rebuild). APPC does not allocate resource during instantiation, scaling nor does it remove resources during termination. This leaves with 3. c, d, g (limited to application configuration), j and k, but not a-k. Can some APPC expert comment, maybe I am completely not right.

  3. Appreciate if any one update about final conclusion on APPC & VF-C deployment scenarios and feature parity between them?

    Also is there any conclusion on ETSI MANO alignment?