OSPF 동작 원리와 Area 설계 가이드 — 초보자를 위한 라우팅 입문
📌 요약 · OSPF(Open Shortest Path First)는 기업 내부망에서 가장 많이 쓰이는 동적 라우팅 프로토콜입니다. 이 글에서는 OSPF가 어떤 원리로 최단 경로를 찾는지, Area를 왜 나누는지, 그리고 시스코 라우터에서 어떻게 설정하고 점검하는지까지 초보자 눈높이로 정리합니다.
📑 목차
OSPF가 뭐고 왜 쓸까
OSPF(Open Shortest Path First)는 라우터끼리 자기 정보를 공유해서 자동으로 최단 경로를 계산해 주는 동적 라우팅 프로토콜입니다. IETF 표준(RFC 2328)이라 벤더에 상관없이 작동하고, 중대형 기업망에서 사실상 기본값처럼 쓰입니다.
| 특징 | 설명 |
|---|---|
| 표준 프로토콜 | IETF RFC 표준. Cisco/Juniper/HP 등 어느 벤더에서도 호환 |
| Link-State 방식 | 전체 토폴로지를 그려놓고 계산. 정확하고 빠른 수렴 |
| 메트릭 | 대역폭 기반 cost. 빠른 회선일수록 cost가 작음 |
| VLSM/CIDR 지원 | 서브넷 마스크가 다른 네트워크도 처리 가능 |
| Area 구조 | 계층적 설계로 대규모 망에서도 확장 가능 |
💡 비유로 이해하기 — 내비게이션
OSPF는 라우터들이 만든 네트워크 전용 내비게이션입니다. 모든 도로(링크)와 신호등(라우터) 정보를 공유해 지도를 만들고, 출발지부터 목적지까지 가장 빠른 길을 자동으로 계산해 줍니다. 도로 공사(링크 다운)가 생기면 즉시 우회로를 찾아주는 것도 똑같습니다.
OSPF 동작 원리 — 4단계 흐름
OSPF가 작동하는 흐름은 크게 4단계입니다.
- Hello 패킷 교환 → Neighbor 형성 — 10초마다 Hello 패킷을 멀티캐스트(224.0.0.5)로 보내 옆 라우터를 찾습니다. 서로 정보가 맞으면 네이버 관계 성립.
- LSA 교환 → 토폴로지 공유 — 네이버끼리 자기가 아는 네트워크 정보(LSA)를 주고받습니다.
- LSDB 구축 → 지도 완성 — 받은 LSA를 모아 LSDB(Link-State Database)라는 전체 지도를 만듭니다. 같은 area의 모든 라우터는 똑같은 LSDB를 가집니다.
- SPF 계산 → 최단 경로 결정 — Dijkstra 알고리즘으로 자기 입장에서 각 목적지까지 가장 짧은 경로를 계산해 라우팅 테이블에 등록합니다.
💡 Hello 패킷이 일치해야 하는 항목
네이버가 안 맺어질 때 99% 이 항목 불일치입니다: Area ID, 서브넷 마스크, Hello/Dead 인터벌, 인증 정보, Stub 영역 플래그. debug ip ospf hello로 확인 가능합니다.
핵심 용어 — LSA·LSDB·SPF
| 용어 | 의미 |
|---|---|
| LSA (Link-State Advertisement) | "나는 이런 네트워크들과 연결돼 있어요" 광고문. 종류별로 Type 1~7이 있음 |
| LSDB (Link-State Database) | 모든 LSA를 모아둔 토폴로지 데이터베이스. 같은 area = 같은 LSDB |
| SPF (Shortest Path First) | LSDB에서 최단 경로를 뽑는 알고리즘. Dijkstra 알고리즘 사용 |
| Router ID | OSPF가 라우터를 식별하는 32비트 ID. 보통 Loopback IP를 사용 |
| Cost | 경로 비용. 10⁸ ÷ 대역폭으로 계산 (100Mbps=1, 10Mbps=10) |
DR·BDR — 다중 접속 환경에서의 대표 선출
한 LAN에 라우터 5대가 모여 있다고 가정해 봅시다. 모두가 모두에게 LSA를 보내면 트래픽이 엄청나게 늘어납니다(5대 → 10개 관계). 그래서 OSPF는 대표 한 명(DR)과 백업(BDR)을 뽑고, 나머지는 DR에게만 정보를 보내는 방식으로 효율을 높입니다.
| 역할 | 설명 |
|---|---|
| DR (Designated Router) | LAN의 대표 라우터. 모든 라우터가 DR에게만 LSA를 보냄 |
| BDR (Backup DR) | DR이 죽으면 즉시 승격되는 백업 |
| DROther | DR/BDR이 아닌 나머지. DR·BDR과만 통신함 |
선출 기준은 다음 순서입니다.
- OSPF Priority가 가장 높은 라우터 (기본값 1, 0이면 후보 자체 제외)
- Priority가 같으면 Router ID가 가장 높은 라우터
⚠️ DR 선출은 한 번 정해지면 안 바뀜(비선점)
STP의 루트 브리지는 더 좋은 후보가 나타나면 즉시 교체되지만, OSPF DR은 현재 DR이 죽기 전까지 안 바뀝니다. 그래서 라우터 부팅 순서에 따라 의도치 않은 라우터가 DR이 되는 경우가 흔합니다. 의도한 라우터를 DR로 만들고 싶다면 미리 Priority를 높여둔 뒤 부팅하거나, OSPF 프로세스를 한번 reset해야 합니다.
Area란 무엇이고 왜 나눌까
Area는 OSPF 라우터들을 묶는 논리적인 구역입니다. 같은 area의 라우터는 모두 같은 LSDB(전체 지도)를 가져야 합니다.
라우터가 100대인 망을 하나의 area로 두면 모든 라우터가 다른 99대의 정보를 일일이 가져야 합니다. 한 곳에 변화가 생길 때마다 99대 모두가 SPF를 재계산해야 하고, LSDB 크기도 커져 메모리·CPU 부담이 폭증합니다.
💡 비유로 이해하기 — 회사 부서
회사 전 직원이 매일 모든 부서의 회의록을 다 읽는다고 생각해 보세요. 일이 안 됩니다. 그래서 부서(area)별로 나누고, 부서장(ABR)만 다른 부서와 요약 정보를 교환합니다. OSPF의 Area 분할이 정확히 이 발상입니다.
Area의 종류
| Area 종류 | 특징 |
|---|---|
| Backbone (Area 0) | 모든 area의 중심. 다른 area는 반드시 Area 0과 연결돼야 함 |
| Standard Area | 일반 area. 모든 LSA를 주고받음 |
| Stub Area | 외부 경로(Type 5 LSA) 차단. default route만 받음. 소규모 지점망에 적합 |
| Totally Stub | 외부+다른 area 경로 모두 차단. default만 받음. 시스코 전용 |
| NSSA | Stub인데 외부 경로 일부는 허용 (Not-So-Stubby Area) |
라우터 종류 (역할)
| 역할 | 설명 |
|---|---|
| Internal Router | 한 area 안에만 있는 라우터 |
| ABR (Area Border Router) | 두 개 이상 area에 걸친 라우터. area 사이 정보 중계 |
| ASBR (AS Boundary Router) | OSPF 외부(BGP, static 등)와 OSPF 사이를 잇는 라우터 |
| Backbone Router | Area 0에 인터페이스가 하나라도 있는 라우터 |
Area 설계 원칙
OSPF Area를 설계할 때 지켜야 하는 기본 원칙들입니다.
- 모든 area는 Area 0과 직접 연결 — 다른 area끼리 직접 통신은 불가. 반드시 Area 0을 거쳐야 함. 물리적으로 어렵다면 Virtual Link로 우회
- 한 area의 라우터는 50~100대 이내 권장 — 너무 많으면 SPF 계산 부담 증가
- area 경계는 의미 단위로 — 본사·지점·DMZ 등 관리·물리적 단위로 area를 묶음
- 경로 요약(summarization)은 ABR/ASBR에서 — 다른 area로 전달할 때 서브넷을 합쳐 LSDB 크기를 줄임
- Loopback을 Router ID로 — 물리 인터페이스가 죽어도 Router ID가 안 바뀌도록 Loopback 사용
시스코 OSPF 실제 컨피그
① 기본 OSPF 설정
! Router ID로 쓸 Loopback 생성 R1(config)# interface loopback 0 R1(config-if)# ip address 1.1.1.1 255.255.255.255 ! OSPF 프로세스 시작 R1(config)# router ospf 1 ! 1은 process ID(로컬값) R1(config-router)# router-id 1.1.1.1 ! Router ID 명시 R1(config-router)# network 10.10.10.0 0.0.0.255 area 0 R1(config-router)# network 10.10.20.0 0.0.0.255 area 1
⚠️ Wildcard Mask 주의
OSPF는 서브넷 마스크가 아닌 역마스크(wildcard mask)를 사용합니다. 255.255.255.0의 wildcard는 0.0.0.255입니다. 비트가 0이면 일치 검사, 1이면 무시입니다.
② Stub Area 설정 (지점망)
! Area 1을 Stub로 (지점망에 적합) R1(config-router)# area 1 stub ! 같은 area 안의 모든 라우터에 동일하게 적용해야 함!
③ DR 우선순위 조정
! DR로 만들고 싶은 라우터는 priority를 올림 (기본 1) R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip ospf priority 100 ! DR 후보에서 아예 빼고 싶다면 priority 0 R2(config-if)# ip ospf priority 0
④ Cost 수동 조정과 경로 요약
! 특정 인터페이스 cost 강제 지정 R1(config-if)# ip ospf cost 10 ! ABR에서 area 1의 여러 서브넷을 요약해 area 0으로 전달 R1(config-router)# area 1 range 10.10.0.0 255.255.0.0
OSPF 점검 명령어
R1# show ip ospf neighbor ! 네이버 형성 여부 (가장 먼저 확인) R1# show ip ospf interface brief ! 인터페이스별 OSPF 상태/cost R1# show ip ospf database ! LSDB 내용 R1# show ip route ospf ! OSPF로 배운 경로만 R1# show ip protocols ! 라우팅 프로토콜 전반 상태 R1# show ip ospf border-routers ! ABR/ASBR 목록
show ip ospf neighbor 결과 해석
R1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 1 FULL/DR 00:00:38 10.10.10.2 Gi0/0 3.3.3.3 1 FULL/BDR 00:00:35 10.10.10.3 Gi0/0 4.4.4.4 1 FULL/DROTHER 00:00:33 10.10.10.4 Gi0/0
State가 FULL이면 정상입니다. INIT, EXSTART, EXCHANGE 같은 중간 상태에서 멈춰 있으면 MTU 불일치나 인증 문제를 의심해야 합니다.
자주 묻는 질문
Q. Process ID는 라우터마다 같아야 하나요?
A. 아니요. router ospf 1의 1은 라우터 내부에서만 의미 있는 로컬 ID입니다. R1은 1, R2는 100을 써도 네이버는 정상 형성됩니다. (BGP의 AS 번호와는 다릅니다)
Q. 네이버가 EXSTART나 EXCHANGE에서 멈춰 있어요.
A. 거의 항상 MTU 불일치입니다. 양쪽 인터페이스 MTU를 맞추거나, 임시로 ip ospf mtu-ignore를 적용해 검증을 끌 수 있습니다.
Q. Area 번호는 아무거나 써도 되나요?
A. Area 0은 반드시 백본이어야 하고, 나머지는 0~4294967295 사이 숫자 또는 IP 형식(0.0.0.1) 모두 가능합니다. 다만 한 area를 표기할 때 어떤 라우터는 1, 다른 라우터는 0.0.0.1로 쓰면 헷갈리니 통일해서 사용하세요.
Q. OSPF와 다른 프로토콜 중 어떤 걸 골라야 하나요?
A. 멀티 벤더 환경이거나 표준이 중요하면 OSPF, 시스코 단일 벤더이고 단순한 설정을 원하면 EIGRP, ISP·통신사급 대규모 외부 라우팅이면 BGP를 씁니다. 사내 라우팅의 80%는 OSPF가 답입니다.
Q. DR을 의도한 라우터로 만들고 싶은데 어떻게 하나요?
A. 두 가지 방법. (1) 해당 라우터를 다른 라우터보다 먼저 부팅, (2) 모든 라우터를 켠 상태에서 의도한 라우터의 ip ospf priority를 높이고 clear ip ospf process로 OSPF를 재시작. 운영 중인 환경에서는 1번이 안전합니다.
#OSPF #동적라우팅 #네트워크기초 #라우팅프로토콜 #LSA #LSDB #Area0 #ABR #시스코OSPF #네트워크엔지니어 #CCNA #도담인사이트
댓글
댓글 쓰기