본 발명은 상기와 같은 목적을 달성하기 위해, 파일을 전송받고자 하는 요구 노드의 요청에 따라 해당 파일을 보유하고 있는 전송 노드 중 최적의 전송 노드를 검색하는 최적 노드 검색 장치에 있어서, 네트워크를 통해 연결된 노드들의 노드 정보를 저장하고 있는 노드 정보 저장부와, 상기 검색 장치에 연결된 파일 서버에 저장되어 있는 파일의 파일 정보를 저장하고 있는 파일 정보 저장부와, 상기 요구 노드로부터 상기 요구 노드의 노드 정보를 포함한 파일 정보를 수신하는 파일 정보 수신부와, 상기 요구 노드의 파일 정보와 상기 노드 정보 저장부 및 상기 파일 정보 저장부에 저장되어 있는 노드 정보 및 파일 정보를 이용하여 최적 전송 노드를 검색하는 최적 노드 검색부와, 상기 검색부에서 결정된 최적 전송 노드의 노드 식별자를 상기 요구 노드로 전송하는 검색 정보 전송부를 포함하되, 상기 노드 정보는 해당 노드의 지역 정보, ISP 업체 정보, 회선 종류 정보 및 IP 클래스 정보를 포함하고, 상기 요구 노드의 파일 정보는 전송받고자 하는 파일의 요구 블록 및 요구 속도를 포함하며, 상기 최적 노드 검색부는, 상기 요구 블록을 보유하고 있고 상기 요구 노드의 노드 정보와 일치하는 노드 정보를 갖는 전송 노드 중에서 IP 클래스 정보, 회선 종류 정보, ISP 업체 정보 및 지역 정보의 순으로 우선 순위를 결정하여 우선 순위가 가장 높은 것을 최적 전송 노드로 결정하는 것을 특징으로 하는 최적 노드 검색 장치 및 이 장치의 기술사상에 대응하는 최적 노드 검색 방법, 그리고 이 방법을 실행하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
한편, 상기 최적 노드 검색부는 IP 클래스 정보가 일치하는 전송 노드 중에 서 업로드 속도가 상기 요구 속도보다 크거나 같은 경우에는 해당 전송 노드를 최적 전송 노드로 결정하는 것이 바람직하다. 이 때, 상기 업로드 속도가 상기 요구 속도보다 작은 경우에는 상기 요구 노드와 IP 클래스가 일치하는 최후의 전송 노드를 최적 전송 노드로 결정할 수도 있다. 한편, 상기 업로드 속도가 상기 요구 속도보다 작은 경우에는 IP 클래스가 일치하는 전송 노드 중에서 업로드 속도가 가장 높은 노드를 최적 전송 노드로 결정할 수도 있다.
또한, 상기 검색 정보 전송부는 상기 노드 식별자와 함께, 상기 검색부에서 결정된 최적 전송 노드의 업로드 속도에 비례하여 상기 최적 전송 노드가 상기 요구 노드로 전송할 파일 블록의 위치를 결정한 블록 할당 정보를 상기 요구 노드로 전송하는 것이 바람직하다. 이 때, 상기 검색 장치는, 상기 최적 전송 노드에 할당된 파일 블록의 전송이 완료되기 전에 상기 요구 노드와의 접속이 단절되는 시점을 계산하여 상기 단절 시점의 소정 시간 이전에 상기 최적 노드 검색부에 최적 전송 노드를 재할당해줄 것을 요청하는 전송 상태 감시부를 더 포함하는 것이 바람직하다. 또한, 상기 전송 상태 감시부는, 상기 요구 노드로부터의 신호가 최적 전송 노드의 할당 요청인지 다운로드 상태 정보인지를 판단하여 할당 요청인 경우에는 상기 최적 노드 검색부에게 최적 전송 노드의 검색을 요청하고 다운로드 정보인 경우에는 상기 요구 노드의 노드 정보를 갱신하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 설명한다.
도 1에는 본 실시예에 따른 최적 노드 검색 장치의 블록도가 도시되어 있다. 도 1에 따르면, 검색 장치(10)는 파일 정보 수신부(101), 최적 전송 노드 검색부(101), 검색 정보 전송부(103), 노드 정보 저장부(104) 및 파일 정보 저장부(105)로 구성되어 있다.
노드 정보 저장부(104)는 전체 노드들의 노드 정보를 저장하고 있으며, 노드 정보에는 해당 노드의 지역 정보, ISP 업체 정보, 회선 종류 정보, IP 클래스 정보 및 업로드/다운로드 속도 등이 포함된다. 지역 정보는 국가 단위, 시/도 단위(또는 주 단위) 등으로 분류될 수 있으며, ISP 업체 정보는 인터넷 통신 서비스를 제공하는 업체를 지칭하며, 회선 종류는 ADSL, VDSL과 같이 서비스되는 회선의 종류를 말하고, IP 클래스 정보는 해당 노드가 어떤 IP 클래스에 속하는지에 대한 정보를 말한다. 이와 같이 각 정보들을 분류하는 이유는 각 정보의 같고 다름에 따라 각 노드에 대한 접근 속도나 업/다운로드 속도 등의 통신 환경이 크게 달라지기 때문이며, 동일한 정보를 갖고 있는 노드끼리 최상의 통신 환경이 제공될 확률이 높기 때문이다. 파일 정보 저장부(105)는 파일 서버(40)에 저장되어 있는 파일에 관한 정보를 저장하고 있으며, 파일 정보에는 파일의 프로토콜 버전, 파일명, 파일의 크기, 해당 파일을 보유하고 있는 전송 노드의 목록 등의 정보가 포함된다.
파일 정보 수신부(101)는 요구 노드의 파일 정보를 수신하며, 파일 정보에는 전송받고자 하는 파일의 프로토콜 버전, 파일명, 파일의 크기, 요구 블록, 요구 속도, 노드 정보 등이 포함되며, 노드 정보는 해당 노드의 지역 정보와 해당 노드의 ISP 업체, 회선 종류, IP 클래스 및 해당 노드의 업로드/다운로드 속도를 포함하는 네트워크 정보로 구성된다.
한편, 파일은 소정 크기(예컨대, 1M 바이트)를 갖는 다수의 블록으로 분할되 어 있는데, 요구 노드는 원하는 지점의 파일 블록부터 전송을 요구할 수 있다. 따라서, 요구 블록 정보는 요구 노드가 전송받기를 원하는 파일의 특정 블록의 위치를 의미한다. 요구 속도는 웹상에서 각 노드에게 정책적으로 할당된 속도(예컨대 웹 사이트의 유료 또는 무료 회원에 따라 다운로드 속도를 다르게 책정되는 속도)를 의미하며 요구 노드는 이 때 자신에게 해당하는 정책에 따라 요구 속도가 달라지게 되는 것이다. 또한, 파일 정보를 수신하기 전에 요구 노드의 전송 요구 신호를 검출하여 서버 소켓을 생성하고 생성된 서버 소켓을 요구 노드의 클라이언트 소켓으로 접속함으로써 요구 노드와 검색 장치 사이에 통신 경로가 확보되어 있어야 한다.
최적 전송 노드 검색부(102)는 요구 노드의 파일 정보와 노드 정보 저장부(104)에 저장되어 있는 전송 노드의 노드 정보와 파일 정보 저장부(105)에 저장되어 있는 파일 정보를 이용하여 도 2에 도시된 알고리즘에 따라 최적 전송 노드를 검색하여 검색 정보를 검색 정보 전송부(103)로 전달한다. 도 2에 따르면, 단계(S201)에서는 노드 정보 저장부(104)에 포함된 전체 전송 노드 중 첫 번째 전송 노드(Tn1)의 노드 정보를 읽어오고, 단계(S203)에서는 해당 노드에 요구 블록이 존재하는지를 검사한다. 요구 블록이 존재하면 단계(S205)에서는 요구 노드와 현재 노드의 지역 정보가 일치하는 지를 검사하고, 지역 정보가 일치하면 단계(S207)에서는 최적 노드와 현재 노드를 비교하여 최적 노드를 결정하는데 현재는 첫 번 째 전송 노드에 관한 것이기 때문에 첫 번째 전송 노드가 최적 노드로 결정된다. 단계(S209, S213, S217) 에서는 요구 노드와 현재 노드의 ISP 업체 정보, 회선 종 류 정보 및 IP 클래스 정보가 일치하는지를 각각 검사하고 해당 정보가 일치하면 단계(S211, S215, S219)에서 최적 노드와 현재 노드를 비교하여 최적 노드를 결정한다. 현재는 첫 번째 노드에 관한 것이기 때문에 각 정보가 일치할 경우에는 현재 노드가 최적 노드로 결정될 것이다. 한편, 단계(S211, S215, S219)에서는 단계(S204)와 마찬가지로 현재까지의 최적 노드와 현재 노드를 비교하여 최적 노드를 결정하는데, 현재까지의 최적 노드와 현재 노드의 정보가 일치한다면 현재까지의 최적 노드를 새로운 최적 노드로 결정한다.
단계(S221)에서는 요구 속도가 해당 노드의 업로드 속도보다 작은지를 검사한다. 만약 요구 속도가 해당 노드의 업로드 속도보다 작다면 더 이상 다른 전송 노드가 필요하지 않기 때문에 단계(S223)로 가서 현재의 해당 노드를 최적 노드로 결정하고 결정된 최적 전송 노드 정보를 검색 정보 전송부(103)로 전송한다. 한편, 요구 속도가 업로드 속도보다 크다면 요구 속도를 만족하기 위해서는 다른 전송 노드가 더 필요하기 때문에 단계(S225)로 진행하여, 최적 노드와 현재 노드 중 보다 큰 업로드 속도를 갖는 전송 노드를 최적 노드로 결정하고 단계(S227)로 진행한다. 따라서 단계(S225)에 의해, 요구 속도보다 더 낮은 업로드 속도를 갖는 노드 중에서 가장 큰 전송 속도를 갖는 전송 노드를 최적 노드로 결정된다. 그러나, 단계(S225)는 가장 높은 업로드 속도를 갖는 전송 노드부터 순차적으로 배치하기 위한 것일 뿐이며 단계(S225)를 생략하여 요구 속도보다 작은 업로드 속도를 갖는 전송 노드 중에서 최후의 전송 노드가 최적 노드로 결정되도록 하여도 무방하다.
단계(S227)에서는 현재의 전송 노드가 마지막 전송 노드 인지를 검사하여 마 지막 전송 노드가 아니라면 다음 전송 노드의 노드 정보를 가져와 지금까지의 단계를 반복하고, 마지막 전송 노드라면 단계(S223)로 진행하여 지금까지의 최적 전송 노드를 최종적으로 최적 전송 노드로 결정한다.
도 3에는 도 2의 알고리즘을 이용한 구체적인 예가 도시되어 있는데, 전송 노드가 총 5개이고 제 1 전송 노드(Tn1)는 요구 노드와 회선 종류까지 일치하고, 제 2 전송 노드(Tn2)는 요구 노드와 ISP 업체까지 일치하고, 제 3 전송 노드(Tn3)는 요구 노드와 IP 클래스까지 일치하고 업로드 속도는 200K이고, 제 4 전송 노드(Tn4)는 요구 노드와 IP 클래스까지 일치하고 업로드 속도는 300K이고, 제 5 전송 노드(Tn5)는 요구 노드와 IP 클래스까지 일치하고 업로드 속도는 100K라고 가정한다. 또한, 요구 속도는 500K라고 가정한다.
이 때, 도 2의 알고리즘의 첫 번째 순환에서는 제 1 전송 노드(Tn1)가 최적 노드로 결정될 것이고, 두 번째 순환에서도 회선 종류까지 일치하는 제 1 전송 노드(Tn1)가 ISP 업체까지만 일치하는 제 2 전송 노드(Tn2)보다 우선 순위가 높기 때문에 제 1 전송 노드(Tn1)가 최적 노드로 결정될 것이다. 세 번째 순환에서는 IP 클래스가 회선 종류보다 우선 순위가 높기 때문에 제 3 전송 노드(Tn3)가 최적 노드로 결정될 것이며, 네 번째 순환에서는 제 4 전송 노드(Tn4)가 제 3 전송 노드(Tn3)보다 업로드 속도가 높기 때문에 제 4 전송 노드(Tn4)가 최적 노드로 결정될 것이다. 다섯 번째 순환에서는 제 5 전송 노드(Tn5)가 제 4 전송 노드(Tn3)보다 업로드 속도가 낮기 때문에 최종적으로 제 4 전송 노드(Tn4)가 최적 노드로 결정될 것이다. 이 때, 만약 단계(S225)가 생략된다면 IP 클래스가 일치하는 것 중 마지막 전송 노드인 제 5 전송 노드(Tn5)가 최적 노드로 결정될 것이다.
검색 정보 전송부(103)는 최적 노드 검색부(102)에서 결정된 최적 노드의 노드 식별자를 요구 노드(20)에게 전송하여 요구 노드(20)가 결정된 최적 전송 노드(30)로부터 파일을 전송받을 수 있도록 한다.
한편, 요구 노드(20)는 최적 노드로 접속하여 파일을 전송받을 준비를 하는데 이 때 최적 노드의 업로드 속도가 요구 속도보다 작다면 또 다른 전송 노드로부터 파일을 분할하여 전송받기 위해 요구 속도에서 현재 최적 노드의 업로드 속도를 뺀 만큼의 속도를 요구 속도로 하여 다시 검색 장치(10)로 파일 정보를 송신하면, 검색 장치(10)에서는 도 2의 알고리즘을 거쳐 새로운 최적 전송 노드 결정하여 요구 노드(20)로 전송한다.
도 4는 요구 노드(20)의 요구 속도가 800K이고 최적 노드로 결정된 노드가 A, B, C 및 D 노드이며 각각의 업로드 속도가 100K, 300K, 200K 및 200K라고 가정한 경우에 요구 노드(20)가 전송 노드로부터 파일을 분할하여 전송받는 것을 설명하기 위한 도면이다. 도 4에 따르면, n Mbyte의 파일이 1M 단위의 블록으로 분할되어 있고, 각 전송 노드는 업로드 속도에 비례하여 파일 블록이 할당되어 있다. 따라서, 도 4의 경우 A 노드로부터는 파일의 처음 1M 블록을 전송받고, B 노드로부터는 파일의 2M부터 4M까지의 블록을 전송받고, C 노드 및 D 노드로부터는 파일의 5M, 6M 및 7M, 8M를 전송받는다. 이렇게 업로드 속도에 비례하여 분할받는 블록의 크기를 달리함으로써 순차적으로 파일을 다운로드 받는 것과 같은 효과를 얻을 수 있으며, 도 4의 경우 10초 후에는 파일의 1M 내지 8M 블록의 전송이 완료되며, 이 후에는 9M 내지 16M 블록까지 블록의 전송이 완료되며, 요구 노드(20)는 이와 같은 방식으로 nM 블록까지 파일을 전송받을 수 있다. 한편, 요구 노드(20)가 전송 노드로부터 파일을 전송받는 도중에 어느 한 전송 노드(예컨대, C 노드)가 어떤 이유에서든지 파일 전송을 할 수 없는 상황이 발생한 경우에는 나머지 전송 노드(예컨대, A, B 및 D 노드)의 업로드 속도에 비례하여 각 전송 노드로부터 전송받을 파일 블록을 재설정한다.
따라서, 여러 개의 전송 노드로부터 파일을 분할하여 전송받을 경우 파일을 순차적으로 전송받는 것과 동일한 효과를 기대하기 위해서는 최적 전송 노드의 업로드 속도에 비례하여 각 전송 노드가 전송해야할 파일 블록의 위치를 결정해 줄 필요가 있는데, 검색 정보 전송부(103)에서는 결정된 최적 노드의 노드 식별자와 함께 업로드 속도를 참조하여 각 최적 노드에서 요구 노드로 전송할 파일 블록을 결정한 블록 할당 정보도 함께 전송한다. 예를 들어, 검색 정보 전송부(103)는, 요구 속도가 800K인 경우에 첫 번째 결정된 최적 노드의 업로드 속도가 100K이면 8개의 파일 블록(총 8Mbyte) 중 처음 1Mbyte(100K/800K)를 전송 블록으로 할당하고, 다음으로 결정된 최적 노드의 업로드 속도가 300K이면 2M 블록 내지 4M 블록까지 총 3Mbyte(300K/800K)를 전송 블록으로 할당하는 방식으로 각 전송 노드가 전송할 파일 블록을 할당한 블록 할당 정보를 노드 식별자와 함께 요구 노드로 전송한다.
도 4는 각 전송 노드가 파일의 전체 블록을 보유하고 있는 경우지만 본 실시예에 따르면 해당 전송 노드에 요구 블록만 존재하면 파일의 전체 블록을 보유하고 있지 않더라도 해당 전송 노드로부터 파일 블록을 전송받을 수 있다.
도 5는 현재 파일 서버(40) 또는 다른 전송 노드들로부터 파일을 전송받고 있는 노드로부터 파일을 분할하여 다운로드받는 방법을 설명하기 위한 도면이다. 도 5에 따르면, A 노드 및 B 노드는 각각 100K 및 200K의 속도로 파일 서버로부터 파일을 전송받고 있고, 현재 전송받은 양은 각각 10M 바이트와 2M 바이트이며, 각각의 업로드 속도는 50K와 150K라고 가정한다. 이 때, 요구 노드(20)인 C 노드가 100M 바이트의 파일을 300K의 요구 속도로 전송받으려고 할 경우에 검색 장치(10)에서 결정된 최적 노드가 A 노드 및 B 노드라고 하면, A 노드와 B 노드의 업로드 속도를 합한 값이 요구 속도보다 작기 때문에 나머지 속도분에 대해서는 파일 서버(40)에게 직접 파일을 전송받게 된다. 우선, A 노드의 다운로드 완료 예상 시간은 (100(전체 크기)-10(전송받은 크기))/0.1=90*1024K/100K=921.6초=15.36분이고, B 노드의 다운로드 완료 예상 시간은 (100-2)/0.2=98*1024/200=501.75초 =8.36분이며, C 노드의 다운로드 완료 예상 시간은 (100*1024)/300=341초=5.68분이므로 C 노드는 A, B 모두에게서 파일을 전송받을 수 있다. 한편, C 노드는 51.2초(y=100x+10*1024, y'=300x, x=51.2) 후에는 A 노드의 파일 다운로드 속도를 앞지르게 되어 더 이상 A 노드로부터는 파일을 다운로드 받을 수 없고, 마찬가지로 B 노드로부터는 20.48초 후면 파일을 다운로드 받을 수 없게 된다. 따라서, 검색 장치(10)는 요구 노드(C 노드)가 전송 노드(A 및 B 노드)의 다운로드 속도를 앞지르게 되는 접속 단절 시점을 예상하여 접속 단절 시점 소정 시간 이전에 최적 노드를 다시 할당할 필요가 있다.
도 6은 이러한 검색 장치(10')의 구성예가 도시되어 있는데, 도 1의 검색 장 치(10)의 구성요소 전부를 포함하며 거기에 전송 상태 감시부(106)가 더 추가되었다. 따라서, 전송 상태 감시부(106)는 요구 노드가 전송 노드에서 접속이 단절되는 시점을 예상하여 그 단절 시점의 소정 시간 이전에 최적 노드 검색부(102)로 최적 노드를 재할당해 줄 것을 요구한다. 이 때, 단절이 예상되는 전송 노드의 업로드 속도를 요구 속도로 하여 재할당을 요청함으로써 단절된 업로드 속도를 확보할 수도 있다. 최적 노드 검색부(102)에서는 도 2의 알고리즘에 따라 새로운 최적 노드를 결정하고 검색 정보 전송부(103)는 새롭게 결정된 최적 노드의 노드 식별자를 요구 노드로 전송하여 단절된 시점 이후부터 새로운 최적 노드로부터 파일 블록을 전송받을 수 있도록 한다.
한편, 요구 노드(20)는 검색 장치(10)에게 일차적으로 최적 전송 노드의 할당을 요구하고, 전송 노드를 할당받아 파일을 전송받는 도중에도 수시로 검색 장치(10)에게 자신의 다운로드 상태 정보(예컨대, 파일의 다운로드율, 다운로드 속도 등)를 전달하게 되는데 전송 상태 감시부(106)가 이러한 요구 노드(20)의 전달 정보를 받아 처리한다. 도 7은 요구 노드(20)가 검색 장치(10)에게 전송 노드의 할당을 요청하는지 아니면 다운로드 정보를 전송하는 것인지를 판단하여 전송 노드를 할당하든지 아니면 다운로드 정보를 갱신하는 등의 기능을 수행하는 방법의 흐름도이다. 우선, 검색 장치(10)는 단계(S701)에서 요구 노드(20)로부터의 신호가 최적 전송 노드의 할당 요청인지를 판단하여 할당 요청이면 요구 노드의 파일 정보 수신부(101)에서 파일 정보를 수신하고(S711) 최적 노드 검색부(102)에서 최적 노드를 검색하여(S713) 검색 정보 전송부(103)에서 최적 전송 노드의 식별자와 블록 할당 정보를 요구 노드(20)로 전송하며(S715), 할당 요청이 아니라면 단계(S703)로 진행하여 요구 노드(20)로부터의 신호가 다운로드 정보인지를 판단하여 다운로드 정보라면 노드 정보 저장부(104)의 요구 노드 정보를 갱신하고(S705) 단계(S707)로 진행하여 요구 노드(20)의 접속이 끊겼는지를 판단하며, 단계(S703)에서 다운로드 정보가 아닌 경우에도 단계(S707)로 진행하여 요구 노드(20)의 접속이 끊겼는지를 판단한다. 단계(S707)에서 접속이 끊겼다고 판단된 경우에는 단계(S709)로 진행하여 요구 노드(20)와의 서버 소켓을 닫고 노드 정보 저장부(104)에서 요구 노드를 삭제하며, 접속이 끊기지 않은 경우에는 단계(S701)로 진행하여 다시 요구 노드(20)로부터의 신호를 기다린다.
이상 본 발명의 실시예에 대해 설명하였지만, 본 발명의 기술 사상의 범위는 이 실시예에 한정되는 것은 아니며, 본 발명의 기술분야에서 통상의 지식을 가진 자라면 본 발명의 기술 사상의 범위를 벗어나지 않고서도 얼마든지 변형예를 도출할 수 있음을 유의해야 한다.