Что такое SDN (программно-конфигурируемые сети)?

«Что такое SDN (программно-конфигурируемые сети)?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SDN (Software-Defined Networking) — это архитектурный подход к построению сетей, который отделяет плоскость управления (контроллер, принимающий решения о маршрутизации) от плоскости данных (сетевые устройства, которые пересылают трафик). Управление сетью централизовано и программируется через программные интерфейсы (API).

Ключевые принципы:

  1. Разделение плоскостей: Контроллер SDN (логически централизованный) диктует правила сетевым коммутаторам и маршрутизаторам.
  2. Программируемость: Сетевая политика и конфигурация задаются программно, а не через ручную настройку каждого устройства.
  3. Абстракция: Приложения и системы управления "видят" единую логическую сеть, а не набор разрозненных устройств.

Базовый пример работы через API контроллера (Python-like псевдокод):

# Программное создание правила потока (flow rule) на контроллере
controller = SDNController()
# Указание коммутатору `s1` пересылать трафик на IP 10.0.0.1 через порт 2
controller.add_flow_entry(
    switch_id="s1",
    match={ "ipv4_dst": "10.0.0.1" },
    actions=[ "output:2" ]
)

Преимущества и применение:

  • Гибкость и скорость: Быстрое развертывание сетевых сервисов (VPN, балансировка).
  • Автоматизация: Интеграция с системами оркестрации (Kubernetes, OpenStack).
  • Централизованный контроль и аналитика.
  • Используется в крупных ЦОДах, облачных провайдерах и сетях 5G.