Upgrade to Pro — share decks privately, control downloads, hide ads and more …

xDS Overview

xDS Overview

The Linux configuration landscape is very fragmented. What can we learn from the success of Envoy's xDS?

Steven Borrelli

September 24, 2020

More Decks by Steven Borrelli

Other Decks in Technology


  1. • High-Performance Load Balancer • Feature-rich: L3-L7 proxying, Pluggable filters,

    etc. • Dynamic configuration via API: • “The universal data plane”
  2. Linux is Fragmented Traditional • No standard API • Cloud-init

    is a separate system • Diverse Init Systems (Systemd, OpenRC, custom) • Diverse communication: API vs. Shell • Push vs. Pull configuration • Kubelet has many OS responsibilities •
  3. xDS Overview • “…a simple API that abstracts the data

    plane from the control plane.” — Matt Klein • The data plane is meant to be simple. Opinionated decisions are implemented at the control plane. • This decouples envoy from higher-level orchestration. • Use a generic common bootstrap (file), then can subscribe to any number of control planes. https://blog.envoyproxy.io/the-universal-data-plane-api-d15cec7a
  4. xDS Overview • Typed Interfaces in Protocol Buffers v3 •

    Utilizes gRPC: Bi-directional streaming, etc. Also supports JSON/REST Metadata support • Supports static (file-based) and dynamic (streaming gRPC) configurations • Eventually consistent
  5. xDS Overview Traditional https://blog.christianposta.com/envoy/guidance-for-building-a-control-plane-to-manage-envoy-proxy-based-infrastructure/ Endpoint Discovery Service (EDS) Cluster Discovery

    Service (CDS) Route Discovery Service (RDS) Listener Discovery Service (LDS) Health Discovery Service (HDS) Secret Discovery Service (SDS) Aggregated Discovery Service (ADS)
  6. Transport Features xDS supports delta and complete (State of the

    World) updates, allows multiple subscriptions or connection to an aggregated resource server: • State of the World (Basic xDS): SotW, separate gRPC stream for each resource type (DiscoveryRequest/DiscoveryResponse proto3) • Incremental xDS: incremental, separate gRPC stream for each resource type (DeltaDiscoveryRequest/DeltaDiscoveryResponse proto3) • Aggregated Discovery Service (ADS): SotW, aggregate stream for all resource types • Incremental ADS: incremental, aggregate stream for all resource types
  7. xDS Examples • step-sds (how to craft a raw xDS

    Discovery Response) • Health Discovery Service Protobuf (Distributed Health check) • go-control-plane (How to build an xDS Control Plane)
  8. Summary • xDS is a great example of building out

    a data-plane API • Opportunity for COSI to define core Linux primitives •