Автоматизация сети

Назначение и преимущества автоматизации сети

В традиционной модели инженеры управляют устройствами по одному, подключаясь к интерфейсу командной строки через SSH. Возможно соединение через Telnet, а также подключение к консольному порту. Некоторые устройства также поддерживают графический интерфейс. Но главное здесь то, что устройства управляются и настраиваются одно за другим.

Рис. 1. Пример интерфейса обратной связи Пример интерфейса

На рис. 1 продемонстрирован пример, когда инженер хочет добавить интерфейс обратной связи на все свои маршрутизаторы. Тогда он подключается к R1 с помощью SSH, настраивает интерфейс обратной связи и сохраняет конфигурации. Затем всё то же самое он делает с R2. А затем с R3. И с каждым из сотен маршрутизаторов в сети компании.

В этом процессе опечатки и другие мелкие ошибки становятся обычным делом. Иногда они исправляются сразу, но порой может потребоваться много времени на устранение неполадок, чтобы обнаружить, например, что проблема заключалась в опечатке в IP-адресе. Это также отнимает много времени, особенно в крупномасштабных сетях. Повторяющиеся задачи можно автоматизировать и выполнять намного быстрее.

Кроме того, бывает трудно гарантировать соответствие всех устройств стандартам конфигураций компании. У организации обычно есть стандартные шаблоны конфигураций, которые они используют для своих устройств, и важно обеспечить соблюдение этих политик по всей сети. Однако по мере того, как отдельные сетевые инженеры годами вносят индивидуальные изменения, конфигурации могут начать отходить от стандарта. Это может вызвать проблемы в дальнейшем, например, затруднить устранение неполадок.

Автоматизация сети предлагает множество ключевых преимуществ:

  • Снижается количество ошибок, например опечаток, которые может допустить сотрудник. Вместо того, чтобы сетевой инженер напрямую входил в интерфейс командной строки и вручную вводил команды, задачу можно автоматизировать.
  • Сети становятся гораздо более масштабируемыми. Развёртывание новых сетей, общие сетевые изменения, а также устранение неполадок могут быть реализованы за короткое время.
  • Можно гарантировать соответствие политике в масштабах всей сети. Например, проверяя устройства на наличие стандартных конфигураций, версий программного обеспечения и т. д.
  • Повышение эффективности сетевых операций снижает операционные расходы на сеть. Каждая задача требует меньше человеко-часов, и инженеры могут сосредоточиться на более важных вещах. Например, в той ситуации, что была проиллюстрирована ранее, когда нужно было добавить новый интерфейс обратной связи к сотням маршрутизаторов. Вместо того, чтобы входить в каждый маршрутизатор по одному и вручную настраивать интерфейс обратной связи, лучше использовать скрипт Python, который поможет выполнить задачу и сделать правильные настройки гораздо быстрее.

Существуют различные инструменты и методы, которые можно использовать для автоматизации задач в сети. Вот некоторые примеры:

  • SDN,
  • Ansible,
  • Puppet,
  • скрипты Python,
  • и многие другие.

Логические «плоскости» сетевых функций

Чтобы понять концепцию программно-определяемых сетей, о которой пойдёт речь ниже, необходимо понять что такое логические плоскости сетевых функций.

Что делают маршрутизаторы и коммутаторы?

Маршрутизатор пересылает сообщения между сетями, проверяя информацию в заголовке уровня 3. А коммутатор пересылает сообщения внутри локальной сети, проверяя информацию в заголовке уровня 2.

Маршрутизатор также использует протокол маршрутизации, такой как OSPF для обмена информацией о маршрутизации с другими маршрутизаторами и построения таблицы маршрутизации. Он также использует ARP для создания таблицы, сопоставляя IP-адреса с MAC-адресами. Например, при пересылке пакета он использует ARP для изучения MAC-адреса маршрутизатора следующего перехода: системный журнал происходящих событий. К тому же можно использовать SSH для подключения к маршрутизатору и управления им. Кроме этого маршрутизаторы могут выполнять множество других функций.

Коммутатор использует STP, чтобы гарантировать в сети отсутствие петель уровня 2. Он создаёт таблицу MAC-адресов, проверяя исходный MAC-адрес кадров. Как и маршрутизатор, он использует такие протоколы, как syslog и SSH. Это лишь несколько примеров функций коммутатора, их гораздо больше.

Коммутатор уровня 3 может выполнять те же функции маршрутизатора. Например, использовать OSPF для построения таблицы маршрутизации.

В любом случае, маршрутизаторы и коммутаторы выполняют много разных функций, которые можно логически разделить и классифицировать на то, что называется «плоскостями».

Обычно функции разделяются на три плоскости:

  • плоскость данных,
  • плоскость контроля,
  • плоскость управления.

Плоскость данных

Все задачи, связанные с пересылкой пользовательских данных из одного интерфейса в другой, являются частью плоскости данных. Это то, что обычно предполагается, говоря о маршрутизаторе или коммутаторе, который пересылает сообщения.

Маршрутизатор получает сообщение, ищет наиболее подходящий маршрут в своей таблице маршрутизации и пересылает его из соответствующего интерфейса на следующий узел или до пункта назначения, если он напрямую связан. Он также деинкапсулирует исходный заголовок уровня 2 и повторно инкапсулирует новый заголовок, предназначенный для MAC-адреса следующего перехода. Все эти функции являются частью плоскости данных.

Аналогичным образом коммутатор получает сообщение, просматривает MAC-адрес назначения и пересылает его из соответствующего интерфейса. Или он экспортирует его из всех интерфейсов, когда это необходимо. Сюда также входят такие функции, как добавление или удаление тегов VLAN Dot1q.

Частью плоскости данных является такая функция, как NAT, которая изменяет адреса источника и (или) назначения перед пересылкой. Это часть процесса пересылки сообщения. Кроме того, принятие решения о пересылке или отклонении сообщения из-за списков ACL, безопасности порта и т. д. является частью плоскости данных. Другое название плоскости данных — это плоскость пересылки, так как это действие и является основным.

Рис. 2. Пример плоскости данных Пример плоскости данных

Плоскость контроля

Как плоскость данных устройства принимает решение о пересылке? Как маршрутизатор может выбирать, через какой интерфейс пересылать пакет? Откуда он узнаёт, какой следующий переход?

Устройство использует таблицы маршрутизации, таблицы MAC-адресов, ARP, STP и многое другое, чтобы принять решение о пересылке. Функции, создающие эти таблицы, и другие функции, влияющие на плоскость данных, являются частью плоскости контроля. Она контролирует то, что делает плоскость данных, например, создавая таблицу маршрутизации маршрутизатора. Функции плоскости контроля считаются накладными расходами.

Это можно понять на примерах:

  • сам протокол OSPF не пересылает пакеты пользовательских данных, но рассчитывает оптимальный маршрут;
  • аналогично сам STP не участвует напрямую в процессе пересылки кадров, но информирует плоскость данных о том, какие интерфейсы следует или не следует использовать для пересылки кадров;
  • сообщения ARP не являются пользовательскими данными, но они нужны для построения таблицы ARP, которая используется в процессе пересылки данных.
Рис. 3. Плоскость контроля Пример плоскости контроля

На рисунке 3 это проиллюстрировано следующим образом: R2 и R1 взаимодействуют с помощью OSPF, и это позволяет им обоим строить свои таблицы маршрутизации. Эти таблицы маршрутизации контролируют действия плоскости данных, где происходит фактическая пересылка пакетов данных. Таким образом, в традиционных сетях плоскость данных и плоскость контроля распределены. Каждое устройство имеет свою плоскость данных и свою плоскость контроля.

Плоскость управления

Как и плоскость контроля, плоскость управления выполняет дополнительную работу. Однако плоскость управления не влияет напрямую на пересылку сообщений в плоскости данных. Вместо этого она состоит из протоколов, которые используются для управления устройствами.

Например, SSH и Telnet, которые используются для подключения к CLI устройств для настройки и управления. Или syslog, который используется для ведения журналов событий, происходящих на устройстве. Также SNMP, который в основном используются для мониторинга работы состояния устройства. NTP — ещё один пример, который используется для поддержания точного времени на устройстве.

Рис. 4. Пример операций плоскости управления Пример операций плоскости управления

Сетевой инженер использует SSH для подключения к маршрутизаторам и выполнения некоторых настроек. Например, возможно, он настроил OSPF, и теперь плоскости управления маршрутизаторами используют его для обмена информацией о маршрутизации. Затем это определяет, как пакеты пересылаются в плоскости данных.

Это базовое описание того, как работают эти три логических плоскости. Для того, чтобы плоскость данных выполняла свою работу, нужны плоскость контроля и плоскость управления.

Операции плоскости контроля и плоскости управления обычно управляются CPU устройства. Однако это нежелательно для операций на уровне данных, поскольку обработка CPU, условно говоря, медленная. Вместо этого используются специализированные аппаратные ASIC, интегральные схемы для конкретного приложения. Это микросхемы, созданные для определённых целей, например, для пересылки кадров в коммутаторе.

Можно продемонстрировать, как это работает на примере коммутатора. При получении кадра за логику переключения отвечает ASIC, а не CPU. Это специализированный чип, предназначенный для пересылки кадров, в отличие от процессора общего назначения. Кроме того, таблица MAC-адресов хранится в памяти, называемой TCAM, троичной памяти с адресацией по содержимому. TCAM позволяет очень быстро искать MAC-адреса. Другое общее название таблицы MAC-адресов — CAM, таблица памяти с адресацией по содержимому. Таким образом, ASIC передаёт MAC-адрес назначения кадра в TCAM, который возвращает соответствующую запись таблицы MAC-адресов. Затем он пересылается из соответствующего интерфейса.

Современные маршрутизаторы также используют аналогичную аппаратную плоскость данных с ASIC, предназначенным для пересылки логики и с необходимыми таблицами, хранящимися в TCAM.

Итак, когда устройство получает трафик контроля или управления, предназначенный для самого устройства, он будет обрабатываться в CPU. Однако когда устройство получает трафик данных, который должен пройти через него, он обрабатывается ASIC на максимальной скорости.

Программно-определяемые сети (SDN)

Это подход к организации сети, который централизует плоскость управления в приложении, называемом контроллером.

При использовании контроллера беспроводной локальной сети многие функции удаляются из точек доступа и централизуются в контроллере, поэтому роль точек доступа в первую очередь сводится к пересылке трафика.

SDN также можно назвать программно-определяемой архитектурой или сетью на базе контроллера.

Традиционные плоскости управления используют распределённую архитектуру. Например, каждый маршрутизатор запускает OSPF, делится информацией о маршрутизации с другими маршрутизаторами, а затем независимо рассчитывает предпочтительные маршруты к каждому пункту назначения. Контроллер SDN централизует функции плоскости контроля такие, как расчёт маршрутов. Но это всего лишь пример, и степени централизованности управления сильно варьируются. Существует множество различных решений SDN, при этом роли контроллера и сетевых устройств различаются в каждом решении.

Контроллер может программно взаимодействовать с сетевыми устройствами с помощью API. API — это интерфейс прикладного программирования.

Рис. 5. Архитектура контроллера Пример архитектуры контроллера

На рисунке 5 продемонстрирована архитектура, где есть контроллер, приложение, работающее на централизованном сервере, и централизованная плоскость контроля сети. Вместо того чтобы R1 и R2 использовали OSPF для обмена информацией о маршрутизации и последующего расчёта маршрутов, контроллер связывается с R1 и R2 для программирования их плоскостей данных. Таким образом, вместо распределённой плоскости контроля, где каждый маршрутизатор имеет свою собственную плоскость контроля, она централизована в контроллере. Здесь продемонстрировано только два маршрутизатора. Но это может быть сеть с сотнями маршрутизаторов. И этот контроллер будет контролировать плоскость всей сети.

Хотя этот рисунок показывает полностью централизованную плоскость контроля, в реальности существует множество различных решений. Некоторые из них централизуют всю плоскость, другие — выборочные функции плоскости контроля.

Южный (SBI) и северный (NBI) интерфейсы

Связь между устройствами и контроллером осуществляется через так называемый южный интерфейс, SBI. Он называется южным, потому что на диаграммах обычно контроллер изображается сверху, а сетевые устройства внизу, на юге. Этот термин относится не к какому-либо физическому интерфейсу на устройстве, а скорее к программному интерфейсу, который используется для обеспечения связи контроллера и сетевых устройств.

SBI используется для связи между контроллером и сетевыми устройствами, которые он контролирует. Он обычно состоит из протокола связи и API, интерфейса прикладного программирования, который в этом случае в основном используется для облегчения обмена данными между программами. Контроллер — это программа, так же как и сетевые устройства, работающие на своём оборудовании. Между контроллером и сетевыми устройствами происходит обмен данными. Например, API на сетевых устройствах может позволить контроллеру получать доступ к информации о них, управлять их таблицами плоскости данных, которые используются для пересылки пакетов и т. д. API играют большую роль в автоматизации сетевых задач.

Вот несколько южных интерфейсов:

  • OpenFlow,
  • Cisco OpenFlex,
  • Cisco onePK,
  • NETCONF.

Это SBI, используемые контроллером для связи с устройствами, которые он контролирует. Помимо южных интерфейсов существует также северные интерфейсы.

С помощью SBI контроллер связывается с подконтрольными ему устройствами и собирает о них информацию. Например, какие устройства находятся в сети, их топология и способ соединения между собой, какие интерфейсы доступны на устройстве, их конфигурации, например IP-адреса. Для этого используется SBI.

Северный же интерфейс, NBI, позволяет взаимодействовать с контроллером, получать доступ к данным, которые он собирает о сети, программировать контроллер и вносить изменения в сеть через южный интерфейс.

Сравнение SDN с автоматизацией в традиционных сетях

Сетевые задачи можно автоматизировать и в традиционных сетевых архитектурах. Например, можно написать сценарий на Python для отправки команд на множество устройств одновременно. Сценарий может разрешить компьютеру подключаться к устройству по SSH, а затем отправлять любые команды, которые необходимо, настраивая VLAN на множестве коммутаторов. Кроме того, Python при правильном использовании регулярных выражений может анализировать команды show для сбора информация о сетевых устройствах.

Однако надёжные и централизованные данные, собираемые контроллерами SDN, значительно облегчают выполнение этих функций. Контроллер собирает надёжную информацию обо всех устройствах в сети, обеспечивая представление всей сети. Кроме того, серверные API-интерфейсы позволяют приложениям получать доступ к информации в формате, удобном для понимания программами таких, как JSON или XML. Нет необходимости писать сценарий для анализа определённых команд show с целью получения нужной информации. Кроме того, наличие этих централизованных данных облегчает анализ всей сети, так как отпадает необходимость получать информацию от отдельных устройств и сопоставлять данные самостоятельно.

Инструменты SDN обеспечивают преимущества автоматизации без необходимости использования сторонних приложений и сценариев. Это также означает, что не нужны глубокие знания в области автоматизации для работы с инструментами SDN. Многие из них очень просты в использовании, даже для тех, кто не умеет писать собственные скрипты.

Подводя итог, можно сказать, что хотя SDN и автоматизация сети — это не одно и тоже, но всё же SDN является одной из её аспектов. Архитектура SDN значительно облегчает автоматизацию различных задач в сети через контроллер SDN и API.