SD-Fabric 1.0.0
===============

This is the first release of SD-Fabric.

SD-Fabric is an open source, full stack, deeply programmable network fabric optimized for edge cloud,
5G, and Industry 4.0 applications.
It builds on SDN and cloud native principles to create a disruptive platform that for the first time
empowers the network with modern cloud development principles.

- **Right-sized Topology**: Scale from a single Top-of-Rack (ToR) switch, to an
  Highly-Available (HA) setup with paired ToRs, to a full leaf-spine fabric
  for multi-rack deployments.
- **API Driven**: Well-defined APIs provide the ability to drop or reroute traffic,
  create slices with configurable QoS, obtain telemetry, and more.
- **Cloud Managed**: Fully integrated and configured by Aether™ Management Platform.
- **5G as a Workload**: Reduce CPU load and increase performance by terminating GTP-U tunnels
  directly in the fabric switches, with QoS and slicing support.
- **End-to-End Visibility**: With Inband Network Telemetry (INT) on switches and end hosts,
  enabling closed loop control applications.

Feature Highlights
-------------------
- **Fabric connectivity**

  - Support single switch, paired-leaves with dual-homing, and leaf-spine topology
  - Bridging, IPv4 routing, ECMP, DHCP relay
  - Redundancy on both control and data plane

- :ref:`Switch-based P4-UPF <p4_upf>`

  - 4G/5G UPF implemented with P4 programmable switches
  - Support downlink buffering for UE idle-mode and handover via microservice
  - Integration with PFCP standard interface

- :ref:`Slicing and QoS <slicing_qos>`

  - Data plane support for fabric-wide slicing and QoS using dedicated hardware queues
  - Control plane integration with SD-Core for UPF QoS with single slice (multiple slices in the next release)
  - REST APIs for classification of non-mobile traffic

- :ref:`Inband Network Telemetry (INT) <int>`

  - INT-XD mode compliant with Telemetry Report Specification v0.5
  - Integrated with Intel DeepInsight
  - Switch INT

    - Support for flow, drop, and queue congestion reports
    - Watchlist and smart filters to reduce the volume of reports
    - Integration with P4-UPF

  - Host INT

    - Experimental implementation based on eBPF
    - Kubernetes CNI-independent, tested with Cilium and Calico
    - Support for flow and drop reports

- **API**

  - Drop traffic
  - Pin traffic to specific spine (in a leaf-spine setup)
  - Slicing and QoS for non-mobile traffic

- **Scalability**

  - 5K UEs, 10 calls per second with 1 CPU core and 4G RAM per ONOS instance


Deployment
----------
- Support Kubernetes deployments with Helm charts
- Logging integration via EFK
- Monitoring integration via Prometheus/Grafana
- Alarm integration via Kibana


Testing
-------
- **Data plane tests**

  - Unary tests based on PTF framework (running pre-merge on Tofino model)
  - Line rate test based on PTF framework and TRex traffic generator for INT and QoS features
    (running nightly on hardware switch)

- **Control plane tests**

  - UP4 integration with PFCP Agent based on ONOS STC framework for 2x2 and paired-leaves topologies
    (running pre-merge)

- **System tests**

  - Based on TestON framework
  - Running nightly on paired-leaves and 2x2 topology with 3 ONOS instances
  - Features covered:

      - Bridging
      - Paired-leaves
      - UP4
      - INT with DeepInsight integration
      - QoS (both mobile and non-mobile traffic)

  - Jenkins dashboard showing nightly results

Known Issues and Limitations
----------------------------
- `SDFAB-653 <https://jira.opennetworking.org/browse/SDFAB-653>`_

   ArpHandler is unable to handle ARP requests for device loopback address
- `SDFAB-655 <https://jira.opennetworking.org/browse/SDFAB-655>`_

   UP4 reconciliation cycle can leave switch flow state inconsistent causing UE
   data traffic to be dropped. Requires to detach and re-attach UEs.
- Host INT features assumes the fabric interface on each K8s worker node uses the same name

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

SD-Fabric ONOS image
^^^^^^^^^^^^^^^^^^^^
- `tost <https://registry.aetherproject.org/harbor/projects/4/repositories/tost>`_: ``registry.aetherproject.org/tost/tost:1.0.0``

Sub-component versions:

- `onos <https://github.com/opennetworkinglab/onos>`_: ``2.5.5-rc1``
- `trellis-control <https://github.com/opennetworkinglab/trellis-control>`_: ``3.1.0``
- `trellis-t3 <https://github.com/opennetworkinglab/trellis-t3>`_: ``4.0.0``
- `fabric-tna <https://github.com/stratum/fabric-tna>`_: ``1.0.0``
- `up4 <https://github.com/omec-project/up4>`_: ``1.0.0``

Stratum image
^^^^^^^^^^^^^
- `stratum-bfrt <https://hub.docker.com/r/stratumproject/stratum-bfrt>`_: ``stratumproject/stratum-bfrt:21.10-9.5.0``

DBUF image
^^^^^^^^^^
- `dbuf <https://github.com/omec-project/dbuf>`_: ``registry.aetherproject.org/tost/dbuf:1.0.0``

PFCP Agent image
^^^^^^^^^^^^^^^^
- `pfcp-agent <https://github.com/omec-project/upf-epc/tree/master/pfcpiface>`_: ``omecproject/upf-epc-pfcpiface:master-fcdbc95``

Helm Chart Versions
-------------------
- `sdfabric <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/sdfabric>`_: ``1.0.6``

  - `onos-classic chart <https://github.com/onosproject/onos-helm-charts/tree/master/onos-classic>`_: ``0.1.24``
  - `stratum chart <https://github.com/stratum/stratum-helm-charts/tree/master/stratum>`_: ``0.1.13``
  - `pfcp-agent chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/pfcp-agent>`_: ``0.0.1``
  - `dbuf chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/dbuf/>`_: ``0.0.1``
  - `int-host-reporter chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/int-host-reporter>`_: ``0.0.1``
