Charles Chan | caebcf3 | 2021-09-20 22:17:52 -0700 | [diff] [blame] | 1 | Specification |
| 2 | ============= |
| 3 | |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 4 | In the following we provide an exhaustive list of all features supported. |
| 5 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 6 | SDN Features |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 7 | ------------ |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 8 | - ONOS cluster of all-active N instances affording N-way redundancy and scale, where N = 3 or N = 5 |
| 9 | - Unified operations interface (GUI/REST/CLI) |
| 10 | - Centralized configuration: all configuration is done on the controller instead of each individual switch |
| 11 | - Centralized role-based access control (RBAC) |
| 12 | - Automatic host (end-point) discovery: attached hosts, access-devices, appliances (PNFs), routers, etc. |
| 13 | based on ARP, DHCP, NDP, etc. |
| 14 | - Automatic switch, link and topology discovery and maintenance (keepalives, failure recovery) |
Charles Chan | caebcf3 | 2021-09-20 22:17:52 -0700 | [diff] [blame] | 15 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 16 | L2 Features |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 17 | ----------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 18 | Various L2 connectivity and tunneling support |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 19 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 20 | - VLAN-based bridging |
| 21 | |
| 22 | - Access, Trunk and Native VLAN support |
| 23 | - VLAN cross connect |
| 24 | |
| 25 | - Forward traffic based on outer VLAN id |
| 26 | - Forward traffic based on outer and inner VLAN id (QinQ) |
| 27 | - Pseudowire |
| 28 | |
| 29 | - L2 tunneling across the L3 fabric |
| 30 | - Support tunneling based on double tagged and single tagged traffic |
| 31 | |
| 32 | - Support VLAN translation of outer tag |
| 33 | |
| 34 | L3 Features |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 35 | ----------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 36 | IP connectivity |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 37 | |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 38 | - IPv4 and IPv6 [#f1]_ unicast routing (internal use of MPLS Segment Routing) |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 39 | - Subnetting configuration on all non-spine facing leaf ports; no configuration required on any spine port |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 40 | - Equal Cost Multi-Path (ECMP) for traffic across spine switches |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 41 | - IPv6 router advertisement |
| 42 | - ARP, NDP, IGMP handling |
| 43 | - Number of flows in spines greatly simplified by MPLS Segment Routing |
| 44 | - Further reduction of per-leaf flows with route optimization logic |
| 45 | |
| 46 | DHCP Relay |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 47 | ---------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 48 | DHCP L3 relay |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 49 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 50 | - DHCPv4 and DHCPv6 |
| 51 | - DHCP server either directly attached to fabric leaves, or indirectly connected via upstream router |
| 52 | - DHCP client directly either attached to fabric leaves, or indirectly connected via LDRA |
| 53 | - Multiple DHCP servers for HA |
| 54 | |
| 55 | vRouter |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 56 | ------- |
| 57 | vRouter presents the entire SD-Fabric as a single router (or dual-routers for HA), |
| 58 | with disaggregated control/data plane |
| 59 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 60 | - Uses open-source protocol implementations like Quagga (or FRR) |
| 61 | - BGPv4 and BGPv6 |
| 62 | - Static routes |
| 63 | - Route blackholing |
| 64 | - ACLs based on port, L2, L3 and L4 headers |
| 65 | |
| 66 | Multicast |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 67 | --------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 68 | Centralized multicast tree computation, programming and management |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 69 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 70 | - Support both IPv4 and IPv6 multicast |
| 71 | - Dual-homed multicast sinks for HA |
| 72 | - Multiple multicast sources for HA |
| 73 | |
| 74 | API |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 75 | --- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 76 | - Provide easy access for 3rd party edge application developers and for the Aether centralized management platform |
| 77 | - Support for traffic redirecting, dropping, network slicing and QoS |
| 78 | |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 79 | Data Plane Programmability |
| 80 | -------------------------- |
| 81 | - Support for Stratum, P4Runtime/gNMI, and P4 programs |
| 82 | - Innovative services enabled by programmable data plane: |
| 83 | |
| 84 | - 4G/5G User Plane Function (UPF): GTP encap/decap, usage reporting, downlink buffering and data notifications, |
| 85 | QoS and more, with integration with mobile core control plane via PFCP protocol (3GPP standard interface). |
| 86 | - Inband Network Telemetry (INT): INT-XD mode with support for flow reports, drop reports, |
| 87 | queue congestion reports, with smart filters to reduce volume of reports ingested by the INT collector. |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 88 | |
| 89 | Troubleshooting & Diagnostics |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 90 | ----------------------------- |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 91 | - T3: Troubleshooting tool to diagnose broken forwarding paths fabric wide (work in progress) |
| 92 | - ONOS-diags: One-click diagnostics collection tool for issue reporting |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 93 | |
Charles Chan | 10ad144 | 2021-10-05 16:57:26 -0700 | [diff] [blame] | 94 | .. _Topology: |
| 95 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 96 | Topology |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 97 | -------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 98 | SD-Fabric can start at the smallest scale (single leaf) and grow horizontally. |
| 99 | |
Charles Chan | 33528a9 | 2021-10-05 13:28:13 -0700 | [diff] [blame] | 100 | .. image:: images/topology-scale.png |
| 101 | :width: 900px |
| 102 | |
| 103 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 104 | Single Leaf (ToR) |
Charles Chan | 10ad144 | 2021-10-05 16:57:26 -0700 | [diff] [blame] | 105 | ^^^^^^^^^^^^^^^^^ |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 106 | This is the minimum SD-Fabric setup. In this setup, all servers are connected to a single switch. |
| 107 | |
| 108 | .. image:: images/topology-single.png |
Charles Chan | 33528a9 | 2021-10-05 13:28:13 -0700 | [diff] [blame] | 109 | :width: 160px |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 110 | |
Charles Chan | 33528a9 | 2021-10-05 13:28:13 -0700 | [diff] [blame] | 111 | Single Leaf Pair (Dual-Homing) |
Charles Chan | 10ad144 | 2021-10-05 16:57:26 -0700 | [diff] [blame] | 112 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 113 | Compared to a single switch, it provides redundancy in terms of server NIC failure and link failure. |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 114 | |
| 115 | .. image:: images/topology-pair.png |
Charles Chan | 33528a9 | 2021-10-05 13:28:13 -0700 | [diff] [blame] | 116 | :width: 225px |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 117 | |
| 118 | Leaf-Spine (without pairing) |
Charles Chan | 10ad144 | 2021-10-05 16:57:26 -0700 | [diff] [blame] | 119 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 120 | Provide horizontal-scalability for multi-rack deployments, with redundancy for spine switch failures: |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 121 | |
| 122 | .. image:: images/topology-2x2.png |
Charles Chan | 33528a9 | 2021-10-05 13:28:13 -0700 | [diff] [blame] | 123 | :width: 300px |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 124 | |
| 125 | Leaf-Spine (with pairing) |
Charles Chan | 10ad144 | 2021-10-05 16:57:26 -0700 | [diff] [blame] | 126 | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 127 | It supports all the redundancy and scalability features mentioned above. |
| 128 | |
| 129 | .. image:: images/topology-2x4.png |
Charles Chan | 33528a9 | 2021-10-05 13:28:13 -0700 | [diff] [blame] | 130 | :width: 450px |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 131 | |
| 132 | Multi-Stage Leaf-Spine |
Charles Chan | 10ad144 | 2021-10-05 16:57:26 -0700 | [diff] [blame] | 133 | ^^^^^^^^^^^^^^^^^^^^^^ |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 134 | Multi-stage is specifically designed for telco service providers. |
Charles Chan | 33528a9 | 2021-10-05 13:28:13 -0700 | [diff] [blame] | 135 | The first stage can be installed in the central office, while the second stage |
| 136 | can be installed in a field office that is closer to the subscribers. |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 137 | Two stages are typically connected via long distance optical transport. |
| 138 | |
| 139 | .. image:: images/topology-full.png |
Charles Chan | 33528a9 | 2021-10-05 13:28:13 -0700 | [diff] [blame] | 140 | :width: 700px |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 141 | |
| 142 | Resiliency |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 143 | ---------- |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 144 | Provides HA in the following scenarios: |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 145 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 146 | - Controller instance failure (requires 3 or 5 node ONOS cluster) |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 147 | - Leaf-spine link failures |
| 148 | - Spine switch failure |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 149 | |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 150 | Further HA support in following failure scenarios with dual-homing enabled: |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 151 | |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 152 | - Leaf switch failure |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 153 | - Upstream router failure |
| 154 | - Host NIC failure |
| 155 | |
| 156 | Scalability |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 157 | ----------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 158 | In Production |
| 159 | - Up to 80k routes (with route optimization) |
| 160 | - 170k Flows |
| 161 | - 600 direct-attached hosts |
| 162 | - 8 leaf switches |
| 163 | - 2 spine switches |
| 164 | |
| 165 | In Pre-Production |
| 166 | - Up to 120k routes (with route optimization) |
| 167 | - 250k flows |
| 168 | - 600 direct-attached hosts |
| 169 | - 8 leaf switches |
| 170 | - 2 spine switches |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 171 | |
| 172 | 4G/5G specific |
| 173 | - 5000 active UEs, 10 calls per second |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 174 | |
| 175 | Security |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 176 | -------- |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 177 | - TLS-secured gRPC connection between controllers and switches (work-in-progress) |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 178 | |
| 179 | Aether-ready |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 180 | ------------ |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 181 | Fully integrated with Aether (5G/4G private enterprise edge cloud solution) |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 182 | including deployment automation, CI/CD, logging, monitoring, and alerting. |
| 183 | |
| 184 | Overlay Support |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 185 | --------------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 186 | Can be used/integrated with 3rd party overlay networks (e.g., OpenStack Neutron, Kubernetes CNI). |
| 187 | |
| 188 | Orchestrator Support |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 189 | -------------------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 190 | Can be integrated with an external orchestrator, optionally running from the public cloud |
| 191 | Supports logging, telemetry, monitoring and alarm services via |
| 192 | REST APIs and Elastic/Fluentbit/Kibana, Prometheus/Grafana |
| 193 | |
| 194 | Controller Server Specs |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 195 | ----------------------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 196 | Recommendation (per ONOS instance) based on 50K routes |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 197 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 198 | - CPU: 32 Cores |
| 199 | - RAM: 128GB RAM. 64GB dedicated to ONOS JVM heap |
| 200 | |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 201 | Recommendation (per ONOS instance) for 5K UEs when enabling UPF: |
| 202 | |
| 203 | - CPU: 1 Cores |
| 204 | - RAM: 4GB RAM |
| 205 | |
| 206 | |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 207 | White Box Switch Hardware |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 208 | ------------------------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 209 | - Multi-vendor: APS Networks™, Dell™, Delta Networks™, Edgecore Networks™, Inventec™, Netburg™, QCT™ |
| 210 | - Multi-chipset: |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 211 | - Intel Tofino (supports all features, including UPF & INT) |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 212 | - Broadcom Tomahawk®, Tomahawk+®, Trident2 (traditional fabric features only) |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 213 | - 1/10G, 25G, 40G, and 100G ports |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 214 | - Refer to Supported Devices list in https://github.com/stratum/stratum for the most up-to-date hardware list |
| 215 | |
| 216 | White Box Switch Software |
Charles Chan | 7cc9b40 | 2021-10-04 16:14:20 -0700 | [diff] [blame] | 217 | ------------------------- |
Charles Chan | e6bb27a | 2021-10-03 23:26:50 -0700 | [diff] [blame] | 218 | - Open source ONL, ONIE, Docker, Kubernetes |
| 219 | - Stratum available from ONF |
Carmelo Cascone | 4398998 | 2021-10-12 00:01:19 -0700 | [diff] [blame] | 220 | |
| 221 | .. rubric:: Footnotes |
| 222 | |
| 223 | .. [#f1] IPv6 support on the data plane (P4 program) is still work-in-progress. |