.. SPDX-FileCopyrightText: 2021 Open Networking Foundation <info@opennetworking.org>
.. SPDX-License-Identifier: Apache-2.0

SD-Fabric 1.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
------------------

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``

Patches
-------

.. toctree::
   :maxdepth: 2
   :glob:

   1.0.1
   1.0.2
