IT·테크/인프라

OSPF — 링크 상태로 전체 지도를 그려 길을 찾는다

레루루 2026. 8. 13. 22:39
반응형

이 글은 2021년 11월 기준 기록입니다.

OSPF는 정보를 모아 지도를 그린다

OSPF는 Open Shortest Path First의 약자로, 링크 상태 라우팅 프로토콜입니다. 거리 벡터 프로토콜이 "목적지까지 얼마나 먼가"만 주고받는 것과 달리, OSPF는 네트워크 구성도를 그릴 수 있는 정보를 통째로 주고받습니다. 이 라우팅 정보를 LSA라고 하며, 모인 정보를 바탕으로 SPF 또는 다익스트라(Dijkstra) 알고리즘을 통해 최적 경로를 계산합니다.

 

장점은 대규모 네트워크를 안정적으로 운영할 수 있다는 것과 표준 라우팅 프로토콜이라는 것입니다. 단점은 네트워크 자원이 많이 소요된다는 점입니다. 지도를 그리려면 그만큼의 정보와 계산이 필요하기 때문입니다.

 

OSPF를 이해할 때 먼저 구분해야 할 개념이 네이버어드제이션트 네이버입니다. 이 둘은 같은 말이 아니며, 뒤에서 자세히 다룹니다.

에어리어를 나누는 것이 OSPF 설계의 출발점이다

OSPF는 네트워크를 에어리어(Area)로 나눕니다. 그중 Area 0을 백본 에어리어라고 부릅니다. 에어리어 내부에서 작동하는 방식, 에어리어 경계에서 작동하는 방식, OSPF 경계에서 작동하는 방식이 각각 다르기 때문에, 네트워크를 광고할 때 해당 네트워크가 어느 에어리어에 속하는지 함께 표시합니다.

// ospf에서 뒤의 숫자는 프로세스 번호
// 한 라우터에서 여러개의 ospf를 동작시킬 때 구분하기 위한 목적
// 일반적으로 한 라우터에서 하나의 프로세스만 사용
// 라우터별로 달라도 상관 없음
R1(config)#router ospf 1
R1(config-router)#router-id 1.1.1.1

// 네트워크를 광고할 때 해당 네트워크가 어떤 area에 속하는지 표시
R1(config-router)#net 1.1.1.1 0.0.0.0 area 1
R1(config-router)#net 1.1.123.1 0.0.0.0 area 1
R1(config-router)#end
R1#wr

R2(config)#router ospf 1
R2(config-router)#router-id 1.1.2.2
R2(config-router)#net 1.1.2.2 0.0.0.0 area 0
R2(config-router)#net 1.1.123.2 0.0.0.0 area 1
R2(config-router)#net 1.1.24.2 0.0.0.0 area 0
R2(config-router)#end
R2#wr

R3(config)#router ospf 1
R3(config-router)#router-id 1.1.3.3
R3(config-router)#net 1.1.3.3 0.0.0.0 area 0
R3(config-router)#net 1.1.123.3 0.0.0.0 area 1
R3(config-router)#net 1.1.34.3 0.0.0.0 area 0
R3(config-router)#end
R3#wr

R4(config)#router ospf 1
R4(config-router)#router-id 1.1.4.4
R4(config-router)#net 1.1.4.4 0.0.0.0 area 0
R4(config-router)#net 1.1.34.4 0.0.0.0 area 0
R4(config-router)#net 1.1.24.4 0.0.0.0 area 0
R4(config-router)#net 1.1.45.4 0.0.0.0 area 45
R4(config-router)#end
R4#wr

R5(config)#router ospf 1
R5(config-router)#router-id 1.1.5.5
R5(config-router)#net 1.1.5.5 0.0.0.0 area 45
R5(config-router)#net 1.1.45.5 0.0.0.0 area 45
R5(config-router)#end
R5#wr

다섯 가지 패킷이 지도를 맞춰 나간다

OSPF는 헬로, DDP, LSR, LSU, LS ACK 다섯 가지 패킷을 사용합니다.

 

헬로(hello) 패킷은 인접 라우터와 네이버를 구성하는 데 씁니다. 라우터 ID, 에어리어 ID, 암호, 서브넷 마스크, 헬로 주기, 스텁 에어리어 플래그, 라우터 우선순위, 데드 주기, DR, BDR, 네이버 리스트 정보가 담깁니다. 이 중 에어리어 ID, 암호, 서브넷 마스크, 헬로/데드 주기, 스텁 에어리어 표시가 반드시 같아야 네이버가 구성됩니다. 네이버가 안 붙을 때 확인해야 할 목록이기도 합니다.

 

헬로 주기는 브로드캐스트와 포인트 투 포인트 네트워크에서는 10초, 논브로드캐스트 네트워크에서는 30초입니다. 데드 주기는 헬로 주기의 4배로, 각각 40초120초입니다.

 

DDPLSA를 요약한 데이터입니다. 자신의 링크 상태 데이터베이스에 있는 LSA 목록을 상대 라우터에게 알려주기 위해 사용하며, DBD 패킷이라고 하기도 합니다.

 

LSR(Link State Request)은 상대 라우터가 보낸 DDP를 보고 자신에게 없는 LSA를 요청할 때 사용합니다.

 

LSU(Link State Update)는 상대 라우터에게 LSR을 받았거나 네트워크 상태가 변했을 때 라우팅 정보를 전송하는 패킷입니다.

 

LS ACK(Link State Acknowledgment)는 DDP, LSR, LSU에 대한 정상 수신 확인 패킷입니다.

네이버가 되는 조건은 "상대의 리스트에 내가 있는가"다

물리적으로 직접 연결된 라우터 중에서 헬로 패킷을 수신하고, 그 헬로 패킷에 포함된 네이버 리스트에 자신의 라우터 ID가 있으면 네이버가 됩니다. 한쪽만 보내서는 성립하지 않는다는 뜻입니다.

// 네이버 확인
R2#sh ip ospf neighbor

헬로 패킷의 목적지 주소는 BMA와 포인트 투 포인트에서는 멀티캐스트 224.0.0.5, 논브로드캐스트 네트워크에서는 유니캐스트를 사용합니다.

DR과 BDR은 LSA 교환의 중계자다

멀티액세스 네트워크에서 모든 라우터가 서로 LSA를 주고받으면 트래픽이 급격히 늘어납니다. 그래서 하나의 대표 라우터에게 LSA를 보내고 그 대표 라우터가 LSA를 중계하도록 합니다. 이 대표 라우터가 DR(Designated Router)이고, DR에 문제가 생겼을 때 역할을 이어받는 라우터가 BDR(Backup DR)입니다.

 

선출 기준은 다음과 같습니다. OSPF 우선순위가 가장 높은 라우터가 DR이 되고, 다음 우선순위가 BDR이 됩니다. 우선순위를 0으로 지정하면 DR이나 BDR이 될 수 없습니다. 우선순위는 인터페이스에서 ip ospf priority ? 명령으로 설정하며 기본값은 1입니다. 우선순위가 동일하면 라우터 ID가 높은 것이 DR, 그다음이 BDR입니다.

 

한 번 선출되면 재부팅하거나 clear ip ospf process를 사용하기 전에는 다시 선출하지 않습니다. DR과 BDR이 아닌 라우터는 DROTHER라고 부릅니다.

 

몇 가지 성질을 함께 기억해야 합니다. 포인트 투 포인트 네트워크에서는 DR/BDR을 선출하지 않습니다. DR은 동일한 서브넷으로 연결된 다른 라우터들과 반드시 물리적으로 직접 연결되어 있어야 합니다. 그리고 DROTHER 라우터들끼리는 정보를 교환하지 않습니다.

어드제이션시는 실제로 정보를 주고받는 관계다

네이버라고 해서 모두 링크 상태 정보를 교환하지는 않습니다. 실제로 교환하는 관계가 어드제이션트 네이버이며, 다음의 경우에 성립합니다. DR과 다른 라우터들, BDR과 다른 라우터들, 포인트 투 포인트 네트워크로 연결된 두 라우터, 포인트 투 멀티포인트 네트워크로 연결된 라우터들, 가상 링크로 연결된 두 라우터입니다. DROTHER끼리는 어드제이션트 네이버가 될 수 없습니다.

// 어드제이션트 네이버 확인
R1#sh ip ospf int e0/0.123

네이버 상태는 여덟 단계를 거친다

  • 다운(down) — 헬로 패킷을 전송했지만 아직 다른 라우터에게서 헬로 패킷을 받지 못한 상태입니다.
  • 어템트(attempt) — 논브로드캐스트 네트워크에만 적용되며, 직접 지정한 네이버에게서 헬로 패킷을 수신하지 못한 상태입니다.
  • 이닛(init) — 네이버에게서 헬로 패킷을 받았으나 상대 라우터가 아직 나의 헬로 패킷을 수신하지 못한 상태입니다. 상대의 헬로 패킷 네이버 리스트에 자신이 없을 때가 여기에 해당합니다.
  • 투웨이(2way) — 네이버와 쌍방향 통신이 이루어진 상태로, 상대의 헬로 패킷 네이버 리스트에 자신이 있을 때입니다. 멀티액세스 네트워크에서는 이 상태에서 DR과 BDR을 선출합니다. DROTHER끼리는 정보를 교환하지 않으므로 이 상태로 남고, DR·BDR과 포인트 투 포인트 네트워크는 다음 상태로 넘어갑니다. DR과 BDR을 선출할 때는 공평하게 기회를 주기 위해 wait 시간만큼 대기하며, wait 시간은 데드 주기와 동일합니다.
  • 엑스스타트(exstart) — 어드제이션트 네이버가 되는 첫 단계로, 마스터(master) 라우터와 슬레이브(slave) 라우터를 선출합니다.
  • 익스체인지(exchange) — 자신의 링크 상태 데이터베이스를 DDP에 담아 전송합니다.
  • 로딩(loading) — DDP 수신이 끝난 후 필요한 정보가 있으면 LSR을 보내고 LSU를 받습니다.
  • 풀(full) — 어드제이션트 라우터들 간 정보 교환이 끝난 상태입니다.

코스트는 기준 대역폭을 실제 대역폭으로 나눈 값이다

OSPF의 메트릭은 코스트(cost)입니다. 출발지부터 목적지까지 각 인터페이스에서 기준 대역폭을 실제 대역폭으로 나눈 값의 합으로, 소수점은 무시하고 최솟값은 1입니다. 기준 대역폭의 기본값은 10^8입니다.

 

여기에 함정이 있습니다. 기본 기준 대역폭을 그대로 쓰면 10^8 이상의 대역폭을 가지는 인터페이스가 모두 1로 계산되어, 빠른 경로에 대해 효율적인 라우팅이 되지 않을 수 있습니다. 따라서 기준 대역폭을 높게 설정해 주는 것이 좋습니다.

// 기준 대역폭 변경
// 단위가 Mbits(10^6)
R1(config)#router ospf 1
R1(config-router)#auto-cost reference-bandwidth ?
<1-4294967>  The reference bandwidth in terms of Mbits per second

개별 인터페이스의 코스트를 직접 지정할 수도 있습니다.

// 특정 인터페이스에서
R1(config)#int e0/0.123
R1(config-subif)#ip ospf cost ?
<1-65535>  Cost

에어리어가 둘 이상이면 백본이 반드시 있어야 한다

규모가 작으면 하나의 에어리어만 사용해도 됩니다. 하지만 에어리어가 두 개 이상이면 반드시 백본 에어리어(area 0)가 존재해야 하고, 다른 에어리어들은 반드시 백본 에어리어와 직접 연결되어야 합니다.

 

에어리어를 나누는 실익은 정보 전달 범위를 끊는 데 있습니다. LSA 타입 1과 2는 동일 에어리어 내부로만 전달됩니다. 축약도 에어리어별로 이루어집니다. 다른 에어리어의 정보를 광고하는 LSA 타입 3은 축약으로 줄일 수 있고, 외부 네트워크가 모두 차단된 스텁 에어리어도 에어리어별로 설정할 수 있습니다.

 

라우터는 어디에 속해 있고 무슨 역할을 하느냐에 따라 네 가지로 나뉩니다. 내부 라우터는 하나의 에어리어에만 속한 라우터, 백본 라우터는 백본 에어리어(area 0)에 속한 라우터, ABR(Area Border Router)은 에어리어 경계 라우터, ASBR(AS Boundary Router)은 AS 경계 라우터로 다른 라우팅 프로토콜을 OSPF로 재분배시키는 라우터입니다.

네트워크 타입이 네이버 구성과 DR 선출을 결정한다

OSPF의 네트워크 타입에는 브로드캐스트, 포인트 투 포인트, 포인트 투 멀티포인트, 논브로드캐스트가 있습니다. 타입에 따라 네이버를 자동으로 찾는지, DR을 선출하는지, 헬로/데드 주기가 얼마인지가 달라집니다.

네트워크 타입         네이버  DR  헬로/데드주기  기본인터페이스
브로드캐스트          자동   선출  10/40        이더넷
포인트 투 포인트      자동   없음  10/40        포인트 투 포인트, HDLC, PPP
포인트 투 멀티포인트  자동   없음  30/120       없음
논브로드캐스트        지정   선출  30/120       멀티포인트, 프레임 릴레이, ATM 등

여기서 지켜야 할 규칙이 있습니다. 네트워크 타입이 달라도 네이버끼리는 반드시 헬로/데드 주기가 같아야 하며, 주기가 다르면 명령어로 직접 일치시켜 주어야 합니다. 또 네이버 간 네트워크 타입은 모두 DR을 선출하거나 모두 선출하지 않아야 합니다. 가장 좋은 것은 네트워크 타입 자체를 일치시키는 것입니다. 논브로드캐스트 네트워크에서는 DR을 직접 지정합니다.

논브로드캐스트 네트워크 설정

논브로드캐스트 네트워크에서는 네이버를 지정해 주어야 하고, 모든 라우터와 직접 연결된 라우터가 DR로 동작할 수 있도록 해야 합니다. 프레임 릴레이를 사용하면 논브로드캐스트 네트워크로 간주합니다.

R4(config)#frame-relay switching
R4(config)#int s1/1
R4(config-if)#enc frame-relay
R4(config-if)#frame-relay intf-type dce
R4(config-if)#frame-relay map ip 1.1.54.5 405 broadcast
R4(config-if)#ip add 1.1.54.4 255.255.255.0
R4(config-if)#no sh

R5(config)#int s1/1
R5(config-if)#enc frame-relay
R5(config-if)#frame-relay map ip 1.1.54.4 405 broadcast
R5(config-if)#ip add 1.1.54.5 255.255.255.0
R5(config-if)#no sh

R4(config)#router ospf 1
R4(config-router)#net 1.1.54.4 0.0.0.0 area 45

R5(config)#router ospf 1
R5(config-router)#net 1.1.54.5 0.0.0.0 area 45

R4(config)#int s1/1
R4(config-if)#ip ospf priority ?
<0-255>  Priority

R4(config-if)#ip ospf priority 255
R4(config-if)#exit
R4(config)#router ospf 1
R4(config-router)#neighbor 1.1.54.5

R4의 우선순위를 255로 올려 DR로 만들고, 네이버를 직접 지정하는 것이 핵심입니다.

어떤 타입을 고를 것인가

네이버가 2개 이상이거나 네이버가 추가될 가능성이 있으면 포인트 투 멀티포인트를, 네이버가 하나뿐이면 포인트 투 포인트를 선택합니다. 두 타입 모두 DR과 BDR을 선출하지 않으므로 상태 변화에 따른 복구가 빠릅니다.

R1(config)#int e0/0.123
R1(config-subif)#ip ospf network ?
broadcast            Specify OSPF broadcast multi-access network
non-broadcast        Specify OSPF NBMA network
point-to-multipoint  Specify OSPF point-to-multipoint network
point-to-point       Specify OSPF point-to-point network

R1(config-subif)#ip ospf network point-to-multipoint
R1(config-subif)#ip ospf hello-interval 5

R2(config-subif)#int e0/0.123
R2(config-subif)#ip ospf network point-to-multipoint
R2(config-subif)#ip ospf hello-interval 5

R3(config-if)#int e0/0.123
R3(config-subif)#ip ospf network point-to-multipoint
R3(config-subif)#ip ospf hello-interval 5

R2(config-subif)#int e0/0.24
R2(config-subif)#ip ospf network point-to-point

R4(config)#int e0/0.24
R4(config-subif)#ip ospf network point-to-point

R4(config-subif)#int e0/0.45
R4(config-subif)#ip ospf network point-to-point

R5(config)#int e0/0.45
R5(config-subif)#ip ospf network point-to-point

R4(config-subif)#int s1/1
R4(config-if)#ip ospf network point-to-point
R4(config-if)#exit

R4(config)#router ospf 1
R4(config-router)#no neighbor 1.1.54.5

R5(config-subif)#int s1/1
R5(config-if)#ip ospf network point-to-point

포인트 투 멀티포인트로 바꾸면 헬로 주기가 30초가 되므로, 양쪽 모두 ip ospf hello-interval 5로 맞춰 주고 있습니다. 포인트 투 포인트로 바꾼 뒤에는 DR을 선출하지 않으므로 직접 지정했던 네이버 설정을 제거합니다.

경로는 어디서 왔느냐에 따라 네 가지로 표시된다

OSPF의 경로는 에어리어 내부 네트워크, 다른 에어리어 네트워크, 타입 1 외부 네트워크(변동 코스트), 타입 2 외부 네트워크(고정 코스트)로 나뉩니다.

 

에어리어 내부 네트워크는 동일한 에어리어 내부에 소속된 네트워크로 라우팅 테이블에서 O로 표시됩니다. 다른 에어리어 네트워크(Inter-Area Network)O IA로 표시됩니다.

 

E1 외부 네트워크는 다른 라우팅 프로토콜에서 재분배된 네트워크로, 라우터를 건너갈 때 메트릭 값이 누적됩니다.

// R5에 lo5 만들어서 재분배를 통해 외부 네트워크 생성
R5(config)#int lo5
R5(config-if)#ip add 5.5.5.5 255.255.255.0
R5(config-if)#exit

R5(config)#router ospf 1
R5(config-router)#redistribute connected metric-type 1 subnets
// 코스트 확인
R4#sh ip ro ospf
O E1     5.5.5.0 [110/30] via 1.1.45.5, 00:00:57, Ethernet0/0.45

R2#sh ip ro
O E1     5.5.5.0 [110/40] via 1.1.24.4, 00:02:59, Ethernet0/0.24

R4에서 30이던 코스트가 한 홉 떨어진 R2에서 40이 된 것이 누적의 결과입니다.

 

E2 외부 네트워크는 메트릭 값이 OSPF 도메인 내에서 일정합니다. 재분배 시 기본 메트릭은 BGP가 1, 나머지는 20입니다. 메트릭이 동일하게 20이어도 보조 메트릭(forward metric)을 활용해 더 좋은 경로를 선택합니다.

// 확인을 위해 재분배했던 E1 네트워크 제외
R5(config)#router ospf 1
R5(config-router)#no redistribute connected
// E2 타입으로 재분배
R5(config-router)#redistribute connected subnets
// R4, R2에서 확인
R4#sh ip ro ospf
O E2     5.5.5.0 [110/20] via 1.1.45.5, 00:00:10, Ethernet0/0.45

R2#sh ip ro osp
O E2     5.5.5.0 [110/20] via 1.1.24.4, 00:00:58, Ethernet0/0.24

두 라우터 모두 20으로 같습니다. 이때 실제 경로 선택을 가르는 것이 forward metric입니다. 인터페이스를 내려 보면 값이 달라지는 것을 확인할 수 있습니다.

// 보조 메트릭(forward metric) 확인
R4(config-subif)#do sh ip ro 5.5.5.0
Routing entry for 5.5.5.0/24
Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 10

R4(config)#int e0/0.45
R4(config-subif)#sh

R4(config-subif)#do sh ip ro 5.5.5.0
Routing entry for 5.5.5.0/24
Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 64

N1과 N2 외부 네트워크는 NSSA 네트워크에서 사용되는 외부 네트워크 타입으로, 성격은 E1·E2와 동일합니다.

LSA는 누가 만들고 어디까지 가는가로 구분된다

OSPF가 사용하는 라우팅 정보를 LSA(Link State Advertisement)라고 합니다.

  • 타입 1 LSA — OSPF에 포함된 모든 라우터가 생성하며 router LSA라고도 합니다. 링크 타입, 링크 ID, 링크 데이터 정보, 인터페이스의 코스트 등이 담기고 동일 에어리어 내로만 전송됩니다. show ip ospf database router로 확인합니다.
  • 타입 2 LSA — DR이 생성하며 network LSA라고도 합니다. 현재 DR과 연결된 라우터들의 라우터 ID를 표시합니다. show ip ospf database network로 확인합니다.
  • 타입 3 LSA — ABR이 생성하며, 다른 에어리어에 있는 네트워크를 현재 에어리어에 알립니다. show ip ospf database summary adv-router로 확인합니다.
  • 타입 4 LSA — ABR이 생성하며, 다른 에어리어에 소속된 ASBR의 정보를 현재 에어리어에 알립니다. show ip ospf database asbr-summary adv-router로 확인합니다.
  • 타입 5 LSA — ASBR이 생성하며, 외부 네트워크 정보를 OSPF 내부 라우터들에게 알립니다. show ip ospf database external로 확인합니다.

스텁 에어리어는 외부 정보를 끊고 디폴트 루트로 대체한다

스텁 에어리어는 OSPF의 특징적인 장점입니다. ABR이 내부 라우터에게 외부 경로에 대한 LSA를 모두 차단하고, 대신 디폴트 루트를 만들어 전송합니다. 내부 라우터의 링크 상태 데이터베이스가 작아지므로 부담이 줄어듭니다.

 

종류는 스텁 에어리어, 완전 스텁 에어리어, NSSA(Not So Stubby Area) 세 가지입니다. 다만 제약이 있습니다. 백본 에어리어가 될 수 없고, 가상 링크 설정 시 트랜짓(transit) 에어리어가 될 수 없으며, 에어리어 내부에 ASBR을 둘 수 없습니다. 마지막 제약의 예외가 NSSA입니다.

스텁 에어리어

차단 대상은 E1과 E2입니다. 스텁 에어리어로 만들고 싶은 에어리어의 모든 라우터에 설정해야 합니다.

// area1 스텁 에어리어 설정
R1(config)#router ospf 1
R1(config-router)#area 1 stub

R2(config)#router ospf 1
R2(config-router)#area 1 stub

R3(config)#router ospf 1
R3(config-router)#area 1 stub

완전 스텁 에어리어

E1, E2에 더해 IA 네트워크까지 모두 차단합니다. ABR에서는 area 1 stub no-summary를, 내부 라우터에서는 area 1 stub을 설정합니다.

// 완전 스텁 에어리어 설정
R2(config)#router ospf 1
R2(config-router)#area 1 stub no-summary

R3(config)#router ospf 1
R3(config-router)#area 1 stub no-summary

ABR이 하나뿐인 에어리어라면 완전 스텁 에어리어로 설정하는 것이 좋습니다. 다만 완전 스텁 에어리어는 시스코 라우터에서만 작동합니다.

NSSA

에어리어 내에 ASBR이 존재하면 스텁이나 완전 스텁 에어리어를 구성할 수 없습니다. 그 제약을 푼 것이 NSSA로, 내부에 ASBR을 둘 수 있는 스텁 에어리어입니다.

// NSSA 확인을 위해 R2에 외부 네트워크 생성
R2(config)#int lo2
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#exit

R2(config)#router ospf 1
R2(config-router)#redistribute connected subnets
// area45를 NSSA로 설정
R4(config)#router ospf 1
R4(config-router)#area 45 nssa default-information-originate

R5(config)#router ospf 1
R5(config-router)#area 45 nssa
// 확인
R5#sh ip ro
O*N2  0.0.0.0/0 [110/1] via 1.1.45.4, 00:00:34, Ethernet0/0.45

R4#sh ip ro ospf
O E2     2.2.2.0 [110/20] via 1.1.24.2, 00:01:58, Ethernet0/0.24
O N2     5.5.5.0 [110/20] via 1.1.45.5, 00:01:33, Ethernet0/0.45

R2#sh ip ro os
O E2     5.5.5.0 [110/20] via 1.1.24.4, 00:02:15, Ethernet0/0.24

R5에서는 외부 네트워크가 차단되고 디폴트 루트만 남았으며, NSSA 내부에서 재분배된 5.5.5.0은 N2로 표시되어 밖으로는 E2로 전달됩니다.

NSSA 완전 스텁 에어리어

다른 에어리어 네트워크까지 차단하면서 내부에 ASBR을 둘 수 있는 형태입니다.

// 설정
R4(config)#router ospf 1
R4(config-router)#no area 45 nssa
R4(config-router)#area 45 nssa no-summary

여기서 한 가지가 더 남습니다. R4에 외부 네트워크를 만들면 그것이 N2로 NSSA 내부에 광고됩니다.

// R4에 외부 네트워크 생성
R4(config)#int lo4
R4(config-if)#ip add 4.4.4.4 255.255.255.0
R4(config-if)#exit

R4(config)#router ospf 1
R4(config-router)#redistribute connected subnets
// R5에서 N2 확인
R5#sh ip ro os
O N2     4.4.4.0 [110/20] via 1.1.45.4, 00:00:22, Ethernet0/0.45

그런데 NSSA 완전 스텁 에어리어 내부의 라우터는 ABR이면서 ASBR인 R4에게서 다른 네트워크에 대해 광고를 받을 필요가 없습니다. 재분배 광고가 NSSA로 전달되는 것을 차단합니다.

// R4에서 재분배 광고가 nssa로 전달되는 것을 차단
R4(config)#router ospf 1
R4(config-router)#area 45 nssa no-redistribution
// 확인
R5#sh ip ro os
O*IA  0.0.0.0/0 [110/11] via 1.1.45.4, 00:00:11, Ethernet0/0.45

축약은 ABR과 ASBR에서만 가능하다

OSPF에서는 ABR과 ASBR에서만 축약할 수 있습니다. 자신의 에어리어 정보를 다른 에어리어로 축약할 때는 ABR에서, 외부에서 재분배된 정보를 축약하려면 ASBR에서 합니다. 축약하면 네트워크가 안정되고 성능이 향상됩니다.

내부 네트워크 축약

먼저 축약할 네트워크를 만듭니다.

// 축약을 위한 네트워크 설정
R5(config)#int lo50
R5(config-if)#ip add 1.1.50.5 255.255.255.0
R5(config-if)#ip add 1.1.51.5 255.255.255.0 sec

// 원래 lo 인터페이스 네트워크는 32비트로 광고되기 때문에
// point to point 네트워크로 설정해서 24비트로 광고되도록 함
R5(config-if)#ip ospf network point-to-point
R5(config-if)#exit

R5(config)#router ospf 1
// 두 개의 네트워크를 한 번에 ospf에 포함시키기 위함
// 축약이 되지는 않음
R5(config-router)#net 1.1.50.0 0.0.1.255 area 45

network 명령의 와일드카드 마스크는 두 네트워크를 한 번에 OSPF에 포함시킬 뿐 축약이 아니라는 점이 중요합니다. 실제 축약은 ABR인 R4에서 합니다.

// 내부 네트워크 축약
R4(config)#router ospf 1
R4(config-router)#area 45 range 1.1.50.0 255.255.254.0

외부 네트워크 축약

외부 네트워크는 ASBR에서 축약해야 합니다.

// 축약을 위한 외부 네트워크 생성
R5(config-if)#int lo5
R5(config-if)#ip add 5.5.50.5 255.255.255.0
R5(config-if)#ip add 5.5.51.5 255.255.255.0 sec
R5(config-if)#exit

R5(config)#router ospf 1
R5(config-router)#redistribute connected subnets
// 외부 네트워크 축약
R5(config)#router ospf 1
R5(config-router)#summary-address 5.5.50.0 255.255.254.0

일반 에어리어의 디폴트 루트

스텁 에어리어를 활용하면 디폴트 루트가 기본적으로 생성되지만, 스텁이 아닌 일반 에어리어에서는 직접 만들어야 합니다.

// 디폴트 루트 설정
R4(config)#ip route 0.0.0.0 0.0.0.0 1.1.45.5
R4(config)#ip route 0.0.0.0 0.0.0.0 1.1.54.5 220

R4(config)#router ospf 1
R4(config-router)#default-information originate

두 번째 정적 경로에 붙은 220은 AD 값으로, 첫 번째 경로가 살아 있는 동안에는 쓰이지 않는 백업 경로가 됩니다.

인증은 네이버 단위와 에어리어 단위로 나뉜다

OSPF 인증은 두 곳에서 설정합니다. 네이버 인증은 인터페이스 설정 모드에서, 에어리어 인증은 router 설정 모드(router ospf #)에서 합니다. 방식은 인증을 하지 않는 타입 0, 평문 인증인 타입 1, MD5 인증인 타입 2로 나뉩니다.

에어리어 인증

동일 에어리어 내에 속한 라우터가 패킷을 주고받을 때 인증합니다. 동일한 에어리어에 소속된 모든 라우터의 인증 방식은 동일해야 하지만, 인증키는 네이버 간에만 일치하면 됩니다.

// 에어리어 1 MD5 방식으로 인증하기
R1(config)#router ospf 1
R1(config-router)#area 1 authentication message-digest
R1(config-router)#exit

R1(config)#int e0/0.123
R1(config-subif)#ip ospf message-digest-key 1 md5 ICT

R2(config)#router ospf 1
R2(config-router)#area 1 authentication message-digest
R2(config-router)#exit

R2(config)#int e0/0.123
R2(config-subif)#ip ospf message-digest-key 1 md5 ICT

R3(config)#router ospf 1
R3(config-router)#area 1 authentication message-digest
R3(config-router)#exit

R3(config)#int e0/0.123
R3(config-subif)#ip ospf message-digest-key 1 md5 ICT
// 에어리어 0 평문 인증하기
R2(config)#router ospf 1
R2(config-router)#area 0 authentication
R2(config-router)#exit

R2(config)#int e0/0.24
R2(config-subif)#ip ospf authentication-key ICT

네이버 인증

// area 45의 R4-R5에서 네이버 인증하기
// 평문 인증
R4(config)#int e0/0.45
R4(config-subif)#ip ospf authentication
R4(config-subif)#ip ospf authentication-key ICT

R5(config)#int e0/0.45
R5(config-subif)#ip ospf authentication
R5(config-subif)#ip ospf authentication-key ICT
// md5 인증
R4(config-subif)#int s1/1
R4(config-if)#ip ospf authentication message-digest
R4(config-if)#ip ospf message-digest-key 1 md5 ICT

R5(config-subif)#int s1/1
R5(config-if)#ip ospf authentication message-digest
R5(config-if)#ip ospf message-digest-key 1 md5 ICT

MD5 방식에서는 인증 키 번호를 활용해, 기존 키를 바꾸는 대신 새 키를 먼저 지정한 후 기존 키를 제거하는 방식으로 키를 교체할 수 있습니다. 중간에 인증이 끊기지 않게 하기 위해서입니다. show run에 보이는 암호 값을 가리려면 service password-encryption을 사용합니다.

패시브 인터페이스

설정된 인터페이스로는 헬로 패킷을 보내지 않고, 헬로 패킷이 들어와도 무시합니다. router 설정 모드에서 지정합니다.

// 설정 예시
R5(config)#router ospf 1
R5(config-router)#passive-interface e0/1

가상 링크는 끊어진 백본 연결을 이어 붙인다

OSPF의 모든 에어리어는 반드시 백본 에어리어에 직접 연결되어 있어야 합니다. 그런데 특수한 상황에서 에어리어가 백본에서 분리되는 경우가 생깁니다. 이때 다른 에어리어를 거쳐 백본에 연결된 것처럼 작동시키는 기능이 가상 링크입니다.

 

먼저 테스트를 위해 NSSA 설정을 해제합니다.

// 가상 링크 테스트를 위한 환경 설정
R4(config)#router ospf 1
R4(config-router)#no area 45 nssa

R5(config)#router ospf 1
R5(config-router)#no area 45 nssa

가상 링크로 백본과 연결해 주는 중간 에어리어를 트랜짓(transit) 에어리어라고 합니다. NSSA는 트랜짓 에어리어가 될 수 없습니다. 그리고 가상 링크로 연결된 라우터는 백본 에어리어에 속한 것처럼 작동하므로, 인증 등의 기타 설정도 백본에 맞춰 주어야 합니다.

// 가상 링크 설정하기
R4(config)#router ospf 1
R4(config-router)#area 45 virtual-link 1.1.5.5

R5(config)#router ospf 1
R5(config-router)#area 45 virtual-link 1.1.4.4
R5(config-router)#area 0 authentication

R5에 area 0 authentication을 넣은 이유가 바로 그 성질 때문입니다. 백본에 속한 것처럼 동작하므로 백본의 인증 설정을 따라가야 합니다.

디맨드 서킷

디맨드 서킷은 헬로 패킷의 전송과 LSA 리프레시를 막는 기능입니다. 여기서 LSA 리프레시란 링크 상태 데이터베이스의 정확성을 유지하기 위해 30분마다 재전송하는 것을 말합니다.

 

동작은 네트워크 타입에 따라 다릅니다. 멀티액세스(브로드캐스트/논브로드캐스트) 모드에서는 디맨드 서킷을 적용해도 헬로 패킷은 전송하고 LSA 리프레시만 하지 않습니다. 포인트 투 계열에서는 헬로 패킷과 LSA 리프레시를 모두 하지 않습니다.

 

설정은 한쪽 인터페이스에서만 하면 상대도 자동으로 맞춰서 작동하며, 양쪽 모두 설정해도 문제는 없습니다.

// 디맨드 서킷 설정
R3(config)#int s1/0
R3(config-if)#ip ospf demand-circuit

R4#sh ip ospf int s1/0
...
Run as demand circuit
...

타이머는 네 종류를 조정한다

헬로와 데드 주기

// 헬로, 데드 주기 설정
R3(config)#int e0/0.123
R3(config-subif)#ip ospf hello-interval ?
<1-65535>  Seconds

R3(config-subif)#ip ospf dead-interval ?
<1-65535>  Seconds
minimal    Set to 1 second

데드 주기는 기본적으로 헬로 주기의 4배입니다. 그래서 헬로 주기를 변경하면 데드 주기가 자동으로 변경되지만, 데드 주기를 변경해도 헬로 주기는 변경되지 않습니다.

재전송 타이머

ACK 패킷을 받지 못했을 때 상대 라우터에게 재전송을 하는 시간입니다.

// 재전송 주기 설정
R3(config-subif)#ip ospf retransmit-interval ?
<1-65535>  Seconds

LSA 그룹 페이싱 타이머

30분마다 일어나는 LSA 리프레시와 관련된 타이머입니다. LSA 리프레시를 각각 하면 LSA 패킷 수가 많아지고, 반대로 모두 모아서 하면 순간적으로 과부하가 걸립니다. 그래서 일정 시간 안에 만료되는 LSA 리프레시만 모아서 시도하는데, 그 시간이 LSA 그룹 페이싱 타이머입니다. 기본값은 4분(240초)입니다.

// LSA 그룹 페이싱 타이머 변경
R3(config-router)#timers pacing lsa-group ?
<10-1800>  Interval in sec between group of LSA being refreshed or maxaged

링크 상태 데이터베이스가 크면 타이머 값을 줄이는 것이 좋고, 반대의 경우에는 늘리는 것이 좋습니다.

트로틀 타이머

LSA를 수신한 다음 SPF 알고리즘을 계산할 때까지의 시간입니다.

// 트로틀 타이머 설정
R3(config-router)#timers throttle spf ?
<1-600000>  Delay between receiving a change to SPF calculation in
milliseconds

R3(config-router)#timers throttle spf 1 ?
<1-600000>  Delay between first and second SPF calculation in milliseconds

R3(config-router)#timers throttle spf 1 2000 ?
<1-600000>  Maximum wait time in milliseconds for SPF calculations
// 트로틀 타이머 확인
R3(config-router)#do sh ip ospf
...
Initial SPF schedule delay 5000 msecs
Minimum hold time between two consecutive SPFs 10000 msecs
Maximum wait time between two consecutive SPFs 10000 msecs
반응형