Learning Platform
Глоссарий Troubleshooting
Урок 03.03 · 18 мин
Начальный
Circuit switchingPacket switchingInternet architectureLatency

Circuit switching vs packet switching — почему Internet packet-switched

В предыдущем уроке мы упомянули, что одна из главных инноваций ARPANET — переход от circuit switching к packet switching. Это фундаментальный выбор, который определяет, как работает Internet до сих пор. И это выбор, который не очевиден — circuit switching работает в телефонной сети уже 150 лет и имеет свои достоинства.

В этом уроке разберём оба подхода глубоко: как они работают физически, что у них хорошо, что плохо, почему Internet выбрал packet switching, и где circuit switching всё ещё применяется (спойлер: даже в Internet есть слои, которые работают по принципу circuit switching).


Circuit switching — классическая телефонная модель

Circuit switching работает так: перед началом обмена данными устанавливается физический или логический канал (circuit) между двумя сторонами. По этому каналу идут все данные, в строгом порядке. После окончания обмена канал освобождается.

Circuit switching -- три фазы
Phase 1: SetupУстановление канала. Узлы сети резервируют ресурсы для этой связи: место в коммутаторах, полосу пропускания. Может занимать секунды (старый телефон) или миллисекунды (современный SDN)
Phase 2: DataПередача данных. Все байты идут по установленному каналу, в порядке. Низкая, постоянная latency. Гарантированная bandwidth
Phase 3: TeardownОсвобождение канала. Резервации снимаются, ресурсы возвращаются в пул для следующей связи
Caller dialsВы набираете номер. Это команда сети 'установи канал к этому номеру'
Сеть резервируетКоммутаторы по всему пути резервируют слот в своих таблицах. На некоторое время этот слот занят только вами
Поговорили, повесилиПосле разговора слоты освобождаются. Если телефон не повесили -- линия занята, никто не может позвонить ни вам, ни этому номеру

Главная особенность circuit switching — ресурсы выделены под одну связь. Если вы установили канал, но не передаёте данные (молчите в трубку), канал всё равно занят. Никто другой не может использовать освободившуюся bandwidth.

Это даёт две хороших вещи:

  1. Гарантированная производительность. Если канал установлен — он ваш на все 100%. Никаких внезапных просадок из-за чужого трафика.
  2. Низкая постоянная latency. Данные идут по фиксированному пути. Все элементы заранее знают, как обрабатывать пакет. Это критично для голоса.

И две плохих:

  1. Расточительность. Если канал занят, но не используется — это потери. В голосовом разговоре говорят попеременно, половина времени канал простаивает.
  2. Плохая отказоустойчивость. Если один из элементов на пути падает — весь канал рвётся. Нужно устанавливать заново.

Packet switching — модель Internet

Packet switching работает иначе. Никаких заранее установленных каналов. Данные разбиваются на пакеты, каждый из которых имеет адрес получателя и сам находит путь через сеть. Каждый промежуточный узел смотрит на адрес и решает, куда отправлять дальше.

Packet switching -- независимые пакеты
SenderОтправляет данные. Разбивает на пакеты по MTU (~1500 байт). Каждый пакет помечает destination IP
Packet 1Идёт через router A, потом router B, потом router D. Каждый router смотрит destination IP и решает, куда отправить
ReceiverПолучает пакеты. Может в другом порядке -- TCP пересортирует. UDP не пересортирует (приложение должно само)
Same senderТот же sender, тот же receiver. Но следующий пакет может пойти ДРУГИМ путём, если первый путь перегружен или сломался
Packet 2Идёт через router A, потом router C, потом router D. Сеть динамически выбирает лучший путь для каждого пакета
Same receiverПолучает оба пакета. Возможно в обратном порядке (если path 2 быстрее), TCP всё разрулит

В packet switching нет фазы setup. Вы просто шлёте пакет, и он идёт. Никаких резерваций. Это даёт фундаментально другие свойства:

  1. Эффективное использование канала. Линки общие для всех. Если один пользователь не передаёт — его слот занимает другой. На больших масштабах статистическое мультиплексирование (statistical multiplexing) даёт огромную экономию.
  2. Отказоустойчивость. Если один router падает — пакеты идут другим путём. Никаких разорванных связей (на уровне сети). Это и было главным военным требованием ARPANET.
  3. Простота добавления узлов. Подключился новый router — сразу можно слать пакеты через него. Никакой глобальной переконфигурации.

И платим за это:

  1. Переменная latency. Каждый пакет идёт своим путём, через разное количество routers. Возможны просадки.
  2. Возможные потери. Если router перегружен — он дропает пакеты. Получатель сам должен заметить и переспросить (TCP) или принять как есть (UDP).
  3. Порядок может нарушаться. Если пакет N+1 пошёл быстрее N — придёт раньше. TCP пересортирует, UDP — нет.

Statistical multiplexing — ключевая идея packet switching

Чтобы понять, почему packet switching экономичнее, нужно понять статистическое мультиплексирование.

Пример. У вас есть 10 пользователей, которым нужно по 100 Мбит/с peak bandwidth. В circuit switching вы должны выделить им 10 каналов по 100 Мбит/с = 1 Гбит/с infrastructure. Постоянно занятых, независимо от того, используют они их или нет.

В packet switching вы можете дать им общую инфраструктуру на 200-300 Мбит/с. Почему: в реальности они не используют peak одновременно. Когда один смотрит видео (100 Мбит/с), другие читают почту (1 Мбит/с) или вообще ничего не делают. Среднее ниже peak, и инфраструктура шарится.

Statistical multiplexing -- экономия
Circuit (телефония)10 пользователей x 100 Мбит/с = 1 Гбит/с infrastructure нужно. Используется реально 200-300 Мбит/с. КПД ~25%
Packet (Internet)Те же 10 пользователей. Общая инфраструктура 300 Мбит/с справится в 95% случаев. КПД ~90%. В пики -- временный congestion (TCP замедляется)
ProСтабильная производительность всегда. Никакого congestion. Гарантия
Pro3-5x экономия инфраструктуры. На больших масштабах сети ISP -- огромный выигрыш

Статистическое мультиплексирование работает потому, что трафик пользователей независим и burst’оват. Никто не качает на peak 24/7. Есть пики и спады. Если у вас много пользователей — пики усредняются, и инфраструктура работает близко к среднему. Это закон больших чисел.

Это объясняет, почему интернет относительно дёшев. Если бы каждое HTTP-соединение требовало отдельного гарантированного канала — стоимость провайдеров была бы в 10 раз выше. Packet switching сделал интернет economically viable.


Когда плохой Wi-Fi — это packet switching

Вы замечали, что в плохом Wi-Fi видеосвязь дёргается, а скачивание файла идёт нормально, просто медленно? Это типичное проявление packet switching на проблемном link.

Файл скачивается через TCP. Если пакет потерян — TCP его перешлёт. Скорость снижается, но файл всё равно прибывает целиком. Качество = скорость * время, и время может быть дольше.

Видеосвязь — через UDP (или QUIC). Если пакет потерян — видео пропускает кадр, голос пропускает слог. TCP не успел бы переслать — видео реального времени, retransmission слишком долгий. Качество = чёткая картинка минус потери.

# Проверить, какой у вас packet loss до google.com
ping -c 100 google.com | tail -3
# Увидите что-то вроде: 100 packets transmitted, 99 received, 1% packet loss
# 1% -- это нормально для Wi-Fi и не страшно для большинства приложений
# 5%+ -- проблема, видеосвязь будет рваться

# Более продвинутая диагностика:
mtr -c 100 -r google.com
# Покажет packet loss по каждому hop'у на пути.
# Можно увидеть, где именно потери появляются

В circuit switching такого не было бы. Канал либо установлен (никаких потерь), либо разорван (всё прервалось). Packet switching мягче деградирует: качество плавно ухудшается с проблемами сети.


Гибрид: virtual circuits

В реальном мире не всё чёрно-белое. Между circuit switching и packet switching есть промежуточные варианты. Самый известный — virtual circuits.

Virtual circuit — это «иллюзия канала» поверх packet switching сети. Технически данные идут пакетами, но для приложения это выглядит как стабильный канал с фиксированной маршрутизацией. Примеры:

Virtual circuits -- гибридные подходы
TCP connectionПоверх packet-switched IP создаётся 'соединение'. Гарантированная доставка, упорядоченность. Это и есть virtual circuit. Sender ведёт себя так, как будто есть канал, но физически -- пакеты
MPLSMulti-Protocol Label Switching. Технология ISP для маршрутизации трафика. Создаёт virtual circuits через сеть для большей предсказуемости. Используется в backbone
VPN tunnelIPsec, WireGuard. Шифрованный 'канал' между двумя точками. Для приложения выглядит как один link, физически -- IP-пакеты внутри IP-пакетов
ATM (старое)Asynchronous Transfer Mode. Технология 1990-х для телекомов. Гибрид: фиксированные ячейки 53 байта (как packet), но virtual circuits (как circuit). Сейчас вытеснен MPLS

TCP — особенно интересный случай. С точки зрения приложения вы открываете «connection», шлёте данные, закрываете «connection». Это абстракция virtual circuit. Под капотом TCP делает sequence numbers, ACKs, retransmissions — но это скрыто от вас. Получаете «иллюзию» гарантированного канала поверх unreliable IP.

Поэтому многие фразы вроде «TCP connection» технически неточны — никакого реального соединения нет, есть state на двух endpoint’ах, которые координируются через пакеты. Но абстракция настолько полезна, что мы пользуемся ей повсеместно.


Где circuit switching сегодня

Хотя Internet — packet switching, circuit switching не исчез полностью. Где он есть:

  1. Внутри телефонных сетей (PSTN). Старая телефонная инфраструктура до сих пор работает на TDM (Time Division Multiplexing) — разновидность circuit switching. Хотя VoIP постепенно заменяет.
  2. Радиорелейные линии и оптика на дальние расстояния. Между дата-центрами провайдеров часто DWDM (Dense Wavelength Division Multiplexing) — разные длины волн как «каналы».
  3. 5G сети. Хотя в основе IP, в 5G есть concept «slices» — виртуальные каналы с QoS-гарантиями для разных применений (видео vs IoT vs autonomous cars).
  4. Финансовые торговые системы. Low-latency trading использует direct fiber links между биржами с гарантированными ресурсами.

Так что не списывайте circuit switching как анахронизм. В некоторых применениях гарантии важнее эффективности.


Сравнительная таблица

Circuit vs Packet -- сводка
Setup timeCircuit: секунды-миллисекунды на установление канала. Packet: нет setup -- сразу шлём
LatencyCircuit: постоянная, низкая. Packet: переменная, в среднем низкая, но возможны просадки
BandwidthCircuit: гарантированная. Packet: best effort, делится с другими
EfficiencyCircuit: плохая (резервации при простое). Packet: высокая (statistical multiplexing)
ResilienceCircuit: уязвимо к отказам (канал рвётся). Packet: устойчиво (пакеты ищут другой путь)
Use casesCircuit: голос, low-latency финансы. Packet: всё остальное (web, video streaming, mail, чаты, ETL)

В большинстве задач, с которыми вы будете работать, packet switching — это всё, что вам нужно. Когда читаете «TCP connection», «UDP datagram», «IP packet» — все это понятия packet switching. Когда видите «leased line», «dedicated circuit», «MPLS VPN» — это circuit или virtual circuit.


Попробуй сам

Эти эксперименты показывают, что packet switching реально работает в вашей сети.

# 1. Каждое выполнение traceroute может показать разный путь
#    (если есть load balancing на пути)
traceroute google.com
sleep 5
traceroute google.com
# Сравните -- могут отличаться промежуточные hops

# 2. Запустите большой ping подсчёт пакетов
ping -c 50 google.com | tail -3
# Statistics в конце: какой % пакетов дошёл, min/avg/max RTT
# Variation в RTT -- характерная черта packet switching

# 3. mtr -- лучшая диагностика для packet switching
mtr -c 100 -r google.com
# Покажет таблицу: hop, % loss, avg RTT, jitter
# Видите, как RTT колеблется -- statistical multiplexing в действии

# 4. Захватите 100 пакетов на интерфейсе
sudo tcpdump -i en0 -c 100 -n
# Каждая строка -- один пакет, который идёт через ваш интерфейс
# Видно, что трафик разнообразный: разные dst адреса, протоколы

Обратите внимание: даже когда вы «ничего не делаете», ваш ноутбук генерирует пакеты. Облачные синки, обновления приложений, OS-фоновые проверки — всё это пакеты, разделяющие ваш Wi-Fi link с другими устройствами в доме. Это и есть statistical multiplexing.


Kafka и packet switching: асинхронная доставка на больших масштабах
Проверка знанийKnowledge check
Если packet switching так выгоден, почему мобильные операторы и крупные банки до сих пор используют выделенные линии (dedicated circuits) для своих критичных коммуникаций? Когда circuit switching правильный выбор?
ОтветAnswer
Несмотря на эффективность packet switching, у него есть фундаментальные слабости, которые не решаются техникой: переменная latency и no guaranteed bandwidth. В сценариях, где это критично, circuit switching (или virtual circuits с резервированием ресурсов, как MPLS) -- правильный выбор. Конкретные случаи: (1) High-frequency trading. Биржи и торговые системы платят миллионы за direct fiber-линии между Нью-Йорком, Лондоном, Чикаго. Цель: гарантированная latency, никаких просадок. Разница в 1 миллисекунду = миллионы долларов прибыли. (2) Live broadcast TV. Когда телевизионный канал передаёт live event на спутник или через optical backbone, нужна гарантия, что bandwidth достаточна для full HD/4K видео без drops. Packet switching на полосе congested internet -- не подходит. (3) Voice infrastructure (телекомы). Хотя VoIP заменяет старый PSTN, многие операторы держат TDM (Time Division Multiplexing -- circuit switching) для гарантированного качества голоса. (4) Корпоративные WAN между офисами банков. Берут MPLS VPN от телекома -- это virtual circuits с гарантиями SLA (latency, jitter, packet loss). Не общий internet. (5) Industrial control systems. SCADA, управление электростанциями, нефтегазом -- требуют детерминированной latency. (6) 5G network slices. В 5G можно выделить виртуальный канал с QoS-гарантиями для конкретного применения (e.g. autonomous car requires <10ms guaranteed). Когда выгоднее packet switching: всё, что толерантно к небольшим вариациям latency (web, mail, видеосвязь, файлы, ETL, APIs). Это 99% задач Junior DE. Когда нужны жёсткие гарантии -- circuit или virtual circuit. Правило: если можно retry без последствий -- packet. Если нельзя -- может быть circuit.

Проверьте понимание

Результат: 0 из 0
Аналитический
Вопрос 1 из 6. Что такое statistical multiplexing и почему он критичен для экономики Internet?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 4