Dissemination 프로토콜은 네트워크 전체에 동일한 데이터를 전달하고 이들의 일관성을 유지시키는 서비스이다. 이를 위해 각 노드는 이 데이터의 복사본을 저장하며, 나중에 해당 데이터의 값이 변경될 경우 이를 알리고, 네트워크 전체에 걸쳐 이 데이터가 일관된 값을 갖게 될 때까지 패킷들을 교환한다. 초기에는 대부분의 노드들이 이전 값(stale value)을 갖는 불안정한 상태를 갖겠지만, 이 과정을 통해 시간이 지나면서 최근 값(up-to-data value)을 갖도록 네트워크 전체가 수렴한다.
이 기법은 패킷 손실이나, 일시적인 통신 단절등에 상당히 잘 견디며, 단순히 패킷을 노드 간에 반복 전달하는데 그치는 플러딩(flooding) 방식과는 달리 Dissemination 기법은 네트워크에 연결되어 있는 모든 노드들이 궁극적으로는 일관된 값을 갖도록 보장한다. 전송할 데이터의 크기에 따라 이 프로토콜의 성능은 크게 다르며, 수십 KB의 데이터를 dissemination하는 것은 몇 Bytes를 전송하는 경우와는 약간 다른 프로토콜을 요구하는데, 자세히 살펴보면 근본적으로는 매우 유사하다. Dissemination 프로토콜을 제어와 데이터 트래픽으로 나눠보면, 데이터 트래픽 프로토콜은 데이터의 크기에 밀접한 관련이 있지만, 제어 트래픽 프로토콜은 동일하거나 비슷한 경향을 보인다. 예를 들어, UC Berkely에서 개발한 Deluge 바이너리 프로그래밍 서비스는 바이너리(실행 프로그램)에 대한 메타 정보를 전파한다. 이 과정에서 노드들이 자신들이 갖고 있는 바이너리의 정보가 전달받은 정보와 다르면, 그들은 자신의 노드에 있는 바이너리가 잘못되었거나 새로운 바이너리가 필요하다는 것을 알 수 있다.
이 기법에서는 어떤 노드라도 네트워크에게 자신이 새로운 값을 생성했다고 알림으로 네트워크 전체가 일관된 상태로 수렴하도록 요구할 수 있다. 그리고, 모든 노드들이 이 값에 동의하면 네트워크 전체에 걸쳐 동일한 값으로 수렴한다. 이와 같은 방법으로 작은 데이터들을 Dissemination 할 수 있다면 센서 네트워크의 중요한 기능을 담당할 수 있다. 예를 들면, 작은 프로그램을 네트워크에 전달하거나 네트워크의 재구성, 질의 또는 명령, 재프로그램등을 지원할 수 있다.
댓글 없음:
댓글 쓰기