OSPF 라우팅 프로토콜의 LSU(Link-State Update) Packet의 구조는 LSA Type을 이해하여야만 설명이 가능하기 때문에 여기서는 LSU Packet과 LSAck Packet이 어떻게 동작하는지 알아보기로 하겠다.

1. LSU Packet

  LSU Packet은 Neighbor가 LSR Packet을 통해서 요청한 LSA들을 전달하는 Packet으로 Format을 확인해 보면 OSPF Header 다음에 바로 LSA들이 나오는 것을 확인할 수 있다.

2. LSU의 LSA와 LSDB 비교

  Neighbor에게 LSU Packet을 받으면 LSU Packet안에 들어있는 LSA가 이미 자신의 LSDB에 존재하는지 여부를 확인한다. 만일 LSDB에 이미 존재한다면 ‘7’번으로 가서 Sequence #를 비교하여 무엇이 더 최신 정보인지를 확인하게 되고 LSDB에 존재하지 않는다면 ‘3’번으로 가서 LSDB에 해당 LSA를 추가하게 된다. 이 때, OSPF 라우팅 프로토콜은 ‘MinLSArrival’이 Default로 1초로 설정되어 있어서 동일한 LSA를 1초안에 다시 받게 되면 무시하게 된다. 이 부분은 ‘OSPF Timer’에서 자세히 다루도록 하겠다.

3. LSDB에 추가

  LSDB에 새로운 LSA를 추가하지만, 다른 Neighbor와 데이터베이스가 동기화되지 않았기 때문에 SPF 알고리즘을 계산하지 않는다.

4. LSAck 전달

  LSU Packet을 보낸 Neighbor에게 LSAck(Link-State Acknowledgement) Packet을 전달하여 LSU Packet을 잘 받았음을 알려준다. LSAck Packet은 DBD Packet과 Packet Type만 다르고 데이터는 동일한 정보가 들어있어서 어떠한 LSA를 받았는지를 상호간에 확인하게 된다.

  그리고, LSU Packet를 전달했는데 LSAck Packet을 받지 못하면 16번 재전송하게 되고, 16번 LSAck Packet을 받지 못하면 Neighbor 관계를 끊는다.

5. LSA를 다른 Neighbor들에게 전달

  OSPF 라우팅 프로토콜은 모든 장비가 데이터베이스를 동기화되어야 하기 때문에, SPF 알고리즘을 계산하기 전에 다른 Neighbor들과 데이터베이스를 동기화하는 작업을 우선적으로 수행한다.

6. SPF 알고리즘 계산

  SPF 알고리즘을 계산할 때도 바로 계산을 하면 다른 Neighbor와 데이터베이스를 동기화시키기 전에 계산이 될 수 있기 때문에, ‘OSPF throttle timer’를 통해 Default로 Update Packet을 받은 시간으로부터 5초 후에 계산을 한다. 이 부분도 ‘OSPF Timer’를 설명하면서 자세히 다루도록 하겠다.

7. Sequence Number 동일여부 비교

  앞에서 LSA는 Link가 변경될 때마다 Sequence Number가 ‘1’씩 증가한다고 설명을 했었다. 이 Sequence Number에 대해서는 뒤에서 자세히 다루겠지만, 앞에서 설명한 내용만으로도 LSU Packet에 있는 LSA가 자신의 데이터베이스에 있는 LSA와 Sequence Number가 동일하면 같은 LSA라는 것을 쉽게 이해할 수 있을 것이다. 그래서, Sequence Number가 동일하면 ‘8’번으로 가서 LSA를 무시하게 되고, 동일하지 않으면 ‘9’번으로 가서 어느 LSA가 최신 정보인지를 비교한다.

8. LSA를 무시

  동일한 LSA 정보를 받으면 당연히 무시하게 될 것이다. 그런데, LSU Packet을 받았는데 LSAck Packet을 보내지 않는다면 Neighbor는 LSU Packet을 16번 재전송 후에 Neighbor를 끊을 것이다. 그래서, 데이터베이스에 넣지 않고 무시하지만 Neighbor에게 LSAck Packet은 보내주게 된다.

9. Sequence Number 비교

  자신의 데이터베이스에 있는 LSA와 LSU Packet에 있는 LSA 중 어느 것이 최신 정보인지를 확인하는 부분이다. 당연히 LSA와 LSU Packet에 있는 LSA의 Sequence Number가 더 크면, 최신 정보이므로 ‘3’번으로 가서 LSDB에 추가할 것이다. 그리고, 자신의 정보가 최신 정보면 ’10’번으로 가서 자신이 가지고 있는 정보를 Neighbor에게 Update하여 Neighbor가 최신 정보로 데이터베이스를 동기화할 수 있도록 한다.

10. Source 쪽으로 자신의 LSA를 Update

  Neighbor가 자신이 가지고 있는 정보보다 오래된 LSA를 가지고 있으므로 자신의 LSA를 LSU Packet에 넣어서 Neighbor에게 전달한다.