From 97161421a0596fe4f203113c090da0ea3a0c0ccf Mon Sep 17 00:00:00 2001 From: Cara <99646608+cfisher-scottlogic@users.noreply.github.com> Date: Tue, 26 Mar 2024 11:59:14 +0000 Subject: [PATCH] Initial version of the Load Balancer taxonomy --- services/networking-services.md | 2 + services/networking/loadbalancer/taxonomy.md | 75 ++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 services/networking/loadbalancer/taxonomy.md diff --git a/services/networking-services.md b/services/networking-services.md index 9ed24365..ac8840fe 100644 --- a/services/networking-services.md +++ b/services/networking-services.md @@ -35,6 +35,8 @@ Examples: - **Azure**: Azure Load Balancer - **Google Cloud**: Cloud Load Balancing +Read more about [Load Balancing Taxonomy](networking/loadbalancer/taxonomy.md) + ### Content Delivery Network (CDN) CDN services accelerate the delivery of web content to users by caching static assets such as images, videos, and documents on edge servers located closer to the end-users. CDNs reduce latency, improve performance, and offload origin server traffic. diff --git a/services/networking/loadbalancer/taxonomy.md b/services/networking/loadbalancer/taxonomy.md new file mode 100644 index 00000000..45928051 --- /dev/null +++ b/services/networking/loadbalancer/taxonomy.md @@ -0,0 +1,75 @@ +# Load Balancer Taxonomy + +This _service-level taxonomy_ documents the minimal set of features +that should be present for a service to be considered portable for +use in financial services ecosystems. + +## Taxonomy + +| Taxonomy ID | Feature | Description | +| ----------- | ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| CCC-050303 | Layer 7 Load Balancing - HTTP/1.1 | Provide load balancer operation on the HTTP/1.1 protocol at the Application Layer (Layer 7) of the OSI model. These load balancers will intelligently distribute incoming traffic based on application-level information, such as HTTP headers, cookies, or URLs, to ensure efficient and scalable application delivery. | +| CCC-050303 | Layer 7 Load Balancing - HTTPS/1.1 | Provide load balancer operation on the HTTPS/1.1 protocol at the Application Layer (Layer 7) of the OSI model. These load balancers will intelligently distribute incoming traffic based on application-level information, such as HTTP headers, cookies, or URLs, to ensure efficient and scalable application delivery. | +| CCC-050303 | Layer 7 Load Balancing - HTTP/2 / gRPC | Provide load balancer operation on the HTTP/2 or gRPC protocol at the Application Layer (Layer 7) of the OSI model. These load balancers will intelligently distribute incoming traffic based on application-level information, such as HTTP headers, cookies, or URLs, to ensure efficient and scalable application delivery. | +| CCC-050303 | Layer 7 Load Balancing - HTTP/3 | Provide load balancer operation on the HTTP/3 protocol at the Application Layer (Layer 7) of the OSI model. These load balancers will intelligently distribute incoming traffic based on application-level information, such as HTTP headers, cookies, or URLs, to ensure efficient and scalable application delivery. | +| CCC-050303 | Layer 7 Load Balancing - TCP | Provide load balancer operation on the TCP protocol at the Application Layer (Layer 7) of the OSI model. These load balancers will intelligently distribute incoming traffic based on application-level information, such as HTTP headers, cookies, or URLs, to ensure efficient and scalable application delivery. | +| CCC-050303 | Layer 7 Load Balancing - DNS | Provide load balancer operation on the DNS protocol at the Application Layer (Layer 7) of the OSI model. These load balancers will intelligently distribute incoming traffic based on application-level information, such as HTTP headers, cookies, or URLs, to ensure efficient and scalable application delivery. | +| CCC-050303 | Layer 4 Load Balancing - TCP | Provide load balancer operation on the TCP protocol at the Transport Layer (Layer 4) of the OSI model. These load balancers should efficiently route incoming traffic based on network-level information, such as IP addresses and TCP/UDP ports, ensuring high-throughput and low-latency distribution of traffic to backend servers. | +| CCC-050303 | Layer 4 Load Balancing - SSL | Provide load balancer operation on the SSL protocol at the Transport Layer (Layer 4) of the OSI model. These load balancers should efficiently route incoming traffic based on network-level information, such as IP addresses and TCP/UDP ports, ensuring high-throughput and low-latency distribution of traffic to backend servers. | +| CCC-050303 | Layer 4 Load Balancing - UDP | Provide load balancer operation on the UDP protocol at the Transport Layer (Layer 4) of the OSI model. These load balancers should efficiently route incoming traffic based on network-level information, such as IP addresses and TCP/UDP ports, ensuring high-throughput and low-latency distribution of traffic to backend servers. | +| CCC-050303 | Layer 4 Load Balancing - TLS | Provide load balancer operation on the TLS protocol at the Transport Layer (Layer 4) of the OSI model. These load balancers should efficiently route incoming traffic based on network-level information, such as IP addresses and TCP/UDP ports, ensuring high-throughput and low-latency distribution of traffic to backend servers. | +| CCC-050303 | Layer 3 Load Balancing - IP | Provide load balancer operation on the IP protocol at the Network Layer (Layer 3) of the OSI model. These load balancers will manage traffic at the network level, directing traffic based on IP addresses and routing protocols, to facilitate seamless connectivity and scalability for virtual networks and other networking environments. | +| CCC-050304 | HTTP | Support for the HTTP protocol. | +| CCC-050305 | HTTPS | Support for the HTTPS protocol. | +| CCC-050306 | HTTP/2 | Support for the HTTP/2 protocol. | +| CCC-050307 | gRPC | Support for the gRPC protocol. | +| CCC-050308 | TCP | Support for the TCP protocol. | +| CCC-050309 | SSL/TLS | Support for the SSL/TLS protocol. | +| CCC-050310 | UDP | Support for the UDP protocol. | +| CCC-050311 | ESP | Support for the ESP protocol. | +| CCC-050312 | GRE | Support for the GRE protocol. | +| CCC-050313 | ICMP | Support for the ICMP protocol. | +| CCC-050314 | ICMPv6 | Support for the ICMPv6 protocol. | +| CCC-050315 | Static load balancing | Employ load balancing algorithms that follow fixed rules, independent of the current server state. | +| CCC-050316 | Dynamic load balancing | Employ load balancing algorithms that consider the current state of servers before distributing traffic. These algorithms will determine the best server for each client request based on real-time server conditions. | +| CCC-050317 | Load balancer autoscaling | Ability for the load balancer to dynamically adjust its capacity in response to fluctuations in incoming traffic. | +| CCC-050318 | Target autoscaling | Ability for backend servers or target groups behind the load balancer to dynamically adjust their capacity in response to changes in workload demands. | +| CCC-050319 | Target autohealing | Automatically restart compromised applications by promptly detecting failed instances and recreating them. | +| CCC-050320 | Full start | Load balancer can be configured to allow targets to receive its full share of requests as soon as it's registered. | +| CCC-050321 | Slow start | Load balancer can be configured to allow targets time to warm up before sending them a full share of requests. | +| CCC-050322 | Connection draining (deregistration delay) | Ability to gracefully terminate active connections to backend instances before they are removed from the load balancer's pool, to allow ongoing requests to complete successfully without disruption. | +| CCC-050323 | Flow termination / Proxy behaviour | Proxy incoming requests to the selected backend server or servers, establishing a new connection to the backend server and forwarding the request while ensuring the integrity of the original request is maintained. | +| CCC-050324 | URL redirects | Redirect incoming traffic to a different URL or location. | +| CCC-050325 | URL rewrites | Rewrite URL paths before forwarding them to backend services. | +| CCC-050326 | Configurable timeouts | Configure timeout settings related to the handling of connections and requests by the load balancer. These settings may include idle connection timeouts, request processing timeouts, and health check timeouts | +| CCC-050327 | Custom error responses / fixed response | Users have the capability to configure specific HTTP responses to be returned by the load balancer under defined conditions. | +| CCC-050328 | Outlier detection | Configure the criteria for eviction of unhealthy backends, along with criteria defining when a backend or endpoint is considered healthy enough to receive traffic again. | +| CCC-050329 | Request and response header transformations | Can modify HTTP headers in both incoming requests and outgoing responses. | +| CCC-050330 | Retries | Configure the conditions under which the load balancer retries failed requests, how long to wait before retrying, and the maximum number of retries permitted. | +| CCC-050331 | URL based routing | Direct incoming requests to different backend resources based on the content of the request URL. | +| CCC-050332 | HTTP header based routing | Direct incoming requests to different backend resources based on the values of HTTP headers. | +| CCC-050333 | Traffic mirroring | Can duplicate incoming network traffic and send it to a secondary destination for monitoring, analysis, or testing purposes. | +| CCC-050334 | Traffic splitting / weighted routing | Can distribute incoming traffic across multiple backend resources based on predefined weights or percentages. (e.g. for canary deployments, A/B testing, blue-green deployments, or gradual traffic migrations) | +| CCC-050335 | Outpost support | Ability to extend cloud-provisioned load balancing services to on-premises or edge locations using dedicated hardware or software appliances (outposts). | +| CCC-050336 | Same virtual network | Can be configured to operate within the same virtual network as the backend instances they are balancing traffic to. | +| CCC-050337 | Multiple virtual networks | Can be configured to handle requests to backend instances in different virtual networks. | +| CCC-050338 | External access | Can configure public-facing endpoints to handle requests originating from the internet or other external networks. | +| CCC-050339 | Session affinity | Can configure subsequent requests from an initial client to be passed to the same target. | +| CCC-050340 | Long-lived TCP connection | Supports connections that remain open for an extended period without teardown and re-establishment. | +| CCC-050341 | Load balancing to multiple ports on the same instance | Can load balance to multiple ports on the same instance to distribute incoming traffic across different services or applications running on the same backend server. | +| CCC-050342 | Preserve source IP address | Can maintain the original source IP address of incoming requests throughout the load balancing process. | +| CCC-050343 | WebSockets | Can handle WebSocket connections. | +| CCC-050344 | Zonal isolation | Operation can be restricted to communicate only between resources deployed within a specific availability zone. | +| CCC-050345 | Regional load balancing | Load balancers can be distributed across multiple zones in the same region. | +| CCC-050346 | Cross-regional load balancing | Load balancers can be distributed across multiple regions. | +| CCC-050347 | Flow stickiness | Allows requests from the same client to be consistently routed to the same backend server during the duration of a session. | +| CCC-050348 | Automatic failover to healthy backends | Detect and redirect traffic away from unhealthy or failed backend servers to healthy ones automatically. | +| CCC-050349 | Configurable standby backends | Configure backend targets that are only routed to if primary targets become unhealthy. | +| CCC-050351 | Target health checks | Can perform health checks on backend instances by sending HTTP, HTTPS, TCP, or SSL requests to specified endpoints and evaluate the responses to determine the health status. | +| CCC-050351 | Load balancer health checks | Can perform health checks on the load balancer by sending HTTP, HTTPS, TCP, or SSL requests to the load balancer endpoint and evaluate the responses to determine the health status. | +| CCC-050352 | Traffic control | Can control inbound and outbound traffic based on source and destination IP addresses, port numbers, and protocols. | +| CCC-050353 | SSL offloading / termination | Can terminate SSL/TLS connections from clients and forwards decrypted traffic to backend servers. | +| CCC-050354 | Auto-provisioned certificates | Can automatically generate, provision, and manage SSL/TLS certificates. | +| CCC-050355 | CORS passthrough | Can relay CORS headers between clients and backend servers without modifying or filtering them. | +| CCC-050356 | Metrics | Provides valuable insights into the performance, health, and behaviour of the load balancing infrastructure. | +| CCC-050357 | Logging | Provides logging to allows administrators to monitor and analyze traffic. |