OSPF 라우팅 프로토콜은 Neighbor 관계를 수립한 후, 데이터베이스를 동기화하기 위하여 라우터들은 가지고 있는 데이터베이스 요약 정보를 Neighbor와 상호간에 교환을 한다. 그리고, Neighbor의 데이터베이스 요약정보를 자신의 데이터베이스와 비교하여 Neighbor가 더 새로운 정보를 가지고 있거나 자신에게 없는 정보를 가지고 있으면 Neighbor에게 요청하여 데이터베이스를 동기화한다.

  이 때, 데이터베이스의 요약정보를 전달하는 Packet을 DBD(Database Description) Packet이라고 한다.

1. Interface MTU

  앞에서 OSPF 라우팅 프로토콜과 EIGRP 라우팅 프로토콜은 Layer 4 Header를 사용하지 않기 때문에 데이터의 양이 많은 경우 Fragmentation이 이루어 질 수 있다고 설명하였다.  OSPF 라우팅 프로토콜은 이 문제를 해결하기 위해서 DBD를 통하여 MTU size를 확인하여 Fragmentation이 되지 않도록 데이터를 Layer 4에서 Segmentation을 하듯이 나누어서 Layer 3에게 보낸다.

  이 때, MTU size는 반드시 상호간에 동일하여야 하는데, 장비간에 MTU를 일치시킬 수 없는 상황이 발생한다면 Interface에 ‘ip ospf mtu-ignore’라는 명령어를 사용하여 MTU size를 확인하지 않도록 할 수 있다. 이런 경우, 데이터의 크기가 크면 Fragmentation이 발생할 수 있다.

  만일, 한쪽만 ‘ip ospf mtu-ignore’가 설정되어 있는 경우라면 다음의 조건이 만족되어야 한다

조건 : ‘ip ospf mtu-ignore’를 설정한 장비의 MTU size ≤ ‘ip ospf mtu-ignore’를 미설정 장비의 MTU size

  참고로 향후에 ‘Virtual-Link’라는 기술을 학습하게 되는데, ‘Virtual-Link’에서는 MTU size를 비교하지 않는다.

2. Options & DB Description


  Options 필드 8 bit는 Hello Packet과 동일하지만, 뒤에’DB Description’이라는 8 bit가 더 추가된다. 이 중 앞의 4 bit는 아직 사용하고 있지 않으며, 사용하고 있는 4 bit의 내용은 다음과 같다.

DBD 설 명

R

표준으로 사용되는 bit는 아니다. 시스코와 같이 특정 제조사에서 OSPF NSF(non-stop forwarding) 기술을 제공하는 경우 Active Process에서 Standby Process로 Route Process가 switchover되면 Neighbor를 유지하면서 새로운 Active Process가 Neighbor와 데이터베이스를 동기화할 필요가 있다. 그 때, DBD를 다시 전달하여 데이터베이스를 재동기화(Re-Sync)할 때 사용하는 bit이다.

I

처음 전달되는 DBD Packet은 데이터가 없이 보내지고, MTU size를 비교하고 Master/Slave를 선출하는 용도로 사용된다. 그 때, Packet이 첫번째 DBD Packet이라는 것을 나타내는 ‘Initial Bit’이다.

M

‘More Bit’로 DBD Packet이 더 남아 있는지를 의미한다. 마지막 DBD Packet에 M bit를 ‘0’으로 설정하여 해당 Packet이 마지막 Packet이라는 것을 Neighbor에게 알려준다.
MS 자신이 Master인지 Slave인지를 나타내는 bit이다. Neighbor간에 Update를 할 때는 첫번째 DBD를 교환한 후에 ‘Router-ID’가 높은 장비가 Master가 되고 낮은 장비가 Slave가 된다.

  위 설명에서 ‘Master/Slave’라는 단어가 나왔는데 이 부분은 OSPF가 Neighbor 관계를 수립하는 단계를 학습할 때 자세히 살펴보도록 하겠다.

3. DD sequence number

  DBD Packet의 용량이 많은 경우 DBD를 여러개 보내야 하는데, DBD Packet에 대해서는 응답 Packet을 보내지 않는다. 그래서, 중간에 Packet이 유실되었을 경우 Neighbor가 잘 받았는지 확인을 할 수가 없다. 이 때, 사용하는 것이 ‘Sequence number’이다.

  이 부분도 OSPF가 Neighbor 관계를 수립하는 단계를 학습할 때 자세히 살펴보도록 하겠다.

4. LSA Header

필드 설 명
LSA Age 현재 LSA가 최초로 만들어 진 후 시간이 얼마나 지났는지를 나타낸다. LSA는 Maximum Aging Time이 3600초로 되어 있어 LSA Age가 3600이 되면 사라지도록 되어 있다.
DNA flag Virtual-Link로 Update 받은 LSA나 ‘ip ospf flood-reduction’ 등의 명령어를 사용하여 demand circuit로 만든 인터페이스를 통해 Update 받은 LSA는 LSA Age가 증가하지 않는데, 이 때 해당 LSA 정보에 DNA(Do Not Age) bit를 설정해서 전달한다.
Options Hello Packet의 Options 필드가 LSA에도 동일하게 존재한다. 그 정보를 전달하는 필드이다.
LSA Type LSA의 종류가 Type 1 – Router LSA, Type 2 – Network LSA, Type 3 – Summary LSA 등 다양하게 존재하는데, 현재 LSA가 어떤 종류인지를 나타내는 필드이다.
LSA ID LSA마다 이름 역할을 하는 ID가 존재하는데 그 정보를 전달하는 필드이다.
Advertising Router 해당 LSA를 어느 장비가 Area 또는 OSPF 데이터베이스로 가지고 왔는지 해당 장비의 Router-ID를 표시하여 전달한다.
Sequence Number LSA는 Link의 정보가 변경될 때 마다 Sequence Number를 ‘1’씩 증가시켜 Update 정보를 전달한다. 그리고, 가장 최신 LSA가 각각의 라우터의 데이터베이스에 저장되게 된다. 그 때, Sequence Number를 비교하기 위하여 사용한다.

Checksum

LSA 데이터에 오류가 있는지 확인하여 사용하는 정보이다.

Length

LSA 데이터의 길이를 나타내는 정보이다.

  처음 나오는 단어들이 많아서 다소 어려울 수는 있지만, 뒷 부분에서 자세하게 다룰 부분이니 DBD Packet에 이러한 정보가 있다는 것만 기억해 두기 바란다.

  참고로 DBD Packet을 Wireshark로 캡쳐한 모습은 다음과 같다.

  DBD Packet에 어떠한 내용이 있는지 확인하기 위해서는 100% 일치하지는 않지만 다음 명령어를 통해 쉽게 이해할 수 있으니 참고하기 바란다.