Глава 1. Основы MPLS и VPN: различия между версиями
м (→Метки, LSP) |
м |
||
(не показано 16 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{#description2:Зачем нужен MPLS. Метки, LSP. Терминология. PHP, UHP. inet.3, MPLS routing table. Информация для подготовки к экзаменам Juniper.}} | |||
===Причины появления и плюсы использования MPLS=== | ===Причины появления и плюсы использования MPLS=== | ||
* Уменьшилось время route lookup, за счет использования меток для передачи трафика. | * Уменьшилось время route lookup, за счет использования меток для передачи трафика. | ||
Строка 25: | Строка 26: | ||
* 4-15 - for future use | * 4-15 - for future use | ||
Использование implicit null может немного подкосить ваш QoS дизайн, поэтому для QoS лучше использовать explicit-null: | |||
[edit protocols mpls] | |||
explicit-null | |||
[edit protocols ldp] | |||
explicit-null | |||
Таблица '''mps.0''' - для хранения информации о метках. Является forwarding table на транзитных роутеров, где принимается решение - куда передавать трафик. При включении MPLS, в mpls.0 сразу появляется информаци о 0,1,2 метках. | |||
'''Static LSP''' - labels value 1,000,000 through 1,048,575 | '''Static LSP''' - labels value 1,000,000 through 1,048,575 | ||
Строка 33: | Строка 39: | ||
[edit protocols mpls] | [edit protocols mpls] | ||
static-label-switched-path R1-to-R2 { | static-label-switched-path R1-to-R2 { | ||
(ingress|egress|transit) { | |||
next-hop 192.168.86.5 | |||
to 10.200.86.1 ''-только для ingress'' | |||
(push|pop|swap) 1000001 | |||
===Терминология=== | ===Терминология=== | ||
Строка 64: | Строка 71: | ||
'''PHP''' - ''penultimate hop popping'' - снятие метки на предпоследнем роутере. В таком случае egress роутер будет освобожден от этой функции и будет делает стандартный lookup по адресу назначения в таблице inet.0. Для реализации этой процедуры egress при установлении LSP отправляет предпоследнему роутеру метку 3. | '''PHP''' - ''penultimate hop popping'' - снятие метки на предпоследнем роутере. В таком случае egress роутер будет освобожден от этой функции и будет делает стандартный lookup по адресу назначения в таблице inet.0. Для реализации этой процедуры egress при установлении LSP отправляет предпоследнему роутеру метку 3. | ||
'''UHP''' - ''ultimate hop popping'' - | '''UHP''' - ''ultimate hop popping'' - Метка снимается на последнем роутере. Такое поведение требуется, например, для корректной работы CoS. Для реализации такого поведения нужно включить: | ||
set protocols mpls explicit-null | set protocols mpls explicit-null | ||
При этом egress роутер при создании LPS будет отправлять предпоследнему роутеру метку 0. | При этом egress роутер при создании LPS будет отправлять предпоследнему роутеру метку 0. | ||
===inet.3=== | ===inet.3 - MPLS routing table=== | ||
Маршруты вставляются в таблицу inet.3, в которую залезает BGP, перед тем как отрезолвить next-hop для префикса. Если удалось найти next-hop в inet.3, то BGP вставляет LSP в inet.0 в качестве физического next-hop. Если не удалось, то BGP идет в inet.0 и пытается отрезолвить там. | Маршруты вставляются в таблицу inet.3, в которую залезает BGP, перед тем как отрезолвить next-hop для префикса. Если удалось найти next-hop в inet.3, то BGP вставляет LSP в inet.0 в качестве физического next-hop. Если не удалось, то BGP идет в inet.0 и пытается отрезолвить там. | ||
Строка 79: | Строка 85: | ||
То есть вся разница в том, что транзитный трафик, через роутер, участвующий в LSP, будет идти через LSP. А трафик направленный к самому роутеру (Lo интерфейсу), будут опираться на IGP. | То есть вся разница в том, что транзитный трафик, через роутер, участвующий в LSP, будет идти через LSP. А трафик направленный к самому роутеру (Lo интерфейсу), будут опираться на IGP. | ||
inet.3 | Для конкретной LSP inet.3 используется только на ingress роутерах. На транзитных будем использовать только mpls.0. | ||
Для LSP в inet.3 будет маршрут до Lo egress роутера, который скорей всего также будет известен по какому-нибудь IGP протоколу. Но по сравнению со всеми IGP (OSPF/ISIS), у MPLS (RSVP/LDP) преферанс меньше (10/15 vs 7/9), поэтому всегда будет выбираться он - копироваться в inet.0, как forwarding next-hop. | |||
==Дополнительная информация== | |||
*[[Глава 2. Label Distribution Protocols (RSVP, LDP)]] | |||
*[[Отказоустойчивость и оптимизация в MPLS]] | |||
*[[Traffic engineering]] | |||
*[[Реализация MPLS в ядре сети]] |
Текущая версия на 18:25, 15 июля 2021
Причины появления и плюсы использования MPLS
- Уменьшилось время route lookup, за счет использования меток для передачи трафика.
- Улучшилась масштабируемость сети.
- Использование traffic engineering (TE) дает дополнительную возможность управлять трафиком.
- На одном и том же оборудовании можно обеспечить работу разных технологий: Ethernet, ATM, Frame Relay, IPSec.
Метки, LSP
LSP - однонаправленные.
Для LSP требуется, чтобы MPLS был включен на каждом роутере, через который проходит LSP. MPLS позволяет роутеру завести локальную DB, в которой будут метки с назначением и другими метками, обмен метками с соседними роутерами и отправка и получение пакетов, отмеченных метками.
LSP обеспечивает маршрут через сеть для пакета с меткой. В отличие от маршрутизации по dest IP, пакет с меткой маршрутизируется по сети основываясь на значении метки.
Заголовок MPLS - 32 bit (8bytes). Добавляется сразу после L2 заголовка.
Заголовок содержит: label 20 bit, CoS+Stack bit (если больше 1 метки) = 4 bit, TTL 8 bit (обычно копируется из TTL ip заголовка).
Метки MPLS уникальны в рамках роутера. На каждом роутере в MPLS домене, через который проходит LSP, метка обязательно будет меняться.
- 0 - Explicit null (IPv4) - снятие метки на последнем роутере
- 1 - Router alter label (IP router alert)
- 2 - Explicit null (IPv6)
- 3 - Implicit null - снятие метки на предпоследнем роутере - default behavior.
- 4-15 - for future use
Использование implicit null может немного подкосить ваш QoS дизайн, поэтому для QoS лучше использовать explicit-null:
[edit protocols mpls] explicit-null
[edit protocols ldp] explicit-null
Таблица mps.0 - для хранения информации о метках. Является forwarding table на транзитных роутеров, где принимается решение - куда передавать трафик. При включении MPLS, в mpls.0 сразу появляется информаци о 0,1,2 метках.
Static LSP - labels value 1,000,000 through 1,048,575
[edit protocols mpls] static-label-switched-path R1-to-R2 { (ingress|egress|transit) { next-hop 192.168.86.5 to 10.200.86.1 -только для ingress (push|pop|swap) 1000001
Терминология
LSP label switched path - однонаправленный поток трафика.
LSR label switching router = роутер, использующий MPLS, который участвует в построении LSP.
Бывает нескольких типов:
- Ingress
- - Пакеты входят в LSP на ingress роутере
- - Делает push метки
- - Для отдельной LSP может быть только 1 ingress роутер
- - Upstream для остальных роутеров в рамках LSP
- Transit
- - Для LSP может быть 0 или более transit роутеров
- - Делает swap метки
- - Передает трафик следующему хопу LSP
- Penultimate
- - Предпоследний для LSP роутер
- - По дефолту делает pop метки и пакет без метки отправляет последнему egress роутеру.
- Egress
- - Пакеты выходят из LSP на egress роутере
- - Передает пакет дальше, основываясь на IP
- - Downstream для других роутеров в рамках LSP
PHP, UHP
PHP - penultimate hop popping - снятие метки на предпоследнем роутере. В таком случае egress роутер будет освобожден от этой функции и будет делает стандартный lookup по адресу назначения в таблице inet.0. Для реализации этой процедуры egress при установлении LSP отправляет предпоследнему роутеру метку 3.
UHP - ultimate hop popping - Метка снимается на последнем роутере. Такое поведение требуется, например, для корректной работы CoS. Для реализации такого поведения нужно включить:
set protocols mpls explicit-null
При этом egress роутер при создании LPS будет отправлять предпоследнему роутеру метку 0.
inet.3 - MPLS routing table
Маршруты вставляются в таблицу inet.3, в которую залезает BGP, перед тем как отрезолвить next-hop для префикса. Если удалось найти next-hop в inet.3, то BGP вставляет LSP в inet.0 в качестве физического next-hop. Если не удалось, то BGP идет в inet.0 и пытается отрезолвить там.
Если мы резолвим next-hop для Lo интерфейса удаленного маршрутизатора, что в inet.0 он будет виден как доступный через IGP протокол и трафик будет передаваться в соответствие с IGP, то есть в p2p интерфейс с соседним маршрутизатором.
Если же мы будем резолвить next-hop для префикса, находящегося за пределами IGP домена (клиентский), который будет известен по BGP (а такое будет обязательно, т.к. обычно для распространения подобных маршрутов используется next-hop self, подставляется Lo удалённого маршрутизатора), то BGP залезет в inet.3, увидит в качестве next-hop LSP до Lo удалённого маршрутизатора и подставит эту запись в inet.0!! Вот и вся магия.
То есть вся разница в том, что транзитный трафик, через роутер, участвующий в LSP, будет идти через LSP. А трафик направленный к самому роутеру (Lo интерфейсу), будут опираться на IGP.
Для конкретной LSP inet.3 используется только на ingress роутерах. На транзитных будем использовать только mpls.0.
Для LSP в inet.3 будет маршрут до Lo egress роутера, который скорей всего также будет известен по какому-нибудь IGP протоколу. Но по сравнению со всеми IGP (OSPF/ISIS), у MPLS (RSVP/LDP) преферанс меньше (10/15 vs 7/9), поэтому всегда будет выбираться он - копироваться в inet.0, как forwarding next-hop.