16. OSPFv3
Особенности OSPFv3
Стандартный открытый протокол
RFC 2740, RFC 5340 и разные дополнения
Использует тот же алгоритм для работы с топологией, что и OSPFv2
Топологическая и адресная информация разнесены в разные LSA
Использует IPv6 для обмена сообщениями
Работает с link-local адресами
All SPF Routers - FF02::5
All DR Routers - FF02::6
Cоздавался для синхронизации маршрутов IPv6, позже адаптирован для маршрутов IPv4
Для аутентификации используется встроенный в IPv6 протокол AH
Использует те же типы пакетов: Hello, DBD, LSR, LSU, LSAck
Формат пакета
Version = 3
Type
1 - Hello
2 - DBD
3 - LS Request
4 - LS Update
5 - LS Acknowledgment
Router ID - уникальный в AS ID (32 бита)
Checksum - Internet Checksum
Нет полей для аутентификации
Reserved = 0
Hello
Изменения по сравнению с OSPFv2:
добавлен Interface ID (топологическая информация)
Убрана адресная информация (маска сети и IP-адрес из заголовка IP-пакета)
Поле Options увеличено до 24 бит
Поле Dead Interval уменьшено до 16 бит
DBD
Изменения по сравнению с OSPFv2
Поле Options увеличено до 24 бит
Заголовок LSA
Изменения по сравнению с OSPFv2
Убрано поле Options (переехало в LSA)
поле LSA Type увеличено до 16 бит
Типы LSA в OSPFv3
Базовые типы LSA OSPFv3
2001 - Router LSA
2002 - Network LSA
2003 - Inter-Area-Prefix LSA
2004 - Inter-Area-Router LSA
4005 - AS-External LSA
2006 - Deprecated
2007 - NSSA LSA
0008 - Link LSA
2009 - Intra-Area-Prefix LSA
Бит U указывает, что делать с LSA неизвестного типа
0 - трактовать LSA как Link-local
1 - распространять по S-битам
Биты S12 указывают LSA Scope
00 - Link Local Scoping
01 - Area Scoping
10 - AS Scoping
11 - зарезервировано
Изменения в логике LSA1/2
В LSA1/2 осталась только топологическая информация
Информация о пользовательских сетях уехала в Intra-Area-Prefix LSA9
Информация об адресах next hop уехала в link-local link LSA8
В LSA2 остался только список подключенных Router ID
Появились Interface ID в LSA1, LSA8 и LSA9
Формат Router LSA
Флаги
Nt - NSSATranslatorRole
V - роутер строит Virtual Link
E - роутер является ASBR
B - роутер является ABR
Link Type
1 - соседство с P2P-соседом (LSA1)
2 - соседство в MA-канале (LSA2)
3 - зарезервировано
4 - OSPF Virtual Link
Network LSA
Исчезло поле Network Mask
Появилось поле Options
Изменения в адресных LSA
Адресная информация из LSA1 переехала в LSA8 и LSA9
LSA переименованы:
LSA3 - Inter-Area Prefix LSA
LSA4 - Inter-Area Router LSA
LSA8 - Link LSA
LSA9 - Intra-Area Prefix LSA
Формат inter-Area-Prefix LSA9
OSPF Instances
Механизм изначально создавался для разделения топологий
Instance ID передается в заголовке OSPFv3
RFC 5838 предложил расширение для адресных семейств
Instance ID
Address Family
0-31
IPv6 Unicast
32-63
IPv6 Multicast
64-95
IPv4 Unicast
96-127
IPv4 Multicast
128-191
Unassigned
192-255
Reserved
Аутентифкация в OSPFv3
Штатный механизм аутентификации использует IPSec
можно задействовать также шифрование
OSPFv3 не задействует IKE/ISAKMP и требует ручное задание параметров SA
OSPFv3 Authentication Trailer
Дополнительный механизм, RFC 7166
Работает аналогично OSPFv2, передает в пакете номер ключа и подпись
Включение OSPFv3
На интерфейсе включается только в явном виде
Если на устройстве нет ни одного IPv4-адреса, маршрутизатор не сможет автоматически выбрать Router ID
Лучше всего задавать его вручную
Router(config)#ipv6 router ospf 1
Router(config-rtr)#router-id 0.0.0.1
Router(config)#interface gi0/0
Router(config-if)#ipv6 enable
Router(config-if)#ipv6 ospf 1 area 0
Источники маршрутной информации
Диагностика подсистемы маршрутизации и процесса OSPF
Выявляет проблемы с Router ID, пассивными интерфейсами или неправильным планированием регионов
Router#show ipv6 protocols
Router#show ipv6 ospf
Базовая диагностика OSPF
Проверка интерфейсов
Router#show ipv6 ospf itnerface brief
Проверка соседств
Router#show ipv6 ospf neighbor
Проверка таблицы маршрутизации
Router#show ipv6 route ospf
Отображение детальной информации об интерфейсе OSPF
Router#show ipv6 ospf interface g0/0
Отображение детальной информации о соседе OSPF
Router#show ipv6 ospf neighbor gi0/0 2.2.2.2
Стоимость интерфейсов
Можно задать стоимость интерфейса в явном виде
Либо изменить референсную полосу для автоматического подсчета стоимости для всех интерфейсов, где она не задана явно
Router(config)#ipv6 router ospf 1
Router(config-rtr)#auto-cost reference-bandwidth ?
<1-4294967> The reference bandwidth in terms of Mbits per second
Router(config)#interface gi0/0
Router(config-if)#ipv6 ospf cost ?
<1-65535> Route cost of this interface
dynamic Specify dynamic cost options
Passive Interface
OSPF анонсирует connected-сети со включенных в OSPF интерфейсов
Приходится включать на клиентских интерфейсах, где Hello нежелательны
Выход - пассивное участие OSPF на интерфейсе
Сети с интерфейса по-прежнему анонсируются
Hello-пакеты не отсылаются и не принимаются
Router(config)#ipv6 router ospf 1
Router(config-rtr)#passive-interface fa0/0
Router(config)#ipv6 ospf 1
Router(config-rtr)#pasive-interface default
Router(config-rtr)#no passive-interface gi0/0
Конфигурация интерфейса
Настройка абсолютно аналогична OSPFv2
Router(config-if)#ipv6 ospf priority ?
<0-255> Priority
Router(config-if)#ipv6 ospf hello-interval ?
<1-65535> Seconds
Router(config-if)#ipv6 ospf dead-interval ?
<1-65535> Seconds
Router(config-if)#ipv6 ospf network ?
broadcast Specify OSPF broadcast multi-access network
non-broadcast Specify OSPF NBMA network
point-to-multipoint Specify OSPF point-to-multipoint network
point-to-point Specify OSPF point-to-point network
IOS не поддерживает субсекундные таймеры для OSPFv3
Статическое указание соседей
Команда neighbor <ipv6> добавляет статического соседа в таблицу
Требует тип среды nonbroadcast или point-to-multipoint nonbroadcast
Достаточно указать с одной стороны
Настраивается на интерфейсе, а не в контексте роутера
Требуется link-local адрес
Router(config)#interface gi0/0
Router(config-if)#ipv6 ospf network nonbroadcast
Router(config-if)#ipv6 ospf neighbor fe80::2
Диагностика LSDB
Просмотр таблицы LSDB
Router#show ipv6 ospf database
Просмотр Router LSA
Router#show ipv6 ospf database router adv-router 0.0.0.1
Просмотр Network LSA
Router#show ipv6 ospf database network adv-router 0.0.0.1
Просмотр отдельной Link LSA
Router#show ipv6 ospf database link interface gi0/0 adv-router0.0.0.1
Просмотр отдельной Intra Area Prefix LSA
Router#show ipv6 ospf databse prefix adv-router 0.0.0.1
Просмотр отдельной Inter Area Prefix LSA
Router#show ipv6 ospf databse inter-area prefix fd02::/64
Просмотр отдельной External LSA в таблице LSDB
Router#show ip ospf databse external fdff::/64
Просмотр LSA7
Router#show ipv6 ospf database nssa-external
Просмотр отдельной Inter-Area Router LSA
Router#show ipv6 ospf databse inter-area router 0.0.0.1
Дебаггинг
Hello Protocol
Router#debug ipv6 ospf hello
Обмен пакетами
Router#debug ip ospf packet
Построение LSDB и пересчет SPF
Router#debug ipv6 ospf spf ?
external SPF for external routes
inter SPF for inter-area routes
intra SPF for intra-area routes
statistic SPF statistics
Stub-регионы и маршрут по умолчанию
Настройки регионов идентична OSPFv2
Router(config)#ipv6 router ospf 1
Router(config-rtr)#area 2 stub
Router(config-rtr)#area 3 stub no-summary
Router(config-rtr)#area 4 nssa
Router(config-rtr)#area 5 nssa no-summary default-information-originate metric 15 metric-type 1
Router(config-rtr)#area 5 nssa translate type7 always suppress-fa
Импорт маршрута по умолчанию
Router(config)#ipv6 router ospf 1
Router(config-rtr)#default-information originate always metric 25 metric-type 1
Редистрибуция
Процесс импорта внешних маршрутов из RIB в LSDB
Connected
Static
Динамические
Глобальная таблица или VRF
Ключ include-connected импортирует из другого пртокола "свои" маршруты
По умолчанию LSA получают метрику 20, типа 2
Можно указать тип, значение метрики или метку явно или через route-map
Router(config)#ipv6 router ospf 1
Router(config-rtr)#redistribute connected
Router(config-rtr)#redistribute static metric 10 metric-type 1 tag 123
Router(config-rtr)#redistribute eigrp 1 include-connected route-map EIGRP_TO_OSPF
Router(config-rtr)#default-metric 25
Route-map при редистрибуции в OSPF
C помощью Route-Map можно отобрать префиксы для редистрибуции или назначить специальные метрики
Router(config)#ipv6 rotue fd11::/64 fe80::2 gi0/0 tag 1
Router(config)#ipv6 rotue fd12::/64 fe80::2 gi0/0 tag 2
Router(config)#route-map STATIC_TO_OSPF permit 10
Router(config-route-map)#match tag 1
Router(config-route-map)#set metric 10
Router(config-route-map)#set metric-type type-1
Router(config)#ipv6 router ospf 1
Router(config-rtr)#redistribute static route-map STATIC_TO_OSPF
Distribute-list в OSPFv3
Отличия от OSPFv2
Работает только с prefix-list (ACL или route-map не поддерживаются)
Нельзя контролировать адрес gateway
Router(config)#ipv6 prefix-list OSPF_TO_RIB permit ::/0 ge 128
Router(config)#ipv6 prefix-list BGP_TO_OSPF permit 2001:db8::/32 ge 64 le 64
Router(config)#ipv6 router ospf 1
Router(config-rtr)#distribute-list prefix-list OSPF_TO_RIB in gi0/0
Router(config-rtr)#distribute-list prefix-list BGP_TO_OSPF out bgp 65001
Агрегация маршрутов OSPFv3
агрегация inter-area маршрутов на ABR (метрика максимальная):
Router(config)#ipv6 router ospf 1
Router(config-rtr)#area 0 range fd00::/16
агрегация external маршрутов на ASBR
Router(config)#ipv6 router ospf 1
Router(config-rtr)#summary-prefix fd00::/16
Virtual Link
Используются для связи ABR через non-backbone (и non-stub) регион
Через псевдотуннельный интерфейс синхронизируется LSDB area 0
Команда area <#> virtual-link <RID> указывает другой конец туннеля
Номер региона, к которому принадлежат оба ABR
Router ID другого ABR, доступный в указанном регионе
Router1(config)#ipv6 router ospf 1
Router1(config-router)#area 1 virtual-link 2.2.2.2
Router2(config)#ipv6 router ospf 1
Router2(config-router)#area 1 virtual-link 1.1.1.1
Манипуляции с AD
Административное расстояние задается на все маршруты протокола
Значения по умолчанию такие же, как в OSPFv2: 110/110/170
distance <#> задает все три значения
distance ospf позволяет задать отдельные значения
Отдельным маршрутам AD переопределить нельзя
Router(config-rtr)#distance ospf intra-area 120 inter-area 125 external 160
OSPF Authentication Trailer
Исходящие пакеты подписываются хэшем от содержимого и ключа
Требуется создание ключевого компонента
Router(config)#key chain OSPF_KEYCHAIN
Router(config-keychain)#key 1
Router(config-keychain-key)#cryptographic-algorithm ?
Router(config-keychain-key)#key-string SECRETKEY
Router(config-keychain-key)#interface gi0/0
Router(config-if)#ospfv3 authentication key-chain OSPF_KEYCHAIN
Механизм поддерживается с IOS 15.4(2)T
Синтаксис от OSPFv3 AF-mode, но работает и с Classic Mode
OSPFv3 Classic и IPSec
Исходящие пакеты подписываются IPSec
Параметры настройки должны совпадать:
Номер SPI (Security Parameter Index)
Алгоритм подписи (MD5 или SHA-1)
Общий ключ размера, равного хэшу (16 байт для MD5, 20 байт для SHA-1)
Задание на уровне интерфейса:
Router(config-if)#ipv6 ospf authentication ipsec spi 500 md5 123456789adcdef1234567890abcdef
Router(config-if)#ipv6 ospf authentication ipsec spi 500 sha1 123456789adcdef1234567890abcdef
Router(config-if)#ipv6 ospf authentication ipsec spi 500 esp aes-cbc 128 123456789adcdef1234567890abcdef sha1
654684646464646464654654654354
Задание на уровне региона:
Router(config-rtr)#area 1 authentication ipsec spi 500 md5 123456789adcdef1234567890abcdef
Router(config-rtr)#area 1 authentication ipsec spi 500 esp 3des 123456789adcdef1234567890abcdef md5
654684646464646464654654654354
sha1
Last updated