KR101231294B1 - 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치 - Google Patents

데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치 Download PDF

Info

Publication number
KR101231294B1
KR101231294B1 KR1020110052405A KR20110052405A KR101231294B1 KR 101231294 B1 KR101231294 B1 KR 101231294B1 KR 1020110052405 A KR1020110052405 A KR 1020110052405A KR 20110052405 A KR20110052405 A KR 20110052405A KR 101231294 B1 KR101231294 B1 KR 101231294B1
Authority
KR
South Korea
Prior art keywords
streams
data
network congestion
rate
congestion rate
Prior art date
Application number
KR1020110052405A
Other languages
English (en)
Other versions
KR20120133658A (ko
Inventor
송성학
우경은
이창훈
오규삼
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020110052405A priority Critical patent/KR101231294B1/ko
Priority to JP2012123469A priority patent/JP5405625B2/ja
Priority to US13/484,909 priority patent/US9059936B2/en
Priority to EP12170212.0A priority patent/EP2530889B1/en
Priority to CN201210176929.0A priority patent/CN102811166B/zh
Publication of KR20120133658A publication Critical patent/KR20120133658A/ko
Application granted granted Critical
Publication of KR101231294B1 publication Critical patent/KR101231294B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/34Signalling channels for network management communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치가 개시된다. 병렬 수신을 위한 스트림 제어 방법은, 복수 개의 연결된 스트림들을 이용하여 데이터를 병렬 수신하고, 복수 개의 스트림들 별로 수신되는 데이터의 전송속도의 변화를 이용하여 네트워크 혼잡률을 산출하고, 산출된 네트워크 혼잡률에 기초하여 복수 개의 스트림들의 연결 개수를 조절하며, 조절된 개수의 스트림들을 이용하여 데이터를 병렬 수신할 수 있다.

Description

데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치{Stream Controlling Method and Apparatus for Parallel Receiving of Data}
본 발명은 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치에 관한 것으로, 보다 상세하게는 네트워크 혼잡률과 임계값에 기초하여 병렬 스트림의 연결 개수를 제어할 수 있는 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치에 관한 것이다.
고성능의 모바일 디바이스의 사용이 빠르게 확산됨에 따라대용량 파일의 전송 속도가 느려지는 현상이 자주 발생하고 있다. 이는, 한정된 네트워크 대역폭 내에서 모바일 디바이스들의 수요를 그대로 수용하게 되어 많은 모바일 디바이스들이 네트워크 대역폭을 사용하게 되며, 결과적으로 네트워크 응답의 저하를 가져오기 때문이다. 이러한 문제를 해결하기 위하여, 기존에는 하드웨어 장비를 업그레이드하여 데이터 가속 전송 방식을 사용하고 있으나, 이는 투자 비용이 많이 소요된다.
한편, 파일을 전송하는 파일 전송 프로그램의 일 예로 하나의 TCP(Transmission Control Protocol) 스트림을 사용하는 방식을 들 수 있다. 하나의 TCP 스트림을 사용하는 방식은, 예를 들어, 클라우드 기반의 시스템에서 서버와 클라이언트 간에 하나의 TCP 연결을 맺어서 하나의 채널을 통해 데이터를 전송하는 것이다. 그러나, 기존의 파일 전송 프로그램은 하나의 채널을 통해 데이터를 전송하므로 데이터 전송 시 패킷 손실이 많이 발생하거나 RTT(Round Trip Time)가 긴 네트워크에서는 전송 효율이 급격이 떨어지게 된다.
이러한 문제를 해결하기 위해 기존에는 병렬 스트림 전송 방식을 사용하고 있으나, 병렬 스트림의 연결 개수 역시 패킷 손실과 RTT에 의존하여 산출되므로, 병렬 스트림의 연결 개수를 구하는 알고리즘이 복잡하다. 또한, 패킷 손실과 RTT에 의존하는 경우, 상기 알고리즘은 시스템 콜에 의존하여 패킷 손실과 RTT를 알 수 있으므로, 각 시스템 별로 운영체제(OS: Operating System)의 커널을 바꾸어야 하므로 개발의 어려움이 수반된다.
따라서, 본 발명은 데이터를 병렬 스트림을 이용하여 전송하되, 네트워크 상황에 따라 스트림의 연결 개수를 적응적으로 조절하여 개선된 속도로 데이터를 송수신할 수 있는 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치를 제공함을 목적으로 한다.
또한, 본 발명은 패킷 손실이나 RTT를 별도로 산출하지 않고도 스트림의 연결 개수를 조절할 수 있는 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치를 제공함을 목적으로 한다.
본 발명의 일 실시예에 따르면, 복수 개의 연결된 스트림들을 이용하여 데이터를 병렬 수신하는 단계; 상기 복수 개의 스트림들 별로 수신되는 데이터의 전송속도의 변화를 이용하여 네트워크 혼잡률을 산출하는 단계; 상기 산출된 네트워크 혼잡률에 기초하여 상기 복수 개의 스트림들의 연결 개수를 조절하는 단계; 및 상기 조절된 개수의 스트림들을 이용하여 상기 데이터를 병렬 수신하는 단계;를 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법이 제공된다.
한편, 본 발명의 다른 실시예에 따르면, 복수 개의 스트림들을 이용하여 데이터를 병렬 수신하는 통신부; 및 상기 복수 개의 스트림들 별로 수신되는 데이터의 전송속도의 변화를 이용하여 네트워크 혼잡률을 산출하고, 상기 산출된 네트워크 혼잡률에 기초하여 상기 복수 개의 스트림들의 연결 개수를 조절하는 병렬 연결 관리부;를 포함하며, 상기 통신부는 상기 병렬 연결 관리부에 의해 조절된 연결 개수의 스트림들을 이용하여 상기 데이터를 병렬 수신한다.
본 발명의 실시예에 따르면, 시스템 콜에 의존하여 획득되는 패킷 손실률과 RTT를 사용하지 않고 이중 이동 평균 알고리즘을 이용하여 보다 간단히 네트워크 혼잡률을 산출할 수 있다.
또한, 본 발명의 실시예에 따르면, 네트워크 혼잡률과 적어도 하나의 임계값을 비교하여 스트림 연결 개수를 증감하므로, 네트워크 상황에 따라 적응적으로 스트림 연결 개수를 조절할 수 있다.
또한, 본 발명의 실시예에 따르면, 네트워크 상태에 영향을 주지 않는 범위 내에서 현재의 네트워크 상태를 고려하여 가장 빠른 속도로 데이터를 병렬 전송할 수 있는 스트림 개수를 설정할 수 있다.
또한, 본 발명의 실시예에 따르면, 복수 개의 스트림들을 이용하여 수신된 데이터의 전송속도를 기반으로 스트림 연결 개수를 제어하므로, 네트워크의 응용계층에 기반한 로직처리로 인해 OS의 커널을 바꾸거나 RTT나 패킷 손실률과 같은 시스템 콜을 필요로 하지 않는다. 따라서, OS의 종류에 관계없이 데이터를 고속으로 보내려는 서버 또는 디바이스와 수신하는 서버 또는 디바이스에 간단한 소프트웨어의 설치만으로 데이터 고속 병렬 전송을 구현할 수 있다.
도 1은 본 실시예에 따른 데이터의 병렬 전송을 위한 송수신 시스템을 도시한 도면,
도 2는 본 발명의 일 실시예에 따른 데이터의 병렬 전송을 위한 제1데이터 전송 장치 및 제1데이터 수신 장치를 도시한 블록도,
도 3은 상술한 단위 윈도우를 설명하기 위한 예시도,
도 4a는 본 실시예에 따른 이중 이동 평균 알고리즘을 이용하여 네트워크 혼잡률을 산출하는 일 예를 설명하기 위한 예시도,
도 4b는 도 4a의 제1 내지 제3단위 윈도우들을 각각 도시한 도면,
도 5는 본 발명의 다른 실시예에 따른 데이터의 병렬 전송을 위한 제2데이터 전송 장치 및 제2데이터 수신 장치를 도시한 블록도,
도 6은 일 실시예에 따른 파일 블록의 구조를 도시한 도면,
도 7은 본 발명의 실시예에 따른 데이터의 병렬 수신을 위한 스트림 제어 방법을 설명하기 위한 흐름도,
도 8은 도 7의 S770단계에 기재된 스트림 연결 개수를 계산하는 방법을 설명하기 위한 흐름도, 그리고,
도 9는 본 발명의 다른 실시예에 따른 데이터의 병렬 수신을 위한 스트림 제어 방법을 설명하기 위한 흐름도이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다. 본 명세서에서, 어떤 구성요소가 다른 구성요소 상에 있다고 언급되는 경우에 그것은 다른 구성요소 상에 직접 형성될 수 있거나 또는 그들 사이에 제 3의 구성요소가 게재될 수도 있다는 것을 의미한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprises)' 및/또는 '포함하는(comprising)'에 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하, 도면을 참조하여 본 발명을 상세히 설명하도록 한다. 아래의 특정 실시예들을 기술하는데 있어서, 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용들이 없어도 사용될 수 있다는 것을 인지할 수 있다. 어떤 경우에는, 발명을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분들은 본 발명을 설명하는 데 있어 별 이유 없이 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
도 1은 본 실시예에 따른 데이터의 병렬 전송을 위한 송수신 시스템을 도시한 도면이다.
도 1을 참조하면, 데이터의 병렬 전송을 위한 송수신 시스템은 데이터 전송 장치(10)와 데이터 수신 장치(20)를 포함한다. 데이터 전송 장치(10)는 후술할 제1데이터 전송 장치(100) 또는 제2데이터 전송 장치(300)이고, 데이터 수신 장치(20)는 제1데이터 수신 장치(200) 또는 제2데이터 수신 장치(400)일 수 있다.
데이터 전송 장치(10)와 데이터 수신 장치(20) 사이에는 데이터의 병렬 전송을 위한 복수 개의 스트림들(S1, S2, …, SN, N은 정수)이 마련된다. 복수 개의 스트림들(S1, S2, …, SN)은 적어도 하나의 포트에 마련되나, 서로 다른 대역폭을 가지는 멀티 채널로 구현될 수 있다. 일 예로, 데이터 전송 장치(10)와 데이터 수신 장치(20)는 TCP(Transmission Control Protocol) 채널을 통해, 파일을 병렬 스트리밍 전송 방식으로 송수신할 수 있으며, 이에 한정되지는 않는다.
본 실시예에 따르면, 데이터 전송을 위해 연결되는 스트림들(S1, S2, …, SN)의 개수는 데이터가 전송되는 네트워크의 혼잡률에 따라 실시간으로 증가되거나 감소될 수 있다. 즉, 데이터 전송 장치(10)와 데이터 수신 장치(20) 사이의 데이터 전송을 위해 연결되는 스트림들(S1, S2, …, SN)의 개수는 네트워크 혼잡률에 기초하여 지수적으로 증가되거나 선형적으로 감소될 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터의 병렬 전송을 위한 제1데이터 전송 장치 및 제1데이터 수신 장치를 도시한 블록도이다.
도 2를 참조하면, 제1데이터 전송 장치(100)는 제1소켓 관리부(110), 제1제어정보 관리부(120), 제1통신부(130) 및 제1디스크 제어부(140)를 포함한다.
제1소켓 관리부(110)는 타겟데이터의 전송 요청이 수신되면, 타겟데이터의 속성정보를 포함하는 기본제어정보를 제1데이터 수신 장치(200)로 전송하기 위한 소켓을 생성한다. '소켓'은 타겟데이터의 전송을 위해 제1데이터 전송 장치(100)와 제1데이터 수신 장치(200)를 연결하는 소프트웨어적 장치로서, 하나의 소켓은 하나의 스트림을 구성할 수 있다. '스트림'은 타겟데이터를 전송하는 전송매체로서, 복수 개의 스트림들이 구성되는 경우 멀티 채널이 형성되어 타겟데이터는 병렬 전송이 가능하다.
제1소켓 관리부(110)는 초기에 사용될 스트림의 연결 개수를 제1통신부(130)와 제2통신부(210)에서 사용가능한 대역폭을 최대한 사용할 수 있는 최대 연결 개수로 설정하고, 설정된 최대 연결 개수만큼의 소켓을 생성할 수 있다. '초기'는 타겟데이터를 처음 제2데이터 수신 장치(400)로 전송할 때를 의미한다.
제1제어정보 관리부(120)는 제1소켓 관리부(110)에서 소켓 생성이 완료되면, 기본제어정보를 구성한다. 기본제어정보는 타겟데이터의 전송을 위해 초기에 제1데이터 전송 장치(100)와 제1데이터 수신 장치(200)가 공유하는 정보이다.
기본제어정보는 전송할 타겟데이터의 파일명, 파일 사이즈, 스트림의 개수, 디스크 버퍼 사이즈, 전체 블럭 개수, 소켓 버퍼 사이즈, IP 주소, 포트 정보 및 세션 ID(identification) 등의 정보를 포함한다. 스트림의 개수는 제1소켓 관리부(110)에서 초기 생성된 최대 연결 개수이고, 디스크 버퍼 사이즈는 디스크에 데이터를 쓰기 위해 버퍼에 할당된 블록의 크기, 소켓 버퍼 사이즈는 전송 프로토콜의 커널단에서 사용하는 버퍼의 크기, IP 주소는 데이터 전송에 사용되는 IP의 주소, 포트 정보는 데이터 전송에 사용되는 포트의 정보, 세션 ID는 각 스트림의 ID이다.
제1통신부(130)는 제1소켓 관리부(110)에서 생성된 사용가능한 최대 연결 개수만큼의 소켓들을 이용하여 복수 개의 스트림들을 구성하고, 구성된 스트림들과 정해진 프로토콜을 이용하여 제1데이터 수신 장치(200)와 통신할 수 있다. 제1통신부(130)는 제1제어정보 관리부(120)에서 구성된 기본제어정보를 소켓의 스트림을 이용하여 제1데이터 수신 장치(200)에게 전송한다. 제1통신부(130)는 기본제어정보를 복수 개의 스트림들을 이용하여 병렬 전송할 수도 있다.
기본제어정보가 전송된 후, 제1통신부(130)는 타겟데이터를 복수 개의 스트림들을 이용하여 제1데이터 수신 장치(200)에게 병렬 전송한다.
제1디스크 제어부(140)는 HDD(Hard Disk Drive)와 같은 저장매체에 기록된 타겟데이터를 읽어와 제1통신부(130)에게 제공한다. 제1디스크 제어부(140)는 타겟데이터를 디스크 버퍼 사이즈에 해당하는 크기로 분할하여 읽을 수 있다.
제1통신부(130)는 초기에 설정된 최대 연결 개수의 스트림들을 이용하여 타겟데이터를 제1데이터 수신 장치(200)에게 병렬전송할 수 있다.
타겟데이터를 전송하는 동안, 제1데이터 수신 장치(200)로부터 변경된 스트림들의 연결 개수가 통지되면, 제1소켓 관리부(110)는 이전에 사용하도록 연결된 스트림의 개수를 조절한다. 예를 들어, 기본제어정보에 포함된 최대 연결 개수가 5개이나, 제1데이터 수신 장치(200)로부터 사용가능한 스트림의 개수로 3이 통지되면, 제1소켓 관리부(110)는 사용가능한 스트림의 개수를 3개로 조절한다. 따라서, 제1통신부(130)는 3개의 스트림들을 이용하여 타겟데이터를 병렬전송한다.
한편, 제1데이터 수신 장치(200)는 제2통신부(210), 제2제어정보 관리부(220), 제2소켓 관리부(230), 제2디스크 제어부(240), 전송속도 산출부(250), 메모리(260) 및 병렬 연결 관리부(270)를 포함한다.
제2통신부(210)는 제1데이터 전송 장치(100)로부터 기본제어정보를 수신하여 제2제어정보 관리부(220)에게 제공한다.
제2제어정보 관리부(220)는 제2통신부(210)로부터 제공받은 기본제어정보를 파싱하여 기본제어정보에 포함된 정보들을 확인한다. 제2제어정보 관리부(220)는 확인된 정보들에 근거하여 타겟데이터의 수신에 필요한 환경을 설정한다. 예를 들어, 제2제어정보 관리부(220)는 기본제어정보에 포함된 최대 연결 개수와 소켓 버퍼 사이즈를 제2소켓 관리부(230)에게 알려준다. 또한, 제2제어정보 관리부(220)는 파일명, 파일 사이즈, 디스크 버퍼 사이즈 및 전체 블럭 개수를 제2디스크 제어부(240)에게 알려주고, IP 주소, 포트 정보 및 세션 ID를 제2통신부(210)에게 알려준다.
제2소켓 관리부(230)는 제2제어정보 관리부(220)로부터 제공받은 최대 연결 개수와 소켓 버퍼 사이즈에 근거하여 초기 연결할 스트림 개수를 설정하고, 설정된 개수만큼의 소켓을 생성할 수 있다. 제2소켓 관리부(230)는 소켓 버퍼 사이즈에 해당하는 크기를 갖는 소켓을 생성할 수 있다. 따라서, 제2통신부(210)는 생성된 소켓의 개수에 해당하는 스트림들을 구성하고, 복수 개의 스트림들과 정해진 프로토콜을 이용하여 제1데이터 전송 장치(100)로부터 타겟데이터를 병렬 수신하며, 수신된 타겟데이터를 제2디스크 제어부(240)에게 제공할 수 있다.
제2디스크 제어부(240)는 제2제어정보 관리부(220)로부터 제공받은 파일명, 파일 사이즈, 디스크 버퍼 사이즈 및 전체 블럭 개수에 근거하여, 수신된 타겟데이터를 HDD와 같은 저장매체에 저장할 수 있다. 특히, 제2디스크 제어부(240)는 디스크 버퍼 사이즈와 전체 블럭 개수를 참조하여 타겟데이터를 버퍼에 임시 저장한 후 디스크에 저장한다.
전송속도 산출부(250)는 복수 개의 스트림들을 이용하여 병렬 수신되는 타겟데이터의 전송속도를 각 스트림 별로 산출할 수 있다. 전송속도는 네트워크 트래픽과 같은 네트워크 혼잡률의 영향을 받는다. 즉, 네트워크 혼잡률이 클수록 데이터의 전송속도는 감소하고, 네트워크 혼잡률이 작을수록 데이터의 전송속도는 증가할 수 있다. 따라서, 산출된 전송속도는 네트워크 혼잡률을 예측하고, 예측된 네트워크 혼잡률에 기초하여 스트림의 연결개수를 조절하는데 사용될 수 있다.
이를 위하여, 전송속도 산출부(250)는 사전에 정해진 모니터링 시점마다 또는 모니터링 주기마다 각 스트림 별로 타겟데이터의 전송속도를 산출할 수 있다. 후술할 도 3의 경우 t, t-1, t-2 등이 모니터링 시점이며, 는 모니터링 주기에 해당한다. 모니터링 주기가 경과하면 전송속도를 산출해야 할 모니터링 시점이 되므로, 모니터링 주기 또는 모니터링 시점은 결과적으로 동일한 의미로 사용될 수 있다. 따라서, 이하에서는 설명의 편의를 위하여 모니터링 주기와 모니터링 시점을 혼용한다.
메모리(260)는 휘발성 메모리 또는 비휘발성 메모리로서, 전송속도 산출부(250)에서 산출된 각 스트림 별 타겟데이터의 전송속도를 모니터링 시점마다 저장할 수 있다. [표 1]은 메모리(260)에 저장되는 각 스트림 별로 저장되는 타겟데이터의 전송속도의 일 예를 보여준다.
스트림의 ID 모니터링 시점
t-4 t-3 t-2 t-1 t
S1 600kbps 620kbps 590kbps 610kbps 620kbps
S2 610kbps 500kbps 580kbps 610kbps 610kbps
S3 595kbps 580kbps 580kbps 600kbps 620kbps
[표 1]을 참조하면, 'bps'는 데이터의 전송속도의 단위로서, '비트/초'를 의미한다. 즉, 'bps'는 단위시간당 전달받은 비트수에 해당한다. 가장 최근의 모니터링 시점(t)에서 제1스트림(S1)으로 수신된 타겟데이터의 전송속도는 620kbps, 제2스트림(S2)으로 수신된 타겟데이터의 전송속도는 610kbps, 제3스트림(S3)으로 수신된 타겟데이터의 전송속도는 620kbps임을 알 수 있다.
병렬 연결 관리부(270)는 복수 개의 스트림들 별로 수신되는 타겟데이터의 전송속도의 변화를 이용하여 네트워크 혼잡률을 산출한다. 그리고, 병렬 연결 관리부(270)는 산출된 네트워크 혼잡률에 기초하여, 이전에 설정된 복수 개의 스트림들의 연결 개수를 조절할 수 있다.
이를 위하여, 병렬 연결 관리부(270)는 네트워크 혼잡률 산출부(271) 및 연결 개수 계산부(273)를 포함한다.
네트워크 혼잡률 산출부(271)는 복수 개의 스트림들 별로 수신되는 데이터의 전송속도를 메모리(260)로부터 모니터링 시점마다 확인하고, 확인 결과로부터 전송속도가 감소한 스트림의 개수를 각 단위 윈도우마다 확인한다. 네트워크 혼잡률 산출부(271)는 각 단위 윈도우마다 확인된 전송속도가 감소한 스트림의 개수를 이용하여 네트워크 혼잡률을 산출할 수 있다.
자세히 설명하면, 네트워크 혼잡률 산출부(271)는 감소 스트림 비율을 각 단위 윈도우 별로 산출하고, 산출된 감소 스트림 비율을 각 단위 윈도우의 네트워크 혼잡률인 서브 네트워크 혼잡률로 정한다. '감소 스트림 비율'은 다음 [수학식 1]처럼 표시할 수 있다.
Figure 112011041042322-pat00001
[수학식 1]의 감소 스트림 비율은 하나의 단위 윈도우에 대한 비율로서, 단위 윈도우에서 사용된 전체 스트림 개수 중 이전에 비해 타겟데이터의 전송속도가 감소한 스트림의 개수를 나타낸다. 네트워크 혼잡률 산출부(271)는 [수학식 1]을 이용하여 단위 윈도우 별로 감소 스트림 비율을 산출하고, 산출된 각 감소 스트림 비율을 각 단위 윈도우의 서브 네트워크 혼잡률로 정한다. 만약, 현재 모니터링 시점에 형성되는 단위 윈도우에서 타겟데이터 전송에 사용된 스트림의 전체 개수가 15개이고, 전송속도가 감소한 스트림의 개수가 5개이면, 단위 윈도우의 서브 네트워크 혼잡률은
Figure 112011041042322-pat00002
이 된다.
그리고, 네트워크 혼잡률 산출부(271)는 각 단위 윈도우마다 산출된 서브 네트워크 혼잡률들의 평균을 네트워크 혼잡률로 정할 수 있다. 네트워크 혼잡률 산출부(271)는 각 단위 윈도우마다 산출된 서브 네트워크 혼잡률들을 단위 윈도우들의 개수로 나누어 상기 평균(즉, 네트워크 혼잡률)을 구할 수 있다. 네트워크 혼잡률 산출부(271)는 [수학식 1]을 이용하여 네트워크 혼잡률을 산출할 수 있다.
Figure 112011041042322-pat00003
[수학식 2]를 참조하면, Ct는 현재 모니터링 시점에서의 네트워크 혼잡률, l은 네트워크 혼잡률에 사용되는 단위 윈도우의 개수, k는 각 단위 윈도우에 사용되는 모니터링 시점의 개수이다. at는 현재 모니터링 시점에서 각 단위 윈도우 별로 타겟데이터의 전송에 사용된 전체 스트림의 개수, nt는 현재 모니터링 시점에 해당하는 단위 윈도우 내에서 속도저하가 일어난 스트림의 개수이다. l은 네트워크 혼잡률에 사용되는 단위 윈도우의 개수이므로 서브 네트워크 혼잡률들의 평균을 산출하는데 사용된다.
[수학식 2]에서
Figure 112011041042322-pat00004
네트워크 혼잡률에 사용된 단위 윈도우들 별로 '전송속도가 감소한 스트림의 개수를 단위 윈도우에서 사용된 스트림의 개수로 나눈 결과'를 모두 합한 값으로서, 후술할 도 4a의 경우, '
Figure 112011041042322-pat00005
'일 수 있다.
각 단위 윈도우에서 타겟데이터의 전송에 사용되는 전체 스트림의 개수가 단위 윈도우마다 동일한 경우, [수학식 2]는 [수학식 3]과 같이 간단하게 정의될 수 있다.
Figure 112011041042322-pat00006
[수학식 3]을 참조하면,
Figure 112011041042322-pat00007
는 네트워크 혼잡률에 사용된 단위 윈도우들마다 전송속도가 감소한 스트림의 개수를 합한 결과로서, 후술할 도 4a의 경우 '9+9+8=26'일 수 있다.
[수학식 1] 내지 [수학식 3]을 참조하여 설명한 네트워크 혼잡률 산출부(271)의 동작은 본 실시예에서 제안하는 이중 이동 평균 알고리즘에 해당할 수 있다. 이중 이동 평균 알고리즘은 도 4a 및 도 4b를 참조하여 후술한다.
한편, 네트워크 혼잡률 산출부(271)는 네트워크 혼잡률 산출에 사용되는 단위 윈도우의 개수와 모니터링 주기를 유선 네트워크 또는 무선 네트워크의 상황에 따라 변경할 수 있다. 네트워크의 상황은 예를 들어, 패킷 손실률과 패킷 왕복시간(RTT: Round Trip Time)을 포함한다.
예를 들어, 패킷 손실률이 커지거나 RTT가 커져 네트워크 상황이 악화되면, 네트워크 혼잡률 산출부(271)는 모니터링 주기를 증가시키거나, 단위 윈도우의 개수, 또는 단위 윈도우에 속하는 모니터링 시점의 개수를 증가시킬 수 있다. 반대로, 네트워크의 상황이 호전되면 네트워크 혼잡률 산출부(271)는 네트워크 혼잡률 산출에 사용되는 모니터링 주기를 감소시키거나 단위 윈도우의 개수 또는 단위 윈도우에 속하는 모니터링 시점의 개수를 감소시킬 수 있다. 또한, 네트워크의 상태가 지속적으로 변하는 상황에서는, 네트워크 혼잡률 산출부(271)는 모니터링 주기를 빠르게 하고, 네트워크 상태가 변하는 주기가 상대적으로 길어지는 상황에서는, 모니터링 주기를 느리게 할 수 있다.
상술한 '단위 윈도우'는 복수 개의 모니터링 시점들동안 사용된 스트림들로 이루어지며, 각 단위 윈도우는 모니터링 시점을 기준으로 이동 평균 알고리즘에 의해 변경될 수 있다. 단위 윈도우에 대해서는 도 3을 참조하여 보다 자세히 후술하고, 네트워크 혼잡률을 이중 이동 평균과 [수학식 2]를 이용하여 산출하는 방식에 대해서는 도 4a 및 도 4b를 참조하여 보다 자세히 후술한다.
한편, 연결 개수 계산부(273)는 네트워크 혼잡률 산출부(271)에서 산출된 네트워크 혼잡률에 기초하여, 이전에 연결된 복수 개의 스트림들의 연결 개수를 지수적으로 증가시키거나 선형적으로 감소시킬 수 있다. 이를 위하여, 연결 개수 계산부(273)는 산출된 네트워크 혼잡률과 설정된 적어도 하나의 임계값을 비교하고, 비교 결과에 따라 스트림들의 연결 개수를 증감시킬 수 있다.
자세히 설명하면, 연결 개수 계산부(273)는 산출된 네트워크 혼잡률이 제1임계값(TH1) 이하이면, 연결되어 있는 복수 개의 스트림들의 연결 개수를 이전보다 지수적으로 증가시킬 수 있다.
또한, 연결 개수 계산부(273)는 산출된 네트워크 혼잡률이 제1임계값(TH1)보다 크고 제2임계값(TH2) 이하이면, 복수 개의 스트림들의 연결 개수를 이전보다 1개 감소시킬 수 있다. '1'은 일 예로서 변경가능하다.
또한, 연결 개수 계산부(273)는 산출된 네트워크 혼잡률이 제2임계값(TH2)보다 크고 제3임계값(TH3) 이하이면, 복수 개의 스트림들의 연결 개수를 이전보다 m%(여기서, 상기 복수 개의 스트림들의 연결 개수×m%는 상기 1보다 큼) 감소시킬 수 있다. 'm'은 (복수 개의 스트림들의 연결 개수×m%)≥1이 되도록 하는 상수이다. 일 실시예에서, m은 10, 20 및 30 중 하나일 수 있다.
만약, (복수 개의 스트림들의 연결 개수×m%)의 결과가 소숫점으로 표현되면, 연결 개수 계산부(273)는 결과를 반올림하거나 반내림하여 연결 개수를 조절할 수 있다. 예를 들어, (복수 개의 스트림들의 연결 개수×m%)의 결과가 3.1이고, 복수 개의 스트림들의 연결 개수가 10이면, 연결 개수 계산부(273)는 10-3=7에 의해, 스트림들의 연결 개수를 10개에서 7개로 감소시킬 수 있다.
일 실시예에서, 연결 개수 계산부(273)는 제1임계값(TH1)=0.2, 제2임계값(TH2)=0.5, 제3임계값(TH3)=1을 사용할 수 있으나, 이에 한정되지 않는다. 또한, 연결 개수 계산부(273)에서 사용하는 임계값의 개수 역시 3개에 한정되지 않고 3개 이상 또는 3개 이하가 될 수 있음은 물론이다. 네트워크 혼잡률의 최대값은 1이므로 제3임계값(TH3)의 최대값도 1이다.
병렬 연결 관리부(270)는 이전에 연결된 스트림들의 개수가 조절되면, 조절된 스트림의 개수를 제2소켓 관리부(230)에게 제공한다. 제2소켓 관리부(230)는 조절된 스트림의 개수를 참조하여 사용을 일시 정지할 스트림의 ID를 제2통신부(210)에게 제공한다. 제2통신부(210)는 제공받은 스트림의 ID를 제1통신부(130)에게 전송한다. 이후, 제1통신부(130)와 제2통신부(210)는 일시 정지된 스트림을 제외한 나머지 스트림들을 이용하여 타겟데이터를 병렬로 송수신할 수 있다.
도 3은 상술한 단위 윈도우를 설명하기 위한 예시도이다.
도 3을 참조하면, t는 현재 모니터링할 시점, t-1은 이전 모니터링 시점, t-2는 t-1 이전의 모니터링 시점이다. 따라서, t와 t-1의 시간차이는 모니터링 주기에 해당한다. 도 3의 실시예에서, 제1단위 윈도우(W1)는 3개의 모니터링 시점들로 이루어지거나, 또는 3개의 모니터링 시점들 동안 사용된 15개의 스트림들로 이루어진다. S1 내지 S5는 각 모니터링 시점마다 데이터 전송에 사용된 스트림의 ID이다.
●은 이전 모니터링 시점에 비해 전송속도가 증가하였거나 동일하거나 10% 미만으로 감소한 스트림, ×는 이전 모니터링 시점에 비해 전송속도가 10% 이상 감소한 스트림을 나타낸다. 현재 모니터링 시점(t)과 이전 모니터링 시점(t-1)을 비교하면, 제1스트림(S1)으로 수신된 타겟데이터의 전송속도는 현재 모니터링 시점(t)에서 이전 모니터링 시점(t-1)에 비해 감소하였음을 알 수 있다. 10%와 단위 윈도우를 이루는 모니터링 시점들의 개수인 3은 일 예로서 이에 한정되지 않는다.
제1단위 윈도우(W1)에서 사용된 전체 스트림 개수는 15개이고, 타겟데이터의 전송속도가 감소한 스트림의 개수(즉, ×의 개수)는 9개이다. 따라서, 제1단위 윈도우(W1)의 감소 스트림 비율, 즉, 서브 네트워크 혼잡률을 [수학식 1]을 참조하여 산출하면, 다음과 같다.
Figure 112011041042322-pat00008
이러한 감소 스트림 비율은 제1단위 윈도우(W1)에서 전송속도가 감소한 스트림의 개수 대비 단위 윈도우 내 전체 스트림 개수의 평균값일 수 있다.
도 4a는 본 실시예에 따른 이중 이동 평균 알고리즘을 이용하여 네트워크 혼잡률을 산출하는 일 예를 설명하기 위한 예시도, 도 4b는 도 4a의 제1 내지 제3단위 윈도우들을 각각 도시한 도면이다.
도 4a 및 도 4b를 참조하면, W1, W2 및 W3는 각각 네트워크 혼잡률을 산출하기 위해 사용되는 제1 내지 제3단위 윈도우들이다. 제1단위 윈도우(W1)는 도 3을 참조하여 설명한 단위 윈도우와 동일하다. 즉, 제1단위 윈도우(W1)는 3개의 모니터링 시점들인 (t, t-1, t-2)로 이루어진다. 제2단위 윈도우(W2)는 제1단위 윈도우(W1) 이전의 윈도우로서, 3개의 모니터링 시점들인 (t-1, t-2, t-3)으로 이루어진다. 제3단위 윈도우(W3)는 제2단위 윈도우(W2) 이전의 윈도우로서, 3개의 모니터링 시점들인 (t-2, t-3, t-4)로 이루어진다.
네트워크 혼잡률 산출부(271)는 제1 내지 제3단위 윈도우들(W1, W2, W3) 각각의 서브 네트워크 혼잡률을 산출한다. 이를 위해, 네트워크 혼잡률 산출부(271)는 이중 이동 평균 알고리즘을 이용한다. 이동 평균은 추세의 변동을 알 수 있도록 구간을 옮겨 가면서 구하는 평균이다. 도 4a의 경우, 제1단위 윈도우(W1)에서의 이동 평균은 제1단위 윈도우(W1)에서 전송속도가 감소한 스트림의 개수 대비 단위 윈도우 내 전체 스트림 개수의 평균값으로서, 감소 스트림 비율 또는 서브 네트워크 혼잡률과 동일한 의미를 갖는다. '이중 이동 평균'은 각 단위 윈도우 별로 산출된 서브 네트워크 혼잡률들의 평균을 더 산출함으로써 정의된 용어이다.
이하에서는 도 4b를 참조하여, 제1 내지 제3단위 윈도우들(W1, W2, W3) 각각의 서브 네트워크 혼잡률을 산출한다.
먼저, 제1단위 윈도우(W1)의 경우, 타겟데이터의 전송에 사용된 전체 스트림의 개수(at)는 15개, 현재 모니터링 시점(t)에 해당하는 제1단위 윈도우(W1) 내에서 속도저하가 일어난 스트림의 개수(nt)는 9개이다. 따라서, 제1단위 윈도우(W1)의 서브 네트워크 혼잡률은
Figure 112011041042322-pat00009
이다.
제2단위 윈도우(W2)의 경우, 타겟데이터의 전송에 사용된 전체 스트림의 개수(at-1)는 15개, 이전 모니터링 시점(t-1)에 해당하는 제2단위 윈도우(W2) 내에서 속도저하가 일어난 스트림의 개수(nt-1)는 9개이다. 따라서, 제2단위 윈도우(W2)의 서브 네트워크 혼잡률은
Figure 112011041042322-pat00010
이다. 이는, 제1단위 윈도우(W1)를 모니터링 주기를 기준으로 이전 모니터링 시점(t-1)으로 이동하여 제2단위 윈도우(W2)를 논리적으로 생성하고, 제2단위 윈도우(W2)의 서브 네트워크 혼잡률을 산출한 것이므로, 제1단위 윈도우(W1)를 기준으로 제2단위 윈도우(W2)에 대해 산출된 이동 평균이다.
제3단위 윈도우(W3)의 경우, 타겟데이터의 전송에 사용된 전체 스트림의 개수(at-2)는 15개, 이전 모니터링 시점(t-2)에 해당하는 제3단위 윈도우(W3) 내에서 속도저하가 일어난 스트림의 개수(nt-2)는 8개이다. 따라서, 제3단위 윈도우(W3)의 서브 네트워크 혼잡률은
Figure 112011041042322-pat00011
이다.
네트워크 혼잡률 산출부(271)는 제1 내지 제3단위 윈도우들(W1, W2, W3) 각각에 대한 서브 네트워크 혼잡률들을 더하고, 더한 값을 제1 내지 제3단위 윈도우들(W1, W2, W3)의 개수인 3으로 나누어 네트워크 혼잡률을 산출한다. 이를, 간단히 보여주는 도면이 도 4a이다.
다시 도 4a를 참조하면, 제1 내지 제3단위 윈도우들(W1, W2, W3) 각각에 사용되는 모니터링 시점의 개수(k)는 3개, 네트워크 혼잡률에 사용되는 단위 윈도우의 개수(l)은 3개, nt는 9개, nt-1은 9개, nt-2는 8개이다. 또한, at, at-1 및 at-2는 각각 15개이다.
네트워크 혼잡률 산출부(271)는 [수학식 1]에 상기 상수들을 대입하여 현재 모니터링 시점(t)에서의 네트워크 혼잡률을 산출할 수 있다.
Figure 112011041042322-pat00012
위 식에서와 같이 현재 모니터링 시점(t)에서의 네트워크 혼잡률은 0.577임을 알 수 있다. 제2임계값(TH2)이 0.5이고, 제3임계값(TH3)이 1인 경우, 0.577은 제2임계값(TH2)과 제3임계값(TH3) 사이에 위치한다. 따라서, 연결 개수 계산부(273)는 St=St-1×(1-m%)를 이용하여 네트워크 상태에 적합한 스트림 개수를 계산할 수 있다. 예를 들어, 이전까지 사용된 스트림 연결 개수가 10개이고, m%의 m이 30인 경우, St=St-1×(1-0.3)=10×0.7=7이므로, 연결 개수 계산부(273)는 계산된 스트림 연결 개수를 제2소켓 관리부(230)에게 제공한다. 이로써, 스트림 연결 개수는 10개에서 7개로 조절된다.
도 5는 본 발명의 다른 실시예에 따른 데이터의 병렬 전송을 위한 제2데이터 전송 장치 및 제2데이터 수신 장치를 도시한 블록도이다.
도 5를 참조하면, 제2데이터 전송 장치(300)는 제3소켓 관리부(310), 제3제어정보 관리부(320), 제3디스크 제어부(330) 및 제1버퍼 관리부(340)를 포함한다. 도 5에 도시된 제3소켓 관리부(310), 제3제어정보 관리부(320) 및 제3디스크 제어부(330)는 도 2를 참조하여 설명한 제1소켓 관리부(110), 제1제어정보 관리부(120), 제1통신부(130) 및 제1디스크 제어부(140)와 유사한 동작을 수행하므로 상세한 설명은 생략한다.
제3소켓 관리부(310)는 타겟데이터의 전송 요청이 수신되면, 타겟데이터의 속성정보를 포함하는 기본제어정보를 제2데이터 수신 장치(400)로 전송하기 위한 소켓을 생성한다. '타겟데이터'는 제2데이터 수신 장치(400)로 전송할 데이터로서, 파일 형태를 가질 수 있다. 따라서, 타겟데이터와 파일은 실질적으로 동일한 의미를 가질 수도 있으며, 도 2에서는 타겟데이터를 예로 들어 설명하였으므로, 이하에서는 파일을 예로 들어 설명한다.
제3소켓 관리부(310)는 초기에 스트림의 연결 개수를 제2데이터 전송 장치(300)와 제2데이터 수신 장치(400)에서 사용가능한 대역폭을 최대한 사용할 수 있는 최대 연결 개수로 설정하고, 설정된 최대 연결 개수만큼의 소켓을 생성할 수 있다. 제3소켓 관리부(310)는 최대 연결 개수만큼의 소켓들을 이용하여 복수 개의 스트림들을 구성하고, 구성된 스트림들과 정해진 프로토콜을 이용하여 제2데이터 수신 장치(400)에게 파일을 병렬 전송할 수 있다.
파일을 전송하는 동안 제2데이터 수신 장치(400)에서 스트림 연결 개수가 조절되면, 제3소켓 관리부(310)는 이전에 사용한 스트림의 연결 개수를 조절하고, 조절된 개수에 대응하는 스트림들을 이용하여 파일을 제2데이터 수신 장치(400)로 병렬전송한다.
제3제어정보 관리부(320)는 제3소켓 관리부(310)에서 복수 개의 스트림들이 생성되면, 기본제어정보를 구성한다. 기본제어정보는 파일의 전송을 위해 초기에 제2데이터 전송 장치(300)와 제2데이터 수신 장치(400)가 공유하는 정보이다.
제3디스크 제어부(330)는 HDD와 같은 저장매체에 기록된 파일을 분할 파일 형태로 읽어와 디스크 버퍼(미도시)에 분할 파일 단위로 저장하고, 디스크 버퍼(미도시)에 저장된 분할 파일을 제1버퍼 관리부(340)에게 전달할 수 있다. 이는, 제3디스크 제어부(330)는 디스크 버퍼 크기(즉, 파일 블록의 크기)에 해당하는 크기로 파일을 분할하여 읽기 때문이다.
제1버퍼 관리부(340)는 제3디스크 제어부(330)에 의해 디스크 버퍼(미도시)로부터 입력되는 분할 파일을 버퍼에 임시 저장한다.
이를 위하여, 제1버퍼 관리부(340)는 제1미사용 버퍼큐(341) 및 제1버퍼큐(343)로 분리되는 버퍼를 포함할 수 있다. 제1버퍼 관리부(340)의 버퍼를 제1미사용 버퍼큐(341)와 제1버퍼큐(343)로 분리하는 이유는 제1버퍼 관리부(340)의 모든 영역을 재사용하기 위함이다. 이는, 자바와 같이 OS에 독립적인 언어를 이용하여 본 실시예를 구현하는 경우, 버퍼를 재사용하지 않음으로써 발생할 수 있는 가비지 콜렉팅(Garbage Collecting)에 의한 오버헤드를 방지하기 위함이다.
제1미사용 버퍼큐(341)는 디스크 버퍼(미도시)로부터 입력되는 분할 파일을 임시 저장하기 위한 복수 개의 파일 블록들을 포함할 수 있다. 하나의 파일 블록에는 하나의 분할 파일이 저장될 수 있다. 또는, 파일 블록은 분할 파일을 파일 블록에 할당된 크기로 다시 분할하여 저장할 수도 있으며, 이러한 경우, 하나의 분할 파일은 복수 개의 파일 블록들에 분산 저장될 수 있다. 본 실시예에서는 후자를 예로 들어 설명한다.
제1미사용 버퍼큐(341)의 파일 블록에 분할 파일이 저장되면, 제1버퍼 관리부(340)는 파일 블록을 제1버퍼큐(343)에 저장할 수 있다.
제1버퍼큐(343)는 제1미사용 버퍼큐(341)로부터 입력되는 파일 블록을 임시저장한다. 제1 버퍼큐(343)에 저장된 파일블럭은 네트워크를 통해 제2데이터 수신 장치(400)에게 전달되어지고 이후 사용된 파일블럭은 재사용을 위해 제1미사용 버퍼큐(341)에 다시 반납되어진다. 제1미사용 버퍼큐(341)와 제1버퍼큐(343)는 선입선출 방식에 기초하여 적어도 하나의 파일 블록을 임시저장한다.
도 6은 일 실시예에 따른 파일 블록의 구조를 도시한 도면이다.
도 6을 참조하면, 파일 블록은 헤더 및 페이로드로 구분된다. 헤더에는 파일 블록이 데이터임을 알려주는 태그 정보, 파일을 식별하기 위한 파일 고유의 ID 정보, 제3소켓 관리부(310)가 읽어온 분할 파일이 파일의 어느 위치에 속하는지를 알려주는 데이터 주소 정보 및 읽어온 분할 파일의 크기 정보(즉, 페이로드의 크기 정보)가 기록될 수 있다. 페이로드에는 분할 파일에 포함된 실제 데이터가 페이로드에 해당하는 크기만큼 기록될 수 있다.
도 6과 같은 파일 블록은 제2데이터 전송 장치(300)뿐만 아니라 제2데이터 수신 장치(400)의 제2버퍼 관리부(430)에서도 동일하게 사용될 수 있다. 따라서, 제2데이터 수신 장치(400)는 파일 블록의 데이터 주소 정보로부터 현재 수신된 분할 파일이 파일의 어느 위치에 속하는지를 파악할 수 있다.
다시 도 5를 참조하면, 제3소켓 관리부(310)는 제1버퍼큐(343)에 파일 블록이 있는지를 확인하고, 파일 블록이 있으면, 저장된 파일 블록을 읽어와 전송 소켓 버퍼(미도시)에 저장한다. 제3소켓 관리부(310)는 전송 소켓 버퍼(미도시)에 저장된 파일 블록을 복수 개의 스트림들을 이용하여 제2데이터 수신 장치(400)에게 병렬 전송할 수 있다. 제3소켓 관리부(310)는 병렬 전송을 위해 상술한 바와 같이 복수 개의 소켓을 생성하고, 하나의 소켓이 하나의 스트림을 맺도록 함으로써, 분할 파일을 병렬 스트림을 이용하여 병렬 전송할 수 있다.
이때, 제3소켓 관리부(310)는 복수 개의 파일 블록들을 각각의 스트림을 이용하여 병렬 전송하거나, 하나의 파일 블록을 복수 개의 스트림들을 이용하여 전송할 수 있다. 이하에서는 전자의 경우를 예로 들어 설명한다. 다만, 후자의 경우, 제3소켓 관리부(310)는 하나의 파일 블록을 스트림들의 개수만큼 분할하여 복수 개의 스트림들을 이용하여 전송할 수 있다. 예를 들어, 제3소켓 관리부(310)는 파일 블록을 헤더와 페이로드로 분할하고, 헤더도 정보 별로 분할한 후 분할된 각각의 데이터를 복수 개의 스트림들을 이용하여 전송할 수 있다.
한편, 제2데이터 수신 장치(400)는 제4소켓 관리부(410), 제4제어정보 관리부(420), 제2버퍼 관리부(430), 제4디스크 제어부(440) 및 병렬 스트림 관리부(450)를 포함한다. 도 5에 도시된 제4소켓 관리부(410), 제4제어정보 관리부(420), 제4디스크 제어부(440) 및 병렬 스트림 관리부(450)는 도 2를 참조하여 설명한 제2통신부(210), 제2소켓 관리부(230), 제2제어정보 관리부(220), 제2디스크 제어부(240), 전송속도 산출부(250) 및 병렬 연결 관리부(270)와 유사한 동작을 수행하므로 상세한 설명은 생략한다.
제4소켓 관리부(410)는 제2데이터 전송 장치(300)로부터 기본제어정보를 수신하여 제4제어정보 관리부(420)에게 제공한다.
제4제어정보 관리부(420)는 제4통신부(210)로부터 제공받은 기본제어정보를 파싱하여 기본제어정보에 포함된 정보들을 확인한다.
또한, 제4소켓 관리부(410)는 기본제어정보 중 최대 연결 개수와 소켓 버퍼 사이즈에 근거하여 연결할 스트림 개수를 설정하고, 설정된 개수만큼의 소켓을 생성할 수 있다. 그리고, 제4소켓 관리부(410)는 생성된 소켓의 개수에 해당하는 스트림들을 구성하여 제3소켓 관리부(310)와 스트림들이 연결되도록 한다. 제4소켓 관리부(410)는 연결된 복수 개의 스트림들을 이용하여 제2데이터 전송 장치(300)로부터 파일 블록들을 병렬 수신하고, 수신된 파일 블록들을 제2버퍼 관리부(430)에게 제공할 수 있다. 수신된 각 파일 블록은 도 6과 같은 구조를 갖는다.
제2버퍼 관리부(430)는 제2미사용 버퍼큐(431) 및 제2버퍼큐(433)로 분리되는 버퍼를 포함할 수 있다.
제4소켓 관리부(410)에서 수신되는 파일 블록이 있을 경우, 제2미사용 버퍼큐(431)에서 비어 있는 파일블럭을 읽어와 제2버퍼큐(433)에 수신되는 파일 블록을 임시 저장한다.
제2버퍼큐(433)는 제2미사용 버퍼큐(431)로부터 입력되는 파일 블록을 임시저장한다. 제2미사용 버퍼큐(431)와 제2버퍼큐(433)는 선입선출 방식에 기초하여 적어도 하나의 파일 블록을 임시저장한다.
제4디스크 제어부(440)는 기본제어정보 중 파일명, 파일 사이즈, 디스크 버퍼 사이즈 및 전체 블록 개수에 근거하여, 수신된 파일 블록을 HDD와 같은 저장매체에 저장할 수 있다. 특히, 제4디스크 제어부(440)는 디스크 버퍼 사이즈와 전체 블럭 개수를 참조하여, 제2버퍼큐(433)로부터 파일 블록을 읽어와 저장매체에 저장한다.
병렬 스트림 관리부(450)는, 제2데이터 전송 장치(300)로부터 파일 블록들이 병렬 수신되어 제2데이터 수신 장치(400)에 저장되는 동안, 모니터링 주기마다 네트워크 혼잡률을 산출하고, 산출된 네트워크 혼잡률에 기초하여 스트림 연결 개수를 조절할 수 있다.
이를 위하여, 병렬 스트림 관리부(450)는 복수 개의 스트림들을 이용하여 병렬 수신되는 파일 블록의 전송속도를 각 스트림 별로 모니터링 시점마다 산출하여 메모리(미도시)에 저장할 수 있다. 그리고, 병렬 스트림 관리부(450)는 도 4a 및 도 4b를 참조하여 상술한 이중 이동 평균 알고리즘을 이용하여 네트워크 혼잡률을 산출할 수 있다. 간략히 설명하면, 병렬 스트림 관리부(450)는 복수 개의 스트림들 별로 수신되는 파일 블록의 전송속도를 모니터링 시점마다 확인하고, 확인 결과로부터 전송속도가 감소한 스트림의 개수를 각 단위 윈도우마다 확인한다. 병렬 스트림 관리부(450)는 각 단위 윈도우마다 확인된 전송속도가 감소한 스트림의 개수를 이용하여 네트워크 혼잡률을 산출할 수 있다. 병렬 스트림 관리부(450)는 산출된 네트워크 혼잡률과 설정된 임계값들을 비교하여, 이전에 설정된 복수 개의 스트림들의 연결 개수를 지수적으로 증가시키거나 선형적으로 감소시킬 수 있다.
병렬 스트림 관리부(450)는 조절된 스트림들의 연결 개수에 대한 정보를 제4소켓 관리부(410)에게 제공한다.
제4소켓 관리부(410)는 병렬 스트림 관리부(450)로부터 제공받은 연결 개수에 맞춰 실제로 사용할 스트림들을 변경할 수 있다. 예를 들어, 스트림의 연결 개수가 5개에서 3개로 감소한 경우, 제4소켓 관리부(410)는 5개의 스트림들 중 사용할 3개의 스트림들을 정하고, 정해진 스트림들을 이용하여 파일 블록을 수신할 수 있다.
도 7은 본 발명의 실시예에 따른 데이터의 병렬 수신을 위한 스트림 제어 방법을 설명하기 위한 흐름도이다.
도 7의 스트림 제어 방법을 위한 데이터 수신 장치는 도 2의 제1데이터 수신 장치(200) 또는 도 5의 제2데이터 수신 장치(400)일 수 있다.
데이터 수신 장치는 데이터 전송 장치로부터 복수 개의 스트림들을 구성하는 소켓들을 통해 타겟데이터를 병렬 수신할 수 있다(S710). 데이터 전송 장치는 도 2의 제1데이터 전송 장치(100) 또는 도 5의 제2데이터 전송 장치(300)일 수 있다.
데이터 수신 장치는 병렬 수신된 타겟데이터를 저장매체에 저장한다(S720).
데이터 수신 장치는 S710단계에서 수신된 타겟데이터의 전송속도를 각 스트림 별로 산출하여 메모리에 저장한다(S730). 데이터 수신 장치는 모니터링 주기마다, 즉, 네트워크 혼잡률을 산출하도록 정해진 모니터링 시점마다 각 스트림 별로 전송속도를 산출할 수 있다.
데이터 수신 장치는 S730단계에서 산출된 현재 모니터링 시점에서의 스트림 별 전송속도와, 이전 모니터링 시점에서 산출된 스트림별 전송속도를 비교하여, 전송속도가 감소한 스트림의 개수를 확인한다(S740). 이때, 데이터 수신 장치는 각 단위 윈도우 별로 전송속도가 감소한 스트림의 개수를 확인할 수 있다.
데이터 수신 장치는 각 단위 윈도우마다 확인된 전송속도가 감소한 스트림의 개수를 이용하여 각 단위 윈도우의 네트워크 혼잡률인 서브 네트워크 혼잡률을 산출할 수 있다(S750). 데이터 수신 장치는 단위 윈도우에서 사용된 전체 스트림 개수 중 이전에 비해 전송속도가 감소한 스트림의 개수를 나타내는 감소 스트림 비율을 [수학식 1]을 이용하여 산출하고, 산출된 감소 스트림 비율을 단위 윈도우의 서브 네트워크 혼잡률로 정할 수 있다. 데이터 수신 장치는 단위 윈도우 별로 서브 네트워크 혼잡률을 산출한다.
데이터 수신 장치는 S750단계에서 산출된 각 단위 윈도우의 서브 네트워크 혼잡률들의 평균을 구하고, 구한 결과를 현재 모니터링 시점에서의 네트워크 혼잡률로 정할 수 있다(S760). 서브 네트워크 혼잡률들의 평균은 서브 네트워크 혼잡률들을 더한 결과를 각 단위 윈도우의 개수로 나누어 구할 수 있다.
데이터 수신 장치는 S760단계에서 산출된 네트워크 혼잡률과 적어도 하나의 임계값을 비교하여, 현재 네트워크 상황에 적합한 스트림 연결 개수를 계산할 수 있다(S770). 데이터 수신 장치는 산출된 네트워크 혼잡률에 기초하여, 이전에 연결된 스트림들의 연결 개수를 지수적으로 증가시키거나 선형적으로 감소시킬 수 있다. S770단계는 도 8을 참조하여 보다 자세히 설명한다.
데이터 수신 장치는 S770단계에서 계산된 스트림 연결 개수에 맞춰, 타겟데이터의 병렬 수신에 사용할 스트림의 개수를 조절하고, 조절된 스트림들을 이용하여 타겟데이터를 데이터 전송 장치로부터 병렬수신할 수 있다(S780). 데이터 전송 장치 역시 데이터 수신 장치로부터 조절된 스트림의 연결 개수를 통지받아, 스트림의 연결 개수를 조절할 수 있음은 물론이다.
도 8은 도 7의 S770단계에 기재된 스트림 연결 개수를 계산하는 방법을 설명하기 위한 흐름도이다.
도 8을 참조하면, 데이터 수신 장치는 S760단계에서 산출된 네트워크 혼잡률(Ct)와 제1임계값(TH1)을 비교한다(S810). 네트워크 혼잡률(Ct)의 t는 현재 모니터링 시점을 의미한다.
비교결과, 네트워크 혼잡률(Ct)와 제1임계값(TH1) 이하이면(S810-Y), 데이터 수신 장치는 연결되어 있는 스트림들의 연결 개수(St-1)를 지수적으로 증가시킬 수 있다(S820). 도 8에서 'St-1'은 S710단계에서 타겟데이터 수신 시 사용한 스트림의 개수, 즉, 이전에 사용한 스트림의 개수이고, 'St'는 증감된 스트림 연결 개수, 'n'은 자연수로서 1을 예로 들 수 있으나, 1뿐만 아니라 네트워크 상황에 따라 적응적으로 변경될 수 있다.
반면, 네트워크 혼잡률(Ct)이 제1임계값(TH1) 이하가 아니면(S810-N), 데이터 수신 장치는 네트워크 혼잡률(Ct)과 제2임계값(TH2)을 비교한다(S830).
비교결과, 네트워크 혼잡률(Ct)이 제1임계값(TH1)보다 크고 제2임계값(TH2) 이하이면(S830-Y), 데이터 수신 장치는 연결되어 있는 스트림의 연결 개수(St-1)를 1개 감소시킬 수 있다(S840).
반면, 네트워크 혼잡률(Ct)이 제2임계값(TH2)보다 크고 제3임계값(TH3) 이하이면(S850-Y), 데이터 수신 장치는 연결되어 있는 스트림의 연결 개수(St-1)를 m% 감소시킬 수 있다. 'm'은 (복수 개의 스트림들의 연결 개수×m%)≥1이 되도록 하는 상수이다. 예를 들어, n=30이고, 스트림들의 연결 개수(St-1)가 10이면, 10×30%=3이므로, 데이터 수신 장치는 10개의 스트림 연결 개수를 3개 감소시켜, 결과적으로 7개의 스트림을 사용할 수 있다.
도 9는 본 발명의 다른 실시예에 따른 데이터의 병렬 수신을 위한 스트림 제어 방법을 설명하기 위한 흐름도이다.
도 9의 스트림 제어 방법을 위한 데이터 전송 장치와 데이터 수신 장치는 도 2의 제1데이터 전송 장치(100)와 제1데이터 수신 장치(200)이거나, 또는 도 5의 제2데이터 전송 장치(300)와 제2데이터 수신 장치(400)일 수 있다.
데이터 전송 장치는 파일 전송 요청이 수신되면 할당된 대역폭을 모두 사용할 수 있는 스트림 연결 개수를 정하고, 스트림 연결 개수만큼의 소켓들을 생성한다(S905).
데이터 전송 장치는 하나 이상의 소켓을 이용하여 파일의 속성정보를 포함하는 기본제어정보를 데이터 수신 장치에게 전송한다(S910).
데이터 수신 장치는 S910단계에 의해 수신한 기본제어정보를 이용하여 파일 수신을 위한 환경을 설정한다(S915). 일 예로, 데이터 수신 장치는 기본제어정보 중 최대 연결 개수와 소켓 버퍼 사이즈에 근거하여, 연결할 스트림 개수를 설정하고, 설정된 개수에 해당하는 소켓들을 생성할 수 있다.
데이터 전송 장치는 HDD와 같은 저장매체에 기록된 파일을 분할 파일 형태로 읽어와 버퍼큐에 파일 블록 단위로 저장할 수 있다(S920). 버퍼큐는 도 5의 제1미사용 버퍼큐(341)와 제1버퍼큐(343)일 수 있다.
데이터 전송 장치는 S920단계에서 버퍼큐에 저장된 적어도 하나의 파일 블록을 읽어와 전송 소켓 버퍼에 저장한다(S925).
데이터 전송 장치는 전송 소켓 버퍼에 저장된 적어도 하나의 파일 블록을 S905단계에서 구성된 복수 개의 스트림들을 이용하여 데이터 수신 장치에게 병렬 전송할 수 있다(S930).
데이터 수신 장치는 S930단계에 의해 병렬 수신되는 파일 블록을 수신 소켓 버퍼에 저장한다(S935).
데이터 수신 장치는 수신 소켓 버퍼에 저장된 적어도 하나의 파일 블록을 버퍼큐에 임시 저장한다(S940). 버퍼큐는 도 5의 제2미사용 버퍼큐(431)와 제2버퍼큐(433)일 수 있다.
데이터 수신 장치는 버퍼큐에 저장된 적어도 하나의 파일 블록을 HDD와 같은 저장 매체에 저장한다(S945).
데이터 수신 장치는 데이터 전송 장치로부터 파일 블록들이 병렬 수신되어 저장매체에 저장되는 동안, 즉, S935단계 내지 S945단계가 수행되는 동안, 모니터링 주기 또는 모니터링 시점을 확인한다(S950).
모니터링 시점이 되면(S950-Y), 데이터 수신 장치는 이중 이동 평균 알고리즘을 이용하여 네트워크 혼잡률을 산출할 수 있다(S955). 데이터 수신 장치는 도 7의 S730단계 내지 S760단계에서 설명한 방식 또는 도 4a와 도 4b를 참조하여 설명한 방식을 이용하여 네트워크 혼잡률을 산출할 수 있다.
데이터 수신 장치는 S955단계에서 산출된 네트워크 혼잡률과 적어도 하나의 임계값을 비교하여, 현재 네트워크 상황에 적합한 스트림 연결 개수(St)를 계산할 수 있다(S960). 데이터 수신 장치는 도 8을 참조하여 설명한 방식을 이용하여 스트림 연결 개수(St)를 계산할 수 있다.
데이터 수신 장치는 S960단계에서 계산된 스트림 연결 개수(St)를 이용하여 실제로 사용할 스트림들을 조절할 수 있다(S965).
데이터 수신 장치는 조절된 스트림의 연결 개수(St)를 데이터 전송 장치에게 통지한다(S970).
데이터 전송 장치는 통지받은 스트림 연결 개수(St)에 맞춰 타겟데이터의 병렬 전송에 사용할 스트림 개수를 조절한(S975).
데이터 전송 장치는 S975단계에서 조절된 연결 개(St)수의 스트림들을 이용하여 파일을 병렬 전송한다(S980).
본 발명은 WAN 네트워크 구간에서 기존의 FTP 등의 전송방식으로 파일전송을 했을 때 사용 가능한 네트워크 대역폭을 효율적으로 사용하지 못함에 따른 전송속도의 저하를 소프트웨어적인 알고리즘인 병렬 TCP로 여러 개의 채널을 통해 파일을 다중전송 함으로써 대역폭 사용 효율을 증가시키고 결과적으로 파일 전송속도를 향상 시킬 수 있다.
또한 본 발명은 병렬 TCP를 통한 파일 고속전송 시 네트워크 혼잡에 따른 전송속도의 제어를 위해 이중 이동평균 기반 스트림 연결 수 제어 알고리즘을 제안하고 이를 통해 기존의 소프트웨어 기반의 고속전송 방식에서 문제가 될 수 있는 대역폭 점유 현상을 해결할 수 있다.
상술한 실시예들은 데이터를 고속전송하기 위한 모든 분야에서 활용이 가능하다. 예를 들어, 본 실시예들은 미디어 파일(동영상, 사진, 음악 등)을 주고받은 웹사이트나 프로그램, 용량이 큰 3D 영화파일을 원거리에 있는 기기들끼리 송수신하는 상황에서도 사용될 수 있다. 또한, 본 실시예들은 원거리에 있는 데이터 센터 간의 백업이나 파일 전송에도 활용될 수 있다.
또한, 본 발명의 실시예에 의하면, WAN(Wireless Area Network) 구간에서 기존의 FTP(File Transfer Protocol)와 같은 전송방식으로 파일을 전송할 경우, 사용 가능한 네트워크 대역폭을 효율적으로 사용하지 못함에 따른 전송속도의 저하를 소프트웨어적인 알고리즘인 병렬 TCP로 여러 개의 채널을 통해 파일을 다중 전송함으로써 대역폭 사용 효율을 증가시키고 결과적으로 파일 전송속도를 향상시킬 수 있다.
또한 본 발명은 병렬 TCP를 통한 파일 고속전송 시 네트워크 혼잡에 따른 전송속도의 제어를 위해 이중 이동평균 기반 스트림 연결 수 제어 알고리즘을 제안하며, 이를 통해 기존의 소프트웨어 기반의 고속전송 방식에서 문제가 되는 대역폭 점유 현상을 해결할 수 있다.
상기와 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 제1데이터 전송 장치 110: 제1소켓 관리부
120: 제1제어정보 관리부 130: 제1통신부
140: 제1디스크 제어부 200: 제1데이터 수신 장치
210: 제2통신부 220: 제2제어정보 관리부
230: 제2소켓 관리부 240: 제2디스크 제어부
250: 전송속도 산출부 260: 메모리
270: 병렬 연결 관리부 300: 제2데이터 전송 장치
310: 제3소켓 관리부 320: 제3제어정보 관리부
330: 제3디스크 제어부 340: 제1버퍼 관리부
400: 제2데이터 수신 장치 410: 제4소켓 관리부
420: 제4제어정보 관리부 430: 제2버퍼 관리부
440: 제4디스크 제어부 450: 병렬 스트림 관리부

Claims (20)

  1. 복수 개의 연결된 스트림들을 이용하여 데이터를 병렬 수신하는 단계;
    상기 복수 개의 스트림들 별로 수신되는 데이터의 전송속도의 변화를 이용하여 네트워크 혼잡률을 산출하는 단계;
    상기 산출된 네트워크 혼잡률과 설정된 적어도 하나의 임계값을 비교하는 단계;
    상기 적어도 하나의 임계값과의 비교 결과에 따라 상기 스트림들의 연결 개수를 증감시켜 조절하는 단계; 및
    상기 조절된 개수의 스트림들을 이용하여 상기 데이터를 병렬 수신하는 단계;를 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  2. 제1항에 있어서,
    상기 네트워크 혼잡률을 산출하는 단계는,
    상기 복수 개의 스트림들 별로 수신되는 데이터의 전송속도를 모니터링 시점마다 확인하는 단계;
    상기 데이터의 전송속도가 감소한 스트림의 개수를 각 단위 윈도우-복수 개의 모니터링 시점들로 이루어짐-마다 확인하는 단계; 및
    상기 각 단위 윈도우마다 확인된 상기 데이터의 전송속도가 감소한 스트림의 개수를 이용하여 상기 네트워크 혼잡률을 산출하는 단계;를 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  3. 제2항에 있어서,
    상기 데이터의 전송속도가 감소한 스트림의 개수를 이용하여 상기 네트워크 혼잡률을 산출하는 단계는,
    상기 각 단위 윈도우에서 사용된 전체 스트림 개수 중 이전에 비해 상기 데이터의 전송속도가 감소한 스트림의 개수를 나타내는 감소 스트림 비율을 상기 각 단위 윈도우 별로 산출하여 상기 각 단위 윈도우의 서브 네트워크 혼잡률로 정하는 단계; 및
    상기 각 단위 윈도우마다 산출된 상기 서브 네트워크 혼잡률들을 상기 각 단위 윈도우의 개수로 나눈 결과를 상기 네트워크 혼잡률로 정하는 단계;를 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  4. 제2항에 있어서,
    상기 네트워크 혼잡률을 산출하는 단계는,
    상기 복수 개의 스트림들을 이용하여 수신되는 데이터들의 전송속도를 상기 모니터링 시점마다 산출하여 저장하는 단계;를 더 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  5. 제1항에 있어서,
    상기 네트워크 혼잡률을 산출하는 단계는,
    복수 개의 모니터링 시점들-상기 복수 개의 스트림들 별로 수신되는 데이터의 전송속도를 확인하는 주기-로 이루어지는 각 단위 윈도우마다 상기 데이터의 전송속도의 변화를 고려하여 서브 네트워크 혼잡률을 산출하는 단계; 및
    상기 각 단위 윈도우마다 산출된 서브 네트워크 혼잡률들의 평균을 산출하여 상기 네트워크 혼잡률로 정하는 단계;를 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  6. 제1항에 있어서,
    상기 복수 개의 스트림들의 연결 개수를 조절하는 단계는,
    상기 산출된 네트워크 혼잡률에 기초하여 상기 복수 개의 스트림들의 연결 개수를 지수적으로 증가시키거나 선형적으로 감소시키는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  7. 삭제
  8. 제1항에 있어서,
    상기 스트림들의 연결 개수를 증감시켜 조절하는 단계는,
    상기 산출된 네트워크 혼잡률이 제1임계값 이하이면, 상기 복수 개의 스트림들의 연결 개수를 이전보다 지수적으로 증가시키는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  9. 제8항에 있어서,
    상기 스트림들의 연결 개수를 증감시켜 조절하는 단계는,
    상기 산출된 네트워크 혼잡률이 상기 제1임계값보다 크고 제2임계값 이하이면, 상기 복수 개의 스트림들의 연결 개수를 이전보다 1개 감소시키며, 상기 산출된 네트워크 혼잡률이 상기 제2임계값보다 크고 제3임계값 이하이면, 상기 복수 개의 스트림들의 연결 개수를 이전보다 m%(여기서, 상기 복수 개의 스트림들의 연결 개수×m%는 상기 1보다 큼) 감소시키는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  10. 제1항에 있어서,
    상기 데이터의 병렬 수신을 위해 허용되는 초기 스트림의 연결 개수는, 사용가능한 대역폭을 최대한 사용하도록 하는 최대 연결 개수로 설정되는 것을 특징으로 하는 데이터의 병렬 수신을 위한 스트림 제어 방법.
  11. 복수 개의 스트림들 별로 병렬 수신되는 데이터의 전송속도의 변화를 이용하여 네트워크 혼잡률을 산출하고, 상기 산출된 네트워크 혼잡률과 설정된 적어도 하나의 임계값을 비교하고, 상기 적어도 하나의 임계값과의 비교 결과에 따라 상기 스트림들의 연결 개수를 증감시켜 조절하는 병렬 연결 관리부; 및
    상기 병렬 연결 관리부에 의해 조절된 연결 개수의 스트림들을 이용하여 상기 데이터를 병렬 수신하는 통신부;를 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
  12. 제11항에 있어서,
    상기 병렬 연결 관리부는,
    상기 복수 개의 스트림들 별로 수신되는 데이터의 전송속도를 모니터링 시점마다 확인하고, 상기 확인 결과, 각 단위 윈도우-복수 개의 모니터링 시점들로 이루어짐-마다 상기 데이터의 전송속도가 감소한 스트림의 개수를 이용하여 상기 네트워크 혼잡률을 산출하는 네트워크 혼잡률 산출부;를 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
  13. 제12항에 있어서,
    상기 네트워크 혼잡률 산출부는,
    상기 각 단위 윈도우에서 사용된 전체 스트림 개수 중 이전에 비해 상기 데이터의 전송속도가 감소한 스트림의 개수를 나타내는 감소 스트림 비율을 상기 각 단위 윈도우 별로 산출하여 상기 각 단위 윈도우의 서브 네트워크 혼잡률로 정하고, 상기 각 단위 윈도우마다 산출된 상기 서브 네트워크 혼잡률들을 상기 각 단위 윈도우의 개수로 나누어 상기 네트워크 혼잡률로 정하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
  14. 제12항에 있어서,
    상기 복수 개의 스트림들을 이용하여 수신되는 데이터들의 전송속도를 상기 모니터링 시점마다 산출하는 전송속도 산출부; 및
    상기 모니터링 시점마다 산출된 데이터들의 전송속도를 저장하는 메모리;를 더 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
  15. 제11항에 있어서,
    상기 네트워크 혼잡률 산출부는,
    복수 개의 모니터링 시점들-상기 복수 개의 스트림들 별로 수신되는 데이터의 전송속도를 확인하는 주기-로 이루어지는 각 단위 윈도우마다 상기 데이터의 전송속도의 변화를 고려하여 서브 네트워크 혼잡률을 산출하고, 상기 각 단위 윈도우마다 산출된 서브 네트워크 혼잡률들의 평균을 산출하여 상기 네트워크 혼잡률로 정하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
  16. 제11항에 있어서,
    상기 병렬 연결 관리부는,
    상기 산출된 네트워크 혼잡률에 기초하여 상기 복수 개의 스트림들의 연결 개수를 지수적으로 증가시키거나 선형적으로 감소시키는 연결 개수 계산부;를 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
  17. 삭제
  18. 제11항에 있어서,
    상기 병렬 연결 관리부는,
    상기 산출된 네트워크 혼잡률이 제1임계값 이하이면, 상기 복수 개의 스트림들의 연결 개수를 이전보다 지수적으로 증가시키는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
  19. 제18항에 있어서,
    상기 병렬 연결 관리부는,
    상기 산출된 네트워크 혼잡률이 상기 제1임계값보다 크고 제2임계값 이하이면, 상기 복수 개의 스트림들의 연결 개수를 이전보다 1개 감소시키며, 상기 산출된 네트워크 혼잡률이 상기 제2임계값보다 크고 제3임계값 이하이면, 상기 복수 개의 스트림들의 연결 개수를 이전보다 m%(여기서, 상기 복수 개의 스트림들의 연결 개수×m%는 상기 1보다 큼) 감소시키는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
  20. 제11항에 있어서,
    상기 데이터의 병렬 수신을 위해 허용되는 초기 스트림의 연결 개수를 상기 통신부에서 사용가능한 대역폭을 최대한 사용하도록 하는 최대 연결 개수로 설정하는 소켓 관리부;를 더 포함하는 것을 특징으로 하는 데이터의 병렬 수신을 위한 장치.
KR1020110052405A 2011-05-31 2011-05-31 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치 KR101231294B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020110052405A KR101231294B1 (ko) 2011-05-31 2011-05-31 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치
JP2012123469A JP5405625B2 (ja) 2011-05-31 2012-05-30 データの並列受信のためのストリーム制御方法及び装置
US13/484,909 US9059936B2 (en) 2011-05-31 2012-05-31 Method and apparatus for controlling stream to receive data in parallel
EP12170212.0A EP2530889B1 (en) 2011-05-31 2012-05-31 Method and Apparatus for Controlling Stream to Receive Data in Parallel
CN201210176929.0A CN102811166B (zh) 2011-05-31 2012-05-31 控制流以并行接收数据的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110052405A KR101231294B1 (ko) 2011-05-31 2011-05-31 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20120133658A KR20120133658A (ko) 2012-12-11
KR101231294B1 true KR101231294B1 (ko) 2013-02-07

Family

ID=46275694

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110052405A KR101231294B1 (ko) 2011-05-31 2011-05-31 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치

Country Status (5)

Country Link
US (1) US9059936B2 (ko)
EP (1) EP2530889B1 (ko)
JP (1) JP5405625B2 (ko)
KR (1) KR101231294B1 (ko)
CN (1) CN102811166B (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104969534B (zh) * 2012-10-18 2018-07-24 吉拉飞克科技股份有限公司 可动态扩大通信链接吞吐量的拥塞控制方法
US9900408B2 (en) * 2012-11-08 2018-02-20 At&T Intellectual Property I, L.P. Delivery of media content to a media device via multiple data packet streams
US9007924B2 (en) * 2013-01-29 2015-04-14 Hewlett-Packard Development Company, L.P. Balancing load distributions of loopback ports
US9203777B2 (en) * 2013-02-12 2015-12-01 Time Warner Cable Enterprises Llc Adaptive bit rate admission control of a shared resource
KR102127672B1 (ko) * 2013-04-18 2020-06-29 삼성전자주식회사 멀티미디어 전송 네트워크에서 미디어 전송의 제어 방법 및 장치
JP6002953B2 (ja) * 2013-08-30 2016-10-05 ニューロネット株式会社 通信品質測定制御装置、通信装置、およびプログラム
US10776325B2 (en) * 2013-11-26 2020-09-15 Ab Initio Technology Llc Parallel access to data in a distributed file system
US9565590B2 (en) * 2014-01-10 2017-02-07 Qualcomm Incorporated Systems and methods for modem control based on feedback
KR101591061B1 (ko) * 2014-12-30 2016-02-02 주식회사 코난테크놀로지 실시간 처리를 위한 전송 라이브러리 시스템 및 그 시스템에서의 송/수신 방법
CA3010007C (en) * 2015-12-31 2020-07-14 DISH Technologies L.L.C. Systems and methods for bandwidth estimation in oscillating networks
CN105933230A (zh) * 2016-04-01 2016-09-07 浪潮电子信息产业股份有限公司 一种多节点的数据传输方法、节点及计算机系统
CN106656840B (zh) * 2016-11-25 2019-11-08 杭州安恒信息技术股份有限公司 一种应用于网络爬虫的动态流量控制方法
KR102622268B1 (ko) * 2017-02-03 2024-01-05 삼성에스디에스 주식회사 병렬 tcp 가속을 이용한 실시간 멀티미디어의 전송 방법 및 시스템
US10587668B2 (en) * 2017-10-18 2020-03-10 Citrix Systems, Inc. Method to determine optimal number of HTTP2.0 streams and connections for better QoE
CN108924205B (zh) * 2018-06-25 2022-09-06 北京旷视科技有限公司 数据传输方法、装置、电子设备、网闸适配器

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3711156B2 (ja) * 1995-05-11 2005-10-26 Kddi株式会社 ファイル転送方法
US20050021804A1 (en) 2001-05-08 2005-01-27 Heino Hameleers Method and system for controlling the transmission of media streams
US7073118B2 (en) 2001-09-17 2006-07-04 Digeo, Inc. Apparatus and method for saturating decoder values
KR100408525B1 (ko) 2001-10-31 2003-12-06 삼성전자주식회사 네트워크에 적응적인 실시간 멀티미디어 스트리밍 시스템및 방법
JP3964806B2 (ja) * 2003-02-27 2007-08-22 日本電信電話株式会社 動画像伝送システム、動画像送信装置、動画像中継装置、動画像受信装置、プログラム、および記録媒体
US7796517B2 (en) * 2004-06-28 2010-09-14 Minghua Chen Optimization of streaming data throughput in unreliable networks
US7487206B2 (en) 2005-07-15 2009-02-03 International Business Machines Corporation Method for providing load diffusion in data stream correlations
US7734810B2 (en) * 2007-06-12 2010-06-08 Cisco Technology, Inc. Optimizations for TCP connection setup and teardown
US7659208B2 (en) * 2007-12-06 2010-02-09 Micron Technology, Inc Method for forming high density patterns
JP2010067015A (ja) * 2008-09-11 2010-03-25 National Institute Of Information & Communication Technology ファイル送信装置、ファイル受信装置、ファイル送受信システム及びそのプログラム
ATE492967T1 (de) 2008-10-30 2011-01-15 Alcatel Lucent Verfahren zum aufteilen eines multiplexpaketstroms und entsprechendes aufteilungssystem
JP2010198187A (ja) * 2009-02-24 2010-09-09 Nippon Telegr & Teleph Corp <Ntt> iSCSIセッションのTCPコネクション数制御方法、iSCSIホスト装置、およびiSCSIイニシエータの構成プログラム。
EP2237496A1 (en) * 2009-03-31 2010-10-06 BRITISH TELECOMMUNICATIONS public limited company Pre-congestion notification (PCN) as a base for admission control and flow termination

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문:IEIC *

Also Published As

Publication number Publication date
KR20120133658A (ko) 2012-12-11
JP2012253765A (ja) 2012-12-20
US9059936B2 (en) 2015-06-16
CN102811166A (zh) 2012-12-05
JP5405625B2 (ja) 2014-02-05
CN102811166B (zh) 2015-05-20
US20120307636A1 (en) 2012-12-06
EP2530889B1 (en) 2014-07-23
EP2530889A1 (en) 2012-12-05

Similar Documents

Publication Publication Date Title
KR101231294B1 (ko) 데이터의 병렬 수신을 위한 스트림 제어 방법 및 장치
KR102127672B1 (ko) 멀티미디어 전송 네트워크에서 미디어 전송의 제어 방법 및 장치
US8036125B2 (en) Apparatus and method for transmitting multimedia stream using virtual machines based on a number of transmissions at a data rate
CN110418376A (zh) 数据传输方法及装置
US20180132110A1 (en) Wireless resource allocation device, wireless resource allocation method, and recording medium storing wireless resource allocation program
CN114640886B (zh) 自适应带宽的音视频传输方法、装置、计算机设备及介质
WO2017130244A2 (en) Centralized control server, local terminal, distributed surveillance system, surveillance method and storage medium
US20160117148A1 (en) Data transmitter apparatus and method for data communication using the same
WO2013042758A1 (ja) コンテンツ配信システム、キャッシュサーバおよびコンテンツ配信方法
KR101613380B1 (ko) 콘텐츠 배신 시스템, 캐쉬 서버 및 콘텐츠 배신 방법
EP3962091A1 (en) Methods and systems for maintaining quality of experience in real-time live video streaming
EP3934207A1 (en) Communication method and apparatus
JP2010028378A (ja) 通信装置及び通信方法
WO2018180394A1 (ja) 通信装置、メディア配信システム、メディア配信方法および非一時的なコンピュータ可読媒体
JP2013069073A (ja) 配信ネットワークとサーバ及び配信方法
CN115066844A (zh) 具有优化存储器路径的动态上行链路端到端数据传输方案
KR20160068448A (ko) 무선 통신 시스템에서 전송 계층의 속도를 제어하기 위한 장치 및 방법
KR101017352B1 (ko) 무선 인터넷 환경에서의 스트리밍 콘텐츠 전송 방법
CN116017567A (zh) 一种数据传输方法及装置
US10069948B2 (en) Method, apparatus, and system for acquiring media service parameter indication
KR101992061B1 (ko) 데이터 전송 장치 및 그 방법
JP2009212632A (ja) 通信装置および通信方法
US10504482B2 (en) Smart small form-factor pluggable (SFP) transceiver
US10772010B2 (en) Transmission apparatus, method for controlling transmission, and recording medium
GB2544289B (en) Method and device for transmission of video data packets

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171213

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200121

Year of fee payment: 8