OpenOMCI Status and Future Plans for VOLTHA v2.0
OpenOMCI has completed various features for VOLTHA v1.3 and is now focusing on prioritizing remaining tasks for VOLTHA v2.0. The current coverage of unit tests is at 80%, with ongoing work on improving performance, supporting additional functionalities like power shedding, and enhancing the OMCI framework for seamless integration with the VOLTHA platform.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
OpenOMCI What s Next Voltha Lockdown Meeting April 10th, 2018 - Dallas, TX ADTRAN, Inc
Voltha V1.3 OpenOMCI Status Completed Features (or in gerrit review) Open Features (not yet in progress) OpenOMCI running as part of ONU Device Handler (ADTRAN ONU) OMCI Frame Generation (MEFrame) OMCI Communications Channel (OMCI_CC) OMCI Task Runner (both exclusive and shared OMCI_CC supported) External MIB Database (kv-store) MIB Synchronization State Machine MIB Upload MIB Audit (stretch goal) Initial OMCI Tasks MIB Synchronization Documentation Initial OMCI Tasks LCI Service Instantiation Performance Monitoring (stretch goal) Alarm Synchronization (stretch goal) ME Database External key-value store Simple API for ONU to request ME information.
OpenOMCI Unit Test Coverage Name Stmts Miss Branch BrPart Cover --------------------------------------------------------------------------------- voltha/extensions/omci/__init__.py 0 0 0 0 100% voltha/extensions/omci/database/__init__.py 0 0 0 0 100% voltha/extensions/omci/database/mib_db_api.py 55 11 4 2 78% voltha/extensions/omci/database/mib_db_ext.py 366 40 124 15 89% voltha/extensions/omci/me_frame.py 103 16 30 8 76% voltha/extensions/omci/omci.py 4 0 0 0 100% voltha/extensions/omci/omci_cc.py 290 110 60 7 55% voltha/extensions/omci/omci_defs.py 67 0 6 0 100% voltha/extensions/omci/omci_entities.py 271 14 137 70 79% voltha/extensions/omci/omci_frame.py 24 1 32 1 96% voltha/extensions/omci/omci_me.py 199 34 110 41 75% voltha/extensions/omci/omci_messages.py 165 2 18 0 99% voltha/extensions/omci/tasks/__init__.py 0 0 0 0 100% voltha/extensions/omci/tasks/task.py 40 2 2 0 95% voltha/extensions/omci/tasks/task_runner.py 120 15 43 11 84% --------------------------------------------------------------------------------- TOTAL 1704 245 566 155 80% ---------------------------------------------------------------------- Ran 104 tests in 4.665s
OpenOMCI Remaining Features - Needs Prioritization Other Features OMCI State Machines BroadCOM ONU Device Adapter support Example OMCI Tasks Containerized OpenOMCI? Additional ME Frame support as needed by services supported for the VOLTHA v2.0 Improved External Database performance CLI and/or NBI Support Extended OMCI message formats and operations Power Shedding Support ONU Capability discovery (support for OMCI specifications other than v3.0 of AT&T OpenOMCI s requirements) Increased Unit Test Coverage MIB Synchronization State Machine MIB Download re-sync/reconcile task (on MIB Data Sync Mismatch) Offline OMCI Provisioning Software Download and Image Activation Alarm Synchronization Performance Monitoring OMCI Test Services
Suggested OpenOMCI Features for VOLTHA v2.0 Other Features (ADTRAN) OMCI State Machines (ADTRAN) Example OMCI Tasks Additional ME Frame support as needed by services supported for VOLTHA v2.0 Improved External Database performance Increased Unit Test Coverage MIB Synchronization State Machine MIB Download re-sync/reconcile task (on MIB Data Sync Mismatch) Software Download and Image Activation Alarm Synchronization (stretch goal) Other Features (help requested) OMCI State Machines (help requested) BroadCOM ONU Device Adapter support CLI / NBI Support Additional ME Frame support as needed by services supported for the VOLTHA v2.0 NBI Support Performance Monitoring
Questions ? Comments?
V1.3 OpenOMCI Framework (MIB DB related) Vendor ONU Device Adapter Query ME requests OpenOMCI MIB I-Adapter Audit Task MIB Upload Task MIB Resync Task OMCI_CC Vendor OLT DA VOLTHA v1.3.0 Commitments MIB Get MIB Data Sync Task Reconcile Task(s) OMCI Rx/Tx Requests OmciAdapter Agent Task Runner Stretch Goals ME MIB Sync StateMachine Database ME CRUD requests PUB/SUB Interface OnuDeviceEntry Start/Stop requests
Base Philosophy & Requirements For all applicable classes being proposed: Make it easy for ONU Adapters to derive and overload functionality Python classes for use in a vendor s ONU Device Adaptor (not a separate docker container) Additions/modifications to any existing classes should avoid breaking any existing functionality Focus on needs of initial use cases Clear documentation for each class and for a class s methods 90%+ Unit test coverage goal for any new classes Allow ONU Device Adapter access to some of the classes and class attributes (not all interactions go through the state machine)
ONU Task Runner (Formerly ONU State Machine in previous presentations) This is the main interface from an ONU Device Adapter into the OpenOMCI Stack Provides Startup/Shutdown of OMCI Stack. Lifetime starts at ONU Activation completion. A set of task classes responsible for various ONU OMCI Stack actions such as: MIB Synchronization ONU Physical and Software Capability Discovery Alarm Synchronization Various Service Instantiations (LCI, VoIP, Video, ...) - Based on required use cases Software Image Download, Commit, and Activation PM Statistics (and OLT time synch, but not Time of Day) Others as needed (power shedding, ToD) Each task runs to completion before next task handled. Task queue has tasks in a defined priority so next highest runs when Stack is free Each task (and main state machine) is a single class that can be overloaded as needed by an ONU DA to customize
OMCI State Machine Initialization method will: Register all known tasks. You can derive your own if you wish use customized tasks Start/Stop method to control the state machine Task start method to add or schedule a new task to be executed. Responsible for ME database Probably several additional methods to support task functionality
ME Database An External DB to contain ME attribute values that were discovered during MIB Synchronization Needed to allow for hitless recovery after an ONU Device Adapter container migration or restart Leverage information in the EntityClass ME definition to create the storage attributes
Common OMCI CC class Add a common class to handle all OMCI Tx and Rx tasks that can be used (and extended as needed) for all ONU Device Adapters to .../voltha/extensions/omci Basic Requirements: User settable timeout for OMCI responses Matches Rx TID to Tx TID Send() returns a deferred that fires on Rx Separate queues for autonomous messages Statistics to help in diagnosing issues
MEFrame - ME Message Creation An Python base-class that wraps message attributes and provides methods for generating proper ME actions (create, delete, get, set, ) Basic Requirements: Extensive checking of input parameters to validate data is correct during frame generation Flexible method to supply ME attributes to ME Frame initializer A majority of MEs can be coded in two lines or less
ONU MIB Synchronizer Responsible for synchronizing the ONU Device Adapters MIB with that of the ONU Hardware Performs ONT Bring up (MIB Reset, MIB upload, and MIB Download) Monitors/sinks AVC notifications from the ONU Maintains ONU Device Adapter MIB synchronization/resynchronization with that of the ONU Hardware
ONU Alarm Synchronizer The ONU Alarm Synchronizer is responsible for monitoring the alarm status of the ONU hardware Monitor/sinks Alarm notifications from the ONU Performs alarm audit and resynchronization as needed with the ONU
V1.3 OpenOMCI Framework Vendor ONU Device Adapter Vendor OLT DA OMCI Tasks Task Runner I-Adapter MEFrame OMCIFrame OMCI-CC OLT H/W ME Database ONU H/W EntityClass