본문

OSPF의 소개와 메시지 패킷구조



Open Shortest Path First(OSPF)는 IETF(Internet Engineering Task Force)에서 RIP의 여러 한계를 극복하기 위한 표준 Interior Gateway Protocol(IGP)로서 개발되었다. Dijsktra의 Shortest Path First(SPF)알고리즘을 기반으로 한 링크 상태 라우팅 프로토콜(Link-state Protocol)이고 단일 Autonomous System(AS, 라우터들의 집합)에서 운영되는 대표적인 라우팅 프로토콜이다. 각 OSPF 라우터는 내부 AS 토폴로지 정보를 관리하는 데이터베이스를 유지하며, 이 데이터베이스로부터 최단 거리를 구성하도록 라우팅 테이블을 생성한다. OSPFv1은 RFC1131에, 현재 사용되는 버전2는 RFC1247에 이어(updated) RFC2328에 기술되어 있다. (참고로 IPv6을 위해 OSPFv3은 RFC2740에 정의되어 있다)


장점으로, 대규모의 안정된 네트워크를 운영할 수 있으며. 이는 네트워크가 Area 단위로 구성되기 때문에 특정 Area에서 발생하는 라우팅 정보발생이 다른쪽으로 전송되지 않기 때문이다(영향의 국소화). 또한 stub area으로 축약함으로서 연속되지 않은 IP주소를 사용하는 네트워크라도 라우팅 테이블의 크기를 획기적으로 감소시킬 수 있다.


* Area : 동일한 토폴로지 데이터베이스를 갖는 라우터들의 집합. OSPF는 하나의 AS를 다중 Link-state 도메인으로 분리하는데 Area를 사용한다. 각 Area는 서로 분리되어 Flooding이 분리되지 않아 라우팅 트래픽을 크게 감소시킨다. (계층적인 특징)


OSPF가 라우팅 테이블을 만들고 유지하는 과정

1) OSPF가 설정된 라우터간에 헬로 패킷을 주고받아 이웃(neighbor)및 인접이웃(adjacent neighbor) 관계를 구성한다. 다른 라우팅 프로토콜과는 달리, 모든 이웃과 라우팅 정보를 교환하는 것은 아니며, 라우팅 정보를 교환하는 이웃을 인접이웃이라 한다.

2) OSPF에서는 라우팅 정보를 Link-state Advertisement(LSA)라고 한다. [LSA는 라우터의 인터페이스 상태 및 인접관계를 형성하는 상태에 관한 정보를 포함하며, 네트워크를 통해 플러딩 된다. 도메인에 있는 각 라우터에서 보낸 LSA의 정보는 라우터의 토폴로지 데이터베이스를 형성하는데 사용되며, 이 정보로부터 각 목적지까지의 최단 거리를 계산할 수 있다.] 각 라우터들은 전송받은 LSA를 Link-state Database에 저장한다.

3) LSA 교환이 끝나면 이를 근거로 Shortest Path First(SPF)알고리즘을 사용하여 각 목적지까지의 최적 경로를 계산하고 이를 라우팅 테이블에 저장한다.

4) 이후 주기적으로 헬로 패킷을 전송하여 각 라우터가 정상적으로 동작하고 있음을 인접 라우터에게 알린다.

5) 만약 네트워크의 상태가 변하면 위의 과정을 반복하여 다시 라우팅 테이블을 만든다.


OSPF 패킷의 종류

 패킷타입

 패킷 이름  설명
 1  Hello

 이웃 라우터를 발견(discover)하고 adjacency 정보를 유지

 2  Database Description(DBD)

 OSPF 라우터간의 link-state 데이터베이스의 내용을 확인

 3  Link-state Request(LSR)  라우터의 link-state 데이터베이스의 특정 부분을 요청
 4

 Link-state Update(LSU)

 요청된 LSA를 이웃 라우터들에게 전송(업데이트)

 5

 Link-state Acknowledgement(LSAck)

 다른 패킷타입들에 대해 응답확인(Ack)


1. Hello Packet

OSPF 라우터들이 LSA를 보내기 전에 이웃들을 발견하고 인접을 형성해야만 하므로, 이를 위해 이웃을 형성하고 유지하는데 사용되는 패킷이다. 224.0.0.5 멀티캐스트 주소를 사용하여 OSPF가 설정된 인터페이스를 통해 송수신함으로서 인접 라우터와 이웃 관계를 형성한다. 또, 네이버 라우터에게서 일정 시간동안 헬로 패킷을 수신하지 못하면 해당 이웃이 다운된 것으로 간주하여 이웃 관계를 해제한다.


2. Database Description Packet(DBD / DDP)

OSPF의 네트워크 정보를 Link State Advertisement(LSA)라고 부르는데, 자신이 만든 LSA및 네이버에게서 수신한 LSA를 모두 링크상태 데이터베이스(link-state database)에 저장한다. DDP는 OSPF 라우터의 링크 상태 데이터베이스에 있는 LSA들을 요약한 정보를 알려주는 패킷이다. OSPF 이웃 라우터간에 LSA들을 교환하기 전에 자신의 링크상태 데이터베이스에 있는 LSA 목록을 상대 라우터에게 알려주기 위해 사용한다.


3. Link-State Request(LSR) Packet

상대 라우터가 보낸 DDP를 보고 자신에게 없는 네트워크정보(LSA)가 있으면 상세한 내용(LSA)을 요청할때 사용한다.


4. Link-State Update(LSU) Packet

상대 라우터에게서 LSR을 받거나 네트워크 상태가 변했을 경우 해당 라우팅 정보를 전송할때 사용하는 패킷이다. 즉, LSU는 LSA를 실어나를 때 사용하는 패킷이다.


5. Link-State Acknowledgement(LSAck) Packet

OSPF 패킷을 정상적으로 수신했음을 알려줄 때 사용된다. OSPF는 DDP, LSR및 LSU 패킷을 수신하면 반드시 LSAck패킷을 사용하여 상대에게 정상적으로 수신했음을 알려야 한다.


OSPF Message Format

* Router ID : OSPF가 활성화된 라우터에 할당된 32비트 숫자이며, 동일 AS내에서 라우터의 식별자로 사용된다. 부팅할 때 계산되는 Router ID는 라우터의 loopback 인터페이스들 중 가장 큰 주소를 사용하며, loopback 주소가 없는 경우 물리 인터페이스들 중 가장 큰 주소를 사용한다.


* Area ID : 통신을 위해 두 라우터들은 공통 세그먼트를 공유해야만 하고 인터페이스들은 그 세그먼트에서 동일 area에 속해 있어야 한다. 이들 라우터들은 동일한 link-state정보를 갖고 있게 된다. 이 필드는 32비트로 표현되어지며, 이 숫자는 십진수(0)와 점십진수(0.0.0.0) 표기가 가능하다. 단일 area 네트워크를 설정할 때에는 반드시 area 0을 사용해야 하는데, 그 이유는 백본 area(area 0)이기 때문이다.


* Designated Router(DR) : 다중 접속 네트워크(Ethernet, Frame Relay 등)에서 인접(adjacency)의 수를 감소시키기 위해 사용된다(토폴로지 데이터베이스의 크기도 감소된다) DR은 모든 다른 라우터들과 인접된다. 라우터들은 DR에 LSA를 보내고, DR은 그 LSA들을 네트워크로 flooding 할 책임이 있다.(OSPF 라우팅 정보 송/수신의 중심 라우터)


* Backup Designated Router(BDR) : 만약 DR에 장애가 생길때 DR을 대체하는 라우터



참고자료 : 한권으로 끝내는 IP라우팅, CCIE를 꿈꾸는 네트워크 전문가를 위한 IP 라우팅 프로토콜, CCNA/P 공식자료

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.