IT Technology/Network

OSPF Protocol 대한 이해

by빵수 2022. 1. 12. 22:16
728x90
반응형

OSPF Protocol 대한 이해하는 시간을 가져보자.

 

 

 

OSPF (Open Shortest Path First) 의 약어

 

  • Link-State 프로토콜 (Classless 라우팅에 VLSM, CIDR을 지원한다)
  • Metric은 Cost 사용되며, 현 사용되는 버전은 OSPF Ver2이다.
  • Convergence(수렴) 시간이 빠르다.
  • IP패킷에서 프로토콜 89번 포트를 사용한다.
  • 멀티캐스트 (Multicast)를 사용하여 정보를 전달한다.

( 224.0.0.5 => DROTHER 사용, 224.0.0.6 => DR & BDR 사용 즉, DROTHER는 목적지 주소를 224.0.0.6으로 해서 DR, BDR에게 라우티 정보를 전송하고 DR은 목적지 주소를 224.0.0.5로 해서 DROTHER에게 라우팅 정보를 전송한다.

즉 DROTHER는 목적지 주소가 224.0.0.5인 것만 수신하고 DR, BDR은 224.0.0.5, 224.0.0.6 모두를 수신한다.)

 

  • AD 값은 110
  • SPF(Shortest Path First)또는 Dijkstra(디지크스트라)라는 알고리즘을 이용해서
  • 각 목적지까지의 최적 경로를 계산한다.

 

장점

Area 단위로 나눠서 사용하는 것이 기본으로 대규모 네트워크를 안정되게 운영할 수 있다.
  • 대규모의 네트워크를 안정되게 운영할 수 있다.
  • OSPF는 area 단위로 구성한다. 특정 에어리어에서 발생하는 상세한 라우팅 정보가 다른 에어리어로 전송되지 않아 큰 규모에서도 안정되게 운영할 수 있다.
  • stub이라는 강력한 축약 기능이 있다.
  • 기존 라우팅 프로토콜들은 연속되는 IP 주소를 사용하는 네트워크를 축약했지만
  • stub area는 연속되지 않아도 라우팅 테이블의 크기를 획기적으로 줄일 수 있다.
  • EIGRP는 시스코 전용이지만 OSPF는 표준 라우팅 프로토콜이기 때문에 시스코 라우터에서만 사용이 가능하지만 OSPF는 대부분 라우터에서 사용이 가능하다.

 

단점

설정이 지금까지 공부했던 라우팅 프로토콜보다 조금 까다롭다.
(네트워크 종류에 따라 동작하는 방식이 다르다.)
 
네트워크 종류
  • 브로드캐스트 멀티액세스
  • 포인트 투 포인트 
  • 포인트 투 멀티포인트
  • 논브로드캐스트 멀티액세스 (NBMA)
  • 라우팅 정보 계산 및 유지를 위해 CPU, DRAM과 같은 자원을 비교적 많이 사용한다.
 

패킷의 종류

 

Hello Packet

  • 인접한 라우터 간에 hello를 전송하여 응답 확인하는 방식.(Eigrp의 네이버 관계를 맺는 방식과 비슷하다.)
  • OSPF가 설정된 인접한 라우터 간 네이버 관계를 형성하고 네이버 관계를 유지하는 데 사용.                           
  • OSPF가 설정된 인터페이스로 서로 hello packet을 교환하여 네이버를 맺는다.
  • 네이버를 맺은 후에도 일정 주기(hello 주기)로 hello 패킷을 전송하고 정해진 주기 안에 dead 주기 상대방에게 hello 패킷을 수신받지 못하면 해당 네이버에 문제가 생긴 걸로 간주하고 네이버 관계를 끊는다.                         
  • 라우터 ID, area ID, 인증 암호, 서브넷 마스크, hello 주기, dead 주기, stub area flag, 라우터 Priority, DR, BDR, 네이버 리스트의 정보를 담고 있다.

 


DBD Packet

  • OSPF의 네트워크 정보를 LSA(Link state advertisement)라고 부르는데 OSPF는 자신이 만든 LSA와 네이버에게서 받은 LSA를 link state 데이터 베이스에 저장한다.
  • DBD는 OSPF 라우터의 link state 데이터 베이스에 있는 LSA들의 요약된 정보를 알려주는 패킷이다.
  • 즉, 네이버 간 LSA를 교환하기 전에 자신의 link state 데이터베이스에 있는 요약된 LSA목록을 상대방에게 알려주기 위해서 사용한다.

 

LSR (Link State Request)

  • 네이버에게 전송받은 DBD에 자신의 link state 데이터베이스에 정보가 없는 네트워크가 있다면 그 네트워크에 대한 상세정보(LSA)를요청할 때 사용되는 패킷이다.


LSU (Link State Update)

  • 네이버에게 LSA를 요청받는 LSR을 받거나 자신이 알고 있는 네트워크의 상태가 변했을 경우 해당 라우팅 정보를 전송할 때 사용하는 패킷. 즉, LSA를 실어 나를 때 사용하는 패킷이다.


LS ACK (Link State Acknowledgment)

  • OSPF 패킷을 정상적으로 수신했음을 알려줄 때 사용. 
  • DBD, LSR, LSU 패킷을 수신하면 LS ACK 패킷을 사용하여 수신받았음을 알려준다.

 

OSPF가 테이블을 만들고 유지하는 방법

 
1) OSPF를 설정한 라우터끼리 hello 패킷을 교환해서 네이버 혹은 Adjancent 네이버를 맺는다.
  • OSPF는 모든 네이버가 라우팅 정보를 교환하는 게 아니다.
  • 라우팅 정보를 교환하는 네이버를 Adjacent 네이버라고 부른다.
 
2) Adjacent 네이버인 라우터간 라우팅 정보를 서로 교환, OSPF에서 라우팅 정보를 LSA(Link state advertisement)라고 한다. 전송받은 LSA를 link state 데이터베이스에 저장.
 
3) LSA를 모두 교환하고 SPF(shortest Path First)또는 Dijkstra알고리즘을 이용해서 각 목적지까지의 최적 경로를 계산하고 라우팅 테이블에 올린다.
 
4) 그 후에도 hello 주기에 따라 hello packet을 교환하며 정상적인 상태인지 확인한다.
 
5) 만약 네트워크의 상태가 변하면 다시 반복해서 라우팅 테이블을 만든다.
 

OSPF 네트워크 분류

 
RIPEIGRP는 네트워크 타입별로 설정방식이 다르지 않고동일하다.
하지만 OSPF 네트워크 타입별로 설정 및 동작 형태가 다르다.
 
1. 브로드캐스트 네트워크 - 네이버 자동, DR 선출, 헬로 10초, 데드 40초 (ex. 이더넷, 토큰링, FDDI)
 
2. 포인트 투 포인트 네트워크 - 네이버 자동, DR 선출 X, 헬로 10초, 데드 40초 (ex. PPP, HDLC, F/R의 포인트 투 포인트 서브 인터페이스)
 
3. 포인트 투 멀티 포인트 네트워크 - 네이버 자동, DR 선출 x, 헬로 30초, 데드 120초
 
4. 논브로드캐스트 네트워크 - 네이버 지정, DR 선출, 헬로 30초, 데드 120초 (ex. 멀티포인트 서브인터페이스, F/R, ATM, X.25)

 

 

OSPF 설정

 
R1(config)#rotuer ospf <process-ID>
 
Process ID는 1 - 65535사이에 적당한 값을 사용.
프로세스 ID는 동일한 라우터에서 복수개의 OSPF 프로세스를 동작시킬 때 서로 구분하기 위해서 사용.
일반적으로 하나의 라우터에서는 하나의 프로세스만 사용한다.
라우터 간 서로 달라도 괜찮다.
 
R1(config-router)#router-id x.x.x.x

 

Distance vector 라우팅 프로토콜(RIP, IGRP 등)들은 라우팅 정보 전송 시 목적지 네트워크와 메트릭 값만을 알려주지만 Link state 라우팅 프로토콜들은 목적지 네트워크, 메트릭 값 이외에도 해당 라우팅 정보를 만든 라우터와 해당 라우팅 정보를 전송하는 라우터가 누구인지 알려주는데 그 때 사용되는 것이 라우터 ID 이다.
즉 식별자 역할을 한다. (그 외에도 여러 역할을 한다.) 
설정하지 않을 경우 규칙에 따라 자동으로 설정되지만 수동으로 잡아주는 것이 더 확실하고 안정적이어서 좋다.

 

R1(config-router)#network y.y.y.y 0.0.0.0 area 0

 

자신에게 연결된 네트워크를 다른 라우터들에게 광고한다.

wildcart mask를 사용.

마지막에는 area를 표시한다. (area 0는 백본 에어리어)

 
*라우터 ID를 임의로 설정하지 않을 경우 루프백 인터페이스에서 가장 높은 IP주소가 설정. 
루프백 인터페이스가 없을 경우 물리적 인터페이스에서 가장 높은 IP주소가 설정(관리용) 라우터 ID를 OSPF 네트워크에 포함시키지 않아도 상관없다.
  • 동일한 라우터에서 다른 라우팅 프로토콜에 포함된 IP주소를 사용해도 된다.
  • 현재 라우터에 설정되어 있지 않는 IP주소를 ID로 사용해도 된다.
  • 변동되지 않는 IP주소를 사용하는 것이 중요하다.
  • 주로 루프백 IP를 사용 라우터 ID를 변경하려면 OSPF 프로세스를 다시 시작한다. ('clear ip ospf process' -> 'y')

 

 

*네트워크가 논브로드캐스트 멀티액세스(NBMA)일 경우

R1(config-router)#neighbor x.x.x.x' 명령어로 서로 연결되는 OSPF 네이버를 지정해야 한다.

 

R1#show ip ospf neighbor

→네이버 관계를 맺은 목록 확인

 

R1#show ip ospf database
→ 라우팅 업데이트 정보를 관리하는 Table

 

OSPF 동작 방식

  • 이더넷, NBMA 등의 멀티 액세스 네트워크에 접속된 모든 라우터가 서로 1:1로 LSA를 교환하면 동일 네트워크에서 중복된 LSA와 ACK가 많이 발생하게 된다.
  • 때문에 LSA 중계 역할을 하는 DR(Designated Router)을 선출하고, DR에 이상이 생길 경우를 대비해서 BDR(Backup DR)을 선출용한다.
  • 즉, OSPF가 설정된 모든 라우터는 대표 중계 라우터인 DR에게만 LSA를 보내고 DR이 나머지 라우터에게 이를 중계하면 훨씬 효과적이다. (LSA와 ACK 패킷이 줄어든다.)
  • DR, BDR은 브로드캐스트 및 논브로드캐스트 네트워크에서만 사용되며, 포인트 투 포인트 네트워크에서 사용하지 않는다.

 

 

DR 선출방법 

1. 인터페이스 OSPF priority가 가장 높은 라우터가 DR이 된다. (다음으로 높은 라우터가 BDR이 된다.)
→ OSPF priority가 0이면 DR이나 BDR이 될 수 없다.
 
2. OSPF priority가 모두 동일하면 라우터 ID가 높은 것이 DR, BDR이 된다.
 
3. DR, BDR이 선출된 후에 더 높은 우선순위의 라우터가 추가되어도 DR, BDR이 변하지 않는다.

→ 최초 선출시 Wait Timer인 40초 이내의 값으로만 참조하여 선정한다.

→ OSPF 설정시 40초를 초과한다면 이후 설정되는 값이 아무리 높더라도 기존의 DR,BDR이 변하지 않음

→ 라우터를 재부팅하거나 clear ip ospf process 명령어를 사용해야 다시 선출한다.

clear ip ospf process 시 OSPF 라우팅 경로 재설정에 의한 순단 발생

 

DR, BDR 선정시 참조되는 값의 우선 순위

1순위 : 인터페이스 Priority값

2순위 : Router ID (OSPF& Interface에 설정, 따로 설정 안할시 Loopback 주소가 ID로 참조됨

3순위 : Interface 실제 IP 주소

 
4. DR이 다운되면 BDR이 DR이 되고 BDR을 새로 선출, BDR이 다운되면 BDR을 새로 선출한다.
DR이 아닌 라우터를 DROTHER라고 부른다.

→ 확인은 show ip ospf neighbor 혹은 show ip ospf interface로 할 수 있다.

 

 

 

 

DR 선출방법 

 

  • OSPF 라우팅 정보(LSA)를 서로 주고받는 네이버를 adjacent 네이버라고 한다.
  • DR과 다른 라우터들
  • BDR과 다른 라우터들
  • 포인트 투 포인트 네트워크로 연결된 두 라우터
  • 포인트 투 멀티 포인트 네트워크로 연결된 라우터들
  • Virtual-link로 연결된 두 라우터
     → 확인은 다른 라우터와 연결된 인터페이스에서 'show ip ospf serial 0/0'

 

OSPF 네이버 상태 변화

 

일반적으로 Down 상태에서 시작해서 네이버와 라우팅 정보 교환을 끝낸 Full상태로 변한다.
 
1) Down 상태

 - OSPF가 설정되고 hello 패킷을 전송했지만, 아직 상대방 라우터에게 Hello 패킷을 받지 못한 상태.

 - Full 상태 후에도 Dead 주기 동안 OSPF Hello 패킷을 받지 못하면 다시 다운 상태가 된다.
 
2) Attempt 상태

 - 논브로드캐스트 네트워크에서만 적용되는 상태.

 - OSPF 설정에서 neighbor 명령어를 사용하여 지정한 네이버에게서 헬로 패킷을 수신하지 못한 상태를 의미.
 
3) Init 상태

 - 네이버에게 Hello 패킷을 받았으나 상대 라우터가 아직 내가 전송한 Hello 패킷을 아직 수신하지 못한 경우
 - 상대방이 보낸 Hello 패킷 안의 네이버 리스트에 내 라우터 ID가 없는 경우
 
4) Two-way 상태

 - 네이버와 쌍방향 통신이 이루어진 상태.

 - 멀티 액세스 네트워크라면 이 단계에서 DR과 BDR을 선출한다.
 - DROTHER간은 라우팅 정보를 교환하지 않으므로 즉, Adjacent(어제이션시)를 맺지 않으므로 네이버 상태가 투 웨이 상태로 남는다.
 
5) Exstart 상태

 - Adjacent(어제이션트) 네이버가 되는 첫 단계

 - 마스터와 슬레이브 라우터를 선출 (라우터 ID가 높은 것이 마스터)
 
6) Exchange 상태

 - 각 라우터에서 자신의 Link State 데이터베이스에 저장된 LSA 헤더만을 DBD라고 부르는 패킷에 담아 상대방에게 전송한다.

 - DBD 패킷을 수신한 라우터는 자신의 Link State 데이터베이스의 내용과 비교해 보고 자신에게 없거나 자신의 정보가 더 오래된 것이면 상대방에게 상세한 정보를 요청하기 위해 Link State Request List에 기록.

 - DBD를 수신받고 그 안에 자신에게 없는 정보가 없으면 바로 Full 상태가 된다.
 
7) Loading 상태

 - 상대로부터 DBD수신이 끝나고 자신에게 없는 정보를 LSR로 요청한다.

 - 요청받은 라우터는 해당 정보를 LSU로 전송해준다.
 
8) Full 상태

 - 어제이션트 라우터들 간에 정보 교환이 모두 끝나서 어드제이션트 네이버간 Link State 데이터베이스 내용이 모두 일치된 상태이다.
 

네트워크 종류에 따라서 몇 단계를 건너뛰기도 한다. (debug ip opsf adj)을 실행하고 ospf를 설정하면 네이버간의 상태변화를 확인할 수 있다

 

 

OSPF 매트릭

 

  • OSPF 메트릭은 Cost라고 부른다.
  • 10^8/bandwidth(bps) = Cost
  • 코스트 계산 시 소수점 이하는 전부 버린다.
  • 하지만 1 미만이면 1로 계산한다.
  • 인터페이스에서 명령어로 코스트를 변경할 수도 있다. (ip ospf cost?)

 

OSPF Area

 

  • OSPF는 복수개의 Area로 나눠서 설정
  • 규모가 작을 때는 하나의 Area만 사용해도 된다.
  • Area가 하나일 경우에는 Area 번호로 아무거나 사용해도 된다.
  • 하지만 Area가 두 개 이상일 경우 하나는 반드시 0으로 써야 한다.
  • Area 0은 백본 에어리어라 불리며 기본적으로 다른 Area 들은 Area 0과 물리적으로 직접 연결돼야 한다.
  • Area로 나눠서 구성하면 안정된 대규모 네트워크를 운영할 수 있다.

 

→ OSPF 라우팅 정보를 LSA라면 여러 종류가 있다.

 

Type 1과 2는 동일한 Area 내부로만 전달 즉, Area가 다르면 이 두 가지 LSA는 다른 Area로 전달되지 않는다.

결과적으로 토폴로지의 변화가 심한 불안정한 네트워크라도 그 영향을 자신의 Area 내부에 국한시킬 수 있다.

OSPF는 RIP이나 EIGRP처럼 임의 라우터에서 축약하는 것이 아니라 Area별로 축약을 설정한다. 따라서 특정 area에 소속된 네트워크를 축약함으로 특정 Area 네트워크 정보를 전송하는 LSA Type 3의 전송을 최소화할 수 있다.
즉, 특정 Area에서 발생하는 토폴로지 변화가 다른 Area에 미치는 영향을 최소화한다.

OSPF 외부 네트워크 또는 다른 에어리어의 라우팅 정보가 모두 차단되어 라우팅 테이블을 획기적으로 줄이는 Stub area 기능이 있다.

 

 

 

OSPF 라우터의 종료

 

  1. 백본 라우터 : 백본 에어리어(area 0)에 소속된 라우터
  2. 내부 라우터 : 하나의 에어리어에만 소속된 라우터
  3. ABR : 두 개 이상의 에어리어에 소속된 에어리어 경계 라우터를 의미
  4. ASBRP : OSPF 네트워크와 다른 라우팅 프로토콜이 설정된 네트워크를 연결하는 AS경계 라우터를 의미

 

OSPF 경로

 

우선 순위
코드
경로 타입
내용
 
1
0
에어리어 내부 경로
동일 Area에 소속된 경로
Inter area route
2
0 IA
에어리어 간 견로
다른 Area에 소속된 경로
Inter area route
3
O E1
도메인 외부 경로
변동 코스트 값을 가지는 외부 경로
외부에서 OSPF로 재분배된 네트워크
4
O N1
변동 코스트 값을 가지는 NSSA외부 경로
외부에서 OSPF로 재분배된 네트워크
5
O E2
고정 코스트 값을 가지는 외부 경로
외부에서 OSPF로 재분배된 네트워크
6
O N2
고정 코스트 값을 가지는 NSSA 외부 경로
외부에서 OSPF로 재분배된 네트워크
반응형