Open OMCI Framework Proposal A refactored OMCI Communications












- Slides: 12
Open. OMCI Framework Proposal A refactored OMCI Communications Channel & Frame Generator Voltha Lockdown Meeting January 10 th, 2018 ADTRAN, Inc
Proposed Framework Vendor ONU Device Adapter Tasks LCI Service MIB Sync Alarm Sync Software Download PM Collection Others. . . MEFrame OMCI CC OMCIFrame OMCI Message Entity. Class ME Database OMCI State Machine New Classes Existing VOLTHA v 1. 1 x Classes/Code
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 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 State Machine This is the main interface from an ONU Device Adapter into the Open. OMCI 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, Vo. IP, 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, To. D) 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 Entity. Class 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 Much of this code already exists in the ADTRAN ONU Device Adapter. Still one or two check-ins still needed, but should be complete by 1/17/18
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 Much of this code already exists in the ADTRAN ONU Device Adapter. Still one or two check-ins still needed, but should be complete by 1/17/18
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
Misc. ● Existing Entity. Class work: ○ ○ Validate the current settings Add additional Entities that are needed to cover the initial use cases Property to allow access to some of the settings such as attribute names. Useful for error checking Add additional attributes (from the ITU and AT&T Open. OMCI spec) that may help some tasks easier to implement or provide for better error checking (max/min values, whether or not it can be reported in an AVC notification, …) ● Existing OMCFrame work: ○ ○ Finish coding several of the frames (notably ones that my have tables) Add any additional ones required to cover initial use cases
Original Picture from TST 1/4/18 Vendor ONU Device Adapter Future Open. OMCI Classes ONU State Machine Alarm Synchronizer OMCI_CC MIB Synchronizer Existing VOLTHA Classes MEFrame OMCIFrame Adapter. Agent (Proxy Rx/Tx methods) OMCI Message Proposed Classes Entity. Class