MPLS L3VPN
Last updated
Last updated
Я предлагаю в этот раз не брать уже готовую сеть, где уже всё преднастроено. Сейчас интереснее будет пройти этот путь с нуля, пусть и только вехами, не вдаваясь в детали.
Итак, мучаем всё ту же сеть, но упростим её удалением одного филиала:
наверх")
Начнём с одного клиента и двух точек подключения.
Клиентские маршрутизаторы имеют очень простую конфигурацию:
C3PO_1:
C3PO_2:
На клиентских узлах настроены линковые адреса с провайдером и интерфейс Loopback (как и прежде, мы используем этот интерфейс, чтобы имитировать сеть, дабы не плодить маршрутизаторы). То есть если на C3PO_2 мы увидим сеть 192.168.255.1/32, это значит, что мы увидели бы и всю сеть полностью. В качестве локального протокола динамической маршрутизации используется OSPF. Собственно, именно он позволит сообщить адрес Loopback-интерфейса всем заинтересованным.
Что же касается сети провайдера.
Вначале мы приведём краткий порядок настройки, а потом покажем на примере.
Настройка базовой связности магистральной сети: IP-адреса, IGP.
Включение MPLS и LDP
Создание VRF и привязка к интерфейсам.
Настройка протокола маршрутизации с CE.
Настройка BGP и MBGP
1) Настраиваем IP-адреса: линковые и loopback. Клиентские пока не трогаем.
Linkmeup_R1:
Linkmeup_R2:
Linkmeup_R3:
2) Теперь поднимаем ISIS в качестве IGP — он свяжет всю сеть linkmeup, распространив маршрутную информацию о линковых и Loopback-адресах. Linkmeup_R1:
Linkmeup_R2:
Linkmeup_R3:
На этом шаге получили глобальную таблицу маршрутизации — необходимая платформа для следующего шага.
3) Включаем MPLS и LDP:
Linkmeup_R1:
Linkmeup_R2:
Linkmeup_R3:
Это базис для VPN. Эти LSP — это набор транспортных меток.
Мы выбрали здесь LDP, чтобы не усложнять конфигурацию. С RSVP-TE ещё поразбираемся в статье про Traffic Engineering.
4) Создаём VRF на двух узлах: Linkmeup_R1 и Linkmeup_R3.
Linkmeup_R1:
Linkmeup_R3:
Это позволяет нам обособить все данные одного клиента от других и от сети самого провайдера. Здесь же указываем RD и RT. Поскольку задача у нас простая — связать все филиалы C3PO Electronic, то сделаем RD и RT совпадающими. Причём RT на Import и RT на Export тоже будут одинаковыми. Поскольку это обычная практика, существует даже специальная директива — both — тогда создаются оба RT сразу одинаковыми. В 8-м выпуске мы выбрали номер AS для сети linkmeup — 64500. Он и используется в качестве административного поля. Выделенный номер выбирается произвольно, но отслеживается, чтобы не было совпадения с другим, уже использованным.
5) Привязываем интерфейсы к VRF и указываем на них IP-адреса.
Linkmeup_R1:
Linkmeup_R3:
6) Нужно поднять протокол маршрутизации с клиентом. В нашем случае это будет OSPF, хотя с равным успехом это мог бы быть и ISIS или EBGP. Данный процесс никак не должен пересекаться с глобальной таблицей маршрутизации, поэтому помещаем его в VRF:
Linkmeup_R1:
Linkmeup_R3:
Как видите, Linkmeup_R1 видит 192.168.255.1, но не видит удалённый Loopback – 192.168.255.2. Аналогично и Linkmeup_R3 видит только маршруты со своей стороны. Это потому, что через сеть провайдера пока не передаются маршруты клиента.
7) Вот и пришло время MBGP. Помните, мы говорили о BGP Free Core в прошлом выпуске? Этот приём мы вполне можем использовать и здесь. Нам без надобности BGP на Linkmeup_R2 — там и не будем его поднимать.
Первая часть — это базовая настройка соседей iBGP.
Linkmeup_R1:
Linkmeup_R3:
Вторая часть — настройка Address Family VPNv4 — это то, что позволит с Linkmeup_R1 на Linkmeup_R3 передать клиентские маршруты. Заметьте, что мы активируем передачу community, потому что этот атрибут используется RT.
Linkmeup_R1:
Linkmeup_R3:
Третья часть — это Address Family для данного конкретного VRF. Он работает с обычными IPv4 префиксами, но из VRF C3PO Electronic. Он нужен для того, чтобы передавать маршруты между MBGP и OSPF. Linkmeup_R1:
Linkmeup_R3:
Как видите, здесь настроен импорт маршрутов из процесса OSPF с номером 2. Соответственно, нужно настроить и импорт маршрутов в OSPF из BGP:
Linkmeup_R1:
Linkmeup_R3:
И вот теперь всё завертится, закрутится.
Вот и славно.
Подключение клиента по BGP Теперь подключим клиента TAR’S Robotics. Маршруты между CE и PE будут передаваться по BGP или, иными словами, поднимаем EBGP с клиентским маршрутизатором. Шаги 4 и 5 не будут отличаться. Приведём конфигурацию только одной стороны:
6) На CE EBGP настраивается самым обычным образом. TARS_1:
Здесь указано, что TARS’ Robotics будет анонсировать свою сеть 172.16.255.1/32. OSPF по-прежнему может быть нужен, но он уже будет использоваться для маршрутизации внутри этого филиала и только.
На PE всё то же самое, только не будет нового процесс OSPF (потому что с клиентом теперь EBGP, вместо OSPF) и меняется address family ipv4 vrf TARS:
Linkmeup_R1:
Теперь Linkmeup_R1 является BGP-соседом TARS_1:
Клиентские сети он получит сообщениями Update от CE.
7) Всё, что касается MBGP — то же самое. От того, что мы поменяли протокол взаимодействия с клиентом, в нём ничего не перевернётся. То есть уже сейчас всё должно заработать (если, конечно, вторая сторона настроена):
Полная конфигурация всех узлов с комментариями и без.
Что же мы натворили?
Давайте теперь проследим распространение меток.
FIB говорит нам: упаковать пакет с DIP 192.168.255.1 в стек меток {17, 22} и отправить его в сторону 10.0.23.2 в интерфейс FE0/0.
Всё тут предельно ясно и детерминировано.
Давайте подытожим шаги настройки L3VPN с нуля в правильном порядке от общего к частному.
Настроить IP-адреса провайдера: линковые и лупбэк. Все узлы, настроил и забыл.
Настроить IGP в сети провайдера, чтобы обеспечить внутреннюю связность. Все узлы, настроил и забыл.
Настроить MPLS + LDP (или RSVP TE, если необходимо). Все узлы, настроил и забыл.
Настроить MBGP внутри сети провайдера. Только те PE, где есть клиенты, настроил и забыл.
Настроить клиентские VRF, назначить RD, RT. Только те PE, где есть клиенты, настраиватся персонально для каждого.
Добавить в VRF клиентские интерфейсы, настроить на них IP-адреса. Только те PE, где есть клиенты, настраиватся персонально для каждого.
При необходимости поднять IGP/BGP с клиентом для обмена маршрутами. Только те PE, где есть клиенты, настраиватся персонально для каждого.
Готово
Это были необходимые и достаточные действия для настройки базового L3VPN. Ну и последний сценарий в рамках практики — это
На этом шаге у нас построены LSP между всеми парами LSR: *Пример выделения меток на _Linkmeup_R1._
В таблицах маршрутизации VRF C3PO должны появиться настроенные сети, как Directly connected.
Учитывая, что у клиента OSPF уже настроен, мы должны увидеть адреса Loopback-интерфейсов в таблице маршрутизации.
Маршруты на PE:
Маршруты на CE:
Пинг между клиентскими сетями:
Попытка пинга провайдерской сети:
Вот что передал Linkmeup_R1 узлу Linkmeup_R3.
Вы видите здесь метку 22 для FEC 192.168.255.1 и адрес Next Hop 1.1.1.1. Как её понимает маршрутизатор? В ТМ VRF C3PO он заносит информацию о том, какой Next Hop:
Рекурсивно вычислить, как доступен 1.1.1.1:
Сервисную метку можно увидеть в таблице BGP для VRF C3PO: Кстати, здесь же видно и Next Hop.
Транспортная метка для FEC 1.1.1.1:
Но, как обычно FIB содержит всю актуальную информацию без многократных обращений к ТМ: