blob: 8146a5f1267f3a2a76ab5bc776948978445a7a9a [file] [log] [blame]
.. 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