Что такое FRR и vtysh
FRR (FRRouting) - open-source реализация классических routing-протоколов: BGP, OSPF, IS-IS, RIP, BFD, EIGRP. Состоит из набора демонов:
- zebra - ядро: общается с kernel routing table, агрегирует маршруты
- bgpd - BGP-демон (bgp)
- ospfd - OSPF v2 для IPv4 (ospf)
- ospf6d - OSPF v3 для IPv6
- isisd, ripd, eigrpd - соответствующие протоколы
Каждый демон слушает свой UNIX-сокет с CLI. vtysh - терминал который может общаться с всеми демонами одновременно, давая единое окно конфигурации (как Cisco IOS / Junos CLI).
Режимы (как в Cisco)
router# ← privileged (read+show)
router# configure terminal ← перейти в config-mode
router(config)# ← можно править конфиг
router(config)# router bgp 65001
router(config-router)# ← подкоманда конкретного process'а
router(config-router)# exit
router(config)# exit
router# ← обратно в privileged
Команды show / debug - в privileged, конфиг - в configure.
Самые ходовые команды
Общая диагностика
sudo vtysh -c "show version"
sudo vtysh -c "show running-config" # текущий конфиг
sudo vtysh -c "show ip route" # все маршруты в kernel + RIB
sudo vtysh -c "show interface brief"
BGP
sudo vtysh -c "show ip bgp summary" # таблица соседей + state
sudo vtysh -c "show ip bgp" # все полученные/анонсированные prefix'ы
sudo vtysh -c "show ip bgp neighbors 10.0.0.2"
sudo vtysh -c "show ip bgp neighbors 10.0.0.2 advertised-routes"
sudo vtysh -c "show ip bgp neighbors 10.0.0.2 received-routes"
Что мы хотим увидеть в show ip bgp summary:
Neighbor V AS MsgRcvd MsgSent ... State/PfxRcd
10.0.0.2 4 65002 100 100 ... 5
Если в State/PfxRcd число - сессия Established и принимаем 5 prefix'ов.
Если Active / Idle - handshake не завершился (обычно сетевая или конфиг).
OSPF
sudo vtysh -c "show ip ospf neighbor" # adjacencies (нужно 'Full')
sudo vtysh -c "show ip ospf interface brief" # на каких интерфейсах работает
sudo vtysh -c "show ip ospf database" # LSDB - карта топологии
sudo vtysh -c "show ip ospf route" # рассчитанные SPF-маршруты
Конфиг через here-doc
Удобный способ применить конфиг скриптом:
sudo vtysh <<'EOF'
configure terminal
router bgp 65001
no bgp default ipv4-unicast
neighbor 10.0.0.2 remote-as 65002
address-family ipv4 unicast
neighbor 10.0.0.2 activate
network 10.0.0.0/24
exit-address-family
exit
do write
EOF
do write сохраняет running-config в /etc/frr/frr.conf чтобы
пережил рестарт демонов.