KR101818493B1 - 네트워크 대역폭 제어 방법 및 그 장치 - Google Patents

네트워크 대역폭 제어 방법 및 그 장치 Download PDF

Info

Publication number
KR101818493B1
KR101818493B1 KR1020150151075A KR20150151075A KR101818493B1 KR 101818493 B1 KR101818493 B1 KR 101818493B1 KR 1020150151075 A KR1020150151075 A KR 1020150151075A KR 20150151075 A KR20150151075 A KR 20150151075A KR 101818493 B1 KR101818493 B1 KR 101818493B1
Authority
KR
South Korea
Prior art keywords
client
server
delay time
data
network bandwidth
Prior art date
Application number
KR1020150151075A
Other languages
English (en)
Other versions
KR20170050043A (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 KR1020150151075A priority Critical patent/KR101818493B1/ko
Priority to US15/337,687 priority patent/US20170126571A1/en
Publication of KR20170050043A publication Critical patent/KR20170050043A/ko
Application granted granted Critical
Publication of KR101818493B1 publication Critical patent/KR101818493B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/826Involving periods of time
    • 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
    • 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/28Flow control; Congestion control in relation to timing considerations
    • 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/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/801Real time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/805QOS or priority aware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

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

Abstract

본 발명의 일 태양에 따른 네트워크 대역폭 제어 방법은, 서버가, 클라이언트로부터 데이터의 전송 요청을 수신하는 단계와 상기 서버가, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계와 상기 서버가, 상기 클라이언트로부터 상기 지연시간마다 상기 데이터를 구성하는 청크를 수신하는 단계 및 상기 서버가, 상기 청크를 병합하여 상기 데이터를 복원하는 단계를 포함할 수 있다.

Description

네트워크 대역폭 제어 방법 및 그 장치 {Method and apparatus for network bandwidth control}
본 발명은 네트워크의 대역폭을 제어하는 방법 및 그 장치에 관한 것이다. 보다 자세하게는, 데이터를 청크로 분리하여 네트워크를 통해 전송할 때, 각 데이터의 우선순위를 고려하여 청크의 전송률을 제어하는 방법 및 그 방법을 수행하는 장치에 관한 것이다.
클라우드(cloud)를 비롯한 네트워크(network) 기반의 솔루션(solution)이 확산되고 있는 상황이다. 이에 따라, 네트워크 대역폭(network bandwidth)의 이슈(issue)도 부가되고 있으나, 이를 해결하기 위한 마땅한 방법이 없는 상황이다.
종래에는 데이터(data)를 네트워크를 통해 전송할 때, 그 효율을 높이기 위해 데이터를 여러 개의 청크(chunk)로 나누어 전송을 한다. 경우에 따라서는 단일 세션(single-session)이 아닌 멀티 세션(multi-session)으로 병렬적으로 청크를 전송하기도 한다.
그러나 네트워크 대역폭을 조절하기 위한 별도의 장치가 없어 하나의 클라이언트(client)가 서버(server)의 네트워크 대역폭을 모두 사용하기도 하고, 각 클라이언트 사이에 전송하려는 데이터의 우선순위 구별없이 동일한 대역폭으로 데이터를 전송하기도 하였다. 이로 인해 대역폭이 관리되지 않는 무분별한 데이터 업로드(upload) 및 다운로드(download)로 서버 솔루션이 멈추는 현상(freezing or locking)이 빈번히 발생하고 있다.
물론, 하드웨어(hardware)를 통한 네트워크 대역폭 제어 방법이 있기는 하나, 하드웨어가 고가의 장비인 점, 포트(port) 제한과 같은 제약적인 방법을 이용하여만 했다. 특히 접속 제한의 경우 제어 자체가 어렵고 QoS(Quality of Service)와 같은 기능도 제공할 수 없었다.
이에 소프트웨어(software)를 통해, 데이터 전송 시 네트워크 대역폭 문제를 효율적으로 해결하고, 데이터 전송에 QoS 관리를 통해 안정성 및 신뢰성을 확보하기 위한 네트워크 대역폭 제어 방법이 요구된다.
본 발명이 해결하고자 하는 과제는 네트워크 대역폭 제어 방법 및 그 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 태양에 따른 네트워크 대역폭 제어 방법은, 서버가, 클라이언트로부터 데이터의 전송 요청을 수신하는 단계와 상기 서버가, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계와 상기 서버가, 상기 클라이언트로부터 상기 지연시간마다 상기 데이터를 구성하는 청크를 수신하는 단계 및 상기 서버가, 상기 청크를 병합하여 상기 데이터를 복원하는 단계를 포함할 수 있다.
일 실시예에서, 상기 데이터의 전송 요청을 수신하는 단계는, 상기 서버가, 상기 클라이언트로부터 상기 데이터의 우선순위를 더 수신하는 단계를 포함할 수 있다.
다른 실시예에서, 상기 데이터의 전송 요청을 수신하는 단계는, 상기 서버가, 상기 클라이언트로부터 상기 청크의 크기와 개수를 더 수신하는 단계를 포함할 수 있다
또 다른 실시예에서, 상기 데이터의 전송 요청을 수신하는 단계는, 상기 서버가, 상기 클라이언트의 데이터의 전송 요청을 처리할 수 없을 때에는, 상기 서버가 포함된 서버 클러스터 내의 다른 서버로 상기 클라이언트의 데이터의 전송 요청을 전달하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는, 상기 데이터의 우선순위가 높을수록 상기 지연시간을 작게 연산하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는, 상기 서버의 최대 전송 대역폭이 높을수록 상기 지연시간을 작게 연산하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는, 상기 서버에 연결된 클라이언트의 수가 많을수록 상기 지연시간을 크게 연산하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는, 상기 청크의 크기가 클수록 상기 지연시간을 크게 연산하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 지연시간마다 상기 데이터를 구성하는 청크를 수신하는 단계는, 상기 서버가, 상기 클라이언트로부터 상기 청크를 전송받을 때의 전송 대역폭을 측정하는 단계 및 상기 전송 대역폭에 따라 상기 지연시간을 보정하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 태양에 따른 네트워크 대역폭 제어 방법은, 서버가, 클라이언트로부터 데이터의 수신 요청을 수신하는 단계와 상기 서버가, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계 및 상기 서버가, 상기 클라이언트에 상기 지연시간마다 상기 데이터를 구성하는 청크를 송신하는 단계를 포함할 수 있다.
일 실시예에서, 상기 데이터의 수신 요청을 수신하는 단계는, 상기 서버가, 상기 클라이언트로부터 상기 데이터의 우선순위를 더 수신하는 단계를 포함할 수 있다.
다른 실시예에서, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는, 상기 데이터의 우선순위가 높을수록 상기 지연시간을 작게 연산하는 단계를 포함할 수 있다
또 다른 실시예에서, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는, 상기 서버의 최대 전송 대역폭이 높을수록 상기 지연시간을 작게 연산하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는, 상기 서버에 연결된 클라이언트의 수가 많을수록 상기 지연시간을 크게 연산하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 태양에 따른 네트워크 대역폭 제어 장치는, 네트워크 인터페이스와 하나 이상의 프로세서와 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드하는 메모리 및 전송률 데이터와 우선순위 정보를 저장하는 스토리지를 포함할 수 있다. 여기서, 상기 컴퓨터 프로그램은, 상기 네트워크 대역폭 제어 장치가, 클라이언트로부터 데이터의 전송 요청을 수신하는 오퍼레이션와 상기 네트워크 대역폭 제어 장치가, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 오퍼레이션와 상기 네트워크 대역폭 제어 장치가, 상기 클라이언트로부터 상기 지연시간마다 상기 데이터를 구성하는 청크를 수신하는 오퍼레이션 및 상기 네트워크 대역폭 제어 장치가, 상기 청크를 병합하여 상기 데이터를 복원하는 오퍼레이션을 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 태양에 따른 네트워크 대역폭 제어 장치는, 네트워크 인터페이스와 하나 이상의 프로세서와 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드하는 메모리 및 전송률 데이터와 우선순위 정보를 저장하는 스토리지를 포함할 수 있다. 여기서 상기 컴퓨터 프로그램은, 상기 네트워크 대역폭 제어 장치가, 클라이언트로부터 데이터의 수신 요청을 수신하는 단계와 상기 네트워크 대역폭 제어 장치가, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계 및 상기 네트워크 대역폭 제어 장치가, 상기 클라이언트에 상기 지연시간마다 상기 데이터를 구성하는 청크를 송신하는 오퍼레이션을 포함할 수 있다.
상기와 같은 본 발명에 따르면, 전송되는 모든 데이터의 실시간 대역폭을 세션단에서 실시간으로 측정하여, 이를 이용하여 각 세션간의 대역폭을 실시간으로 제어하여 특정 세션이 네트워크 대역폭을 잠심하는 것을 사전에 방지할 수 있다.
또한, 서버와 클라이언트 모두에 대한 대역폭을 관리하여 데이터에 QoS를 적용하여 우선순위에 따른 데이터 전송을 처리할 수 있어, 효율적으로 데이터를 전송할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
도 1은 네트워크 대역폭 제어가 없는 종래의 데이터 전송 방법을 설명하기 위한 예시도이다.
도 2는 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법을 설명하기 위한 예시도이다.
도 3은 본 발명의 일 실시예에 따른 각 클라이언트 사이의 네트워크 대역폭 제어 방법을 설명하기 위한 예시도이다.
도 4a 내지 도 4f는 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법에서 지연시간에 대해 설명하기 위한 예시도이다.
도 5는 본 발명의 일 실시예에 따른 서버의 전송 대역폭에 여유가 없는 경우의 네트워크 대역폭 제어 방법을 설명하기 위한 예시도이다.
도 6은 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법을 설명하기 위한 개념도이다.
도 7은 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법의 순서도이다.
도 8은 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 장치의 블록도이다.
도 9는 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 장치의 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
도 1은 네트워크 대역폭 제어가 없는 종래의 데이터 전송 방법을 설명하기 위한 예시도이다.
도 1을 참고하면 클라이언트(100)에서 서버(200)로 네트워크를 통해서 데이터를 전송하는 과정이 도시되어 있다. 클라이언트(100)는 전송하려는 데이터를 데이터 분할부(Data Chunker)을 통해서 여러 개의 청크로 나눈다. 이 때 데이터 분할부(120)가 데이터를 여러 개의 청크로 나누는 과정에는 다양한 알고리즘이 적용될 수 있다. 예를 들면, 데이터 중복 제거(data deduplication)을 적용하여 전송하려는 데이터의 양을 줄일 수도 있고, 또는 단순히 데이터 병렬 처리 등을 위해 데이터를 동일한 크기의 여러 개의 청크로 분할할 수도 있다. 데이터를 여러 개의 청크로 분할한 후에는 이를 전송 관리부(Send Manager)에서 서버(200)로 순차적으로 전송한다. 클라이언트(100)의 전송 관리부(110)에서 보낸 청크를 서버(200)의 수신 관리부(Receive Manager)에서 수신한다. 수신 관리부(210)에서는 받은 여러 개의 청크를 데이터 병합부(Data Merger)로 전달한다. 데이터 병합부(220)에서는 청크를 병합하여 다시 원래의 데이터로 복원할 수 있다. 즉, 클라이언트(100)는 데이터를 여러 개의 청크로 나누어서 서버(200)로 전송하고, 서버(200)는 수신한 청크를 병합하여 다시 원래의 파일을 얻을 수 있다.
이 과정에서 종래에는 클라이언트(100)의 전송 관리부(110)와 서버(200)의 수신 관리부(210) 사이에 별다른 제약이 없어서 클라이언트(100)의 전송 관리부(110)에서 청크를 전송하는대로 서버(200)의 수신 관리부(210)에서 이를 받아야 했다. 그러다 보니, 특정 클라이언(100)가 서버(200)의 전송 대역폭을 모두 점유해버리면 다른 클라이언트가 접속을 하지 못하는 상황이 발생하기도 하고, 서버(200)의 시스템 자원을 특정 클라이언트(100)가 점유하는 바람에 서버(200)의 솔루션이 멈춰 버리는 상황이 생기기도 하였다. 또한, 각 클라이언트(100) 사이에 중요도의 차이 없이 동일하게 서버(200)의 네트워크 대역폭을 사용하는 점에서도 불편이 있었다. 때로는 각 클라이언트가 전송하려는 데이터의 종류에 따라, 크기에 따라, 기타 다양한 기준에 의해 각각의 중요도가 차이 있을 수 밖에 없는데도 이를 고려하여 전송하지 못하였기 때문이다.
도 2는 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법을 설명하기 위한 예시도이다.
도 2를 참고하면, 클라이언트(100)에서는 우선순위(Priority)가 추가된 것을 볼 수 있다. 마찬가지로 서버(200)에서는 전송률 관리부(Throughput Manager)와 QoS 제어부(QoS controller)가 추가된 것을 볼 수 있다. 새로 추가된 전송률 관리부(230)는 수신 관리부(210)로부터 각각의 클라이언트(100) 별로 전송 속도를 측정하여 이를 저장하고 있다. 만약 서버(200)가 수용 가능한 전송 대역폭이 총 10Mbps라고 할 때, 각 클라이언트(100)의 전송 속도의 합이 10Mbps를 넘지 않도록 이를 관리하기 위해서이다. 이를 관리하기 위해서는 QoS 제어부(240)에서 각각의 클라이언트(100) 별로 우선순위에 따라 서버(200)의 전송 대역폭을 할당해서 제공한다.
여기서 서버(200)의 전송 대역폭을 각각의 클라이언트(100) 별로 할당하는 과정은 각 클라이언트(100)가 데이터를 청크로 분할하여 전송할 때, 각 청크 사이의 지연시간(Delay Time)을 가지도록 설정하는 것을 통해 구현될 수 있다. 즉 클라이언트(100)가 서버(200)로 여러 개의 청크를 전송할 때, 하나의 청크를 보낸 후 다음 청크를 전송할 때 서버(200)에서 설정한 지연시간만큼 대기하였다가 다음의 청크를 전송하도록 변경 한다면, 특정 클라이언트(100)가 서버(200)의 전송 대역폭을 모두 점유하는 것을 사전에 방지할 수 있다. 또한, 우선순위에 따라 지연시간을 다르게 설명한다면, 각 클라이언트(100) 별로 전송 대역폭을 다르게 설정할 수 있어 보다 중요한 데이터는 먼저 전송할 수 있도록 할 수 있다.
이를 위해서 종래에는 클라이언트(100)에서 서버(200)로 청크를 바로 전송했다면, 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법에서는 클라이언트(100)가 먼저 서버(200)로 전송하려는 청크의 정보와 우선순위를 전송한다(1 단계). 이를 수신한 서버(200)는 내부에서 QoS 제어부(240)에 의해 클라이언트(100)로 청크를 전송할 URI(Uniform Resource Identifier)와 그 때 사용할 지연시간(Delay Time)을 전송한다(2 단계). 또한 클라이언트(100)가 보내온 우선순위를 QoS 제어부(240)에 저장한다. 이는 추후에 다른 클라이언트가 데이터 전송 요청을 하는 경우 각 클라이언트 사이의 우선순위를 비교하기 위해서이다. URI와 지연시간에 대해서는 추후 도 6을 통해서 보다 더 자세하게 설명하도록 한다. 서버(200)로부터 URI와 지연시간을 수신한 클라이언트(100)는 서버(200)로 각 청크를 전송하면서 서버에서 설정한 지연시간에 따라 일정한 주기로 청크를 전송한다(3 단계). 클라이언트(100)로부터 청크를 수신한 서버(200)는 이를 데이터 병합부(220)로 전달하여, 청크를 이용하여 원래의 데이터를 복원한다. 또한 클라이언트(100)로 청크의 수신을 완료했다는 응답을 송신할 수 있다(4 단계). 물론, 서버(200)가 클라이언트(100)로 보낼 수 있는 응답에는 수신완료 외에도, 특정 청크가 이상이 있는 경우에 해당 청크만 다시 보내달라는 응답을 보낼 수도 있다. 흔히 수신완료 응답을 ACK 응답(acknowledge) 이라 하며, 수신이상 응답을 ASK 응답이라고도 한다.
도 2에 예시된 것처럼, 서버(200)가 클라이언트(100)가 청크의 전송에 앞서 사전에 전송한 청크의 정보와 우선순위를 통해 클라이언트(100)의 지연시간을 설정함으로써, 클라이언트(100)의 전송 대역폭의 관리가 가능하다. 이를 통해 특정 클라이언트가 서버의 전송 대역폭을 모두 점유하는 것을 사전에 방지할 수 있다. 만약 클라이언트가 복수 개인 경우에 각 클라이언트 별로 지연시간을 어떻게 다르게 설정하는 지를 살펴보도록 하자.
도 3은 본 발명의 일 실시예에 따른 각 클라이언트 사이의 네트워크 대역폭 제어 방법을 설명하기 위한 예시도이다.
도 3을 참고하면, 도 2의 예시와는 다르게 클라이언트가 클라이언트 A(100a)와 클라이언트 B(100b)로 여러 개가 서버(200)에 접속되어 있는 것을 볼 수 있다. 이 때에도 기본적으로 데이터의 전송 과정은 도 2의 경우와는 크게 다르지 않다. 다만, 서버(200)의 QoS 제어부(240)에서 각 클라이언트(100a, 100b)가 전송한 우선순위에 따라 각 클라이언트(100a, 100b) 별로 지연시간을 다르게 설정하여 각 클라이언트(100a, 100b)로 전송함으로써, 각 클라이언트(100a, 100b) 별로 서로 다른 전송 대역폭을 가지도록 설정할 수 있다. 또한 처음 클라이언트(100a, 100b)가 서버(100)에 청크를 전송하기 전에 사전정보로 청크의 정보와 우선순위를 전송하여 그 응답으로 지연시간을 전송받는 경우 외에도, 서버(200)의 전송률 관리부(230)가 실시간으로 각 클라이언트(100a, 100b)의 데이터 전송속도를 측정하여 이를 고려하여 QoS 제어부(240)에서 실시간으로 지연시간을 변경하여 다시 클라이언트(100a, 100b)로 전송할 수 있다.
즉, 지연시간은 초기 연결을 생성하는 과정에서 1회 설정으로 끝나는 것이 아니라 클라이언트(100a, 100b)에서 서버(200)로 청크를 전송하는 중에도 실시간으로 계속해서 변경될 수 있는 값이다. 이를 위해서는, 서버(200)의 전송률 관리부(230)에서 각 클라이언트(100a, 100b) 별로 실시간으로 전송 속도를 측정하여 업데이트하고, QoS 제어부(240)에서는 우선순위에 따라 각 클라이언트(100a, 100b)로 할당되어야할 서버(200)의 전송 대역폭이 제대로 할당되어 전송 속도가 나오는지 확인 후 실시간으로 클라이언트(100a, 100b)에 조정된 지연시간을 피드백으로 제공할 수 있다. 만약 클라이언트(100a, 100b)에 할당된 전송 대역폭보다 실제 전송속도가 작다면 초기 연결 설정에 클라이언트(100a, 100b)에 할당한 지연시간보다 더 작은 지연시간을 새로운 설정값으로 클라이언트(100a, 100b)에 피드백을 할 수 있다. 반대로 클라이언트(100a, 100b)에 할당된 전송 대역폭보다 실제 전송속도가 더 크다면 초기 연결 설정에 클라이언트(100a, 100b)에 할당한 지연시간보다 더 큰 지연시간을 새로운 설정값으로 클라이언트(100a, 100b)에 피드백을 할 수 있다.
이상으로 각 클라이언트(100a, 100b)의 우선순위를 고려한 지연시간의 설정 및 실제 각 클라이언트(100a, 100b)의 전송속도를 고려한 지연시간의 변경을 살펴보았다. 실제로 서버(200)에서 각 클라이언트(100a, 100b) 별로 서버(200)의 전송 대역폭을 할당할 때, 고려할 수 있는 사항에 대해서 살펴보도록 하자. 우선 서버(200)가 수용할 수 있는 최대 전송 대역폭이 지연시간을 결정하는 하나의 기준이 될 수 있다. 또한, 서버(200)에 현재 접속한 클라이언트(100)의 수도 클라이언트(100)의 지연시간을 결정하는 한 요소가 될 수 있다. 또한, 클라이언트(100)가 서버(200)와 연결을 생성하는 초기 과정에서 전송한 클라이언트(100)가 보내려는 데이터의 우선순위에 따라 지연시간이 달라질 수 있다.
도 4a 내지 도 4f는 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법에서 지연시간에 대해 설명하기 위한 예시도이다.
도 4a를 참고하면, 우선순위 1을 가지는 클라이언트 A(100a)와 똑같이 우선순위 1을 가지는 클라이언트 B(100b)가 최대 전송 대역폭 1을 가지는 서버(200)에 데이터를 전송하는 과정을 볼 수 있다. 클라이언트 A(100a)에서 전송하려는 데이터는 1 단위 크기의 청크 4개로 이루어진 데이터이고, 마찬가지로 클라이언트 B(100b)에서 전송하려는 데이터도 1 단위 크기의 청크 4개로 이루어진 데이터이다. 이 때 클라이언트 A(100a)와 클라이언트 B(100b)는 서버(200)로 청크의 정보와 우선순위에 관한 정보를 전송한다(1 단계). 서버(200)는 클라이언트 A(100a)와 클라이언트 B(100b)의 데이터 전송요청에 대한 응답으로 각 클라이언트의 지연시간을 연산해서 클라이언트 A(100a)와 클라이언트 B(100b)로 전송한다(2 단계). 도 4a의 예시에서는 클라이언트 A(100a)와 클라이언트 B(100b)의 조건이 모두 똑같으므로 클라이언트 A(100a)와 클라이언트 B(100b)에 동일한 지연시간으로 단위시간 1만큼의 지연시간이 설정되었다. 서버(200)로부터 지연시간을 통보받은 클라이언트 A(100a)와 클라이언트 B(100b)는 지연시간에 따라, 하나의 청크를 전송하고 해당 시간만큼 대기하였다가 다시 다음의 청크를 전송하는 방식으로 자신의 전송 대역폭을 조절한다(3 단계). 클라이언트 A(100a)와 클라이언트 B(100b)의 청크 전송이 모두 완료되면 서버(200)는 각 클라이언트로 수신완료 응답을 전송한다(4 단계). 서버(200)의 입장에서는 우선순위가 같은 두 클라이언트(100a, 100b)를 서버의 최대 전송 대역폭 한도 내에서 동일하게 전송 대역폭을 배분하여 데이터를 전송받으므로, 어느 한 클라이언트가 서버의 전송 대역폭을 모두 점유하는 것을 사전에 방지할 수 있는 것을 도 4a의 예시를 통해서 볼 수 있다.
도 4b를 참고하면, 도 4a의 예시와 다르게 클라이언트 B(100b)의 우선순위가 2로 클라이언트 A(100a)의 우선순위보다 더 높은 것을 볼 수 있다. 클라이언트 B(100b)의 우선순위 외에는 나머지 조건은 도 4a와 동일하다. 이 경우 클라이언트 A(100a)의 전송 대역폭을 줄이고, 클라이언트 B(100b)의 전송 대역폭을 조금 더 확보할 필요가 있다. 이하 우선순위의 숫자가 더 클수록 보다 더 우선순위가 높고 보다 더 중요한 데이터임을 전제로 설명하도록 한다. 클라이언트 A(100a)보다 클라이언트 B(100b)의 우선순위가 더 높으므로 클라이언트 B(100b)에게 서버(200)의 전송 대역폭이 조금 더 많이 할당되어야 할 필요가 있다. 이를 위해서는 도 4a의 예시와는 다르게 클라이언트 A(100a)와 클라이언트 B(100b)의 지연시간을 다르게 설정할 필요가 있다. 이 경우 클라이언트 A(100a)의 우선순위가 1이고 클라이언트 B(100b)의 우선순위가 2이므로 클라이언트 A(100a)의 지연시간을 1.5 단위시간으로 클라이언트 B(100b)의 지연시간을 0.75 단위시간으로 설정할 필요가 있다. 이를 통해 클라이언트 A(100a)보다 클라이언트 B(100b)의 전송 대역폭을 2배 더 크게 설정할 수 있다. 전송 대역폭, 즉 전송 속도는 지연시간에 반비례하는 값이기 때문이다. 다시 말하면, 클라이언트의 우선순위가 높을수록 해당 클라이언트의 지연시간을 작게 설정해야한다. 지금까지 도 4b를 통해서 지연시간에 영향을 미칠 수 있는 요소 중에서 우선순위에 대해서 살펴보았다.
도 4c를 참고하면, 도 4a의 예시와 다르게 서버(200)의 최대 전송 대역폭(Max Throughput)이 2로 2배 증가한 것을 볼 수 있다. 서버(200)의 최대 전송 대역폭 외에는 나머지 조건은 도 4a의 예시와 동일하다. 도 4c의 예시에서는 도 4a의 예시에 비해 서버(200)에서 수용할 수 있는 최대 전송 대역폭이 2배 증가했으므로, 각 클라이언트 A(100a)와 클라이언트 B(100b)에 할당할 수 있는 전송 대역폭도 2배 증가하게 된다. 이로 인해 각 클라이언트에 설정되는 지연시간은 반대로 2배 감소하게 된다. 즉, 도 4a에서는 동일한 조건에서 각 클라이언트의 지연시간이 1 단위시간이었던 것에 비해 도 4c에서는 서버의 최대 전송 대역폭을 제외한 나머지는 모두 동일한 조건아래 각 클라이언트의 지연시간이 0.5 단위시간으로 변경되었다. 즉 각 클라이언트가 도 4a의 예시에 비해 두 배 더 빠르게 청크를 전송하더라도 서버(200)가 이를 처리할 수 있으므로, 이를 통해 서버(200)의 최대 전송 대역폭을 효율적으로 사용할 수 있다. 서버(200)의 최대 전송 대역폭이 증가하면 증가할수록 지연시간은 반비례해서 작은 값을 가지게 된다. 이는 서버가 한번에 더 많은 청크를 수신하여 처리할 수 있기 때문이다. 지금까지 도 4c를 통해서 지연시간에 영향을 미칠 수 있는 요소 중에서 서버(200)의 최대 전송 대역폭에 대해서 살펴보았다.
도 4d를 참고하면, 도 4a의 예시와 다르게 클라이언트 C(100c)가 추가된 것을 볼 수 있다. 클라이언트 C(100c)의 경우 클라이언트 A(100a)와 클라이언트 B(100b)와 동일한 우선순위 1을 가진다. 그 외에, 클라이어트 C(100a)의 경우에 전송하려는 청크의 양이 1 단위 크기의 청크 7개를 전송하려는 점이 차이가 있다. 서버의 최대 전송 대역폭을 2개의 클라이언트(100a, 100b)가 나눠서 쓰다가 클라이언트 C(100c)가 추가되어 3개의 클라이언트(100a, 100b, 100c)가 나눠서 사용하여야 하므로, 각각의 지연시간이 동일하되 도 4a의 경우보다는 큰 값으로 설정이 될 것이다. 서버(200)의 QoS 제어부(240)에서는 이를 연산하여 각 클라이언트(100a, 100b, 100c)의 지연시간으로 0.75 단위 시간을 설정할 수 있다. 이를 통해서, 기존의 클라이언트(100a, 100b)가 서버(200)에 연결되어 데이터를 전송하던 중에 새로운 클라이언트(100c)가 추가되더라도 이전에 연결된 클라이언트(100a, 100b)의 지연시간을 늘리고, 이전에 연결된 클라이언트(100a, 100b)의 지연시간을 늘림으로서 확보한 서버(200)의 전송 대역폭을 새로 연결된 클라이언트(100c)에 할당할 수 있다. 도 4d를 통해서 지연시간에 영향을 미칠 수 있는 요인으로 서버(200)에 연결중인 클라이언트(100)의 수를 살펴보았다. 지금은 단일 세션을 기준으로 클라이언트(100)의 수를 고려하였으나, 만약 멀티 세션과 같은 병렬 연결이라면 서버(200)에 연결된 세션의 수를 기준으로 지연시간을 연산하여야 한다. 이는 기준이 클라이언트(100)의 수에서 세션의 수로 변경된 것일 뿐 나머지는 동일하다. 다시 단일 세션 기준으로 돌아가서 설명을 하면, 서버(200)에 연결된 클라이언트(100)의 수가 많으면 많을수록 각 클라이언트(100)에 할당되는 서버의 전송 대역폭은 작아지게 되므로, 반대로 각 클라이언트(100)에는 보다 더 긴 지연시간이 설정된다. 즉, 클라이언트(100)의 수가 증가할수록 지연시간도 증가한다.
도 4e를 참고하면, 도 4d의 경우에 클라이언트 C(100c)가 다른 클라이언트 A(100a) 및 클라이언트 B(100b)보다 전송하려는 청크의 양이 3개 더 많아 다른 클라이언트 A(100a) 및 클라이언트 B(100b)의 전송완료 이후를 살펴볼 수 있다. 서버(200)는 클라이언트 A(100a) 및 클라이언트 B(100b)로부터 4개의 청크를 모두 수신하여 청크로부터 원래의 데이터를 복원하고, 이 때 각 클라이언트 A(100a) 및 클라이언트 B(100b)로 수신완료 응답인 ACK 응답을 전송할 수 있다. 클라이언트 A(100a) 및 클라이언트 B(100b)가 서버(200)로부터 ACK 응답을 수신한 후에는, 더 이상 전송할 청크가 없으므로 서버(200)와의 연결을 종료하게 된다. 그러면, 서버에 연결된 클라이언트는 클라이언트 C(100c)만 남게 되므로, 클라이언트 C(100c)는 클라이언트 A(100a) 및 클라이언트 B(100b)와 나눠서 쓰던 서버(100)의 전송 대역폭을 혼자서 사용할 수 있게 된다. 즉 종전에는 단위 시간 1.5 만큼의 지연시간을 가지고 청크를 전송하였으나, 청크 4개를 전송하면서 다른 클라이언트 A(100a) 및 클라이언트 B(100b)의 전송이 모두 완료된 후에는 클라이언트 C(100c)의 지연시간은 다시 갱신될 수 있다. 서버(200)는 클라이언트 A(100a) 및 클라이언트 B(100b)가 사용하던 전송 대역폭까지 클라이언트 C(100c)가 사용하도록 지연시간을 종전의 단위 시간 1.5에서 단위 시간 0.5로 줄일 수 있다. 즉, 지연시간에 영향을 줄 수 있는 서버(200)에 연결된 클라이언트(100)의 수는 시시각각 변할 수 있는 값이므로 서버(200)의 QoS 제어부(240)는 실시간으로 각 클라이언트(100)의 지연시간을 연산하여 새로운 지연시간으로 갱신할 수 있다. 이를 통해 서버(200)에 연결된 클라이언트(100)의 수가 많으면 많은대로, 적으면 적은대로 서버(200)의 전송 대역폭을 효율적으로 공유할 수 있다. 지금까지 도 4d 내지 도 4e를 통해서 지연시간에 영향을 미칠 수 있는 요소 중에서 서버(200)에 연결된 클라이언트(100)의 수에 대해서 살펴보았다.
도 4f를 참고하면, 도 4a의 예시에 비해 클라이언트 A(100a)에서 전송하려는 청크의 크기가 2배 증가한 것을 볼 수 있다. 즉, 도 4a의 예시에서는 1 단위 크기의 청크를 총 4개 전송했었는데 도 4f의 예시에서는 2 단위 크기의 청크를 총 2개 전송하려는 경우에 지연시간에 대해서 살펴보도록 하자. 대부분의 경우에는 각 청크는 클라이언트(100)와 무관하게 동일한 크기를 가진다. 그러나 경우에 따라서는 전송하려는 청크의 크기가 클라이언트(100) 별로 다를 수 있다. 이런 경우에는 청크의 크기도 고려하여 지연시간을 연산하여야 한다. 만약 클라이어트 A(100a)에 도 4a와 동일하게 1 단위 시간만큼의 지연시간을 설정하면 1 단위 시간에 2 단위 크기의 청크가 전송되므로 지연시간을 두배로 늘려야 원래 클라이언트 A(100a)에 할당된 전송 대역폭과 같아지게 될 것이다. 도 4f의 경우에 클라이언트 A(100a)는 도 4a의 1 단위 시간에 비해 2배 증가한 2 단위 시간의 지연시간이 설정된다. 이를 통해 총 2 단위 크기의 청크 2개를 4 단위 시간동안 전송하게 되어, 총 1 단위 크기의 청크 4개를 4 단위시간 동안 전송하는 클라이언트 B(100b)와 동일한 전송 대역폭을 가지게 된다. 지금까지 도 4f를 통해서 지연시간에 영향을 미칠 수 있는 요소 중에서 클라이언트(100)가 전송하려는 청크의 크기에 대해서 살펴보았다.
도 5는 본 발명의 일 실시예에 따른 서버의 전송 대역폭에 여유가 없는 경우의 네트워크 대역폭 제어 방법을 설명하기 위한 예시도이다.
도 4a 내지 도 4f를 통해서 각 클라이언트(100) 별 지연시간의 설정을 통해 네트워크 대역폭을 제어하는 방법에 대해서 살펴보았다. 그러나 경우에 따라서는 이렇게 서버(200)에서 네트워크 대역폭을 제어하더라도, 서버(200)에서 더 이상의 데이터 처리가 불가능한 경우가 있을 수 있다. 만약 이런 상황에서 클라이언트(100)로부터 데이터 전송 요청이 오는 경우 서버(200)의 대응방안을 도 5를 통해서 살펴보도록 하자. 도 5를 참고하면, 서버 A(200a), 서버 B(200b), 서버 C(200c), 서버 D(200c)가 하나의 서버 클러스터(300)를 구성하고 있는 것을 볼 수 있다. 만약 현재 서버 A(200a)가 네트워크 대역폭을 모두 사용 중이여서 더 이상의 클라이언트(100) 요청을 처리할 수 없는 상황에서 클라이언트 A(100a)의 전송 요청을 수신하는 경우를 가정해보자.
이 경우 서버 A(200a)는 클라이언트 A(100a)의 요청을 자신이 직접 처리할 수 없으므로 이를 해결할 수 있는 다른 서버 B 200b)나 서버 C(200c)나 서버 D(200d)로 클라이언트 A(100a)의 요청을 전달할 수 있다. 물론, 서버 A(200a)가 서버 B 200b), 서버 C(200c), 서버 D(200d) 중에서 가장 여유로운 서버가 어느 서버인지 알고 있어서 이를 클라이언트 A(100a)로 전해줄 수 있으면 좋지만, 그렇지 않더라도 각 서버가 순환 구조로 연결되어 있다면, 서버 A(200a)는 그저 자신의 다음 서버 B(200b)로 클라이언트 A(100a)의 요청을 전달하는 것으로 충분하다. 만약 서버 B(200b)도 클라이언트 A(100a)의 요청을 처리할 수 없다면 서버 B(200b)도 클라이언트 A(100a)의 요청을 서버 C(200c)로 전달하면 된다. 마찬가지로 만약 서버 C(200c)도 클라이언트 A(100a)의 요청을 처리할 수 없다면 서버 C(200c)도 클라이언트 A(100a)의 요청을 서버 D(200d)로 전달하면 된다.
서버 클러스터(300)를 구성하는 각 서버가 순환 구조로 연결되어 있으면, 각 서버가 다른 서버의 전송 대역폭 여유 상태를 알지 못하더라도 그저 다음 순번의 서버에 클라이언트의 요청을 전달하는 것만으로도, 서버 클러스터(300)를 구성하는 서버의 수를 n이라 할 때, 최악의 경우 n-1만큼의 전달 후에는 해당 클라이언트의 요청을 처리해 줄 서버를 찾을 수 있게 된다. 그러므로, 각 서버(200)는 클라이언트(100)의 전송 요청을 받으면, 지연시간을 연산하기에 앞서 자신이 클라이언트(100)의 요청을 수용할 수 있는지 확인해보고 없다면 다른 서버로 클라이언트(100)의 요청을 전달하고, 처리할 수 있는 경우에는 해당 클라이언트(100)에 할당할 전송 대역폭과 이에 따른 지연시간을 연산하여, 클라이언트(100)의 전송 요청에 대한 응답으로 URI와 지연시간을 전송할 수 있다. 이를 통해 서버 클러스터(300)를 구성하는 각 서버간의 로드 밸런싱(load balancing)을 할 수 있다.
도 6은 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법을 설명하기 위한 개념도이다.
도 6을 참고하면 클라이언트(100)와 서버(200) 사이의 데이터 전송을 위한 흐름을 한 눈에 볼 수 있다. 클라이언트(100)가 데이터 전송을 위해 전송하려는 데이털르 여러 개의 청크로 나누고, 이 때 생성된 청크의 정보와 우선순위를 서버(200)로 전송한다. 이 때 전송하는 청크의 정보는 청크의 크기와 개수가 주된 내용을 이룬다. 클라이언트(100)의 전송 요청을 받은 서버(200)는 현재 자신에 연결된 클라이언트의 수가 초과 상태인지 확인한다. 만약 초과 상태라면 서버(200)는 더 이상 클라이언트(100)의 데이터 전송 요청을 처리할 수 없으므로 다른 서버의 URI를 클라이언트(100)로 전송한다. 만약 서버(200)가 클라이언트(100)의 데이터 전송 요청을 처리할 수 있는 상황이라면 클라이언트(100)로 전달할 지연 시간을 연산한다. 지연시간에 영향을 미칠 수 있는 요소로 도 4a 내지 도 4f를 통해서 살펴본 것처럼, 우선순위, 서버의 최대 전송 대역폭, 서버(200)에 연결된 클라이언트(100)의 수, 전송하려는 청크의 크기 등이 있다. 이러한 요소들을 고려하여 서버(200)는 클라이언트(100)로 지연시간을 전송한다.
서버(200)에서 다른 서버의 URI를 전송한 경우에는 해당 서버로 접속을 다시 시도하여 전송 요청을 하여야 한다. 만약 다른 서버의 URI가 아닌 서버(200) 자신의 URI와 지연시간을 전송한 경우에는 클라이언트(100)의 전송 관리부(100)에서는 서버(200)에서 설정한 지연시간에 따라 전송하려는 청크를 순차적으로 전송한다. 클라이언트(100)로부터 청크를 수신한 서버(200)의 수신 관리부(210)는 수신한 청크를 데이터 병합부(220)로 전달하여 청크로부터 원래의 데이터를 복원할 수 있다. 그리고 서버(200)는 클라이언트(100)의 청크 전송 속도를 실시간으로 측정하여 전송률 관리부(230)에서 이를 관리한다. 서버(200)의 QoS 제어부(240)는 실시간으로 전송률 관리부(230)에서 관리하고 있는 클라이언트(100)의 전송률을 반영하여, 클라이언트(100)의 지연시간을 피드백(feedback)한다. 만약 연결 초기에 연산한 지연시간에 비해 조건이 바뀌었다거나, 연결 초기에 연산한 지연시간에 의해서도 클라이언트(100)의 실제 전송 대역폭이 초과하거나 미달인 경우에는 지연시간을 다소 보정하는 것이다. 이를 통해서 서버(200)의 최대 전송 대역폭 이내에서 서버(200)의 전송 대역폭을 효율적으로 사용할 수 있다.
도 7은 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 방법의 순서도이다.
서버(200)는 데이터를 전송하고자 하는 클라이언트(100)로부터 전송하려는 청크의 정보와 우선순위를 수신한다(S1000). 앞서 설명한 것처럼 청크의 정보에는 전송하려는 청크의 크기와 개수가 포함될 수 있다. 클라이언트(100)의 전송 요청을 받은 서버(200)는 우선 자신의 데이터 처리 상황을 살펴보고 추가로 더 연결을 생성하여 클라이언트(100)의 데이터 전송 요청을 처리할 수 있는지 확인한다(S2000). 만약 더 이상 처리할 수 없는 상황이라면 다른 서버(200)의 URI를 대체하여(S2500), 클라이언트(100)로 다른 서버(200)의 URI를 전송한다(S4000). 클라이언트(100)는 현재 전송 요청을 한 서버(200) 외의 다른 서버(200)의 URI를 수신한 경우에는 다른 서버(200)로 데이터 전송 요청을 보내보고 해당 서버(200)의 상황에 따라 데이터 전송을 마저 진행하면 된다.
만약 서버(200)가 추가적인 연결을 생성하여 클라이언트(100)의 데이터 전송 요청을 처리할 수 있다면, 서버(200)는 클라이언트(100)가 데이터를 전송할 때 사용할 지연시간을 연산한다(S3000). 지연시간에 영향을 주는 요인으로는 우선 클라이언트(100)의 우선순위가 높을수록 지연시간을 작게 설정한다. 서버(200)의 최대 전송 대역폭이 클수록 지연시간을 작게 설정한다. 서버(200)에 연결된 클라이언트(100)의 수가 클수록 지연시간을 크게 설정한다. 클라이언트(100)가 전송하려는 청크의 크기가 클수록 지연시간을 크게 설정한다. 이와 같은 과정을 통해 QoS 제어부(240)에서 각 클라이언트(100)의 데이터 전송 요청시 함께 보낸 우선순위를 고려하여 지연시간을 연산하고(S3000), 이를 클라이언트(100)로 전송한다(S4000). 클라이언트(100)는 서버(200)에서 설정한 지연시간에 따라 청크를 순차적으로 전송하고, 서버(200)는 클라이언트(100)에서 보내는 대로 지연시간에 따라 청크를 순차적으로 수신한다(S5000). 이를 통해 서버(200)의 최대 전송 대역폭 이내에서 각 클라이언트(100)의 데이터 전송 요청을 우선순위에 따라 효율적으로 네트워크 대역폭을 제어할 수 있다.
또한 서버(200)가 실제로 각 클라이언트(100)로부터 청크를 수신하면서 지연시간에 영향을 줄 수 있는 요건이 변하는 경우 새롭게 지연시간을 연산하여 이를 각 클라이언트(100)에 피드백 할 수 있다. 지연시간에 영향을 줄 수 있는 요인 중에서 클라이언트(100)의 우선순위나, 서버(200)의 최대 전송 대역폭이나, 클라이언트(100)가 전송하려는 청크의 크기는 고정적일 것이나 서버(200)에 연결된 클라이언트(100)의 수는 가변적이므로 이를 고려하여 실시간으로 지연시간을 변경하여 클라이언트(100)의 수의 변화에 따라 클라이언트(100)의 전송 대역폭을 제어할 수 있다.
또한, 앞서 든 요인 외에도 실제로 각 클라이언트(100)의 전송 대역폭에 영향을 줄 수 있는 사항은 여러가지가 있다. 앞서 든 요인들이 지연시간 연산에 고려할 수 있을 정도로 제어 가능한 변수들이라면, 제어 불가능한 변수 중에서 클라이언트(100)의 전송 대역폭에 영향을 미치는 요인들도 있기 때문이다. 예를 들면 클라이언트(100)와 서버(200) 사이의 네트워크 상태라던가, 클라이언트(100)의 성능 차이라던가 여러가지 요인들이 클라이언트(100)의 전송 대역폭에 영향을 미칠 수 있다. 이러한 요소들로 인한 클라이언트(100)의 전송 대역폭의 영향을 감소시키기 위하여, 서버(200)의 QoS 제어부(240)는 서버(200)의 전송률 관리부(230)에서 관리하고 있는 각 클라이언트(100) 별 실시간 전송률을 기준으로 지연시간을 보정할 수 있다. 만약 클라이언트(100)에 할당된 전송 대역폭보다 실제 전송속도가 작다면 초기 연결 설정에 클라이언트(100)에 할당한 지연시간보다 더 작은 지연시간을 새로운 설정값으로 클라이언트(100)에 피드백을 할 수 있다. 반대로 클라이언트(100)에 할당된 전송 대역폭보다 실제 전송속도가 더 크다면 초기 연결 설정에 클라이언트(100)에 할당한 지연시간보다 더 큰 지연시간을 새로운 설정값으로 클라이언트(100)에 피드백을 할 수 있다.
도 8은 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 장치의 블록도이다.
도 8을 참고하면, 네트워크 대역폭 제어 장치(200)는 수신 관리부(210)와 데이터 병합부(220)와 전송률 관리부(230) 및 QoS 제어부(240) 를 포함할 수 있다. 수신 관리부(210)는 클라이언트(100)로부터 데이터 전송 요청과, 청크를 수신할 수 있다. 수신 관리부(210)는 클라이언트(100)의 전송 요청을 QoS 제어부(240)로 전달하여 전송 요청을 수락할지 여부와, 수락하는 경우 클라이언트(100)가 사용할 지연시간을 연산해달라고 요청할 수 있다. 또한 수신 관리부(210)는 클라이언트(100)의 청크를 수신하여 이를 데이터 병합부(220)에 전달하여 청크로부터 원래의 데이터를 복원할 수 있다.
데이터 병합부(220)는 수신 관리부(210)로부터 데이터를 이루는 청크를 전달 받는다. 또한 그 크기가 매우 작아 데이터의 전송 과정에서는 설명을 생략하였지만, 데이터를 구성하고 있는 각 청크의 메타 정보를 수신하여, 각 청크를 어떻게 병합하여야 원래의 데이터를 얻을 수 있는지 확인하여 청크를 병합하고 데이터를 복원한다.
전송률 관리부(230)는 수신 관리부(210)와 실시간으로 연동되어, 클라이언트(100)가 보낸 청크를 서버(200)가 수신할 때의 전송속도를 측정한다. 이를 이용하여 실제 클라이언트(100)에 할당된 전송 대역폭와의 차이만큼 지연시간을 보정하도록 QoS 제어부(240)에 정보를 제공할 수 있다.
QoS 제어부(240)는 클라이언트(100)와 초기 연결을 생성할 때, 연결을 생성할 지 여부와 클라이언트(100)가 사용할 지연시간을 연산할 수 있다. 또한 지연시간에 영향을 미치는 요건들이 변하였을 때 실시간으로 지연시간을 연산하여 클라이언트(100)로 피드백할 수 있다. 또한 전송률 관리부(230)에서 측정한 각 클라이언트(100)의 실시간 전송 대역폭이 실제 지연시간 설정을 통해 각 클라이언트(100)에 할당하려고 했던 전송 대역폭과 차이가 있는 경우 이를 감쇄시키기 위해 지연시간을 보정하여 클라이언트(100)로 피드백 할 수 있다.
지금까지는 클라이언트(100)에서 서버(200)로 데이터를 업로드(upload)하는 경우를 위주로 설명하였지만, 이와 같은 지연시간을 이용한 네트워크 대역폭의 제어는 클라이언트(100)에서 서버(200)의 데이터를 다운로드(download) 하는 경우에도 동일하게 적용될 수 있다. 즉, 클라이언트(100)로부터 우선순위와 함께 다운로드 요청을 받고, 클라이언트(100)로 데이터를 보내기 위해 데이터를 여러 개의 청크로 나눈 다음 QoS 제어부(240)에서 각 클라이언트(100) 별 지연시간을 연산하여, 지연시간에 따라 클라이언트(100)에 청크를 순차적으로 전송하는 경우에도 적용될 수 있다. 다만 차이라면 서버(200)에서 청크를 전송하므로 클라이언트(100)에 별도로 지연시간을 알려줄 필요가 없다는 점과, 상황에 따라 서버(200)에서 바로 바로 클라이언트(100)로 데이터를 전송하기 위한 지연시간을 갱신할 수 있다는 점이다. 이러한 차이 외에는 지연시간을 이용하여 네트워크 대역폭을 제어하는 기본적인 특징은 동일하다.
도 9는 본 발명의 일 실시예에 따른 네트워크 대역폭 제어 장치의 하드웨어 구성도이다.
도 9를 참고하면, 네트워크 대역폭 제어 장치(200)는 하나 이상의 프로세서(510), 메모리(520), 스토리지(560) 및 네트워크 인터페이스(570)을 포함할 수 있다. 프로세서(510), 메모리(520), 스토리지(560) 및 인터페이스(570)는 시스템 버스(550)를 통하여 데이터를 송수신한다.
프로세서(510)는 메모리(520)에 로드 된 컴퓨터 프로그램을 실행하고, 메모리(520)는 상기 컴퓨터 프로그램을 스토리지(560)에서 로드(load) 한다. 상기 컴퓨터 프로그램은, 수신 관리 오퍼레이션(521), 전송률 관리 오퍼레이션(523), QoS 제어 오퍼레이션(525) 및 청크 병합 오퍼레이션(527)을 포함할 수 있다.
수신 관리 오퍼레이션(521)은 네트워크를 통해 클라이언트(100)로부터 데이터 전송 요청을 수신하고 또한 청크를 수신할 수 있다. 수신 관리 오퍼레이션(521)은 클라이언트(100)의 전송 요청을 QoS 제어 오퍼레이션(525)로 전달하여 전송 요청을 수락할지 여부와, 수락하는 경우 클라이언트(100)가 사용할 지연시간을 연산해달라고 요청할 수 있다. 이 때 수신 관리 오퍼레이션(521)은 클라이언트(100)로부터 전송받은 우선순위 정보(565)를 시스템 버스(550)를 통해 스토리지의 우선순위 정보(565)로 저장할 수 있다. 이 때 저장한 우선순위 정보(565)는 QoS 제어 오퍼레이션(525)이 각 클라이언트(100)의 지연시간을 연산할 때 사용될 수 있다. 또한 수신 관리 오퍼레이션(521)에서 클라이언트(100)로부터 수신한 청크 데이터는 시스템 버스(550)를 통해 스토리지(560)의 청크 데이터(561)로 저장될 수 있다. 또한 수신 관리 오퍼레이션(521)은 스토리지(560)의 청크 데이터(561)로 저장된 청크를 데이터 병합 오퍼레이션(220)에 전달하여 청크로부터 원래의 데이터를 복원할 수 있다.
전송률 관리 오퍼레이션(523)은 수신 관리 오퍼레이션(521)과 실시간으로 연동되어, 클라이언트(100)가 보낸 청크를 서버(200)가 수신할 때의 전송속도를 측정한다. 이렇게 측정한 전송률 데이터(563)를 시스템 버스(550)를 통해 스토리지(560)의 전송률 데이터(563)으로 저장할 수 있다. 이렇게 저장된 전송률 데이터(563)를 이용하여 실제 클라이언트(100)에 할당된 전송 대역폭와의 차이만큼 지연시간을 보정하도록 QoS 제어 오퍼레이션(525)에 정보를 제공할 수 있다.
QoS 제어 오퍼레이션(525)은 클라이언트(100)와 초기 연결을 생성할 때, 연결을 생성할 지 여부와 클라이언트(100)가 사용할 지연시간을 연산할 수 있다. 또한 지연시간에 영향을 미치는 요건들이 변하였을 때 실시간으로 지연시간을 연산하여 네트워크 인터페이스(570)를 통해 클라이언트(100)로 피드백할 수 있다. 또한 전송률 관리 오퍼레이션(523)에서 측정한 각 클라이언트(100)의 실시간 전송 대역폭이 실제 지연시간 설정을 통해 각 클라이언트(100)에 할당하려고 했던 전송 대역폭과 차이가 있는 경우 이를 감쇄시키기 위해 지연시간을 보정하여 네트워크 인터페이스(570)를 통해 클라이언트(100)로 피드백 할 수 있다.
데이터 병합 오퍼레이션(527)는 수신 관리 오퍼레이션(521)로부터 시스템 버스(550)를 통해 스토리지(560)에 저장된 데이터를 이루는 청크 데이터(561)를 전달 받는다. 또한 그 크기가 매우 작아 데이터의 전송 과정에서는 설명을 생략하였지만, 데이터를 구성하고 있는 각 청크의 메타 정보를 수신하여, 각 청크를 어떻게 병합하여야 원래의 데이터를 얻을 수 있는지 확인하여 청크를 병합하고 데이터를 복원한다.
도 9의 각 구성 요소는 소프트웨어(Software) 또는, FPGA(Field Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성 요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성 요소에 의하여 구현될 수 있으며, 복수의 구성 요소들을 합하여 특정한 기능을 수행하는 하나의 구성 요소로 구현될 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (17)

  1. 서버가, 복수의 클라이언트로부터 데이터의 전송 요청을 수신하는 단계;
    상기 서버가, 상기 복수의 클라이언트의 대역폭을 제어하기 위한 각각의 지연시간을 연산하는 단계;
    상기 서버가, 상기 복수의 클라이언트로부터 상기 각각의 지연시간마다 상기 데이터를 구성하는 청크를 수신하는 단계; 및
    상기 서버가, 상기 청크를 병합하여 상기 데이터를 복원하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  2. 제1항에 있어서,
    상기 데이터의 전송 요청을 수신하는 단계는,
    상기 서버가, 상기 클라이언트로부터 상기 데이터의 우선순위를 더 수신하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  3. 제1항에 있어서,
    상기 데이터의 전송 요청을 수신하는 단계는,
    상기 서버가, 상기 클라이언트로부터 상기 청크의 크기와 개수를 더 수신하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  4. 제1항에 있어서,
    상기 데이터의 전송 요청을 수신하는 단계는,
    상기 서버가, 상기 클라이언트의 데이터의 전송 요청을 처리할 수 없을 때에는, 상기 서버가 포함된 서버 클러스터 내의 다른 서버로 상기 클라이언트의 데이터의 전송 요청을 전달하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  5. 제4항에 있어서,
    상기 서버 클러스터에 포함된 각 서버는, 순환 구조로 연결되어 있는 것인,
    네트워크 대역폭 제어 방법.
  6. 제1항에 있어서,
    상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는,
    상기 데이터의 우선순위가 높을수록 상기 지연시간을 작게 연산하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  7. 제1항에 있어서,
    상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는,
    상기 서버의 최대 전송 대역폭이 높을수록 상기 지연시간을 작게 연산하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  8. 제1항에 있어서,
    상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는,
    상기 서버에 연결된 클라이언트의 수가 많을수록 상기 지연시간을 크게 연산하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  9. 제1항에 있어서,
    상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는,
    상기 청크의 크기가 클수록 상기 지연시간을 크게 연산하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  10. 제1항에 있어서,
    상기 지연시간마다 상기 데이터를 구성하는 청크를 수신하는 단계는,
    상기 서버가, 상기 클라이언트로부터 상기 청크를 전송받을 때의 전송 대역폭을 측정하는 단계; 및
    상기 전송 대역폭에 따라 상기 지연시간을 보정하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  11. 서버가, 클라이언트로부터 데이터의 수신 요청을 수신하는 단계;
    상기 서버가, 상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계; 및
    상기 서버가, 상기 클라이언트에 상기 지연시간마다 상기 데이터를 구성하는 청크를 송신하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  12. 제11항에 있어서,
    상기 데이터의 수신 요청을 수신하는 단계는,
    상기 서버가, 상기 클라이언트로부터 상기 데이터의 우선순위를 더 수신하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  13. 제11항에 있어서,
    상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는,
    상기 데이터의 우선순위가 높을수록 상기 지연시간을 작게 연산하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  14. 제11항에 있어서,
    상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는,
    상기 서버의 최대 전송 대역폭이 높을수록 상기 지연시간을 작게 연산하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  15. 제11항에 있어서,
    상기 클라이언트의 대역폭을 제어하기 위한 지연시간을 연산하는 단계는,
    상기 서버에 연결된 클라이언트의 수가 많을수록 상기 지연시간을 크게 연산하는 단계를 포함하는,
    네트워크 대역폭 제어 방법.
  16. 네트워크 인터페이스;
    하나 이상의 프로세서;
    상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드하는 메모리; 및
    전송률 데이터와 우선순위 정보를 저장하는 스토리지를 포함하는 네트워크 대역폭 제어 장치에 있어서,
    상기 컴퓨터 프로그램은,
    상기 네트워크 대역폭 제어 장치가, 복수의 클라이언트로부터 데이터의 전송 요청을 수신하는 오퍼레이션;
    상기 네트워크 대역폭 제어 장치가, 상기 복수의 클라이언트의 대역폭을 제어하기 위한 각각의 지연시간을 연산하는 오퍼레이션;
    상기 네트워크 대역폭 제어 장치가, 상기 복수의 클라이언트로부터 상기 각각의 지연시간마다 상기 데이터를 구성하는 청크를 수신하는 오퍼레이션; 및
    상기 네트워크 대역폭 제어 장치가, 상기 청크를 병합하여 상기 데이터를 복원하는 오퍼레이션을 포함하는 것인,
    네트워크 대역폭 제어 장치.
  17. 네트워크 인터페이스;
    하나 이상의 프로세서;
    상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드하는 메모리; 및
    전송률 데이터와 우선순위 정보를 저장하는 스토리지를 포함하는 네트워크 대역폭 제어 장치에 있어서,
    상기 컴퓨터 프로그램은,
    상기 네트워크 대역폭 제어 장치가, 복수의 클라이언트로부터 데이터의 수신 요청을 수신하는 오퍼레이션;
    상기 네트워크 대역폭 제어 장치가, 상기 복수의 클라이언트의 대역폭을 제어하기 위한 각각의 지연시간을 연산하는 오퍼레이션; 및
    상기 네트워크 대역폭 제어 장치가, 상기 복수의 클라이언트에 상기 각각의 지연시간마다 상기 데이터를 구성하는 청크를 송신하는 오퍼레이션을 포함하는 것인,
    네트워크 대역폭 제어 장치.
KR1020150151075A 2015-10-29 2015-10-29 네트워크 대역폭 제어 방법 및 그 장치 KR101818493B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150151075A KR101818493B1 (ko) 2015-10-29 2015-10-29 네트워크 대역폭 제어 방법 및 그 장치
US15/337,687 US20170126571A1 (en) 2015-10-29 2016-10-28 Method and apparatus for controlling network bandwidth

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150151075A KR101818493B1 (ko) 2015-10-29 2015-10-29 네트워크 대역폭 제어 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20170050043A KR20170050043A (ko) 2017-05-11
KR101818493B1 true KR101818493B1 (ko) 2018-01-15

Family

ID=58637485

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150151075A KR101818493B1 (ko) 2015-10-29 2015-10-29 네트워크 대역폭 제어 방법 및 그 장치

Country Status (2)

Country Link
US (1) US20170126571A1 (ko)
KR (1) KR101818493B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210410013A1 (en) * 2020-06-26 2021-12-30 Qualcomm Incorporated Indication of operating configuration priorities

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080056192A1 (en) * 2006-08-31 2008-03-06 Piping Hot Networks Limited Latency reduction by adaptive packet fragmentation
US20100095013A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Fault Tolerance in a Distributed Streaming System

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9178929B2 (en) * 2012-05-01 2015-11-03 Ericsson Ab Client-side class-of-service-based bandwidth management in over-the-top video delivery
US10033794B2 (en) * 2015-07-17 2018-07-24 Bio-Rad Laboratories, Inc. Network transfer of large files in unstable network environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080056192A1 (en) * 2006-08-31 2008-03-06 Piping Hot Networks Limited Latency reduction by adaptive packet fragmentation
US20100095013A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Fault Tolerance in a Distributed Streaming System

Also Published As

Publication number Publication date
US20170126571A1 (en) 2017-05-04
KR20170050043A (ko) 2017-05-11

Similar Documents

Publication Publication Date Title
US11546644B2 (en) Bandwidth control method and apparatus, and device
US10140236B2 (en) Receiving buffer credits by a plurality of channels of one or more host computational devices for transmitting data to a control unit
US10289591B2 (en) Adjustment of buffer credits and other parameters in a startup phase of communications between a plurality of channels and a control unit
CN108023812B (zh) 云计算系统的内容分发方法及装置、计算节点及系统
US10157150B2 (en) Adjustments of buffer credits for optimizing the number of retry operations and transfer ready operations
US10993127B2 (en) Network slice instance management method, apparatus, and system
US7873733B2 (en) Load distribution method, load distribution device, and system including load distribution device
CN108028833A (zh) 一种nas数据访问的方法、系统及相关设备
CN113055469B (zh) 云容器存储控制方法、系统、电子设备及存储介质
US10216593B2 (en) Distributed processing system for use in application migration
KR20170126408A (ko) 네트워크를 자동적으로 관리하는 방법 및 장치
CN113760549B (zh) 一种pod部署方法及装置
KR101818493B1 (ko) 네트워크 대역폭 제어 방법 및 그 장치
CN111770026B (zh) 一种网络流量控制方法和装置
CN109815204A (zh) 一种基于拥塞感知的元数据请求分发方法及设备
CN111064700B (zh) 云游戏的下载方法、装置及系统
CN112540966A (zh) 一种文件同步的方法及装置
CN115378962A (zh) 一种基于iSCSI协议的存储集群的高可用性连通方法和系统
CN109298944B (zh) 服务器压力调节方法及装置、计算机装置及存储介质
JP7353836B2 (ja) 情報処理装置、方法およびプログラム
CN114465958B (zh) 一种输入输出的控制方法、装置及介质
CN108833492B (zh) 提高服务器调用准确率的方法、装置、客户端和系统
KR101076762B1 (ko) 프로세스 할당 장치 및 그 동작 방법
US10298510B1 (en) Controlling data transmission rates of multiple devices
US20150372899A1 (en) Communication system and network control device

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