OSPF(Open Shortest Path First)
OSPF
링크상태 라우팅 프로토콜에 기초하여, ,자치시스템(AS) 내부의 라우터들끼리 라우팅 정보를 교환하는 라우팅 프로토콜이다. 1980년대 중반에 RIP 라우팅 프로토콜이 대규모 이질적인 망간 라우팅에 비효율이여서 SPF 알고리즘에 기초하여 공개적으로 개발되었다.
OSPF 특징
1. Interior Gateway Protocol에 속한다.
- 동일 자치시스템(AS) 내에 있는 라우터끼리만 라우팅
2. Link State 기술에 의한 최단경로 선택 라우팅 알고리즘
- 최단 경로를 선택하기 위해 SPF 알고리즘을 사용
3. 빠른 재수렴 및 부분 갱신
- OSPF 라우터 각각이 전체 네트워크 토폴로지 정보를 갖으므로, 토폴로지 변화에 빠른 대처가능
- 네트워크가 안정되면 라우팅 갱신 정보만이 전달된다
(링크 상테의 변화시에만 라우팅 정보를 전송)
4. 라우팅 메트릭으로 링크 비용 사용
- 목적지까지의 최적 경로 선택을 위한 라우팅 메트릭으로는 Link cost 사용
5. 네트워크를 영역 단위로 나누어 구분 관리
- AS 내부에 영역 개념을 두어, 2-level에 의한 계층적 라우팅 구현
6. 라우터 인터페이스에 접속된 OSPF 네트워크 종류에 따라 동작 방식이 달라짐
7. VLSM(Variable Length Subnet Mask) alc CIDR(Classless InterDomain Routing) 지원
- Classless Routing
8. IP Protocol 89번을 사용한다.
9. 정보 교환은 DR -> DROther의 경우에는 멀티캐스트 224.0.0.5를 사용하고, DROther -> DR의 경우 에는 멀티캐스트 224.0.0.6 사용한다.
10. Stub이라는 축약 기능이 있는데 기존 라우팅 프로토콜과 달리 연속되지 않은 네트워크 주소를 사용해도 라우팅 테이블의 크기를 줄일 수 있다.
11. 다른 Area들은 항상 Backbone Area라고 부르는 Area 0과 물리적으로 직접 연결되어야 한다.
OSPF 라우터가 유지관리하는 테이블
1. Neighbor Table : 모든 인접 라우터들의 리스트 관리
2. Link State Database(LSDB) : 소속 망에 대한 Topology 관리 (LSA 패킷들로부터 구축됨)
3. Routing Table : LSDB이용하여 최적 경로 루트의 리스트 관리
OSPF 패킷 구성
IP 헤더
SHAPE \* MERGEFORMAT
OSPF 공통 헤더
SHAPE \* MERGEFORMAT
version(8비트) : 현재는 version 2사용
Type(8비트) : 전송되는 메세지의 종류를 다음과 같이 표시
- type 1 : Hello Packet
- type 2 : Database Description Packet
- type 3 : Link State Request Packet
- type 4 : Link State UPdate
- type 5 : Link State Acknowledgement
Lenght(16비트) : OSPF 헤더를 포함한 전체 길이
Router ID(32비트) :
- OSPF 패킷의 발신지가 되는 라우터를 식별하는 ID : 한 AS 내에서의 모든 OSPF 라우터는 32비트의 유일한 값을 갖도록 한다.
- 통상, 발신지 라우터 IP 주소 : 라우터 자신의 Local Loopback 주소를 많이 사용하며 여의치 않으면, 살아있는 인터페이스의 IP 주소 중 가장 숫자가 높은 것을 주로 사용
- RIP, EIGRP, BGP처럼 거리백터 라우팅 프로토콜들을 라우팅 정보 전송시에 목적지 네트워크, 라우팅 메트릭 값 만을 알려주는 것과 달리, OSPF에서는 목적지 네트워크, 라우팅 메트릭 값 이외에도 라우팅 정보를 만든 라우터 및 해당 라우팅 정보를 전송하는 라우터를 알려주므로 라우터 ID가 반드시 필요하게 된다.
Area ID(32비트) : OSPF 패킷을 생성, 발송하는 라우터가 속한 OSPF Area의 식별 ID
Checksum(16비트) : 16 bit CRC 뒤에 인증 관련 필드들을 제외한 나머지에 대해 체크섬 계산
(IP 패킷 체크섬 계산 방식과 유사함)
Authentication type(16비트) :
0 : No Authentication
1 : Simple Password Authenticatiom
2 : MD5
Authentication value(64비트) : 위 Authentication type에 따라 달라짐
OSPF 메세지 패킷의 5가지 종류
Hello Packet (type 1)
이웃 라우터의 발견, 인접관계 확립 및 유지
OSPF 라우터는 부팅시 이웃간 정보를 위해 Hello 프로토콜을 송출한다.
LSDB(Link State Database) 정보 유지관리
Database Description Packet (type 2)
회선이 멈추었을 때 또는 새로 발견된 OSPF 라우터의 정보 구축을 위해 사용
자신이 가지고 있는 Link State Database의 내용을 보냄
Link State Request Packet (type 3)
상대 라우터에게 링크 상태 정보 요구
Link State Update Packet (type 4)
각 라우터들은 정기적으로 또는 토폴로지 상에 변화가 생기면 인접 라우터에게 이 메세지를 송부
Link State Ackowledgement (type 5)
링크 상태 갱신 메세지를 받으면 그에 해당하는 링크 상태 승인 메세지를 보냄, LSA의 플러딩을 신뢰성 있게 만드는데 사용
OSPF 패킷 특징
주로 다음과 같은 멀티캐스트 IP 주소를 사용
224.0.0.5(AllSPFRouters) : OSPF를 지원하는 모든 라우터
224.0.0.6(AllDRouters) : DR과 BDR에게
전달 범위 : TTL을 1로 설정하여 멀티캐스트 패킷이 이웃라우터를 넘어서 전달되지 않게 함
TOS : 110 - OSPF 패킷은 일반 Best-effort 패킷 보다 더 우선시 처리되어야 함
OSPF 네트워크 타입 구분
공식적인 구분
Point-to-Potint Network
단 두 대의 라우터 만이 존재하며, 서로 일대일 통신을 함
상대 목적지 IP주소 : 224.0.0.5를 사용함
직렬 시리얼 인터페이스와 같은 WAN링크(HDLC,PPP,SONET/SDH 등)
Broadcast Multi-Acess Network
2개 이상의 라우터가 하나의 네트워크/링크에 공존하며, Broadcast 및 Multicast특징을 제공함
이더넷(하나의 이더넷 스위치에 여러 OSPF 라우터가 접속되어 있는 구조)
Non-Broadcast Multi-Access Network
2개 이상의 라우터가 하나의 네트워크에 공존하지만, Broadcast 특징을 제공 안함
X.25, ATM, 일반 프레임 릴레이
NBMA, BMA는 DR/BDR 선출이 있게 됨
비공식적으로 시스코사에서 추가
Point-to-Multipoint Network
Point-to-Point Network의 특수한 경우로써, 여러 Point-to-Point Network들이 합쳐진 형태로 PTP와 동일한 동작
멀티 포인트 Frame-relay
Virtual Network
백본에 물리적으로 직접 연결되지 않고, 다른 영역을 경유하는 경우
Point-to-Point Network의 특별한 경우로써 취급
Loopback Network
OSPF Mode | 권장 NBMA Topology |
Subnet Address |
Hello Timer |
Adjacency | RFC or Cisco |
인터페이스 |
Broadcast | 전체 메시 형 | 동일 |
10초 | 자동 감지 DR/BDR 선출 필요 |
CISCO | 이더넷 |
Nonbroadcast(NBMA) | 전체 메시 형 | 동일 |
30초 | 수동설정 DR/BDR |
RFC | 프레임릴레이 X.25 ATM |
Point-to-Multipoint | 부분 메시형 또는 스타 형 | 동일 |
30초 | 자동 감지 DR/BDR 선출 불필요 |
RFC | |
Point-to-multipoint Nonbroadcast |
부분 메시형 또는 스타형 | 동일 |
30초 | 수동 설정 DR/BDR 선출 불필요 |
CISCO | |
Point-to-point | 부분 메시형 또는 서브인터페이스를 이용한 스타형 | 서브인터페이스 마다 하나의 서브넷을 가짐 | 10초 | 자동 감지 DR/BDR |
CISCO | 전용회선 (PPP,HDLC) |
OSPF Neighbor States
Down : active router가 감지되지 않은 상태
INIT : Hello Packet을 수신한 상태
Two-way : 수신한 Hello Packet내에 자신의 RouterID가 존재함을 확인한 상태
Exstart : master와 slave 라우터를 선출
Exchage : DBD(Database Description) Packet을 전달
Loading : LSR과 LSU를 교환
Full : Neighbor와 Fully Adjacent관계를 형성
LSA(Link State Advertisement)
OSPF에서 라우팅 기초 정보가 담겨진 패킷 형태의 단위 정보의 광고, 이 패킷 형태의 단위 정보는 주로 LSU패킷, DDP 패킷에 실려서 전달이 된다.
여기서 라우팅 기초정보는 OSPF 링크 상태 정보이다. OSPF 라우터에 연결된 링크들의 링크 상태 관련 정보, 인접관계 형성, 요약 정보등 다양한 링크 상태에 대한 정보를 가지고 있다. 이 정보는 주로 해당 네트워크/링크의 경로 비용과 관련된 정보를 나타냄
LSA 패킷
각 라우터는 LSA 정보를 모든 라우터에게 Flooding 방식으로 광고 함으로써, 다른 라우터들과 서로 정보를 교환하게 된다. 그러한 광고성 패킷을 LSA라고 하고 이는 네트워크 정보의 일치를 위해 통상 30분 마다 발생된다.
LSA 헤더
LS age(16비트) : LS 패킷 생성 시에 0으로 셋팅되고, 이후 초 단위의 경과시간
LSA가 Flooding되면서 또하 ㄴLSD에서 유지되는 동안 계속 경과시간이 증가함
만일 동일 LS sequence number이나 다른 LS age를 갖는 여러 LSA가 함께 도착하면, 이들의 시간 차이가 MasAgeDiff 이내에 있으면 그 네트워크가 정상적이라 간주하고 원래 유지하던 정보를 유지한다. 이때 Flooding은 하지도 않는다. 하지만 MasAgeDiff 범위를 벗어나면 네트워크 이상이라 간주하고, 가장 나이 어린 시간으로 자신의 LSD를 갱신하고 재빨리 Flooding한다.
주기적인 LSA 유효성 검증/갱신 메커니즘
MaxAge : 1시간
LSD 내 어떤 LSA가 어떤 이유로 해서든지 MaxAge 만큼 지나면 자동 삭제되고 이웃라우터들에 이를 Flooding한다.
LSRrefreshTime : 30분
MaxAge가 오기전에, LSRefreshTime 주기로 LSA에 대한 새 정보를 Flooding 함
Options(8비트)
LS type(8비트)
1 : Router link LSA(라우터와 연결된 링크)
2 : Network link LSA(네트워크에 연결된 링크)
3 : Network Summary link LSA(영역 구분된 네트워크 요약 정보)
4 : ASBR Summary link LSA(Autoomous System Border Router)
5 : AS External LSA (AS 외부로 가는 링크)
6 : Group Membership LSA
7 : NSSA (Not-So-Stubby-Area)
8 : External Attibute LSA
Link State ID(32비트)
OSPF 링크의 식별 : LS type에 따라 다른 의미로 사용 주로, 라우터에 연결된 링크 또는 네트워크 IP 주소를 사용함
Advertising Router ID(32비트)
LSA를 생성한 라우터의 라우터 ID
LS Sequence Number(32비트)
중복 LSA 등을 찾기위한 순서번호
LS Checksum(16비트)
length(16비트)
LSA 헤더(20 바이트)를 포함한 총 LSA의 길이
Flooding 방식에 따라 LSA 중복전달 문제점 해결방법
Sequence Number 사용
Age 방식 사용
Maxage Prematuring Age 방식 사용 등
LSA Types
LSA type | Description |
1 | Router LSAs(라우터 링크 광고) |
2 | Network LSAs(네트워크 링크 광고) |
3 or 4 | Summary LSAs(요약 링크 광고) |
5 | Autonomous system external LSAs (AS 외부 링크 광고) |
6 | Multicast OSPF LSA(Cisco에서 지원하지 않음) |
7 | Defined for not-so-stubby areas(NSSA) |
8 | External attributes LSA for Broder GW Protocol (BGP) |
9,10,11 | Opaque LSAs((미 지정 LSA) |
라우터 링크 LSA 패킷 구조 (LS type 1)
링크의 수 : 수록된 링크 정보 갯수를 말한다.
Link ID : Link type에 따라 달라짐
Link Data : Link type에 따라 달라진다.
Link type
1 : Point to Point Link
2 : Link to Transit Network
3 : Link to Stub Network
4 : Virtual Link
TOS 갯 수 : 각 링크에 알려진 TOS(서비스 유형)의 갯 수를 나타냄
TOS란 IP 패킷 헤더 내 `서비스 유형` 및 `혼잡 알림`을 나타내는 8 비트 필드
Metric : 이 라우터 링크에 대한 링크 비용을 의미한다. 1 ~ 165535까지의 값을 가진다
하나의 라우터는 자신의 영역 안의 모든 라우터에게 LSA 1을 Flooding한다.
Type 1의 LSA는 라우터에 직접 연결된 링크의 상태 정보를 포함한다.
LSA는 각 링크마다 링크 ID로 표현되는 어드레스와 마스크 정보를 나타낸다.
Router ID는 유형 1의 개별적인 LSA를 식별하는데 이용된다.
Flooding은 자신의 Area로 한정된다.
Network Link LSA (LS type 2)
네트워크 링크들을 알린다.
DR이 만들어내며, 동일 영역 내의 모든 라우터에게 이를 전달하게 된다.
현재의 DR 관련 서브넷 마스크를 알려줌, 현재의 DR과 연결된 라우터들의 라우터 ID를 알려준다.
중계 네트워크 링크의 DR은 네트워크 LSA를 광고해야 하는 책임이 있다.
Flooding은 자신의 Area로 한정된다.
시스코 라우터 타입2 LSA 내용을 보는 명령어 : show ip ospf database network
Network Summary Link LSA (LS type 3)
지역 경계 라우터(ASBR)가 지역 밖에 있는 다른 네트워크의 존재를 알림
ASBR이 만들어내며, 타 영역 네트워크를 현재의 영역 내 라우터에게 알려줌
기본적으로 OSPF는 연속적인 서브넷을 자동 요약하거나 Classful 경계라고 해서 네트워크 주소를 요약하지는 않는다. 네트워크 운영자는 어떻게 요약할 것인지를 명령어를 이용하여 반드시 수동으로 설정해야 한다.
시스코 라우터 타입3 LSA 내용을 보는 명령어 : show ip ospf database summary
ASBR Summary Link LSA(Autonomous System Border Router (LS type 4)
Type 4 요약 LSA는 영역안에 ASBR이 존재할 경우에만 사용된다. Type 4 LSA는 모든 ASBR을 식별하며, 이에 대한 도달 경로 정보를 제공한다.
외무 AS로 향하는 모든 트래픽을 위해서 외부 경로 정보의 제공자인 ASBR에 대한 정보가 라우팅 테이블에 존재해야 한다.
ASBR은 자신이 ASBR임을 식별 하는 비트를 Type 1인 Router LSA로 전달하고 ABR은 유형 1 LSA를 수신하고, 유형 4 LSA를 생성한 후 영역 0인 백본 영역으로 Flooding한다.
시스코 라우터) 타입4 LSA 내용을 보는 명령어 : show ip ospf database asbr-summary
AS External LSA (LS type 5)
Type 5 외부 LSA는 OSPF AS의 외부 영역으로 향하는 경로 정보를 표현한다.
Type 5 외부 LSA는 ASBR에서 발생하며, 전체 AS 안으로 Flooding 된다.
외부 LSA는 Flooding 범위와 외부 네트워크 정보 크기에 따라 달라지기 때문에 경로 정보를 요약하지 않을 경우 문제가 야기될 수 있다.
라우팅 테이블, 요약 및 Default Routing 처리
NSSA (Not-So-Stuuby-Area) (LS type 7)
Type 7 NSSA 외부 LSA는 NSSA를 통해 OSPF AS의 외부 영역으로 향하는 경로를 표현한다.
Type 5 외부 LSA와 같은 형태를 가진다.
ASBR이 생성하고 광고한다.
Type 7로 광고된 LSA는 그 다음 ABR이후부터는 Type 5로 변경되어 광고된다.
기본적으로 경로 축약은 하지 않는다.
Interpreting the Routing table : Types of Routes
Router Designator | Description | |
O | OSPF 영역 내부 (Router LSA) |
라우터의 영역 안에서 생성된 네트워크 정보 Router LSA를 통해 광고 |
O IA | OSPF inter-area(영역 사이) (summary LSA) |
라우터의 영역 밖에서 생성된 네트워크지만 OSPF AS 안의 네트워크 정보 Summary LSA를 통해 광고 |
O E1 | Type 1 external routes | 라우터의 AS 밖의 네트워크 정보 외부 LSA를 통해 광고 |
O E2 | Type 2 external routes |
E1 - 하나의 이상의 ASBR이 최적화되지 않는 라우팅을 피하기 위하여 동일한 AS로 향하는 외부 경로를 광고 할 때 사용된다.
E2(기본) - 단일 ASBR이 외부 경로 정보를 AS로 광고 할 때 사용된다.
Summariztion
Network들은 일반적으로 Type 3 LSAs를 이용하여 다른 Area로 전달된다.
경로 축약은 광고 되는 주소를 합하여 전달하는 과정이다.
ABR은 type 3 LSAs를 summarize
ASBR은 type 5 LSAs를 summarize
Summariztion 장점
라우팅 테이블을 줄이고, 네트워크의 안정성을 높이며, 불필요한 LSA Flooding을 줄인다.
LSA Type3과 Type5 flooding을 감소 시킨다. CPU, 메모리 자원 등에 직접적으로 영향을 미친다.
Router(config-router)#
area area-id range address mask [advertise | not-advertise] cost cost |
ABR에서 Type 3번 축약
Router(config-router)#
Summary-address ip-address mask [not-advertise] tag tag |
ASBR에서 Type 5번 축약
OSPF Area types and Structure
OSPF는 두가지 레벨의 계층적 구조를 가진 Area에 기반한다
각 영역(Area)은 각 라우터의 Topology Database에 해당 구조를 가지고 있다.
Area Type
Backbone Area | 모든 Area에 연결되어 있다 |
Normal Area | 내부와 외부 경로 정보를 모두 가지고 있다 |
Stub Area | 내부정보와 영역 경로 정보만 가지고 있다. 외부 정보는 가지고 있지 않다. |
Totally stubby area | 영역 정보 경로만 포함한다. Cisco 독자적인 영역이다. |
Not-so-stubby area | 같은 영역 정보와 외부정보만 포함한다. |
ABR은 Summary LSA를 생성한다.
ASBR은 External LSA를 생성한다.
Summary와 External LSA는 default 경로를 전달함으로써 차단할 수 있다.
Stub and Totally Stub Area가 될 수 없는 환경
1. Backbone Area
2. Virtual-link가 있는 Area
3. ASBR이 있는 Area (NSSA stub으로 대체)
Stub Areas
이 영역은 AS로 향하는 외부 경로에 대한 정보를 받아들이지 않는다.
라우터에서 AS외부로 향하는 네트워크에 대한 경로가 필요할 경우 0.0.0.0으로 명시되는 기본 경로를 이용한다.
Stub영역이 ASBR을 포함해서는 안된다.
R2(config-router)#
area 2 stub |
stub area networking을 활성화
stub area내에 있는 모든 router는 stub 명령어를 사용
Totally Stubby Areas
이 영역은 외부 AS경로나 다른 영역 내부에서 AS로 향하는 요약 경로도 받아들이지 않는다
AS외부로 향하는 네트워크로 패킷을 전송할 경우에는 기본 경로를 이용하여 패킷을 전송한다.
Tootally Stub Area는 ASBR을 포함하면 안된다.
Not-So-Stubby Areas(NSSAs)
1. NSSA는 Stub area 규칙을 따르지 않는다.
2. NSAA는 내부에 ASBR(R1)를 포함한다.
3. LSA type 7은 ASBR이 전달한다.
4. ABR (R2)은 LSA type 7를 LSA type 5로 변환해서 전달한다.
5. ABR은 다른 ASBR로부터 전달된 외부 경로를 대신해서 NSSA 내부로 default route를 전달한다.
6. NSSA는 RFC 부록에 정의 되어있다.
R3(config-router)#
area 2 nssa |
Area의 모든 internal-router에서 입력
ABR(config-router)#
area 2 nssa default-information-originate (라우팅 테이블에 기본 경로가 없는 다른 라우터에 알리지 않는다) |
ABR에서 Totally NSSA Area로 설정
실습
논리 구성도
물리 구성도
FR-SW
R1 routing table
R1 ospf neighbor는 NBMA환경이여서 수동으로 맺어준다
R1 ospf database
R2 routing table
R2 ospf neighbor는 NBMA환경이여서 R1과 수동으로 맺어준다, R2와 R3는 PTP환경이여서 neighbor를 잘 맺는다
R2 ospf database
R3 routing table
R3 ospf neighbor DR/BDR 선출 프로세스 맞춰주고 hello-interval을 맞춰줘야 한다.
R3 ospf database
R4 routing table
R4 ospf neighbor DR/BDR 선출 프로세스 맞춰주고 hello-interval을 맞춰줘야 한다.
R4 ospf database
R1, R2 stub 설정하기
R1 ospf database
R3, R4
area 4번을 stub nssa 설정 만들기
R3 routing table
R4 routing table
R3 ospf database
R4 ospf database
R4 4.4.x.x대역 축약하기
R3에서 확인하기