Разбор самого демократичного из SD-WAN: архитектура, настройка, администрирование и подводные камни

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Судя по числу вопросов, которые нам стали прилетать по SD-WAN, технология начала основательно приживаться в России. Вендоры, естественно, не дремлют и предлагают свои концепции, а некоторые смельчаки первопроходцы уже внедряют их у себя на сети.

Мы работаем почти со всеми вендорами, и за несколько лет в нашей лаборатории я успел покопаться в архитектуре каждого крупного разработчика программно-определяемых решений. Немного особняком тут стоит SD-WAN от Fortinet, который просто встроил функционал балансировки трафика между каналами связи в софт межсетевых экранов. Решение скорее демократичное, поэтому к нему обычно присматриваются в компаниях, где пока не готовы к глобальным переменам, но хотят эффективнее использовать свои каналы связи.

В этой статье я хочу рассказать, как настраивать и работать с SD-WAN от Fortinet, кому подойдет это решение и с какими подводными камнями здесь можно столкнуться.

Самых заметных игроков рынка SD-WAN можно отнести к одному из двух типов:

1. Стартапы, создавшие SD-WAN-решения с нуля. Самые удачные из таких получают огромный импульс к развитию будучи купленными крупными компаниями – это история Cisco/Viptela, VMWare/VeloCloud, Nuage/Nokia

2. Крупные сетевые вендоры, создавшие SD-WAN-решения, развивая программируемость и управляемость своих традиционных маршрутизаторов – это история Juniper, Huawei

Fortinet удалось найти свой путь. В софт межсетевых экранов был встроен функционал, позволяющий объединять их интерфейсы в виртуальные каналы и балансировать между ними нагрузку с помощью сложных, по сравнению с привычной маршрутизацией, алгоритмов. Этот функционал и назвали SD-WAN. Можно ли то, что сделал Fortinet, назвать SD-WAN? На рынке постепенно складывается понимание, что Software-Defined, значит отделение Control Plane от Data Plane, выделенные контроллеры, оркестраторы. У Fortinet ничего такого нет. Централизованное управление опционально и предлагается с помощью традиционного средства Fortimanager. Но на мой взгляд, не стоит искать абстрактной правды и тратить время на споры о терминах. В реальном мире любой подход имеет свои достоинства и недостатки. Лучший выход — разбираться в них и уметь выбирать решения, соответствующие задачам.

Попробую со скриншотами в руках рассказать, как выглядит и что умеет SD-WAN от Fortinet.

Как всё устроено


Предположим, у вас есть два филиала, связанные между собой двумя каналами передачи данных. Эти каналы передачи данных объединяются в группу, подобно тому, как обычные Ethernet-интерфейсы объединяются в LACP-Port-Channel. Старожилы припомнят PPP Multilink – тоже подходящая аналогия. Каналами могут быть физические порты, VLAN SVI а также VPN или GRE-туннели.

VPN или GRE, как правило, используются при соединении локальных сетей филиалов поверх интернета. А физические порты – при наличии L2-соединений между площадками, либо при соединении поверх выделенной MPLS/VPN, если нас устраивает связь без Overlay и шифрования. Ещё один сценарий, при котором в SD-WAN-группе используются физические порты – балансировка локального выхода пользователей в интернет.

На нашем стенде есть четыре межсетевых экрана и два VPN-туннеля, работающие через двух «операторов связи». Схема выглядит вот так:



VPN-туннели настроены в интерфейсном режиме, так, чтобы это было похоже на Point-to-Point-соединения между устройствами с IP-адресами на P2P-интерфейсах, которые можно пропинговать и убедиться в том, что связь через конкретный туннель работает. Чтобы трафик зашифровался и ушёл на противоположную сторону, достаточно смаршрутизировать его в туннель. Альтернатива – отбор трафика для шифрования с помощью списков подсетей, сильно запутывает администратора по мере усложнения конфигурации. В большой сети для построения VPN можно использовать технологию ADVPN, это аналог DMVPN от Cisco или DVPN от Huawei, позволяющий упростить настройку.

Конфиг Site-to-Site VPN для двух устройств с маршрутизацией BGP с обеих сторон
«ЦОД» (DC) «Филиал» (BRN)
config system interface
 edit "WAN1"
  set vdom "Internet"
  set ip 1.1.1.1 255.255.255.252
  set allowaccess ping
  set role wan
  set interface "DC-BRD"
  set vlanid 111
 next
 edit "WAN2"
  set vdom "Internet"
  set ip 3.3.3.1 255.255.255.252
  set allowaccess ping
  set role lan
  set interface "DC-BRD"
  set vlanid 112
 next
 edit "BRN-Ph1-1"
  set vdom "Internet"
  set ip 192.168.254.1 255.255.255.255
  set allowaccess ping
  set type tunnel
  set remote-ip 192.168.254.2 255.255.255.255
  set interface "WAN1"
 next
 edit "BRN-Ph1-2"
  set vdom "Internet"
  set ip 192.168.254.3 255.255.255.255
  set allowaccess ping
  set type tunnel
  set remote-ip 192.168.254.4 255.255.255.255
  set interface "WAN2"
 next
end

config vpn ipsec phase1-interface
 edit "BRN-Ph1-1"
  set interface "WAN1"
  set local-gw 1.1.1.1
  set peertype any
  set net-device disable
  set proposal aes128-sha1
  set dhgrp 2
  set remote-gw 2.2.2.1
  set psksecret ***
 next
 edit "BRN-Ph1-2"
  set interface "WAN2"
  set local-gw 3.3.3.1
  set peertype any
  set net-device disable
  set proposal aes128-sha1
  set dhgrp 2
  set remote-gw 4.4.4.1
  set psksecret ***
 next
end

config vpn ipsec phase2-interface
 edit "BRN-Ph2-1"
  set phase1name "BRN-Ph1-1"
  set proposal aes256-sha256
  set dhgrp 2
 next
 edit "BRN-Ph2-2"
  set phase1name "BRN-Ph1-2"
  set proposal aes256-sha256
  set dhgrp 2
 next
end

config router static
 edit 1
  set gateway 1.1.1.2
  set device "WAN1"
 next
 edit 3
  set gateway 3.3.3.2
  set device "WAN2"
 next
end

config router bgp
 set as 65002
 set router-id 10.1.7.1
 set ebgp-multipath enable
 config neighbor
  edit "192.168.254.2"
   set remote-as 65003
  next
  edit "192.168.254.4"
   set remote-as 65003
  next
 end

 config network
  edit 1
   set prefix 10.1.0.0 255.255.0.0
  next
end
config system interface
 edit "WAN1"
  set vdom "Internet"
  set ip 2.2.2.1 255.255.255.252
  set allowaccess ping
  set role wan
  set interface "BRN-BRD"
  set vlanid 111
 next
 edit "WAN2"
  set vdom "Internet"
  set ip 4.4.4.1 255.255.255.252
  set allowaccess ping
  set role wan
  set interface "BRN-BRD"
  set vlanid 114
 next
 edit "DC-Ph1-1"
  set vdom "Internet"
  set ip 192.168.254.2 255.255.255.255
  set allowaccess ping
  set type tunnel
  set remote-ip 192.168.254.1 255.255.255.255
  set interface "WAN1"
 next
 edit "DC-Ph1-2"
  set vdom "Internet"
  set ip 192.168.254.4 255.255.255.255
  set allowaccess ping
  set type tunnel
  set remote-ip 192.168.254.3 255.255.255.255
  set interface "WAN2"
 next
end

config vpn ipsec phase1-interface
  edit "DC-Ph1-1"
   set interface "WAN1"
   set local-gw 2.2.2.1
   set peertype any
   set net-device disable
   set proposal aes128-sha1
   set dhgrp 2
   set remote-gw 1.1.1.1
   set psksecret ***
  next
  edit "DC-Ph1-2"
   set interface "WAN2"
   set local-gw 4.4.4.1
   set peertype any
   set net-device disable
   set proposal aes128-sha1
   set dhgrp 2
   set remote-gw 3.3.3.1
   set psksecret ***
  next
end

config vpn ipsec phase2-interface
  edit "DC-Ph2-1"
   set phase1name "DC-Ph1-1"
   set proposal aes128-sha1
   set dhgrp 2
  next
  edit "DC2-Ph2-2"
   set phase1name "DC-Ph1-2"
   set proposal aes128-sha1
   set dhgrp 2
  next
end

config router static
 edit 1
  set gateway 2.2.2.2
  et device "WAN1"
 next
 edit 3
  set gateway 4.4.4.2
  set device "WAN2"
 next
end

config router bgp
  set as 65003
  set router-id 10.200.7.1
  set ebgp-multipath enable
  config neighbor
   edit "192.168.254.1"
    set remote-as 65002
   next
  edit "192.168.254.3"
   set remote-as 65002
   next
  end

  config network
   edit 1
    set prefix 10.200.0.0 255.255.0.0
   next
end


Привожу конфиг в текстовом виде, потому что, на мой взгляд, так VPN настраивать удобнее. Почти все настройки с двух сторон одинаковые, в текстовом виде их можно сделать копи-пастой. Если делать тоже самое в веб-интерфейсе, легко ошибиться, — забыть где-нибудь галочку, ввести не то значение.

После того, как мы добавили интерфейсы в бандл



все маршруты и политики безопасности могут ссылаться на него, а не на интерфейсы, входящие в него. Как минимум, нужно разрешить трафик из внутренних сетей в SD-WAN. При создании правил для них можно применить защитные меры, такие, как IPS, антивирус и раскрытие HTTPS.



Для бандла настраиваются SD-WAN Rules. Это правила, определяющие алгоритм балансировки для конкретного трафика. Они похожи на политики маршрутизации в Policy-Based Routing, только в качестве результата попадания трафика под политику устанавливается не next-hop или обычный исходящий интерфейс, а интерфейсы, добавленные в SD-WAN бандл плюс алгоритм балансировки трафика между этими интерфейсами.

Трафик можно выделять из общего потока по L3-L4-информации, по распознанным приложениям, интернет-сервисам (URL и IP), а также по распознанным пользователям рабочих станций и ноутбуков. После этого, для выделенного трафика можно назначить один из следующих алгоритмов балансировки:



В списке Interface Preference выбираются те интерфейсы из уже добавленных в бандл, которые будут обслуживать этот тип трафика. Добавив не все интерфейсы, можно ограничить по каким именно каналам у вас ходит, скажем, электронная почта, если не хотите нагружать ей дорогие каналы с высоким SLA. В FortiOS 6.4.1 появилась возможность группировать интерфейсы, добавленные в SD-WAN-бандл в зоны, создавая, к примеру, одну зону для связи с удалёнными площадками, а другую – для локального интернет-доступа с использованием NAT. Да-да, трафик, который идёт в обычный интернет, тоже можно балансировать.

Об алгоритмах балансировки


В части того, как Fortigate (межсетевой экран от Fortinet) умеет разбивать трафик между каналами есть две интересных опции, не очень распространённых на рынке:

Lowest Cost (SLA) – из всех интерфейсов, удовлетворяющих SLA в данный момент, выбирается тот у которого ниже вес (cost), заданный администратором вручную; этот режим подходит для «объемного» трафика, такого как резервное копирование и передача файлов.

Best Quality (SLA) – этот алгоритм, помимо привычных задержки, джиттера и потери пакетов Fortigate для оценки качества каналов может использовать и текущую загрузку канала; этот режим подходит для «чувствительного» трафика, такого как IP-телефония (VoIP) и видеоконференцсвязь.

Для этих алгоритмов требуется настройка измерителя производительности канала связи – Performance SLA. Этот измеритель периодически (check interval) контролирует информацию о соблюдении SLA: потерях (packet loss), задержке (latency) и джиттере (jitter) в канале связи, — и может «забраковать» те каналы, которые на текущий момент не удовлетворяют пороговым значениям качества – теряют слишком много пакетов или выдают слишком большую задержку. Помимо этого измеритель следит за статусом канала, и может временно удалить его из бандла в случае повторяющейся потери ответов (failures before inactive). При восстановлении, после нескольких последовательно пришедших ответов (restore link after) измеритель автоматически вернёт канал в бандл, и по нему снова начнут передаваться данные.

Вот так выглядит настройка «измерителя»:



В веб-интерфейсе в качестве протокола для тестов доступны ICMP-Echo-request, HTTP-GET и DNS request. В командной строке опций чуть больше: доступны опции TCP-echo и UDP-echo, а также специализированный протокол измерения качества — TWAMP.



Результаты измерений можно видеть и в веб-интерфейсе:



И в командной строке:



Траблшутинг


Если создали правило, а работает всё не так, как ожидалось, стоит посмотреть на значение Hit Count в списке SD-WAN Rules. Он покажет, попадает ли трафик вообще в данное правило:



На странице настройки самого измерителя можно видеть изменение параметров канала во времени. Пунктиром обозначено пороговое значение параметра



В веб-интерфейсе можно смотреть как распределяется трафик по объёму передаваемых/получаемых данных и количеству сессий:



Кроме всего этого, есть отличная возможность отследить прохождение пакетов с максимальной детализацией. При работе в реальной сети в конфигурации устройства накапливается множество политик маршрутизации, межсетевого экранирования и распределения трафика по SD-WAN-портам. Всё это сложным образом между собой взаимодействует, и, хотя вендор приводит подробные блок-схемы алгоритмов обработки пакетов, очень важно иметь возможность не строить и проверять теории, а посмотреть куда реально девается трафик.

К примеру, следующий набор команд

diagnose debug flow filter saddr 10.200.64.15
diagnose debug flow filter daddr 10.1.7.2
diagnose debug flow show function-name
diagnose debug enable
diagnose debug trace 2


Позволит отследить два пакета с адресом источника 10.200.64.15 и адресом получателя 10.1.7.2.
Пингуем 10.7.1.2 с 10.200.64.15 два раза и смотрим на вывод на консоли.

Первый пакет:



Второй пакет:



Вот первый пакет получен межсетевым экраном:
id=20085 trace_id=475 func=print_pkt_detail line=5605 msg="vd-Internet:0 received a packet(proto=1, 10.200.64.15:42->10.1.7.2:2048) from DMZ-Office. type=8, code=0, id=42, seq=0."
VDOM – Internet, Proto=1 (ICMP), DMZ-Office – название L3-интерфейса. Type=8 – Echo.


Для него создалась новая сессия:
msg="allocate a new session-0006a627"

И обнаружилось совпадение в настройках политик маршрутизации
msg="Match policy routing id=2136539137: to 10.1.7.2 via ifindex-110"

Выясняется, что пакет нужно отправить в один из VPN-туннелей:
"find a route: flag=04000000 gw-192.168.254.1 via DC-Ph1-1"

В политиках межсетевого экранирования обнаруживается разрешающее правило:
msg="Allowed by Policy-3:"

Пакет шифруется отправляется в VPN-туннель:
func=ipsecdev_hard_start_xmit line=789 msg="enter IPsec interface-DC-Ph1-1"
func=_ipsecdev_hard_start_xmit line=666 msg="IPsec tunnel-DC-Ph1-1"
func=esp_output4 line=905 msg="IPsec encrypt/auth"


Зашифрованный пакет отправляется по адресу шлюза для данного WAN-интерфейса:
msg="send to 2.2.2.2 via intf-WAN1"

Для второго пакета всё происходит аналогично, но он отправляется в другой VPN-туннель и уходит через другой порт межсетевого экрана:
func=ipsecdev_hard_start_xmit line=789 msg="enter IPsec interface-DC-Ph1-2"
func=_ipsecdev_hard_start_xmit line=666 msg="IPsec tunnel-DC-Ph1-2"
func=esp_output4 line=905 msg="IPsec encrypt/auth"
func=ipsec_output_finish line=622 msg="send to 4.4.4.2 via intf-WAN2"


Плюсы решения


Надежный функционал и удобный интерфейс. Набор функций, имевшийся в FortiOS до появления SD-WAN, сохранился полностью. То есть мы имеем не заново разработанный софт, а зрелую систему от проверенного вендора межсетевых экранов. С традиционным набором сетевых функций, удобным и простым для освоения веб-интерфейсом. Многие ли вендоры SD-WAN имеют на оконечных устройствах, скажем, функционал Remote-Access VPN?

Безопасность 80-ого уровня. FortiGate входит в топ решений по межсетевому экранированию. В интернете есть множество материалов по настройке и администрированию межсетевых экранов, а на рынке труда немало специалистов по безопасности, уже освоивших решения вендора.

Нулевая цена за функционал SD-WAN. Построить SD-WAN-сеть на FortiGate стоит столько же, сколько и построить на нём обычную WAN-сеть, поскольку никакие дополнительные лицензии для реализации SD-WAN-функционала не нужны.

Низкий порог входа по цене. У Fortigate хорошая градация устройств под разную производительность. Самые младшие и недорогие модели вполне подойдут для того, чтобы поднять офис или точку продаж, скажем, на 3-5 сотрудников. У многих вендоров таких малопроизводительных и доступных моделей просто нет.

Высокая производительность. Сведение SD-WAN-функционала к балансировке трафика позволило компании выпустить специализированный SD-WAN ASIC, благодаря которому работа SD-WAN не снижает производительности межсетевого экрана в целом.

Возможность реализовать офис целиком на оборудовании Fortinet. Это пара межсетевых экранов, коммутаторы, точки доступа Wi-Fi. Таким офисом легко и удобно управлять – коммутаторы и точки доступа регистрируются на межсетевых экранах и управляются с них. Вот так, к примеру, может выглядеть порт коммутатора с интерфейса межсетевого экрана, которым этот коммутатор управляется:



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

На что обращать внимание


Отсутствие разделения Control Plane и Data Plane. Это значит, что сеть нужно настраивать либо вручную, либо с использованием уже имевшихся традиционных средств управления — FortiManager. У вендоров, у которых такое разделение реализовано, сеть собирается сама. Администратору может потребоваться лишь скорректировать её топологию, что-то где-то запретить, не более того. Однако, козырь FortiManager в том, что он умеет управлять не только межсетевыми экранами, но и коммутаторами и точками доступа Wi-Fi, то есть практически всей сетью.

Условный рост управляемости. Из-за того, что для автоматизации настройки сети используются традиционные средства, управляемость сети с внедрением SD-WAN повышается незначительно. С другой стороны, новый функционал становится доступен быстрее, так как вендор сначала выпускает его только для операционной системы межсетевых экранов (что сразу даёт возможность им пользоваться), а уже потом дополняет нужными интерфейсами систему управления.

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

Кому подойдёт


Тем, у кого не очень много филиалов. Внедрение решения SD-WAN со сложными центральными компонентами на сети в 8-10 филиалов может не стоить свеч –придётся потратить деньги на лицензии к SD-WAN-устройствам и ресурсы системы виртуализации на размещение центральных компонентов. Свободных вычислительных ресурсов у небольшой компании как правило в обрез. В случае с Fortinet достаточно просто купить межсетевые экраны.

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

Тем, кто не готов пока шагнуть слишком далеко. Внедрение SD-WAN с контроллерами, проприетарной маршрутизацией, новым подходом к планированию и управлению сетью может оказаться слишком серьёзным шагом для некоторых заказчиков. Да, такое внедрение в итоге поможет оптимизировать использование каналов связи и работу администраторов, но сначала придётся выучить много нового. Тем, кто пока не готов к смене парадигмы, но хочет выжать побольше из своих каналов связи, как раз подойдёт решение от Fortinet.
Источник: https://habr.com/ru/company/croc/blog/520620/


Интересные статьи

Интересные статьи

О чем пойдет речь В рамках пятничного безумия, давайте представим, что у Вас волшебным образом появилось разрешение на работу в США, и Вы уже готовы после завтрака телепортироват...
Повсеместная самоизоляция, вызванная пандемией, приковала миллионы глаз к мониторам. Многие нашли отдушину в виде обучения, в частности, игре на музыкальных инструментах. Возросший ин...
Меня зовут Максим Полстяной, я UI/UX Designer в Plarium Kharkiv. В этой статье я поделюсь опытом создания дизайн-системы для нашей браузерной стратегии «Войны Престолов», расскажу с чего все начи...
В данной статье описывается процесс синтаксического анализа предложения русского языка с использованием контекстно-свободной грамматики и алгоритма LR-анализа. Обработка естественного языка — ...
Если Вы используете в своих проектах инфоблоки 2.0 и таблицы InnoDB, то есть шанс в один прекрасный момент столкнуться с ошибкой MySQL «SQL Error (1118): Row size too large. The maximum row si...