Предмет гордости компании Juniper Networks — маршрутизаторы серии MX производительностью 400 Гбит/с.

МХ-серия является не только отличным решением для межоператорского обмена трафиком, но и является основным инструментом для агрегации клиентских подключений. Устройства могут выступать в качестве маршрутизаторов широкополосной агрегации абонентов — физических лиц в моделях IPoE и PPPoE.
Ознакомиться с технической документацией можно здесь

Из чего состоит маршрутизатор Juniper

RE (Routing Engine)

Отвечает за работу протоколов маршрутизации (поддержание соседства, обмен маршрутной информацией, выбор лучшего маршрута и т.д.) и за управление маршрутизатором (сбор и хранение статистики по интерфейсам, сбор и хранение логов).
RE является полноценным сервером, который включает в себя:
CPU
RAM
HDD/SSD — жесткий или твердотельный накопитель, предназначен для хранения логов и файлов.
CF card — карта памяти, предназначена для хранения актуальной конфигурации и используемой версии JunOS OS.
USB port — порт предназначен для подключения внешнего носителя, который может быть использован например для загрузки или восстановления системы. Загрузка операционной системы начинает с CF-card, потом HDD/SSD и и в последнюю очередь USB-flash disk.
Ethernet port — порт для управления маршрутизатором, который состоит из 3 портов:

  • ethernet — используется для управления оборудованием. Обозначается как fxp0
  • console — порт для консольного доступа
  • AUX — вспомогательный порт, разновидность console

Для высокой отказоустойчивости RE (Routing Engine) устанавливают по два: основной и резервный, поддерживающий горячую замену.

PFE (Packet Forwarding Engine)

PFE обрабатывает весь трафик. Устанавливается на интерфейсной плате, которая может содержать 1, 2 или 4 PFE и поддерживает горячую замену. Каждый PFE обслуживает только свою группу интерфейсов. В составе интерфейсной карты есть CPU, который управляет всеми PFE.

Switch and Control Board

Это плата, которая отвечает за коммутацию пакетов между различными PFE и связность между RE и PFE.

Switch fabric

Switch fabric — фабрика коммутации предназначена для передачи трафика между PFE. Она соединяет все PFE в единую топологию. Фабрики коммутации отличаются по пропускной способности.

JunOS OS

Оборудование Juniper Networks работает под управлением JUNOS. JunOS OS — это FreeBSD, которую переработали инженеры Juniper. JunOS состоит из ядра и процессов, которые отвечают только за свою отдельную функцию. Под каждый процесс выделяется часть памяти, поэтому если какой то процесс зависает, то он не влияет на остальные.
Одним из самых важных элементов JunOS OS является ядро, которое выполняет базовые функции: управление процессами, разделение доступа к памяти, ресурсам. За остальными функциями — маршрутизация, мониторинг состояния, отвечают специальные «процессы». Они запускаются при старте системы.

Важные процессы

mgd — management daemon — управление оборудованием
dсd — Device control daemon — конфигурация интерфейсов
chassisd — chassis daemon — мониторинг состояния всех компонентов маршрутизатора
rpd — routing protocol daemon — отвечает за все протоколы маршрутизации, от RIP до BGP.

Командный интерфейс JUNOS

Командный интерфейс JUNOS позволяет не только выполнять команды, но и вводить конфигурацию. Конфигурация представляет собой директивы конфигурирования той или иной подсистемы.
Работа с командной строкой в JUNOS разделяется на 2 режима:
Operational Mode (приглашение командной строки «>») — доступны команды show и команды для мониторинга сети (monitor, ping, test, traceroute).
Configuration Mode (приглашение командной строки «#») — режим, в котором происходит настройка устройства. Активировать данный режим можно командой «Configure» или «Edit» в режиме Operational Mode.

Routing Instance

Предназначен для манипуляций с трафиком (маршрутизация и инкапсуляция). Позволяют условно разделить один роутер на несколько «виртуальных». Каждый созданный instance будет обрабатывать трафик независимо от других instance. Применяется в основном для организации MPLS VPN. Существует несколько типов routing instance:
Forwarding — используется для построения специальных filter-based forwarding applications (ну или policy-based routing в терминологии Cisco). При этом интерфейсы не привязываются к RI, а остаются в дефолтном RI.
Layer 2 virtual private network (VPN) — используется для организации MPLS L2VPN.
Nonforwarding — все маршруты и интерфейсы помещаются в основной routing instance, но при этом можно разделить основную таблицу маршрутизации на несколько поменьше.
VPN routing and forwarding (VRF) — используется для организации L3VPN. Содержит в себе не только таблицу маршрутизации (routing table), но и таблицу коммутации (forwarding table). При этом трафик с интерфейса отображается в RI один-к-одному, что позволяет передавать метки маршрутизации и принимать их, получая распределенный VPN.
Используя протоколы динамической маршрутизации (BGP, OSPF или ISIS) можно организовать обмен информацией между PE (provider edge) и CE (client edge) таким образом, что каждый из них будет получать и отдавать маршруты только внутри VPN канала.
Virtual router — производная от VRF, но без функций: VRF import, VRF export, VRF target, или route distinguisher.
Так как таблица маршрутизации находится только в пределах одного роутера, то не подходит для создания L3VPN.
Virtual private LAN service (VPLS) — организация многоточечного распределенного L2VPN поверх MPLS. Для клиента будет выглядеть как виртуальный свич, к портам которого подключены его пограничные (CE) устройства.

Таблица маршрутизации в JUNOS

Главная таблица называется inet.0 и содержит ipv4 юникаст маршруты. Также в JUNOS можно создавать несколько таблиц маршрутизации. По-умолчанию в системе созданы:
inet.0 — используется для ipv4 юникаст маршрутов;
inet.1 — используется для мультикаста;
inet.2 — используется для Multicast Border Gateway Protocol (MBGP) с проверкой RPF (Reverse Path Forwarding);
inet.3 — используется для MPLS маршрутов;
inet.4 — используется для Multicast Source Discovery Protocol (MSDP) маршрутов;
inet6.0 — используется для ipv6 юникаст маршрутов;
mpls.0 — используется для mpls next hops.

Часто используемые команды

show interfaces — просмотр состояния интерфейса порта

show interfaces ge-0/0/1.1210
  Logical interface ge-0/0/1.1210 (Index 2823) (SNMP ifIndex 8856)
    Description: 
    Flags: SNMP-Traps 0x4000 VLAN-Tag [0x8100.1210]  Encapsulation: VLAN-CCC
    Input packets : 901242548
    Output packets: 905972204
    Protocol ccc, MTU: 9192
Пояснения к примеру:

Интерфейс ge-0/0/1.1210 расшифровывается как:
ge — это тип интерфейса (Gigabit Ethernet)
0 — номер физического слота на нашем шасси.
0 — номер карты, вставленной в слот.
1 — номер порта на карте PIC.
После точки указывается номер VLAN.

show route — просмотр таблицы маршрутизации

show route
inet.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

10.0.16.0/24 *[Direct/0] 5d 17:37:05
  via fe-0/0/0.0 10.0.16.1/32 *[Local/0] 1w0d 15:51
  Local via fe-0/0/0.0 10.0.21.0/24 *[Direct/0] 1w0d 17:32
  via se-0/0/3.0 10.0.21.1/32 *[Local/0] 1w0d 17:32
  Local via se-0/0/3.0 192.168.42.1/32 *[Direct/0] 5d 18:02

+ = Active Route, - = Last Active, * = Both
10.0.0.1/32 *[Direct/0] 1w0d 19:02:26
  via lo0.16385 10.0.0.16/32 *[Direct/0] 1w0d 19:02:26
  via lo0.16385

Пояснения к примеру:

inet.0 — название таблицы маршрутизации

в JUNOS используются следующие таблицы маршрутизации:
inet.0 — используется для ipv4 unicast-маршрутов;
inet.1 — используется для мультикаста;
inet.2 — используется для MBGP (Multicast Border Gateway Protocol);
inet.3 — используется для MPLS маршрутов;
inet.4 — используется для MSDP (Multicast Source Discovery Protocol) маршрутов;
inet6.0 — используется для ipv6 unicast-маршрутов;
mpls.0 — используется для mpls next hops.

Local/0 — источник маршрута и его приоритет

*[Direct/0] — активный выбранный маршрут

show interfaces terse — просмотр интерфейсов и назначенных им IP адресов

show interfaces terse
lt-0/0/0.11      up    up   inet     10.182.221.173/30
lt-0/0/0.17      up    up   inet     10.182.236.113/30
lt-0/0/0.19      up    up   inet     10.182.229.181/30
lt-0/0/0.21      up    up   inet     10.182.229.177/30
lt-0/0/0.31      up    up   inet     10.182.220.237/30
lt-0/0/0.37      up    up   inet     10.182.236.21/30
lt-0/0/0.39      up    up   inet     10.182.220.45/30
lt-0/0/0.41      up    up   inet     10.182.236.41/30
lt-0/0/0.43      up    up   inet     10.182.236.117/30
lt-0/0/0.45      up    up   inet     10.182.9.9/30
lt-0/0/0.53      up    up   inet     10.182.220.245/30

monitor traffic — просмотр трафика на выбранном порту

monitor traffic interface lt-0/0/0.11
verbose output suppressed, use detail or extensive for full protocol decode
Address resolution is ON. Use no-resolve to avoid any reverse lookup delay.
Address resolution timeout is 4s.

Listening on lt-0/0/0.11, capture size 96 bytes
Reverse lookup for 10.182.221.174 failed(check DNS reachability).

13:39:56.506223 Out IP truncated-ip - 26bytes missing! 
10.182.221.173 > 10.182.221.174
OSPFv2, LS-Update, length 60
13:39:58.301080 Out IP truncated-ip - 54bytes missing! 
10.182.221.173 > 10.182.221.174
OSPFv2, LS-Update, length 88
In IP 10.182.221.174>10.182.221.173: OSPFv2,LS-Ack,length 64
3 packets received by filter
0 packets dropped by kernel

set interfaces — установка IP-адреса на интерфейсе

set interfaces fe-0/0/0 unit 0 family inet address 192.168.220.1/24

Результат команды:

show interfaces fe-0/0/0.0 brief
Logical interface fe-0/0/0.0
Flags: SNMP-Traps Encapsulation: ENET2
inet 192.168.220.1/24

Удаление IP-адреса на интерфейсе
delete unit 0 family inet address 192.168.220.1/24

show configuration — просмотр конфигурации

После команды show configuration указываем какую именно конфигурацию необходимо смотреть. Например, для просмотра конфигурации интерфейсов необходимо набрать show configuration interfaces

lt-0/0/0 {
    logical-tunnel-options {
        per-unit-mac-disable;
    }
    unit 0 {
        encapsulation ethernet-ccc;
        peer-unit 1;
        family ccc;
    }
    unit 1 {
        encapsulation ethernet;
        peer-unit 0;
        family inet {
            policer {
                input 512k;
                output 512k;
            }
            address 172.23.169.123/30;
        }
    }
    unit 2 {
        encapsulation ethernet-ccc;
        peer-unit 3;
        family ccc;
    }
    unit 3 {
        encapsulation ethernet;
        peer-unit 2;
        family inet {
            filter {
                input client_1;
                output client_1;
            }
            address 172.23.169.39/30;
            address 172.23.169.41/30;
            address 172.23.169.19/30;
            address 172.23.169.55/30;
        }
    }

Поиск и диагностика подключения

Необходимо проверить прохождение пакетов «Компании А». Для этого заходим на оборудование и
набираем команду show route table CompanyA.inet.0 192.168.0.25

CompanyA.inet.0: 18 destinations, 18 routes (18 active, 0 holddown, 0 hidden)
+ = Active Route, 
- = Last Active, 
* = Both
192.168.0.24/30 *[Direct/0] 13w1d 09:19:46 via ge-0/1/1.10

После отработки команды видим, что интерфейс подключен через гигабитный порт ge-0/1/1.10, смотрим интерфейс командой show interfaces ge-0/1/1.10

show interfaces ge-0/1/1.10
Logical interface ge-0/1/1.10 (Index 10) (SNMP ifIndex 60)
Description: CompanyA
Flags: SNMP-Traps VLAN-Tag [ 0x8100.10 ] Encapsulation: ENET2
Input packets : 1453
Output packets: 378
Protocol inet, MTU: 9174
Flags: Sendbcast-pkt-to-re
Addresses, Flags: Is-Preferred Is-Primary
Destination: 192.168.0.24/30, Local: 192.168.0.26, Broadcast:
192.168.0.27
Protocol multiservice, MTU: Unlimited

Находим локальный IP, в нашем примере это Local: 192.168.0.26 и пробует его пропинговать
ping routing-instance companyA 192.168.0.26

PING 192.168.0.26 (192.168.0.26): 56 data bytes
64 bytes from 192.168.0.26: icmp_seq=0 ttl=64 time=0.363 ms
64 bytes from 192.168.0.26: icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from 192.168.0.26: icmp_seq=2 ttl=64 time=0.025 ms
64 bytes from 192.168.0.26: icmp_seq=3 ttl=64 time=0.024 ms
64 bytes from 192.168.0.26: icmp_seq=4 ttl=64 time=0.024 ms