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

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.

- 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
   release/1.0.0

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

   readme
