blob: 49cc66aec8579465724709dbb3d45f4155e3d94f [file] [log] [blame]
Charles Chancaebcf32021-09-20 22:17:52 -07001SD-Fabric 1.0
2=============
Zack Williams98fe2322021-09-20 15:02:11 -07003
Charles Chan8bc160d2021-10-12 21:36:46 -07004This is the first release of SD-Fabric.
5
6SD-Fabric is an open source, full stack, deeply programmable network fabric optimized for edge cloud,
75G, and Industry 4.0 applications.
8It builds on SDN and cloud native principles to create a disruptive platform that for the first time
9empowers 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
22Feature 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
30- **P4-UPF**
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
36- **Network slicing and QoS**
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
42- **Inband Network Telemetry**
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
50 - UPF-specific drop reasons
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
69Deployment
Zack Williams98fe2322021-09-20 15:02:11 -070070----------
Charles Chan8bc160d2021-10-12 21:36:46 -070071- Support Kubernetes deployments with Helm charts
72- Logging integration via EFK
73- Monitoring integration via Prometheus/Grafana
74- Alarm integration via Kibana
Zack Williams98fe2322021-09-20 15:02:11 -070075
76
Charles Chan8bc160d2021-10-12 21:36:46 -070077Testing
78-------
79- **Data plane tests**
Zack Williams98fe2322021-09-20 15:02:11 -070080
Charles Chan8bc160d2021-10-12 21:36:46 -070081 - 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 Williams98fe2322021-09-20 15:02:11 -070084
Charles Chan8bc160d2021-10-12 21:36:46 -070085- **Control plane tests**
Zack Williams98fe2322021-09-20 15:02:11 -070086
Charles Chan8bc160d2021-10-12 21:36:46 -070087 - UP4 integration with PFCP Agent based on ONOS STC framework for 2x2 and paired-leaves topologies
88 (running pre-merge)
Zack Williams98fe2322021-09-20 15:02:11 -070089
Charles Chan8bc160d2021-10-12 21:36:46 -070090- **System tests**
Zack Williams98fe2322021-09-20 15:02:11 -070091
Charles Chan8bc160d2021-10-12 21:36:46 -070092 - Based on TestON framework
93 - Running nightly on paired-leaves and 2x2 topology with 3 ONOS instances
94 - Features covered:
Zack Williams98fe2322021-09-20 15:02:11 -070095
Charles Chan8bc160d2021-10-12 21:36:46 -070096 - 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 Williams98fe2322021-09-20 15:02:11 -0700103
104Known Issues and Limitations
105----------------------------
Charles Chan8bc160d2021-10-12 21:36:46 -0700106- `SDFAB-653 <https://jira.opennetworking.org/browse/SDFAB-653>`_
Zack Williams98fe2322021-09-20 15:02:11 -0700107
Charles Chan8bc160d2021-10-12 21:36:46 -0700108 ArpHandler is unable to handle ARP requests for device loopback address
109- `SDFAB-655 <https://jira.opennetworking.org/browse/SDFAB-655>`_
Zack Williams98fe2322021-09-20 15:02:11 -0700110
Charles Chan8bc160d2021-10-12 21:36:46 -0700111 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 Williams98fe2322021-09-20 15:02:11 -0700114
Charles Chan8bc160d2021-10-12 21:36:46 -0700115Component Versions in the Release
116---------------------------------
117
118SD-Fabric ONOS image
119^^^^^^^^^^^^^^^^^^^^
120- `tost <https://registry.aetherproject.org/harbor/projects/4/repositories/tost>`_: ``registry.aetherproject.org/tost/tost:1.0.0``
121
122 - `onos <https://github.com/opennetworkinglab/onos>`_: ``2.5.5-rc1``
123 - `trellis-control <https://github.com/opennetworkinglab/trellis-control>`_: ``3.1.0``
124 - `trellis-t3 <https://github.com/opennetworkinglab/trellis-t3>`_: ``4.0.0``
125 - `fabric-tna <https://github.com/stratum/fabric-tna>`_: ``1.0.0``
126 - `up4 <https://github.com/omec-project/up4>`_: ``1.0.0``
127
128Stratum image
129^^^^^^^^^^^^^
130- `stratum-bfrt <https://hub.docker.com/r/stratumproject/stratum-bfrt>`_: ``stratumproject/stratum-bfrt:21.10-9.5.0``
131
132DBUF image
133^^^^^^^^^^
134- `dbuf <https://github.com/omec-project/dbuf>`_: ``1.0.0``
135
136PFCP Agent image
137^^^^^^^^^^^^^^^^
138- `pfcp-agent <https://github.com/omec-project/upf-epc/tree/master/pfcpiface>`_: ``fcdbc95`` (haven't done official release yet)
Zack Williams98fe2322021-09-20 15:02:11 -0700139
140Helm Chart Versions
141-------------------
Charles Chan8bc160d2021-10-12 21:36:46 -0700142- `sdfabric <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/sdfabric>`_: ``1.0.5``
143
144 - `onos-classic chart <https://github.com/onosproject/onos-helm-charts/tree/master/onos-classic>`_: ``0.1.24``
145 - `stratum chart <https://github.com/stratum/stratum-helm-charts/tree/master/stratum>`_: ``0.1.13``
146 - `pfcp-agent chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/pfcp-agent>`_: ``0.0.1``
147 - `dbuf chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/dbuf/>`_: ``0.0.1``
148 - `int-host-reporter chart <https://gerrit.opencord.org/plugins/gitiles/sdfabric-helm-charts/+/refs/heads/master/int-host-reporter>`_: ``0.0.1``