OSPF 라우팅 프로토콜 Packet의 Header 구조를 보면 Layer 2 Header, Layer 3 Header 다음으로 OSPF Header 가 들어가게 된다. 하위 프로토콜에서는 상위 프로토콜 정보를 알아야 어떤 프로토콜에게 전달할지를 알 수 있기 때문에 항상 상위 프로토콜에 대한 정보가 들어가게 되는데 Layer 3 IP Header에는 상위 프로토콜 정보를 Protocol ID라는 필드를 사용한다. OSPF 라우팅 프로토콜이 할당받은 번호는 89번이다.

  그런데, OSPF Packet의 Header 구조를 보면 TCP나 UDP와 같은 Layer 4 Header가 없는 것을 확인할 수 있다. RIP 라우팅 프로토콜은 UDP를 사용하고 BGP 라우팅 프로토콜은 TCP를 사용한다. 그러나, EIGRP나 OSPF 라우팅 프로토콜은 Layer 4 Header를 사용하지 않는다.

  Layer 4 Header를 사용하지 않으면 Layer 4 프로토콜을 건너뛸 수 있기 때문에 보다 빠르게 Data를 처리할 수 있다는 장점을 가지고 있다. 하지만, TCP를 사용하지 않으면 Error Control을 할 수 없기 때문에 Packet을 상대방에게 제대로 전달했는지 확인을 할 수 없게 된다.

  그리고, Layer 4 프로토콜을 사용하지 않으면, 인터페이스의 MTU 크기를 알지 못하기 때문에 업데이트 양이 많은 경우 Layer 3에서 Fragmentation이 발생할 수 있다. 다음은 대용량의 데이터를 보내기 위해 TCP가 IP 프로토콜에서 Fragmentation이 발생하지 않도록 MSS(Maximum Segment Size)를 어떻게 계산하게 되는지에 쉽게 이해할 수 있도록 그린 개념도이다. 만일 OSPF가 MTU 크기를 몰라서 IP 프로토콜에게 4000 Byte를 보내 주게 된다면 해당 1480 + 1480 + 1040으로 Fragmentation을 해서 전송하게 될 것이다.

  이 문제들를 OSPF 라우팅 프로토콜에서 어떤 방식으로 해결했는지는 뒤에서 설명하기로 하고 여기서는 OSPF Packet에 들어가는 OSPF Header 정보에 대해 확인해 보자.

1. Version

  OSPF 라우팅 프로토콜의 버전을 나타내는 영역으로 상호간에 동일하여야 하며, 현재 IPv4에서 사용되는 OSPF는 버전 2이다. OSPF 버전 1은 더이상 사용되지 않으며, OSPF 버전 3는 IPv6에서 사용되는 OSPF로 IPv6 OSPF에서 다루도록 하겠다.

2. Type

  해당 Packet이 어떠한 OSPF Packet인지를 표시하는 영역으로 우리가 이번 장에서 학습할 OSPF Packet의 종류인 Hello, DBD, LSR, LSU, LSAck Packet 중 무엇인지를 알려주는 역할을 한다.

Type 번호 Packet Type
1 Hello
2 Database Description (DBD)
3 Link-State Request (LSR)
4 Link-State Update (LSU)
5 Link-State Acknowledgment (LSAck)

3. Packet Length

  OSPF Header를 포함한 전체 OSPF Packet의 길이를 Bytes 단위로 표시한 영역이다.

4. Router ID

  OSPF Packet을 보낸 라우터의 Router ID를 표시하는 영역이다. Router ID는 OSPF 라우팅 프로토콜이 Best-Path를 선출하기 위해 SPF 알고리즘을 수행 시 라우터의 이름으로 사용되며, 32 bits의 IPv4 address 형식으로 0.0.0.0부터 255.255.255.255까지의 값을 갖는다.

5. Area ID

  Packet을 전송하는 인터페이스가 어떠한 Area에 속하는지 정보를 표시하는 영역으로 Router ID와 같이 32 bits 형식으로 0.0.0.0부터 255.255.255.255까지의 값을 가지며, Area 0.0.0.0(또는, Area 0)이 Backbone Area가 된다.

6. Checksum

  Authentication 영역을 제외한 OSPF Packet을 16-bit로 Checksum한 값을 표시하는 영역으로 16-bit 단위로 OSPF Packet이 나누어 지지 않는 경우, 16-bit 단위로 계산될 수 있도록 뒷 부분을 0으로 Padding하여 계산한다. 단, MD5로 인증을 하는 경우에는 Checksum을 수행하지 않는다.

7. Authentication Type

  OSPF의 Authentication type을 표시하는 영역으로 내용은 다음과 같다.

Type 번호 설 명
0 No Authentication
1 Simple Password Authentication
2 MD5 Crypt Authentication
Others Reserved IANA (현재 사용되지 않음)

8-9. Authentication

  Authentication을 하기 위한 추가 정보가 표시되는 영역으로 각 Authentication Type에 따라 내용은 다음과 같다.

Auth Type 사용 영역 설 명
0 Authentication Authentication 64 bit 영영을 모두 ‘0’으로 Padding 함
1 Authentication Authentication 영역에 Password가 표시하며 Password는 64 bit를 초과할 수 없음
2 Auth Crypt Key ID Authentication의 처음 8 bit로 MD5 Password의 Key ID를 표시하며 1-255 사이의 값을 가짐
Auth Crypt Data Length MD5 Hash 값의 길이를 byte 단위로 표시하며, 현재는 128 bit MD5 기술을 사용함으로 항상 ‘16’의 값을 갖음
Auth Crypt Sequence Number Reply 공격을 차단하기 위한 Sequence Number가 표시되는 영역으로 4 Bytes 값으로 되어 있음
Auth Crypt Data Key 값을 16 bytes로 만들어서 OSPF Packet에 추가한 후, 128 bit MD5 Hash 기술을 이용하여 Hash된 값을 표시함