두 대의 장비가 2-WAY 상태에서 Adjancency Neighbor로 확인이 되면 데이터베이스를 동기화하기 위하여 자신이 가지고 있는 데이터베이스 요약정보를 전달하는 Packet이 DBD Packet이다.

1. EXSTART 상태

  첫번째 DBD Packet을 전달하는 단계를 EXSTART(Exchange start) 상태라고 한다. 이 상태에서 2가지 과정을 거치게 되는데, 그것은 ‘Master/Slave 선출’과 ‘MTU size check’이다. MTU size를 확인하는 이유는 이미 DBD Packet을 설명하면서 설명을 하였다.

  여기서는 Master/Slave를 왜 선출하여야 하고 어떤 역할을 수행하는지 자세히 살펴보도록 하겠다. 먼저, 두 대의 장비간에 첫번째 DBD Packet을 교환한 후 Router-ID를 비교하여 Router-ID가 높은 장비가 Master가 되고, Router-ID가 낮은 장비가 Slave가 된다.

  그럼 첫번째 DBD Packet에 대해 알아보기로 하자.

  첫번째 DBD Packet을 보낼 때 각각의 장비는 무작위로 Sequence Number을 설정하여 전송한다. 그리고, 첫번째 DBD Packet이기 때문에 ‘I bit’를 1로 설정하고, 보낼 DBD 정보가 더 있기 때문에 ‘M bit’도 1로 설정한다. 또한, 아직 Master/Slave를 선출한 상태가 아니므로 자신이 Master라고 ‘MS bit’도 1로 설정하여 전달한다.

  상호간에 첫번째 DBD Packet을 교환하고 나면 Router-ID를 비교하여 Master/Slave를 선출되는데 Slave로 선정된 장비는 Master에게 먼저 DBD Packet을 전달할 수 없고, DBD Packet을 전달할 때 ‘MS bit’를 0으로 설정하여 전달한다.

2. EXCHANGE 상태

  Neighbor간에 Master/Slave를 선출하면EXCHANGE 상태가 된다. 만일, MTU size에 문제가 있다면 EXSTART 상태에서 멈추어 있을 것이다. 제조사에 따라 시스코처럼 MTU size를 확인하는 것이 Default로 설정되어 있는 장비도 있고, 화웨이처럼 MUT size를 확인하지 않는 것이 Default로 설정되어 있는 장비도 있으니 설치 전에 확인을 해 보아야 할 것이다. 물론, Interface의 MTU size가 같다면 아무런 문제가 없을 것이다.

  이제 여기서 DBD Packet을 교환하는 과정을 학습하면 왜 Master/Slave가 필요한지 알 수가 있다.

  첫번째 Packet을 전달할 때, Master에서 Sequence number를 200으로 설정하였다고 가정해 보자. OSPF 라우팅 프로토콜은 응답 Packet으로 사용되는 LSAck Packet을 Update Packet에 대해서만 보내도록 만들었다. 즉, DBD Packet에 대해서는 상대방이 잘 받았는지 여부를 확인할 수가 없다는 것이다. 그래서, Sequence number를 사용하기로 하였다.

  위의 그림처럼 Master가 첫번째 DBD Packet에 설정한 Sequence number(=200)에 ‘+1’을 하여 ‘Seq=201’로 먼저 Slave에게 전달한다. 해당 DBD Packet을 받은 Slave는 잘 받았음을 전달하기 위하여 Master가 보내준 Sequence number와 동일한 ‘201’로 자신의 DBD Packet을 보낸다.

  ‘Seq=201’을 받은 Master는 Sequence number(=201)에 ‘+1’을 하여 ‘Seq=202’로 다음 DBD Packet을 전송하게 되는 것이다. 만일, 중간에 Packet이 유실된다면 다음의 상황이 발생하게 된다.

  Case 1. 다음 Packet을 받지 못한 경우는 자신이 보낸 DBD Packet을 받지 못하였다고 판단하여 Retransimit interval(Default = 5초) 후에 ‘Seq=201’을 재전송한다.

  Case 2. 다음 Packet을 받아야 하는데 이전에 받았던 DBD Packet이 다시 들어오는 경우는 상대방이 자신이 보낸 DBD Packet을 받지 못하여 재전송하였다고 판단하여 바로 재전송한다.

3. LOADING 상태

  마지막 DBD Packet에는 ‘M bit’가 0으로 설정되는데, 해당 Packet을 받은 장비는 Neighbor에게 모든 DBD Packet을 받았기 때문에, 자신의 데이터베이스와 비교하여 LSR Packet을 보내고 LSU Packet을 받기 위한 ‘LOADING’ 상태가 된다.