SD-Core 1.0 Release
===================

SD-Core support 4G & 5G network functions. SD-Core gives configuration APIs, metrics APIs.
Access network can connected to AMF or MME depending on type of access used.

Highlights
----------

    - REST configuration interface support

        - Network Slices can be added, deleted, modified using REST interface
        - ``Refer Configuration Guide for more details``

    - SIMapp support for subscriber management

        - created to add subscriber contents in webui/config4g pod
        - Simapp also supports addition of network slice, device group in the SD-Core (5G/4G)
        - Simapp can update the configuration during runtime (add, delete, modify config)
        - Support of API to send the Network Slice & Device Group slice when configPod asks for it

    - 5G Specific Features

        - 3gpp Supported & Validated Procedures are,

            - UE Registration/De-registration
            - UE PDU Establishment/modification/Deletion
            - More details about 3gpp compliance can be found at (see :ref:`4g-compliance`)
              and (see :ref:`5g-compliance`)

        - Multiple PLMN support. Sending multiple PLMNs in NRF registration
        - Error handling on all interfaces. This includes message retransmission,
            rejected response handling, no response handling

    - 4G specific features
        - APN based Selection of User Plane Network function.
        - CUPS compliant control plane

    - Metrics

        - Subscriber metrics
        - eNB/gNB metrics

    - Scale Support

        - 4G - 16K calls at the rate of 100 calls have been tried
        - Handover rate of 50 handovers per second is supported by SD-Core
        - 5G - 5000 Calls at the rate of 10 calls per second

    - Operations Feature

        - UE/IMSI can be added while SD-Core is running
        - Network slice can be created in runtime
        - UE/IMSI can be removed from the slice at any time

    - Application Filtering

        - When multiple slices are created then devices in the slice can
          have access to only specified networks. More details of the application
          filtering can be found at - `TODO </overview/3gpp-compliance-4g>`

New Features and Improvements
-----------------------------

Testing
-------

    - CI Run for all SD-Core repository
    - Common Repository like simapp, config pod changes trigger CI for 4G/5G

Documentation
-------------

SD-Core documentation is available at `docs.sd-core.opennetworking.org
<https://docs.sd-core.opennetworking.org>`_


Known Issues and Limitations
----------------------------

    - For any 3gpp release compliance refer - (see :ref:`4g-compliance`) and (see :ref:`5g-compliance`)
    - Same IMSI can not part of multiple slices
    - Only 5 application filtering rules can be added per Slice

Component Versions in the 1.0 Release
-------------------------------------

Helm Chart Versions and their component charts and containers:

* sdcore-helm-chart: ``0.9.14``
    * omec-control-plane: ``0.9.13``
        * hssdb: ``registry.aetherproject.org/proxy/omecproject/c3po-hssdb:master-771c0c3``
        * hss  : ``registry.aetherproject.org/proxy/omecproject/c3po-hss:master-771c0c3``
        * pcrf  : ``registry.aetherproject.org/proxy/omecproject/c3po-pcrf:pcrf-a6bdc3d``
        * pcrfdb  : ``registry.aetherproject.org/proxy/omecproject/c3po-pcrf:pcrf-a6bdc3d``
        * config4g  : ``registry.aetherproject.org/omecproject/5gc-webui:onf-release3.0.5-03d4139``
        * spgwc  : ``registry.aetherproject.org/omecproject/spgw:master-282dc78``
        * mme  : ``registry.aetherproject.org/proxy/omecproject/nucleus:master-1225da6``
    * omec-sub-provision: ``0.3.2``
        * simapp: ``registry.aetherproject.org/omecproject/simapp:main-329c82d``
    * 5g-control-plane: ``0.5.5``
        * amf: ``registry.aetherproject.org/omecproject/5gc-amf:onf-release3.0.5-9683d5c``
        * smf: ``registry.aetherproject.org/omecproject/5gc-smf:onf-release3.0.5-46dfe2d``
        * nrf: ``registry.aetherproject.org/omecproject/5gc-nrf:onf-release3.0.5-13304e8``
        * nssf: ``registry.aetherproject.org/omecproject/5gc-nssf:onf-release3.0.5-aa3a60b``
        * pcf: ``registry.aetherproject.org/omecproject/5gc-pcf:onf-release3.0.5-9f7734b``
        * udm: ``registry.aetherproject.org/omecproject/5gc-udm:onf-release3.0.5-c28433a``
        * udr: ``registry.aetherproject.org/omecproject/5gc-udr:onf-release3.0.5-deef506``
        * ausf: ``registry.aetherproject.org/omecproject/5gc-ausf:onf-release3.0.5-be7d4ac``
