technical debt: an anycast story - ripe 77 › wp-content › uploads › ... · saltstack 16....
TRANSCRIPT
![Page 1: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/1.jpg)
Technical Debt: An Anycast Story
Tom StrickxCloudflare, London
RIPE 77Amsterdam
![Page 2: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/2.jpg)
Tom Strickx● Network Hooligan at Cloudflare (Network Software Engineer)● Contributor at NAPALM Automation and Saltstack● https://tom.strickx.com
Ichabond
@tstrickx2
![Page 3: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/3.jpg)
● How big?○ 7+ million zones/domains○ 100+ billion DNS queries/day
■ Largest■ Fastest■ 35% of the Internet queries■ Now also a resolver (1.1.1.1)
○ 10% of the web requests
● 150+ anycast locations globally○ 74 countries (and growing)○ Many hundreds of network devices
Cloudflare
3
![Page 4: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/4.jpg)
● Anycast introduction● Our technical debt● Configuration changes using Saltstack● Change monitoring
Agenda
4
![Page 5: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/5.jpg)
5
![Page 6: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/6.jpg)
Our Anycast Network
● ± 250 IPv4 prefixes
● ± 15 IPv6 prefixes
● Announced globally (150+ locations)
6
![Page 7: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/7.jpg)
7
![Page 8: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/8.jpg)
Technical Debt
8
![Page 9: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/9.jpg)
Technical Debt
● Few Tier 1 transit providers
● Prepends to steer traffic to proper location (± 10 PoPs)
● Eventually normalized globally
History
9
![Page 10: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/10.jpg)
Technical DebtIssues
10
![Page 11: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/11.jpg)
Technical Debt
● Authoritative DNS targeted (eg. 173.245.58.0/24)
● Single location attracts all traffic due to missing prepends
Incidents
11
![Page 12: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/12.jpg)
Technical Debt
● RPKI
● Shorter AS-path
● /24 everything
Solutions
12
![Page 13: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/13.jpg)
Technical Debt
● Staggered deployment (6 stages)
● As quickly as possible globally
● Extensive internal and external monitoring
Resolution
13
![Page 14: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/14.jpg)
Technical DebtChange
14
![Page 15: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/15.jpg)
Global Rollout
15
![Page 16: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/16.jpg)
Global Rollout
● Automation and orchestration
● Open source
● Python, Jinja2 & YAML
● Highly scalable
● Very fast
● Vendor neutral
● Across our fleet: servers and network equipment
Saltstack
16
![Page 17: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/17.jpg)
Global Rollout
● Make sure we know what we’re changing
● Adjust configuration if needed
● Add confidence
Prechecks
17
![Page 18: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/18.jpg)
Global RolloutActual Change
18
● All in Python (config generation)
● Both Junos and EOS
● Concurrently
● Done globally within
± 2 minutes
![Page 19: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/19.jpg)
Global Rollout
● Internal metrics
● External metrics
Metrics
19
![Page 20: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/20.jpg)
Global Rollout
● Stored in Clickhouse or Prometheus
● Visualized with Grafana
● Flows
● SNMP data
● Request data
Internal metrics
20
![Page 21: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/21.jpg)
Global Rollout
● Developed at Yandex
● Column-oriented DBMS
● Open source
● 3 PB on disk
● 100 Gbps insertion
Clickhouse
21
![Page 22: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/22.jpg)
Global Rollout
● Stores flow data
● Stores request data
Clickhouse
22
Clickhouse query
Result
![Page 23: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/23.jpg)
Global Rollout
● Time-series database
● Monitoring platform
● Open source
Prometheus
23
![Page 24: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/24.jpg)
Global Rollout
● Prepend length
● PromQL
Prometheus
24
Begin rollout Rollout complete
All external looking-glasses
![Page 25: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/25.jpg)
Global Rollout
● Analytics
● Time-series visualization
● Multitude of plugins
● Open source
Grafana
25
![Page 26: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/26.jpg)
Internal Metrics
● RPS / colo
● Traffic shift during change
● Real-time information
26
Global Rollout
![Page 27: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/27.jpg)
Global Rollout
● Stored in Prometheus or raw ingestion
● Visualized with Grafana
● RIPE Atlas
● Looking glasses
External metrics
27
![Page 28: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/28.jpg)
Global Rollout
● Global probes
● Ping, Traceroute, DNS query
● REST API
● Determine routing before and after change
RIPE Atlas
28
![Page 29: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/29.jpg)
Global Rollout
● Routeviews
● AS57335 (http://dfz.watch/) looking glasses (Thanks Aaron!)
● IX looking glasses (We need more! With APIs!)
● Collect / scrape into Prometheus
● Visualize with Grafana
Looking Glasses
29
![Page 30: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/30.jpg)
Global Rollout
● Scrape metrics
● BeautifulSoup for scraping
● Aggregate data
Looking Glasses
30
![Page 31: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/31.jpg)
Global Rollout
● Insert into Prometheus
● python_client
Looking Glasses
31
![Page 32: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/32.jpg)
Global RolloutLooking Glasses
32
● Grafana visualization
● Track change in
near-real-time
![Page 33: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/33.jpg)
Global RolloutCombined
33
● Traffic
● Prepends
Perturbance
Delay
![Page 34: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/34.jpg)
Global RolloutTakeaways
34
![Page 35: Technical Debt: An Anycast Story - RIPE 77 › wp-content › uploads › ... · Saltstack 16. Global Rollout Make sure we know what we’re changing Adjust configuration if needed](https://reader033.vdocuments.site/reader033/viewer/2022053016/5f19d9e654cfc71487374e82/html5/thumbnails/35.jpg)
Global Rollout
● Negligible customer impact
● Route fluctuations for ± 2 minutes
● Took 1 hour to complete change, 2 days to prepare
● Instantly detected and resolved minor issues
● Heavily reliant on open source tooling and community
Takeaways
35