ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

10 минут чтени€

—егментна€ маршрутизаци€ (Segment Routing, SR) может или не может считатьс€ туннельным решением, в зависимости от конкретной реализации и того, насколько строго вы хотите придерживатьс€ определени€ туннелей, представленного ранее в статье "¬иртуализаци€ сетей". ¬ этой статье будет рассмотрена основна€ концепци€ сегментной маршрутизации и две возможные схемы реализации: одна с использованием меток потока IPv6, а друга€ с использованием меток многопротокольной коммутации по меткам (Multiprotocol Label Switching -MPLS).

 аждому устройству в сети с поддержкой SR присваиваетс€ уникальна€ метка. —тек меток, описывающий путь в терминах этих уникальных меток, может быть присоединен к любому пакету, заставл€€ его принимать определенный указанный путь. –исунок 5 демонстрирует это.

 аждый маршрутизатор на рисунке 5 объ€вл€ет IP-адрес в качестве идентификатора вместе с меткой, прикрепленной к этому IP-адресу. ¬ SR метка, прикрепленна€ к идентификатору маршрутизатора, называетс€ идентификатором сегмента узла (SID узла). ѕоскольку каждому маршрутизатору в сети присваиваетс€ уникальна€ метка, путь через сеть может быть описан с использованием только этих меток. Ќапример:

  • ≈сли вы хотите перенаправить трафик от A к K по пути [B, E, F, H], вы можете описать этот путь с помощью меток [101,104,105,107].
  • ≈сли вы хотите перенаправить трафик от A к K по пути [B, D, G, H], вы можете описать этот путь с помощью меток [101,103,106,107].

Ќабор меток, используемых дл€ описани€ пути, называетс€ стеком меток. ћежду D и H есть две св€зи; как это можно описать? ¬ SR доступно несколько опций, в том числе:

  • —тек меток может включать в себ€ только идентификаторы SID узла, описывающие путь через сеть в терминах маршрутизаторов, как показано ранее. ¬ этом случае, если бы стек меток включал пару [103,107], D просто перенаправл€л бы H в обычном режиме на основе информации локальной маршрутизации, поэтому он будет использовать любой локальный процесс, который он будет использовать дл€ пересылки любого другого пакета, например, распределение нагрузки между двум€ каналами дл€ пересылки трафика с меткой SR.
Segment Routing
  • —тек меток может включать €вную метку дл€ загрузки общего ресурса по любому доступному набору путей, доступных в этой точке сети.
  • H может назначить метку дл€ каждого вход€щего интерфейса, а также SID узла, прив€занный к его локальному идентификатору маршрутизатора. Ёти метки будут объ€вл€тьс€ так же, как SID узла, но, поскольку они описывают смежность, они называютс€ SID смежности (adjacency). SID смежности уникален локально; он уникален дл€ маршрутизатора, объ€вл€ющего сам SID смежности.

“ретий вид SID, префиксный SID, описывает конкретный достижимый пункт назначени€ (префикс) в сети. SID узла может быть реализован как SID префикса, прив€занный к loopback адресу на каждом маршрутизаторе в сети.

Ќе об€зательно, чтобы весь путь описывалс€ стеком меток. Ќапример, стек меток [101,103] будет направл€ть трафик в B, затем в D, но затем позволит D использовать любой доступный путь дл€ достижени€ IP-адреса назначени€ в K. —тек меток [105] обеспечит прохождение трафика через сеть к K будет проходить через F. Ќе имеет значени€, как трафик достиг этой точки в сети и как он был перенаправлен после того, как достигнет F, если он проходит через F, будучи направленным к K.

 ажда€ метка в стеке представл€ет собой сегмент. ѕакеты перенос€тс€ от метки к метке через каждый сегмент в сети, чтобы быть транспортированными от головной части пути к хвостовой части пути.


ћаршрутизаци€ сегментов с многопротокольной коммутацией меток

MPLS был изобретен как способ сочетать преимущества асинхронного режима передачи (ATM), который больше не используетс€ широко, с IP-коммутацией. ¬ первые дни сетевой инженерии наборы микросхем, используемые дл€ коммутации пакетов, были более ограничены в своих возможност€х, чем сейчас. ћногие из используемых наборов микросхем были Field Programmable Gate Arrays (FPGA), а не Application-Specific Integrated Circuits (ASIC), поэтому длина пол€, в котором коммутировалс€ пакет, напр€мую коррелировала со скоростью, с которой пакет мог коммутироватьс€. „асто было проще переработать пакет или обработать его дважды, чем включать в заголовок много сложной информации, чтобы пакет можно было обработать один раз.

ѕримечание: повторное использование пакетов по-прежнему часто используетс€ во многих наборах микросхем дл€ поддержки внутренних и внешних заголовков или даже дл€ обработки различных частей более длинного и сложного заголовка пакета.

MPLS инкапсулирует исходный пакет в заголовок MPLS, который затем используетс€ дл€ коммутации пакета по сети. Ќа рисунке 6 показан заголовок MPLS. ¬есь заголовок состоит из 32 бит, метка 20 бит. ”стройство пересылки MPLS может выполн€ть три операции:

  • “екуща€ метка в заголовке MPLS может быть заменена другой меткой (SWAP).
  • ¬ пакет можно вставить новую метку (PUSH).
  • “екуща€ метка может быть очищена, а метка под текущей меткой обработана (POP).
«аголовок MPLS

ќперации PUSH и POP перенос€тс€ непосредственно в SR: операци€ SWAP реализована в SR как CONTINUE, что означает, что текуща€ метка замен€етс€ той же меткой (т. е. заголовок с меткой 100 будет заменен меткой 100), и обработка этого текущего сегмента будет продолжена. ѕроще всего пон€ть процесс обработки на примере. –исунок 7 демонстрирует это.

Ќа рисунке 7 каждому маршрутизатору присвоена глобально уникальна€ метка из глобального блока сегментной маршрутизации (Segment Routing Global Block -SRGB). ќни объ€вл€ютс€ через протокол маршрутизации или другую плоскость управлени€.  огда A получает пакет, предназначенный дл€ N, он выбирает путь через сеть, использу€ некоторый локальный механизм. ¬ этот момент:

  • „тобы начать процесс, A выполнит PUSH серии заголовков MPLS на пакете, которые описывают путь через сеть, [101,103,104,202,105,106,109, 110].  огда A коммутирует пакет в сторону B, он вставит первую метку в стек, так как нет необходимости отправл€ть свою собственную метку в заголовке. —тек меток на канале [A,B] будет равен [103,104,202,105,106,109,110].
  •  огда B получает пакет, он провер€ет следующую метку в стеке. ќбнаружив, что метка равна 103, он выполнит POP этой метки и перешлет пакет в D. ¬ этом случае стек меток SR выбрал один из двух возможных путей с равной стоимостью через сеть, так что это пример выбора SR конкретного пути. —тек меток на канале [B, D] будет [104,202,105,106,109,110].
  •  огда D получает пакет, верхн€€ метка в стеке будет 104. D выполнит POP этой метки и отправит пакет в E. —тек меток на канале [D, E] будет [202,105,106,109,110].
  •  огда E получает этот пакет, верхн€€ метка в стеке - 202. Ёто селектор смежности, поэтому он выбирает конкретный интерфейс, а не конкретного соседа. E выберет правильный интерфейс, нижний из двух интерфейсов на рисунке, и POP этой метки. ¬ерхн€€ метка теперь представл€ет собой SID узла дл€ F, который можно удалить, поскольку пакет передаетс€ на F. E переработает пакет и также откроет эту POP. —тек меток на канале [E, F] будет [106,109,110].
  •  огда пакет достигает F, следующей меткой в стеке будет 106. Ёта метка указывает, что пакет должен быть передан в G. F выполнит POP метки и передаст ее G. —тек меток на канале [F, G] будет [109,110].
  •  огда пакет достигает G, следующа€ метка в стеке - 109, что указывает на то, что пакет должен быть направлен к L. ѕоскольку G не соединен напр€мую с L, он может использовать локальный, свободный от петель (обычно самый короткий) путь к L. ¬ этом случае есть два пути с равной стоимостью к L, поэтому G выполнит POP метки 109 и переадресовывает по одному из этих двух путей к L. ¬ сегменте [G, L] стек меток равен [110].
  • ѕредположим, что G решает отправить пакет через K.  огда K получает пакет, он будет иметь стек меток, содержащий [110], который не €вл€етс€ ни локальной меткой, ни смежным узлом. ¬ этом случае метка должна оставатьс€ прежней, или сегмент должен иметь CONTINUE. „тобы реализовать это, K помен€ет текущую метку 110 на другую копию той же метки, так что K будет пересылать трафик с той же меткой. Ќа канале [K,L] стек меток будет равен [110].
  •  огда L принимает пакет, единственной оставшейс€ меткой будет 110, что указывает на то, что пакет должен быть направлен в M. L будет выполнена POP метки 109, эффективно удалив всю инкапсул€цию MPLS, и перенаправит пакет в M.
  •  огда M получает пакет, он пересылает его, использу€ обычный IP-адрес, в конечный пункт назначени€ - N.

 онцепци€ стека меток в MPLS реализована в виде серии заголовков MPLS, уложенных друг на друга. Pop метки означает удаление самой верхней метки, push метки означает добавление нового заголовка MPLS в пакет, а continue означает замену метки идентичной меткой.  огда вы работаете со стопкой меток, пон€ти€ внутреннего и внешнего часто сбивают с толку, особенно, поскольку многие люди используют идею метки и заголовка как взаимозамен€емые. ¬озможно, лучший способ уменьшить путаницу - использовать термин "заголовок" дл€ обозначени€ всего стека меток и исходного заголовка, переносимого внутри MPLS, при этом обраща€сь к меткам как к отдельным меткам в стеке. “огда внутренний заголовок будет исходным заголовком пакета, а внешний заголовок будет стеком меток. ¬нутренн€€ метка будет следующей меткой в стеке в любой момент прохождени€ пакета по сети, а внешн€€ метка будет меткой, по которой пакет фактически переключаетс€.

’от€ в приведенном здесь примере используютс€ IP-пакеты внутри MPLS, протокол MPLS предназначен дл€ передачи практически любого протокола, включа€ Ethernet. “аким образом, SR MPLS не ограничиваетс€ использованием дл€ передачи одного типа трафика, но может также использоватьс€ дл€ передачи кадров Ethernet по сети на основе IP / MPLS. Ёто означает, что SR можно использовать дл€ поддержки первого варианта использовани€, обсуждаемого в этой статье, - предоставлени€ услуг Ethernet по IP-сети.


MPLS - это туннель?

ћного написанных и произнесенных слов были пролиты на вопрос о том, €вл€етс€ ли MPLS протоколом туннелировани€. «десь туннелирование определ€етс€ как действие, а не протокол; это намеренна€ попытка отделить идею протокола туннелировани€ от концепции туннелировани€ как действи€, предпринимаемого при передаче трафика через сеть. ¬ случае MPLS это означает, что он может быть, а может и не быть протоколом туннелировани€, в зависимости от того, как он используетс€ - как и любой другой протокол. Ќапример, если у вас есть стек меток, помещенных поверх пакета с IP-заголовком, внешн€€ метка, на которую коммутируетс€ пакет, не €вл€етс€ (технически) туннелем. Ётот внешний заголовок в сети MPLS фактически €вл€етс€ локальным дл€ сегмента, поэтому он либо выталкиваетс€, либо отправл€етс€ на каждом маршрутизаторе. Ёто аналогично заголовку Ethernet дл€ каждого канала. ќднако внутренний заголовок переноситс€ в пакете MPLS и, следовательно, технически туннелируетс€. ¬нутренн€€ метка не используетс€ на текущем устройстве дл€ коммутации пакета; он просто переноситс€ как часть пакета.

Ёто определение не идеально. Ќапример, в случае MPLS SWAP или SR CONTINUE, используетс€ ли метка дл€ коммутации пакета или нет?  роме того, в отличие от заголовка Ethernet в пакете, заголовок MPLS фактически используетс€ при прин€тии решени€ о пересылке. «аголовок Ethernet, напротив, просто используетс€ дл€ достижени€ следующего перехода, а затем отбрасываетс€. ¬озможно, более подход€щим сравнением было бы следующее: «аголовок MPLS подобен заголовку Ethernet, который используетс€ дл€ достижени€ перехода за пределы устройства, на которое маршрутизатор в насто€щее врем€ передает.

Ќезависимо от этих ограничений, этого определени€ обычно достаточно, чтобы мысленно управл€ть различием между туннелированием и не туннелированием в MPLS, а также в большинстве других протоколов.