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