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