Показаны сообщения с ярлыком Juniper SRX. Показать все сообщения
Показаны сообщения с ярлыком Juniper SRX. Показать все сообщения

вторник, 28 февраля 2017 г.

Juniper DACBO (direct-attach copper breakout cables), твины, брейкаут кабеля и т.д.

Для того, чтобы получить из 40 гбит/сек (QSFP) интерфейса - 4 интерфейса 10 гбит/сек (SFP+) используются брейк-аут кабеля (direct-attach copper breakout cables).



Для начала необходимо понять, поддерживает ли конкретная модель данный тип кабеля, смотрим Interface Support for the...
В нашем примере будет QFX10002:



Далее смотрим, на каких конкретно портах поддерживается данный тип кабелей:

Конфигурация для работы DACBO кабеля выглядит следующим образом:

root> show interfaces terse | match xe- 
xe-0/0/0:0              up    down
xe-0/0/0:1              up    down
xe-0/0/0:2              up    up
xe-0/0/0:2.0            up    up   inet     10.10.10.1/24   
xe-0/0/0:3              up    down

root> show configuration chassis   
fpc 0 {
    pic 0 {
        port 0 {
            channel-speed 10g;
        }
    }
}

root> show configuration interfaces xe-0/0/0:2 
unit 0 {
    family inet {
        address 10.10.10.1/24;
    }
}

root> ping 10.10.10.10 rapid count 500 size 1453 
PING 10.10.10.10 (10.10.10.10): 1453 data bytes
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
--- 10.10.10.10 ping statistics ---
500 packets transmitted, 500 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.367/2.531/14.736/0.825 ms

четверг, 9 февраля 2017 г.

Архитектура Juniper SRX345

Архитектура SRX345:


Процессор:
OCTEON CN7130-AAP pass 1.2
Core clock: 1600 MHz
IO clock: 600 MHz
DDR clock: 667 MHz (1334 Mhz DDR)

Производитель проца:
http://www.cavium.com/OCTEON-III_CN70XX_71XX.html
ДШ по процу:
http://www.cavium.com/pdfFiles/CN70XX_CN71XX_PB_Rev_3.0.pdf?x=5

Свитч фабрика построена на чипсете Broadcom BCM53426.

Оперативная память: 4 гб.

среда, 8 февраля 2017 г.

STP шпаргалка JNCIS-ENT

STP разработан в Institute of Electrical and Electronics Engineers (IEEE) в 1998 году. Протокол определяется стандартом 802.1D.
Основная задача STP - не допускать loop в L2 сети путем просчета оптимального места и обрыва линка в этом месте, дальнейшего контроля состояния линков для оперативной перестройки топологии в случаи изменения состояние магистральных интерфейсов.
Существующие версии STP:
- Rapid Spanning Tree Protocol (RSTP)
- Multiple Spanning Tree Protocol (MSTP)
- VLAN Spanning Tree Protocol (VSTP)

Как это работает:
- свитчи обмениваются BPDU, шлют пакеты на мультикастовый ethernet-адрес 01-80-c2-00-00-00
- выбирается root bridge
- определяются роли портов по отношению к root bridge
- строится дерево, граф

Из чего состоит BPDU:
- DST MAC multicast адрес зарезервированный для STP (01-80-c2-00-00-00)
- SRC MAC адрес исходящего интерфейса
- размер
- LLC header который имеет destination service access point (DSAP) которой относится к root bridge

BPDU не имеет никакой VLAN метки.

Существует 2 типа BPDU:
- configuration BPDUs - для определения топологии, рута, назначения портов
- TCN BPDUs - изменения топологии

Процесс определения Root Bridge базируется на значении BID, который состоит из: настроенного приоритета (Bridge ID) и уникального идентификатора устройства (МАК адреса). Чем меньше приоритет BID - тем больше шанс стать root. Если приоритеты одинаковые, выбирается наименьший МАК адрес. 
В начале выборов каждый коммутатор считает себя корневым, о чем и заявляет всем остальным с помощью BPDU, в котором представляет свой идентификатор как ID корневого свича. При этом, если он получает BPDU с меньшим Bridge ID, он перестает хвастаться своим и покорно начинает анонсировать полученный Bridge ID в качестве корневого. В итоге, корневым оказывается тот свич, чей Bridge ID меньше всех.

Роли портов в STP


- все порты на root bridge в designated и forwarding состоянии
- root порты на остальных свитчах смотрят на root bridge и находятся в состоянии forwarding, root bridge никогда не имеет root портов. Root port выбирается суммированием скорости всех интерфейсов на пусти к RB, чем выше скорость - тем меньше cost: порт 10 мбит/сек - cost = 2,000,000, порт 10 гбит/сек - cost = 2000. Если скорости одинаковые выбирается порт с меньшим значением port ID (номер порта).
- designated порты находятся в forwarding состоянии
- все остальные порты находятся в blocking состоянии. Когда порт в данном состоянии он не отправляет BPDU, но слушает входящие BPDU.

В 2004 году вышел документ IEEE 802.1D-2004, который описывает механизм RSTP. Данный протокол имеет приемущество над STP за счет быстрого процесса сходимости сети.

В RSTP меняются роли портов:
- появляется новый тип Alternate (он подстраховывает root порт и принимает BPDU) по факту это порт, который смотрит тоже на RB, но имеет cost чуть выше основного.
- Block меняется на Backup, это порт который смотрит в LAN сегмент.

Сравнение STP и RSTP:

STP (802.1d)RSTP (802.1w)
В уже сложившейся топологии только корневой свич шлет BPDU, остальные ретранслируютВсе свичи шлют BPDU в соответствии с hello-таймером (2 секунды по умолчанию)
Состояния портов
— блокировка (blocking)
— прослушивание (listening)
— обучение (learning)
— перенаправление\пересылка (forwarding)
— отключен (disabled)
— отбрасывание (discarding), заменяет disabled, blocking и listening
— learning
— forwarding
Роли портов
— корневой (root), участвует в пересылке данных, ведет к корневому свичу
— назначенный (designated), тоже работает, ведет от корневого свича
— неназначенный (non-designated), не участвует в пересылке данных
— корневой (root), участвует в пересылке данных
— назначенный (designated), тоже работает
— дополнительный (alternate), не участвует в пересылке данных
— резервный (backup), тоже не участвует
Механизмы работы
Использует таймеры:
Hello (2 секунды)
Max Age (20 секунд)
Forward delay timer (15 секунд)
Использует процесс proposal and agreement (предложение и соглашение)
Свич, обнаруживший изменение топологии, извещает корневой свич, который, в свою очередь, требует от всех остальных очистить их записи о текущей топологии в течение forward delay timerОбнаружение изменений в топологии влечет немедленную очистку записей
Если не-корневой свич не получает hello- пакеты от корневого в течение Max Age, он начинает новые выборыНачинает действовать, если не получает BPDU в течение 3 hello-интервалов
Последовательное прохождение порта через состояния Blocking (20 сек) — Listening (15 сек) — Learning (15 сек) — ForwardingБыстрый переход к Forwarding для p2p и Edge-портов
Основная суть в том, что при изменении топологии - нам не приходиться заново пересчитывать все связи а достаточно лишь переключиться на заранее подготовленный резерв.

Некоторые материалы были позаимствованы: https://habrahabr.ru/post/143768/

понедельник, 5 декабря 2016 г.

High Availability Junos (подготовка JNCIS-ENT)

Рассмотрение GR, GRES, NSR, BFD

Graceful Restart (GR) - возможность выполнить перезагрузку демона маршрутизации (rpd) без перестроения топологии. Простыми словами: если для протоколов (OSPF, IS-IS, BGP, RIP, RSVP, LDP, MSDP, PIM) включен функционал GR, то при перезагрузки роутинг демона мы не потеряем соседство с маршрутизатором и не будет пересчитывать топологию.
Как включается данный функционал для каждого отдельного протокола: https://www.juniper.net/techpubs/en_US/junos15.1/topics/task/configuration/graceful-restart-for-routing-protocols-configuring.html


GR helper - режим включенный по умолчанию на устройствах. Это тот самый сосед, который ничего не расскажет про перезагрузку процесса другим в сети.
GR’s restarting router mode - не включен по умолчанию. Это и есть та самая возможность перезагрузки процессов без информация остальных.

Условия для выполнения GR:
- сетевая топология стабильна
- соседи настроены для взаимодействия
- не один из соседей не находится в состоянии GR
- grace период не просрочен



GR helper можно отключить глобально.
Болея специфическая конфигурация - предпочтительна. 
Как пример:
Можно отключить GR глобально, но включить для BGP.
Можно включить GR глобально, но отключить для OSPF.

Graceful RE Switchover - возможность включить поддержку смены ролей RE (master RE/backup RE) без простоя трафика. Естественной такой функционал будет работать, если у нас установлено 2 RE и GRES предусмотрен спецификацией конкретной модели оборудования.

В случае падения master RE без активированого GRES - PFE перезагружается, все физические интерфейсы переопределяются новой RE. Перезагружается rpd, теряются все соседства и идет перестроение топологии.

В случае падения master RE с активированной функцией GRES - PFE и интерфейсы не перезагружаются, перезагружается только процесс rpd. Чтоб RPD не перезагружался GRES настройку надо комбинировать с NSR или GR.

Алгоритм работы:
1. RE0 находится в состоянии мастер, RE1 находится в состоянии резервной
2. Когда GRES активирован - конфигурация и служебная информация синхронизированы между RE, они обмениваются keepalive пакетами
3. Если резервная RE на протяжении 2-х секунд не получает keepalive от мастер RE, они считает себя главной
4. PFE переподключается с RE0 на RE1
5. Новая мастер RE и PFE синхронизируются, если надо RE отправляет state update сообщения к PFE

show chassis routing-engine - проверка состояний и ролей

Конфигурация при разных RE:
groups {
    re0 {
        system {
            host-name spice-re0;
        }
        interfaces {
            fxp0 {
                unit 0 {
                    family inet {
                        address 192.168.69.155/21;
                    }
                }
            }
        }
    }
    re1 {
        system {
            host-name spice-re1;
        }
        interfaces {
            fxp0 {
                unit 0 {
                    family inet {
                        address 192.168.70.72/21;
                    }
                }
            }
        }
    }
    global;
}
apply-groups [ re0 re1 ];

Эта конфигурация позволяет задать разные Hostname и разные MNG IP для разных RE.

Чтоб синхронизировать конфигурация между разными RE необходимо сохранять конфигурацию через commit synchronize, либо задать автоматический коммит в конфигурации:
{master}[edit system]
user@R1-re0# set commit synchronize

Не забываем, что поменять отношения master/backup можно и в ручном режиме, например чтоб вытащить RE  и тд. - request chassis routing-engine master switch


Когда GRES активирован появляется баннер - master или backup в CLI.

Nonstop Active Routing - функционал для оборудования с резервированием по RE который позволяет при синхронизировать rdp данные между двумя RE. Такая возможность нам дает практически идеальную смену master RE и backup RE отношений.
Использовать одновременно NSR и GR нельзя.


Процесс RPD запускается на backup RE.
При изменении mastership ролей пиры подключенные к данному устройство об этом ничего не узнают.

NSR проверятся через команду: show task replication

BFD - Bidirectional Forwarding Detection
Большинство протоколов уже имеют встроенные функции по обнаружению ошибок на каналах логических, так и физических. Например, определение что OSPF сосед стал недостижим с интервалами по умолчанию может занят до 40 секунд! Это критично!
Решением такой проблемы стает протокол BFD - Bidirectional Forwarding Detection, своеобразная надстройка над протоколом маршрутизации, которая позволяет с помощью keepalive пакетов определять живучесть соседа. Такой процесс может занимать меньше секунды.




Можно установить transmit и receive интрвалы отдельно или сразу вместе. Не рекомендуется ставить интервал меньше 300 мс, высока вероятность ложных срабатываний. Логика работы такая: если 3 BDF hello не пришло - значит соединение помечено как не успешное.
Периодические пакеты в некоторых моделях Junos называются - periodic packet management (PPM) в BFD. По умолчанию они включены в Junos.

Проверка: show bfd session

VRRP - Virtual Router Redundancy Protocol, протокол резервирование основного шлюза. На нескольких устройствах настраивается функционал VRRP, одно из устройство выступает основным шлюзом остальные резервные для сегмента сети. Протокол стандартизирован - RFC 2338.

Аналог протокола VRRP у Cisco называется - Hot Standby Router Protocol (HSRP).

VRRP Router - маршрутизатор на котором запущен протокол (это может быть как Master, так и Backup маршрутизатор).
Master Router - маршрутизатор принимающий пакеты от сегмента сети и отвечающий на arp запросы.
Backup Router - маршрутизатор который отслеживает состояние Master и готов принять на себя трафик в случае сбоя Master. Таких маршрутизаторов может быть несколько.
Virtual Router - виртуальный IP адрес, который является шлюзом по умолчанию для сегмента сети обычно называемого VIP. VR имеет идентификатор который состоит из virtual router identifier (VRID) и virtual IP (VIP) address.

VRRP v2 использует common advertisement packet для взаимодействия между VRRP маршрутизаторами. Такие пакеты ходят по мультикаст адресу 224.0.0.18 и имеют TTL 255.
Временной интервал пересылки таких пакетов - 1 секунда, по умолчанию. Данный интервал можно править руками в пределах 1 - 255 секунд.  Также, можно установить fast-interval и настроить время пересылки в пределах от 100-999 мс.

При пересылке служебных пакетов и при ответе клиенту arp используется виртуальный MAC адрес, формат которого: 00-00-5E-00-01-VRID.

Выбор VRRP Master Router происходит по приоритету, который может быть от 1-255. Чем выше значение - тем выше приоритет. По умолчанию всем маршрутизаторам устанавливается значение в 100, кроме маршрутизатора который имеет VIP адрес.





По умолчанию VIP не отвечает на ICMP, чтоб включит возможность отвечать необходимо добавить accept-date в конфигурацию VRRP.

пятница, 2 декабря 2016 г.

Juniper SRX port forwarding (dst nat)

Как пробросить порт с белого на серый адрес Juniper SRX.

Определяем адрес и порт устройства внутри сети (серые адреса):
set security nat destination pool DST80-MNG-CONTROLLER address 192.168.xx.yy/32
set security nat destination pool DST80-MNG-CONTROLLER address port 443

Создаем правило NAT трансляции:
set security nat destination rule-set DST-NAT from zone INTERNET-ZONE
set security nat destination rule-set DST-NAT rule MNG-CONTROLLER match source-address 0.0.0.0/0
set security nat destination rule-set DST-NAT rule MNG-CONTROLLER match destination-address 91.211.xx.yy/32
set security nat destination rule-set DST-NAT rule MNG-CONTROLLER match destination-port 443
set security nat destination rule-set DST-NAT rule MNG-CONTROLLER then destination-nat pool DST80-MNG-CONTROLLER

Добавляем к адресную книгу адрес сервера (серный адрес):
set security zones security-zone MNG-ZONE address-book address CONTROLLER-GREY 192.168.xx.yy/32

Создаем политику из зоны Интернет в серую зону:
set security policies from-zone INTERNET-ZONE to-zone MNG-ZONE policy MNG-DEVICES match source-address any
set security policies from-zone INTERNET-ZONE to-zone MNG-ZONE policy MNG-DEVICES match destination-address CONTROLLER-GREY
set security policies from-zone INTERNET-ZONE to-zone MNG-ZONE policy MNG-DEVICES match application junos-https
set security policies from-zone INTERNET-ZONE to-zone MNG-ZONE policy MNG-DEVICES then permit
set security policies from-zone INTERNET-ZONE to-zone MNG-ZONE policy MNG-DEVICES then log session-init
set security policies from-zone INTERNET-ZONE to-zone MNG-ZONE policy MNG-DEVICES then log session-close

Проверка:
show security nat destination rule all
Total destination-nat rules: 1
Total referenced IPv4/IPv6 ip-prefixes: 2/0
Destination NAT rule: MNG-CONTROLLER         Rule-set: DST-NAT
  Rule-Id                    : 1
  Rule position              : 1
  From zone                  : INTERNET-ZONE
  Match
    Source addresses         : 0.0.0.0         - 255.255.255.255
    Destination addresses    : 91.211.xx.yy  - 91.211.xx.yy
    Destination port         : 443             - 443
  Action                     : DST80-MNG-CONTROLLER
  Translation hits           : 1241
    Successful sessions      : 407
    Failed sessions          : 834
  Number of sessions         : 2

show security flow session source-prefix 109.108.88.94 extensive
Session ID: 20063618, Status: Normal
Flags: 0x4000000/0x0/0x8003
Policy name: MNG-DEVICES/7
Source NAT pool: Null, Application: junos-https/58
Dynamic application: junos:UNKNOWN,
Encryption:  Unknown
Application traffic control rule-set: INVALID, Rule: INVALID
Maximum timeout: 1800, Current timeout: 1794
Session State: Valid
Start time: 74775, Duration: 5
   In: 109.108.xx.yy/30844 --> 91.211.xx.yy/443;tcp,
    Interface: ge-0/0/0.0,
    Session token: 0x7, Flag: 0x1021
    Route: 0xb0010, Gateway: 91.211.xx.yy, Tunnel: 0
    Port sequence: 0, FIN sequence: 0,
    FIN state: 0,
    Pkts: 9, Bytes: 1805              
   Out: 192.168.xx.yy/443 --> 109.108.xx.yy/30844;tcp,
    Interface: ae0.168,
    Session token: 0x8, Flag: 0x1020
    Route: 0x8689b02, Gateway: 192.168.12.7, Tunnel: 0
    Port sequence: 0, FIN sequence: 0,
    FIN state: 0,
    Pkts: 14, Bytes: 7983

понедельник, 28 ноября 2016 г.

Тунелирование Junos, GRE, IPIP (Подготовка JNCIS-ENT)

Туннелирование обеспечивает связь между удаленными подсетями поверх сети Интернет.
Данный подход к организации может быть полезным, ели:
- необходимо сделать прозрачную видимость между подсетями с адресами из RFC 1918
- конечные подсети имеют отличный от IP протокола (через Интернет передается только IP, напоминаю)

Дальнейшая статься будет рассматривать только незащищенные протокол (не такие как IPSec):
- GRE
- IP-IP

Логика работы: пакет приходит на граничный маршрутизатор сети, на котором настроен тунель, маршрутизатор инкапсулирует данный пакет вместе с заголовком и передает в сеть Интернет, принимающий маршрутизатор выполняет процес деинкапсуляция пакета и передает его дальше по сети получателю.

GRE может инкапсулировать IP, IPX, AppleTalk. Также, может выполнять инкапсуляцию ipv6 и MPLS трафика. Изначально разработан Cisco, но поддерживается множеством вендоров. Описан в RFC 1702.
GRE добавляет 24 байта к заголовку пакета. Такой пакет имеет IP protocol type 47. Сам пакет не меняет, только изменяется TTL, чтоб пакет не бегал по сети вечно.

IP-IP протокол предназначен для инкапсуляции IP трафика в IP трафик. К заголовку добавляется 20 байт. Опять же в основном пакете меняется TTL. Протокол описан в RFC 2003.

Имена интерфейсов:
gr-x/y/z в GRE
ip-x/y/z в IP-IP
Буковки обозначают сервисную карту, которая будет делать процесс инкапсуляции трафик. На MX, такой функционал выполняет FPC карточка. MX Tunnel Services Overview

Обязательными для конфигурации являются tunnel’s destination и source адреса.
По молчанию туннели полностью stateless, т.е. они ничего не знают о состоянии второго соседа. Если там интерфейс будет в состоянии Down, или устройство вообще будет не достижимо, на другой стороне устройство будет в Up.
Чтоб такого не было, необходимо использовать Keep Alive механизм в GRE или BFD.

Чтоб по тунелям бегали пакеты размером больше 1500, необходимо их фрагментировать, если стоит бит запрещающий фрагментацию, его можно снять установив clear-dont-fragment в конфигурации.

Пример простой конфигурации GRE:


Дополнительные параметры конфигурации:
- copy-tos-to-outer-ip-header чтоб поставить метку в GRE пакет;
- allow-fragmentation - по дефолту, пакет больше чем MTU будет отброшен, что чтоб он принимался в дальнейшую обработку необходимо включить данный функционал;
- clear-dont-fragment-bit - чтоб фрагментировать пакеты даже с битом запрещающим это делать;
- key - для проверки целостности

Дополнительно можно установить Path MTU discovery (PMTUD) - функционал который определяет максимальный размер MTU на туннеле.




Static, Aggregate, Generated маршруты в Junos (JNCIS-ENT подготовка)

Статические маршруты задаются в разделе: edit routing-options. По умолчанию статические маршруты имеют приоритет (preference) - 5.

Маршрут может быть указан на:
- IP адрес
- если интерфейс Point-To-Point, то можно указать название интерфейса (st0.0 например)
- пакеты могут быть отправлены в bit bucket. Если указываем отправлять в reject - в ответ отправителю пакета будет отправлено ICMP сообщение, если указываем discard - пакет будет просто отброшен без информирования отправителя
- можно отправлять трафик в другую табличку маршрутизации через next-table.

Статический маршрут находится в табличке RIB, пока он не будет удален, или не станет неактивен. Одна из возможных причин, когда маршрут не активен - next hop адрес стает недостижим.

С использованием опции qualified-next-hop можно прописать маршрут для одной подсети на 2 разных next-hop.

root@Mordor240> show configuration routing-options
static {
    route 0.0.0.0/0 {
        next-hop 109.108.xx.yy;
        qualified-next-hop 192.168.x.uu {
            metric 5;
        }
    }
    route 192.168.120.0/24 next-hop st0.0;
}

ipv6 маршрут указывается следующим образом:
set routing-options rib inet6.0 static route 2001:db8::5/128 next-hop 2001:db8:0:1:2a0:a502:0:19da

При необходимости для всех статических маршрутов можно поменять приоритет в категории defaults:
set routing-options static defaults preference 20
Данный приоритет будет изменение только на маршрутах, где приоритет не указан руками.

Пример:


Ответ: будет выбран next-hop - 172.30.25.5.

Aggregate routes - маршруты, которые объединяют в себе несколько маршрутом в меньшей маской. Например 192.168.1.0/24, 192.168.2.0/24... можно агрегировать в маршрут 192.168.0.0/20. Тем самым мы уменьшим количество записей в табличках маршрутизаторов соседей.

Чтоб агрегированный маршрут присутствовал в табличке маршрутизации, надо чтоб хотя бы 1 маршрут contributing был активен.

По умолчанию агрегированный маршрут имеет приоритет 130 и помечается как - reject. Когда маршрутизатор получает пакет, он обрабатывает его по принципу "more specific route", если он не находит такой маршрут - пакет отбрасывается.




Увидеть contributing  маршруты их которых состоит агрегированный маршрут:


Generated routes похожи на aggregate routes. Они тоже считаются активные когда хотя бы один contributing маршрут активен.
Отличием является то, что generated маршруты имеют конкретный next-hop, который определяется primary contributing route. А primary маршрут в свою очередь - маршрут который имеет лучший-минимальный приоритет.




Martian Addresses - подсети/адреса которые некогда не маршрутизируется между разными AS.
• 0.0.0.0/8
• 127.0.0.0/8
• 128.0.0.0/16
• 191.255.0.0/16
• 192.0.0.0/24
• 223.255.255.0/24
• 240.0.0.0/4


root> show route martians

inet.0:
             0.0.0.0/0 exact -- allowed
             0.0.0.0/8 orlonger -- disallowed
             127.0.0.0/8 orlonger -- disallowed
             192.0.0.0/24 orlonger -- disallowed
             240.0.0.0/4 orlonger -- disallowed
             224.0.0.0/4 exact -- disallowed
             224.0.0.0/24 exact -- disallowed

Martian Addresses могут правится, в них можно удалить/добавить маршруты.

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

В Junos есть возможность создавать отдельные инстранси маршрутизации - routing instance внутри одного устройства и задавать параметры обмена маршрутной информацией между ними.
Основной инстанс это master, куда входят: inet.0 и inet6.0 таблицы маршрутизации.

В Junos можна создать следующие инстансы для разных задач:
• forwarding: Used to implement filter-based forwarding for common Access Layer applications;
• l2vpn: Used in Layer 2 VPN implementations;
• no-forwarding: Used to separate large networks into smaller administrative entities;
• virtual-router: Used for non-VPN-related applications such as system virtualization;
• vpls: Used for point-to-multipoint LAN implementations between a set of sites in a VPN; and
• vrf: Used in Layer 3 VPN implementations.

Juniper routing instances на Хабре

Для обмена маршрутной информацией между инстансами используются routing information base (RIB) группы. Также, можно явно указывать таблички экспорта и импорта в инстансе: instance-import, instance-export и auto-export.
Маршрутизацию между отдельными инстансами можно сделать с помощью логических туннельных интерфейсов: lt-fpc/pic/port.

Demystifying Juniper's rib-groups на Хабре

вторник, 27 сентября 2016 г.

Juniper SRX downgrade error

При попытке откатиться с версии Junos 15.1x49-D60 на 15.1x49-D50 в режиме VC, node0 завила в процессе инсталяции и висела, пока устройство не было перезагружено руками.
После перезагрузки, устройство загружалось со прежней версией ОС а при попытке сделать downgrade получалась следующая ошибка:

Installing Host OS ...
upgrade_platform: -------------------
upgrade_platform: Parameters passed:
upgrade_platform: silent=0
upgrade_platform: package=/var/tmp/junos-srx-700e-junos-15.1X49-D50.3-linux.tgz
upgrade_platform: clean install=0
upgrade_platform: clean upgrade=0
upgrade_platform: Need reboot after staging=0
upgrade_platform: -------------------
upgrade_platform:
upgrade_platform: There is pending upgrade. upgrade_in_progress=backup
upgrade_platform: do rollback before attempting another upgrade
upgrade_platform: do [ upgrade_platform -r ] for rollback
ERROR: Host Upgrade failed!
ERROR: upgrade failed
ERROR: junos-srx-img fails post-install
ERROR: junos-srxentedge-15.1X49-D50.3-domestic-signed fails post-install
Installation failed for package '/var/tmp/junos-srxentedge-15.1X49-D50.3-domestic.tgz'


Лечится это из загрузчика: GRUB > Juniper-Linux-Upgrade который отображается в процессе перезагрузки

error: can't find command `serial'.
error: terminal `serial' isn't found.
error: terminal `serial' isn't found.

                     GNU GRUB  version 2.02~juniper/rel_v3~

 /----------------------------------------------------------------------------\
 | Juniper Linux                                                              |
 | Juniper Linux  Debug                                                       |
 |*Juniper-Linux-Upgrade                                                      |
 | Juniper-Linux-Recovery                                                     |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 \----------------------------------------------------------------------------/

      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, `e' to edit the commands
      before booting or `c' for a command-line. ESC to return previous
      menu.


Upgrading Linux ...
error: no suitable video mode found.
Booting in blind mode
i8042: No controller found
First Level Bootstrap using initramfs...
igb 0000:07:00.3: Hardware Initialization Failure
Mounting boot device LABEL=LINUX-BOOT
Unpacking initrd.cpio.gz ....
1096751 blocks
Unmount boot device LABEL=LINUX-BOOT
INIT: version 2.88 booting
Starting udev
Error: Driver 'ingot_fpga_uio' is already registered, aborting...
 cpld i2c resource res->start i2c-mux-cpld 0xfed50010 resource_size 0x5
 cpld i2c mapped 0x22582010
 cpld i2c number 6
running pre rc steps on SRX1500
disable_srx_boot_device
set_srx_boot_device
  3 logical volume(s) in volume group "vg0_vjunos" now active
Starting udev
Error: Driver 'ingot_fpga_uio' is already registered, aborting...
In init_module
In init_module - after register_chrdev
In init_module
In init_module - after register_chrdev
Starting Bootlog daemon: bootlogd.
Populating dev cache
Starting portmap daemon...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
kernel.core_uses_pid = 0
kernel.core_pattern = |/etc/init.d/zipcore.sh /var/tmp/corefiles/ %h.%e.%p.%t.core %e
fs.suid_dumpable = 2
vm.swappiness = 1
vm.vfs_cache_pressure = 50
kernel.core_pattern = |/etc/init.d/zipcore.sh /core/ %h.%e.%p.%t.core %e
kernel.core_pattern = |/etc/init.d/zipcore.sh /core/ %h.%e.%p.%t.core %e
kernel.core_pattern = |/etc/init.d/zipcore.sh /core/ %h.%e.%p.%t.core %e
kernel.core_pattern = |/etc/init.d/zipcore.sh /core/ %h.%e.%p.%t.core %e
kernel.core_pattern = |/etc/init.d/zipcore.sh /core/ %h.%e.%p.%t.core %e
INIT: Entering runlevel: 3
Starting system message bus: dbus.
Starting OpenBSD Secure Shell server: sshd
done.
Configuring network interfaces... done.
Starting rpcbind daemon...rpcbind: cannot bind * on udp: Address already in use
rpcbind: cannot bind tcp: Address already in use
done.
creating NFS state directory: done
starting statd: done
starting idmapd: rpc.idmapd: libnfsidmap: requested translation method, 'nsswitch', is not available

rpc.idmapd: Unable to create name to user id mappings.
done
Starting Advanced Configuration and Power Interface daemon: acpid.
acpid: starting up

acpid: 1 rule loaded

acpid: waiting for events: event logging is off

Starting domain name service: named.
starting DNS forwarder and DHCP server: dnsmasq...
dnsmasq: failed to create listening socket for port 53: Address already in use
Starting irqbalance: done
starting 8 nfsd kernel threads: done
starting mountd: done
Starting monit: Starting monit daemon with http interface at [localhost:2812]
Monit start delay set -- pause for 60s
[  OK  ]
starting rsyslogd ... done
Starting internet superserver: xinetd.
 * Starting virtualization library daemon: libvirtd
no /usr/bin/dnsmasq found; none killed                                   [ ok ]
Starting tcsd: OK
Starting crond: OK
Checking BIOS and Synchronizing recovery capsule
Synchronizing UEFI key-store:
Junper Dev keys are not revoked. Doing nothing
Booting normal on SRX1500
/root: 5.4 GiB (5774778368 bytes) trimmed
/var: 3.3 GiB (3516436480 bytes) trimmed
/app_disk: 1.3 GiB (1346297856 bytes) trimmed
Executing application: pkg-app-junos
Initializing JUNOS Host applications
[  OK  ] Application initialization.
Stopping internet superserver: xinetd.
Starting internet superserver: xinetd.
net.ipv4.ip_forward = 1
Starting SRX
Creating platform specific configurations.
mv: cannot stat '/var/tmp/corefiles/*': No such file or directory
/etc/init.d/rc.junosapp Text read from file - hw.chassis.chassis_id=0
 key:hw.chassis.chassis_id   var:0
 chassis_id:0   cluster_id:0
/etc/init.d/rc.junosapp Text read from file - hw.chassis.cluster_id=0
 key:hw.chassis.cluster_id   var:0
 chassis_id:0   cluster_id:0
ha_enabled:TRUE
ifup: interface eth0 already configured
/etc/init.d/rc.junosapp: line 260: [: 17G: integer expression expected
20+0 records in
20+0 records out
20 bytes (20 B) copied, 0.000342869 s, 58.3 kB/s
4+0 records in
4+0 records out
4 bytes (4 B) copied, 0.000309436 s, 12.9 kB/s
7+0 records in
7+0 records out
7 bytes (7 B) copied, 0.000307267 s, 22.8 kB/s
add map loop0p1 (252:3): 0 62500 linear /dev/loop0 1
add map loop0p2 (252:4): 0 187500 linear /dev/loop0 62501
stopping idmapd: done
stopping statd: done
creating NFS state directory: done
starting statd: done
starting idmapd: rpc.idmapd: libnfsidmap: requested translation method, 'nsswitch', is not available

rpc.idmapd: Unable to create name to user id mappings.
done
stopping mountd: done
stopping nfsd: done
starting 8 nfsd kernel threads: done
starting mountd: done
kdump: unrecognized service
Starting OpenBSD Secure Shell server: sshd
/usr/sbin/sshd is already running
1721
starting rsyslogd ... done
Starting internet superserver: xinetd.
sntpc: unrecognized service
Starting crond: FAIL
watchdog: unrecognized service
Starting lcmd: [  OK  ]
Starting vehostd: [  OK  ]
Starting monit:
stopping mountd: done
stopping nfsd: done
starting 8 nfsd kernel threads: done
starting mountd: done
Processing file: /etc/dh89xxcc_qa_dev0.conf
Stopping Bootlog daemon: bootlogd.

Wind River Linux 6.0.0.15 localhost console

localhost login: root
Password:

 -------------------------------------------
 NOTICE: 09-27-2016 09:32:04 AM
 -------------------------------------------
 System booted from backup boot.


 There is a pending upgrade with upgrade_in_progress=backup.
 You can cancel pending upgrade by doing rollback.
 do 'upgrade_platform -r' to rollback.

 -------------------------------------------

root@localhost:~# upgrade_platform -r
upgrade_platform: Requested rollback of a staged upgrade..
bzImage-intel-x86-64.bin: OK
initramfs.cpio.gz: OK
version.txt: OK
upgrade_platform: Checksum verified and OK...
/root
upgrade_platform: Restoring backup to current.
bzImage-intel-x86-64.bin: OK
initramfs.cpio.gz: OK
version.txt: OK
upgrade_platform: Checksum verified and OK...
/root
root@localhost:~# reboot

Broadcast message from root@Stopping OpenBSD Secure Shell server: sshdstopped /usr/sbin/sshd (pid 1721)
.
Stopping Advanced Configuration and Power Interface daemon: stopped /usr/sbin/acpid (pid 1757)
acpid.
Stopping domain name service: named.
Stopping system message bus: dbus.
stopping DNS forwarder and DHCP server: dnsmasq... stopped /usr/bin/dnsmasq (pid 2039)
done.
Shutting down irqbalance: stopped irqbalance (pid 1803)
done
stopping mountd: done
stopping nfsd: done
Stopping monit:
stopping rsyslogd ... done
Stopping internet superserver: xinetd.
stopping idmapd: done
stopping statd: done
Clearing ebtables rulesets: filter nat broute done. ok
Stopping crond: OK
Stopping rpcbind daemon...
done.
 * Stopping virtualization library daemon: libvirtd                      [ ok ]
Deconfiguring network interfaces... done.
Stopping tcsd: OK
Sending all processes the TERM signal...
haveged: haveged: Stopping due to signal 15

Sending all processes the KILL signal...
Unmounting remote filesystems...
Stopping portmap daemon...
Deactivating swap...
Unmounting local filesystems...
Rebooting... LPC-DRV: reboot notifier called with 0x0001
Restarting system.
U

InsydeH2O version : SRXS_SFP_00.26_01.01
BIOS Build Date : 07/29/2016

System Memory Speed : 1600 MHz

Processor Type : Intel(R) Xeon(R) CPU  @ 2.50GHz

Juniper SRX1500 SSH don't work

Не работает SSH по причине не правильной ссылки:
mkdir: /etc/ssh: Too many levels of symbolic links
Cannot create /etc/ssh

root@node0% cd /etc/ssh
/etc/ssh: Too many levels of symbolic links.

Необходимо просто пересоздать папку:
rm /var/db/ssh
mkdir /var/db/ssh

И перезагрузить устройство.

Ошибка присутствовала в: 15.1X49-D40.6

пятница, 26 августа 2016 г.

Мониторинг (дэбаг) политик и прохождения траффика через Juniper SRX

Промониторить траффик флов для траффика:

monitor security flow filter destination-prefix 192.168.16.252 TEST_FLOW_16
monitor security flow file TEST_FLOW_FILE_16 size 1m
monitor security flow start 

Оправляем пакеты на наш destination.

Проверяем дэбаг файл: 
show log TEST_FLOW_FILE_16 | no-more 

Отключаем фильтр:
clear monitor security flow filter 

четверг, 16 июня 2016 г.

Juniper SRX1500 power-off full console log

root> request system power-off  
Power Off the system ? [yes,no] (no) yes

Shutdown NOW!
                                                                             
*** FINAL System shutdown message from root@ ***                          

System going down IMMEDIATELY                                                

Juniper SRX1500 software upgrade full console log

root> ...srxentedge-15.1X49-D50.3-domestic.tgz no-validate reboot        
Installing package '/var/tmp/junos-srxentedge-15.1X49-D50.3-domestic.tgz' ...
Verified junos-srxentedge-15.1X49-D50.3-domestic.tgz signed by JuniperSecurityProducts_2014
Adding ...
Saving contents of boot area prior to installation

WARNING:     This package will load JUNOS 15.1X49 software.
WARNING:     It will save JUNOS configuration files, and SSH keys
WARNING:     (if configured), but erase all other files and information
WARNING:     stored on this machine.  It will attempt to preserve dumps
WARNING:     and log files, but this can not be guaranteed.  This is the
WARNING:     pre-installation stage and all the software is loaded when
WARNING:     you reboot the system.

Saving the config files ...
NOTICE: uncommitted changes have been saved in /var/db/config/juniper.conf.pre-install
Pushing Junos image package to the host...
Installing /var/tmp/install-media-srx-700e-junos-15.1X49-D50.3.tgz
Extracting the package ...
total 657588
-rw-r--r-- 1 30426 950 225003104 Jun 16 07:33 junos-srx-700e-junos-15.1X49-D50.3-linux.tgz
-rw-r--r-- 1 30426 950 448364060 Jun 16 07:33 junos-srx-700e-junos-15.1X49-D50.3-app.tgz
Setting up Junos host applications for installation ...

понедельник, 30 мая 2016 г.

Как наплодить префиксов в BGP Juniper

Задача: протестировать RIB/FIB устройства с использованием Juniper для генерации префиксов.

Для начала создадим универсальный список префиксов. Я обычно беру любой Juniper MX и выполняю: show route | display xml | match "<rt-destination>" | no-more. Команда вывод список префиксов в формате <rt-destination>70.36.9.0/24</rt-destination>. Не нужные символы в скобках удаляются в блокноте с помощью замены (Ctrl+H). В итоге мы получаем красивый список адресов в формате:
70.36.6.0/24
70.36.30.0/24
70.38.0.0/17
...

Далее будем использовать Excel. Копируем список адресов с блокнота и вставляем во второй столбец документа Excel. 
Первый столбец документа Excel заполняем "     route " именно с таким количеством пробелов, как в примере.
Третий столбец заполняем " discard;".

Далее копируем все активное содержимое Excel документа и вставляем в блокнот, у нас должны получиться следующие строчки:
"     route 1.22.51.0/24 discard;"
"     route 1.22.52.0/24 discard;"
"     route 1.22.53.0/24 discard;"
"     route 1.22.54.0/24 discard;"

В самом начале документа блокнота вставляем:
routing-options {
    static {

В самом конце документа вставляем:
}
}

В конечном виде, наш блокнот будет выглядеть следующим образом:
routing-options {
    static {
     route 1.22.51.0/24 discard;
     route 1.22.52.0/24 discard;
     route 1.22.53.0/24 discard;
     route 1.22.54.0/24 discard;
     ....
     route 69.18.230.0/23 discard;
     route 69.18.232.0/22 discard;
}
}

Сохраняем все это дело в .txt формате. По сути мы получили кусок конфиги, который необходимо засунуть в Juniper. Для этого через FTP, SCP копируем наш txt файлик на Juniper в /var/tmp/.

Заходим в режим конфигурации на Juniper:

root> configure                                 
Entering configuration mode

[edit]
root# load merge "/var/tmp/100k routes.txt" relative    
load complete

[edit]
root# commit and-quit 

commit complete
Exiting configuration mode

root> 

Commit будет выполняться в зависимости от размера файла. 100к маршрутов комитит 3-4 минуты.

Если мы по ошибке залили битый файл и не тот, файл всегда можно удалить из CLI с помощью: file delete "/var/tmp/100k routes.txt"

пятница, 27 мая 2016 г.

Troubleshooting Juniper MX и не только, диагностика и анализ использования ресурсов

Что делать когда Juniper сам по себе перезагрузился? Каким образом проверить использование системных ресурсов на устройстве? Как выполнять Troubleshooting работы Juniper?


1. Самое первое, что стоит проверить после перезагрузки устройства - show chassis routing-engine значение "Last reboot reason" в котором в штатном режиме должно быть - "Router rebooted after a normal shutdown" Но, стоит понимать, что это определение не говорит о том, что проблем не было, это лишь поможет понять, увидел ли проблему JunOS или нет, что может упростить процесс анализа.
Я на своей практике замечал следующие состояние: "could not be determined", "panic:ehci_abort_xfer: not in process context", "0x1:power cycle/failure".

На правах рекламы совета, большинство падений оборудования связано с недавно внесенными изменениями в сеть/работу устройства и т.д. Какие действия выполнялись на Juniper можно проверить по commits (история внесений изменений в конфигурацию устройства):
show system commit  - кто и когда коммитил
show configuration | compare rollback 2 - сравнить текущую конфигурацию системы с конфигурацией в файле  rollback 2
show system rollback compare 4 3 - сравнить 2 файла конфигурации

2. Проверим файлы с логами: show log messages | find "FreeBSD Project". Не забываем, что если у нас устройство генерирует большое количество записей, то просматриваем все имеющиеся файлы логов (messages.0.gz, messages.1.gz и тд.) пока не найдем желаемое. Читаем логи за 15 минут до падения устройства и анализируем.
Для того чтобы удобно работать с логами, необходимо использовать достаточный уровень логирования, например - set system syslog file messages any notice. Рекомендуется не включать полное логирование "any any", такое логирование со временем просто "убьет" flash drive на routing-engine. Если мы хотим логировать всё-всё-всё - syslog сервер нам в помощь.

Заметим, что в случае, если устройство перезагружено администратором в логах будет следующие записи:
May 17 17:15:04  EX3200 mgd[45517]: UI_REBOOT_EVENT: System rebooted by 'admin'
May 17 17:15:10  EX3200 shutdown: reboot by admin:

В случае, если мы замечаем, что устройство жалуется на конкретный процесс (daemon), в KB Juniper мы можем найти описание процессов: List of Junos OS Processes

Не мало важный момент это - использование traceoptions на Juniper (debug). Включение traceoptions для сервисов, протоколов, процессов и тд. значительно помогает в настройке/troubleshooting, но, это может вылезть "боком", трейсы довольно трудоемкий процесс и кушает много системных ресурсов. Поэтому, в штатном режиме использовать traceoptions не стоит и + это убьет flash drive в 10 раз быстрее... Когда flash drive плохо, возникает похожая ошибка - g_vfs_done():da1s1f[WRITE(offset=962772992, length=16384)]error = 5, она может возникнуть в процессе работы, загрузки устройства, либо работы с файловой системой.
Проверяем не было ли создано системой core-dumps файлов (это дампы памяти, которая система может сделать в случаи crash определенного демона rpd, etc).
show system core-dumps

Содержание данных файлов трудно проанализировать самостоятельно, поэтому, зачастую создается тикет в JTAC и данные файлы заливаются на FTP Juniper, в последующем анализируются инженерам. FAQ в KB Juniper по добавления файлов.
TT (trouble ticket) можно открыть при наличии активного сервисного контракта у Juniper Networks - Serial Number Entitlement Search

3. Проверим версию установленного JunOS:
show version

Не нужно гнаться за самой последней веткой и версией софта а использовать recommend (http://kb.juniper.net/InfoCenter/index?page=content&id=KB21476&actp=search)
Важный момент, возможно уже существует описание бага по причине которого и произошла перезагрузка оборудования, данную информацию можно проверить в в PROBLEM REPORT SEARCH - https://prsearch.juniper.net/InfoCenter/index?page=prsearch. Для входа требуется регистрация.
Информация и FAQ по обновлению JunOS

3. Большинство устройств Juniper имеют модульную архитектуру и разделение по плоскости управления и обработки трафика (control & data plane), правда это разделение не всегда аппаратное. Выполняем типичную проверку состояния компонентов устройства (Routing-engine, Flexible PIC Concentrator, tfeb, ethernet-switch, компоненты и функции устройства могут отличаться в зависимости от серии и модели устройства). Таким образом мы попытаемся локализовать проблему.

show chassis hardware - список всех компонентов (само шасси, платы (модуля), блоки питания, фаны). Это исключительно список активных компонентов. Если карта сейчас упала или перезагружается здесь она отображена не будет, пока она полностью не загрузиться и не будет инициализирована.

show chassis routing-engine  - состояние Routing-engine (мозгов устройства), если используется резервирование, одна RE в состоянии Master, вторая RE в состоянии Backup. Здесь обращаем внимание на использование оперативной памяти и CPU.
Рекомендации по настройка отказоустойчивость по RE - Configuring Routing Engine Redundancy

show chassis alarms и show system alarms - комментарии излишни, система сама может показать проблему, если она ее заметила.

show chassis fpc detail - информация о состоянии и нагрузки линейных карт.

show chassis fpc pic-status - информация о состоянии pic модулей, которые вставлены в fpc карты.

show chassis pic fpc-slot 0 pic-slot 2 - информация о состоянии и загрузки конкретной pic карты, в примере это MS-MIC-16G на mx10-t.

show chassis environment - температура ASIC чипов (LU (XL), MQ (XM), QX (XQ) - это типы чипов на Juniper Trio Chipset для MX) тип чипа зависит от модели и архитектуры устройства). При нормальных условиях функционирования устройства температура не должна превышать 60 градусов по Цельсию. Если все блоки питания подключены к сети, напротив PEM будет указано - OK, если блок питания присутствует, но питание не подается - Absent. В штатном режиме, все fan должны крутиться на нормальной скорости, это отображается как - Spinning at normal speed.

На больших железках MX240 +  все участвующие в обработке трафика компоненты связываются между собой через встроенный в SCB ethernet-switch. Выполнив команду show chassis ethernet-switch statistics мы можем посмотреть нет ли ошибок на служебных интерфейсах.

5. Настройки защиты control plane. По умолчанию, Juniper MX например, не имеет никаких ограничений по протоколам, портам, к которым могут обращаться снаружи. Учитывая тот факт, что существует большое количество уязвимостей как JunOS CVE Vulnerability Juniper, так и уязвимостей в протоколах. Правильное решение данной проблемы - настроить фильтры для трафика, который может обращаться к control plane нашего устройства.
Официально у Juniper есть следующая литература:
http://www.juniper.net/us/en/training/jnbooks/day-one/fundamentals-series/securing-routing-engine/





вторник, 12 апреля 2016 г.

Juniper SRX IPSec VPN Guide

Juniper IPSec Web Configurator (внешний сайт)

Общие принципы:
- IPSec - набор стандартов, который определяет каким образом шифровать данные, проверять целостность данных, аутентифицировать стороны обменена данными;
- IPSec работает на сетевом уровне;
- Для обмена данными в IPSec используется асимметричное шифрование (Public and Private keys...) и протоколы защиты передаваемых данных (AH, ESP)
- Проверка целостности данных осуществляется за счет алгоритмов хеширования. The Junos OS supports MD5, SHA1, and 256-bit SHA2 hashing
- Безопасное согласование ключей происходит по алгоритму Diffie-Hellman. JunOS поддерживает следующие группы: 1, 2, 5, 14, 19, 20, 24. Чем выше группа - тем безопасней.

вторник, 22 марта 2016 г.

Import routes from BGP to routing-instance Juniper

Импортировать получаемые по BGP маршруты в другую табличку маршрутизации (routing-instances) с использованием rib-group для семейства протокола BGP.

Имеем BGP пира:
set protocols bgp local-as 49620
set protocols bgp group KICHKAS-NET type external
set protocols bgp group KICHKAS-NET peer-as 42714
set protocols bgp group KICHKAS-NET neighbor 172.16.100.2 import KICHKASNET-IN
set protocols bgp group KICHKAS-NET neighbor 172.16.100.2 export KICHKASNET-OUT

От пира получаем определенные подсети:
itbiz@border> show route receive-protocol bgp 172.16.100.2  
inet.0: 112 destinations, 112 routes (111 active, 0 holddown, 1 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 10.10.0.0/16            172.16.100.2         0                  42714 I
* 10.11.0.0/16            172.16.100.2         0                  42714 I
* 10.12.0.0/16            172.16.100.2         0                  42714 I
...

вторник, 21 июля 2015 г.