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

.. image:: images/overview-logo.png
   :width: 400px
   :align: center

Overview
========

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.

- SD-Fabric is a **natively disaggregated solution using bare metal switches with merchant silicon ASICs**.
  Instead of using OEM networking hardware, SD-Fabric uses hardware directly from ODMs.
  The trend of using bare metal (white box) switches is unmistakable in the networking industry today,
  spurred by the massive bandwidth density and growing sophistication of merchant silicon ASICs.

- SD-Fabric is **based on SDN principles using P4-enabled programmable data planes**
  (such as the Intel® Tofino® ASICs).
  P4 allows for the introduction of new features that cannot be found in traditional fabrics built on
  fixed-function ASICs.
  For example, SD-Fabric provides a high performance 4G/5G mobile core User Plane Function (UPF) integrated
  with SD-Core™ project.
  And by externalizing the network's control, management functions, and policy decisions in the ONOS™ SDN controller,
  SD-Fabric provides network operators with a number of SDN benefits
  when compared to a traditional embedded network control like BGP, such as enhanced customizability,
  centralized configuration, automation, and simplified operations and troubleshooting.
  As a result, SD-Fabric is truly software defined in both the control and data planes.

- SD-Fabric is **optimized for application developers**,
  exposing APIs to enable developers to get better visibility and control while enabling custom P4 forwarding logic
  to be ‘pushed’ down into the network.
  SD-Fabric can further be deployed in a SaaS model,
  with centralized operations and control running from the public cloud which in turn is running distributed
  multiple edge clouds - all as one unified solution.

- SD-Fabric delivers **superior resilience and security compared to legacy approaches**.
  The programmability of SD-Fabric has enabled the implementation of fine-grained measurement
  (via In-band Network Telemetry (INT)), network verification, and closed loop control (see https://prontoproject.org/).
  Furthermore, as open source,
  SD-Fabric is further secured through the benefit of open inspection by a broader community.

- SD-Fabric can be **deployed as-a-Service from the public cloud**. When deployed as-a-Service,
  SD-Fabric provides a full stack implementation designed to run on white box switches at the network edge,
  with centralized CI/CD and operations running from the public cloud controlling multiple edges.


Highlights
==========

.. image:: images/overview-topo.png
   :width: 500px

- **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.

Get Started
-----------
- Learn more about SD-Fabric

  - `SD-Fabric Website <https://opennetworking.org/sd-fabric/>`_
  - `SD-Fabric Whitepaper <https://opennetworking.org/wp-content/uploads/2021/06/SD-Fabric-White-Paper-FINAL.pdf>`_
  - `SD-Fabric Techinar <https://www.youtube.com/watch?v=-wQB2x7oaqk>`_
  - `SD-Fabric Wiki <https://wiki.opennetworking.org/display/COM/SD-Fabric>`_

- Stay in touch by joining

  - `SD-Fabric developer mailing list <https://groups.google.com/a/opennetworking.org/g/sdfabric-dev>`_
  - \#sdfabric-dev channel in `ONF Community Slack <https://onf-community.slack.com>`_
    (`register <https://onf-community.slack.com/join/shared_invite/zt-g2ed9rid-t9mAGa4Y2RrKfBWbY665tA>`_)

.. toctree::
   :maxdepth: 2
   :caption: Documentation
   :hidden:
   :glob:

   specification
   architecture
   quickstart
   deployment
   configuration
   advanced
   troubleshooting
   development
   testing
   glossary

.. toctree::
   :maxdepth: 2
   :caption: Releases
   :hidden:
   :glob:

   release/process.rst
   release/1*

.. toctree::
   :maxdepth: 2
   :caption: Misc
   :hidden:
   :glob:

   readme
