Рубрики
network \ сеть Конспект

Конспект: routing / frr / bgp / ecmp

Cсылки:

# RFC
https://tools.ietf.org/html/rfc1918 
https://tools.ietf.org/html/rfc6890
https://www.rfc-editor.org/rfc/rfc1930
https://www.rfc-editor.org/rfc/rfc4271
# IPCALC
http://jodies.de/ipcalc
# FIB
https://en.wikipedia.org/wiki/Forwarding_information_base
# SYSCTL / rp-filter
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
# Looking glass
http://lg.mtu.ru/cgi-bin/lgform_img.cgi
# OSPF
https://community.cisco.com/t5/networking-documents/ospf-design-best-practices/ta-p/3112070
https://spw.ru/educate/articles/primenenie-ospf-v-routeros-1/
# BGP
https://linkmeup.ru/blog/65.html
https://www.ssi.gouv.fr/uploads/2016/03/bgp-configuration-best-practices.pdf
http://xgu.ru/wiki/BGP_%D0%B2_Cisco
http://www.justogroup.ru/dokumentacija/cisco/marshrutiziruemye_seti/prakticheskie_primeri_bgp.pdf
# AS 2.0
https://www.cidr-report.org/as2.0/
# BIRD
https://bird.network.cz/
# frr
https://frrouting.org/
# печалька в яндекс в 2211 году
https://habr.com/ru/company/yandex/blog/126709/

Сети

Серые сети
- 10.0.0.0/8
- 172.16.12.0/12
- 192.168.0.0/16

Специальные сети
- 0.0.0.0/8 - этот хост как источник
- 127.0.0.0/8 - этот хост как приемник, loopback
- 100.64.0.0/10 - Shared Net - NAT на уровне провайдера
- 169.254.0.0/16 - Link Local - сеть для самоконфигурирующихся устройств
- 240.0.0.0/4 - Multicast

Рекомендуемая схема нумерации для сетей
10.1.32.0/23
   |  |
   |  |
   |  vlan #132 
   geo-id #1


Агрегат:



Агрегат - минимально возможная сеть, включающая в себя все специфики
10.0.0.0/13 - Агрегат
10.1.0.0/16 - Специфик
10.2.0.0/16 - Специфик
10.6.20.0/22 - Специфик

forwarding information base (FIB)
также известная как "таблица пересылки"(forwarding table) или "таблица MAC -адресов"(MAC table)
В роутинге специфики всегда выигрывают при поиске в FIB

Агрегаты всегда должны "заворачиваться в null", что бы избегать проблем с кольцами, броадкастами и мусорным трафиком в маршрутизации
ip route add blackhole 10/8
Кроме того, null routing - самый дешевый способ фильтрации трафика


Динамическая маршрутизация:

Автоматическое получение маршрутов и возможность их перестроения при изменении топологии
Interior Gateway Protocols
- Open Shortest Path First
- Enhanced Interior Gateway Routing Protocol

Работают на уровне L3, каждый роутер знает всю топологию своей области, отслеживается состояние соединений

Border Gateway Protocol (BGP)
Работает на уровне L4 (возможно управление маршрутизаторами с отдельно стоящего BGP Route Server), 
состояние пиринга определяетя по состоянию TCP-сессии. 

Может использоваться внутри AS/Area


Quagga (ex-Zebra) (deprecated / устарел)

Набор демонов, реализующий управление сетью в linux
RIPD, OSPFD, BGPD, ISISD
Zebra (Forwarding Information Base, FIB)
vtysh - консоль управления
Взаимодействует с таблицей "Kernel Routing Table"
Возможно так же управление интерфейсами и разнообразными сетевыми настройками
Полностью копирует управление и функциональность Cisco IOS

BIRD

- разрабатывается с 2005 года
- умеет: OSPF,IS-IS,RIP,BGP,BFD
- умеет IPV6
- свой язык описания конфигов и фильтров
- используется: DE-CIX, LINX, PAIX, MSK-IX

Архитектура:
- master - Основанная таблица, в которую попадают маршруты от других  протоколов
- device - протокол, который следит за статусами интерфейсов в системе
- static - протокол, отвечающий за статическую маршрутизацию
- direct - протокол, создающий в таблице маршруты на основе настроек интерфейсов системы
- kernel - протокол для взаимодействия с ядром и загрузкой маршрутов в таблицу маршрутизации linux

OSPF Terms / Neighbourhood / interface

OSPF Terms:
Area - интерфейсы, роутеры которых получают всю информацию о топологии сети. 
Для небольшой сети возможно использование единственной Area 0. Есть разновидности - backbone, standard, stub, not-so-stubby area и еще несколько
Hello - пакеты, устанавливающие и поддерживающие соеденение роутеров
LSA (Link State Announce) - единица обмена информацией между роутерами
OSPF (https://habr.com/post/201794/)
BR - Border Router
ABR (ospf term) - Area Border Router
ASBR (bgp term) - Autonomous System Border Router
DR - Designated Router - ABR, являющийся основной точкой входа в Area
BDR - Backup Designated Router - ABR, являющийся резервной точкой входа
DROther - BR, не участвующий в построении графа маршрутов

OSPF Neighbourhood
Cостояния соседства маршрутизаторов
Down - соседа не видно
Attempt, Init - попытка установить соединение
2-Way - роутеры видят друг-друга
Exstart, Exchange, Loading aka Adjacent - роутеры обмениваются информацией
Full aka Full Adjacent - роутеры обменялись информацией


OSPF interface
Priority: DR/BDR election
Если в одну сеть есть два входа через два роутера, то один из них становится DR, остальные - BDR. 
На принятие решения влияет priority и router-id. 
Если по каким-то причинам роутеры не могут выбрать DR, то состояние их соседства повиснет в 2way/DRother.
Специальное значение priority 0 - отказ от выборов.

Cost - стоимость прохождения через этот интерфейс. 
По-умолчанию рассчитывался исходя из пропускной способности интерфейса. 
Теперь неактуально, потому что при bw ≥ 100 Mbps default cost = 1. 
Если есть два маршрута в одну сеть с одинаковой суммарной стоимостью - устанавливаются оба, 
в противном случае устанавливается только один с минимальной стоимостью. 
Параметр интерфейса роутера, а не направления в целом, поэтому для понижения приоритета всего линка должен быть установлен с обоих сторон.

Linux rp_filter
По умолчанию, параметр установлен в 1, что обозначает строгую проверку маршрута источника. 
Это правильно до тех пор, пока мы не сталкиваемся с динамическим роутингом. 
При использовании IGP можно сразу выставить в 2 (нестрогая проверка) или в 0 (отсутствие проверки)

Автономная система:

Автономная система (autonomous system, AS) - это система IP-сетей и маршрутизаторов, управляемым одним или несколькими операторами, имеющими единую политику маршрутизации с Интернетом.

Особенности:
- процесс создания и регистрации AS описан в RFC 1930.
- номера AS выдается организациями RIR (Regional Internet Registry) или LIR (Local Internet Registry)
- до 2007 года были 16-бинтыми, теперь 32-битные номера

Диапазоны номеров автономных систем:
- 0-65535 (изначально определенный диапазон для ASN 16 бит)
- 65536-4294967295 (новый диапазон для ASN 32 бит(КАС 4893))
(май 2007)

Использование номеров автономных систем:
- 0 и 64535 - зарезервированы
- 1-64495 публичные номера (все что не выдали до 2012 - резерв у IANA)
- 65552-4294967295 публичные номера (выдается с 2010)
- 64512-65534 - приватные номера
- 23456 - представляет 32-битный диапазон на устройствах, которые работают с 16-битным диапазоном(для совместимости со старым оборудованием)

Provider Aggregatable (PA) -  диапазон адресов, приндлежащий провайдеру
Особенности:
- легко получить
- принадлежат провайдеру
- в случае смены провайдера - остается у провайдера

Provider Independent (PI) - независимый от провайдера диапазон адресов
Особенности:
- приобретается у  LIR
- привязывается к номеру AS
- сохраняются при смене провайдера и добавляет гибкости маршрутизации

AS и префикс с реальным IP-адресами выдает RIPE
Не операторы могут получить префикс, можно договорится с другими операторами и поднять пиринг по BGP. В базе данных RIPE можно будет добавить информацию о том что сеть закреплена за вашей организацией.

Если нету номера AS для поднятия пирига можно использовать приватный диапазон AS 64512-65534.

BGP

RIPE -> RIR -> LIR

Особенности:
- дистанционно-векторный протокол
- децентрализованный
- имеет гибкую систему фильрации и управления приоритетами маршрутов
- имеет защиту от образования петель
- объединяет автономные системы (AS)(eBGP)
- может использоваться внутри одной AS(iBGP)
- работает на уроне L4
- состояние пиринга определяет по состоянию TCP-сессии
- для построения таблицы маршрутизации используется номера AS
- может быть требователен к ресурсам маршрутизатора
- текущий размер полной таблицы маршрутизации сети Интернет более 800к маршрутов

Основные условия для установления соседства по BGP
- связанность по TCP
- доступность порта TCP 179
- программные или аппаратные маршрутизаторы с поддержкой протокола

Таймеры:
- необходимы для установки соседства
- по RFC4271, keepalived time = 90s, hold time = 30s
- Cisco, keepalived time = 180, hold time = 60s
- FRR, keepalived time = 180s, hold time = 60s
- не стоит делать значения таймеров очень мленькими , это может вызвать проблемы
- лучше использовать протокол BFD

Основные состояния установления соседства по BGP:
IDLE - изначальное состояние BGP-соседства. Ничего не происходит.
CONNECT - слушает порт 179, но ничего не отправляет
ACTIVE - отправил SYN и ждет ответа от соседа
OPENSENT** - BGP начал обмен сообщениями OPEN. Сообщение отправлено
OPENCONFIRM** - сообщение OPEN получено
ESTABLISHED - все настройки согласованы и сессии BGP работают

Основные сообщения в BGP:
Open - согласование номера ASб HoldTimer и Router ID.


Протокол обмена маршрутной информацией уровня провайдера.
Объединяет т.н. Автономные Системы (Autonomous System, AS)

AS похож на OSPF Area. Подразумевается, что все сети внутри AS так или иначе объединены с помощью IGP
В некоторых случаях BGP может использован внутри AS. 
Т.к. BGP в основном означает связь с провайдером, то для внутренних связей используют термин iBGP
Автономную систему хорошо иметь для независимости от ДЦ и в случае нескольких ДЦ. 
Минимальный размер сети, анонсируемой через BGP не регламентируется протоколом, но в реальной жизни - /24. 
Поэтому минимальный размер AS тоже /24. 
Раньше адреса можно было получить непосредственно у RIPE, теперь ищите LIR, у которых еще остались блоки адресов.

RIPE хранит всю информацию о связях AS. 
Её со своей стороны надо всегда держать в актуальном состоянии, потому что есть много транзитных операторов, которые используют эту базу для конфигурации устройств в автоматическом режиме
Типичный сценарий использования: вы анонсируете провайдеру свои сети, провайдер вам в ответ анонсирует 0.0.0.0/0.
При пиринге всегда нужно использовать фильтрацию префиксов, что бы ни вы, ни провайдер не отослали лишнего.

whois - интерфейс командной строки ко всем базам координационных центров. Россия относится к RIPE.

Looking glass - Инструмент ограниченного доступа к роутерам провайдера через web-интерфейс.

vtysh

show running-config - посмотреть текущий файл конфигурации
show ip bgp - посмотреть текущую таблицу маршрутов
show bgp summary -сводная информация для всех экземпляров маршрутизации
show bgp neighbor - отображение информации
!!! обратите особое внимание состояние BGP. 
!!! Любое состояние, отличное от Established, указывает на то, 
!!! что обмен информацией между соседями не налажен

OSPF mesh??

Для создания mesh-сети с OSPF нужно настроить несколько узлов, каждый из которых будет обмениваться маршрутной информацией с другими.
У каждого узла должен быть свой уникальный router-id, но все они должны быть частью одной и той же OSPF-области (например, area 0).



sudo apt update
sudo apt install frr frr-pythontools

vim /etc/frr/daemons
--------------------
ospfd=yes
--------------------


vim  /etc/frr/frr.conf
----------------------
!
! Конфигурация маршрутизатора
!
frr defaults traditional
hostname my-router
log syslog
service integrated-vtysh-config
!
! Включаем OSPF
!
router ospf
 ospf router-id 1.1.1.1        ! Уникальный ID маршрутизатора
 network 10.99.99.0/24 area 0  ! OSPF для сети 10.99.99.0/24 в области 0
 passive-interface default     ! Отключаем отправку Hello-пакетов на всех интерфейсах
 no passive-interface eth0     ! Включаем OSPF на интерфейсе eth0
 no passive-interface eth1     ! Включаем OSPF на интерфейсе eth1
!
! Интерфейсы
!
interface eth0
 ip ospf area 0
!
interface eth1
 ip ospf area 0
!
line vty
----------------------




vtysh
show ip ospf neighbor
show ip route ospf