March 2, 2020

331 words 2 mins read

An Architecture of Highly Available Services using Anycast and Segment Routing in IPv6

An Architecture of Highly Available Services using Anycast and Segment Routing in IPv6

IPv6 anycast is increasingly being used to provide geoproximity, fault-tolerance and load balancing solutions for services that are available from multiple points …

Talk Title An Architecture of Highly Available Services using Anycast and Segment Routing in IPv6
Speakers Andrew Wang
Conference NANOG77
Conf Tag
Location Austin, TX
Date Oct 28 2019 - Oct 30 2019
URL Talk Page
Slides Talk Slides
Video Talk Video

IPv6 anycast is increasingly being used to provide geoproximity, fault-tolerance and load balancing solutions for services that are available from multiple points in the network. Anycast is a technique that can be used to direct clients to the closest server that can respond to the request, often reducing latency and improving the client experience. The major challenge in such systems is handling TCP connections during outages, as nodes go down and eventually come back up. We present an architecture that leverages Segment Routing in IPv6 (SRv6) to ensure fast failover in the presence of server outage. i.e., requests are redirected to a remote server, but keep ongoing TCP connections to remote servers intact in the presence of local recovery, all this transparently to the client making the request. In this presentation we cover basic concepts of IPv6 anycast and Segment Routing. We show how anycast can be achieved in IPv6 using BGP and the challenges it presents for a TCP connection. Then we will go over SRv6, introduce its main principles, and show how it can be leveraged to support stable TCP connections for services that are anycast from multiple points in the network. A short demonstration running in Containernet (mininet based network emulator that supports docker images) will tie all the concepts together: GoBGP for route advertisement, Netbricks (framework for developing DPDK apps) for SRv6 packet handling and Consul for service healthcheck. We will show a client making a request which will be served by a local cluster, and how the request will be fulfilled by a remote server when the local server is unavailable.

comments powered by Disqus