You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

References


1. Architecture

This architecture depicts a standalone PCI micro-service. When this is moved to DCAE, it may undergo some adaptations, for e.g., the interfaces have to be adapted appropriately.


                     


With reference to the above architecture:

1.1. Core Logic

This is composed of a Main Thread and one or more Child Threads. The Main Thread is responsible for spawning and terminating the Child Threads, this is described in the sections below.

1.2. Database

This is a PostgreSQL DB, and is intended to persist information such as the following:

  • PCI-Handler MS Config information (e.g., thresholds, timer values, OOF algorithm name, etc.)
  • Pre-processing results and other related information (e.g., neighbor list)
  • Buffered notifications (i.e., notifications not yet processed at all)
  • State information
  • Association between pnf-name and CellId

1.3. DMaaP Client

This is responsible for registering with the DMaaP client for the DMaaP notifications from SDN-R, and to Policy.


2. Core Logic component and Pre-processing algorithm

Note: The pre-processing logic may not be 100% fool-proof as well as the most efficient one. An attempt has been made to balance the usefulness for a PoC in Casablanca timeframe versus the complexity of handling all possible scenarios.

2.1. Main Thread

The state transition diagram is illustrated below:

The main actions in the various states are listed below:

2.1.1. Initialization

In this state, the following actions are performed:

  • Fetch config policy from Policy module (REST call) and configure the MS (thresholds, timers, etc.)
  • Initialize Database, buffers, etc.
  • Trigger DMaaP thread for registration of DMaaP topics (SDN-R and Policy interfaces)

2.1.2. Config Policy Update

Upon receipt of a websocket notification from Policy module, fetch updated config policy via REST call (get_config)

2.1.3. SDN-R Notification Handling

Check if notification has to be processed or buffered as follows:

  1. Fetch the PCI_optimization requests (from DB) for which OOF has been triggered, and corresponding ‘cluster’ details
  2. For each ‘cluster’ for which OOF has been triggered, check if the Nodeid of the Cell Ci or at least one cell in its NbrList matches with any cell in the ‘cluster’
  3. If there is a match, then the request has to be buffered, along with the cluster indication (cluster id), else the notification has to be processed.

If ‘notification has to be processed’

then

  1. Fetch the available clusters (corresponding to the active child threads) from DB.
  2. For each cluster:

    if the Cell Ci and/or its neighbors Nbr_1i to Nbr_Ki are present in the cluster

    then

    • Map the notification to the child thread handling the cluster (i.e., consider this cell also to be part of the cluster)

    • child_thread_mapped = true
    • Exit the loop of scanning each cluster

   fi

3. If child_thread_mapped = false, then instantiate a new cluster (i.e., this cell is part of a new cluster).

else

Buffer the notification (along with the cluster id)

fi

2.1.4. OOF Response Handling

Upon invocation of API by OOF for PCI result pass it to the relevant child thread(s) (by request id <-> thread mapping). Store the OOF results in database along with the timestamp.

2.1.5. Status update from Child thread (PCI recommendations sent to Policy)

Upon trigger from Child thread that OOF results have been sent to Policy (as a DMaaP message), check if there are any buffered notifications to be handled for the cluster handled by the Child thread. If there are any such buffered notifications, forward them to the Child thread, otherwise kill the Child thread and clean up resources associated with the cluster handled by the Child thread.

2.1.6. Terminating

Upon receiving a terminate request clean up all resources.

2.1. Child Thread(s)


  • No labels