
링크 상태 라우팅 프로토콜(Link State Routing Protocol)
IP 패킷 프로토콜에서 프로토콜 넘버 89번 사용
안정적이며 다양한 기능을 제공하는 IGP
네트워크 대역을 Area 단위로 나누므로 상세 라우팅 정보(LSA)가 다른 Area로 전송되지 않도록함 (큰 규모 대역에서의 안정적 운영)
Stub area라는 축약 기능으로 라우팅 테이블 크기를 감소시킬 수 있다.
OSPF 라우터 간 Hello 패킷 송수신으로 Neighbor 및 Adjacent Neighbor 관계를 구성
OSPF 라우팅 정보를 교환하는 Neighbor를 Adjacent Neighbor라고한다.
Adjacent Neighbor끼리 라우팅 정보(LSA) 교환한다.
OSPF 5가지 패킷 중 패킷타입 2에 해당하는 Database
Description 패킷 안에 LSA 요약정보를 담아 상대에게 전송하며, 수신한 상대방이 자신이 소유한 LSA와 비교하여 자신이 없거나 업데이트해야 할 LSA정보라면 해당정보를 자신의 Link State Database에 저장
LSA 교환이 끝나면 SPF 혹은 Dijkstra 알고리즘으로 목적지까지 최적 경로를 계산해 이를 라우팅테이블에 저장
이후 주기적으로 Hello 패킷을 송수신하여 각 라우터가 정상적으로 작동하고 있는지 인접라우터들에게 알림
만약 네트워크 상대가 변하면 위 과정을 재반복하여 다시 라우팅테이블을 업데이트한다.
OSPF가 동작하는데 사용하는 패킷은 5가지가 있다.
| 패킷 타입 | 패킷 이름 | 역할 |
|---|---|---|
| 1 | Hello | Neighbor 구성 및 유지 |
| 2 | Database Description | 데이터베이스 내용 요약 |
| 3 | Link State Request | 데이터베이스 상세내용 요청 |
| 4 | Link State Update | 데이터베이스 업데이트 |
| 5 | Link State Ack | ACK 전송 |
OSPF가 설정된 인터페이스를 통해 Hello패킷 송/수신하여 인접 라우터와 Neigbor 형성
네이버로부터 일정기간 동안 핼로패킷 미수신시 해당 네이버를 down으로 간주하고 네이버를 해제한다.
패킷 안에 정보는 아래와 같다.
(1) 라우터 ID
(2) Area ID
(3) 암호
(4) 서브넷 마스크
(5) Hello 주기
(기본값 : 브로드캐스트, P2P 10초 / 논브로드캐스트, P2P 30초)
(6) 스텁 에어리어 플래그(Flag)
(7) 라우터 우선순위
(8) 데드 주기(Dead Interval)
특정 기간동안 Hello패킷 수신 실패시 해당 네이버를 Down으로 간주하는 시간(Hello 주기 x 4)
(기본값: 브로드캐스트, P2p 40초 / 논브로드캐스트, P2P 120초)
(9) DR(Designated Router)
(10) BDR(Backup DR
(11) 네이버 리스트
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"는 목록명단 뿐만 아니라 그의 모든 상세 정보까지를 포함하는 것임)
(OSPF 는 DDP, LSR, LSU 패킷을 수신하려면 반드시 LS ACK 패킷을 사용해 상대에게 패킷을 정상적으로 수신했음을 알려야 함)
OSPF는 Hello패킷을 이용해 인접 라우터와 네이버를 구성
물리적으로 직접 연결된 라우터 중 Hello패킷을 수신하고, Hello패킷에 포함된 네이버리스트에 자신의 라우터 ID가 있다면 그 라우터를 네이버라 간주된다.
이때, Hello패킷에 기록된 아래 5가지 정보가 동일해야 한다.
Area ID
암호
서브넷 마스크 길이
Hello/Dead 주기
스텁 에어리어 표
-> 멀티캐스트 주소 224.0.0.5를 Hello패킷 목적지 IP 주소 지정
-> 유니캐스트(상대방 주소)로 Hello패킷 목적지 IP주소 지정
멀티 액세스 네트워크에 접속된 모든 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 라우팅 정보를 주고받는 네이버를 어드제이션트 네이버라 함
EIGRP는 네이버가 되면 라우팅 정보를 주고 받으므로 모든 EIGRP는 어드제이션트 네이버다.
그러나 OSPF는 네이버 중에서 어드제이션트 네이버가 되는 경우는 아래와 같다.
DR과 다른 라우터
BDR과 다른 라우터
포인트 투 포인트 네트워크로 연결된 두 라우터
포인트 투 멀티포인트 네트워크로 연결된 라우터
가상링크(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 타입과 링크 상태 데이터베이스간의 관계를 알아야 됨
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패킷안에 있는 라우터 우선순위 값 따짐)
네이버상태가 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패킷을 수신한 라우터는 자신의 링크 상태 데이터베이스 내용과 비교 후, 자신에게 없거난 자신의 정보가 더 오래된 것이면 상대방에게 LSA상세정보를 요청하기 위해 링크 상태 요청 리스트에 기록한다.
만약 기록할게 없다면 바로 FULL로 넘어간다.
Loading
상대로부터 DDP수신 끝난 후, 링크 상태 요청 리스트에 기록해둔 것이 있다면, 링크 상태 요청 패킷을 보내 특정 LSA의 상세 정보를 보내줄 것을 요청한다.
LSR을 받은 라우터는 특정 LSA 전체정보를 LSU에 담아 전송
FULL
출발 -> 목적지까지 각 인터페이스에서 기준 대역폭을 실제 대역폭으로 나눈 값의 합계
시스코 IOS 기준 OSPF 대역폭은 10^8
즉, 에어리어가 다르면 이 2가지 LSA는 전달되지 않는다. 결과적으로 토폴로지 변화가 심한 불안정
네트워크라도 그 영향을 하나의 에어리어 내부에만 국한시킬 수 있다.
따라서, 특정 에어리어에 소속된 네트워크를 축약함으로서 특정 에어리어의 네트워크 정보를 광고하는
LSA 타입 3의 전송을 최소화 할 수 있다. 결과적으로, 특정 에어리어에서 발생하는 토폴로지 변화가 다른
에어리어에 미치는 영향을 최소화 시킬 수 있다.
테이블이 획기적으로 줄어든 에어리어를 말함.
네트워크 안정화 기능인 스텁 에어리어의 구성도 에어리어별 설정된다. OSPF 에어리어는 인터페이스로
설정된다.
| 네트워크 타입 | Neighbor | DR | Hello/Dead 주기 | 기본 인터페이스 |
|---|---|---|---|---|
| 브로드 캐스트 | Auto | 선출 | 10 / 40 | 이더넷 |
| 포인트 투 포인트 | Auto | 없음 | 10 / 40 | 포인트 투 포인트 서브인터페이스, HDLC, PPP |
| 브로드 캐스트 | Auto | 없음 | 30 / 120 | 없음 |
| 논 브로드 캐스트 | 지정 | 선출 | 30 / 120 | 멀티포인트 서브인터페이스, 프레임릴레이, ATM, X25 |
그러나, 인터페이스 설정모드에서 ip ospf network 명령어를 사용하면 기본적인 네트워크 종류와 상관 없이 OSPF 네트워크 타입을 다른 것으로 변경시킬 수 있다.
다음 원칙을 지켜야 OSPF 어드제이션트 네이버가 구성되고, 라우팅 정보가 교환된다.
(Adjacency Neighbor란 OSPF 패킷(5가지)를 송수신하기 위한 Neighbor를 말함)
서로 주기가 다르면 ip ospf network 명령어를 사용하거나, ip ospf hello-interval 명령어를 사용하며
Hello/Dead주기를 일치시켜야 한다.
예로, DR이 필요한 브로드캐스트 네트워크와 DR을 선출하지 않는 포인트 투 포인트 네트워크에 연결된
라우터끼리는 OSPF 라우팅 교환이 불가능하다.
하나는 브로드캐스트 - 하나는 논 브로드캐스트인 경우 둘 다 DR이 필요하므로, Hello, Dead 주기를 맞추어 주면 OSPF가 동작한다.
마찬가지로 포인트 투 포인트 네트워크와 포인트 투 멀티포인트 네트워크 네트워크는 모두 DR을 선출하지
않으므로, Hello/Dead주기를 일치시키면 역시 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 된다.)