Виртуализация Juniper JunOS в среде GNS3

image

Вступление


В телекоммуникации можно наблюдать одно неоспоримое явление, связанное с техническим персоналом – его становится все меньше, при этом требования к конкретным специалистам возрастают. В те периоды, когда цифровые системы коммутации на телефонных станция оставались фантастикой, штат сотрудников станции включал значительное число электромехаников. Многие операции по переключению абонентов, изменению нумерации, созданию новых направлений выполнились «руками», в последствии при переходе на цифровые системы большинство действий стали решаться программно, с привлечение меньшего числа персонала. Аппаратно-программные комплексы развивались и совершенствовались и становились сложнее и требования с инженеру возрастали.
Под катом много снимков экрана.

Всегда есть популярные продукты и работать с ними значительно проще ввиду широкого комьюнити, которое «генерирует» всевозможные мануалы и whoto, также существует неплохая, зачастую локализованная литература. На мой взгляд активное сетевое оборудование Cisco System можно отнести именно с такому популярному и очень успешному продукту.

Для меня долгое время были незнакомы продукты Juniper Networks и большую роль в их «популяризации» сыграла работа. С началом трудовых будней я начал своё знакомство с основными линейками продукции. Сразу хочу сказать что мне, наверное, повезло и я мог «пощупать» устройства серии M/MX и T (вплоть по T1600), а потом и коммутаторов серии EX. Для более быстрого обучения мне сразу захотелось поиграться с железками и если с Cisco это можно сделать например на тестовом стенде из нескольких основных шасси, то с Juniper все сложнее. Свободных устройств операторского класса таких масштабов само по себе мало, и упомянутая выше меньшая популярность сыграли своё дело.


Начало


Когда встаёт вопрос сложно доступности того или иного оборудования мне вспоминается успешный проект Dynamips, а в ходе его развития и среда GNS3. Так же я сразу подметил, что основой JunOS является FreeBSD и это внушало надежды на возможности виртуализации.

Все гениальное придумано до меня


Я сразу не задумываясь отправился на официальный сайт проекта GNS3 и там праздно для меня сообщалось, что Q(J)EMU, включенный в состав GNS3, позволяет “ … be used to experiment features of Cisco IOS, Juniper JunOS or to check configurations that need to be deployed later on real routers”.
Мной было принято решение проверить выше написанные заявления.
Скачиваю полный пакет GNS3, устанавливаю и вижу перед собой уже привычную графическую среду. В типах узлов можно наблюдать (ранее мной незамеченный) Juniper router. Перетаскиваем его на окно топологии и:
image
Конечно, если бы всё работало сразу, было ну совсем не интересно.
Хорошо настроим.
Заинтересовал пункт Binary image. Гуглим. Как и предполагалось это образ ОС (точнее HDD) для QEMU. Сразу нашлись несколько статей по самостоятельной сборке «JunOS over FreeBSD» (как я собирал свой образ расскажу в следующий раз).
Хочу отметить проект Olive, он является первоначальной попыткой запустить JunOS на обычном PC (подробнее в ссылках).

И так пока воспользуемся готовым образом. Сразу хочу остановиться на выборе версии JunOS. Для меня интересна версия 9.3, ввиду работы реальных железок на работе именно на ней.

И так Вот мы нашли образ по описанию устраивающий нас:
— Образ для QEMU
— Версия JunOS 9.3
— Сведения о логине/пароле

Вот так для начала будет выглядеть наша конфигурация:
image

Ну и соберём простой тестовый стенд:
image
В качестве второго маршрутизатора я использую любимое для меня 7200 шасси.
Поставим перед собой простую задачу связаться между двумя маршрутизаторами сетью 192.168.0.0/24 и осуществить ping с двух сторон для того, чтобы полностью убедиться в успехе. И так запустим стенд.
У нас появляется окно QEMU:
image
Переходим в него и нажимаем .
И начинаем ждать. Сейчас происходит загрузка нашей виртуальной машины.
Визуально можно только наблюдать надпись:
image
В результате увидим приветствие для ввода логина и пароля. Вводим и попадаем в консоль FreeBSD:
image
Выполним top:
image
Но не будем отвлекаться нас интересует JunOS, запустим cli и мы можем видеть классическое приглашение, выполним sh ver:
image
Вот мы успешно запустили JunOS. Приступим к настройке.
Для начала посмотрим список доступных интерфейсов
image
Отлично. У нам есть интерфейсы em (это наши NIC Virtual Intel 1000e Pro).
Просмотрим статус порта em0:
image
Интерфейс поднят. Full-Duplex 1Gb/s, MAC присутствует.
Теперь можно прописать адрес для выполнения нами поставленной цели.
Перейдем в режим конфигурации:
image
Выполним:
image
Еще раз посмотрим что мы сделали и проверим кандидатную версию:
image
И применим конфигурацию:
image

Выйдем из режима конфигурирования и осуществим ping узла Cisco72xx (192.168.0.1/24).
Процесс конфигурирования интерфейсов на IOS хорошо описан и я его опускаю.
image

И с обратной стороны Cisco72xx (192.168.0.1/24):
image

Заключение



В результате мы добились поставленной цели:
— виртуализация JunOS
— первичная настройка
— успешная простая проверка

Пара слов про виртуализацию. Решения Juniper носят гибридный характер и часть вычислений осуществляется аппаратно в специальных модулях (характерно для MX/M/T серии маршрутизаторов), поэтому возникнет ряд проблем в реализации тех или иных вещей на нашем стенде.

Но я еще не упоминал про J серию, тут считается «программно» и если собрать стенд именно на нем, то многие трудности можно преодолеть.

Это пробная статья с картинками о начальном этапе, у меня есть желание сделать цикл статей и рассмотреть разные вопросы от типовых схем CE-PE для BGP/VPLS, MPLS PE-PE и, конечно, рассмотреть policer и т.п.

Ссылки


Официальный сайт Juniper Networks
Juniper Clue wiki
О проекте Olive

UPD: Исправился с обзором/образом (замечание Torin666)

Спасибо.
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 19

    +1
    Предполагаю, что нужен блог Juniper. Пока опубликовал тут.
      +5
      Предполагаю, что нужен блог «Сетевые технологии». Пусть пока будет тут :)
      0
      Спасибо. У меня получилось его запустить, но не получилось собрать сетку. Нужно будет как-нибудь напрячься и сделать-таки лабораторию…
        0
        спасибо. Если не сложно — выложите готовый образ для кему
          +1
          Вот тут b23.ru/cfu1 можно взять готовый обзор для qemu. Скоро напишу о том, как я сам собирал JunOS и обновлялся до версии 10.
            0
            Вы имеете ввиду 10.0?
              0
              По ссылке доступен 9,3R, а скоро опубликую статью о самостоятельной установке начиная с freeBSD до 9.x — 10.x версии JunOS.
          0
          Прошу прощения, но у автора повсюду слово «образ» чудесным образом заменено на «обзор»
            0
            «И начинаем ждать. Сейчас происходит загрузка нашей виртуальной машины.»
            а сколько нужно ждать, хоть примерно? уже почти час прошел, а надпись «BTX loader 1.00 BTX version is 1.01» так и висит.
              0
              На производительной системе порядка 3-5 минут.
              Также наблюдайте заполнение оперативной памяти/активность запросов с образу.
                0
                Спасибо :)
                Оказалось что он просто не дружит с Qemu 0.13.0.
                Поставил Qemu 0.11.0 и все запустилось за пару минут.
                  0
                  Так же можно добавить, что за загрузкой удобно наблюдать подключившись к консольному порту (у меня это 127.0.0.1:3000)
                0
                Ох не зря я когда-то этот текст писал…
                  +1
                  я сейчас как раз вовсю готовлюсь к JNCIP-M и вопросом эмуляции жунипера для лабы занимался в середине декабря. были опробованы как VMware, так и qemu. окончательный выбор пал на второй, т.к. под VMware при каждой загрузке инстанса необходимо выполнять определённое кунг-фу для нормального функционирования малтикаста. сей процесс был максимально оптимизирован при помощи скриптов для SecureCRT, но кривизна решения резала глаз. так что сейчас это добро работает в qemu с обвязкой в виде GNS3 для удобства. придумывать трёхстрочные параметры для запуска инстанса, конечно, увлекательно, но несколько отвлекает от основной цели запуска лабы:)
                  из глюков был замечен только один, под виндой. в случае первичной конфигурации em-интерфейса обязательна перезагрузка коробки после его конфигурирования. в противном случае интерфейс не реагирует на пинги, и ни в inet.0, ни в inet.6 он не значится, несмотря на то, что система говорит, что он в апе. глюк существует как в XP, так и в висте. на убунте всё работает как часы. из неприятного — на то время, когда выполняется commit, загрузка CPU, на котором запущен процесс qemu, взлетает до 100%, что теоретически может вызвать потери сигнального трафика и, как следствие, обвал некоторых протоколов.
                  из дополнений к статье — я бы добавил рекомендацию про kqemu, который используется для акселерации qemu. чем слабее компьютер, тем виднее вклад акселератора. и написал бы про корректное завершение работы оливок (request system halt), т.к. в противном случае возможны спецэффекты при последующих запусках.
                  и по поводу упоминание VPLS в конце статьи. если я не ошибаюсь, то VPLS оливками не поддерживается.

                  P.S. к лабе я готовлюсь на 8.3 (требует 96Мб RAM на каждый инстанс). Пробовал накатить 10.3 — очень прожорливый (минимум 384Мб).
                    0
                    Очень полезный комментарий. Ну вот Вы раскрыли всю интригу статьи про VPLS.Виртуально сделать мне не удалось.По причине использования аппаратных контроллеров и доступен только на M и T сериях.
                      0
                      VPLS можно делать и на SRX (на branch версиях ака 650-) и на J. И та и другая серия — software bassed
                        0
                        пардон:)
                        тем не менее, почитать будет интересно
                        0
                        FYI:
                        0)jncip-m EOL, вместо него новый трак jncip-sp.
                        1)для лабы собирается 1 олива с е100 (e1000 ака em внутри junosa не умеют vlan-tagging делать в оливе) сетевухами, включается сама в себя и через связку vlan+logical-system делается необходимая топология

                        eg:

                        [nikita@arch1 jncip]$ cat qemu_olive85.sh
                        #!/bin/bash
                        qemu-kvm -m 1024 -hda olive85.img \
                        -boot c -localtime -nographic -daemonize \
                        -serial telnet::15601,server,nowait \
                        -net nic,vlan=1,macaddr=00:aa:00:60:01:01,model=i82559er -net tap,ifname=tapjun1,vlan=1 \
                        -net nic,vlan=2,macaddr=00:aa:00:60:01:02,model=i82559er -net tap,ifname=tapjun2,vlan=2 \

                        [nikita@arch1 jncip]$ cat int_cfg.sh
                        #!/bin/bash
                        sudo brctl addbr br10
                        sudo brctl addif br10 tapjun1
                        sudo brctl addif br10 tapjun2
                        sudo ifconfig br10 up
                        sudo ifconfig tapjun1 up
                        sudo ifconfig tapjun2 up
                        [nikita@arch1 jncip]$

                        root@JunLAB> show route logical-system all | grep logical-system
                        logical-system: CE2
                        logical-system: R6
                        logical-system: R3
                        logical-system: R4
                        logical-system: CE1
                        logical-system: R2
                        logical-system: R1
                        logical-system: CE3
                        logical-system: R7
                        logical-system: R5
                        logical-system: RR
                        logical-system: default

                        root@JunLAB> show interfaces terse | grep "(fxp0|fxp1)"
                        fxp0 up up
                        fxp0.10 up up inet 192.168.0.2/30
                        fxp0.11 up up inet 10.0.0.1/30
                        fxp0.12 up up inet 10.0.0.5/30
                        fxp0.13 up up inet 10.0.0.9/30
                        fxp0.14 up up inet 10.0.0.25/30
                        fxp0.15 up up inet 10.0.0.13/30
                        fxp0.16 up up inet 10.0.0.17/30
                        fxp0.17 up up inet 10.0.0.21/30
                        fxp0.18 up up inet 10.0.0.30/30
                        fxp0.19 up up inet 10.0.0.33/30
                        fxp0.20 up up inet 10.0.0.37/30
                        fxp0.21 up up inet 10.0.0.41/30
                        fxp0.22 up up inet 192.168.0.5/30
                        fxp0.23 up up inet 192.168.0.9/30
                        fxp0.52 up up
                        fxp0.53 up up
                        fxp0.32767 up up
                        fxp1 up up
                        fxp1.10 up up inet 192.168.0.1/30
                        fxp1.11 up up inet 10.0.0.2/30
                        fxp1.12 up up inet 10.0.0.6/30
                        fxp1.13 up up inet 10.0.0.10/30
                        fxp1.14 up up inet 10.0.0.26/30
                        fxp1.15 up up inet 10.0.0.14/30
                        fxp1.16 up up inet 10.0.0.18/30
                        fxp1.17 up up inet 10.0.0.22/30
                        fxp1.18 up up inet 10.0.0.29/30
                        fxp1.19 up up inet 10.0.0.34/30
                        fxp1.20 up up inet 10.0.0.38/30
                        fxp1.21 up up inet 10.0.0.42/30
                        fxp1.22 up up inet 192.168.0.6/30
                        fxp1.23 up up inet 192.168.0.10/30
                        fxp1.51 up up
                        fxp1.32767 up up

                        root@JunLAB>
                          0
                          0)про смену трека я естественно знаю. по состоянию на текущий момент джей не зарелизил, что будет представлять собой JNCIP-SP. есть мнение, что это уже будет не лаба, а всего лишь риттен. лаба же была забукана не вчера, и не позавчера, так что дропать её смысла нет. вдобавок к этому, при выполнении ряда условий (пока ещё не понятно, каких именно) JNCIP-M бодро трансформируется в JNCIP-SP. в любом случае, сдать лабу хочу чисто из спортивного интереса.
                          1) естественно, можно всё закрутить на логических роутерах, но для чистоты эксперимента, а также для размазывания оливок по нескольким ядрам, был выбран вариант с запуском отдельного процесса под каждый роутер, благо ресурсы позволяют.

                      Only users with full accounts can post comments. Log in, please.