VPLS без реального оборудования

До последнего времени, чтобы поупражняться в настройке и траблшутинге VPLS, приходилось иметь дело с реальным оборудованием(за исключением x86-версии Mikrotik) или арендовать чужие лаборатории на время. В конце 2013-начале 2014 года ситуация изменилась с выходом Cisco CSR1000V(IOS-XE 3.10S) и Juniper Firefly Perimeter(JunOS 12.1X46-D10.2), он же vSRX.

CSR1000V поддерживает VPLS полноценно. Для знакомства с самой технологией, лучше всего использовать именно этот виртуальный роутер.

vSRX в ограниченном(но достаточном) виде, а именно поддерживается коммутатация между псевдопроводами и локальным сабынтерфейсом с учётом таблицы коммутации VPLS. Свитчинг между локальными сабынтерфейсами не поддерживается, также как и свитчинг между пседопроводами.

Далее пойдёт речь о том, как запустить и заставить нормально работать упомянутые виртуальные роутеры на гипервизоре ESXi 5.5

ESXi 5.5

Для работы ESXi 5.5 потребуется выделенный компьютер с относительно нормальным процессором(что-нибудь типа Intel i5) и хотя бы 6Гб оперативной памяти. Установка происходит в стиле Next-Next-Next, любой справится.

Для написания статьи использовалась версия ESXi 5.5.0 (r1623387) Free, управление напрямую через vSphere Client. Для работы vSphere Client в Windows XP/2003(x86) должен быть установлен патч 351385_ENU_i386_zip.exe (см. VMWare KB2049143)

Бесплатная версия ESXi неудобна лишь тем, что нельзя пробросить консольный порт через telnet, однако это не доставляет больших неудобств, на каждой виртуальной машине можно сделать management port и управлять через него с помощью telnet/ssh (иначе придётся управлять через виртуальный монитор).

Cisco CSR1000V

Данный продукт является коммерческим, но имеет пробный период(60 дней), в течение которого доступен весь функционал.
Использовался образ “csr1000v-universalk9.03.11.01.S.154-1.S1-std-C1-M2560-N3-DS8.ova”. Разворачивание осуществляется через (vSphere Client) File->Deploy OVF Template. Минимально необходимый размер RAM 2.5Гб.

Сразу же после запуска VM появится загрузчик grub из 2ух пунктов. 1ый это Virtual Console – управление через виртуальный монитор(если у вас нет лицензии на ESXi для проброса com-порта) и 2ой это Serial Console – первоначальное конфигурирование будет возможно только через serial port(требуется лицензия на ESXi). Переключение между serial и virtual режимами делается командой “platform console serial|virtual”.

После того, как пройдёт процесс установки ПО на HDD виртуальной машины, появится приглашение:

         --- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]:

Отвечаем no, ждём и(если вы хотите воспользоваться пробным периодом) выполняем команды:

Router>en
Router#conf t
Router(config)#license boot level premium
Внимательное изучаем EULA, отвечаем yes в случае согласия с условиями
Router(config)#do wr
Router(config)#do reload
[enter]

После перезагрузки можно начинать конфигурирование.

Juniper Firefly Perimeter

Также как и CSR1000V, этот продукт является коммерческим, но имеет пробный период(60 дней), в течение которого доступен необходимый функционал.
Использовался образ “junos-vsrx-12.1X46-D10.2-domestic.ova”. Разворачивание осуществляется через File->Deploy OVF Template. В отличии от CSR1000V, первоначальная настройка может происходить как через виртуальный монитор, так и через serial port(но, опять же, при наличии лицензии на ESXi). Минимально необходимый размер RAM 1Гб.

После запуска VM, будет происходить установка ПО(FreeBSD и JunOS) на HDD виртуальной машины. По окончанию инсталляции появится стандартное приглашение Juniper:

Amnesiac (ttyd0)

login: 

Логин – root, пароля нет. Попадаем во FreeBSD, сразу же переходим в JunOS командой cli, затем в режим конфигурирования(команда configure).
Теперь нужно превратить этот firewall в mpls-роутер следующими командами:

root# set system root-authentication plain-text-password    
задаём пароль рута
root# delete security
root# set security forwarding-options family mpls mode packet-based
root# set security zones security-zone trust interfaces all host-inbound-traffic system-services all
root# set security zones security-zone trust interfaces all host-inbound-traffic protocols all
root# commit
root# run request system reboot 
Reboot the system ? [yes,no] (no) yes 

После перезагрузки можно приступать к конфигурации. Если после каждого commit он будет ругаться на изменение mpls mode, не обращайте внимание, вероятно, это косметический дефект.

Чтобы понять какой интерфейс внутри JunOS какому интерфейсу VM соответствует, можно посмотреть мак-адрес командой “show interfaces ge-0/0/X” и сравнить с мак-адресами сетевых карт в свойствах VM.

Mikrotik

Этот продукт также является коммерческим, имеет пробный период 24 часа, в течение которого доступен весь функционал. Предназначен не только для работы в качестве виртуального роутера, но и для установки непосредственно на сервер(без гипервизора).

При подготовке статьи использовался установочный образ “mikrotik-6.11.iso”. Разворачивается путём создания новой виртуальной машины(x86, 256Мб RAM, 1 vCPU, (!)IDE(не SCSI) HDD) и установки с виртуального cdrom, точно таким же методом как если бы вы устанавливали традиционные ОС(например, Windows) с iso-образа. Установка menu-style(при выборе пакетов отметить для установки: system, mpls, routing). Управление возможно и через виртуальный монитор и через serial port(и опять же, при наличии лицензии на ESXi на эту фичу)

После установки появится приглашение. Логин admin, пароль пустой.

Создание и настройка vSwitch

Схема VPLS стенда

VPLS имеет две особенности по отношению к линкам между сетевыми интерфейсами виртуальных роутеров. Изначально “проблема” состоит в том, что нельзя просто взять и “соединить” порты виртуальных машин. Коммутация сетевых интерфейсов виртуальных машин осуществляется через виртуальные свитчи(“встроенный” VMware vSwitch или “альтернативный” Cisco Nexus). В этой заметке рассматривается vSwitch.

Первая особенность(не только VPLS, а MPLS вообще) – необходимость увеличить MTU на транзитном свитче(которым является vSwitch), это задача всегда решается тривиально – увеличение MTU в настройках свитча. В настройках vSwitch есть возможность увеличения MTU. Обсуждать здесь нечего.

Вторая особенность состоит в том, что vSwitch не изучает мак-адреса(формирует таблицу коммутации статически, исходя из конфигурации(топологии) виртуальных машин) и не коммутирует unknown unicast как broadcast. Из этой особенности вытекает следующая проблема: когда CE4 пытается передать unicast-фрейм CE5(dst.mac является мак-адресом CE5), то такой фрейм дропается vSwitch-ом как unknown unicast(каждый линк это отдельный vSwitch), поскольку sw1-4(свитч между PE1 и CE4) ничего не знает о мак-адресе CE5. Для решения этой проблемы нужно превратить свитч в хаб(promiscuous mode). В этом случае свитч не анализирует ethernet-заголовок, а просто копирует трафик во все порты, кроме порта источника трафика. Поскольку в каждом свитче будет всего два порта, то никакого лишнего трафика не будет. Мало того, такая конфигурация(режим хаба) позволяет очень легко и удобно анализировать трафик между PE(не на каждом роутере есть встроенный tcpdump) путём добавления третьего хоста(обычная VM с Linux или Windows и Wireshark/tcpdump) в хаб.

Свитчи PE-CE

Для создания vSwitch нужно перейти в настройки (!)хост-машины->Configuration->Networking->Add Networking, выбрать Connection Type: Virtual Machine, Next, выбрать Create a vSphere standard switch, Next, задать название свитча(Network Label), например sw3-6(между PE3 и CE6), задать Vlan ID 4095(пропуск всех dot1Q-тегов), Next, Finish. Ассоциировать этот vSwitch с портами хост-машины не нужно.
Далее, нужно включить promiscuous mode, для этого перейти в Properties свитча:

переход к настройкам vSwitch

Затем выбрать пункт vSwitch, Edit, перейти на вкладку Security и изменить Promiscuous Mode c Reject на Accept, OK, в случае вопроса об отсутсвующих портах ответить Yes, Close.
Включение promiscuos mode на свитче

Свитчи PE-PE

Свитчи PE-PE создаются аналогично PE-CE, со следующими отличиями:
– VLAN ID можно не указывать(оставить None (0)), поскольку на линках PE-PE dot1Q не требуется на втором уровне(если где-то и будут dot1Q теги, то уже внутри фрейма и не имеют значения для vSwitch-а)
– promiscuous mode можно не включать. Если требуется посмотреть трафик, то в качестве CE можно использовать VM с “обычной” ОС и tcpdump/wireshark
– Для нормальной работы VPLS, нужно увеличить MTU(например, установить значение 1600). Делается это почти там же, где и включается promiscuous mode, только не на вкладке Security, а в General

Подключение VM к свитчам

Подключение портов VM к свитчам осуществляется в настройках VM. На примере PE1 это выглядит так:
vm-net-connections

CE устройства

В качестве CE устройств проще всего использовать какой-нибудь linux live дистрибутив с обширным набором предустановленного сетевого ПО. Например, Kali Linux.

Результат

Наконец-то всё подготовлено, можно заняться непосредственно конфигурацией PE-роутеров. Наверное было бы неправильно начать рассказывать про IGP, MPLS и VPLS-сигнализацию в рамках этой заметки, поэтому просто прикладываю готовые конфигурации для всё 3ёх PE. Конфигурации максимально упрощены, выбраны наиболее консервативные протоколы: в качестве IGP используется ospf, LDP для транспортной MPLS-метки и LDP для VPLS метки(Martini VPLS).

Конфигурация PE1 Cisco CSR1000V
Конфигурация PE2 Mikrotik x86
Конфигурация PE3 Juniper Firefly Perimeter

Таблицы коммутации(после запуска ping-ов между CE):

PE1#show bridge-domain 50
Bridge-domain 50 (3 ports in all)
State: UP                    Mac learning: Enabled
Aging-Timer: 300 second(s)
    GigabitEthernet1 service instance 50
    vfi VPLS50 neighbor 203.0.113.3 50
    vfi VPLS50 neighbor 203.0.113.2 50
   MAC address    Policy  Tag       Age  Pseudoport
   FFFF.FFFF.FFFF flood   static    0    OLIST_PTR:0xeb0bc800
   000C.29AE.0632 forward dynamic   250  VPLS50.1001012
   000C.29AE.0628 forward dynamic   243  VPLS50.1001013
   000C.29AE.061E forward dynamic   249  GigabitEthernet1.EFP50

[admin@PE2] > /interface bridge host print where bridge=VPLS50
Flags: L - local, E - external-fdb 
  BRIDGE              MAC-ADDRESS         ON-INTERFACE           AGE                 
L VPLS50              00:00:00:00:00:01   VPLS50-PE1             0s
L VPLS50              00:00:00:00:00:02   VPLS50-PE3             0s
L VPLS50              00:0C:29:2D:6D:D7   ether2                 0s
  VPLS50              00:0C:29:AE:06:1E   VPLS50-PE1             21s
  VPLS50              00:0C:29:AE:06:28   ether2                 8s
  VPLS50              00:0C:29:AE:06:32   VPLS50-PE3             8s 

root@PE3# run show route forwarding-table family vpls table VPLS50 
Routing table: VPLS50.vpls
VPLS:
Destination        Type RtRef Next hop           Type Index NhRef Netif
default            perm     0                    rjct   544     1
ge-0/0/3.200       user     0                    comp   567     2
lsi.1048836        user     0                    comp   578     3
lsi.1048835        user     0                    comp   578     3
00:0c:29:ae:06:1e/48 dynm     0                  indr 262143     4
                               192.0.2.5         Push 20   581     2 ge-0/0/1.0
00:0c:29:ae:06:28/48 dynm     0                  indr 262142     4
                              192.0.2.9         Push 26   576     2 ge-0/0/2.0
00:0c:29:ae:06:32/48 dynm     0                  ucst   565     3 ge-0/0/3.200

Чтобы сделать красивую картинку с трафиком(с двумя mpls-метками), ввиду отсутсвия P-роутеров, пришлось заблокировать линк PE1-PE3 и снять трафик между PE2 и PE3. На скриншоте изображён icmp-трафик между CE6(IP 198.51.100.6) и CE4(IP 198.51.100.4), проходящий по пути CE6->PE3->PE2->PE1->CE4:

VPLS трафик

P.S. Выражаю благодарность Александру Махинову за помощь с отключением функционала фаервола на Juniper Firefly Perimeter.

Advertisements

One thought on “VPLS без реального оборудования

  1. Pingback: Обзор виртуального сетевого(datacom) оборудования и эмуляторов | Net-Labs.in

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s