Charles Chan | fcfe890 | 2022-02-02 17:06:27 -0800 | [diff] [blame] | 1 | .. SPDX-FileCopyrightText: 2021 Open Networking Foundation <info@opennetworking.org> |
| 2 | .. SPDX-License-Identifier: Apache-2.0 |
| 3 | |
Charles Chan | c9531d4 | 2022-03-08 17:44:08 -0800 | [diff] [blame] | 4 | SD-Fabric 1.0 |
| 5 | ============= |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 6 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 7 | This is the first release of SD-Fabric. |
| 8 | |
| 9 | SD-Fabric is an open source, full stack, deeply programmable network fabric optimized for edge cloud, |
| 10 | 5G, and Industry 4.0 applications. |
| 11 | It builds on SDN and cloud native principles to create a disruptive platform that for the first time |
| 12 | empowers the network with modern cloud development principles. |
| 13 | |
| 14 | - **Right-sized Topology**: Scale from a single Top-of-Rack (ToR) switch, to an |
| 15 | Highly-Available (HA) setup with paired ToRs, to a full leaf-spine fabric |
| 16 | for multi-rack deployments. |
| 17 | - **API Driven**: Well-defined APIs provide the ability to drop or reroute traffic, |
| 18 | create slices with configurable QoS, obtain telemetry, and more. |
| 19 | - **Cloud Managed**: Fully integrated and configured by Aether™ Management Platform. |
| 20 | - **5G as a Workload**: Reduce CPU load and increase performance by terminating GTP-U tunnels |
| 21 | directly in the fabric switches, with QoS and slicing support. |
| 22 | - **End-to-End Visibility**: With Inband Network Telemetry (INT) on switches and end hosts, |
| 23 | enabling closed loop control applications. |
| 24 | |
| 25 | Feature Highlights |
| 26 | ------------------- |
| 27 | - **Fabric connectivity** |
| 28 | |
| 29 | - Support single switch, paired-leaves with dual-homing, and leaf-spine topology |
| 30 | - Bridging, IPv4 routing, ECMP, DHCP relay |
| 31 | - Redundancy on both control and data plane |
| 32 | |
Carmelo Cascone | 7623e7c | 2021-10-13 17:45:27 -0700 | [diff] [blame] | 33 | - :ref:`Switch-based P4-UPF <p4_upf>` |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 34 | |
| 35 | - 4G/5G UPF implemented with P4 programmable switches |
| 36 | - Support downlink buffering for UE idle-mode and handover via microservice |
| 37 | - Integration with PFCP standard interface |
| 38 | |
Carmelo Cascone | 7623e7c | 2021-10-13 17:45:27 -0700 | [diff] [blame] | 39 | - :ref:`Slicing and QoS <slicing_qos>` |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 40 | |
| 41 | - Data plane support for fabric-wide slicing and QoS using dedicated hardware queues |
| 42 | - Control plane integration with SD-Core for UPF QoS with single slice (multiple slices in the next release) |
| 43 | - REST APIs for classification of non-mobile traffic |
| 44 | |
Carmelo Cascone | 7623e7c | 2021-10-13 17:45:27 -0700 | [diff] [blame] | 45 | - :ref:`Inband Network Telemetry (INT) <int>` |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 46 | |
| 47 | - INT-XD mode compliant with Telemetry Report Specification v0.5 |
| 48 | - Integrated with Intel DeepInsight |
| 49 | - Switch INT |
| 50 | |
| 51 | - Support for flow, drop, and queue congestion reports |
| 52 | - Watchlist and smart filters to reduce the volume of reports |
Carmelo Cascone | 7623e7c | 2021-10-13 17:45:27 -0700 | [diff] [blame] | 53 | - Integration with P4-UPF |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 54 | |
| 55 | - Host INT |
| 56 | |
| 57 | - Experimental implementation based on eBPF |
| 58 | - Kubernetes CNI-independent, tested with Cilium and Calico |
| 59 | - Support for flow and drop reports |
| 60 | |
| 61 | - **API** |
| 62 | |
| 63 | - Drop traffic |
| 64 | - Pin traffic to specific spine (in a leaf-spine setup) |
| 65 | - Slicing and QoS for non-mobile traffic |
| 66 | |
| 67 | - **Scalability** |
| 68 | |
| 69 | - 5K UEs, 10 calls per second with 1 CPU core and 4G RAM per ONOS instance |
| 70 | |
| 71 | |
| 72 | Deployment |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 73 | ---------- |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 74 | - Support Kubernetes deployments with Helm charts |
| 75 | - Logging integration via EFK |
| 76 | - Monitoring integration via Prometheus/Grafana |
| 77 | - Alarm integration via Kibana |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 78 | |
| 79 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 80 | Testing |
| 81 | ------- |
| 82 | - **Data plane tests** |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 83 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 84 | - Unary tests based on PTF framework (running pre-merge on Tofino model) |
| 85 | - Line rate test based on PTF framework and TRex traffic generator for INT and QoS features |
| 86 | (running nightly on hardware switch) |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 87 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 88 | - **Control plane tests** |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 89 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 90 | - UP4 integration with PFCP Agent based on ONOS STC framework for 2x2 and paired-leaves topologies |
| 91 | (running pre-merge) |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 92 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 93 | - **System tests** |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 94 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 95 | - Based on TestON framework |
| 96 | - Running nightly on paired-leaves and 2x2 topology with 3 ONOS instances |
| 97 | - Features covered: |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 98 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 99 | - Bridging |
| 100 | - Paired-leaves |
| 101 | - UP4 |
| 102 | - INT with DeepInsight integration |
| 103 | - QoS (both mobile and non-mobile traffic) |
| 104 | |
| 105 | - Jenkins dashboard showing nightly results |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 106 | |
| 107 | Known Issues and Limitations |
| 108 | ---------------------------- |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 109 | - `SDFAB-653 <https://jira.opennetworking.org/browse/SDFAB-653>`_ |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 110 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 111 | ArpHandler is unable to handle ARP requests for device loopback address |
| 112 | - `SDFAB-655 <https://jira.opennetworking.org/browse/SDFAB-655>`_ |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 113 | |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 114 | UP4 reconciliation cycle can leave switch flow state inconsistent causing UE |
| 115 | data traffic to be dropped. Requires to detach and re-attach UEs. |
| 116 | - Host INT features assumes the fabric interface on each K8s worker node uses the same name |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 117 | |
Charles Chan | c9531d4 | 2022-03-08 17:44:08 -0800 | [diff] [blame] | 118 | Component versions |
| 119 | ------------------ |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 120 | |
| 121 | SD-Fabric ONOS image |
| 122 | ^^^^^^^^^^^^^^^^^^^^ |
| 123 | - `tost <https://registry.aetherproject.org/harbor/projects/4/repositories/tost>`_: ``registry.aetherproject.org/tost/tost:1.0.0`` |
| 124 | |
Carmelo Cascone | 7623e7c | 2021-10-13 17:45:27 -0700 | [diff] [blame] | 125 | Sub-component versions: |
| 126 | |
| 127 | - `onos <https://github.com/opennetworkinglab/onos>`_: ``2.5.5-rc1`` |
| 128 | - `trellis-control <https://github.com/opennetworkinglab/trellis-control>`_: ``3.1.0`` |
| 129 | - `trellis-t3 <https://github.com/opennetworkinglab/trellis-t3>`_: ``4.0.0`` |
| 130 | - `fabric-tna <https://github.com/stratum/fabric-tna>`_: ``1.0.0`` |
| 131 | - `up4 <https://github.com/omec-project/up4>`_: ``1.0.0`` |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 132 | |
| 133 | Stratum image |
| 134 | ^^^^^^^^^^^^^ |
| 135 | - `stratum-bfrt <https://hub.docker.com/r/stratumproject/stratum-bfrt>`_: ``stratumproject/stratum-bfrt:21.10-9.5.0`` |
| 136 | |
| 137 | DBUF image |
| 138 | ^^^^^^^^^^ |
Carmelo Cascone | 7623e7c | 2021-10-13 17:45:27 -0700 | [diff] [blame] | 139 | - `dbuf <https://github.com/omec-project/dbuf>`_: ``registry.aetherproject.org/tost/dbuf:1.0.0`` |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 140 | |
| 141 | PFCP Agent image |
| 142 | ^^^^^^^^^^^^^^^^ |
Carmelo Cascone | 7623e7c | 2021-10-13 17:45:27 -0700 | [diff] [blame] | 143 | - `pfcp-agent <https://github.com/omec-project/upf-epc/tree/master/pfcpiface>`_: ``omecproject/upf-epc-pfcpiface:master-fcdbc95`` |
Zack Williams | 98fe232 | 2021-09-20 15:02:11 -0700 | [diff] [blame] | 144 | |
| 145 | Helm Chart Versions |
| 146 | ------------------- |
Carmelo Cascone | 7623e7c | 2021-10-13 17:45:27 -0700 | [diff] [blame] | 147 | - `sdfabric <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/sdfabric>`_: ``1.0.6`` |
Charles Chan | 8bc160d | 2021-10-12 21:36:46 -0700 | [diff] [blame] | 148 | |
| 149 | - `onos-classic chart <https://github.com/onosproject/onos-helm-charts/tree/master/onos-classic>`_: ``0.1.24`` |
| 150 | - `stratum chart <https://github.com/stratum/stratum-helm-charts/tree/master/stratum>`_: ``0.1.13`` |
| 151 | - `pfcp-agent chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/pfcp-agent>`_: ``0.0.1`` |
| 152 | - `dbuf chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/dbuf/>`_: ``0.0.1`` |
| 153 | - `int-host-reporter chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/int-host-reporter>`_: ``0.0.1`` |
Charles Chan | c9531d4 | 2022-03-08 17:44:08 -0800 | [diff] [blame] | 154 | |
| 155 | Patches |
| 156 | ------- |
| 157 | |
| 158 | .. toctree:: |
| 159 | :maxdepth: 2 |
| 160 | :glob: |
| 161 | |
| 162 | 1.0.1 |
| 163 | 1.0.2 |