Русский
Русский
English
Статистика
Реклама

Dmvpn

Отпилит ли Cisco SD-WAN сук, на котором сидит DMVPN?

10.08.2020 20:22:45 | Автор: admin
С августа 2017 года, когда компания Cisco приобрела компанию Viptela, основной предлагаемой технологией организации распределенных корпоративных сетей стала Cisco SD-WAN. За прошедшие 3 года SD-WAN технология прошла множество изменений, как качественного, так и количественного характера. Так значительно расширились функциональные возможности и появилась поддержка на классических маршрутизаторах серий Cisco ISR 1000, ISR 4000, ASR 1000 и виртуального CSR 1000v. В то же время многие заказчики и партнеры Cisco продолжают задаваться вопросом в чем заключаются отличия Cisco SD-WAN от уже привычных подходов на базе таких технологий, как Cisco DMVPN и Cisco Performance Routing и насколько эти отличия важны?

Здесь сразу следует сделать оговорку, что до появления SD-WAN в портфолио Cisco, DMVPN совместно с PfR составляли ключевую часть в архитектуре Cisco IWAN (Intelligent WAN), которая в свою очередь представляла собой предшественника полновесной SD-WAN технологии. При общем сходстве, как самих решаемых задач, так и способов их решения, IWAN так и не получил необходимого для SD-WAN уровня автоматизации, гибкости и масштабируемости и со временем развитие IWAN значительно снизилось. В то же время сами технологии-составляющие IWAN никуда не делись, и многие заказчики продолжают их успешно использовать в том числе на современном оборудовании. В итоге сложилась интересная ситуация одно и то же оборудование Cisco позволяет выбрать наиболее подходящую технологию построения WAN (классическую, DMVPN+PfR или SD-WAN) в соответствии с требованиями и ожиданиями заказчиков.

Статья не предполагает подробно разбирать все особенности технологий Cisco SD-WAN и DMVPN (совместно или без Performance Routing) для этого имеется огромное количество доступных документов и материалов. Основная задача постараться оценить ключевые отличия этих технологий. Но все же прежде, чем перейти к обсуждению этих различий, кратко напомним о самих технологиях.

Что такое Cisco DMVPN и зачем он нужен?


Cisco DMVPN решает задачу динамического (=масштабируемого) подключения сети удаленного филиала к сети центрального офиса предприятия при использовании произвольных типов каналов связи в том числе Интернет (= с шифрованием канала связи). Технически это реализуется созданием виртуализированной наложенной сети класса L3 VPN в режиме точка много точка (point-to-multipoint) с логической топологией типа Звезда (Hub-n-Spoke). Для этого DMVPN использует комбинацию следующих технологий:

  • IP маршрутизация
  • Multipoint GRE туннели (mGRE)
  • Next Hop Resolution Protocol (NHRP)
  • IPSec Crypto профили



В чем основные преимущества Cisco DMVPN в сравнении с классической маршрутизацией с использованием MPLS VPN каналов?

  • Для создания межфилиальной сети возможно использовать любые каналы связи подходит все, что способно обеспечить IP-связность между филиалами, при этом трафик будет и шифроваться (где надо) и балансироваться (где возможно)
  • Автоматически формируется полно связная топология между филиалами. При этом между центральным и удаленным филиалами статические туннели, а между удаленными филиалами динамические туннели по требованию (при наличии трафика)
  • На маршрутизаторах центрального и удаленного филиала однообразная конфигурация с точностью до IP-адресов интерфейсов. За счет использования mGRE нет необходимости в индивидуальной настройке десятков, сотен или даже тысяч туннелей. Как следствие, достойная масштабируемость при правильном дизайне.

Что такое Cisco Performance Routing и зачем он нужен?


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

И что делать, если канал деградирует частично, а не полностью как это обнаружить и оценить? DMVPN сам по себе этого не умеет. Учитывая, что каналы, связывающие филиалы, могут проходить через совершенно разных операторов связи, используя совершенно разные технологии, то это задача становится крайне нетривиальной. И вот здесь на помощь приходит технология Cisco Performance Routing, которая к тому времени уже прошла несколько стадий развития.



Задача Cisco Performance Routing (далее PfR) сводится к измерению состояния путей (туннелей) прохождения трафика на основе ключевых метрик, важных для сетевых приложений задержка, вариация задержки (джиттер) и потери пакетов (в процентах). Дополнительно может измеряться используемая полоса пропускания. Эти измерения происходят максимально близко к реальному времени (насколько это возможно и оправданно) и результат этих измерений позволяет маршрутизатору, изпользующему PfR, динамически принимать решения о необходимости изменения маршрутизации того или иного вида трафика.

Таким образом задачу комбинации DMVPN/PfR можно кратко охарактеризовать следующим образом:

  • Позволить заказчику использовать на WAN сети любые каналы связи
  • Обеспечить максимально возможное качество важных приложений на этих каналах

Что такое Cisco SD-WAN?


Cisco SD-WAN это технология, которая использует SDN подход для создания и эксплуатации WAN сети организации. Это в частности означает использование так называемых контроллеров (программных элементов), которые обеспечивают централизованную оркестрацию и автоматизированную настройку всех компонентов решения. В отличии от канонического SDN (в стиле Clean Slate) в Cisco SD-WAN используется сразу несколько типов контроллеров, каждый из которых выполняет свою роль это сделано намеренно с целью обеспечить лучшую масштабируемость и гео-резервирование.



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

Обсуждение различий


Если теперь начать анализировать отличия этих технологий, то они будут попадать в одну из категорий:

  • Архитектурные отличия как распределены функции по различным компонентам решения, как организовано взаимодействие таких компонентов и как это влияет на возможности и гибкость технологии?
  • Функциональные возможности что такого может одна технология, чего не может другая? И так ли это важно?

В чем заключены архитектурные различия и так ли они важны?


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

Рассмотрим различные аспекты архитектуры более подробно:

Data-plane часть решения, отвечающее за передачу пользовательского трафика между источником и получателем. В DMVPN и SD-WAN реализуется в целом одинаково на самих маршрутизаторах на базе Multipoint GRE туннелей. Разница в том, за счет чего формируется необходимый набор параметров этих туннелей:

  • в DMVPN/PfR это исключительно двухуровневая иерархия узлов с топологией типа Звезда или Hub-n-Spoke. Обязательна статическая настройка Hub и статическая привязка Spoke к Hub, а также взаимодействие по протоколу NHRP для формирования data-plane связности. Как следствие, значительно затруднены изменения на Hub, связанные, например с изменением/подключением новых WAN-каналов или изменения параметров существующих.
  • в SD-WAN это полностью динамическая модель обнаружения параметров устанавливаемых туннелей с опорой на control-plane (протокол OMP) и orchestration-plane (взаимодействие с контроллером vBond для задач обнаружения контроллеров и NAT traversal). При этом наложенные топологии могут любые, в том числе иерархические. В рамках установленной наложенной топологии туннелей возможна гибкая настройка логической топологии в каждом отдельном VPN(VRF).




Control-plane функции обмена, фильтрации и модификации маршрутной и другой информации между компонентами решения.

  • в DMVPN/PfR осуществляется только между маршрутизаторами Hub и Spoke. Прямой обмен маршрутной информацией между Spoke невозможен. Как следствие, без действующего Hub невозможно функционирование control-plane и data-plane, что накладывает на Hub дополнительные требования по высокой доступности, которые не всегда могут быть выполнены.
  • в SD-WAN control-plane никогда не осуществляется напрямую между маршрутизаторами взаимодействие происходит на основе протокола OMP и обязательно осуществляется через отдельный специализированный тип контроллера vSmart, что обеспечивает возможность балансировки, гео-резервирования и централизованного управления сигнальной нагрузкой. Другой особенностью OMP протокола является его значительная устойчивость к потерям и независимость от скорости канала связи с контроллерами (в разумных пределах, конечно). Что одинаково успешно позволяет размещать контроллеры SD-WAN в публичных или частных облаках с доступом через Интернет.




Policy-plane часть решения отвечающее за определение, распространение и применение политик управления трафиком на распределенной сети.

  • DMVPN фактически ограничено политиками качества обслуживания (QoS), настраиваемыми индивидуально на каждом маршрутизаторе через CLI или шаблоны Prime Infrastructure.
  • DMVPN/PfR политики PfR формируются на централизованном маршрутизаторе Master Controller (MC) через CLI и далее автоматически распространяются в филиальные MC. При этом используются те же пути передачи политик, что и для data-plane. Возможности разнести обмен политиками, маршрутной информацией и пользовательскими данными нет. Распространение политик предполагает обязательное наличие IP-связности между Hub и Spoke. При этом функция MC может быть при необходимости совмещена с DMVPN маршрутизатором. Возможно (но не требуется) использование шаблонов Prime Infrastructure для централизованного формирования политик. Важная особенность политика формируется глобально на всей сети одинаково индивидуальные политики для отдельных сегментов не поддерживаются.
  • SD-WAN политики управления трафиком и качеством обслуживания определяются централизовано через графический интерфейс Cisco vManage доступный в том числе и через Интернет (при необходимости). Распространяются по сигнальными каналам напрямую или опосредованно через контроллеры vSmart (зависит от типа политики). Не зависят от data-plane связности между маршрутизаторами, т.к. используют все доступные пути передачи трафика между контроллером и маршрутизатором.

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




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

  • в DMVPN/PfR взаимное обнаружение маршрутизаторами основано на статической конфигурации Hub устройств и соответствующей настройке Spoke устройств. Динамическое обнаружение происходит только для Spoke, который сообщает о своих параметрах соединения Hub устройству, которое в свою очередь заранее внесено в конфигурацию Spoke. Без IP-связности Spoke с хотя бы одним Hub невозможно сформировать ни data-plane, ни control-plane.
  • в SD-WAN оркестрация компонентов решения происходит с использованием контроллера vBond, с которым каждому компоненту (маршрутизаторам и контроллерам vManage/vSmart) необходимо предварительно установить IP-связность.

    Изначально компоненты не знают о параметрах подключения друг друга для этого им необходим посредник-оркестратор vBond. Общий принцип следующий каждый компонент в начальной фазе узнает (автоматически или статически) только о параметрах подключения к vBond, далее vBond сообщает маршрутизатору о контроллерах vManage и vSmart (обнаруженных ранее), что делает возможным автоматическое установление всех необходимых сигнальных связей.

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




Management-plane часть решения, обеспечивающая централизованное управление и мониторинг.

  • DMVPN/PfR специализированного management-plane решения не предусмотрено. Для базовой автоматизации и мониторинга возможно использование таких продуктов, как Cisco Prime Infrastructure. Каждый маршрутизатор имеет возможность управления через командную строку CLI. Интеграции с внешними системами через API не предусмотрено.
  • SD-WAN все штатное взаимодействие и мониторинг осуществляется централизовано через графический интерфейс контроллера vManage. Все возможности решения без исключения доступны к настройке через vManage, а также через полностью документированную библиотеку программного интерфейса REST API.

    Все настройки SD-WAN сети в vManage сводятся к двум основным конструктам формирование шаблонов устройств (Device Template) и формирование политики, которая определяет логику работы сети и обработки трафика. При этом vManage, транслируя сформированную администратором политику, автоматически выбирает какие изменения и на каких индивидуальных устройствах/контроллерах необходимо произвести, что значительно повышает эффективность и масштабируемость решения.

    Через интерфейс vManage доступна не только настройка решения Cisco SD-WAN, но и полноценный мониторинг состояния всех компонентов решения вплоть до текущего состояния метрик отдельных туннелей и статистики использования различных приложений на основе DPI анализа.

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

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

  • в DMVPN/PfR предусмотрена возможность шифрования пользовательских данных и сигнальных протоколов. При использовании определенных моделей маршрутизаторов дополнительно доступны функции межсетевого экранирования с инспекцией трафика, IPS/IDS. Есть возможность сегментации филиальных сетей с использованием VRF. Есть возможность аутентификации (однофакторной) контрольных протоколов.

    При этом удаленный маршрутизатор по-умолчанию считается доверенным элементом сети т.е. не предполагаются и не учитываются случаи физической компрометации отдельных устройств и возможность несанкционированного к ним доступа, нет двухфакторной аутентификации компонентов решения, что в случае географически распределенной сети может нести серьезные дополнительные риски.
  • в SD-WAN по аналогии с DMVPN предусмотрена возможность шифрования пользовательских данных, но со значительно расширенными функциями сетевой безопасности и L3/VRF сегментации (МСЭ, IPS/IDS, URL-фильтрация, DNS-фильтрация, AMP/TG, SASE, TLS/SSL proxy и т.д.). При этом обмен ключами шифрования осуществляется более эффективно через vSmart контроллеры (а не напрямую), по заранее установленным сигнальным каналам, защищенным DTLS/TLS шифрованием на основе сертификатов безопасности. Что в свою очередь гарантирует безопасность такого обмена и обеспечивает лучшую масштабируемость решения в плоть до десятков тысяч устройств в одной сети.

    Все сигнальные соединения (контроллер-контроллер, контроллер маршрутизатор) также защищены на основе DTLS/TLS. Маршрутизаторы оснащаются сертификатами безопасности при производстве с возможностью замены/продления. Двухфакторная аутентификация достигается за счет обязательного и одновременного выполнения двух условий для возможности функционирования маршрутизатора/контроллера в SD-WAN сети:

    • Действующий сертификат безопасности
    • Явное и осознанное внесение администратором каждого компонента в белый список разрешенных устройств.





Функциональные отличия SD-WAN и DMVPN/PfR


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

AppQ (Application Quality) функции обеспечения качества передачи трафика бизнес-приложений


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

DMVPN самостоятельно не предоставляет таких механизмов. Лучшее, что возможно сделать в классической DMVPN сети, это классифицировать исходящий трафик по приложениям и приоритезировать его при передаче в направлении WAN-канала. Выбор DMVPN туннеля обусловлен в этом случае только его доступностью и результатом работы протоколов маршрутизации. При этом никак не учитывается сквозное состояние пути/туннеля и его возможная частичная деградация с точки зрения ключевых метрик, значимых для сетевых приложений задержка, вариация задержки (джиттер) и потери (%). В связи с этим напрямую сравнивать классический DMVPN c SD-WAN в части решения AppQ задач теряет всякий смысл DMVPN не может решить эту задачу. При добавлении в этот контекст технологии Cisco Performance Routing (PfR) ситуация меняется и сравнение с Cisco SD-WAN становится более целесообразным.

Прежде, чем перейти к обсуждению различий, коротко о том, в чем технологии схожи. Итак, обе технологии:

  • имеют в наличии механизм, который позволяет динамически оценить состояние каждого установленного туннеля в разрезе определенных метрик как минимум, задержка, вариация задержки и потери пакетов (%)
  • используют определенный набор инструментов для формирования, распространения и применения правил (политик) управления трафиком с учетом результата измерения состояния ключевых метрик туннелей.
  • классифицируют трафик приложений на уровнях L3-L4 (DSCP) модели OSI или по L7 сигнатурам приложений на основе встроенных в маршрутизатор DPI механизмов
  • позволяют для значимых приложений определить допустимые пороговые значения метрик, правила передачи трафика по-умолчанию, правила перемаршрутизации трафика при превышении пороговых значений.
  • при инкапсуляции трафика в GRE/IPSec используют уже устоявшейся в индустрии механизм переноса внутренней DSCP маркировки во внешний GRE/IPSEC заголовок пакета, что позволяет синхронизировать политики QoS организации и оператора связи (при наличии соответствующего SLA).



Как отличаются механизмы оценки сквозных метрик SD-WAN и DMVPN/PfR?


DMVPN/PfR

  • Для оценки стандартных метрик состояния туннеля используются как активные, так и пассивные программные сенсоры (Probes). Активные на основе пользовательского трафика, пассивные эмулируют такой трафик (при его отсутствии).
  • Тонкая настройка таймеров и условий обнаружения деградации отсутствует алгоритм фиксирован.
  • Дополнительно доступно измерение используемой полосы пропускания в исходящем направлении. Что добавляет DMVPN/PfR дополнительную гибкость управления трафиком.
  • При этом некоторые механизмы PfR при превышении метрик полагаются на обратную сигнальную связь в виде специальных TCA (Threshold Crossing Alert) сообщений, которые должны исходить от получателя трафика в сторону источника, что в свою очередь предполагает, что состояния измеряемых каналов должно быть как минимум достаточно для передачи таких TCA-сообщений. Что в большинстве случаев не является проблемой, но очевидно не может быть гарантировано.

SD-WAN

  • Для сквозной оценки стандартных метрик состояния туннеля используется протокол BFD в echo-режиме. При этом специальной обратной связи в виде TCA или подобных сообщений не требуется соблюдается изолированность доменов отказа. Также не требуется присутствие пользовательского трафика для оценки состояния туннеля.
  • Есть возможность тонкой настройки таймеров BFD для регулирования скорости срабатывания и чувствительности алгоритма к деградациям канала связи от нескольких секунд до минут.


  • На момент написания статьи в каждом из туннелей предусмотрена только одна BFD сессия. Потенциально это создает меньшую гранулярность при анализе состояния туннеля. В действительности это может стать ограничением только в случае использования WAN-подключения на базе MPLS L2/L3 VPN с согласованным QoS SLA если DSCP-маркировка BFD трафика (после инкапсуляции в IPSec/GRE) будет совпадать с высокоприоритетной очередью в сети оператора связи, то это может повлиять на точность и скорость обнаружения деградации для низкоприоритетного трафика. При этом есть возможность изменения маркировки BFD по-умолчанию для снижения риска возникновения подобных ситуаций. В следующих версиях ПО Cisco SD-WAN ожидается появление более тонкой настройки BFD, а также возможность запуска нескольких BFD сессий в рамках одного туннеля с индивидуальными DSCP-значениями (для разных приложений).
  • BFD дополнительно позволяет оценить максимальный размера пакета, который возможно передать по тому или иному туннелю без фрагментации. Это позволяет SD-WAN динамически настраивать такие параметры, как MTU и TCP MSS Adjust, чтобы максимально эффективно использовать доступную полосу пропускания на каждом канале.
  • В SD-WAN также доступна опция синхронизации QoS с операторов связи не только на основе L3 DSCP поля, но и на основе L2 CoS значений, которые могут автоматически формироваться в филиальной сети специализированными устройствами например, IP-телефонами

Как отличаются возможности, способы определения и применения AppQ политик?


Политики DMVPN/PfR:


  • Определяются на маршрутизаторе(-ах) центрального филиала (ЦФ) через командную строку CLI или CLI-шаблоны конфигураций. Формирование CLI-шаблонов требует подготовки и знания синтаксиса политик.


  • Определяются глобально без возможности индивидуальной настройки/изменения под требования отдельных сегментов сети.
  • Интерактивное формирование политик в графическом интерфейсе не предусмотрено.
  • Отслеживание изменений, наследование, создание нескольких версий политик для быстрого переключения не предусмотрено.
  • Распространяются автоматически на маршрутизаторы удаленных филиалов. При этом используется те же каналы связи, что и для передачи пользовательских данных. При отсутствии канала связи между центральным и удаленным филиалом распространение/изменение политик невозможно.
  • Применяются на каждом маршрутизаторе и при необходимости модифицируют результат стандартных протоколов маршрутизации, имея более высокий приоритет.
  • Для случаев, когда все WAN-каналы филиала испытывают значительные потери трафика, механизмов компенсации не предусмотрено.

Политики SD-WAN:


  • Определяются в графическом интерфейсе vManage через интерактивный мастер шаблонов.
  • Поддерживают создание нескольких политик, копирование, наследование, переключение между политиками в реальном режиме времени.
  • Поддерживают индивидуальную настройку политики под разные сегменты (филиалы) сети
  • Распространяются, используя любой доступный сигнальный канал между контроллером и маршрутизатором и/или vSmart не зависят напрямую от data-plane связности между маршрутизаторами. При этом конечно требуется IP-связность между самим маршрутизатором и контроллерами.

  • Для случаев, когда все доступные каналы филиала испытывают значительные потери данных, превышающие допустимые пороговые значения для критичных приложений, возможно использование дополнительных механизмов, повышающих надежность передачи:

    • FEC (Forward Error Correction) использует специальный алгоритм избыточного кодирования. При передаче критичного трафика по каналам со значительным процентом потерь, FEC может быть автоматически активирован и позволяет при необходимости восстановить потерянную часть данных. При этом незначительно повышается используемая полоса передачи, но значительно повышается надежность.

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

Возможности Cisco SD-WAN, без прямых аналогов в DMVPN/PfR


Архитектура решения Cisco SD-WAN в некоторых случая позволяет получить возможности, реализация которых в рамках DMVPN/PfR либо крайне затруднена, либо нецелесообразна в силу необходимых трудозатрат, либо вообще невозможна. Рассмотрим наиболее интересные из них:

Traffic-Engineering (TE)


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

Сложность реализации TE заключается в необходимости заранее вычислить и зарезервировать (проверить) альтернативный путь. В MPLS сетях операторов связи эту задачу решают, используя такие технологии, как MPLS Traffic-Engineering с расширениями IGP протоколов и RSVP протокола. Также в последнее время все большую популярность набирает технология Segment Routing, которая более оптимизирована для централизованной настройки и оркестрации. В классических WAN сетях эти технологии, как правило, не представлены или сведены до использования hop-by-hop механизмов вроде Policy-Based Routing (PBR), которые способны ответвить трафик, но реализуют это на каждом маршрутизаторе отдельно без учета общего состояния сети или результата PBR на предыдущем или последующих шагах. Итог применения этих вариантов TE неутешительный MPLS TE ввиду сложности настройки и эксплуатации, используют, как правило, только в самой критичной части сети (ядро), а PBR используют на отдельных маршрутизаторах без возможности сформировать некую единую PBR политику на всей сети. Очевидно, это касается и сетей на базе DMVPN.



SD-WAN в этом плане предлагает гораздо более элегантное решение, которое не только легко настраивается, но и значительно лучше масштабируется. Это является результатом используемых архитектур control-plane и policy-plane. Реализация policy-plane в SD-WAN позволяет централизовано определить политику TE какой трафик интересует? для каких VPN? через какие узлы/туннели необходимо или наоборот запрещено формировать альтернативный маршрут? В свою очередь централизация управления control-plane на базе vSmart контроллеров позволяет модифицировать результаты маршрутизации, не прибегая к настройкам отдельных устройств маршрутизаторы уже видят только результат той логики, которая была сформирована в интерфейсе vManage и передана для применения на vSmart.

Service-chaining (Сервисные цепочки)


Формирование сервисных цепочек еще более трудоемкая задача в классической маршрутизации, чем уже описанный механизм Traffic-Engineering. Ведь в этом случае необходимо не только сформировать некий специальный маршрут для определенного сетевого приложения, но и обеспечить возможность вывода трафика из сети на определенных (или на всех) узлах SD-WAN сети для обработки специальным приложением или сервисом (МСЭ, Балансировка, Кэширование, Инспекция трафика и т.п.). При этом необходимо иметь возможность контролировать состояние этих внешних сервисов, чтобы не допускать ситуаций black-holing, а также нужны механизмы позволяющие размещать такие однотипные внешние сервисы в различных гео-локациях с возможностью сети автоматически выбирать наиболее оптимальный сервисный узел для обработки трафика того или иного филиала. В случае Cisco SD-WAN это достаточно легко достичь, создав соответствующую централизованную политику, которая склеит все аспекты целевой сервисной цепочки в единое целое и автоматически изменит логику data-plane и control-plane только там и тогда, где это необходимо.



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

Что в итоге?


Очевидно, что и DMVPN (совместно или без Performance Routing) и Cisco SD-WAN решают в конечном итоге очень похожие задачи по отношению к распределенной WAN сети организации. При этом существенные архитектурные и функциональные отличия технологии Cisco SD-WAN выводят процесс решения этих задач на другой качественный уровень. Резюмируя, можно отметить следующие значительные отличия технологий SD-WAN и DMVPN/PfR:

  • DMVPN/PfR в целом используют проверенные временем технологии построения наложенных VPN сетей и в части data-plane схожи с более современной SD-WAN технологией, при этом есть ряд ограничений в лице обязательной статической конфигурации маршрутизаторов и выбор топологий ограничен Hub-n-Spoke. С другой стороны, у DMVPN/PfR есть некоторые функциональные возможности, которые пока недоступны в рамках SD-WAN (речь о per-application BFD).
  • В рамках control-plane технологии отличаются принципиально. С учетом централизованной обработки сигнальных протоколов SD-WAN позволяет, в частности, значительно сузить домены отказа и развязать процесс передачи пользовательского трафика от сигнального взаимодействия временная недоступность контроллеров не влияет на возможность передачи пользовательского трафика. В то же время временная недоступность какого-либо филиала (в том числе центрального) никак не влияет возможность остальных филиалов взаимодействовать друг с другом и контроллерами.
  • Архитектура формирования и применения политик управления трафиком в случае SD-WAN также превосходит таковую в DMVPN/PfR значительно лучше реализовано гео-резервирование, нет привязки к Hub, больше возможностей по тонкой настройки политик, список реализуемых сценариев управления трафиком также значительно больше.
  • Процесс оркестрации решения также значительно отличается. DMVPN предполагает наличие заранее известных параметров, которые должны быть каким-то образом отражены в конфигурации, что несколько ограничивает гибкость решения и возможность динамических изменений. В свою очередь SD-WAN исходит из парадигмы, что в начальный момент времени подключения маршрутизатор не знает ничего о своих контроллерах, но знает у кого можно спросить этого достаточно не только для автоматического установления связи с контроллерами, но и для автоматического формирования полно связной data-plane топологии, которую затем можно гибко настроить/изменить с помощью политик.
  • В части централизованного управления, автоматизации и мониторинга SD-WAN ожидаемо превосходит возможности DMVPN/PfR, которые стали результатом развития классических технологий и в большей степени полагаются на командную строку CLI и применение систем NMS на основе шаблонов.
  • В SD-WAN по сравнению с DMVPN требования безопасности вышли на другой качественный уровень. Главные принципы нулевое доверие, масштабируемость и двухфакторная аутентификация.

Из этих несложных выводов может сложиться неверное впечатление, что создание сети на базе DMVPN/PfR потеряло сегодня всякую актуальность. Это конечно не совсем так. Например, в случаях, когда на сети используется множество устаревшего оборудования и нет возможности его заменить, DMVPN может позволить объединить старые и новые устройства в единую гео-распределенную сеть с большим количеством описанных выше преимуществ.

С другой стороны следует помнить, что Все актуальные корпоративные маршрутизаторы Cisco на базе IOS XE (ISR 1000, ISR 4000, ASR 1000, CSR 1000v) сегодня поддерживают любой режим работы и классическую маршрутизацию и DMVPN и SD-WAN выбор определяется текущими потребностями и пониманием, что в любой момент на том же самом оборудовании можно начать двигаться в сторону более продвинутой технологии.
Подробнее..

Перевод MPLS L3VPN поверх DMVPN

23.04.2021 18:05:42 | Автор: admin

Кросспостинг, оригинальная публикация

DMVPN является известным решением для построения топологий hub&spoke. В ряде случаев может понадобиться поддержка изолированной передачи трафика различных клиентов. Конечно, можно построить DMVPN туннель в каждом VRF; однако в реальной жизни такой подход не является достаточно масштабируемым. В такой ситуации на ум приходит MPLS, который зарекомендовал себя в корпоративных и провайдерских сетях.

GRE поддерживает инкапсуляцию различных PDU, в том числе и MPLS, поэтому, на первый взгляд, не должно возникнуть проблем на уровне передачи трафика. С управляющими протоколами, однако, ситуация обстоит несколько сложнее. LDP и RSVP должны установить соседство перед тем, как обменяться какими-либо данными. Масштабируемость этих протоколов обусловлена использованием мультикаста для обнаружения соседей и обмена с ними необходимыми параметрами протокола. Ручная настройка LDP/RSVP соседства в DMVPN сведёт на нет масштабируемость, поэтому такой сценарий статья не рассматривает. Использование же мультикаста ограничивает функциональность решения, поскольку spoke могут обмениваться такими сообщениями только с hub, что исключает наличие spoke-to-spoke связности с использованием MPLS.

Впрочем, существует третье решение, которое является достаточно масштабируемым, а также способно обеспечить MPLS-связность spoke-узлов между собой это BGP labeled unicast (BGP LU). Существует несколько способов превратить spoke-маршрутизатор в PE (например, первый вариант отправить пакет с VPN меткой напрямую другому spoke, аналог второй фазы DMVPN; второй вариант hub принимает непосредственное участие в передаче пакета внутри VRF, выполняя перенаправление пакета, как в третьей фазе DMVPN); однако в определённых случаях может возникнуть необходимость разместить PE за spoke.

Как обычно, соберём лабу и итеративно построим рабочее решение. Ниже приведена используемая топология в рамках рассмотрения 2547oDMVPN:

Схема стендаСхема стенда

Роли маршрутизаторов:

  • R1, R5, R7 (and R6 later) MPLS PE;

  • R3 провайдер для DMVPN;

  • R2 DMVPN hub;

  • R4, R6 DMVPN spokes.

Протоколы маршрутизации:

  • R1-R2, R4-R5, R6-R7 OSPF на площадке организации;

  • R3 OSPF провайдера, обеспечивающий связность между маршрутизаторами DMVPN;

  • R1, R5, R7 (R6) MP-BGP VPNv4 AF;

  • R2, R4, R6 MP-BGP IPv4 AF;

Loopback0 отвечает за идентификацию маршрутизатора в сети, например, за назначение OSPF RID. Loopback1 является интерфейсом, с которого маршрутизаторы устанавливают BGP LU сессии; причины такой настройки рассмотрены далее в статье. Loopback2 эмулирует клиентские сети внутри VRF.

Начнём с базовой конфигурации PE:

R1(config)# vrf definition AR1(config-vrf)# rd 1:1R1(config-vrf)# address-family ipv4R1(config-vrf-af)# route-target export 1:1R1(config-vrf-af)# route-target import 1:1R1(config-if)# interface Loopback0R1(config-if)# ip address 1.1.1.1 255.255.255.255R1(config)# interface Loopback2R1(config-if)# vrf forwarding AR1(config-if)# ip address 1.1.1.1 255.255.255.255R1(config)# interface FastEthernet0/0R1(config-if)# ip address 192.168.12.1 255.255.255.0R1(config-if)# mpls ldp router-id Loopback0R1(config)# router ospf 1R1(config-router)# mpls ldp autoconfigR1(config-router)# router-id 1.1.1.1R1(config-router)# network 0.0.0.0 255.255.255.255 area 0R1(config)# router bgp 1R1(config-router)# template peer-policy L3VPNR1(config-router-ptmp)# send-community bothR1(config-router-ptmp)# exit-peer-policyR1(config-router)# template peer-session SESSIONR1(config-router-stmp)# remote-as 1R1(config-router-stmp)# update-source Loopback0R1(config-router-stmp)# exit-peer-sessionR1(config-router)# bgp router-id 1.1.1.1R1(config-router)# no bgp default ipv4-unicastR1(config-router)# neighbor 5.5.5.5 inherit peer-session SESSIONR1(config-router)# neighbor 7.7.7.7 inherit peer-session SESSIONR1(config-router)# address-family vpnv4R1(config-router-af)# neighbor 5.5.5.5 activateR1(config-router-af)# neighbor 5.5.5.5 send-community extendedR1(config-router-af)# neighbor 5.5.5.5 inherit peer-policy L3VPNR1(config-router-af)# neighbor 7.7.7.7 activateR1(config-router-af)# neighbor 7.7.7.7 send-community extendedR1(config-router-af)# neighbor 7.7.7.7 inherit peer-policy L3VPNR1(config-router-af)# exit-address-familyR1(config-router)# address-family ipv4 vrf AR1(config-router-af)# redistribute connectedR1(config-router-af)# exit-address-family
R5(config)# vrf definition AR5(config-vrf)# rd 1:1R5(config-vrf)# address-family ipv4R5(config-vrf-af)# route-target export 1:1R5(config-vrf-af)# route-target import 1:1R5(config-vrf-af)# exit-address-familyR5(config-vrf)# interface Loopback0R5(config-if)# ip address 5.5.5.5 255.255.255.255R5(config-if)# interface Loopback2R5(config-if)# vrf forwarding AR5(config-if)# ip address 5.5.5.5 255.255.255.255R5(config-if)# interface FastEthernet0/0R5(config-if)# ip address 192.168.45.5 255.255.255.0R5(config-if)# mpls ldp router-id Loopback0R5(config)# router ospf 1R5(config-router)# mpls ldp autoconfigR5(config-router)# router-id 5.5.5.5R5(config-router)# network 0.0.0.0 255.255.255.255 area 0R5(config-router)# router bgp 1R5(config-router)# template peer-policy L3VPNR5(config-router-ptmp)# send-community bothR5(config-router-ptmp)# exit-peer-policyR5(config-router)# template peer-session SESSIONR5(config-router-stmp)# remote-as 1R5(config-router-stmp)# update-source Loopback0R5(config-router-stmp)# exit-peer-sessionR5(config-router)# bgp router-id 5.5.5.5R5(config-router)# no bgp default ipv4-unicastR5(config-router)# neighbor 1.1.1.1 inherit peer-session SESSIONR5(config-router)# neighbor 7.7.7.7 inherit peer-session SESSIONR5(config-router)# address-family vpnv4R5(config-router-af)# neighbor 1.1.1.1 activateR5(config-router-af)# neighbor 1.1.1.1 send-community extendedR5(config-router-af)# neighbor 1.1.1.1 inherit peer-policy L3VPNR5(config-router-af)# neighbor 7.7.7.7 activateR5(config-router-af)# neighbor 7.7.7.7 send-community extendedR5(config-router-af)# neighbor 7.7.7.7 inherit peer-policy L3VPNR5(config-router-af)# exit-address-familyR5(config-router)# address-family ipv4 vrf AR5(config-router-af)# redistribute connectedR5(config-router-af)# exit-address-family
R7(config)# vrf definition AR7(config-vrf)# rd 1:1R7(config-vrf)# address-family ipv4R7(config-vrf-af)# route-target export 1:1R7(config-vrf-af)# route-target import 1:1R7(config-vrf-af)# exit-address-familyR7(config-vrf)# interface Loopback0R7(config-if)# ip address 7.7.7.7 255.255.255.255R7(config-if)# interface Loopback2R7(config-if)# vrf forwarding AR7(config-if)# ip address 7.7.7.7 255.255.255.255R7(config-if)# interface FastEthernet0/0R7(config-if)# ip address 192.168.67.7 255.255.255.0R7(config-if)# mpls ldp router-id Loopback0R7(config)# router ospf 1R7(config-router)# mpls ldp autoconfigR7(config-router)# router-id 7.7.7.7R7(config-router)# network 0.0.0.0 255.255.255.255 area 0R7(config-router)# router bgp 1R7(config-router)# template peer-policy L3VPNR7(config-router-ptmp)# send-community bothR7(config-router-ptmp)# exit-peer-policyR7(config-router)# template peer-session SESSIONR7(config-router-stmp)# remote-as 1R7(config-router-stmp)# update-source Loopback0R7(config-router-stmp)# exit-peer-sessionR7(config-router)# bgp router-id 7.7.7.7R7(config-router)# bgp log-neighbor-changesR7(config-router)# no bgp default ipv4-unicastR7(config-router)# neighbor 1.1.1.1 inherit peer-session SESSIONR7(config-router)# neighbor 5.5.5.5 inherit peer-session SESSIONR7(config-router)# address-family ipv4R7(config-router-af)# exit-address-familyR7(config-router)# address-family vpnv4R7(config-router-af)# neighbor 1.1.1.1 activateR7(config-router-af)# neighbor 1.1.1.1 send-community extendedR7(config-router-af)# neighbor 1.1.1.1 inherit peer-policy L3VPNR7(config-router-af)# neighbor 5.5.5.5 activateR7(config-router-af)# neighbor 5.5.5.5 send-community extendedR7(config-router-af)# neighbor 5.5.5.5 inherit peer-policy L3VPNR7(config-router-af)# exit-address-familyR7(config-router)# address-family ipv4 vrf AR7(config-router-af)# redistribute connectedR7(config-router-af)# exit-address-family

Следующий шаг подключить DMVPN маршрутизаторы к локальным сегментам сети:

R2(config)# interface Loopback0R2(config-if)# ip address 2.2.2.2 255.255.255.255R2(config-if)# interface FastEthernet0/0R2(config-if)# ip address 192.168.12.2 255.255.255.0R2(config-if)# mpls ldp router-id Loopback0R2(config)# router ospf 1R2(config-router)# mpls ldp autoconfigR2(config-router)# router-id 2.2.2.2R2(config-router)# redistribute bgp 1 subnetsR2(config-router)# passive-interface defaultR2(config-router)# no passive-interface FastEthernet0/0R2(config-router)# no passive-interface Loopback0R2(config-router)# network 0.0.0.0 255.255.255.255 area 0
R4(config)# interface Loopback0R4(config-if)# ip address 4.4.4.4 255.255.255.255R4(config-if)# interface FastEthernet0/0R4(config-if)# ip address 192.168.45.4 255.255.255.0R4(config-if)# mpls ldp router-id Loopback0R4(config)#router ospf 1R4(config-router)# mpls ldp autoconfigR4(config-router)# router-id 4.4.4.4R4(config-router)# redistribute bgp 1 subnetsR4(config-router)# passive-interface defaultR4(config-router)# no passive-interface FastEthernet0/0R4(config-router)# no passive-interface Loopback0R4(config-router)# network 0.0.0.0 255.255.255.255 area 0
R6(config)# interface Loopback0R6(config-if)# ip address 6.6.6.6 255.255.255.255R6(config-if)# interface FastEthernet0/0R6(config-if)# ip address 192.168.67.6 255.255.255.0R6(config-if)# mpls ldp router-id Loopback0R6(config)# router ospf 1R6(config-router)# mpls ldp autoconfigR6(config-router)# redistribute bgp 1 subnetsR6(config-router)# passive-interface defaultR6(config-router)# no passive-interface FastEthernet0/0R6(config-router)# no passive-interface Loopback0R6(config-router)# network 0.0.0.0 255.255.255.255 area 0

Наконец последний этап подготовки к рассмотрению BGP LU настройка DMVPN. В статье использован подход front-door VRF, чтобы уменьшить объём посторонней информации в глобальной таблице маршрутизации:

R3(config)# interface Loopback0R3(config-if)# ip address 3.3.3.3 255.255.255.255R3(config-if)# interface FastEthernet0/1R3(config-if)# ip address 192.168.34.3 255.255.255.0R3(config-if)# interface FastEthernet1/0R3(config-if)# ip address 192.168.23.3 255.255.255.0R3(config-if)# interface FastEthernet1/1R3(config-if)# ip address 192.168.36.3 255.255.255.0R3(config-if)# router ospf 1R3(config-router)# router-id 3.3.3.3R3(config-router)# network 0.0.0.0 255.255.255.255 area 0
R2(config)# vrf definition FVRFR2(config-vrf)# rd 1:1R2(config-vrf)# address-family ipv4R2(config-vrf-af)# exit-address-familyR2(config-vrf)# interface Tunnel0R2(config-if)# ip address 192.168.0.2 255.255.255.0R2(config-if)# no ip redirectsR2(config-if)# ip nhrp map multicast dynamicR2(config-if)# ip nhrp network-id 1R2(config-if)# ip nhrp redirectR2(config-if)# tunnel source FastEthernet1/0R2(config-if)# tunnel mode gre multipointR2(config-if)# tunnel vrf FVRFR2(config-if)# interface FastEthernet1/0R2(config-if)# vrf forwarding FVRFR2(config-if)# ip address 192.168.23.2 255.255.255.0R2(config-if)# router ospf 2 vrf FVRFR2(config-router)# router-id 192.168.23.2R2(config-router)# network 0.0.0.0 255.255.255.255 area 0
R4(config)# vrf definition FVRFR4(config-vrf)# rd 1:1R4(config-vrf)# address-family ipv4R4(config-vrf-af)# exit-address-familyR4(config-vrf)# interface Tunnel0R4(config-if)# ip address 192.168.0.4 255.255.255.0R4(config-if)# no ip redirectsR4(config-if)# ip nhrp network-id 1R4(config-if)# ip nhrp nhs 192.168.0.2 nbma 192.168.23.2 multicastR4(config-if)# ip nhrp shortcutR4(config-if)# tunnel source FastEthernet0/1R4(config-if)# tunnel mode gre multipointR4(config-if)# tunnel vrf FVRFR4(config-if)# interface FastEthernet0/1R4(config-if)# vrf forwarding FVRFR4(config-if)# ip address 192.168.34.4 255.255.255.0R4(config-if)# router ospf 2 vrf FVRFR4(config-router)# router-id 192.168.34.4R4(config-router)# network 0.0.0.0 255.255.255.255 area 0
R6(config)# vrf definition FVRFR6(config-vrf)# rd 1:1R6(config-vrf)# address-family ipv4R6(config-vrf-af)# exit-address-familyR6(config-vrf)# interface Tunnel0R6(config-if)# ip address 192.168.0.6 255.255.255.0R6(config-if)# no ip redirectsR6(config-if)# ip nhrp network-id 1R6(config-if)# ip nhrp nhs 192.168.0.2 nbma 192.168.23.2 multicastR6(config-if)# ip nhrp shortcutR6(config-if)# tunnel source FastEthernet1/1R6(config-if)# tunnel mode gre multipointR6(config-if)# tunnel vrf FVRFR6(config-if)# interface FastEthernet1/1R6(config-if)# vrf forwarding FVRFR6(config-if)# ip address 192.168.36.6 255.255.255.0R6(config-if)# router ospf 2 vrf FVRFR6(config-router)# network 0.0.0.0 255.255.255.255 area 0

Время заняться делом. Необходимым условием для L3VPN является наличие рабочего LSP между PE. Поскольку ни LDP, ни RSVP в рамках DMVPN для этой задачи не подходят, используем MP-BGP для передачи следующей информации:

  • адреса loopback;

  • соответствующие им MPLS метки.

Звучит довольно просто. Что насчёт поддержки MPLS на интерфейсах?

R2# sho mpls interfacesInterface              IP            Tunnel   BGP Static OperationalFastEthernet0/0        Yes (ldp)     No       No  No     Yes  

На Tunnel0 MPLS пока не работает. Нам нужно разрешить только поддержку MPLS пакетов, не включая LDP, поэтому команда mpls ip не подходит. Впрочем, существует ещё одна менее известная команда, отвечающая нашей задаче:

R2(config)#interface Tunnel0R2(config-if)#mpls bgp forwardingR2#sho mpls interfacesInterface              IP            Tunnel   BGP Static OperationalFastEthernet0/0        Yes (ldp)     No       No  No     Yes        Tunnel0                No            No       Yes No     Yes

После выполнения этой команды на всех spoke можно приступать к настройке BGP. В этой статье мы используем iBGP между hub и spoke; hub выполняет роль route-reflector и принимает входящие BGP-соединения:

R2(config)# router bgp 1R2(config-router)# bgp router-id 2.2.2.2R2(config-router)# bgp listen range 192.168.0.0/24 peer-group DMVPNR2(config-router)# no bgp default ipv4-unicastR2(config-router)# neighbor DMVPN peer-groupR2(config-router)# neighbor DMVPN remote-as 1R2(config-router)# neighbor DMVPN update-source Tunnel0R2(config-router)# address-family ipv4R2(config-router-af)# network 1.1.1.1 mask 255.255.255.255R2(config-router-af)# neighbor DMVPN activateR2(config-router-af)# neighbor DMVPN route-reflector-clientR2(config-router-af)# neighbor DMVPN send-label
R4(config)# router bgp 1R4(config-router)# bgp router-id 4.4.4.4R4(config-router)# no bgp default ipv4-unicastR4(config-router)# neighbor 192.168.0.2 remote-as 1R4(config-router)# neighbor 192.168.0.2 update-source Tunnel0R4(config-router)# address-family ipv4R4(config-router-af)# network 5.5.5.5 mask 255.255.255.255R4(config-router-af)# neighbor 192.168.0.2 activateR4(config-router-af)# neighbor 192.168.0.2 send-label
R6(config)# router bgp 1R6(config-router)# bgp router-id 6.6.6.6R6(config-router)# no bgp default ipv4-unicastR6(config-router)# neighbor 192.168.0.2 remote-as 1R6(config-router)# neighbor 192.168.0.2 update-source Tunnel0R6(config-router)# address-family ipv4R6(config-router-af)# network 7.7.7.7 mask 255.255.255.255R6(config-router-af)# neighbor 192.168.0.2 activateR6(config-router-af)# neighbor 192.168.0.2 send-label

Проверим, есть ли IP-связность между PE:

R5#ping 1.1.1.1 so lo 0Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:Packet sent with a source address of 5.5.5.5!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 48/57/64 ms

Достаточно ли этого для связности внутри VRF?

R5#ping vrf A 1.1.1.1 so lo 0Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:Packet sent with a source address of 5.5.5.5.....Success rate is 0 percent (0/5)

К сожалению, решение несколько сложнее, чем могло бы показаться на первый взгляд. Причина отсутствия связности нерабочий LSP между PE:

R5#ping mpls ipv4 1.1.1.1/32 source 5.5.5.5Sending 5, 100-byte MPLS Echos to 1.1.1.1/32,     timeout is 2 seconds, send interval is 0 msec:Codes: '!' - success, 'Q' - request not sent, '.' - timeout,  'L' - labeled output interface, 'B' - unlabeled output interface,  'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,  'M' - malformed request, 'm' - unsupported tlvs, 'N' - no label entry,  'P' - no rx intf label prot, 'p' - premature termination of LSP,  'R' - transit router, 'I' - unknown upstream index,  'X' - unknown return code, 'x' - return code 0Type escape sequence to abort.BBBBBSuccess rate is 0 percent (0/5)

Если быть точным, место отказа R4:

R4#sho mpls forwarding-table 1.1.1.1 32Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    Label      Label      or Tunnel Id     Switched      interface              19         No Label   1.1.1.1/32       1125          Tu0        192.168.0.2

Впрочем, является ли R4 местом возникновения проблемы? Разве R2 не должен был послать R4 префикс вместе с меткой?

R4#sho ip bgp labels   Network          Next Hop      In label/Out label   1.1.1.1/32       192.168.12.1   nolabel/nolabel   2.2.2.2/32       192.168.0.2    nolabel/imp-null   <output omitted>

Важное наблюдение: 1.1.1.1/32 не имеет сопутствующей MPLS метки, однако 2.2.2.2/32 ведёт себя так, как и было задумано. Также стоит обратить внимание на next-hop для 1.1.1.1/32 это адрес R1, а не R2. R2 импортировал маршрут в BGP, сохранив оригинальный next-hop из таблицы маршрутизации. Поскольку сессия между R2 и R4 iBGP, значение next-hop для 1.1.1.1/32 не меняется. Для 2.2.2.2/32 значение next-hop адрес R2. Это тонкое отличие, однако, является ключевым: BGP назначает префиксу MPLS метку только в том случае, когда BGP маршрутизатор является next-hopом для этого префикса, т.е. входит в LSP.

В нашем случае нужно назначать метку только префиксам, импортированным локально, и не менять информацию от spoke:

R2(config)#router bgp 1R2(config-router)#address-family ipv4R2(config-router-af)#neighbor PEER next-hop-self ?    all  Enable next-hop-self for both eBGP and iBGP received paths  <cr>R2(config-router-af)#neighbor PEER next-hop-self

Эта команда довольно хитрая. По умолчанию она заставляет R2 изменять next-hop для маршрутов, которые импортированы локально или получены через eBGP; если нужно изменить next-hop для всех префиксов, включая те, которые получены по iBGP, нужно добавить ключевое слово all. Появилась ли связность?

R5#ping mpls ipv4 1.1.1.1/32 source 5.5.5.5<output omitted>Type escape sequence to abort.!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 56/65/72 msR5#R5#ping vrf A 1.1.1.1 so lo 0              Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:Packet sent with a source address of 5.5.5.5!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 52/80/108 msR5#R5#ping mpls ipv4 7.7.7.7/32 source 5.5.5.5<output omitted>Type escape sequence to abort.!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 56/60/64 msR5#R5#ping vrf A 7.7.7.7 so lo 2              Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 7.7.7.7, timeout is 2 seconds:Packet sent with a source address of 5.5.5.5!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 48/79/104 msR5#R5#traceroute 7.7.7.7 so lo 0Type escape sequence to abort.Tracing the route to 7.7.7.7VRF info: (vrf in name/id, vrf out name/id)  1 192.168.45.4 [MPLS: Label 22 Exp 0] 88 msec 80 msec 80 msec  2 192.168.0.6 [MPLS: Label 16 Exp 0] 52 msec 64 msec 52 msec  3 192.168.67.7 40 msec 64 msec 64 msec

Мы добились работы L3VPN поверх DMVPN. Впрочем, внимательный читатель, который повторял описанные шаги в собственной лабе, мог заметить следующее предупреждение, возникающее при настройке BGP LU:

R4(config-router-af)#neighbor 192.168.0.2 send-label%BGP: For distributing MPLS labels to IBGP peers, the update source should be set to a loopback interface

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

В рамках этого примера R1 устанавливает BGP сессию со своего интерфейса f0/0 до loopback интерфейса на R3, повторяя схему DMVPN. Control plane в данном случае будет работать без ошибок, тогда как связность на data plane LSP будет нарушена. Причина PHP, penultimate hop popping. Интерфейс f0/0 лежит в directly connected сети для R2, который анонсирует её с меткой implicit-null. Рассмотрим, что происходит с пакетом, который R3 отправит на R1:

  1. R3 добавляет VPN метку (например, 16) к пакету;

  2. R3 добавляет транспортную метку (implicit-null) к полученному MPLS кадру;

  3. R3 отправляет полученный кадр в сторону R2, при этом VPN метка находится на вершине стека.

Далее возможны два исхода: R2 не знает, что делать с кадром (VPN метка отсутствует в LFIB), и отбрасывает его, или же R2 шлёт кадр в неверном направлении (случайное совпадение VPN метки в кадре и транспортной метки в LFIB). В любом случае шансы R1 на получение кадра ничтожно малы. Стоит отметить, что использование explicit-null не решит проблему, поскольку для передачи кадра всё так же будет использована нижележащая VPN метка.

Впрочем, какое это имеет отношение к нашей изначальной топологии? Описанная проблема относится к некорректно настроенным PE-маршрутизаторам. Однако эта проблема становится актуальной и в нашей топологии, если spoke превратить в PE, поскольку BGP использует Tunnel0 для установления сессии. Можно попробовать перенастроить BGP на использование loopback, хотя это ни к чему хорошему не приведёт: LSP будет разорван, т.к. некому анонсировать метки для самих loopback обычно это задача LSP/RSVP. Впрочем, решение довольно простое: можно использовать loopback только для VPNv4 AF сессий и анонсировать соответствующие метки с помощью BGP LU:

R6(config)# vrf definition AR6(config-vrf)# rd 2:2R6(config-vrf)# address-family ipv4R6(config-vrf-af)# route-target export 1:1R6(config-vrf-af)# route-target import 1:1R6(config-vrf-af)# exit-address-familyR6(config-vrf)# interface Loopback1R6(config-if)# ip address 100.0.0.6 255.255.255.255R6(config-if)# interface Loopback2R6(config-if)# vrf forwarding AR6(config-if)# ip address 6.6.6.6 255.255.255.255R6(config-if)# router bgp 1R6(config-router)# template peer-policy L3VPNR6(config-router-ptmp)# send-community bothR6(config-router-ptmp)# exit-peer-policyR6(config-router)# template peer-session SESSIONR6(config-router-stmp)# remote-as 1R6(config-router-stmp)# update-source Loopback1R6(config-router-stmp)# exit-peer-sessionR6(config-router)# neighbor 1.1.1.1 inherit peer-session SESSIONR6(config-router)# neighbor 5.5.5.5 inherit peer-session SESSIONR6(config-router)# neighbor 7.7.7.7 inherit peer-session SESSIONR6(config-router)# address-family ipv4R6(config-router-af)# network 100.0.0.6 mask 255.255.255.255R6(config-router-af)# exit-address-familyR6(config-router)# address-family vpnv4R6(config-router-af)# neighbor 1.1.1.1 activateR6(config-router-af)# neighbor 1.1.1.1 send-community extendedR6(config-router-af)# neighbor 1.1.1.1 inherit peer-policy L3VPNR6(config-router-af)# neighbor 5.5.5.5 activateR6(config-router-af)# neighbor 5.5.5.5 send-community extendedR6(config-router-af)# neighbor 5.5.5.5 inherit peer-policy L3VPNR6(config-router-af)# neighbor 7.7.7.7 activateR6(config-router-af)# neighbor 7.7.7.7 send-community extendedR6(config-router-af)# neighbor 7.7.7.7 inherit peer-policy L3VPNR6(config-router-af)# exit-address-familyR6(config-router)# address-family ipv4 vrf AR6(config-router-af)# redistribute connectedR6(config-router-af)# exit-address-family

Теперь R6 участвует в L3VPN, и можно проверить наличие связности внутри VRF:

R6#tclsh                                                      R6(tcl)#foreach x {1.1.1.1 5.5.5.5 7.7.7.7} {ping vrf A $x so lo 2}Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:Packet sent with a source address of 6.6.6.6!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 28/59/84 msType escape sequence to abort.Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:Packet sent with a source address of 6.6.6.6!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 4/32/44 msType escape sequence to abort.Sending 5, 100-byte ICMP Echos to 7.7.7.7, timeout is 2 seconds:Packet sent with a source address of 6.6.6.6!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 1/9/16 ms

Наконец-то L3VPN поверх DMVPN работает так, как мы ожидали. Мне кажется, сложности описанной конструкции заключаются в следующем:

  • обладание тайным знанием о существовании BGP LU;

  • назначение MPLS метки только в том случае, если маршрутизатор является next-hopом для префикса;

  • понимание, в каких случаях PHP способен сломать LSP.

В этой статье мы обсудили настройку MPLS L3VPN поверх DMVPN (2547oDMVPN) с использованием iBGP LU для распространения MPLS меток в рамках опорной сети. Отличие от документированных способов это возможность разместить PE-маршрутизатор за hub/spokes без нарушения spoke-to-spoke связности поверх DMVPN. Что касается настройки с помощью eBGP, я бы хотел оставить её как домашнее задание для любознательных читателей.

Спасибо за рецензию: Анастасии Куралевой, Максиму Климанову

Подробнее..

Перевод Разбираемся на практике DMVPN и Per-Tunnel QoS

28.08.2020 20:21:37 | Автор: admin
В преддверии старта курса Network Engineer подготовили для вас перевод интересного материала



В DMVPN есть одна замечательная вещь, с которой я столкнулся некоторое время назад: DMVPN Per-Tunnel QoS. Очевидно, не один только я (как лабораторная крыса) считаю, что это круто. Каждый раз, когда я показываю это людям, я вижу, как загораются их глаза следствие того, что в их головах начинают светиться маленькие лампочки, указывающие на возникновение идей, где они могут это использовать.

Время выпустить на волю своего гика!





Предположим, что Branch_1 и Branch_2 находятся в одном DMVPN туннеле с DMVPN хабом Foxtrot14. Мы хотели бы применить политику QoS от хаба к споку для Branch_2, но не для Branch_1. Поскольку они находятся в одном mGRE туннеле, как же нам это сделать?



По сути то, что мы должны сделать это:

  • На DMVPN хабе:
    1. Настраиваем в разделе глобальной конфигурации различные политики QoS, которые вы хотите, чтобы хаб предлагал в качестве QoS политик для споков
    2. Применяем все политики, которые вы собираетесь предлагать спокам в туннельном интерфейсе DMVPN с помощью команды ip nhrp map group
  • На DMVPN споке настраиваем DMVPN интерфейс с названием отображенной группы (mapped group), которую вы хотели бы применить к нему.


На DMVPN хабе


Давайте разберемся с этим:

1) Настраиваем в разделе глобальной конфигурации различные политики QoS, которые вы хотите, чтобы хаб предлагал в качестве QoS политик для споков



Итак, в целом то, что вы можете видеть выше, это то, что мы настраиваем наш DMVPN хаб на 5 различных QoS предложений спокам.

  1. 1.5Mbps
  2. 2Mbps
  3. 5Mbps
  4. 10Mbps
  5. Без ограничения


2)Применяем все политики, которые вы собираетесь предлагать спокам в туннельном интерфейсе DMVPN с помощью команды ip nhrp map group



На DMVPN споке


На DMVPN споке настраиваем DMVPN интерфейс с названием отображенной группы (mapped group), которую вы хотели бы применить к нему..

Поэтому я просто перехожу к Echo3 (Branch_2) и помещаю команду ip nhrp group spoke-2Mbps в туннельный интерфейс спока.



Что же произойдет теперь? Echo3 просто помещает имя spoke-2Mbps в запрос регистрации NHRP. Вуаля! Это на самом деле так просто. Аккуратненько, да? Если вам нужно немного освежить знания по регистрации NHRP, почитайте Fun in the Lab: Sniffer Tracing a DMVPN Tunnel Startup. Там вы найдете основы запроса на регистрацию NHRP.

Посмотрим, как это выглядит в сети и на хабе DMVPN.

Вы можете получить актуальный файл pcap, который мы будем рассматривать вместе

dmvpn_tunnel_startup_per_tunnel_QoS.pcap < он находится в моем общедоступном Dropbox, и я планирую хранить его там в течение нескольких лет.

Готовы?

Мы собираемся рассмотреть Frame 18 и Frame 21 в отношении следующих сетей и IP-адресов. Поместите это ближе к трассировке сниффера, чтобы вы могли лучше сопоставлять IP-адреса.



Итак, первый frame 18. Запрос регистрации NHRP от Echo3 (Branch_2) выглядит совершенно нормально, пока мы не дойдем до NHRP Vendor Private Extension.



Хотите побаловать гика внутри себя?
www.branah.com/ascii-converter



Что происходит после того, как Frame 18 попадает в хаб DMVPN Foxtrot14? Потому что Echo3 (Branch_2) хочет, чтобы к нему применялось spoke-2Mbps, еще не означает, что это настроенная опция на хабе. Таким образом, вы снова увидите frame 21 в качестве ответа на регистрационный запрос, подтверждающий spoke-2Mbps в разделе вендора.

Что теперь?

Давайте перейдем на Foxtrot14 и посмотрим, что он думает об этой ситуации.



Чудесно! В том же mGRE туннеле у нас есть QoS, примененный к хабу для спок трафика к branch_2, но не к branch_1.

*ПРИМЕЧАНИЕ: первоначально этот пост был опубликован на этом сайте в 2015 году. Последний раз он был обновлен и отформатирован 15 февраля 2020 года.



Подробнее..

Spoke to spoke мультикаст в сетях DMVPN

26.03.2021 12:06:50 | Автор: admin

Кросспостинг, оригинальная публикация

Про настройку и диагностику технологии DMVPN в интернете написано немало статей. Однако про использование мультикаста поверх DMVPN лучшее, что мне удалось найти это маленькая заметка в Configuration Guide.

In DMVPN, it is recommended to configure a Rendezvous Point (RP) at or behind the hub. If there is an IP multicast source behind a spoke, the ip pim spt-threshold infinity command must be configured on spokes to avoid multicast traffic going through spoke-to-spoke tunnels.

Давайте выясним, в чем на самом деле заключается необходимость этой команды. Тестовая схема выглядит следующим образом.

Как можно заметить, это самый обыкновенный DMVPN Phase 2, собранный в GNS3. Интерфейсы Loopback на каждом маршрутизаторе позволяют смоделировать клиентские подсети; также логично разместить RP на Hub-маршрутизаторе как центральной точке логической топологии. Для удобства адресации примем Hub = R1, Spoke1 = R2, Spoke2 = R3, Internet = R4.

Настроим PIM и RP внутри DMVPN облака:

Hub(config)#interface Loopback0Hub(config-if)#ip address 1.1.1.1 255.255.255.255Hub(config-if)#ip pim sparse-modeHub(config)#interface Tunnel0Hub(config-if)#ip address 192.168.0.1 255.255.255.0Hub(config-if)#no ip redirectsHub(config-if)#no ip split-horizon eigrp 1Hub(config-if)#ip pim sparse-modeHub(config-if)#ip nhrp map multicast dynamicHub(config-if)#ip nhrp network-id 1Hub(config-if)#tunnel source FastEthernet0/0Hub(config-if)#tunnel mode gre multipointHub(config-if)#tunnel vrf AHub(config)#ip pim rp-address 1.1.1.1
Spoke1(config)#interface Loopback0Spoke1(config-if)#ip address 2.2.2.2 255.255.255.255Spoke1(config-if)#ip pim sparse-modeSpoke1(config)#interface Tunnel0Spoke1(config-if)#ip address 192.168.0.2 255.255.255.0Spoke1(config-if)#no ip redirectsSpoke1(config-if)#ip pim sparse-modeSpoke1(config-if)#ip nhrp network-id 1Spoke1(config-if)#ip nhrp nhs 192.168.0.1 nbma 192.168.14.1 multicastSpoke1(config-if)#tunnel source FastEthernet0/1Spoke1(config-if)#tunnel mode gre multipointSpoke1(config-if)#tunnel vrf ASpoke1(config)#ip pim rp-address 1.1.1.1
Spoke2(config)#interface Loopback0Spoke2(config-if)#ip address 3.3.3.3 255.255.255.255Spoke2(config-if)#ip pim sparse-modeSpoke2(config)#interface Tunnel0Spoke2(config-if)#ip address 192.168.0.3 255.255.255.0Spoke2(config-if)#no ip redirectsSpoke2(config-if)#ip pim sparse-modeSpoke2(config-if)#ip nhrp network-id 1Spoke2(config-if)#ip nhrp nhs 192.168.0.1 nbma 192.168.14.1 multicastSpoke2(config-if)#tunnel source FastEthernet1/0Spoke2(config-if)#tunnel mode gre multipointSpoke2(config-if)#tunnel vrf ASpoke2(config)#ip pim rp-address 1.1.1.1

На данном этапе есть связность между Spoke, а также необходимые протоколы управления групповым вещанием. Самое время подписаться на мультикаст поток на Spoke1:

Spoke1(config)#int lo 0Spoke1(config-if)#ip igmp join-group 224.1.1.1Spoke1#sho ip mroute(*, 224.1.1.1), 00:00:37/00:02:22, RP 1.1.1.1, flags: SJCL  Incoming interface: Tunnel0, RPF nbr 192.168.0.1  Outgoing interface list:   Loopback0, Forward/Sparse, 00:00:37/00:02:22

Запустим сам поток в виде ICMP echo request сообщений, отправляемых на multicast адрес, на Spoke2:

Spoke2#ping 224.1.1.1 source lo0 rep 1000 Type escape sequence to abort.Sending 1000, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:Packet sent with a source address of 3.3.3.3Reply to request 0 from 2.2.2.2, 156 ms....

Не работает, причём довольно хитрым образом: первый пакет проходит (мы получаем на него ответ), однако последующие почему-то пропадают. Взглянем на то, что происходит в данный момент, на уровне пакетов.

Spoke1:

Hub:

Итак, это Hub не шлёт пакеты потока после обработки самого первого пакета. С чего бы вдруг?

Hub#sho ip mroute<output omitted>(*, 224.1.1.1), 00:03:31/00:02:55, RP 1.1.1.1, flags: SP  Incoming interface: Null, RPF nbr 0.0.0.0  Outgoing interface list: Null(3.3.3.3, 224.1.1.1), 00:03:08/00:02:46, flags: PJT  Incoming interface: Tunnel0, RPF nbr 192.168.0.3  Outgoing interface list: Null

Список OIL (outgoing interface list) пуст, что и является причиной потери потока. Или не является? Почему же тогда прошёл самый первый пакет? Давайте взглянем на Hub за пару секунд до того:

Hub#sho ip mroute<output omitted>(*, 224.1.1.1), 00:00:13/00:03:16, RP 1.1.1.1, flags: S  Incoming interface: Null, RPF nbr 0.0.0.0  Outgoing interface list:   Tunnel0, Forward/Sparse, 00:00:13/00:03:16

(*,G) содержит Tunnel0, что ожидаемо; RPF сосед также пока неизвестен, поскольку ни один пакет из потока ещё не прошёл через Hub. А дальше следите за руками:

  1. Spoke2 шлёт самый первый мультикаст пакет внутри unicast сообщения RP-Register;

  2. Hub, он же RP, получает RP-Register и выполняет следующие два действия: отправляет пакет согласно OIL (Tunnel0); кроме того, отправляет PIM Join в сторону источника потока (Tunnel0);

  3. В режиме PIM-SM входящий интерфейс (IIF, incoming interface) не может присутствовать в OIL (RPF check), поскольку это может породить петлю; следовательно, Tunnel0 необходимо исключить из OIL в этот момент Spoke2 теряет поток.

Суть проблемы кроется в NBMA (non-broadcast multiple access) поведении DMVPN: Spoke2 логически находится в одном широковещательном сегменте со Spoke1, хотя физически это совсем не так (а Вы думали, Frame-Relay жил, Frame-Relay жив, Frame-Relay будет жить; надеюсь, это шутка). Впрочем, решение задачи довольно простое надо явно указать Hub, что Tunnel0 следует рассматривать не как один интерфейс, а как набор нескольких:

Hub(config)#interface Tunnel0Hub(config-if)#ip pim nbma-mode

Теперь таблица маршрутизации мультикаста правильная:

Hub#sho ip mroute(*, 224.1.1.1), 00:03:51/00:03:27, RP 1.1.1.1, flags: S Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list:  Tunnel0, 192.168.0.2, Forward/Sparse, 00:00:02/00:03:27(3.3.3.3, 224.1.1.1), 00:03:29/00:02:25, flags: JT  Incoming interface: Tunnel0, RPF nbr 192.168.0.3 Outgoing interface list:   Tunnel0, 192.168.0.2, Forward/Sparse, 00:00:02/00:03:27

Поскольку Tunnel0 теперь работает как несколько интерфейсов, таблица маршрутизации мультикаста содержит не только сам интерфейс, но и адреса как получателя (192.168.0.2), так и отправителя (192.168.0.3) потока. Стоит отметить ещё одну любопытную особенность поведения DMVPN, когда поток мультикаста идёт со стороны Hub в сторону Spoke. По умолчанию, DMVPN отправляет мультикаст каждому Spoke (ip nhrp map multicast dynamic), что успешно используют протоколы маршрутизации, отправляя служебную информацию или обновления мультикастом. Однако если сеть является географически распределённой (например, несколько регионов), такое поведение может быть нежелательным: мультикаст, отправленный во все регионы, в том числе туда, где нет PIM подписки, занимает полосу, после чего его отбрасывают все Spoke, кроме того, кому поток был действительно нужен. Такое поведение можно исправить использованием PIM NBMA режима для DMVPN, что позволяет различать Spoke по адресам на уровне мультикаста и отправлять поток только тем регионам, где на него есть подписка.

Настало время ещё раз проверить связность между Spoke для мультикаста:

Spoke2#ping 224.1.1.1 so lo 0 rep 1000 Type escape sequence to abort.Sending 1000, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:Packet sent with a source address of 3.3.3.3 Reply to request 0 from 2.2.2.2, 176 ms....

Ничего не поменялось, но мы упорные. Начнём проверять по порядку, начиная с Hub:

Hub#sho ip mroute(*, 224.1.1.1), 00:52:32/00:02:58, RP 1.1.1.1, flags: S Incoming interface: Null, RPF nbr 0.0.0.0 Outgoing interface list:  Tunnel0, 192.168.0.2, Forward/Sparse, 00:02:12/00:02:58(3.3.3.3, 224.1.1.1), 00:01:30/00:01:31, flags: PT Incoming interface: Tunnel0, RPF nbr 192.168.0.3  Outgoing interface list: Null

(S,G) запись неактивна (флаг P) на Hub, соответственно, OIL пуст. Очевидно, что это дело рук Spoke1, больше некому:

Spoke1#sho ip mroute<output omitted>(*, 224.1.1.1), 00:52:44/stopped, RP 1.1.1.1, flags: SJCL Incoming interface: Tunnel0, RPF nbr 192.168.0.1 Outgoing interface list:  Loopback0, Forward/Sparse, 00:09:18/00:02:26(3.3.3.3, 224.1.1.1), 00:01:39/00:01:20, flags: LJT Incoming interface: Tunnel0, RPF nbr 192.168.0.3 Outgoing interface list:   Loopback0, Forward/Sparse, 00:01:39/00:02:26

Вроде бы таблица правильная Но нет: RPF сосед Spoke 2, а должен быть Hub. Посмотрим внимательно на весь процесс ещё раз.

  1. Spoke2 отправляет первый пакет потока внутри RP-Register;

  2. Hub пересылает пакет Spoke1 и начинает построение SPT дерева в сторону Spoke2;

  3. Spoke1 получает первый пакет, создаёт новое состояние для потока в таблице маршрутизации, высылает ответ.

  4. Spoke1 осознаёт, что RPF сосед для источника мультикаста это Spoke2, поэтому он отправляет SPT-Join в сторону Spoke2. Однако в силу NBMA поведения DMVPN, физически SPT-Join идёт в сторону Hub. Последний его с радостью отбрасывает, поскольку внутри пакета в качестве RPF соседа указан Spoke2.

  5. IIF для RPT и SPT один и тот же, Tunnel0, поэтому Spoke1 отправляет сообщение (*,G) Prune в сторону Hub, где он и обрабатывается.

В результате, Hub отключает у себя (*,G) запись, а Spoke1 не может завершить создание (S,G) записи в таблице маршрутизации, что приводит к нарушению связности между Spoke.Корень зла в этом случае SPT-switchover: между Spoke нет прямой связности для мультикаста, единственный доступный путь через Hub. В конце концов, мы пришли к команде, которая упоминается в Configuration Guide ip pim spt-threshold infinity. Неужели теперь связность появится?

Spoke2#ping 224.1.1.1 so lo 0 rep 1000 Type escape sequence to abort.Sending 1000, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:Packet sent with a source address of 3.3.3.3 Reply to request 0 from 2.2.2.2, 112 msReply to request 1 from 2.2.2.2, 84 msReply to request 2 from 2.2.2.2, 76 msReply to request 3 from 2.2.2.2, 80 msReply to request 4 from 2.2.2.2, 52 msReply to request 5 from 2.2.2.2, 48 ms

На данном этапе мультикаст работает, как и ожидалось вначале. Поток может быть передан в любом направлении (hub-spoke, spoke-spoke, spoke-hub), причём только в сторону тех Spoke, которые на него подписались. Стоит отметить, однако, что передача мультикаста напрямую между Spoke чревата повышением нагрузки на канал вследствие рассылки мультикаста внутри направленных пакетов; канал до Spoke на такую нагрузку, как правило, не рассчитан, что может привести как к проблемам с масштабированием решения, так и к ухудшению связности для существующих приложений.

В статье мы рассмотрели, что необходимо добавить к обычному DMVPN Phase 2, чтобы успешно запустить поверх него мультикаст. К тонким моментам можно отнести, пожалуй, только режим PIM NBMA и SPT-switchover это единственное отличие от общеизвестных настроек DMVPN Phase 2.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru