Заметки к CCNP Route: OSPF часть 5

Заключительная часть битвы с замечательным протоколом OSPF. Нам осталось поговорить про нюансы работы OSPF в NMBA сетях, а так же о замечательной технологии virtual links, как о одном из способов связать не backbone область с area 0 через другую не backbone область (другим способом могут стать gre-туннели, но на экзамене вас про это спрашивать вряд ли станут). Ну и конечно в этот раз будет много, очень много практики.

OSPF в NBMA сетях

Не будем сразу бросаться в омут NBMA с головой и постараемся вспомнить типы сетей, в которых может работать OSPF:

  • Broadcast, multiaccess – например ethernet, token ring. В этом случае выбираются DR/BDR, Hello таймер по умолчанию равен 10 секундам, используется два multicast адерса.
  • Point-to-point – serial links. DR и BDR уже не выбираются, Hello таймер равен все тем же 10 секундам, используется один multicast адрес.
  • NBMA (nonbroadcast multiaccess сети) – например frame relay, atm, mpls. 5 различных режимов работы.

Режимы работы NMBA:

  • broadcast (Cisco mode)
  • non-broadcast (RFC compliant mode)
  • point-to-multipoint (RFC compliant mode)
  • point-to-multipoint non-broadcast (Cisco mode)
  • point-to-point (Cisco mode)

С двумя из них вы уже знакомы – broadcast и point-to-point. Тут встает закономерный вопрос:

Но… но… но… ведь broadcast это режим в котором OSPF работает по умолчанию. При чем тут Cisco Proprietary. Проблема в том, что broadcast в LAN сетях – это действительно режим работы по умолчанию, но с NBMA дела обстоят иначе.

Режим работы Конфигурация соседей Подсеть Выборы DR/BDR Примечания
Non-broadcast вручную одна да* Эмуляция LAN, режим по умолчанию для X.25, FR, ATM
Point-to-multipont автоматически** одна нет Соединение с каждым соседом воспринимается как point-to-point линк. Требует специфической топологии Hub’n’Spoke.
Point-to-  multipoint non-broadcast вручную одна нет Работает как Point-to-multipoint. Для тех случаев, когда нет возможности использовать псевдоброадкаст.
Point-to-point автоматически несколько нет Используются различные сабинтерфейсы.

* – DR и BDR должны иметь полную связность со всем маршрутизаторами. В Hub’n’Spoke топологии DR будет Hub(s), а Spoke – DROTHER. В Full Mesh можно выбирать и DR и BDR так же как и в LAN сетях.

** Требуется включение псевдоброадкаста.

Let’s get our hands dirty :)

Начнем с такой конфигурации и настроим в Area 0 non-broadcast режим работы сети. Настройку этого Frame Relay коммутаторов я показывать не буду, вы можете самостоятельно посмотреть в этой статье.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int s1/0
R1(config-if)#description to FR cloud
R1(config-if)#no ip address
R1(config-if)#encapsulation frame-relay
R1(config-if)#exit
R1(config)#int s1/0.1 multipoint
R1(config-subif)#ip address 192.168.1.1 255.255.255.248
R1(config-subif)#frame-relay map ip 192.168.1.2 201 broadcast
R1(config-subif)#frame-relay map ip 192.168.1.3 301 broadcast
R1(config-subif)#no shut
R1(config)#router ospf 1
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 192.168.1.0 0.0.0.7 a 0
R1(config-router)#neighbor 192.168.1.2
R1(config-router)#neighbor 192.168.1.3
R1(config-router)#^Z
R1#sh ip ospf interface s1/0.1
Serial1/0.1 is down, line protocol is down
  Internet Address 192.168.1.1/29, Area 0
  Process ID 1, Router ID 1.1.1.1, Network Type NON_BROADCAST, Cost: 64
  Transmit Delay is 1 sec, State DOWN, Priority 1
  No designated router on this network
  No backup designated router on this network
  Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
    oob-resync timeout 120

Все, больше ничего настраивать не надо. Как мы помним для FR non-broadcast – это режим работы по умолчанию. В случае с R2 и R3 хотелось бы убедиться, что они никогда не станут DR или BDR, а значит нам надо либо задать либо RID, либо приоритет ниже таковых у R1. Так же обратите внимание на статически сконфигурированных соседей, ведь если не дунуть, то чуда не произойдет.

R2(config)#int s1/2
R3(config-if)#ip address 192.168.1.3 255.255.255.248
R2(config-if)#encapsulation frame-relay
R2(config-if)#no shut
R2(config-if)#frame-relay map ip 192.168.1.1 102 broadcast
R2(config-if)#frame-relay map ip 192.168.1.3 102 broadcast
R2(config-if)#ip ospf priority 0
R2(config-if)#router ospf 1
R2(config-router)#network 192.168.1.0 0.0.0.7 a 0
R2(config-router)#router-id 2.2.2.2
R2(config-router)#neighbor 192.168.1.1

R3(config)#int s1/1
R3(config-if)#ip address 192.168.1.3 255.255.255.248
R3(config-if)#no shut
R3(config-if)#encapsulation frame-relay
R3(config-if)#frame-relay map ip 192.168.1.1 103 broadcast
R3(config-if)#frame-relay map ip 192.168.1.2 103 broadcast
R3(config-if)#ip ospf priority 0
R3(config-if)#router ospf 1
R3(config-router)#network 192.168.1.0 0.0.0.7 a 0
R3(config-router)#router-id 3.3.3.3
R3(config-router)#neighbor 192.168.1.1

R1 сформировал соседство с R2 и R3 и ведет себя как типичный DR:

R1#sh ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           0   FULL/DROTHER    00:01:44    192.168.1.2     Serial1/0.1
3.3.3.3           0   FULL/DROTHER    00:01:32    192.168.1.3     Serial1/0.1

Продолжим развлекаться и добавим Area 51 с R4 таким образом, что R3 становится ABR. Настроим эту сеть как point-to-point.

R3:

R3(config)#int s1/3
R3(config-if)#no ip address
R3(config-if)#encapsulation frame-relay
R3(config-if)#router ospf 1
R3(config-router)#network 192.168.10.0 0.0.0.3 a 51
R3(config-router)#exit
R3(config)#int s1/3.1 point-to-point
R3(config-subif)#ip address 192.168.10.1 255.255.255.252
R3(config-subif)#frame-relay interface-dlci 401
R3(config-subif)#do sh ip ospf int s1/3.1
Serial1/3.1 is down, line protocol is down
  Internet Address 192.168.10.1/30, Area 51
  Process ID 1, Router ID 3.3.3.3, Network Type POINT_TO_POINT, Cost: 64
  Transmit Delay is 1 sec, State DOWN
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40

Альтернативно можно задать point-to-point mode на интерфейсе командой ip ospf network point-to-point.

R4:

R4#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R4(config)#int s1/0
R4(config-if)#encapsulation frame-relay
R4(config-if)#no ip address
R4(config)#int s1/0.1 point-to-point
R4(config-subif)#ip address 192.168.10.2 255.255.255.252
R4(config-subif)#frame-relay interface-dlci 104
R4(config-subif)#exit
R4(config)#router ospf 1
R4(config-router)#router-id 4.4.4.4
R4(config-router)#network 192.168.10.0 0.0.0.3 a 51
R4(config-router)#^Z
R4#sh ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
3.3.3.3           0   FULL/  -        00:00:32    192.168.10.1    Serial1/0.1

Идем дальше. Добавим еще одну область area 740 с R21 и R22 таким образом, чтобы R2 стал ABR.

R2:

R2#conf t
R2(config)#interface Serial1/0
R2(config-if)#description to FR cloud
R2(config-if)#no ip address
R2(config-if)#encapsulation frame-relay
R2(config-if)#serial restart-delay 0
R2(config-if)#no shut
R2(config-if)#interface Serial1/0.1 multipoint
R2(config-subif)#ip address 192.168.1.3 255.255.255.248
R2(config-subif)#frame-relay map ip 192.168.100.1 501 broadcast
R2(config-subif)#frame-relay map ip 192.168.100.2 502 broadcast
R2(config-subif)#no shut
R2(config-subif)#ip ospf network point-to-multipoint
R2(config-subif)#router ospf 1
R2(config-router)#network 192.168.100.0 0.0.0.7 area 740

R2#sh ip ospf int s1/0.1
Serial1/0.1 is down, line protocol is down
  Internet Address 192.168.1.3/29, Area 0
  Process ID 1, Router ID 2.2.2.2, Network Type POINT_TO_MULTIPOINT, Cost: 64
  Transmit Delay is 1 sec, State DOWN
  Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
    oob-resync timeout 120

Далее мы можем настроить R21 и R22 как point-to-point или задать определенный network type.

R21:

R21(config)#interface Serial1/1
R21(config-if)#ip address 192.168.100.1 255.255.255.248
R21(config-if)#encapsulation frame-relay
R21(config-if)#ip ospf network point-to-multipoint
R21(config-if)#frame-relay map ip 192.168.100.3 105 broadcast
R21(config-if)#frame-relay map ip 192.168.100.2 105 broadcast
R21(config)#router ospf 1
R21(config-router)#router-id 1.1.2.1
R21(config-router)#network 192.168.100.0 0.0.0.7 a 740

R21#sh ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           0   FULL/  -        00:01:48    192.168.100.3   Serial1/1
R21#sh ip ospf interface s1/1
  Process ID 1, Router ID 1.1.2.1, Network Type POINT_TO_MULTIPOINT, Cost: 64
  Transmit Delay is 1 sec, State POINT_TO_MULTIPOINT

R22:

R22(config)#interface Serial1/2
R22(config-if)#no shut
R22(config-if)#encapsulation frame-relay
R22(config-if)#int s1/2.1 point-to-point
R22(config-subif)#no shut
R22(config-subif)#ip address 192.168.100.2 255.255.255.248
R22(config-subif)#frame-relay interface-dlci 205
R22(config-subif)#ip ospf hello-interval 30
R22(config-fr-dlci)#router ospf 1
R22(config-router)#network 192.168.100.0 0.0.0.7 a 740
R22(config-router)#^Z

R22#sh ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           0   FULL/  -        00:01:40    192.168.100.3   Serial1/2.1
R22#sh ip route ospf
     192.168.10.0/30 is subnetted, 1 subnets
O IA    192.168.10.0 [110/192] via 192.168.100.3, 00:00:56, Serial1/2.1
     192.168.1.0/29 is subnetted, 1 subnets
O IA    192.168.1.0 [110/128] via 192.168.100.3, 00:00:56, Serial1/2.1
     192.168.100.0/24 is variably subnetted, 3 subnets, 2 masks
O       192.168.100.1/32 [110/128] via 192.168.100.3, 00:00:56, Serial1/2.1
O       192.168.100.3/32 [110/64] via 192.168.100.3, 00:00:56, Serial1/2.1
R22#ping 192.168.10.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 100/104/112 ms

Обратите внимание на изменение hello таймера. По умолчанию на point-to-point линках он равен 10 секундам, а на point-to-multipoint – 30. Если значение не изменить, то соседство не сформируется. В итоге мы получили автономную систему, в которой все знают про всех.

В очередной раз добавим автономную систему area 1, таким образом, чтобы R22 стал ABR. Тут внимательный читатель решит, что самое время для мишки

и будет абсолютно прав. Ведь несколько раз речь шла о том, что любая non-backbone область должна быть присоединена к area 0. No shit, должна. Этим и займемся, расчехлив технологию virtual link.

OSPF Virtual Links

Чтобы не нарушать правила дизайна OSPF о том, что все области должны иметь связность с backbone областью существует технология виртуальных каналов (virtual links).

Что нам нужно сделать это настроить сквозное подключение в 740 области между R2 (RID 2.2.2.2) и R22 (RID 1.1.2.2). В случае если между маршрутизаторами R2 и R22 существовало бы еще 10-20-300 других маршрутизаторов настройка была бы точно такой же.

R2(config)#router ospf 1
R2(config-router)#area 740 virtual-link 1.1.2.2

R22(config)#router ospf 1
R22(config-router)#area 740 virtual-link 2.2.2.2

Все. Этого достаточно для поднятия туннельного интерфейса OSPF_VL0 в нашем случае и получении на R8 все маршрутов автономной системы.

OSPF virtual link authentication

Just for kicks можем настроить аутентификацию на виртуальном канале:

тип номер синтаксис
none 0 area #_num virtual-link router-id authentication null
clear text 1 area #_num virtual-link router-id authentication authentication-key KEY
md5 2 area #_num virtual-link router-id authentication message-digest
message-diget-key #_num md5 KEY

а можем и не настроить. Вот, в принципе, и все. До сих пор не могу поверить что c OSPF покончено и можно переходить к более интересным темам :)

  • Stas

    :) Интересный бложик

  • Макс

    Все легко, но не всё просто. Респект!

  • User

    Хорошие статьи. Спасибо.

    Заметил одну тонкость:
    “Так же обратите внимание на статически сконфигурированных соседей, ведь если не дунуть, то чуда не произойдет”

    По факту:
    Можно не настраивать соседа на DROther, достаточно сделать это на DR.

    DROther:
    router ospf 20
    router-id 10.1.1.8
    log-adjacency-changes
    network 10.1.1.8 0.0.0.0 area 0
    network 192.168.3.0 0.0.0.15 area 0

    #sh ip ospf neighbor
    Neighbor ID Pri State Dead Time Address Interface
    10.1.1.7 10 FULL/DR 00:01:34 192.168.3.1 Serial0/2

    DR:
    router ospf 20
    router-id 10.1.1.7
    log-adjacency-changes
    network 10.1.1.7 0.0.0.0 area 0
    network 192.168.3.0 0.0.0.15 area 0
    neighbor 192.168.3.2
    neighbor 192.168.3.3

    #sh ip ospf neighbor
    Neighbor ID Pri State Dead Time Address Interface
    10.1.1.8 0 FULL/DROTHER 00:01:57 192.168.3.2 Serial0/0
    10.1.1.9 0 FULL/DROTHER 00:01:36 192.168.3.3 Serial0/0