Понимание основ Segment Routing
Этот блог призван провести вас через фундаментальные концепции Segment Routing, освещая наиболее важные функции и заглядывая за кулисы технической реализации.
Как работает Segment Routing
Вы можете спросить: «Что вообще такое сегмент?»
Ответ прост: сегмент — это путь в сети от одного узла к другому. Чтобы различать несколько сегментов, каждому из них присваивается идентификатор сегмента (SID).
Если это звучит немного абстрактно, помните, что Segment Routing — это концепция коммутации пакетов, фундаментальный принцип которой заключается в маршрутизации пакетов через сеть с помощью последовательности сегментов. Таким образом, пакеты содержат список SID в правильном порядке, и как только пакет завершает прохождение сегмента, SID удаляется из списка.
Если вам интересно, о каком типе сети идет речь и где проходит такой сегмент, не волнуйтесь! Отраслевые стандарты содержат точные определения сегментов, которые проясняют это. Читайте дальше, чтобы узнать больше о формате идентификатора сегмента и реализации списка SID.
Сравнение плоскостей данных: SR MPLS против SRv6
Исторически сложилось так, что Segment Routing был реализован в сетях MPLS, где работа на основе меток казалась идеальной для удовлетворения требований Segment Routing. Теперь эти метки SR MPLS используются в качестве SID. Список SID присоединяется к пакетам в виде стека меток. С MPLS это так просто!
Позже стало ясно, что сети IPv6 также могут реализовывать Segment Routing. В этом случае специально отформатированные адреса IPv6 служат SID, а список SID включается в пакеты в составе того, что называлось заголовком расширения маршрутизации (Routing Extension Header), но было быстро переименовано в заголовок Segment Routing (Segment Routing Header). Текущий SID пакета служит адресом назначения IPv6.
Почему SRv6 набирает популярность
В конечном итоге реализацию на основе IPv6 просто назвали «SRv6», поскольку сравнение двух вариантов показало, что требования к SRv6 менее строгие.
Вам нужна только маршрутизация IPv6, с которой справятся даже простые маршрутизаторы и коммутаторы. SR MPLS, с другой стороны, требует сквозной коммутации меток, поддерживаемой только маршрутизаторами операторского класса, которые стоят недешево, но обеспечивают высокую производительность.
Итог: более низкие требования SRv6 позволяют строить более крупные сети, чем позволяют сети SR MPLS. Поэтому теперь проще настраивать сквозные сервисы, использующие сеть SRv6 в качестве плоскости данных, что приводит к заметной тенденции в сторону IPv6. Теперь нам предстоит столкнуться с непопулярной темой миграции. Но об этом позже!
Продвинутая инженерия трафика с помощью Segment Routing
По моему опыту преподавания многих курсов по Segment Routing, я обнаружил, что участники часто поначалу воспринимают это как нечто загадочное — даже немного волшебное — то, как сеть решает в точке входа, по каким сегментам должен следовать пакет и какой список SID к нему прикрепить.
Многие думают, что в сеть был добавлен какой-то новый вид интеллекта — возможно, даже искусственный интеллект.
На самом деле здесь используется проверенный метод, доступный с самого начала работы сетей MPLS: инженерия трафика (traffic engineering), которая теперь используется в контексте концепции пересылки данных Segment Routing.
Это работает в два этапа. Во-первых, сеть вычисляет лучший путь к месту назначения на основе ограничений и целей оптимизации. Во-вторых, она прикрепляет к пакету соответствующий список SID, чтобы точно направить его по этому вычисленному пути через сеть.
Вы справедливо услышите во многих презентациях Cisco: «Путь закодирован в пакете!» Этот путь дает инженерии трафика значительное преимущество перед традиционным подходом с использованием RSVP-TE, который оставляет много состояний в сети (данные, которые должны хранить маршрутизаторы). Поэтому они плохо масштабируются.
Инженерия трафика с Segment Routing не требует дополнительного состояния в сети, поскольку состояние переносится в пакете как список SID. Становимся ли мы свидетелями ренессанса инженерии трафика с Segment Routing? Не обязательно; все еще существуют административные накладные расходы на управление.
В конечном счете, такой список SID для инженерии трафика можно создать и вручную. Однако администратор должен действительно хорошо знать свою сеть (часть административных усилий, необходимых при инженерии трафика)!
Реализация топологически независимого обходного пути (TI-LFA)
На фоне всего этого энтузиазма по поводу Segment Routing мы не должны упускать из виду еще одну ключевую функцию: топологически независимый обходной путь (Topology Independent Loop-Free Alternate, TI-LFA). Эта функция также выигрывает от подхода Segment Routing без сохранения состояния: она использует список SID для маршрутизации пакетов по заранее рассчитанному обходному пути без петель.
Особенность заключается в том, что с Segment Routing это работает в любой топологии — отсюда и термин «топологически независимый».
Эта возможность существовала еще до Segment Routing на основе классических протоколов MPLS или просто базовой маршрутизации. Однако эти решения не были топологически независимыми. Фактически, TI-LFA стала передовой практикой в производственных сетях Segment Routing.
И инженерия трафика, и TI-LFA прикрепляют список SID к пакетам, чтобы направлять их через определенную последовательность сегментов.
Ключевые компоненты архитектуры SR
Это возвращает нас к вопросу, на который нужно ответить: как именно определяется сегмент и кто или что определяет его путь через сеть?
Вы заметите, что упомянутые варианты использования Segment Routing — инженерия трафика и TI-LFA — были определены независимо от конкретной реализации (т.е. SR MPLS или SRv6), что означает, что они возможны в обоих случаях.
То же самое относится к двум наиболее важным определениям сегментов:
- Сегмент префикса IGP
- Сегмент смежности (Adjacency Segment)
Понимание сегментов префикса IGP
Сегмент префикса IGP относится к протоколу внутреннего шлюза (Interior Gateway Protocol, IGP).
Это общий термин для таких протоколов, как IS-IS или OSPF. Их объединяет то, что они работают на основе топологии; в технических кругах их также называют протоколами состояния канала (Link State Protocols). Это важно для Segment Routing, так как информация, связанная с каналами, должна распространяться по всей сети. И это в равной степени относится как к SR MPLS, так и к SRv6.
Какова основная задача IGP? Ответ прост! Он предназначен для вычисления лучшего пути ко всем адресам IPv4 и IPv6 в сети.
Этот расчет основан на абстрактных затратах (costs), присвоенных каждому интерфейсу. Результатом является так называемый путь с наименьшими затратами, где сумма затрат минимальна. Именно на этом основано определение сегмента префикса IGP: путь с наименьшими затратами к префиксу, маршрутизируемому IGP.
В SR MPLS это всегда префикс IPv4, тогда как SRv6 использует префиксы IPv6. Для тех, кто знаком с предметом, префикс, используемый в этом контексте, обычно представляет собой адрес loopback IPv4 или IPv6, такой как 1.1.1.1/32 или fcaa:aa00::1/128. Это упрощает доступ плоскости управления BGP для сервисов уровня 3 или уровня 2 к плоскости данных Segment Routing.
Простейшая возможная сеть Segment Routing использует только сегменты префикса IGP и, таким образом, ведет себя аналогично классической сети MPLS, которая использует LDP для динамического установления путей с коммутацией по меткам (Label-Switched Paths).
Вполне уместно задаться вопросом, есть ли вообще какая-то польза от Segment Routing в данном случае. Пакеты перемещаются по тем же путям, что и раньше. К счастью, это действительно так. Сетевые операторы ценят то, что метка не меняется на протяжении сегмента, а для защиты пути можно использовать TI-LFA.
Для SRv6 эти аргументы также остаются верными практически без изменений. В любом случае все проще, поскольку пакеты направляются вдоль сегмента префикса IGP исключительно на основе решений маршрутизации IPv6, и в самой природе маршрутизации заложено, что адрес назначения IPv6 — в случае SRv6 это SID сегмента префикса IGP — не меняется.
Использование сегментов смежности для детального управления
После этих глубоких размышлений о сегменте префикса IGP давайте рассмотрим сегмент смежности, который представляет собой кратчайший возможный сегмент в сети — канал между двумя маршрутизаторами. Короче уже не бывает.
Термин «смежность» (adjacency) указывает на то, что само его определение основано на смежностях IGP. Однако в большинстве магистральных сетей они совпадают с физическими каналами, поэтому такой упрощенный подход вполне оправдан.
Сегмент смежности имеет SID, называемый SID смежности. Пакеты, поступающие на маршрутизатор с этим SID, принудительно направляются в канал, которому был назначен данный SID смежности. В кругах специалистов по Segment Routing это известно как SID с локальной областью действия. Но для чего нужен сегмент смежности? Где он может проявить свой потенциал?
Два важных варианта использования, которые мы уже рассмотрели, демонстрируют необходимость принудительной передачи трафика через канал, который в противном случае не использовался бы.
Будущее сегментной маршрутизации
Несмотря на всю сложность, которую Segment Routing скрывает за кулисами, мы никогда не должны упускать из виду, ради чего мы все это делаем.
Segment Routing предназначен для обработки передачи данных для VPN-сервисов уровня 3 и уровня 2. Эксперты называют это плоскостью данных (data plane), в то время как плоскость управления (control plane) этих сервисов (по крайней мере, в большинстве случаев сегодня) основана на BGP.
В мире Segment Routing еще многое предстоит открыть. Мы исследовали Segment Routing в основном на абстрактном уровне и с точки зрения MPLS. Во второй части блога мы переключим наше внимание на SRv6 и более подробно заглянем за кулисы.









