오버레이 네트워크

   오버레이 네트워크(overlay network)는 물리 네트워크 위에 성립되는 가상의 네트워크를 말한다. 오버레이 네트워크 안의 노드는 가상, 논리 링크로 연결될 수 있고, 각 링크는 네트워크 내에서 많은 논리적 링크를 통하지만 물리적 링크를 고려하지는 않는다. 대표적인 예로 P2P(peer-to-peer) 네트워크와 같은 분산 시스템운 노드가 인터넷 상에서 실행되기 때문에 오버레이 네트워크에 해당한다.

   오버레이(overlay)는 “덮어 씌우다”라는 뜻으로 도스 프로그래밍에서, 640KiB 메모리 제한 때문에 큰 프로그램을 한번에 로드할 수 없을 때 프로그램을 몇 개의 모듈로 나눠 컴파일하고 필요할 때마다 해당 모듈을 메모리로 불러들이는 기법이다. 기존 네트워크를 바탕으로 그 위에 구성된 또 다른 네트워크, 기존의 네트워크 위에 별도의 노드들(nodes)과 논리적 링크들(logical links)을 구성하여 이루어진 가상 네크워크이다. 오버레이 네트워크에서 이웃 노드들은 물리적인 이웃 노드가 아니라 논리적인 이웃 노드이다.

종류

비구조화 오버레이

   비구조화 오버레이는 각 노드가 인접 노드를 선택할 때 제약이 없도록 설계를 한 오버레이 네트워크이다. 노드 탐색시 메시지를 인접노드에 차레로 전파해 확산시키는 방법을 사용하며 비트코인과 이더리움 같은 방법으로 한다고 볼 수 있다. 거래 내역을 전파할 때 인접한 노드에게 계속해서 전파가 되는 것을 볼 수 있는데 일종의 비구조화 오버레이라고 볼 수 있다. 메시지에 요청 데이터의 메타 정보를 포함시켜 그 메타 정보에 맞는 데이터를 가진 노드를 탐색하는 등의 유연한 탐색이 가능하다는게 장점이다. 동시에 확장성의 문제, 노드가 많아지면 네트워크에 메시지가 많아지고 목적 노드까지의 전파를 장담할 수 없다는 단점이 있다.

   비구조화 오버레이의 확장성과 불확실한 전달을 극복하기 위해 슈퍼 노드라는 개념이 있다. 슈퍼 노드는 일반 노드보다 상위의 노드로 구분이 되며 다수의 일반 노드를 밑에 두고 메시지를 슈퍼 노드 끼리 전달하고 밑으로 전파를 하게 된다.

구조화 오버레이

   구조화 오버레이는 각 노드 별로 연결을 할 때 상대가 미리 결정되어있고 네트워크 토폴로지도 엄격하게 설계되어 있는 오버레이 네트워크이다. 장점은 메시지의 도착이나 확장성이 확실하게 높다는 것이며, 효율적으로 메시지를 보낼 수 있다. 이 때문에 노드 갯수의 증가나 전송 횟수에 관계없이 메시지가 반드시 전달이 되도록 설계되어 있다. 구조화 오버레이는 링크형이나 트리형의 구조를 가지게 된다.

토폴로지

   ‘구조화 오버레이’ 토폴로지는 각 노드별로 연결할 상대가 미리 정해져 있으며 네트워크 토폴로지도 엄격하게 설계된 오버레이 네트워이다. 각 노드에 ID가 할당되고 ID에 따라 연결할 상태가 결정된다. 그 결과, 링크형 또는 트리형 같은 구조를 가진다. 전형적인 구조화 오버레이에서는 각 데이터에 대해서도 노드와 동일한 ID가 할당되고 각 데이터는 자신의 ID와 가장 가까운 ID를 가진 노드에 저장되며 메시지에는 대상 ID를 기재해 가장 가까운 인접 노드를 선택하게 된다. 이의 장점은 메시지 도착 가능성 + 확장성이 높다는 것과 네트워크 토폴로지를 엄격하게 설게하기 때문에 노드수가 증가해도 메시지 전송 횟수는 크게 늘어나지 않는다. 하지만 대부분의 구조화 오버레이 검색 알고리즘은 데이터 ID를 사용한 완전 일치 검색만 가능하다.

   ‘비구조와 오버레이’ 토폴로지는 각 노드가 인접 노드를 선택할 때, 제약이 없도록 설계된 오버레이 네트워크이다. 즉, 특정 네트워크 토폴로지가 규정되지 않았다는 것이다. 노드 탐색 시, 메시지에 요청 데이터의 ‘메타 정보를 포함’시켜 그 메타 정보에 맞는 데이터를 가진 노드를 탐색하는 등 유연한 탐색이 가능한 반면, 목적 노드에 메시지가 전달되는 것을 보장하진 못하며 노드수가 증가하면 네트워크 메시지가 너무 많아지는 문제가 발생한다.
비구조화 오버레이의 ‘메시지 전파 문제’를 해결하기 위한 방법은 슈퍼노드 개념을 도입하는 것이다. 일부 노드를 다른 일반 노드보다 상위 노드인 슈퍼노드를 구성하여, 슈퍼노드의 밑에 다수의 일반 노드를 놓고 메시지를 전파하는 네트워크 구축/운영 방법이다. 슈퍼 노드는 네트워크 노드 수에 따라 조절되며, 슈퍼 노드의 임명은 노드 + 네트워크의 성능 등을 기반으로 자율적으로 변경된다.


Reference