company_banner

Разбор самого демократичного из 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.
    КРОК
    IT-компания

    Комментарии 12

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

      Подскажите есть-ли какой-то механизм заставить отправлять ответ, через тот же канал через который пришло соединение?
        +2
          0
          Здесь речь о том, что у вас идёт TCP-сессия из точки А в точку Б, а обратный трафик не разрешён правилами межсетевого экрана, но он пропускается, так как принадлежит к TCP-сессии, открытой изнутри (классический Stateful Firewall). При этом сессия сохраняется с указанием входящего и исходящего интерфейсов межсетевого экрана. А потом вдруг обратный трафик приходит не на тот же интерфейс, с которого ушёл исходящий, а значит не на тот, который записан в таблице сессий. Этот трафик блокируется. Чтобы такого не происходило, можно включить Auxiliary-сессию, тогда межсетевой экран будет открывать сессию и по второму интерфейсу тоже, просто чтобы она была в таблице и обратный трафик, приходящий на другой интерфейс, разрешался.
            0

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

            0
            это разрешает асинхронный трафик, и не решает проблему.
            +1

            Плюс в версии 6.4.2 появилась дупликация пакетов, для повышения надёжности передачи.


            https://docs.fortinet.com/document/fortigate/6.4.0/new-features/813561/define-sd-wan-duplication-rules-to-duplicate-packets-on-other-members-of-the-sd-wan-zone-6-4-2

              0
              Это скорее про ситуацию, когда нам важно, чтобы трафик дошёл и мы готовы тратить на это в два раза больше пропускной способности. Например транзакция от банковского терминала — если мы её потеряем, то клиенту придётся второй раз прикладывать карту. При этом данных там килобайты, поэтому их не жалко передать два раза одновременно по разным каналам.
            0
            Если для какого-то трафика это принципиально, то я бы сделал это с помощью SD-WAN Policy. Заматчил трафик по L3-L4-критериям или по приложению, а в Action-части задал бы SD-WAN-туннели с одинаковым приоритетом с обеих сторон.

            Но на самом деле не факт, что это всегда нужно. Если вдруг у вас канал выдаёт не одинаковое качество на Upstream и Downstream (и Probe это покажут), с точки зрения качества работы приложения, лучше будет передать одно из направлений через другой канал.
              +1

              Справедливости ради, нужно отметить, что "оркестратор" с версии 6.4 появился
              https://docs.fortinet.com/document/fortimanager/6.4.2/sd-wan-orchestrator-administration-guide/91581/introduction

                0
                Мы же рассматриваем " самого демократичного из SD-WAN" а FortiManager это уже лишние затраты и не малые.
                  –1

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

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

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

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

                Самое читаемое