Компьютерные сети

Архитектура сетей: паттерны

Google управляет сетью из миллиона серверов. Как построить сеть, где любой сервер может общаться с любым на full speed? Ответ - математически оптимальная топология, изобретённая в 1953 году для телефонных станций.

  • **Facebook** использует 4-post Spine-Leaf в каждом здании DC. Один fabric соединяет 100,000 серверов с bisection bandwidth в петабитах/сек.
  • **AWS** строит каждую Availability Zone как независимый failure domain. Между AZ - Hub-and-Spoke через backbone.
  • **Netflix** дизайнит для failure: каждый компонент имеет standby, chaos engineering тестирует failover в production.

Предварительные знания

  • BGP: The Glue of the Internet
  • Cloud Networking: VPC

Network Design Principles

**Network Design** - это искусство создания сетевой топологии, которая соответствует требованиям: пропускная способность, latency, отказоустойчивость, масштабируемость, стоимость. Хороший дизайн - это баланс этих факторов.

Ключевые метрики: **Bandwidth** (сколько данных), **Latency** (как быстро), **Availability** (сколько девяток: 99.9% = 8.76 часов даунтайма/год), **Scalability** (как добавлять ёмкость), **Cost** (CAPEX + OPEX).

**Rule of thumb**: Oversubscription ratio показывает сколько bandwidth 'обещано' vs реально доступно. 4:1 типично для access layer, 2:1 для aggregation, 1:1 (non-blocking) для spine. Чем ближе к core - тем меньше oversubscription.

Три типа трафика определяют дизайн: **North-South** (клиент ↔ datacenter), **East-West** (сервер ↔ сервер внутри DC), **Intra-DC** (между датацентрами). Современные приложения генерируют больше East-West чем North-South.

Почему современные датацентры проектируют под East-West трафик больше чем North-South?

Spine-Leaf Architecture

**Spine-Leaf** - современная двухуровневая архитектура для датацентров. Leaf switches подключены к серверам, Spine switches соединяют все Leaf между собой. Каждый Leaf подключен к каждому Spine - это даёт предсказуемую latency и high bandwidth East-West.

Преимущества: **Предсказуемость** - любые два сервера в максимум 2 хопах друг от друга. **Масштабируемость** - добавить Leaf = больше портов, добавить Spine = больше bandwidth. **No STP** - ECMP вместо блокировки путей.

**ECMP (Equal-Cost Multi-Path)** - ключ к Spine-Leaf. Вместо STP (блокирует 'лишние' пути), ECMP использует все пути одновременно. Трафик распределяется по hash от flow (src_ip, dst_ip, ports) - один flow идёт по одному пути для сохранения порядка пакетов.

Почему Spine-Leaf не использует Spanning Tree Protocol?

Hub-and-Spoke

**Hub-and-Spoke** - классическая топология для WAN и multi-site сетей. Один центральный узел (Hub) соединён со всеми удалёнными узлами (Spokes). Трафик между Spokes идёт через Hub.

Преимущества: простота (меньше соединений), централизованный контроль и security (весь трафик через Hub), экономия на каналах (Spoke-to-Spoke не нужны прямые линки). Недостатки: Hub - single point of failure, добавляет latency для Spoke-to-Spoke.

**Hybrid Hub-Spoke**: На практике часто добавляют direct links между некоторыми Spokes с high traffic (partial mesh). Или используют SD-WAN для dynamic path selection - критичный трафик через MPLS (Hub), bulk через internet (direct).

Компания с 20 офисами хочет минимизировать затраты на WAN при сохранении связности. Какая топология оптимальна?

Clos Network / Fat-Tree

**Clos Network** (1953) - математически оптимальная многоуровневая топология. Названа в честь Charles Clos из Bell Labs. **Fat-Tree** - реализация Clos для датацентров. Spine-Leaf - это двухуровневая Clos. Для mega-scale DC добавляют третий уровень (Super-Spine).

Свойство Clos: **Non-blocking** или **Rearrangeably non-blocking** - любые два endpoint'а могут общаться на full bandwidth без конкуренции с другими парами. Это достигается избыточностью путей и ECMP.

**Google Jupiter** (2015): 5-stage Clos network с 1.3 Pbps bisection bandwidth. Используют собственные свитчи для оптимизации. Facebook F16: 4-post fabric с 40G/100G линками. Это infrastructure at scale.

Зачем добавлять Super-Spine уровень если Spine-Leaf (2-tier Clos) уже работает?

High Availability Design

**High Availability (HA)** - способность сети продолжать работу при сбоях. Измеряется в 'девятках': 99.9% (3 nines) = 8.76 часов даунтайма/год, 99.99% (4 nines) = 52 минуты, 99.999% (5 nines) = 5 минут. Каждая девятка стоит экспоненциально дороже.

Принципы HA: **No single point of failure** (NSPOF) - всё дублировано. **Graceful degradation** - при сбое часть функций остаётся. **Fast failover** - переключение за секунды, не минуты. **Blast radius** - сбой влияет на минимум компонентов.

**Failure Domain** - группа компонентов, которые могут упасть вместе. Rack = failure domain (питание, свитч). Availability Zone в облаке = failure domain (datacenter). Region = independent failure domain. Размещайте redundancy ACROSS failure domains.

Добавление redundancy всегда увеличивает availability

Избыточные компоненты в SERIAL конфигурации снижают availability. Только PARALLEL даёт выигрыш

Если компонент A и B оба нужны для работы (serial), вероятность сбоя растёт. Redundancy помогает только когда достаточно работы одного из компонентов (parallel). Часто 'redundancy' неправильно спроектирована и компоненты оказываются serial.

У вас два сервера: A (99.9%) и B (99.9%). В какой конфигурации суммарная availability выше?

Итоги

  • **Design Trade-offs**: Performance, Redundancy, Cost - выбери два. Requirements определяют приоритеты
  • **Spine-Leaf**: Двухуровневая Clos для DC. ECMP вместо STP, предсказуемая latency, easy to scale
  • **Hub-and-Spoke**: Для WAN и multi-site. Centralized control, меньше линков, но Hub = bottleneck
  • **Clos/Fat-Tree**: Математически non-blocking. 3-tier для mega-scale (Super-Spine)
  • **High Availability**: N+1, 2N, Active-Active. Parallel увеличивает availability, Serial уменьшает

Связанные темы

Network Design объединяет все концепции курса:

  • BGP — BGP используется между POD'ами в Clos и между сайтами в Hub-Spoke
  • Cloud Networking — VPC design = Hub-Spoke с Transit Gateway. AZ = failure domain

Вопросы для размышления

  • Какая топология используется в вашей инфраструктуре? Spine-Leaf, Hub-Spoke, или что-то другое?
  • Посчитайте availability вашего критичного пути. Где single points of failure?
  • Если бы вы строили сеть с нуля для 10,000 серверов - какой дизайн бы выбрали и почему?

Связанные уроки

  • sd-01-intro
Архитектура сетей: паттерны

0

1

Войти