Graceful Restart
Возможность поддерживать способность маршрутизатора к пересылке данных во время перезапуска его управляющего программного обеспечения называется "плавный перезапуск" (graceful restart) или "непрерывная пересылка" (non-stop forwarding). После перезапуска и перезагрузки маршрутизатор должен изменить обработку OSPF до тех пор, пока не восстановит полные смежности со всеми своими предыдущими полностью смежными соседями. Период времени между перезапуском/перезагрузкой и восстановлением смежностей называется "периодом грации" (grace period).
Основная процедура OSPF для плавного перезапуска выглядит следующим образом:
Маршрутизатор, пытающийся выполнить плавный перезапуск, генерирует локальные Opaque-LSAs, называемые Grace-LSAs, объявляя о своем намерении выполнить плавный перезапуск в течение определенного времени (период грации).
В течение периода грации соседи продолжают объявлять перезапускающийся маршрутизатор в своих LSAs, как если бы он был полностью смежным (состояние соседа OSPF — Full), но только если топология сети остается статичной (содержимое LSAs в базе данных состояния канала с типами LS 1-5 и 7 остается неизменным, и периодические обновления разрешены).
Топология
Рисунок 5-79: OSPFv3 Graceful Restart
Настройка SW1 для Graceful Restart
#configure terminal | Перейти в режим конфигурации. |
(config)#interface eth1 | Перейти в режим интерфейса. |
(config-if)#ipv6 address 5ffe::112/64 | Назначить IPv6-адрес интерфейсу. |
(config-if)#ipv6 router ospf area 0 tag 1 | Настроить интерфейс для OSPFv3 в area 0. |
(config-if)#exit | Выйти из режима интерфейса. |
(config)#router ipv6 ospf 1 | Создать instance маршрутизации OSPFv3. |
(config-router)#router-id 1.1.1.1 | Указать идентификатор маршрутизатора (1.1.1.1 ) для процесса маршрутизации OSPFv3. |
(config-router)#capability restart graceful | Включить возможность плавного перезапуска. |
(config-router)#end | Выйти из режима конфигурации и перейти в привилегированный режим. |
#write | Сохранить конфигурацию. |
#restart ipv6 ospf graceful grace-period 200 | Перезапустить OSPFv3 с периодом грации 200 секунд, чтобы сосед поддерживал смежность и сохранял маршруты в течение 200 секунд. |
Настройка SW2 в качестве помощника для перезапуска
#configure terminal | Перейти в режим конфигурации. |
(config)#interface eth1 | Перейти в режим интерфейса. |
(config-if)#ipv6 address 5ffe::113/64 | Назначить IPv6-адрес интерфейсу. |
(config-if)#ipv6 router ospf area 0 tag 1 | Настроить интерфейс для OSPFv3 в area 0. |
(config-if)#exit | Выйти из режима интерфейса. |
(config)#router ipv6 ospf 1 | Создать instance маршрутизации OSPFv3. |
(config-router)#router-id 2.2.2.2 | Указать идентификатор маршрутизатора (2.2.2.2 ) для процесса маршрутизации OSPFv3. |
(config-router)#exit | Выйти из режима маршрутизатора и перейти в режим кон фигурации. |
(config)#ipv6 ospf restart helper max-graceperiod 300 | Настроить SW2 как помощника, если период грации меньше 300 секунд. |
Удаление конфигурации помощника с SW2
#configure terminal | Перейти в режим конфигурации. |
(config)#router ipv6 ospf 1 | Создать instance маршрутизации OSPFv3. |
(config-router)#router-id 1.1.1.1 | Указать идентификатор маршрутизатора (1.1.1.1 ) для процесса маршрутизации OSPFv3. |
(config-router)#exit | Выйти из режима маршрутизатора и перейти в режим конфигурации. |
(config)#ipv6 ospf restart helper never | Настроить SW2 так, чтобы он не работал в качестве помощника. |
Настройка SW2 как помощника при причине перезапуска "Reload"
#configure terminal | Перейти в режим конфигурации. |
(config)#router ipv6 ospf 1 | Создать instance маршрутизации OSPFv3. |
(config-router)#router-id 1.1.1.1 | Указать идентификатор маршрутизатора (1.1.1.1 ) для процесса маршрутизации OSPFv3. |
(config-router)#exit | Выйти из режима маршрутизатора и перейти в режим конфигурации. |
(config)#ipv6 ospf restart helper only-reload | Настроить SW2 как помощника только при причине перезапуска "Reload". |
Настройка SW2 как помощника при причине перезапуска "Upgrade"
#configure terminal | Перейти в режим конфигурации. |
(config)#router ipv6 ospf 1 | Создать instance маршрутизации OSPFv3. |
(config-router)#router-id 1.1.1.1 | Указать идентификатор маршрутизатора (1.1.1.1 ) для процесса маршрутизации OSPFv3. |
(config-router)#exit | Выйти из режима маршрутизатора и перейти в режим конфигурации. |
(config)#ipv6 ospf restart helper onlyupgrade | Настроить SW2 как помощника только при причине перезапуска "Upgrade". |
Проверка
SW1 после настройки Graceful Restart
SW1#show ipv6 ospf neighbor
OSPFv3 Process (1)
Neighbor ID Pri State Dead Time Interface Instance ID
2.2.2.2 1 Full/DR 00:00:39 eth1 0
SW1#show ipv6 ospf route
OSPFv3 Process (1)
Codes: C - connected, D - Discard, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
Destination Metric Next-hop
C 5ffe::/64 1 directly connected, eth1, Area 0.0.0.0
rtr1#show ipv6 route IPv6 Routing Table
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type 2, I - IS-IS, B - BGP
Timers: Uptime
IP Route Table for VRF "default"
C ::1/128 via ::, lo, 02:02:28
C 5ffe::/64 via ::, eth1, 00:23:16
C fe80::/64 via ::, eth1, 01:25:04 K ff00::/8 [0/256] via ::, eth0, 01:25:05
rtr1#show ipv6 ospf database grace
OSPFv3 Router with ID (1.1.1.1) (Process 1)
SW1 после Graceful Restart (после ручного запуска демона ospf6d)
SW1#show ipv6 ospf neighbor
OSPFv3 Process (1)
Neighbor ID Pri State Dead Time Interface Instance ID
2.2.2.2 1 Full/DR 00:00:37 eth1 0
rtr1#show ipv6 ospf route
OSPFv3 Process (1)
Codes: C - connected, D - Discard, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
Destination Metric Next-hop
C 5ffe::/64 1 directly connected, eth1, Area 0.0.0.0
rtr1#show ipv6 route IPv6 Routing Table
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type 2, I - IS-IS, B - BGP Timers: Uptime
IP Route Table for VRF "default"
C ::1/128 via ::, lo, 02:02:28
C 5ffe::/64 via ::, eth1, 00:23:16
C fe80::/64 via ::, eth1, 01:25:04 K ff00::/8 [0/256] via ::, eth1, 01:25:05
rtr1#show ipv6 ospf database grace
OSPFv3 Router with ID (1.1.1.1) (Process 1)
SW2 до Graceful Restart
SW2#show ipv6 ospf neighbor
OSPFv3 Process (1)
Neighbor ID Pri State Dead Time Interface Instance ID
1.1.1.1 1 Full/Backup 00:00:40 eth1 0
SW2#sh ipv6 ospf neighbor
OSPFv3 Process (1)
Neighbor ID Pri State Dead Time Interface Instance ID
1.1.1.1 1 Full/Backup 00:00:40 eth1 0
SW2#
SW2#show ipv6 ospf route
OSPFv3 Process (1)
Codes: C - connected, D - Discard, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
Destination Metric Next-hop
C 5ffe::/64 1 directly connected, eth1, Area 0.0.0.0
SW2#show ipv6 route
IPv6 Routing Table
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type 2, I - IS-IS, B - BGP Timers: Uptime
IP Route Table for VRF "default"
C ::1/128 via ::, lo, 01:54:20
C 5ffe::/64 via ::, eth1, 00:12:16
C fe80::/64 via ::, eth2, 01:17:21
K ff00::/8 [0/256] via ::, eth1, 01:19:12
SW2#show ipv6 ospf database grace
OSPFv3 Router with ID (2.2.2.2) (Process 1)
SW2 во время Graceful Restart
SW2#show ipv6 ospf neighbor
OSPFv3 Process (1)
Neighbor ID Pri State Dead Time Interface Instance ID
1.1.1.1 1 Full/Backup 00:02:25* eth1 0
SW2#show ipv6 ospf route
OSPFv3 Process (1)
Codes: C - connected, D - Discard, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
Destination Metric Next-hop
C 5ffe::/64 1 directly connected, eth1, Area 0.0.0.0
SW2#show ipv6 route
IPv6 Routing Table
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type 2, I - IS-IS, B - BGP Timers: Uptime
IP Route Table for VRF "default"
C ::1/128 via ::, lo, 01:57:26
C 5ffe::/64 via ::, eth1, 00:15:22
C fe80::/64 via ::, eth2, 01:20:27
K ff00::/8 [0/256] via ::, eth1, 01:22:18
SW2#show ipv6 ospf database grace
OSPFv3 Router with ID (2.2.2.2) (Process 1)
Grace-LSA (Interface eth1)
LS age: 65
LS Type: Grace LSA
Link State ID: 0.0.0.3
Advertising Router: 1.1.1.1
LS Seq Number: 0x80000001
Checksum: 0x1660 Length: 36
Grace Period: 200
Restart Reason:
Software Restart
**SW2 после Graceful Restart**
SW2#show ipv6 ospf neighbor
OSPFv3 Process (1)
Neighbor ID Pri State Dead Time Interface Instance ID
1.1.1.1 1 Full/Backup 00:00:34 eth1 0
SW2#show ipv6 ospf route
OSPFv3 Process (1)
Codes: C - connected, D - Discard, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
Destination Metric
Next-hop
C 5ffe::/64 1 directly connected, eth1, Area 0.0.0.0
SW2#show ipv6 route
IPv6 Routing Table
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type 2, I - IS-IS, B - BGP Timers: Uptime
IP Route Table for VRF "default"
C ::1/128 via ::, lo, 02:07:14
C 5ffe::/64 via ::, eth1, 00:25:10
C fe80::/64 via ::, eth2, 01:30:15
K ff00::/8 [0/256] via ::, eth2, 01:30:17
SW2#show ipv6 ospf database grace
OSPFv3 Router with ID (2.2.2.2) (Process 1)