서로 다른 OSPF Network Type 간에 Neighbor 관계를 수립할 때 유의하여야 할 내용이 어떤 것들이 있는지 알아보기로 하자. 먼저 Neighbor를 자동으로 선출하는 Network type과 Neighbor를 수동으로 선출하는 Network type 간에 Neighbor 관계를 수립하는 경우이다.

Case 1. Broadcast network type ↔ Non-broadcast network type

Device Configuration
R1
interface lo0
  ip address 1.1.1.1 255.255.255.255
interface fa0/0
  ip address 10.10.10.1 255.255.255.0
  no shutdown

router ospf 1
  network 0.0.0.0 255.255.255.255 area 0
R2
interface lo0
  ip address 2.2.2.2 255.255.255.255
interface fa0/0
  ip address 10.10.10.2 255.255.255.0
  ip ospf network non-broadcast
  no shutdown

router ospf 1
  network 0.0.0.0 255.255.255.255 area 0
R3
interface lo0
  ip address 3.3.3.3 255.255.255.255
interface fa0/0
  ip address 10.10.10.3 255.255.255.0
  ip ospf network non-broadcast
  no shutdown

router ospf 1
  network 0.0.0.0 255.255.255.255 area 0

  각 장비에서 OSPF Neighbor 상태를 확인해 보면 다음과 같다.

R1# show ip ospf neighbor 

R2# show ip ospf neighbor 

R3# show ip ospf neighbor 

 R2와 R3는 Non-broadcast network type인데 Neighbor를 수동으로 지정하지 않았으니, Hello Packet을 전달하지 않으니 당연히 다른 Router에 Neighbor로 등록되지 않을 것이다. 그러나, R1은 ‘224.0.0.5’ multicast로 Hello Packet을 전달하기 때문에 R2와 R3의 Neighbor table에 표시가 되어야 할 것이다.

  그런데, R2와 R3에 R1이 없는 것을 확인할 수 있다. 이는 Broadcast network type과 Non-broadcast network type 간에 Hello interval과 Dead interval이 서로 다르기 떄문이다. 그럼, R2에서 Broadcast network type과 동일한 interval로 설정을 변경해 보자.

R2(config)# interface fa0/0
R2(config-if)# ip ospf hello-interval 10

  Hello interval을 변경하면 Dead interval은 자동으로 변경되니 별도로 Dead interval을 변경할 필요는 없다. 그럼 다시 OSPF Neighbor 상태를 확인해 보기로 하자.

R1# show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           1   FULL/DR         00:00:39    10.10.10.2      FastEthernet0/0


R1# show ip route ospf
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/11] via 10.10.10.2, 00:04:17, FastEthernet0/0
R2# show ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           1   FULL/BDR        00:00:34    10.10.10.1      FastEthernet0/0


R2# show ip route ospf
     1.0.0.0/32 is subnetted, 1 subnets
O       1.1.1.1 [110/11] via 10.10.10.1, 00:04:27, FastEthernet0/0
R3# show ip ospf neighbor 

  R1과 R2가 Neighbor 관계가 수립되어 Network 정보까지 정상적으로 Update가 되는 것을 확인할 수 있다. R2에 ‘neighbor’ 명령어를 설정하지 않았는데 어떻게 R1과 Neighbor 관계가 수립될 수 있는가? OSPF는 Non-broadcast로 설정된 interface를 통해 Neighbor 정보를 확인하게 되면 Unicast를 사용하여 Hello Packet이나 Update Packet을 보내도록 되어 있다.

  그래서, R1이 보낸 Hello Packet을 R2가 받아서 Neighbor로 등록되면 R2는 Unicast를 사용하여 R1에게 Hello Packet과 Update Packet을 전달함으로서, Neighbor 관계를 수립하고 Database를 동기화하게 되는 것이다. 즉, R1은 Multicast를 사용하고 R2는 Unicast를 사용하게 되는 것이다.

  이번에는 R3에서도 Hello interval을 맞추어 보자.

R3(config)# interface fa0/0
R3(config-if)# ip ospf hello-interval 10

  그럼 다시 OSPF Neighbor 상태를 확인해 보기로 하자.

R1# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           1   FULL/DROTHER    00:00:34    10.10.10.2      FastEthernet0/0
3.3.3.3           1   FULL/DR         00:00:36    10.10.10.3      FastEthernet0/0

R1# show ip route ospf
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/11] via 10.10.10.2, 00:02:09, FastEthernet0/0
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/11] via 10.10.10.3, 00:02:09, FastEthernet0/0
R2# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           1   FULL/BDR        00:00:38    10.10.10.1      FastEthernet0/0

R2# show ip route ospf
     1.0.0.0/32 is subnetted, 1 subnets
O       1.1.1.1 [110/11] via 10.10.10.1, 00:15:24, FastEthernet0/0
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/21] via 10.10.10.1, 00:01:15, FastEthernet0/0
R3# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           1   FULL/BDR        00:00:36    10.10.10.1      FastEthernet0/0

R3# show ip route ospf
     1.0.0.0/32 is subnetted, 1 subnets
O       1.1.1.1 [110/11] via 10.10.10.1, 00:00:35, FastEthernet0/0
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/21] via 10.10.10.1, 00:00:35, FastEthernet0/0

  R2와 R3가 모두 R1과 Neighbor 관계를 수립하고 R1을 통해 상호간에 Network 정보를 정상적으로 받아 오는 것을 확인할 수 있다. 그런데, R2와 R3에서 상대방의 Network 정보를 보면 next-hop이 R1으로 되어 있는 것을 확인할 수 있다.

  그럼 R2와 R3간에 통신이 되는지 확인해 보고 ‘traceroute’를 통하여 경로를 확인해 보자.

R2# ping 3.3.3.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 8/21/32 ms

R2# traceroute 3.3.3.3
Type escape sequence to abort.
Tracing the route to 3.3.3.3
  1 10.10.10.1 8 msec 36 msec 20 msec
  2 10.10.10.3 32 msec 52 msec * 
R2# ping 2.2.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 20/29/36 ms

R3# traceroute 2.2.2.2
Type escape sequence to abort.
Tracing the route to 2.2.2.2
  1 10.10.10.1 44 msec 32 msec 24 msec
  2 10.10.10.2 28 msec 28 msec * 

  통신은 되는데 R1을 거쳐서 Traffic이 전달되는 것을 확인할 수 있다. 그럼, R1을 거치지 않고 바로 통신되게 할 수는 없을까? Multi-access 망에서 Neighbor에게 받은 정보를 그대로 다른 장비에게 전달해 주는 장비가 있었다. 바로 DR이다. R1을 DR로 만든 후에 다시한번 경로를 확인해 보기로 하자.

R1(config)# interface fa0/0
R3(config-if)# ip ospf priority 100

R2# clear ip ospf pro
R2# clear ip ospf process 
Reset ALL OSPF processes? [no]: y

R3# clear ip ospf pro
R3# clear ip ospf process 
Reset ALL OSPF processes? [no]: y

  그럼 다시 R2와 R3에서 OSPF Network 정보와 ‘traceroute’ 결과를 확인해 보자.

R2# show ip route ospf 
     1.0.0.0/32 is subnetted, 1 subnets
O       1.1.1.1 [110/11] via 10.10.10.1, 00:00:34, FastEthernet0/0
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/11] via 10.10.10.3, 00:00:34, FastEthernet0/0

R2#traceroute 3.3.3.3
Type escape sequence to abort.
Tracing the route to 3.3.3.3
  1 10.10.10.3 32 msec 20 msec * 
R3# show ip route ospf
     1.0.0.0/32 is subnetted, 1 subnets
O       1.1.1.1 [110/11] via 10.10.10.1, 00:50:01, FastEthernet0/0
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/11] via 10.10.10.2, 00:01:25, FastEthernet0/0

R3# traceroute 2.2.2.2
Type escape sequence to abort.
Tracing the route to 2.2.2.2
  1 10.10.10.2 24 msec 36 msec * 

  R2와 R3의 Network 정보가 정상적으로 next-hop가 나타나고 경로도 R1을 거치지 않고 바로 통신되는 것을 확인할 수 있다.

  이렇듯 Multi-access 망에서 Network type에 대한 특징과 DR의 동작원리를 정확하게 알고 있다면 특정 장비를 거쳐서 통신하게 할 수도 있고, 직접 통신하게 할 수도 있다. OSPF Routing Protocol의 동작원리와 특징을 정확하게 알면 고객이나 회사에서 원하는 디자인을 구성 할 수 있는 것이다.

  네트워크 엔지니어는 안되는 것과 못하는 것을 정확하게 구분할 수 있어야 하는데, 못하는 것을 안다는 것은 어렵다. 하지만, 동작원리를 정확하게 알고 있다면 안되는 것은 정확하게 설명할 수 있을 것이다.