четверг, 6 июля 2017 г.

Cisco 1000V MPLS Data plane

Небольшой спойлер
В процессе настройки MPLSной лабы в этом посте, я обнаружил, что Control Plane работает отлично, а вот Data Plane, мягко говоря, не очень. Ну, в смысле совсем не работает. Метки сигнализируются, а вот сам клиентский трафик по этим меткам не ходит. Ни в Juniper, ни в Cisco, ни в Alcatel-Lucent...

Как-то обсуждали с коллегами такое поведение, они были удивлены и посоветовали мне 1000V как полностью рабочее решение. Ок. Сегодня проверяем, будет ли ходить трафик между двумя Cisco CSR 1000V. Проверяем VPWS и VPLS.

Немного оффтопа. Только недавно закончил лабу по OSPF в Juniper. Думал, будет сложно вспомнить Cisco, тем более давно ничего не настраивал на IOS-XE. Но нет, руки пишут сами. ) Отличное чувство!

VPWS

Для начала обратим наш взор на VPWS. Схема предельно проста и изображена ниже.



В качестве клиентов используем Tiny Linux, который в прошлый раз так и не пригодился.
Настройка клиентов предельно проста.


Перед тем как трогать MPLS на роутере, придется активировать другую лицензию на 60 дней. По умолчанию 1000v MPLS не умеет. Делается это довольно просто. Даем команду license boot level premium, соглашаемся с условиями и перезагружаемся.

1000v1(config)#license boot level advanced

После таких манипуляций, появится вожделенная команда mpls ip.


Настраиваем интерфейсы Gi2 на обоих роутерах и включаем на них mpls.

1000v1#sh running-config interface gi2
Building configuration...

Current configuration : 119 bytes
!
interface GigabitEthernet2
 description BCKBN
 ip address 10.10.10.1 255.255.255.252
 negotiation auto
 mpls ip
end

После чего, можно увидеть LDP соседство

1000v2#sh mpls ldp neighbor
    Peer LDP Ident: 192.168.0.30:0; Local LDP Ident 192.168.0.29:0
        TCP connection: 192.168.0.30.13530 - 192.168.0.29.646
        State: Oper; Msgs sent/rcvd: 6/6; Downstream
        Up time: 00:00:33
        LDP discovery sources:
          GigabitEthernet2, Src IP addr: 10.10.10.1
        Addresses bound to peer LDP Ident:
          192.168.0.30    10.10.10.1

В качестве RouterID были выбраны адреса на интерфейсах, через которые я управляю железками. Не красиво, тем более, он приходит по DHCP.

Настроим loopback и будем использовать его адрес как router-id. Например так.

1000v1# sh run
...
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
...
mpls ldp router-id Loopback0

1000v2# sh run
...
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
...
mpls ldp router-id Loopback0

Не стоит забывать, что никакой динамической маршрутизации нет, поэтому 1.1.1.1 доступен не будет. Пропишем-с статику. )

ip route 2.2.2.2 255.255.255.255 10.10.10.2
ip route 1.1.1.1 255.255.255.255 10.10.10.1

Придется перетолкнуть LDP командой  clear mpls ldp neighbor *.

Далее, делаем симметричную настройку на интерфейсах, которые смотрят на клиентов. Важный момент, что порты надо вывести из shutdown. Ну и VC-ID должен совпадать на обоих концах.

1000v1#sh running-config int gi3
Building configuration...

Current configuration : 143 bytes
!
interface GigabitEthernet3
 description CLNT
 no ip address
 negotiation auto
 no keepalive
 xconnect 10.10.10.2 333 encapsulation mpls
end


1000v2#sh running-config int gi3
Building configuration...

Current configuration : 153 bytes
!
interface GigabitEthernet3
 description CLNT
 no ip address
 negotiation auto
 no keepalive
 xconnect 10.10.10.1 333 encapsulation mpls
end

Можно проверить сам xconnect

1000v2#sh xconnect all detail
Legend:    XC ST=Xconnect State  S1=Segment1 State  S2=Segment2 State
  UP=Up       DN=Down            AD=Admin Down      IA=Inactive
  SB=Standby  HS=Hot Standby     RV=Recovering      NH=No Hardware

XC ST  Segment 1                         S1 Segment 2                         S2
------+---------------------------------+--+---------------------------------+--
UP pri   ac Gi3:7(Ethernet)              UP mpls 10.10.10.1:333               UP
            Interworking: none                   Local VC label 16
                                                 Remote VC label 16

Все Ок. Но трафик от одного клиента до другого не пойдет... Я потратил некоторое время на перепроверку конфига, но "дело было не в бобине". Снова пришлось расчехлять wireshark.

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



Как видно, TC1 отправляет ARP в сторону TC2.


Такой запрос доходит до TC2 и тот генерирует ответ. Только вот ответ этот уже не доходит до TC1...


Решается это включением Promiscuous Mode на паре коммутаторах между клиентами и роутерами. После чего, пинг проходит.


ARP Reply добегает от TC2 до TC1. Вот хоть убей не понимаю почему? Думал, что может MAC адреса меняются как-то, но нет. Эх, жаль нельзя "подебажить" сами виртуальные коммутаторы... вот почему, я хочу вытащить всю коммутацию на отдельную железку. Если у читателей есть какие-то догадки, пишите в комментарии. Может вместе удастся разобраться.

Ну да ладно, 
VPWS на CSR 1000v работает. Данные ходят, в отличии от XRv и vMX, vSRX.


VPLS


Погнали, VPLS.
Для начала удаляем все, что связано с xconnect... Эх, никаких роллбэков...

Затем, нужно сделать симметричную конфигурацию на двух узлах. Создаем VFI, настраиваем service instance и связываем две эти сущности в bridge-domain. Подробнее об этом можно почитать на Linkmeup, например.

На 1000v1

l2vpn vfi context VPLS
 vpn id 333
 member 2.2.2.2 encapsulation mpls

interface GigabitEthernet3
 service instance 1 ethernet
  description VPLS
  encapsulation default

bridge-domain 333
 member GigabitEthernet3 service-instance 1
 member vfi VPLS


На 1000v2

l2vpn vfi context VPLS
 vpn id 333
 member 1.1.1.1 encapsulation mpls

interface GigabitEthernet3
 service instance 1 ethernet
  description VPLS
  encapsulation default

bridge-domain 333
 member GigabitEthernet3 service-instance 1
 member vfi VPLS


Сразу проверяем, пинги ходят.


Для спокойствия, проверяем и на железке тоже. Bridge-domain поднят, изученные MAC адреса видно.

1000v2#sh bridge-domain 333
Bridge-domain 333 (2 ports in all)
State: UP                    Mac learning: Enabled
Aging-Timer: 300 second(s)
    GigabitEthernet3 service instance 1
    vfi VPLS neighbor 1.1.1.1 333
   MAC address    Policy  Tag       Age  Pseudoport
   000C.29FB.F1AF forward dynamic   211  GigabitEthernet3.EFP1
   000C.29DB.F9C5 forward dynamic   210  VPLS.1001011
   FFFF.FFFF.FFFF flood   static    0    OLIST_PTR:0xeb2f1800


И вновь,
VPLS на CSR 1000v работает. Данные ходят, в отличии от XRv и vMX, vSRX.

В качестве заключения. 

Как-то в последне время меня бросает от одной темы к другой. Так уж получается. Много думал в последнее время, и решил - иду на CCNP. Пора уже досдать. Вероятно, ближайшие посты будут в большей мере касаться подготовки к CCNP. Также не планирую забрасывать посты по Juniper. Уже есть посты по OSPF, лаба тоже закончена. Впереди меня уже ждет IS-IS.

До встречь.

Комментариев нет:

Отправить комментарий