Тесты «в полях»

Есть коммерческая задача: необходимо быстро подключать сайты к обычной WAN-сети, но делать это там, где в наличии только сотовое покрытие и нет возможности провести кабель или организовать радиорелейный переход до волокна или меди.

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

Из кого выбирать


Технология называется SD-WAN. Лидерами считаются 3 американских стартапа: Versa Networks, Viptela, Velocloud. Классические производители сетевого оборудования стараются догнать. В частности, Cisco заявляет, что у них 2 решения SD-WAN — iWAN и Meraki. Но при этом пару месяцев назад объявили о покупке Viptela. А Riverbed где-то полтора года назад купил компанию Ocedo для выхода на рынок SD-WAN решений.

В целом оценивались:

  • Cisco Systems,
  • Huawei,
  • Nuage Networks,
  • Viptela,
  • VeloCLoud,
  • Silver Peak,
  • Versa Networks,
  • Citrix,
  • InfoVista,
  • Riverbed.

Что получили


Мы остановились на решении Versa; сначала из-за преимущества в цене. Обычные SDN-решения используются немного для других задач, в частности, для объединения филиалов компаний в одну логическую сеть, видимую всем терминалам и серверам как единое физическое пространство адресации, чем-то похожий на DMVPN от Cisco, но своим блэкджеком в виде ZTP, channel-bundling и SLA. Выбранное решение оказалось чуть более специфичным, и за счет отсутствия fullstack-протоколов классических маршрутизаторов на самой коробке и использования стандартных комплектующих снижена базовая стоимость. Большинство вендоров предлагают купить железо и софт сразу или по подписке, но Versa железо не делает, поэтому софт — по подписке, а железо — у партнеров, которые делают референсные x86 коробки. Для заказчиков модель расходов по мере эксплуатации с каждым годом становится все более удобной. Например, самая маленькая коробка от Versa (на фото выше) стоит не дороже Cisco 800-й серии, но при этом может прокачать через себя 500 Mbps. И это на IMIX трафике, где 90% TCP и 10% UDP и при этом включены IPv4 Routing/Forwarding, IPSecEncryption, Layer 7 Application based traffic steering, CGNAT, NextgenFirewall (NGFW), QOS (Classification and Marking), SLA monitoring, internal service chaining, URL Filtering).


Концепция SD-WAN

От SDN взят принцип разделения control и data plane, а также overlay. Control plane — это Director (управление), контроллер (BGP route reflector и IPSEC), Analytics — необязательный компонент, но добавляет прозрачности в сервисы, которые используются на WAN.


Сравнение тех самых двух коробок

Логика работы внутри каждой бранчовой коробки.


Логическая архитектура коробки

Как устанавливается


Сравнение такое: у Cisco в конце года в EOS уходит 19хх серия, и её надо будет заменять. То есть обойти (облететь, объездить) физически все точки ногами. Versa позволяет отправить коробку на место любой службой доставки. На месте в железяку надо будет воткнуть модем или кабель с интернетом. Как только железяка почует свежий коннект, она сама построит VXLAN-туннель с контроллером, получит с него IKE и с ним уже построит служебный IPSEC-туннель, через который заберет настройки и получит от контроллеров маршруты всей сети, поскольку, напомню, контроллер — это BGP route-reflector. Все это происходит полностью автоматически.

То есть на месте справится даже бухгалтер — воткнул кабель, немного магии, заработало.


Инициализация коробки на новой площадке

Вот как эта процедура выглядит в англоязычной документации: 1. Branch device comes with stage–Controller’s IP address is the remote IP in IPSec config. 2. Establishes IKE session with controller over VXLAN tunnel. 3. Controller assigns an IP address to the branch device and generates a notification to Versa Director. 4. VD IP address is notified to branch. 5. Branch installs reverse route to VD. 6. VD pushes the post staging configuration to branch device over the IKE session and reboots the branch device.

Сами настройки — это шаблоны, причем шаблоны с переменными — в них можно включить QOS, shaping, SLA, настройки LAN, правила балансировки по внешним каналам и бондинга этих каналов в одну трубу.

Если есть большое желание, то можно залезть на коробку руками, производитель пока этого не закрыл, а там, сюрприз, Juniper-like-консоль.

Тесты



Прототипы с двумя модемами

Для эмуляции реальной сети, где часть коробок на кабеле, а часть для LTE-кластерах. В одну железку втыкались 3G-LTE-данглы (в момент фото это были МТС и Мегафон), а во вторую кабель с Интернетом от «Гарса». Модемы объединяются в трубу, проходит передача информации. Железка смотрит трафик, распознает его по приложениям, накладывает политики и критерии по приоритизации.

После небольшого допила Мегафон и МТС (как на фото) со своими залоченными модемами начали автоматически распознаваться коробками. Синтетический iperf-трафик на 5 сессиях выдавал практически 50/50 балансировку.


Встроенные в Director функции мониторинга


Графики загрузки двух LTE-модемов в интерфейсе Director

Суммарная полоса составляла где-то 50 Мбит, по каждому из модемов в отдельности — 25 Мбит. Встроенные системы аналитики прямо из коробки в риал-тайме выдавали статистику по нагрузке.

Эмпирически очень удачно получилось с телефонией: например, если бывает одновременно 15 телефонных вызовов, то с первого по восьмой мы пихаем в первый канал, а остальные — во второй с высоким приоритетом (во втором по умолчанию также остальные сервисы офиса типа почты).

Вторая особенность: в местах, где много дропов на последней миле из-за особенностей загрузки сетей или покрытия, удалось поставить более-менее стабильное соединение.
Протестировали per-packet-балансировку. Одна TCP-сессия раскидывается на два LTE-интерфейса. Тестировали iperf, одна TCP-сессия, в панели мониторинга видно, что разбивается по двум каналам. То есть на синтетическом трафике работает, далее уже зависит от каждого конкретного приложения, как они себя ведут при такой балансировке. Например, на базе собственного опыта можем подтвердить, что трансляция видео по RTSP через VLC работает отлично. Данную политику можно применять по отдельности для каждого сервиса. То есть сервисы, что хорошо работают при per-packet-балансировке, балансируем попакетно, остальные — per-flow. При этом сами политики раскатываются на коробках по кнопке. Из-за этого best-practice считает делать несколько групп сайтов: тестовые поближе к себе (лучше — в офисе), потом вторая для early-deploy шаблонов и политик и уже основная для продакшна.

Переключение трафика с одного LTE-модема на другой работает. Тестировали iperf с одной сессией и всё тот же видеостриминг VLC. Вынимаешь тот модем, по которому идёт сессия, происходит небольшая просадка по пропускной способности (iperf показывает падение на 40–60%), видео немного рябит в течение пары секунд, потом всё восстанавливается.

Особенности Версы


  1. Есть аналитика. Нет внешних систем управления, нет необходимости отдельно мониторить каналы с помощью PRTG и т. д., всё сразу как надо.
  2. Один контроллер может обслуживать любое количество устройств, по сути он web-scale. В частности, для оператора связи или облачного провайдера нет необходимости разворачивать для каждого заказчика отдельное решение SD-WAN в telco-cloud.
  3. При необходимости для важного трафика есть настройка дублирования пакетов по различным каналам для гарантирования доставки контента.
  4. Кроме того, на коробках используются TPM-чипы. Это специальные модули для хранения ключей шифрования на устройствах. На инициализации TPM-модуля создаётся пара ключей — закрытый и публичный. Закрытый ключ не может быть прочитан: нет методов для доступа к нему, но зато есть API для вызова метода шифрования-дешифрования.
  5. Динамические туннели. Когда контроллеры выступают BGP route reflector'ами, то они сбрасывают информацию по маршрутам на конечную железку каждого сайта, а spoke-to-spoke-туннель строится только для появления трафика между сайтами. И это же позволяет обеспечить масштабируемость решения до тысяч сайтов.

Отличия в классическом site-to-site ipsec и в Versa SD-WAN IPSEC:


VPN-облако от Versa

Ещё один важный момент: железки для сотовых операторов стоят в разы дешевле, есть возможность закупаться почти напрямую с крупных заводов. Для этого вендор даёт отмашку заводу на то, чтобы поставлять устройства напрямую крупному клиенту, а потом даёт заводу базовые прошивки. Софт заливается в коробку, коробка приезжает оператору связи или клауд-провайдеру. Провайдер в нее забивает 2 параметра: IP-контроллера и конфиг доступа к Интернету (например, static-IP). Дальше коробка отправляется хоть почтой РФ заказчику. Коробка дальше сама найдет что и как. Совместимость широкая, то есть сразу сервисы IP-телефонии, ВКС — всё может входить.

Ещё есть стандартные Packet steering (SLA) и bonding — это как раз объединение группы внешних каналов в одну трубу и прописывание логики переключения под каждый сервис. Причем в решении Versa или Riverbed идет автоматическое распознавание какому сервису принадлежит проходящий трафик, чтобы общаться не на уровне сессии «порт-тип», а на уровне «корпоративному Skype for buisness дать приоритет, а обычным видеозвонкам по Скайпу такого не давать». Бондинг же помогает решить проблемы с долгим предоставлением последней мили. Воткнули 3 LTE-модема от разных операторов и решили вопрос с доступностью площадки на 99,999.


Динамические туннели между коробками на разных площадках

Резюме


  1. Сейчас мы развернули сервис по настройке этих железок у себя, а не в американском облаке (как у ряда вендоров), чтобы облегчить жизнь компаний РФ.
  2. Это решение очень хорошо подходит сотовым операторам и клауд-провайдерам. Для первых это возможность продать ритейлу (например, сети прачечных, продуктовых или автосервисов), не только канал для отправки, скажем, отчетов и почты, но и дополнительную услугу по управлению трафиком приложений в бандле из каналов, а также разноплановый мониторинг качества работы приложений по имеющимся каналам связи (так называемый управляемый сервис). Кстати, как показывает общемировой тренд, то на текущий момент самые крупные проекты по SD-WAN (количество точек подключения) происходят в финансовом секторе и крупном ритейле.
  3. Очень простой ремонт. Если на другом конце планеты в продуктовом что-то сломалось — продавец перетыкает шнурок из одной «коробки» в другую — и на новую автоматически грузится конфиг старой за 10-15 минут. В общем, при желании справится даже бухгалтер.
  4. Для работы с SD-WAN не нужен айтишник в филиале, для любого из кейсов.

Всё. Отвечу на вопросы в комментариях. Ну, или пишите на почту: MKazakov@croc.ru

Комментарии (18)


  1. ValdikSS
    23.08.2017 10:59
    +1

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

    MKazakov_croc, эти устройства терминируют TCP у себя, или гоняют его в сеть в пакетном режиме? Мне кажется, терминирование TCP на устройстве выиграет в скорости и стабильности во всех случаях, т.к. нет зависимости от алгоритмов congestion control на клиентах, не нужно гонять ретрансмиссии от клиента в сеть, если пакеты теряются, можно быстро их переотправлять, точнее управлять TCP-окном и буферами.
    Низкоуровневый алгоритм для TCP работает на MPTCP, для UDP — на собственной реализации поверх ARQ-протокола KCP

    Я поискал-поискал с полгода, и понял, что для домашнего использования и использования в малом бизнесе никаких вменяемых предложений и нет. Все какое-то либо неудачное, либо крайне дорогое, либо с привязкой к собственным серверам. Решил делать своё, т.к. у меня есть и необходимые знания, и понимание, как это должно работать. Прежде всего меня интересует исходящий канал, поэтому упор делаю на вещиние видео с мероприятий через 3 и более LTE/3G-канала.

    По цене получается около $600, вместе с 3 портативными LTE-модемами Cat 6 с батареей, способной работать около 12 часов. Кому-нибудь такое, кроме меня, интересно?


    1. semen-pro
      23.08.2017 11:39
      +1

      Было бы интересно open-source решение.


      1. kvaps
        23.08.2017 18:58
        +1

        Чем Linux bonding инкапсулированный в кучку L2 vpn-каналов не решение?


        1. ValdikSS
          23.08.2017 20:56
          +2

          Это будет ужасно работать. Bonding предназначен для объединения одинаковых линков, с одинаковой скоростью и одинаковой задержкой передачи. Если вы попытаетесь объединить, скажем, два LTE-канала, один со скоростью 10 мегабит и пингом 50 мс, а другой — 40 мегабит и 100 мс, то вы, в лучшем случае, получите небольшое увеличение скорости самого медленного канала, а обычно — характеристики самого медленного канала.

          Если работать на уровне L2, то нужно учитывать алгоритмы управления TCP-окном и перегрузом. Они не любят, когда пакеты приходят вразнобой, а с каналами с разной задержкой это обязательно будет происходить. Поэтому, нужно либо буферизировать данные и выполнять перестановку пакетов в правильном порядке, либо придумывать другие костыли, либо переходить на уровень L3, с локальным терминированием TCP.

          В общем, это далеко не такая простая задача, какой она кажется.


          1. yetanotherman
            24.08.2017 03:52

            Для наколеночного решения есть вариант с L3 без необходимости как-то его особо терминировать. Когда-то его настраивал на базе Cisco, там это, если память не изменяет, называется NAT load balancing. Идея простая — часть соединений забрасывается в один канал, часть — в другой, деление возможно, например, по младшим битам src и/или dst адресов или просто в разнобой. При обрыве одного из каналов он выключается из этой схемы — разумеется, соединения приходится переустанавливать. Уверен, аналог можно накатать на iptables под линуксом. Конечно, это не то, про что статья, но имхо наиболее простой вариант для дома.


            1. ValdikSS
              24.08.2017 08:39
              +1

              Ну, это очень просто, достаточно установить OpenWRT и пакет mwan3.


          1. kvaps
            24.08.2017 10:43

            Bonding предназначен для объединения одинаковых линков, с одинаковой скоростью и одинаковой задержкой передачи

            Новый Network Teaming поддерживает веса для каждого порта, их можно изменять в реальном времени, проверяя качество канала внешней утилитой.


            Если работать на уровне L2, то нужно учитывать алгоритмы управления TCP-окном и перегрузом.

            Согласен, но поверх этого можно развернуть какой-нибудь ip-туннель через tcp, он и будет гарантировать доставку каждого пакета.
            По поводу буферизации — идея хорошая, но сходу у меня идей нет на этот счет, может знаете какое-нибудь простое unixway-решение?


            1. ValdikSS
              24.08.2017 10:54
              +2

              Согласен, но поверх этого можно развернуть какой-нибудь ip-туннель через tcp, он и будет гарантировать доставку каждого пакета.
              У нас уже TCP, зачем нам пересылать TCP внутри TCP? Дело не в гарантии доставки, а в скорости работы. Существующие распространенные алгоритмы congestion control плохо работают и со скачущим пингом, и вообще с разными каналами. У вас TCP-окно будет подстраиваться под самый плохой канал (и в смысле скорости, и в смысле задержки), и быстрый канал будет утилизироваться на малый процент.

              Хорошего unix-way-решения в принципе не может быть, оно будет всегда плохое. Корректных решений два:
              1. MPTCP с локальным терминированием TCP.
              2. Свой ARQ-протокол с инкапсуляцией в UDP и локальным терминированием TCP.


        1. k0ldbl00d
          23.08.2017 21:09

          Дикий оверхед.


      1. aol-nnov
        24.08.2017 10:25
        +3

        как раз вчера глядя на эту статью пошел гуглить, что есть в оперсорсе — нашел github.com/VrayoSystems/vtrunkd но еще не попробовал.
        Сам городил на openvpn + бондинг + маршрутизация + баш-костылики — ужасно работало.

        CC: ValdikSS


        1. insekt
          24.08.2017 18:27

          Спасибо за ссылку.


    1. Darka
      23.08.2017 11:42

      Я думаю интересно многим, как и SOHO, так и «для дома для семьи». Пост бы с примерами конфигурации. Если там ничего секретного нет.


      1. MKazakov_croc Автор
        23.08.2017 12:45

        Домашнее использование – это не про SD-WAN.
        Наверное единственное, где он может быть применим дома – это дорогие фрилансеры, которые должны гарантированно что-то коммитить в основную инфраструктуру головного офиса, но и тут переткнуть руками LTE модем или проводной канал будет проще.
        Малому же бизнесу SD-WAN предпочтительнее в виде покупки его у оператора в рамках канала.
        В случае же покупки у того же cloud provider, что хранит основные ИТ-ресурсы компании, ценник будет выше чем 600$, но проценты, а не в разы.
        Разворачивание решение SD-WAN целиком на своих ресурсов для малого бизнеса не очень интересно, поскольку это нивелирует его основное преимущество в возможности снизить требования к своим ИТ-специалистам и минимизацию выездов ИТшников на площадки.


        1. Darka
          23.08.2017 12:53

          Это в РФ избалованны быстрым широкополосным доступом. В Европе это не так, зато почти везде можно поймать wifi от какого-нибудь ресторана или учреждения.


        1. ValdikSS
          23.08.2017 13:07

          ценник будет выше чем 600$, но проценты, а не в разы.
          О, тогда ладно. Коробки для вещания видео стоят от $5000, поэтому я и думал, что и здесь такие цены.


      1. MKazakov_croc Автор
        23.08.2017 14:04

        Все настройки делаются через Versa Director. Там веб-интерфейс. Настройка интерфейсов, к примеру, выглядит так:


        Versa Director отправляет этот конфиг на филиальное устройство. На самом устройстве это видится в виде Juniper-подобного листинга:

        interfaces {
        vni-0/1 {
        enable true;
        unit 0 {
        vlan-id 0;
        enable true;
        family {
        inet {
        address 11.11.11.11/24;
        }
        }
        }
        }
        vni-0/2 {
        enable true;
        unit 0 {
        vlan-id 0;
        enable true;
        family {
        inet {
        address 172.89.45.1/24;
        }
        }
        }
        }
        vni-0/32 {
        enable true;
        unit 0 {
        vlan-id 0;
        enable true;
        family {
        inet {
        dhcp;
        }
        }
        }
        }
        vni-0/34 {
        enable true;
        promiscuous false;
        unit 0 {
        enable true;
        family {
        inet {
        address 172.20.20.1/24;
        }
        inet6;
        }


    1. MKazakov_croc Автор
      23.08.2017 12:06

      Для домашнего использования, возможно, действительно окажется дороговато. Целевая аудитория SD-WAN это энтерпрайз с большим количеством удалённых площадок.
      Цена опять же сильно зависит от функционала, который вы приобретаете. У Versa можно выбирать из Basic/Advanced SD-WAN, NGFW, UTM, CG-NAT.

      То, что вы описываете с терминированием TCP, это скорее про оптимизацию трафика. Конкретно Versa этим не занимается. В решении Versa вы определяете типы трафика по L2-L7-характеристикам и устанавливаете для них SLA и действия, которые предпримет железка, при нарушении этих SLA. Можно начать дуплицировать пакеты в другой канал, если потери в первом превышают 2%, можно перекинуть весь поток на более качественный канал, если в текущем задержки превышают заданное значение и т.п.


  1. koronabora
    24.08.2017 10:24

    Для дома, я думаю, хватит OpenWRT c mwan3.