Limetime's TimeLine
article thumbnail
Published 2024. 2. 29. 01:41
[네트워크 기초] 40. OSPF Network
반응형

OSPF (Open Shortest Path First)

IP Packet

*IP 패킷만 봐도 OSPF 정보라는 것을 알 수 있다.

 


OSPF 특징

① Convergence Time이 짧다.

*Convergence Time : 라우터 간에 서로 변경된 정보를 주고받는데 걸리는 시간

→ 30초에 한 번씩 업데이트가 일어나고 HoldDown Time, Aging 등으로 Convergence Time이 긴 RIP와 비교했을 때, OSPF는 어떤 변화가 생길 때 바로 전달할 수 있다. 즉, 빠른 Update!

② Area 개념으로 전체 OSPF 네트워크를 작은 영역으로 나누어 관리

→ 효율적 관리

③ VLSM 지원 : Route Summarization 지원 (여러 개의 경로를 하나로 묶어줌)

→ IP주소 효율적 사용, 라우팅 테이블을 줄일 수 있다.

④ RIP처럼 네트워크 크기 제한(HOP 한계 등)이 없다.

→ 큰 네트워크에 적당

⑤ 네트워크 변화가 있을 때만 업데이트를 하고 멀티캐스트로 보낸다.

⑥ 경로 결정 : OSPF는 많은 관련 요소로 합쳐서 정확한 경로 선택 가능.

⑦ 표준 프로토콜이며 링크 스테이트 알고리즘을 사용한다.

⑧ 토폴로지(Topology, Network Type)마다 동작 방법이 다르다.

    1. Broadcast Multi-access Topology

Broadcast Multi-access Topology

네트워크에 두 개 이상의 라우터가 연결됨.

→ 하나의 메시지를 보내면 네트워크상의 모든 라우터가 볼 수 있다.

ex) Ethernet Segment

    2. Point-to-Point Topology

Point-to-Point Topology

→ 네트워크에 한 쌍의 라우터가 존재

ex) 전용선, Serial

    3. NBMA (Non Broadcast Multiple Access) Topology

NBMA Topology

→ 네트워크에 두 개 이상의 라우터가 존재

→ Broadcast Multi-access Topology와는 달리 브로드캐스트 기능은 없다.

ex) Frame Relay, X.25

 


OSPF 동작과정

① 라우터 A가 켜지면서 Hello 메시지를 보낸다. (OSPF가 새로 라우팅으로 구성될 때도..)

  • 모든 OSPF 라우터에게 Hello Packet을 멀티캐스트로 보낸다. (Multicast:224.0.0.5, OSPF 동작 라우터만 수신)
  • 라우터 ID를 포함해서 전달한다.
    • 1. 라우터의 IP 중 가장 높은 주소를 사용
      • 해당 IP를 가진 인터페이스가 자주 다운될 시 라우터 ID는 자꾸 바뀌므로 안정된 IP를 사용해야 한다.
        • (라우터 ID로 식별하기 때문에 바뀌면 처음부터 다시 관계를 맺어야 하기 때문.)
      • ex) 150.100.1.1 < 203.240.100.1
    • 2. Loopback IP (우선순위 1순위)
      • 루프백 IP는 다운될 염려가 없으므로 라우터 ID로 권장!!
      • *Loopback Interface를 사용할 시 IP의 높낮이와 상관없이 무조건 라우터 ID는 루프백 ID로 설정된다.

*라우터 ID : OSPF에서 서로를 구분하는 이름

  • Hello Packet은 10초에 한 번 발생하고 이웃이 되기위해 꼭 필요한 정보들이 포함되어 있다.
  • Hello Packet의 주요 내용
Router ID
*Hello/Dead intervals
Neighbors
*Area-ID
DR IP address
BDR IP address
Authentication
*password
*stub area flag
+Priority

*는 다르면 이웃이 될 수 없다는 뜻이다.(Neighbor 형성 불가!) 즉, 통신 불가!!

라우터 ID가 있는 상태에서 Loopback 인터페이스를 만들고 나면, 라우터 ID가 바로 바뀌는게 아니라서 라우터 재부팅 또는 OSPF 라우팅 프로토콜을 내렸다가 다시 올려야 한다!!

② Hello를 받은 라우터들(B)은 라우터 A를 자신의 Neighbor List에 넣는다. (Init 과정)

③ A에게서 Hello를 받은 라우터들(B)은 라우터 A에게 유니캐스트로 자신의 정보를 보낸다. 그리고 라우터 A는 Neighbor들(B)로부터 받은 정보를 자신의 Neighbor List에 넣는다.

 


DR과 BDR

  • DR과 BDR 선출 : Link State 교환할 때 생기는 트래픽 최소화 및 빠른 Sync!
DR (Designated Router) BDR (Backup Designated Router)
반장 부반장

 

DR과 BDR의 역할

① OSPF 세그먼트에서는 OSPF에 참여한 각 라우터들이 DR과 BDR에게 자신의 Link State를 알린다.

DR과 BDR에만 링크정보를 알리는 이유는 모든 라우터들과 Link State를 교환할 경우 발생하는 트래픽을 줄이고 Link State의 Sync(일치성)를 관리하기 위해서이다.

→ Adjacency : DR은 이 정보를 모두 관리하면서 링크의 상태를 항상 일치시키는 역할을 한다.

② BDR은 DR이 제대로 수행하는지 관찰하고 DR이 다운되면 BDR이 수행한다.

 

DR과 BDR 선출과정

① 라우터들은 Hello 패킷을 멀티캐스트해서 정보를 주고 받는다.

② 우선 Priority가 가장 높은 라우터가 DR이 되고 그 다음으로 높은 라우터는 BDR이 된다.

③ 다음으로 Priority가 같으라우터 ID가 높은 라우터가 DR이 된다.

→ 후보 : 라우터 A (Priority:2), 라우터 C (Priority:2)

→ DR : 라우터 C (ID: 192.168.10.20), BDR : 라우터 A (ID: 192.168.10.10)

*Priority 0 : 해당 라우터는 DR, BDR 선출에서 영원히 제외된다. (Default Priority: 1)

 

시나리오 1.

  • DR은 C이고 BDR은 A인데 새로운 라우터 E(Priority:3)가 들어왔다.
  • 이 때는 Priority가 아무리 높은 E라도 DR이나 BDR이 될 수 없다.
    • →  이미 선출이 끝났기 때문이다!
    • 단, 모든 라우터를 껏다 켜거나 모든 라우터의 OSPF를 내렸다 올린다면 E는 DR이 될 수 있을 것이다. (다시 선출할 수 있기 때문!!)

 

시나리오2.

  • DR은 C이고 BDR은 A이다. 라우터 E(Priority:3)가 추가되었다.
  • 이 때, DR인 C가 다운된 상황!!
    • BDR인 A가 DR이 되면서 우선순위가 가장 높은 라우터 E가 BDR 된다!! (BDR만 DR로 선출된다는 의미!!)

 


라우터가 처음 켜지거나 새로 OSPF 라우팅으로 구성되면 그 라우터는 Multicast주소(224.0.0.5)를 이용해 Hello Packet을 보낸다.

② Hello Packet을 통해서 새로운 라우터는 DR과 BDR의 주소를 알게된다.

③ 새 라우터는 자신이 가지고 있는 링크 정보LSA(Link-state Advertisement)에 담아 모든 DR에게 전송한다.

    (LSU, Link-state update) => Update

   이 때, 멀티캐스트 주소 224.0.0.6을 사용해서 DR, BDR에게 전송된다. DR에 LSA가 도착하면 BDR은 자신의 Timer를 세팅하고 DR이 새로운 라우터에게서 받은 이 정보다른 OSPF 라우터들에게 재전송하는지 기다린다. (BDR이 DR을 감시!!)

DR새로 받은 이 LSA 정보멀티캐스트 주소 224.0.0.5를 이용해 다른 모든 OSPF 라우터들에게 전송(새 라우터도 포함!!) 후 DR은 모든 라우터들로부터 ACK을 받음으로서 자기가 보낸 정보가 잘 도착했는지 확인할 수 있다.

⑤ 이 때, 만약 DRBDR의 Timer가 끝날 때까지 LSA정보를 다른 OSPF 라우터들에게 전송하지 않으BDRDR이 되Hello 패킷을 이용해 BDR을 새로 선출

⑥ 만약 링크가 끊어지면 해당 라우터는 그 정보를 즉시 DR에게 알리고, 그 LSA 정보를 다시 모든 OSPF 라우터들에게 전송한다. 또, 새로운 정보를 받은 라우터들은 그 LSA를 다시 가까운 네트워크로 Flooding해서 네트워크에 대한 정보업데이트하게 된다.

*Multicast는 주어진 대상 (224.0.0.5: 모든 OSPF Router, 224.0.0.6: 모든 DR, BDR)에만 전송한다. 즉, 네트워크 상의 Host들이나 다른 장비 쪽으로는 전송되지 않는다.

 


OSPF 구성

Wildcard mask

  • 서브넷마스크의 1은 0으로, 0은 1로 대치
  • ex) 255.255.0.0 → wildcard mask로 바꾸면 0.0.255.255가 된다.
    • (11111111.11111111.00000000.00000000) → (00000000.00000000.11111111.11111111)

Process-id

  • 한 라우터에서 OSPF를 여러 개 돌릴 때, 그 프로세스를 구별하기 위한 ID
    • 다른 라우터와 다르게 설정해도 되지만 굳이? 그냥 맞춰주자!
    • 한 라우터에 여러 개의 Process-id 사용은 권장하지 않는다.
      • Process-id 하나 당 하나 씩의 DB를 운용하기 때문에 라우터가 힘들어 한다.

Area

  • 확장성있는 라우팅 업데이트를 위한 개념
    • 전체 OSPF 영역을 보다 작은 area 단위로 나누어 그 영역 안에 있는 OSPF 라우터들 끼리우선 링크 정보를 업데이트하고, 다른 area와의 통신area 사이에 있는 라우터들(ABR, Area Border Router)이 정보를 전달하도록 하는 방식이다.
  • OSPF는 area라는 작은 단위로 나누어져 통신한다.
  • 백본 area는 area 0이다.
    • 백본 area 중심으로 area를 구성하는 것을 권장한다.

 

Router_A(config)# int fa 0/0
Router_A(config-if)# ip addr 172.16.10.1 255.255.255.0
Router_A(config-if)# no shutdown
Router_A(config-if)# exit
Router_A(config)# int se 1/0
Router_A(config-if)# ip 192.168.12.1 255.255.255.240
Router_A(config-if)# no shutdown
Router_A(config-if)# exit
Router_A(config)# router ospf 100
Router_A(config-router)# network 172.16.10.0 0.0.0.255 area 0
Router_A(config-router)# network 192.168.12.0 0.0.0.15 area 0

 

Router_B(config)# int se 1
Router_B(config-if)# ip addr 192.168.12.2 255.255.255.240
Router_B(config-if)# no shutdown
Router_B(config-if)# exit
Router_B(config)# int se 0
Router_B(config-if)# ip 192.168.23.2 255.255.255.240
Router_B(config-if)# no shutdown
Router_B(config-if)# exit
Router_B(config)# router ospf 100
Router_B(config-router)# network 192.168.12.0 0.0.0.15 area 0
Router_B(config-router)# network 192.168.23.0 0.0.0.15 area 0

 

Router_C(config)# int se 0
Router_C(config-if)# ip addr 192.168.23.3 255.255.255.240
Router_C(config-if)# no shutdown
Router_C(config-if)# exit
Router_C(config)# int fa 0
Router_C(config-if)# ip 172.16.30.1 255.255.255.0
Router_C(config-if)# no shutdown
Router_C(config-if)# exit
Router_C(config)# router ospf 100
Router_C(config-router)# network 172.16.30.0 0.0.0.255 area 0
Router_C(config-router)# network 192.168.23.0 0.0.0.15 area 0

 

Router_A# show ip protocols
 Routing protocol is ospf 100
 	outgoing update filter list for all interfaces is not set
    incoming update filter list for all interfaces is not set
    Router ID 192.168.12.1
    Number of areas in this router is 1. 1 normal 0 stub 0 nssa
    Maximum path: 4
    Routing for networks:
    	192.16.10.0 0.0.0.255 area 0
        192.168.12.0 0.0.0.15 area 0
    Routing Information Sources:
    	Gateway	        Distance	Last Update
        192.168.12.1    110         00:37:25
        192.168.23.3    110         00:37:25
        192.168.23.2    110         00:37:25
    Distance: (default is 110)

Router_A# show ip route
	codes: C-connected, S-static, R-Rip, M-mobile, B-BGP
    	   D-EIGRP, EX-EIGRP external, O-OSPF, IA-OSPF inter area
           ...
    Gateway of last resort is not set
      192.168.12.0/28 is subnetted, 1 subnets
    C 	192.168.12.0 is directly connected, serial 1/0
      192.16.0.0/24 is subnetted, 2 subnets
    O 	172.16.30.0 [110/129] cia 192.168.12.2, 00:43:09, serial 1/0
    C 172.16.10.0 is directly connected, fastEthernet 0/0
      192.168.23.0/28 is subnetted, 1 subnets
    O 	192.168.23.0 [110/128] via 192.168.12.2, 00:43:09, serial 1/0
    
Router_A# show ip ospf interface
	serial1/0 is up line protocol is up
    	Internet Address 192.168.12.1/28, Area 0
        Process ID 100, Router ID 192.168.12.1, Network Type POINT_TO_POINT, cost: 64
        Transmit Delay is 1 sec, state POINT_TO_POINT,
        Timer intervals configured, Hello 10, Dead 40, wait 40, Retransmit 5
        ...
    FastEthernet 0/0 is up, line protocol is up
    	Internet Address 172.16.10.1/24, Area 0
        Process ID 100, RouterID 192.168.12.1, Network Type BROADCAST, cost: 1
        Transmit Delay is 1 sec, state DR, priority 1
        Designated Router (ID) 192.168.12.1, Internet address 172.16.10.1
        No backup designated router on this network
        Timer intervals configured, Hello 10, Dead 40, wait 40, Retransmit 5
        ...

Router_B# show ip ospf neighbor
    Neighbor ID   Pri   State   Dead Time  Address        Interface
    192.168.23.3  1     FULL/-  00:00:38   192.168.23.3	  serial 0
    192.168.12.1  1     FULL/-  00:00:36   192.168.13.1	  serial 1

반응형
profile

Limetime's TimeLine

@Limetime

포스팅이 좋았다면 "공감❤️" 또는 "구독👍🏻" 해주세요!