Skip to content
This repository was archived by the owner on Apr 9, 2024. It is now read-only.

[Proposal]: Refactoring AMF data structures for Stateless feature improvements #27

Open
ganeshg87 opened this issue Feb 23, 2022 · 0 comments

Comments

@ganeshg87
Copy link

ganeshg87 commented Feb 23, 2022

Proposal: Refactoring AMF data structures for Stateless feature improvements

Elevator Pitch

In the current design, serializing and storing the in-memory data of AMF into the persistent database (redisdb), requires an additional conversion which can be avoided with some re-structuring in the current AMF code. This additional conversion or mapping from serialized persistent data to in-memory data is done both during storage and re-trivial time.

This proposal shares the approach of using a protobuf-based data structure to optimize the performance and restructuring some fields at ue context level for simplifying the existing design making it more robust.

Total Ask

Stateless feature optimization feature on to Magma Architecture will be delivered in roughly 4 Milestones.

Contact Information

Ganesh Gedela ([email protected])

Project Details

As part of the activity following items are being planned :

  • Moving from native C++ maps to protobuf::maps
  • Defining 5G proto buffers as required (in case of smf_context) for structure and getting setter/getter APIs.
  • Keys that are of type struct need to be converted to strings in order to support protobuf::maps (like GUTI to context maps)
  • Replacing existing ue_context, amf_context, and smf_context structures to use structure generated by proto buffer files.
  • To remove the inheritance of task-specific StateManager with common StateManager.
  • Hashtables in ngap code to be converted to protobuf::maps
  • Moving the NGAP code to C++ so that the newly defined structure can be in the required namespace.
  • Amf UeContext Storage Management to faster lookup with different key types.

Task

  • Using protos (new or re-used) and then replacing the existing structures like "struct ue_m5gmm_context_s", "struct amf_context_s" etc to use new strucutres.
  • Adding the changes in all procedures and state machines.
  • Replacing all the ngap hashtables
  • Unit test cases to be updated (stateless and normal)
  • Ngap code to be transitioned to new proto-based definitions and getting them integrated with ASN-generated files.

Statless feature optimization

As part of the optimization, all conversion functions ( to proto format) will be removed as natively the structures are in protobuf format.
All the keys used in lookup need to be stored in string format.

Delivery Approach

The feature will be delivered in 4 milestones. Each milestone will have the following process gates

  1. Design
  2. Development & Unit Testing
  3. code review
  4. System testing
  5. Scale test

Milestone1 - Restructuring of AMF data structures with Proto generated Ue Context Structure

  • Defining the proto buffer definitions.
  • Changing GUTI to string format in Amf.
  • Optimizing the AmfStateManager.
  • Changing the UE, AMF, and SMF Context to proto buffer format. Defining a new class and access functions.
  • Update the GUTI string and other struct-based keys.
  • Unit test case updates and adding of new cases.

Milestone2 - Refactor UE Context Storage Information in AMF

  • Ue context infrastructure to be moved to smart pointers based approach
  • Fields specific to smf_context needs to be re-aligned for faster lookup
  • Lookups for ue_context to be tuned for faster lookup

Milestone3 - Restructuring of NGAP for C++ tranistion

  • NGAP hashtables to Proto Maps conversion
  • Moving the code to C++ infratructure
  • Optimizing NgapStateManager
  • Integrating the ASN files.

Milestone4 - Stateless feature specific changes and verification

  • Clean up all the State Manager conversion code.
  • Changes in stateless infrastructure for storage and retrieval specific code.
  • Integration and scale testing of the feature

Feature Roadmap

The feature will be delivered in 4 Milestones.

Milestone Deliverable Summary
MS1 Restructuring of AMF code with Proto generated UE Context Structure
MS2 Refactor UE Context Storage Information in AMF
MS3 Restructuring of NGAP for C++ transition
MS4 Statless feature specific changes and verification

Refrences

@ganeshg87 ganeshg87 changed the title [Proposal]: Performance tuning for the statless feature in AMF [Proposal]: Performance tuning for the stateless feature in AMF Feb 25, 2022
@ganeshg87 ganeshg87 changed the title [Proposal]: Performance tuning for the stateless feature in AMF [Proposal]: Refactoring AMF data structures for Statless feature improvements Feb 28, 2022
@ganeshg87 ganeshg87 changed the title [Proposal]: Refactoring AMF data structures for Statless feature improvements [Proposal]: Refactoring AMF data structures for Stateless feature improvements Feb 28, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant