OSPF(Open Shortest Path First)

윤정현·2024년 8월 13일

OSPF(Open Shortest Path First)

  • 링크 상태 라우팅 프로토콜(Link State Routing Protocol)

  • IP 패킷 프로토콜에서 프로토콜 넘버 89번 사용

  • 안정적이며 다양한 기능을 제공하는 IGP

장점

  • 네트워크 대역을 Area 단위로 나누므로 상세 라우팅 정보(LSA)가 다른 Area로 전송되지 않도록함 (큰 규모 대역에서의 안정적 운영)

  • Stub area라는 축약 기능으로 라우팅 테이블 크기를 감소시킬 수 있다.

  • EIGRP과 달리 OSPF는 표준이므로 모든 벤더사 호환 가능

테이블 생성 및 유지 과정

  • OSPF 라우터 간 Hello 패킷 송수신으로 Neighbor 및 Adjacent Neighbor 관계를 구성

  • OSPF 라우팅 정보를 교환하는 Neighbor를 Adjacent Neighbor라고한다.

  • Adjacent Neighbor끼리 라우팅 정보(LSA) 교환한다.

LSA(Link State Advertisement)

  • OSPF 5가지 패킷 중 패킷타입 2에 해당하는 Database

  • Description 패킷 안에 LSA 요약정보를 담아 상대에게 전송하며, 수신한 상대방이 자신이 소유한 LSA와 비교하여 자신이 없거나 업데이트해야 할 LSA정보라면 해당정보를 자신의 Link State Database에 저장

  • LSA 교환이 끝나면 SPF 혹은 Dijkstra 알고리즘으로 목적지까지 최적 경로를 계산해 이를 라우팅테이블에 저장

  • 이후 주기적으로 Hello 패킷을 송수신하여 각 라우터가 정상적으로 작동하고 있는지 인접라우터들에게 알림

  • 만약 네트워크 상대가 변하면 위 과정을 재반복하여 다시 라우팅테이블을 업데이트한다.

OSPF 패킷

OSPF가 동작하는데 사용하는 패킷은 5가지가 있다.

패킷 타입패킷 이름역할
1HelloNeighbor 구성 및 유지
2Database Description데이터베이스 내용 요약
3Link State Request데이터베이스 상세내용 요청
4Link State Update데이터베이스 업데이트
5Link State AckACK 전송

1. Hello 패킷

  • OSPF가 설정된 인터페이스를 통해 Hello패킷 송/수신하여 인접 라우터와 Neigbor 형성

  • 네이버로부터 일정기간 동안 핼로패킷 미수신시 해당 네이버를 down으로 간주하고 네이버를 해제한다.

  • 패킷 안에 정보는 아래와 같다.

(1) 라우터 ID

  • OSPF 도메인 내 유일한 값(즉, OSPF 라우터 구분 용도)

(2) Area ID

  • OSPF 설정 인터페이스가 소속된 OSPF 에어리어 번호 표시

(3) 암호

  • OSPF 라우팅 정보 송/수신시 인증(Authentication)을 하는 경우 사용

(4) 서브넷 마스크

  • 인터페이스 서브넷 마스크 표시

(5) Hello 주기

  • Hello패킷을 송/수신하는 주기

(기본값 : 브로드캐스트, P2P 10초 / 논브로드캐스트, P2P 30초)

(6) 스텁 에어리어 플래그(Flag)

  • 스텁 에어리어임을 표시하는 필드

(7) 라우터 우선순위

  • DR, BDR 선출시 사용하는 우선순위 표시 필드

(8) 데드 주기(Dead Interval)

  • 특정 기간동안 Hello패킷 수신 실패시 해당 네이버를 Down으로 간주하는 시간(Hello 주기 x 4)

    (기본값: 브로드캐스트, P2p 40초 / 논브로드캐스트, P2P 120초)

(9) DR(Designated Router)

  • OSPF 라우팅 정보 송/수신 중심 라우터인 DR의 라우터 ID 표시

(10) BDR(Backup DR

  • DR 다운시 DR 역할을 이어받을 BDR의 라우터 ID 표시

(11) 네이버 리스트

  • Hello 패킷을 송신한 라우터가 네이버라 여기는 라우터의 라우터 ID들이 표시

2. DDP(Database Description Packet)

  • OSPF 네트워크 정보를 LSA라 부르는데, OSPF는 자신이 만든 LSA 및 네이버로부터 수신한 LSA 모두 링크 상태 데이터베이스(LSD)라는 곳에 저장해 놓는다.

  • DDP는 OSPF 라우터의 링크 상태 데이터베이스에 있는 LSA들을 요약한 정보를 알려주는 패킷

  • OSPF 네이버 라우터 간에 LSA들을 교환하기 전에 자신의 링크 상태 데이터베이스 에 있는 LSA 목록을 상대 라우터에게 알려주기 위해 사용됨(DDP를 DBD패킷이라고도 한다)

  • 상대 라우터가 보낸 DDP를 본 후, 자신의 링크 상태 데이터베이스에 해당 DDP의 LSA목록이 없다면,

  • 그 해당 "LSA 명단"의 상세 내용인 LSA를 요청할 때 사용되는 패킷

( 'LSA목록' 은 말 그대로 LSA A, LSA B 처럼 이름 명단만 있는 것을 지칭하고, "LSA"는 목록명단 뿐만 아니라 그의 모든 상세 정보까지를 포함하는 것임)

  • 상대 라우터에게서 LSR 패킷을 수신하거나, 네트워크 상태가 변했을 경우 해당 라우팅 정보를 전송할 때 사용하는 패킷(즉, LSU는 LSA(네트워크 상세 정보))

  • OSPF 패킷을 정상적으로 수신했음을 상대에게 응답

(OSPF 는 DDP, LSR, LSU 패킷을 수신하려면 반드시 LS ACK 패킷을 사용해 상대에게 패킷을 정상적으로 수신했음을 알려야 함)

OSPF 동작 방식

  • OSPF는 Hello패킷을 이용해 인접 라우터와 네이버를 구성

  • 물리적으로 직접 연결된 라우터 중 Hello패킷을 수신하고, Hello패킷에 포함된 네이버리스트에 자신의 라우터 ID가 있다면 그 라우터를 네이버라 간주된다.

  • 이때, Hello패킷에 기록된 아래 5가지 정보가 동일해야 한다.

OSPF 네이버가 되기 위한 Hello패킷 내 동일내용 5가지

  1. Area ID

  2. 암호

  3. 서브넷 마스크 길이

  4. Hello/Dead 주기

  5. 스텁 에어리어 표

  1. 브로드캐스트 지원되는 멀티액세스 네트워크, 포인트 투 포인트 네트워크(이더넷)

-> 멀티캐스트 주소 224.0.0.5를 Hello패킷 목적지 IP 주소 지정

  1. 논브로드캐스트 네트워크

-> 유니캐스트(상대방 주소)로 Hello패킷 목적지 IP주소 지정

DR과 BDR

  • 멀티 액세스 네트워크에 접속된 모든 OSPF라우터끼리 N:N으로 LSA 교환시, 동일 네트워크에서 중복된 LSA 및 ACK이 많이 발생한다.

  • 이를 방지하기 위해 DR이 중계역할을 해줌

  • DR, BDR은 브로드캐스트 및 논브로드캐스트 네트워크에서만 사용

  • 포인트 투 포인트, 멀티 포인트 네트워크에서는 사용하지 않는다.

1) 인터페이스 OSPF 우선순위가 가장 높은 라우터가 DR, 다음순위는 BDR

2) OSPF 우선순위 동일시(기본 1) 라우터 ID가 높은 것이 DR

DR은 동일 서브넷으로 연결된 다른 라우터들과 반드시 물리적으로 직접 연결되어 있어야 한다.

DR은 멀티액세스 네트워크 당 하나씩 선출한다.

이렇게 DR, BDR이 선출된 후 라우터들은 DR 및 BDR 네이버와 라우팅 정보를 교환한다..

그러나 DROTHER 네이버끼리는 라우팅 정보를 교환하지 않는다.

DROTHER 라우터는 224.0.0.6(OSPF DR 주소)만 송신

DROTHER 라우터는 224.0.0.5(ALL OSPF 주소)만 수신가능

DROTHER 라우터는 224.0.0.6 으로 설정된 업데이트 패킷을 DR에게 보내면 DR은 이를 224.0.0.5로 없데이트 패킷을 다른 라우터에 중계

OSPF - AD

OSPF 라우팅 정보를 주고받는 네이버를 어드제이션트 네이버라 함

EIGRP는 네이버가 되면 라우팅 정보를 주고 받으므로 모든 EIGRP는 어드제이션트 네이버다.

그러나 OSPF는 네이버 중에서 어드제이션트 네이버가 되는 경우는 아래와 같다.

  1. DR과 다른 라우터

  2. BDR과 다른 라우터

  3. 포인트 투 포인트 네트워크로 연결된 두 라우터

  4. 포인트 투 멀티포인트 네트워크로 연결된 라우터

  5. 가상링크(Virtual Link)로 연결된 두 라우터

쉽게 말해서 OSPF 네이버 중 DROTHER 끼리만 어드제이션트 네이버가 되지 못하고 나머지는 모두 어드제이션트 네이버이다.

(# DROTHER라우터가 보낸 OSPF 라우팅 정보 패킷[Dst_IP 224.0.0.6]을 다른 DROTHER라우터가 수신할 수 없기 때문에, DROTHER끼리는 어드제이션트 네이버가 불가능)

R3에서 OSPF 인터페이스 확인하면 네이버가 2개이고(R3이 DR이니까 이 2개의 네이버와 모두 어드제이션트 네이버가 되어) 어드제이션트 네이버도 2개라 표시된다.

네이버와 어드제이션시 네이버 차이점

  • 네이버는 단순히 네이버간 Hello패킷을 주고 받기 위함이며 상태변화(데드주기동안 Hello패킷 미수신, 기타 장애로 인한 Down) 발생을 감지하기 위해 서로 맺은 관계를 말함

  • 어드제이션시 네이버는 위 네이버에서 Hello패킷 미수신이나 기타 내용 변경이 발생했을시 상태변화를 모든 라우터들에게 알려야 하는데 이를 위해 OSPF 네트워크 정보인 LSA를 효율적으로 중계해주기 위한 서로 간의 관계를 말함

#LSA는 해당 라우터의 OSPF 네트워크 정보를 가진 패킷을 말함(자신의 Link State Database라는 곳에 저장)

LSA에 대한 상세한 내용은 뒤에 나오는 LSA 타입과 링크 상태 데이터베이스간의 관계를 알아야 됨

OSPF - 상태 변화

  • OSPF가 설정된 인터페이스 네이버 상태는 네이버가 없는 Down에서 시작해 라우팅 정보 교환을 끝내 Full로 변한다.

DOWN

  • OSPF 설정 후 Hello패킷을 전송했지만 다른 라우터로부터 Hello 패킷을 수신못한 상태

  • Full 상태에서 데드주기 동안 OSPF 패킷(Hello, DDP, LSA, LSU, LSACK)을 수신못한 상태

Attempt

  • 논브로드캐스트 네트워크에서만 적용

  • OSPF설정모드에서 네이버 명령어를 사용해 지정한 네이버에게서 Hello패킷 수신못한 상태

  • 해당 네이버와 연결이 끊긴 상태

Init

  • 네이버에게 Hello패킷은 수신했으나 나의 Hello패킷을 상대 라우터가 수신못한 경우

  • 이 경우 상대방이 보낸 Hello패킷 네이버리스트에 나의 라우터 ID가 없을 것이다.

Two-Way

  • 상대 라우터의 Hello패킷에 나의 라우터 ID가 포함된 경우

  • 멀티 엑세스 네트워크(브로드캐스트/논브로드캐스트)는 이 단계에서 DR/BDR 선출

(Hello패킷안에 있는 라우터 우선순위 값 따짐)

  • DROTHER 라우터끼리는 라우팅 정보를 교환하지 않으므로, 즉 어드제이션시 네이버를 맺지 못하므로

네이버상태가 Two-way로 남게 된다.

그러나 DR/BDR 라우터들과는 다음단계인 Exstart로 넘어간다. 포인트 투 포인트 네트워크도 다음 상대로 진행된다.

Two-way에서 모든 네이버에게 DR/BDR 선출 기회를 부여하기 위해 Wait 만큼 무조건 기다려야 한다.

따라서, L3 스위치등으로 이루어진 OSPF네트워크에서는 OSPF 네트워크 타입을 Point-to-Point나 Point-to-multipoint 로 설정해 DR/BDR을 선출하지 않게 해야 이 시간동안 기다리지 않고 바로 라우팅 정보 교환한다.

Exstart

  • 어드제이션트 네이버가 되는 첫 단계

  • 마스터 라우터와 슬레이브 라우터를 선출(라우터 Priority는 기본 1이므로 모두 동일하지만, 라우터 ID가 높은 놈이 DR이 된다. => 이말은 즉, DR라우터가 MASTER라우터가 된다는 뜻[MASTER라우터는 라우터 ID가 높은 놈이 되므로 show ip ospf neighbor치면 직접연결된 동일 인터페이스에서 각 라우터 마다 확인가능])

(2Way상태에서 DR/BDR 선출 후 DBD를 서로 교환할 때 누가 먼저 줄 것인가?를 정하기 위함)

  • 다음 단계인 Exchange에서 DDP패킷교환시 사용하는 DDP 패킷 순서 번호를 결정

Exchange

  • DDP패킷을 수신한 라우터는 자신의 링크 상태 데이터베이스 내용과 비교 후, 자신에게 없거난 자신의 정보가 더 오래된 것이면 상대방에게 LSA상세정보를 요청하기 위해 링크 상태 요청 리스트에 기록한다.

  • 만약 기록할게 없다면 바로 FULL로 넘어간다.

Loading

  • 상대로부터 DDP수신 끝난 후, 링크 상태 요청 리스트에 기록해둔 것이 있다면, 링크 상태 요청 패킷을 보내 특정 LSA의 상세 정보를 보내줄 것을 요청한다.

  • LSR을 받은 라우터는 특정 LSA 전체정보를 LSU에 담아 전송

FULL

  • 어드제이션트 라우터들간 라우팅 정보교환이 끝난 상태

OSPF 메트릭

  • Cost라고도 부르며

출발 -> 목적지까지 각 인터페이스에서 기준 대역폭을 실제 대역폭으로 나눈 값의 합계

시스코 IOS 기준 OSPF 대역폭은 10^8

OSPF 에어리어

  • 에어리어가 하나일 때는 에어리어 번호를 아무거나 사용해도 되지만 2개 이상일 경우 그 중 하나는 반드시 에어리어 0이 있어야 한다.

  • 그리고, 다른 에어리어는 백본 에어리어와 물리적으로 직접 연결되어야 한다.

  • OSPF를 적절한 에어리어로 구분하여 구성하면 안정된 대규모 네트워크를 운영할 수 있다.

  1. OSPF 라우팅 정보를 LSA라 하며, 이중에 LSA 타입 1과 타입 2는 동일 에어리어 내부로만 전달된다.

즉, 에어리어가 다르면 이 2가지 LSA는 전달되지 않는다. 결과적으로 토폴로지 변화가 심한 불안정

네트워크라도 그 영향을 하나의 에어리어 내부에만 국한시킬 수 있다.

  1. 임의 라우터에 축양이 가능한 RIP, EIGRP와 달리 OSPF는 에어리어별로 축약 설정

따라서, 특정 에어리어에 소속된 네트워크를 축약함으로서 특정 에어리어의 네트워크 정보를 광고하는

LSA 타입 3의 전송을 최소화 할 수 있다. 결과적으로, 특정 에어리어에서 발생하는 토폴로지 변화가 다른

에어리어에 미치는 영향을 최소화 시킬 수 있다.

  1. 스텁 에어리어란 OSPF 외부 네트워크 또는 다른 에어리어의 라우팅 정보가 모두 차단되어 라우팅

테이블이 획기적으로 줄어든 에어리어를 말함.

네트워크 안정화 기능인 스텁 에어리어의 구성도 에어리어별 설정된다. OSPF 에어리어는 인터페이스로

설정된다.

OSPF 네트워크 타입

네트워크 타입NeighborDRHello/Dead 주기기본 인터페이스
브로드 캐스트Auto선출10 / 40이더넷
포인트 투 포인트Auto없음10 / 40포인트 투 포인트 서브인터페이스, HDLC, PPP
브로드 캐스트Auto없음30 / 120없음
논 브로드 캐스트지정선출30 / 120멀티포인트 서브인터페이스, 프레임릴레이, ATM, X25
  • 위처럼 인터페이스 종류에 따라 자동으로 OSPF 네트워크 타입이 결정된다.

그러나, 인터페이스 설정모드에서 ip ospf network 명령어를 사용하면 기본적인 네트워크 종류와 상관 없이 OSPF 네트워크 타입을 다른 것으로 변경시킬 수 있다.

다음 원칙을 지켜야 OSPF 어드제이션트 네이버가 구성되고, 라우팅 정보가 교환된다.

(Adjacency Neighbor란 OSPF 패킷(5가지)를 송수신하기 위한 Neighbor를 말함)

  1. OSPF 네트워크 타입이 달라도 네이버끼리 Hello와 데드주기는 반드시 같아야 한다.

서로 주기가 다르면 ip ospf network 명령어를 사용하거나, ip ospf hello-interval 명령어를 사용하며

Hello/Dead주기를 일치시켜야 한다.

  1. 네이버간 네트워크 타입이 모두 DR을 선출해야 하거나 모두 DR을 선출하지 않아야 한다.

예로, DR이 필요한 브로드캐스트 네트워크와 DR을 선출하지 않는 포인트 투 포인트 네트워크에 연결된

라우터끼리는 OSPF 라우팅 교환이 불가능하다.

하나는 브로드캐스트 - 하나는 논 브로드캐스트인 경우 둘 다 DR이 필요하므로, Hello, Dead 주기를 맞추어 주면 OSPF가 동작한다.

마찬가지로 포인트 투 포인트 네트워크와 포인트 투 멀티포인트 네트워크 네트워크는 모두 DR을 선출하지

않으므로, Hello/Dead주기를 일치시키면 역시 OSPF가 동작한다.

  1. 위 조건들을 만족시키면 네트워크 타입이 서로 달라도 OSPF가 동작한다.

그러나 바람직한 것은 서브인터페이스 타입을 조정하거나 ip ospf network 명령어로 네이버끼리 OSPF 네트워크 타입을 일치시키는 것

OSPF설정시 논브로드캐스트 네트워크외에는 자동으로 네이버를 맺음

즉, 논브로드캐스트 네트워크에서는 네이버를 지정해주어야 한다.

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

논브로드캐스트 네트워크에서 OSPF 설정 시 네이버를 지정해야 한다.

모든 라우터와 직접 연결된 라우터가 DR로 동작할 수 있도록 해야 한다.

여러종류 OSPF 타입 중 어느것을 사용하는 것이 좋은가?

  • 네이버가 2개 이상이거나 추후 네이버가 추가될 수 있으면 포인트 투 멀티포인트를 사용한다.

  • 네이버가 하나이면 포인트 투 포인트를 사용하는 것이 좋다

2가지 모두 네트워크 타입이 DR/BDR을 사용하지 않기 때문에 보다 빠른 장애복구가 가능하기 대문이다.

(DR/BDR 선출 불피요 하므로 wait타임 없이 two-way 상태에서 머무르게 된다.)

DR/BDR을 사용(네트워크 타입이 P-to-P/MP가 아닌 Broad/Non-Broad타입일 시)하면 Two-way 상태에서 wait 타임만큼 기다리기 때문에 장애복구 시간이 느리다.

OSPF 네트워크 타입이 포인트 투 멀티포인트면 Hello주기가 30초이므로 장애탐지시간이 느리다.

따라서, IP OSPF HELLO-INTERVAL 5로 Hello전송주기를 5초로 조정했다.

Hello 주기를 조정하면 자동으로 데드주기도 Hello주기 x4가 된다.

포인트 투 멀티포인트 네트워크에서는 각 인터페이스의 IP주소가 서브넷마스크 32비트인 호스트 루트로 광고된다.

하지만 실무에서는 여러개의 대역이 존재하기 때문에 DR/BDR이 필요한 BROADCAST 타입으로 OSPF 네트워크 타입을 사용한다.

OSPF 경로

네트워크 타입

코드

우선순위

내용

에어리어 내부 네트워크

O

1

동일 에어리어에 소속된 네트워크

다른 에어리어 네트워크

O I A

2

다른 에어리어에 소속된 네트워크

도메인 외부 네트워크

O E 1

3

변동 코스트 값을 가지는 외부 네트워크

P N 1

4

변동 코스트 값을 가지는 NSSA 외부 네트워크

O E 2

5

고정 코스트 값을 가지는 외부 네트워크

O N 2

6

고정 코스트 값을 가지는 NSSA 외부 네트워

COST가 100인 에어리어 내부 네트워크가 COST 20인 외부 네트워크 보다 우선한다. COST가낮은것이 BESTROUTE로 지정되지만 우선순위값이 이보다 BEST ROUTE선정하는데 있어서 우선임

#참고

동일목적지에 다수의 라우팅 프로토콜로 지정되어 있을 시 라우팅 프로토콜 별 AD값에 따른 경로도 까먹지 말자 (기존 OSPF로 경로 지정되어있을시 우선순위가 0인 경로인 CONNECTED로 동일 목적지가 새로 지정된다면 우선순위가 밀 OSPF 프토콜이 DOWN 된다.)

profile
System Engineer

0개의 댓글