KR102111029B1 - 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법 - Google Patents

다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법 Download PDF

Info

Publication number
KR102111029B1
KR102111029B1 KR1020160076069A KR20160076069A KR102111029B1 KR 102111029 B1 KR102111029 B1 KR 102111029B1 KR 1020160076069 A KR1020160076069 A KR 1020160076069A KR 20160076069 A KR20160076069 A KR 20160076069A KR 102111029 B1 KR102111029 B1 KR 102111029B1
Authority
KR
South Korea
Prior art keywords
network
data
scheduling
networks
transmission
Prior art date
Application number
KR1020160076069A
Other languages
English (en)
Other versions
KR20170142513A (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 KR1020160076069A priority Critical patent/KR102111029B1/ko
Publication of KR20170142513A publication Critical patent/KR20170142513A/ko
Application granted granted Critical
Publication of KR102111029B1 publication Critical patent/KR102111029B1/ko

Links

Images

Classifications

    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/14
    • 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/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • 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]
    • H04W72/1226
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W72/00Local resource management
    • H04W72/50Allocation or scheduling criteria for wireless resources
    • H04W72/54Allocation or scheduling criteria for wireless resources based on quality criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/02Processing of mobility data, e.g. registration information at HLR [Home Location Register] or VLR [Visitor Location Register]; Transfer of mobility data, e.g. between HLR, VLR or external networks
    • H04W8/04Registration at HLR or HSS [Home Subscriber Server]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

다중망 병합 전송 장치의 패킷 스케줄링 방법으로서, 수신 장치와 연결된 복수 망 각각에 대한 망 상태 파라미터들을 수집하는 단계, 상기 복수 망 각각의 망 상태 파라미터들을 기초로 상기 복수 망 중에서 제어 망을 결정하는 단계, 그리고 상기 제어 망에 대한 적어도 하나의 망 상태 파라미터를 기초로 상기 제어 망으로 전송할 단위시간당 데이터량을 조정하는 단계를 포함한다.

Description

다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법{APPARATUS FOR MULTINET AGGREGATION TRANSMISSION, AND PACKET SCHEDULING METHOD THEREOF}
본 발명은 다중망 병합 전송에 관한 것이다.
병합 전송(aggregation transmission)은 복수의 통신망을 동시에 사용하여 데이터를 전송하는 기술로서, 각 경로로 전송된 데이터를 하나의 세션으로 처리한다. 병합 전송 기술을 통해, 단말은 한 시점에 복수의 통신망에 연결될 수 있고, 하나의 서비스/어플리케이션은 망 종류나 망의 수에 관계없이 복수의 망을 하나의 망처럼 병합하여 통신한다. 따라서, 병합 전송 장치는 가용한 복수의 망 자원을 이용하여 대량의 데이터를 빠르게 송수신할 수 있다. 복수의 망을 병합하는 의미에서 다중망 병합(MultiNet Aggregation)이라고 부를 수 있다.
병합 전송 기술 중에서 여러 개의 TCP 플로우를 묶어서 사용하는 다중 경로 TCP(Multi-Path TCP, MPTCP) 기술이 있다. MPTCP는 복수의 IP 인터페이스를 동시에 사용하기 위한 L4 기술이다. 복수의 물리적 인터페이스를 구비한 단말은 MPTCP 기술을 통해, 한 시점에 복수의 통신망에 연결될 수 있고, 서브플로우(subflow) 단위로 세션을 생성하여 단대단 통신한다.
지금까지의 네트워크 장치는 다중망으로 패킷을 전송하더라도 단일망에서 사용하는 흐름 제어(flow control), 혼잡 제어(congestion control), 오류 제어(error control) 방식을 그대로 사용하여 패킷 스케줄링한다. 즉, 지금까지의 네트워크 장치는 다중망 각각에 생성된 경로별로 패킷 전송 지연시간, 패킷 왕복 시간(Round Trip Time, RTT), 패킷 손실율 등이 동일하다는 이상적인 가정을 한다. 하지만 다중망은 특성이 다른 이종망으로 구성될 수 있고, 동종망으로 구성되더라도 망 상태가 항상 동일한 것은 아니다. 즉, 경로별로 패킷 전송 지연시간, RTT, 패킷 손실율 등이 망의 무선/유선구간에 따라 시시각각 변동한다. 따라서, 망 상태가 동일한 복수의 경로라면 라운드-로빈(round-robin) 방법으로 패킷 스케줄링하더라도 병합 전송 효율이 낮아지지 않으나, 서로 다른 망 상태의 다중망 스케줄링에 라운드-로빈 방법을 그대로 사용하면 병합 전송 효율이 낮아질 수밖에 없다.
본 발명이 해결하고자 하는 과제는 다중망 각각의 상태를 기초로 동적으로 패킷 스케줄링하는 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법을 제공하는 것이다.
본 발명의 한 실시예에 따른 다중망 병합 전송 장치의 패킷 스케줄링 방법으로서, 수신 장치와 연결된 복수 망 각각에 대한 망 상태 파라미터들을 수집하는 단계, 상기 복수 망 각각의 망 상태 파라미터들을 기초로 상기 복수 망 중에서 제어 망을 결정하는 단계, 그리고 상기 제어 망에 대한 적어도 하나의 망 상태 파라미터를 기초로 상기 제어 망으로 전송할 단위시간당 데이터량을 조정하는 단계를 포함한다.
상기 망 상태 파라미터들은 패킷 왕복 시간, 전송 데이터 중에서 아직 확인응답을 수신하지 않은 플라이트 상태 데이터 크기, 수신 윈도우 크기, 혼잡 윈도우 크기, 그리고 재전송 데이터 크기 중 적어도 두 개를 포함할 수 있다.
상기 단위시간당 데이터량을 조정하는 단계는 상기 제어 망을 통해 전송한 데이터 중에서 아직 확인응답을 수신하지 않은 데이터 크기가 제1기준값보다 큰 경우, 상기 단위시간당 데이터량을 조정할 수 있다.
상기 단위시간당 데이터량을 조정하는 단계는 상기 제어 망에 대한 적어도 하나의 망 상태 파라미터를 기초로, 기준값보다 많거나 적은 단위시간당 전송 데이터량을 결정하고, 상기 기준값은 상기 제어 망의 가용한 혼잡 윈도우 크기 또는 상기 가용한 혼잡 윈도우 크기에서 전송 가능한 세그먼트 수일 수 있다.
상기 패킷 스케줄링 방법은 원본 데이터 버퍼에서 전송 대기중인 데이터 중에서 상기 결정한 전송 데이터량을 상기 제어 망으로 전송하는 단계를 더 포함할 수 있다.
상기 패킷 스케줄링 방법은 스케줄링 변경 조건을 기초로 제1 스케줄링 방법에서 제2 스케줄링 방법으로 변경할지 판단하는 단계를 더 포함하고, 상기 제어 망을 결정하는 단계는 상기 제1 스케줄링 방법에서 상기 제2 스케줄링 방법으로 변경되는 경우, 상기 복수 망 중에서 제어 망을 결정하며, 상기 제1 스케줄링 방법은 단일망에서 사용되는 스케줄링 방법이고, 상기 제2 스케줄링 방법은 다중망 병합 스케줄링 방법일 수 있다.
상기 스케줄링 변경 조건은 상기 복수 망에 생성된 서브플로우의 수와 서브플로우들로 전송되는 데이터 스트림의 크기(Data Sequence Signal, DSS)로 구성된 판단 조건일 수 있다.
상기 스케줄링 변경 조건은 상기 복수 망 중 어느 하나의 망의 전송 품질이 제1 기준값 이상으로 좋아지는 경우, 상기 복수 망 중 어느 하나의 망의 전송 품질이 제2 기준값 이상으로 악화되는 경우, 상기 복수 망 중 적어도 두 망의 품질 차이가 제3 기준값 이상인 경우 중 어느 하나를 포함할 수 있다.
상기 패킷 스케줄링 방법은 상기 제1 스케줄링 방법에서 상기 제2 스케줄링 방법으로 변경된 후, 상기 스케줄링 변경 조건이 해제되면, 상기 제1 스케줄링 방법으로 복귀하는 단계를 더 포함할 수 있다.
상기 패킷 스케줄링 방법은 상기 제1 스케줄링 방법에서 상기 제2 스케줄링 방법으로 변경된 후, 상기 수신 단말로의 데이터 전송이 완료되면, 상기 제1 스케줄링 방법으로 복귀하는 단계를 더 포함할 수 있다.
본 발명의 다른 실시예에 따른 다중망 병합 전송 장치의 패킷 스케줄링 방법으로서, 임의 서브플로우를 통해 전송한 데이터 중에서 아직 확인응답을 수신하지 않은 데이터 크기를 기초로 상기 서브플로우로 전송할 세그먼트 크기 조정이 필요한지 판단하는 단계, 세그먼트 크기 조정이 필요한 경우, 상기 서브플로우에 관계된 적어도 하나의 망 상태 파라미터를 기초로 상기 서브플로우로 전송할 총 전송 세그먼트 크기를 결정하는 단계, 그리고 결정한 총 전송 세그먼트 크기의 데이터를 전송하는 단계를 포함한다.
상기 세그먼트 크기 조정이 필요한지 판단하는 단계는 상기 확인응답을 수신하지 않은 데이터 크기가 제1기준값보다 큰 경우, 세그먼트 크기 조정이 필요하다고 판단할 수 있다.
상기 총 전송 세그먼트 크기를 결정하는 단계는 상기 서브플로우에 관계된 망 상태 파라미터들을 비교하여, 기준값보다 크거나 작은 총 전송 세그먼트 크기를 결정하고, 상기 기준값은 상기 제어 망의 가용한 혼잡 윈도우 크기 또는 상기 가용한 혼잡 윈도우 크기에서 전송 가능한 세그먼트 수일 수 있다.
상기 서브플로우에 관계된 망 상태 파라미터들은 상기 서브플로우를 통해 전송한 데이터 중에서 아직 확인응답을 수신하지 않은 데이터 크기, 수신 윈도우 크기, 혼잡 윈도우 크기, 그리고 재전송 데이터 크기 중 적어도 두 파라미터들을 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 적어도 하나의 프로세서에 의해 동작하는 패킷 스케줄러로서, 수신 장치와 연결된 복수 망 각각의 망 상태 파라미터들을 수집하는 망 상태 모니터링부, 상기 복수 망 각각의 망 상태 파라미터들을 기초로 상기 복수 망 각각에 생성된 서브플로우별 전송량을 조절하는 패킷 전송량 조절부, 그리고 상기 서브플로우별 전송량을 기초로 상기 수신 장치로 전달할 원본 데이터를 분할하고, 분할한 데이터를 각 서브플로우의 데이터 버퍼에 추가하는 버퍼 전달부를 포함하고, 상기 각 서브플로우의 데이터 버퍼에 저장된 데이터는 MPTCP(Multi-Path TCP) 계층과 IP(Internet Protocol) 계층을 거쳐 상기 각 서브플로우가 생성된 망으로 전달된다.
상기 망 상태 파라미터들은 각 망으로 전송한 패킷의 왕복 시간(round trip time), 각 망으로 전송한 데이터 중에서 아직 확인응답을 수신하지 않은 데이터 크기, 각 망의 수신 윈도우 크기, 각 망의 혼잡 윈도우 크기, 그리고 각 망에서의 재전송 데이터 크기 중 적어도 두 개를 포함할 수 있다.
상기 패킷 전송량 결정부는 상기 복수 망 각각의 망 상태 파라미터를 기초로 서브플로우별 전송량 제어를 시작할지 판단하고, 상기 서브플로우별 전송량 제어를 시작하는 경우, 상기 복수 망 중 적어도 하나의 망에서의 전송 데이터량을 기준값을 기준으로 상향 또는 하향 조정할 수 있다.
상기 패킷 전송량 결정부는 상기 복수 망에 생성된 서브플로우의 수와 서브플로우들로 전송되는 데이터 스트림의 크기(Data Sequence Signal, DSS)로 구성된 판단 조건을 기초로 상기 서브플로우별 전송량 제어를 시작할지 판단할 수 있다.
상기 패킷 전송량 결정부는 상기 복수 망 중 어느 하나의 망의 전송 품질이 제1 기준값 이상으로 좋아지는 경우, 상기 복수 망 중 어느 하나의 망의 전송 품질이 제2 기준값 이상으로 악화되는 경우, 상기 복수 망 중 적어도 두 망의 품질 차이가 제3 기준값 이상인 경우 중 어느 하나를 포함하는 판단 조건을 기초로 상기 서브플로우별 전송량 제어를 시작할지 판단할 수 있다.
상기 패킷 전송량 결정부는 상기 복수 망 각각의 망 상태 파라미터를 기초로 단위시간당 전송되는 세그먼트 수 또는 총 전송 세그먼트 크기를 가변할 수 있다.
본 발명의 실시예에 따르면 다중망 병합 전송 장치가 다중망 각각의 상태를 관리하고 각 망의 상태에 맞춰 통합 스케줄링하므로, 저품질 망의 상태에 의해 고품질 망의 전송 효율이 방해받지 않는다. 따라서, 본 발명의 실시예에 따르면 다중망 각각의 자원을 효율적으로 사용하여 다중망 병합 전송 효율을 높일 수 있다.
도 1은 본 발명의 한 실시예에 따른 다중망 병합 시스템의 구성도를 설명하는 도면이다.
도 2는 본 발명의 한 실시예에 따른 다중망 병합 전송을 설명하는 개념도이다.
도 3은 본 발명의 한 실시예에 따른 송신 장치의 패킷 스케줄러의 구성도이다.
도 4는 본 발명의 한 실시예에 따른 송신 장치에서 스케줄링된 패킷이 전송되는 네트워크 스택을 개념적으로 설명하는 도면이다.
도 5는 본 발명이 적용되지 않은 경우의 병합 전송 스케줄링 방법을 설명하는 도면이다.
도 6은 본 발명의 한 실시예에 따른 병합 전송 스케줄링 방법을 설명하는 도면이다.
도 7은 본 발명의 한 실시예에 따른 패킷 스케줄링 방법의 흐름도이다.
도 8은 본 발명의 다른 실시예에 따른 패킷 스케줄링 방법의 흐름도이다.
도 9는 본 발명의 또 다른 실시예에 따른 패킷 스케줄링 방법의 흐름도이다.
도 10은 본 발명의 한 실시예에 따른 다중망 병합 전송 장치의 하드웨어 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 발명에서 송신 장치와 수신 장치는 다중망으로 연결되고, 송신 장치가 수신 장치로 데이터를 보낼 때 다중망 병합 전송한다. 다음에서 다중망 병합 전송 장치인 송신 장치가 수신 장치로 데이터를 전송할 때, 다중망 각각에 생성된 각 서브플로우로 데이터를 어느 정도 분할하여 전송할 것인지 판단하는 스케줄링하는 방법에 대해 설명한다.
본 발명에서 송신 장치 또는 수신 장치는 사용자 단말일 수 있다. 사용자단말은 이동국(Mobile Station, MS), 이동 단말(Mobile Terminal, MT), 가입자국(Subscriber Station, SS), 휴대 가입자국(Portable Subscriber Station, PSS), 사용자 장치(User Equipment, UE), 접근 단말(Access Terminal, AT) 등을 지칭할 수도 있고, 이동국, 이동 단말, 가입자국, 휴대 가입자 국, 사용자 장치, 접근 단말 등의 전부 또는 일부의 기능을 포함할 수도 있다.
사용자 단말은 기지국(base station, BS), 접근점(Access Point, AP), 무선 접근국(Radio Access Station, RAS), 노드B(Node B), 고도화 노드B(evolved NodeB, eNodeB), 송수신 기지국(Base Transceiver Station, BTS), MMR(Mobile Multihop Relay)-BS 등과 같은 네트워크 장치에 접속하여 원격의 서버에 연결될 수 있다.
사용자 단말은 스마트폰과 같은 모바일 단말, 스마트패드와 태블릿PC와 같은 태블릿 단말, 컴퓨터, 텔레비전 등 다양한 형태의 통신 단말로서, 복수의 통신 인터페이스를 구비할 수 있다. 통신 인터페이스는 다양할 수 있다. 예를 들면, 통신 인터페이스는 와이파이(WiFi)/WLAN/블루투스(bluetooth) 등의 근거리 무선망 인터페이스, 그리고 3G/LTE(Long Term Evolution)/LTE-A(Long Term Evolution-Advanced) 등의 이동통신망 인터페이스를 포함할 수 있고, 단말 제조사가 다양한 통신 인터페이스를 추가할 수 있다. 본 명세서에서는 3G/LTE 인터페이스와 WiFi 인터페이스를 예로 들어 설명하나, 통신 인터페이스가 이에 한정되는 것은 아니다.
본 발명에서 송신 장치 또는 수신 장치는 네트워크 장치일 수 있다. 네트워크 장치는 다중 경로로 전송되는 서브플로우를 병합하거나, 단일 경로로 전송되는 플로우를 다중 경로의 서브플로우로 분할하여 전송하는 게이트웨이 또는 서버일 수 있다. 네트워크 장치는 다중망의 접점에 위치하고, 예를 들면, LTE망과 WiFi망의 접점에 위치할 수 있다. 네트워크 장치는 다중망 병합 게이트웨이(MultiNet Aggregation-Gateway, MA-GW)라고 부를 수 있다.
도 1은 본 발명의 한 실시예에 따른 다중망 병합 시스템의 구성도를 설명하는 도면이다.
도 1을 참고하면, 다중망 병합(MultiNet Aggregation) 전송은 복수의 통신망을 병합하여 데이터를 전송하는 기술로서, 전송 데이터를 복수의 동종 망 또는 복수의 이종 망의 경로로 분할하여 전송하거나, 복수의 경로로 전송된 데이터를 하나의 경로로 묶어 전송할 수 있다. 다중망 병합 전송은 데이터를 복수의 경로로 동시에 전송하는 의미에서 다중 경로(Multi-Path) 전송이라고 부를 수 있다.
다중망 병합 시스템은 사용자 단말(10), 그리고 사용자 단말(10)과 복수의 망(예를 들면, 3G/LTE망과 WiFi망)으로 연결되는 네트워크 장치(20)를 포함할 수 있다.
사용자 단말(10)은 다중 통신 인터페이스를 구비하고, 다중 통신 인터페이스를 통해 한 시점에 복수의 망에 연결될 수 있다. 사용자 단말(10)은 사용자가 접근하여 다중망 접속을 설정하거나 관리할 수 있는 관리 어플리케이션을 탑재할 수 있다.
사용자 단말(10)은 다중망 병합을 위한 인증, 상태 관리, 트래픽 처리를 수행하는 네트워크 에이전트(agent)를 포함하고, 네트워크 에이전트는 단말 내부 로직으로 구현될 수 있다. 사용자 단말(10) 내부에서 네트워크 에이전트와 각종 어플리케이션은 소켓(socket) 통신한다. 네트워크 에이전트는 네트워크 관리를 위한 관리 어플리케이션의 설정 정보에 따라 네트워크 장치(20)와 연동한다.
네트워크 장치(20)는 다중 경로로 전송되는 서브플로우를 병합하거나, 단일 경로로 전송되는 플로우를 다중 경로의 서브플로우로 분할하여 전송한다. 네트워크 장치(20)는 다중망의 접점에 위치하고, 예를 들면, LTE망과 WiFi망의 접점에 위치할 수 있다.
네트워크 장치(20)는 수신 데이터를 단말(10)로 전달하기 위해 데이터를 분할한다. 그리고 네트워크 장치(20)는 일부 데이터를 제1망(예를 들면, LTE망)의 서브플로우를 통해 사용자 단말(10)로 전송하고, 나머지 데이터를 제2망(예를 들면, WiFi망)의 서브플로우를 통해 사용자 단말(10)로 전송할 수 있다. 사용자 단말(10)은 복수의 통신 인터페이스를 통해 수신된 데이터를 병합한다. 마찬가지 방법으로, 네트워크 장치(20)는 사용자 단말(10)이 다중 통신 인터페이스를 이용하여 전송한 데이터를 병합하여 서버(30)로 전송할 수 있다.
다중망 병합 기술은 병합 지점에 따라 다음과 같이 분류될 수 있다.
L2/링크 계층 병합은 LTE 코어망(core)와 접속망(access)의 경계 지점(즉, eNB)에서 WiFi AP로 전용 터널을 생성한다.
L3/네트워크 계층 병합은 LTE망과 WiFi망에서 독립적으로 사용하는 IP 주소를 통합하기 위해 가상 IP 터널을 생성한다.
L4/전송 계층 병합은 단일 접속망을 통해 세션을 생성한 후, 추가적인 접속망이 사용 가능한 경우, IP 주소체계와 상관없이 데이터 전송에 참여시킬 수 있다. 이때, 응용레벨의 통신 주체는 하나 이상의 접속망을 이용하여 단일 세션 기반의 데이터 통신이 가능한 구조를 지원한다.
L7/응용 계층 병합은 전용 어플리케이션/네트워크 에이전트가 자체적으로 LTE망과 WiFi망을 통해 수신한 데이터를 재조합하거나 응용 프로토콜 데이터를 분리하여 전송한다.
이와 같이, 병합 전송 계층에 따라 다양한 병합 전송이 가능한데, 앞으로는 L4 기반 다중 경로 TCP(Multi-Path TCP, MPTCP)를 통한 병합 기술을 예로 들어 설명한다.
도 2는 본 발명의 한 실시예에 따른 다중망 병합 전송을 설명하는 개념도이다.
도 2를 참고하면, 네트워크 장치(20)가 이번 스케줄링 라운드에서 원본 데이터(1, 2, 3, 4, 5)를 전송하고, 다음 스케줄링 라운드에서 원본 데이터(6, 7, 8, 9, 10)(미도시)를 전송한다고 가정한다.
네트워크 장치(20)는 제1 스케줄링 라운드에서 원본 데이터(1, 2, 3, 4, 5)를 분할하여 제1망으로 일부 데이터(2, 3)를 전송하고, 제2망으로 나머지 데이터(1, 4, 5)를 전송한다고 가정한다. 네트워크 장치(20)는 제2 스케줄링 라운드에서 원본 데이터(6, 7, 8, 9, 10)를 분할하여 제1망으로 일부 데이터(7, 8)를 전송하고, 제2망으로 나머지 데이터(6, 9, 10)를 전송한다고 가정한다. 이때, 네트워크 장치(20)는 다중망으로 데이터를 전송하더라도 수신자가 데이터 순서를 확인할 수 있도록 데이터에 순서를 표시한다(In-order delivery).
사용자 단말(10)은 제1망에서 수신한 데이터(2, 3)와 제2망에서 수신한 데이터(1, 4, 5)의 순서대로 데이터를 병합하여 원본 데이터(1, 2, 3, 4, 5)를 획득한다.
한편, 제2망의 상태가 열악하여 사용자 단말(10)이 제2망을 통해 데이터를 제대로 수신하지 못할 수 있다. 그러면, 사용자 단말(10)은 네트워크 장치(20)로 재전송을 요청한다. 또는 네트워크 장치(20)는 사용자 단말(10)로부터 전송 데이터에 대한 확인응답(Acknowledgement, Ack)을 받지 못할 수 있다. 이 경우, 제1망은 제2 스케줄링 라운드의 데이터(7, 8)를 전송할 차례인데, 제2망은 제1 스케줄링 라운드의 데이터(1, 4, 5)를 재전송해야 한다. 따라서, 네트워크 장치(20)는 순서가 어긋난 전송(out-of-order delivery)을 방지하기 위해, 데이터를 전송할 제1망의 자원이 있음에도 불구하고, 제1망을 통한 제2 스케줄링 라운드 기회를 포기할 수 있다. 이와 같이, 단대단(end-to-end) 연결 기반의 전송 계층 프로토콜인 TCP는 전송 데이터에 대한 확인응답(Ack)을 미수신하거나 재전송을 요청받은 경우, 데이터를 재전송하여 신뢰성(reliability)을 보장한다. 하지만 단일망이라 데이터 재전송을 통해 신뢰성을 보장할 수 있지만, 다중망 중 어느 하나의 망에서 진행되는 데이터 재전송은 병합 전송 효율을 전체적으로 악화시키는 주요 원인이 된다.
또는, 사용자 단말(10)이 제2망을 통해 제1 스케줄링 라운드에서 전송된 데이터(1, 4, 5)를 수신하기 전에, 제1망을 통해 제2 스케줄링 라운드에서 전송된 데이터(7, 8)를 수신할 수 있다(head-of-line blocking). 이렇게, 먼저 전송한 데이터가 다음에 전송한 데이터보다 늦게 도착하면, 사용자 단말(10)은 순서대로 데이터를 받지 못해 데이터 병합 처리를 하지 못할 수 있다.
이와 같이, 다중망 각각의 상태가 다른 경우, 저품질 망의 영향을 받아 고품질 망이 자신의 자원을 최대로 사용하지 못할 수 있다. 또는 사용자 단말(10)이 다중망의 품질 차이에 의해 데이터를 순차적으로 수신하지 못하는 경우, 데이터를 제대로 전송한 고품질 망에서도 재전송이 요구될 수 있다. 이와 같이 다중망 각각에 생성된 경로별로 망 상태(예를 들면, 패킷 전송 지연시간, RTT, 패킷 손실율 등)가 다름에도 불구하고, 다중망 각각을 단일망처럼 개별적으로 패킷 스케줄링한다면, 다중망 병합 전송 효율이 낮아질 수밖에 없다.
다중망 병합 전송 효율을 저하시키는 다른 원인으로 수신 윈도우가 있다. 수신자인 사용자 단말(10)은 자신이 받을 수 있는 바이트 수를 나타내는 수신 윈도우(receive window)를 송신자인 네트워크 장치(20)에게 전달한다. 수신 윈도우는 버퍼 중에서 사용하지 않은 버퍼 크기일 수 있다. 네트워크 장치(20)는 수신 윈도우에 해당하는 바이트 수만큼 데이터를 전송한다. 이를 TCP에서 흐름 제어라고 하는데, 사용자 단말(10)이 수신 윈도우를 제한하는 경우, 전송망은 고품질 망이더라도 패킷 전송이 정체될 수 있다.
도 3은 본 발명의 한 실시예에 따른 송신 장치의 패킷 스케줄러의 구성도이다.
도 3을 참고하면, 송신 장치의 패킷 스케줄러(100)는 망 상태 모니터링부(110), 패킷 전송량 조절부(130), 그리고 버퍼 전달부(150)를 포함한다. 여기서, 송신 장치와 수신 장치가 복수의 망(예를 들면, 제1망과 제2망)을 통해 서브플로우들을 생성한 상태라고 가정한다. 패킷 스케줄러(100)는 각 서브플로우가 생성된 망 상태를 기초로 원본 데이터를 분할하고, 분할한 데이터를 해당 서브플로우의 데이터 버퍼에 추가한다. 데이터 버퍼에 추가된 데이터는 MPTCP 계층, IP 계층, L2/L1을 거쳐 연결된 망으로 전송된다.
망 상태 모니터링부(110)는 하위 계층으로부터 각 망의 상태 파라미터를 수집한다. 망 상태 모니터링부(110)는 망 상태 파라미터를 기초로 각 망의 상태를 추정할 수 있다. 망 상태 모니터링부(110)가 수집할 수 있는 망 상태 파라미터는 다양할 수 있다. 예를 들면, 망 상태 파라미터는 RTT, 플라이트(flight) 상태 데이터 크기(bytes in flight, in-flight), 수신 윈도우(receive window, rwnd) 크기, 혼잡 윈도우(congestion window, cwnd) 크기, 데이터 버퍼에서 대기중인 데이터 크기(data size), 서브플로우 수, 재전송 데이터 크기, DSS(Data Sequence Signal) 크기 등을 포함할 수 있다.
RTT는 세션 확립 초기단계에서 각 망을 통해 진행되는 TCP 핸드쉐이크 과정에서 얻을 수 있는 파라미터이다.
플라이트 상태 데이터 크기는 전송 데이터 중에서 아직 확인응답(Ack)을 수신하지 않은 데이터 정보이다. 각 망의 서브플로우를 통해 전송한 데이터들이 데이터 버퍼(도 4의 210, 220)에 저장되므로, 플라이트 상태 데이터 크기는 데이터 버퍼(도 4의 210, 220)를 참조하여 얻을 수 있는 파라미터이다.
수신 윈도우 크기는 수신자로부터 수신한 확인응답(Ack)의 TCP 헤더에 포함되거나, 응답을 기초로 유추될 수 있다. 수신 윈도우 크기는 리눅스 커널 등에서 수신 윈도우 크기를 지시하는 변수("rwnd")로부터 얻을 수 있는 파라미터이다.
혼잡 윈도우 크기는 리눅스 커널 등에서 혼잡 윈도우 크기를 지시하는 변수("cwnd")로부터 얻을 수 있는 파라미터이다.
데이터 버퍼에서 대기중인 데이터 크기는 이번 스케줄링 라운드에서 전송할 분량의 데이터 크기로서, 시간이 지나면서 전송하고 남은 데이터 크기를 지시한다. 여기서, 데이터 버퍼는 원본 데이터 버퍼(도 4의 200)이고, "skb.len"이 지시하는 값으로부터 데이터 버퍼에 대기중인 데이터 크기를 얻을 수 있다. 여기서, "skb"는 소켓 버퍼(socket buffer)를 의미하고, "len"은 길이(length)를 의미한다.
서브플로우 수, 재전송 데이터 크기, DSS 크기 등도 망 상태 모니터링부(110)에서 얻을 수 있는 파라미터들이다. DSS 크기는 경로별 서브플로우들을 합친 스트림의 크기로서, MPTCP에서 사용되는 용어이다. 예를 들어, LTE망과 WiFi망 각각에 서브플로우가 생성된 경우, DSS 크기는 LTE 서브플로우와 WiFi 서브플로우로 전송되는 데이터 크기이다.
망 상태는 적어도 하나의 망 상태 파라미터를 기초로 추정될 수 있다. 망 상태는 품질이나 전송 속도를 의미할 수 있고, 망의 최적 전송 바이트로 정량화될 수도 있다. 예를 들면, 제1망의 최적 전송 바이트가 1500바이트로 계산되는 경우, 제1망 상태는 1500바이트로 정량화될 수 있다. 앞으로 품질이나 전송 속도를 망 상태의 한 예로 들어 설명할 수 있다.
예를 들면, 망 상태 모니터링부(110)는 TCP 순서 번호(sequence number)의 변화 추이를 기초로 망 상태를 판단할 수 있다. TCP 순서 번호의 변화 추이는 누적된 전송 바이트수가 시간에 따라 빠르게 변하는지 느리게 변하는지를 나타내는 정보로서, 단위시간당 증가되는 순서번호 변화량(기울기)으로 계산될 수 있다. TCP 순서 번호 변화 추이를 기초로 전송 속도가 추정될 수 있다. TCP 순서 번호 변화 추이는 SACK(Selective Ack)과 DSACK(Duplicate SACK)을 포함하여 계산될 수 있다.
TCP 순서 번호(앞으로, 간단히 "순서 번호"라고 한다)는 TCP 헤더에 포함되는 정보로서, 전송 데이터를 포함하는 TCP 세그먼트마다 지정된 필드에 기재된다. 수신 장치는 수신 TCP 세그먼트에서 수신 번호를 확인하고, 다음에 수신하기를 원하는 순서 번호를 확인응답에 기재해서 전송한다. 송신 장치는 확인응답에 포함된 순서 번호를 기초로 자신이 다음 데이터를 보낼지 이미 보낸 데이터를 재전송할지를 결정할 수 있어서, 수신 장치의 상태 또는 망 상태를 추정할 수 있다. 또는 송신 장치는 송신 윈도우 크기 안에서 여러 TCP 세그먼트를 전송하고, 수신 장치로부터 한 번의 확인응답을 수신할 수 있다. 이러한 순서 번호 기재 방식에 따라, 만약 순서 번호의 증가 속도(단위 시간당 순서 번호 변화량)가 거의 일정하다면 망 상태가 안정적이거나 자원 사용량이 임계값에 도달한 상태라고 판단될 수 있다. 순서 번호의 증가 속도가 빨라진다면 망 상태가 개선된 상태이거나 자원 사용량이 남아 있는 상태라고 판단될 수 있다. 순서 번호의 증가 속도가 느려진다면 망 상태가 악화된 상태이거나 자원 사용량이 부족한 상태라고 판단될 수 있다. 또는 단위시간당 증가되는 순서번호 변화량(기울기)이 가파르게 변하면, 망의 전송 속도가 빠른 상태라고 판단될 수 있다. 단위시간당 증가되는 순서번호 변화량(기울기)이 완만하게 변하거나 변화가 없는 경우라면, 망의 전송 속도가 느리거나 데이터 전송이 더 이상 진행되지 않는 상태라고 판단될 수 있다. 이와 같이, 망 상태 모니터링부(110)는 TCP 순서 번호 변화 추이를 기초로 망의 전송 상태 및 전송 패턴을 파악할 수 있다.
망 상태 모니터링부(110)는 RTT가 기준값 이상이면 패킷 전송 지연이 예상된다고 판단되거나 저품질 망이라고 판단할 수 있다.
망 상태 모니터링부(110)는 플라이트 상태 데이터 크기를 기초로 망 상태, 즉 품질이나 전송 속도를 판단할 수 있다. 망 상태 모니터링부(110)는 플라이트 상태 데이터 크기를 기초로 망이 얼마나 적극적으로 전송에 참여하고 있는지를 파악할 수 있다. 망 상태 모니터링부(110)는 수신 윈도우 크기, 송신 윈도우 크기, 데이터 버퍼에서 대기중인 데이터 크기, 재전송 데이터 크기, DSS 크기 등을 기초로 망 상태를 파악할 수 있다.
패킷 전송량 조절부(130)는 망 상태 모니터링부(110)에서 획득한 각 망의 상태 파라미터를 기초로 각 서브플로우(또는 각 망에 생성된 경로)로 전달할 전송량을 조절한다. 전송 데이터는 TCP 전송 단위인 MTU(Maximum Transmission Unit)나 MSS(Maximum Segment Size)로 분할되어 패킷화(packetization)된다. 따라서, 각 망의 패킷 전송량은 패킷 수 또는 TCP 세그먼트 수로 결정될 수 있다. 또는 각 망의 패킷 전송량은 각 망이 데이터 전송에서 분담하는 전송 분담율(전송 비율)로 결정될 수 있다. 패킷 전송량 조절부(130)는 세그먼트로 나누어지는 기회에 대한 비율을 조정할 수 있다.
패킷 스케줄러(100)가 전송량을 제어하는 시점은 다양하게 설정될 수 있다.
한 실시예에 따르면, 패킷 전송량 조절부(130)는 스케줄링 라운드마다 각 망의 상태 파라미터를 기초로 각 서브플로우로 전달할 전송량을 결정할 수 있다.
다른 실시예에 따르면, 패킷 전송량 조절부(130)는 특정 시점에서 획득한 각 망의 상태 파라미터를 기초로 서브플로우별 전송량을 결정하고, 결정한 서브플로우별 전송량을 기초로 일정 시간 동안 스케줄링할 수 있다. 여기서 일정 시간은 복수의 스케줄링 라운드가 진행될 수 있는 시간을 의미한다.
또 다른 실시예에 따르면, 패킷 전송량 조절부(130)는 스케줄링 변경 조건을 기초로 서브플로우별 전송량 제어를 시작할 것인지 판단할 수 있다. 스케줄링 변경 조건은 트리거링 조건이라고 부를 수 있고, 망 상태 파라미터와 망 상태의 조합으로 구성될 수 있다. 서브플로우별 전송량 제어는 복수 망의 상태를 기초로 각 망의 패킷 스케줄링을 통합 수행하는 것을 의미한다. 예를 들어, 패킷 전송량 조절부(130)는 적어도 하나의 망 상태가 기준값 이상으로 좋아지거나, 기준값 이하로 나빠지는 경우, 또는 적어도 두 망의 상태 차이가 기준값 이상인 경우, 서브플로우별 전송량을 조정하기 위해 서브플로우별 전송량 제어에 진입할 수 있다.
스케줄링 변경 조건은 다양한 망 상태 파라미터를 기초로 설정될 수 있다. 스케줄링 변경 조건을 만족하는 경우, 서브플로우별 전송량 제어에 진입하도록 트리거링된다. 스케줄링 변경 조건은 예를 들면, 적어도 하나의 망의 전송 품질값이 임계값에 도달한 경우, 또는 적어도 두 망의 전송 품질값 차이가 임계값에 도달한 경우일 수 있다. 전송 품질값은 예를 들면, RTT, 전송 속도, 전송 분담률(전송 비율), 재전송 데이터 크기, 수신 윈도우 크기, 송신 윈도우 크기 등과 같이 각 망의 전송 품질을 평가할 수 있는 적어도 하나의 정보로부터 결정된다. 예를 들어, 적어도 두 망의 수신 윈도우 차이가 기준값 이상인 경우 또는 RTT 차이가 기준값 이상인 경우 서브플로우별 전송량 제어에 진입하도록 트리거링될 수 있다. 적어도 하나의 망으로 전송한 확인응답 미수신 데이터(플라이트 상태 데이터)가 기준값 이상 발생한 경우 또는 확인응답 미수신 데이터가 기준값 이상 연속적으로 발생한 경우 서브플로우별 전송량 제어에 진입하도록 트리거링될 수 있다.
스케줄링 변경 조건은 서브플로우의 개수를 고려할 수 있다. 즉, 서브플로우의 개수가 기준값 이상인 경우, 서브플로우별 전송량 제어를 시작할 수 있다.
스케줄링 변경 조건은 DSS 크기를 고려할 수 있다. 즉, 서브플로우들로 전송되는 데이터 스트림의 크기가 기준값 이상인 경우, 서브플로우별 전송량 제어를 시작할 수 있다.
서브플로우별 전송량 제어에 진입시킨 스케줄링 변경 조건이 해제되면 서브플로우별 전송량 제어가 해제하도록 트리거링된다. 서브플로우별 전송량 제어가 해제된 경우, 패킷 전송량 조절부(130)는 디폴트 스케줄링 방법에 따라 패킷 스케줄링을 한다. 제1망과 제2망의 상태가 유사한 경우 또는 제1망과 제2망이 모두 양호한 경우, 스케줄링 라운드마다 각 망으로 전송할 데이터량을 판단할 필요가 없기 때문이다. 디폴트 스케줄링 방법은 다양할 수 있고, 예를 들면 라운드-로빈 방식일 수 있다. 디폴트 스케줄링 방법은 각 망의 수신 윈도우 크기에 맞춰 전송하는 방식일 수 있다. 디폴트 스케줄링 방법은 복수 망 각각을 단일망처럼 간주하는 종래의 스케줄링 방식일 수 있다.
패킷 스케줄러(100)가 스케줄링 라운드에서 각 망에 스케줄링되는 전송량을 결정하는 방법은 다양할 수 있다.
한 실시예에 따르면, 패킷 전송량 조절부(130)는 복수의 망 각각의 상태 파라미터를 기초로 복수의 망 중 고품질 망을 확인한다. 그리고 패킷 전송량 조절부(130)는 고품질 망의 수신 윈도우 또는 수신 윈도우보다 일정 값 작은 크기의 데이터량을 고품질 망에 스케줄링한다. 그리고 패킷 전송량 조절부(130)는 저품질 망의 수신 윈도우를 기초로 일정 데이터량을 저품질 망에 스케줄링한다. 이때, 패킷 전송량 조절부(130)는 고품질 망의 수신 윈도우에 맞는 데이터량을 전송하는 대신, 고품질 망과 저품질 망의 수신 윈도우 차이에 해당하는 데이터량을 전송할 수 있다. 이렇게 데이터량을 수신 윈도우보다 줄여서 전송하는 이유는, 저품질 망으로 전송한 데이터가 유실되더라도, 다음 스케줄링 라운드에서 데이터 재전송에 의해 데이터 순서가 어긋나는 문제, 그리고 고품질 망이 전송 기회를 잃거나 정상적으로 전송한 데이터를 재전송하는 문제를 방지할 수 있기 때문이다. 즉, 패킷 전송량 조절부(130)는 저품질 망의 상태가 좋지 않은 경우, 저품질 망으로 전송하는 데이터가 유실되더라도 다음 스케줄링 라운드에서 순서 번호가 어긋나지 않게 유실된 데이터를 전송할 수 있도록 고품질 망의 전송량을 수신 윈도우보다 줄이는 것이다.
다른 실시예에 따르면, 패킷 전송량 조절부(130)는 복수의 망 각각의 상태 파라미터를 기초로 복수 망으로의 최적의 데이터 전송 비율을 결정할 수 있다. 예를 들면, 패킷 전송량 조절부(130)는 복수의 망 각각의 상태 파라미터(RTT, 수신 윈도우, 패킷 손실율 등)가 a, b, c, ..., n이고, 각 상태 파라미터의 가중치가 Wa, Wb, Wc, ..., Wn이며, 복수의 망이 x개 존재(N1, N2, N3, ..., Nn)한다면, 수학식 1과 같이 각 망의 상태값을 계산한다. 긍정적인 상태 파라미터(예를 들면, 수신 윈도우 크기 등)라면 가중치는 플러스값이거나 상태 파라미터값을 키우는 값이고, 부정적인 상태 파라미터(예를 들면, RTT, 패킷 손실율 등)라면 가중치는 마이너스값이거나 상태 파라미터값을 줄이는 값일 수 있다. 수학식 1에서, N은 N1부터 Nx 중 어느 하나이다.
Figure 112016058715760-pat00001
패킷 전송량 조절부(130)는 복수의 망 중에서 각 망의 상태값이 차지하는 비율을 표준화하고, 이를 각 망의 데이터 전송 비율로 결정한다. 예를 들면, 패킷 전송량 조절부(130)는 제1망의 상태값으로부터 계산된 전송 비율이 75%이고, 제2망의 상태값으로부터 계산된 전송 비율이 25%일 수 있다. 패킷 전송량 조절부(130)는 전송량을 전송 비율로 분할하는데, 예를 들면 전송량이 2000바이트라면 제1망으로 1500바이트를 전송하고, 제2망으로 500바이트를 전송할 수 있다. 전송량은 패킷 수로 표현되고, 전송 패킷수를 전송 비율로 분할할 수 있다.
버퍼 전달부(150)는 패킷 전송량 조절부(130)에서 결정한 서브플로우별 전송량을 기초로 원본 데이터를 분할하고, 분할된 데이터를 해당 서브플로우의 데이터 버퍼에 추가한다. 각 서브플로우의 데이터 버퍼에 추가된 데이터는 MPTCP 계층과 IP 계층을 거쳐 전송 패킷이 되고, L2/L1의 네트워크 계층을 거쳐 수신자에게 전달된다.
도 4는 본 발명의 한 실시예에 따른 송신 장치에서 스케줄링된 패킷이 전송되는 네트워크 스택을 개념적으로 설명하는 도면이다.
도 4를 참고하면, 패킷 스케줄러(100)는 원본 데이터 버퍼(200)에 수신 장치로 전송할 데이터가 채워지면, 복수의 망 각각으로 어느 정도의 데이터를 전송할지 결정한다. 또는 패킷 스케줄러(100)는 송신 장치의 프로세서(미도시)와 커널 컨텍스트를 얻어 소켓 통신을 수행할 수 있는 기회를 얻게 되면, 소켓에 의해 할당된 데이터 버퍼(200)를 통해 포인터 이동 연산(디스크립터 지정)을 하여 패킷 스케줄링을 시작할 수 있다
원본 데이터 버퍼(200)는 수신 장치로 전송할 데이터를 저장하는 저장소이다. 원본 데이터는 외부로부터 수신한 데이터이거나, 송신 장치의 어플리케이션에서 생성된 데이터일 수 있다.
패킷 스케줄러(100)는 각 망의 상태 파라미터를 수집한다. 그리고 패킷 스케줄러(100)는 각 망의 상태 파라미터를 기초로 각 망의 상태를 결정한다. 패킷 스케줄러(100)는 각 망의 상태를 기초로 서브플로우별 전송량 제어에 진입할 것인지 판단할 수 있다. 패킷 스케줄러(100)는 각 망의 상태를 기초로 서브플로우별 전송량 제어에 진입하는 조건이 해제되면 서브플로우별 전송량 제어를 해제하고, 디폴트 스케줄링 방법의 패킷 스케줄링을 할 수 있다. 패킷 스케줄러(100)는 스케줄링 라운드마다 각 서브플로우로 전달할 데이터량을 결정할 수 있다. 각 서브플로우로 전달할 데이터량은 각 서브플로우로 전달할 데이터비율일 수 있다. 패킷 스케줄러(100)는 서브플로우별 데이터량/데이터비율을 기초로 원본 데이터 버퍼(200)에 저장된 데이터를 분할한다. 패킷 스케줄러(100)는 분할된 데이터를 해당 서브플로우의 데이터 버퍼(210, 220)에 추가한다. 데이터 버퍼(210, 220)는 전송 소켓 버퍼(send socket buffer)일 수 있다.
MPTCP 계층은 각 서브플로우의 데이터 버퍼(210, 220)에 추가된 데이터를 TCP 세그먼트들로 분할한다. 각 서브플로우에 대응된 IP 계층은 TCP 세그먼트들에 IP 헤더를 붙인 패킷을 생성한다. 패킷은 L2/L1의 네트워크 계층을 거쳐 수신 장치에게 전달된다.
도 5는 본 발명이 적용되지 않은 경우의 병합 전송 스케줄링 방법을 설명하는 도면이고, 도 6은 본 발명의 한 실시예에 따른 병합 전송 스케줄링 방법을 설명하는 도면이다.
먼저, 단대단(end-to-end) 연결 기반의 전송 계층 프로토콜인 TCP는 흐름 제어(flow control), 혼잡 제어(congestion control), 오류 제어(error control) 방식을 기반으로 동작한다. 그리고, TCP는 전송 데이터에 대한 확인응답(Ack)을 미수신한 경우, 확인응답 미수신 데이터를 재전송하여 신뢰성(reliability)을 보장하는 특징이 있다.
흐름 제어는 송신 장치가 수신 장치의 수신 윈도우가 허용하는 데이터량을 전송하는 것을 의미한다. 수신 윈도우는 수신 장치가 알려준다.
혼잡 제어는 망에서의 혼잡을 방지하기 위해 망에 유입되는 데이터량을 제한하는 것을 의미한다. 혼잡 제어는 혼잡 윈도우(congestion window)가 허용하는 데이터량을 전송하도록 한다. 혼잡 제어는 송신 장치가 구현한다.
혼잡 제어는 송신 장치가 수신 장치로 전송하는 데이터량을 점차적으로 증가시키면서 혼잡이 야기되는 시점에 전송량을 조정한다. 혼잡 제어를 통해 가능한 최대의 망 자원을 점유하여 통신 속도를 조정할 수 있다. 이때 TCP 혼잡 제어는 수신 장치의 확인응답에 따라 송신 장치가 전송량을 점차적으로 늘린다. 전송량은 세션 연결부터 느린 시작(slow start)까지는 기하급수적(exponential)으로 증가한다. 설정에 의해 정의된 느린 시작 임계(slow start threshold, ssthresh) 구간부터는 혼잡 회피(congestion avoidance, ca) 구간이다. 혼잡 회피 구간에서 전송량은 확인응답 수신에 따라 선형적(linear)으로 증가한다. 이때 사용되는 전송량을 혼잡 윈도우라고 한다. 혼잡 윈도우의 크기는 TCP 순서 번호(sequence number)를 증가하면서 늘어나다가, 이후 기대하는 정도로 전송이 안되거나, 순서 번호가 비정상적으로 인입되어 정상적인 데이터 통신이 불가능한 경우, 혼잡 윈도우 크기는 조정되어 적절한 데이터량이 망으로 전송된다.
하지만 다중망으로 데이터를 전송할 때, 단일망 기준으로 설계된 혼잡 제어 메커니즘을 그대로 사용한다면, 제1망 상태에 따라 발생되는 재전송이나 혼잡 제어가 제2망에 영향을 주게 된다. 따라서, 도 2를 참고로 설명한 바와 같이, 수신 장치에서 수신된 원본 데이터의 전달 순서가 어긋날 수 있다.
한편, 각 망으로 전달되는 데이터 전송량/전송 비율/전송 기회는 송신 장치의 TCP 계층이 아닌 패킷 스케줄러에 의해 결정된다. 하지만, 종래의 패킷 스케줄러는 망 상태를 알지 못한 채 단지 정해진 방식으로 스케줄링하기 때문에, 어느 망의 상태가 다른 망으로 영향을 주어 결과적으로 전체 병합 전송 효율이 저하됨에도 불구하고, 스케줄링을 동적으로 변경하기 어렵다. 즉, 종래의 네트워크 장치는 TCP 계층에서 혼잡 제어를 할 뿐, 혼잡 발생 시 또는 혼잡 발생 전에 패킷 스케줄러에 의한 전송량/전송 비율/전송 기회 제어를 기대하기 어렵다.
도 5를 참고하면, 제1망은 빠른 RTT, 낮은 패킷 손실율을 가지는 고품질 망이고, 제2망은 제1망보다 느린 RTT, 높은 패킷 손실율을 가지는 저품질 망이라고 가정한다.
종래의 일반적인 TCP 혼잡 제어 방식으로 다중망으로 전송되는 패킷을 스케줄링하는 경우, 혼잡 제어에 의해 제1망의 초기 전송량이 늘어나지만, 시간이 지나면서 제2망의 패킷 전송 지연이나 재전송에 의해 제1망이 영향을 받아 전송량이 줄어들 수 있다.
예를 들면, 송신 장치는 제1 스케줄링 라운드에서 수신 장치로 일정 데이터를 전송하고, 수신 장치로부터 제1망의 수신 윈도우는 2000바이트이고 제2망의 수신 윈도우는 500바이트라고 회신받는다. 그러면, 송신 장치는 제2 스케줄링 라운드에서 제1망으로 2000바이트를 전송하고, 제2망으로 500바이트를 전송한다. 그런데, 제2망의 상태가 열악하여 송신 장치가 수신 장치로부터 제2망으로 전송한 데이터에 대한 확인응답을 받지 못할 수 있다. 제3 스케줄링 라운드가 되면, 송신 장치는 제2망으로 다음 데이터를 보내지 않고 대기하거나 이전 데이터를 재전송할 수 있고, 제1망으로는 다음 데이터를 보내거나 전송 기회를 포기할 수 있다. 결과적으로 두 망의 상태가 달라 TCP 혼잡 제어나 재전송이 어느 망에서 진행된다면, 수신 장치가 수신한 데이터 순서가 어긋날 수 있고, 송신 장치는 고품질의 제1망으로 보낸 데이터마저 재전송할 수 있다.
이와 같이, 종래의 스케줄링 방식을 따르면, 제1망은 고품질이지만, 제2망의 영향으로 패킷 스케줄링 기회를 잃어 동반하여 패킷 전송량 및 병합 전송 효율이 낮아질 수 있다.
도 6을 참고하면, 본 발명의 패킷 스케줄러(100)는 각 망의 상태를 관리한다. 특히 패킷 스케줄러(100)는 각 망의 수신 윈도우를 관리한다. 패킷 스케줄러(100)는 수신 윈도우를 기초로 각 망이 분담할 전송량/전송 비율을 동적으로 결정한다.
예를 들면, 송신 장치는 제1 스케줄링 라운드에서 수신 장치로 일정 데이터를 전송하고, 수신 장치로부터 제1망의 수신 윈도우는 2000바이트이고 제2망의 수신 윈도우는 500바이트라고 회신받는다. 이때, 송신 장치의 패킷 스케줄러(100)는 제1망과 제2망이 모두 양호한 품질의 망 상태라면 수신 윈도우를 기초로 제1망으로 2000바이트를 전송하고 제2망으로 500바이트를 전송하도록 스케줄링할 수 있다.
만약, 패킷 스케줄러(100)가 제2망의 상태 파라미터를 기초로 제2망이 기준 이하의 저품질 망이라는 것을 판단할 수 있고, 패킷 손실율이 기준값 이상이라는 것을 예상할 수 있다. 즉, 패킷 스케줄러(100)는 제2망으로 전송한 데이터에 대해 확인응답이 늦게 도달하거나, 확인응답을 받지 못한 경우, 서브플로우별 전송량 제어가 필요하다고 판단한다. 송신 장치는 원본 데이터를 순서대로 보내야 하는데, 이미 제2망으로 보낸 데이터에 대한 확인응답을 못 받은 상황이라면 다음 데이터를 제1망으로도 보낼 수 없으므로, 서브플로우별 전송량 제어를 시작한다.
패킷 스케줄러(100)는 제2 스케줄링 라운드에서 제1망의 수신 윈도우(2000바이트)보다 적은 전송량을 제1망에 스케줄링한다. 여기서, 수신 윈도우보다 적은 전송량은 제1망의 수신 윈도우(2000바이트)에서 제2망으로 전송하는 데이터량(예를 들면 500바이트)을 제외한 값(1500바이트)일 수 있다. 패킷 스케줄러(100)는 만약에 제2망으로 보낸 500바이트에 대해 확인응답을 못 받더라도, 제3 스케줄링 라운드가 되면, 제2 스케줄링 라운드에서 미처 보내지 않은 500바이트를 제1망으로 보낼 수 있다. 또는 패킷 스케줄러(100)는 제2 스케줄링 라운드에서 제2망으로 보냈으나 확인응답을 못 받은 500바이트를 포함한 전송량을 제1망으로 보낼 수 있다.
이와 같이, 패킷 스케줄러(100)는 제2 스케줄링 라운드에서 저품질의 제2망으로 전송한 패킷에 대한 확인응답 수신 여부에 관계없이, 원본 데이터 중에서 제2 스케줄링 라운드에서 제1망에 스케줄링하고 남은 다음 데이터가 있으면, 제3 스케줄링 라운드에서 남은 다음 데이터를 제1망에 스케줄링(reinjection)한다. 여기서, 제2 스케줄링 라운드에서 제1망에 스케줄링하고 남은 다음 데이터는 제2 스케줄링 라운드에서 제2망에 스케줄링한 데이터를 포함하므로, 수신 장치는 결과적으로 제1망과 제2망을 통해 순차적으로 전송된 패킷을 수신하고, 이를 병합해서 원본 데이터를 획득할 수 있다.
이렇게 패킷 스케줄러(100)가 제2망의 상태를 고려하여 제1망의 전송량을 제어하여 전송하면, 수신 장치에서 다중망으로 전송된 데이터 순서를 빨리 조합할 수 있고, 전체 구간으로 보았을 때 병합 전송 속도를 높일 수 있다. 왜냐하면 저품질의 제2망으로부터 확인응답을 수신하지 못하더라도 제1망마저 전송 기회를 잃거나 데이터 순서를 맞추기 위해 제1망마저 재전송해야 하는 상황을 회피할 수 있기 때문이다.
한편, 패킷 스케줄러(100)는 확인응답에 포함된 수신 윈도우의 크기를 기초로 각 망의 전송량을 결정한다. 이때, 패킷 스케줄러(100)는 수신 윈도우에 해당하는 바이트수보다 적은 바이트수를 전송량으로 결정한다.
실제로 수신 장치가 알려주는 수신 윈도우의 크기는 실제 수신 가능한 양보다 다소 높이 알려줄 수 있다. 따라서, 패킷 스케줄러(100)는 TCP 순서 번호의 증가 추이와 수신 장치로부터 수신한 수신 윈도우의 크기의 변화 추이를 기초로 수신 장치가 알려주는 수신 윈도우의 크기가 실제 수신 가능한 양보다 다소 높이 알려주는 것인지 판단한다. 그리고 패킷 스케줄러(100)는 판단 결과를 기초로 수신 윈도우에 해당하는 바이트수보다 적은 바이트수를 전송량으로 결정한다.
이와 같이, 패킷 스케줄러(100)가 각 망의 수신 윈도우보다 적은 데이터량을 전송한다면, 전체 원본 데이터 구성 시 데이터 순서 오류로 인해 발생되는 패킷 재전송/재주입(reinjection)을 피할 수 있다.
도 7은 본 발명의 한 실시예에 따른 패킷 스케줄링 방법의 흐름도이다.
도 7을 참고하면, 다중망 병합 전송을 위해 복수의 망 각각을 통해 서브플로우가 생성된 상태에서, 패킷 스케줄러(100)는 수신 장치로 전송할 데이터가 있으면, 각 서브플로우로 전송할 데이터를 스케줄링한다.
패킷 스케줄러(100)는 수신 장치와 연결된 복수 망 각각의 상태 파라미터를 수집한다(S110). 망 상태 파라미터는 RTT, 플라이트 상태 데이터 크기, 수신 윈도우 크기, 혼잡 윈도우 크기, 데이터 버퍼에서 대기중인 데이터 크기, 서브플로우 수, 재전송 데이터 크기, DSS 크기 등을 포함할 수 있다.
패킷 스케줄러(100)는 복수 망 각각의 상태 파라미터를 기초로 복수 망에 대한 통합 스케줄링이 필요한 시점을 결정한다(S120). 즉, 패킷 스케줄러(100)는 서브플로우별 전송량 제어에 진입할 것인지 판단한다. 스케줄링 통합 기준은 도 3에서 설명한 바와 같이, 적어도 하나의 망의 수신 윈도우가 임계값에 도달한 경우 또는 RTT가 임계값에 도달한 경우일 수 있다. 또는 스케줄링 통합 기준은 적어도 두 망의 수신 윈도우 차이가 임계값 이상인 경우 또는 RTT 차이가 임계값 이상인 경우일 수 있다. 예를 들어, 제2망의 수신 윈도우가 임계값에 도달하거나 RTT가 임계값에 도달하면, 통합 스케줄링 시점이라고 결정될 수 있다. 제1망과 제2망의 수신 윈도우 차이가 임계값 이상이거나 RTT 차이가 임계값 이상이면, 통합 스케줄링 시점이라고 결정될 수 있다.
통합 스케줄링 시점인 경우, 패킷 스케줄러(100)는 각 망의 상태 파라미터를 기초로 복수의 망 중에서 고품질의 제1망을 결정한다(S130).
패킷 스케줄러(100)는 복수의 망 중에서 제1망이 아닌 나머지 제2망의 수신 윈도우를 기초로 제2망의 전송량을 결정한다(S140). 제2망의 전송량은 제2망의 수신 윈도우와 같거나 적은 값이다.
패킷 스케줄러(100)는 제1망의 수신 윈도우보다 일정 크기 적은 데이터량을 제1망의 전송량으로 결정한다(S150). 여기서 일정 크기는 제2망의 전송량일 수 있다.
패킷 스케줄러(100)는 제1망의 전송량에 해당하는 데이터와 제2망의 전송량에 해당하는 데이터를 해당 망의 서브플로우 데이터 버퍼에 추가한다(S160). 서브플로우의 데이터 버퍼에 저장된 데이터는 MPTCP 계층에서 TPC 세그먼트로 분할되고 IP 계층에서 IP 패킷으로 생성되어 수신 장치로 전송된다.
패킷 스케줄러(100)는 복수 망 각각의 상태 파라미터를 기초로 통합 스케줄링을 해제할 시점을 결정한다(S170). 스케줄링 통합 기준을 만족하지 못하면 통합 스케줄링을 해제할 시점이라고 판단될 수 있다.
통합 스케줄링 해제 시점인 경우, 패킷 스케줄러(100)는 디폴트 스케줄링 방법에 따라 복수 망 각각으로 전송할 데이터를 스케줄링한다(S180).
한편, 패킷 스케줄러(100)는 스케줄링 라운드마다 제1망의 전송량과 제2망의 전송량을 계산할 수 있다. 또는 패킷 스케줄러(100)는 한 번 계산된 제1망의 전송량과 제2망의 전송량을 복수의 스케줄링 라운드에서 사용할 수 있다. 제1망의 전송량과 제2망의 전송량은 제1망과 제2망의 전송 비율 그리고 스케줄링 라운드에서의 총 전송량으로부터 계산될 수 있다.
도 8은 본 발명의 다른 실시예에 따른 패킷 스케줄링 방법의 흐름도이다.
도 8을 참고하면, 패킷 스케줄러(100)는 제1 스케줄링 라운드에서 제1망과 제2망으로 전송한 데이터에 대해, 수신 장치로부터 확인응답들을 수신한다(S210).
패킷 스케줄러(100)는 확인응답들을 기초로 제1망의 수신 윈도우와 제2망의 수신 윈도우를 확인한다(S220).
패킷 스케줄러(100)는 각 망의 상태 파라미터와 트리거링 조건을 기초로 제1망과 제2망에 대한 전송량 제어가 필요한지 판단한다(S230). 트리거링 조건은 도 3에서 설명한 바와 같이, 적어도 하나의 망의 수신 윈도우가 임계값에 도달한 경우 또는 전송 품질값(예를 들면, RTT, 전송 지연 시간, 패킷 손실율 등)가 임계값에 도달한 경우일 수 있다. 또는 판단 기준은 적어도 두 망의 수신 윈도우 차이가 기준값 이상인 경우 또는 전송 품질값 차이가 기준값 이상인 경우일 수 있다.
전송량 제어가 필요한 경우, 패킷 스케줄러(100)는 제1망과 제2망 중 고품질인 제1망을 결정하고, 제1망의 수신 윈도우보다 일정 크기 적은 데이터량을 제2 스케줄링 라운드에서의 제1망 전송량으로 결정한다(S240). 여기서 일정 크기는 제2망의 전송량일 수 있다.
패킷 스케줄러(100)는 제1망과 제2망 중 저품질인 제2망의 수신 윈도우를 기초로 제2 스케줄링 라운드에서의 제2망 전송량을 결정한다(S250).
패킷 스케줄러(100)는 제2 스케줄링 라운드에서 제1망으로 전송한 데이터에 대해, 수신 장치가 전송한 확인응답이 수신된 것을 확인한다(S260).
제3 스케줄링 라운드가 도래하는 시점에, 패킷 스케줄러(100)는 제2 스케줄링 라운드에서 제2망으로 전송한 데이터에 대해, 확인응답을 수신하지 못한 것을 확인한다(S270).
패킷 스케줄러(100)는 제2 스케줄링 라운드에서 제2망으로 전송한 데이터를 제3 스케줄링 라운드에서 제1망으로 전송할 데이터 버퍼에 추가한다(S280).
도 9는 본 발명의 또 다른 실시예에 따른 패킷 스케줄링 방법의 흐름도이다.
도 9를 참고하면, 패킷 스케줄러(100)는 수신 장치와 연결된 복수 망 각각의 상태 파라미터를 기초로 스케줄링 방법을 가변한다. 패킷 스케줄러(100)는 복수 망 각각의 상태 파라미터들이 스케줄링 변경 조건을 만족하는 경우, 제1 방법에서 제2 방법으로 스케줄링 방법을 변경한다. 패킷 스케줄러(100)는 스케줄링 변경 조건이 해제된 경우, 제2 방법에서 제1 방법으로 스케줄링 방법을 복귀한다. 앞으로, 제1 방법을 디폴트 스케줄링 방법이라고 가정하고, 제2 방법을 서브플로우별 전송량 제어를 수행하는 다중망 병합 패킷 스케줄링(Multinet Aggregation Packet Scheduling, MA-PS) 방법이라고 가정하며, 스케줄링 방법 명칭은 당연히 다양하게 변경될 수 있다. 다음에서, 총 전송 세그먼트 크기는 일정 크기로 전송되는 세그먼트 수에 대응되는 의미일 수 있다. 다음에서, 세그먼트 크기 제어로 전송량을 제어하는 방법에 대해 설명한다.
적어도 하나의 망을 통해 서브플로우가 생성(세션 성립)되면, 패킷 스케줄러(100)는 디폴트 스케줄링 방법으로 스케줄링을 시작한다(S310). 디폴트 스케줄링 방법은 복수 망 각각의 상태 파라미터와 관계없이 동작하도록 미리 지정된다.
패킷 스케줄러(100)는 복수 망 각각의 상태 파라미터를 기초로 스케줄링 변경 조건(트리거링 조건)을 만족하는지 판단한다(S320). 스케줄링 변경 조건은 서브플로우별 전송량 제어에 진입하도록 트리거링하는 정보로서, 다양한 조건들의 조합으로 구성될 수 있다. 예를 들면, 스케줄링 변경 조건은 서브플로우 수와 DSS 크기를 조건 파라미터로 이용할 수 있다. 만약, 서브플로우의 개수가 기준값(A) 초과인 경우, 패킷 스케줄러(100)는 DSS 크기가 기준값(B) 초과인지 판단한다(S322, S324). 서브플로우의 개수가 기준값(A) 이하이거나 DSS 크기가 기준값(B) 이하인 경우, 패킷 스케줄러(100)는 디폴트 스케줄링 방법을 유지(스케줄링 변경 조건 불만족)한다(S322, S324). DSS 크기가 기준값(B) 초과이면, 패킷 스케줄러(100)는 스케줄링 변경 조건을 만족한다고 판단한다.
스케줄링 변경 조건을 만족하는 경우, 패킷 스케줄러(100)는 다중망 병합 스케줄링(MA-PS)을 시작한다(S330).
패킷 스케줄러(100)는 적어도 하나의 서프플로우를 전송량 제어 대상(간단히, "제어 대상"이라고 한다)으로 결정한다(S340). 제어 대상은 다양하게 결정될 수 있고, 예를 들면, 복수의 서브플로우 중 고품질 서브플로우를 제어 대상으로 결정할 수 있다. 다음에서, LTE망에 생성된 서브플로우에 대한 전송량 제어를 설명한다. WiFi망에 생성된 서브플로우에 대한 전송량 제어도 별도로 진행될 수 있다. 한편, 다중망 병합 스케줄링은 WiFi망으로 전송한 데이터에 대한 확인응답을 수신하지 못한 경우, 확인응답 미수신 데이터를 LTE 망으로 재주입(reinjection)할 수 있지만, 도 9에서는 재주입 관련 프로세스까지 설명하지 않는다.
패킷 스케줄러(100)는 제어 대상의 망 상태 파라미터를 기초로 제어 대상을 통해 단위시간당 전송할 총 전송 세그먼트(segment) 크기를 조정할지 판단한다(S350). 여기서, 세그먼트 크기는 TSO(TCP Segment Offload)에 의해 TCP 스택에서 MTU보다 큰 세그먼트를 생성할 수 있는 경우라면 단일 세그먼트의 크기를 의미할 수 있고, 그렇지 않은 경우라면 단위 세그먼트들의 총 크기(총 전송량)을 의미할 수 있다. 단위 세그먼트는 TCP 전송 단위인 MTU 또는 MSS일 수 있다. 패킷 스케줄러(100)는 제어 대상의 상태 파라미터들, 예를 들면, 플라이트 상태 데이터(in-flight) 크기, 수신 윈도우(rwnd) 크기, 혼잡 윈도우(cwnd) 크기, 재전송 데이터(retx) 크기를 사용하여 세그먼트 크기를 조정할지 판단한다. 예를 들면, 단계(S350)에서, 패킷 스케줄러(100)는 플라이트 상태 데이터 크기를 기초로 총 세그먼트 크기 조정 여부를 판단할 수 있다.
플라이트 상태 데이터가 기준값(C)을 초과하여 발생한 경우, 패킷 스케줄러(100)는 총 전송 세그먼트 크기를 결정한다(S360). 즉, 플라이트 상태 데이터가 기준값(C)을 초과하여 발생한 경우, 패킷 스케줄러(100)는 제어 대상의 망 상태 파라미터를 기초로 총 전송 세그먼트 크기를 늘리거나 줄이면서 전송할 세그먼트 크기를 결정한다. 단계(S370)를 통해 단위시간당 전송 데이터량이 가변될 수 있다.
패킷 스케줄러(100)는 총 전송 세그먼트 크기가 결정되면, 데이터 버퍼(200)에 대기중인 데이터 크기(skb.len이 지시하는 데이터 크기)와 총 전송 세그먼트 크기를 비교한다(S370).
데이터 버퍼(200)에 대기중인 데이터 크기(skb.len)가 총 전송 세그먼트 크기보다 크면, 패킷 스케줄러(100)는 데이터 버퍼(200)에서 대기중인 데이터 중에서 총 전송 세그먼트 크기만큼을 제어 대상(LTE 망)을 통해 전송한다(S372).
데이터 버퍼(200)에 대기중인(남은) 데이터 크기(skb.len)가 총 전송 세그먼트 크기보다 작으면, 패킷 스케줄러(100)는 데이터 버퍼(200)에 대기중인 데이터(skb.len)를 제어 대상(LTE 망)을 통해 전송한다(S374).
한편, 단계(S350)에서 플라이트 상태 데이터가 기준값(C) 이하로 발생한 경우, 패킷 스케줄러(100)는 단계(S370)로 이동한다. 이때, 패킷 스케줄러(100)는 단계(S360)의 총 전송 세그먼트 크기 조정 단계를 거치지 않고, 일반적인 방식을 따른다. 즉, 패킷 스케줄러(100)는 가용한 혼잡 윈도우 크기(cwnd 크기와 in-flight 크기의 차이)를 기초로 결정된 총 전송 세그먼트 크기(MTU 크기* 세그먼트 수)가 skb.len보다 크면, skb.len만큼의 데이터를 전송하고, skb.len보다 작으면, 총 전송 세그먼트 크기를 전송한다.
패킷 스케줄러(100)는 데이터 버퍼에 대기중인 적어도 일부의 데이터를 전송한 후, 제어 대상의 망 상태 파라미터를 기초로 다중망 병합 스케줄링이 해제되는지 판단한다(S380). 패킷 스케줄러(100)는 원본 데이터 버퍼(200)에 저장된 데이터 크기(skb.len)를 기초로 스케줄링 변경 조건을 해제할 것인지 판단할 수 있다. 만약, 원본 데이터 버퍼(200)에 저장된 데이터 크기가 기준값(예를 들면, 0)이 되면, 패킷 스케줄러(100)는 디폴트 스케줄링 방법으로 이동한다(S310으로 이동). 원본 데이터 버퍼에 저장된 데이터 크기가 기준값보다 크면, 패킷 스케줄러(100)는 제어 대상에 대한 전송량 제어를 유지한다(S350으로 이동).
한편, 단계(S360)에서, 현재 스케줄링 라운드의 총 전송 세그먼트 크기를 결정하기 위해 다양한 망 상태 파라미터들이 이용될 수 있다. 예를 들면, 플라이트 상태 데이터(in-flight) 크기, 수신 윈도우(rwnd) 크기, 혼잡 윈도우(cwnd) 크기, 재전송 데이터(retx) 크기가 이용될 수 있다.
패킷 스케줄러(100)는 제어 대상의 망 상태 파라미터들을 기초로 총 전송 세그먼트 크기를 상향 또는 하향 조정 여부를 판단한다(S362). 판단 조건은 표 1과 같이 설정될 수 있다. 이때, 총 전송 세그먼트 크기는 기준값보다 상향 또는 하향 조정되는데, 기준값은 가용한 혼잡 윈도우 크기(available cwnd) 또는 가용한 혼잡 윈도우 크기에서 전송 가능한 세그먼트 수일 수 있다. 여기서, 가용한 혼잡 윈도우 크기는 혼잡 윈도우 크기에서 플라이트 상태 데이터 크기(in-filght)를 제외한 값으로 정의될 수 있다.
조건 판단 결과
in-flight<rwnd(or cwnd)
and/or
retx<threshold
총 전송 세그먼트 크기 또는 총 전송 세그먼트 수)를
가용한 혼잡 윈도우(cwnd) 크기보다 상향 조정
in-flight>=rwnd(or cwnd)
and/or
retx>=threshold
총 전송 세그먼트 크기 또는 총 전송 세그먼트 수를
가용한 cwnd 크기보다 하향 조정
패킷 스케줄러(100)는 판단 결과를 기초로 가용한 혼잡 윈도우 크기보다 상향 조정된 총 전송 세그먼트 크기를 결정한다(S364).
또는 패킷 스케줄러(100)는 판단 결과를 기초로 가용한 혼잡 윈도우 크기보다 하향 조정된 총 전송 세그먼트 크기를 결정한다(S366).
예를 들어, 가용한 혼잡 윈도우 크기가 5000Bytes이고, 단위 세그먼트 크기가 1500Bytes라고 가정한다. 가용한 혼잡 윈도우 크기에서 단위시간당 전송될 수 있는 세그먼트 수는 3개이다.
하지만, 표 1의 판단 결과가 상향 조정인 경우, 패킷 스케줄러(100)는 총 전송 세그먼트 크기를 가용한 혼잡 윈도우 크기보다 큰 값(6000Bytes)으로 상향 조정한다. 그러면, LTE망은 세그먼트 크기 조정 전보다 많은 4개의 세그먼트를 전송할 수 있다.
표 1의 판단 결과가 하향 조정인 경우, 패킷 스케줄러(100)는 총 전송 세그먼트 크기를 가용한 혼잡 윈도우 크기보다 작은 값(3000Bytes)으로 하향 조정한다. 그러면, LTE망은 세그먼트 크기 조정 전보다 적은 2개의 세그먼트를 전송할 수 있다.
이때, 총 전송 세그먼트 크기를 가용한 혼잡 윈도우 크기보다 큰 6000Bytes로 상향 조정할지, 가용한 혼잡 윈도우 크기보다 작은 3000Bytes로 하향 조절할지는 단위 세그먼트 크기를 기준으로 조정할 수 있다. 즉, 패킷 스케줄러(100)는 제어 대상인 LTE망의 상태 파라미터를 기초로 현재의 가용한 혼잡 윈도우 크기로 전송할 수 있는 세그먼트 수보다 적어도 한 개 더 보내거나 적어도 한 개 덜 보내는 전송량 제어를 수행할 수 있다.
패킷 스케줄러(100)는 TCP의 GSO(generic segmentation offload)를 기반으로 세그먼트 수를 조정할 수 있다. 이를 통해 패킷 스케줄러(100)는 단위시간당 전송 세그먼트 수(또는 패킷 수)를 가변할 수 있는 효과를 얻을 수 있다. 한편, 특정 경로(예를 들면, WiFi망에 생성된 서브플로우 경로)에 GSO 세그먼트 크기(<64KB)를 적용할 것인지를 나타내는 코드레벨이 사용될 수 있다.
도 10은 본 발명의 한 실시예에 따른 다중망 병합 전송 장치의 하드웨어 블록도이다.
도 10을 참고하면, 패킷 스케줄러(100)가 구현된 다중망 병합 전송 장치(1000)는 프로세서(1100), 메모리 장치(1200), 저장 장치(1300), 복수의 통신 장치(1400) 등을 포함하는 하드웨어로 구성되고, 지정된 장소에 하드웨어와 결합되어 실행되는 프로그램이 저장된다. 하드웨어는 본 발명의 방법을 실행할 수 있는 구성과 성능을 가진다. 프로그램은 도 1부터 도 9를 참고로 설명한 본 발명의 동작 방법을 구현한 명령어(instructions)를 포함하고, 프로세서(1100)와 메모리 장치(1200) 등의 하드웨어와 결합하여 본 발명을 실행한다. 패킷 스케줄러(100)의 동작은 프로세서(1100)에 의해 구동되고, 원본 데이터 버퍼(200)나 각 서브플로우의 데이터 버퍼(210, 220)는 메모리 장치(1200)의 지정된 위치에 구현될 수 있다. MPTCP/IP 알고리즘은 운영 체제의 커널(Kernel) 영역에 구현될 수 있다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 다중망 병합 전송 장치의 패킷 스케줄링 방법으로서,
    수신 장치와 연결된 복수 망을 통해 서브플로우가 생성되면, 상기 복수 망 각각에 대해 단일 망별 스케줄링하여 데이터를 전송하는 단계,
    상기 수신 장치와 연결된 복수 망을 통해 데이터가 전송되는 동안에, 상기 복수의 망 각각에 대한 망 상태 파라미터들을 수집하는 단계,
    상기 복수 망 각각의 망 상태 파라미터들을 기초로, 상기 단일 망별 스케줄링을 통합 스케줄링으로 변경하는 스케줄링 변경 조건을 만족하는 지 판단하는 단계,
    상기 스케줄링 변경 조건을 만족하는 경우, 상기 복수 망에 대한 통합 스케줄링이 필요한 통합 스케줄링 시점으로 결정하고, 상기 복수 망 중에서 전송량 제어 대상인 제어 망을 결정하는 단계, 그리고
    상기 제어 망에 대한 적어도 하나의 망 상태 파라미터를 기초로 상기 제어 망으로 전송할 단위시간당 데이터량을 조정하는 단계를 포함하며,
    상기 통합 스케줄링으로 변경한 후 상기 복수 망 각각의 망 상태 파라미터들이 상기 스케줄링 변경 조건의 해제 조건을 만족하는지 판단하고, 상기 해제 조건을 만족하면 상기 통합 스케줄링을 상기 단일 망별 스케줄링으로 복귀시키는 단계
    를 더 포함하는, 패킷 스케줄링 방법.
  2. 제1항에서,
    상기 망 상태 파라미터들은
    패킷 왕복 시간, 전송 데이터 중에서 아직 확인응답을 수신하지 않은 플라이트 상태 데이터 크기, 수신 윈도우 크기, 혼잡 윈도우 크기, 그리고 재전송 데이터 크기 중 적어도 두 개를 포함하는 패킷 스케줄링 방법.
  3. 제1항에서,
    상기 단위시간당 데이터량을 조정하는 단계는
    상기 제어 망을 통해 전송한 데이터 중에서 아직 확인응답을 수신하지 않은 데이터 크기가 제1기준값보다 큰 경우, 상기 단위시간당 데이터량을 조정하는 패킷 스케줄링 방법.
  4. 제1항에서,
    상기 단위시간당 데이터량을 조정하는 단계는
    상기 제어 망에 대한 적어도 하나의 망 상태 파라미터를 기초로, 기준값보다 많거나 적은 단위시간당 전송 데이터량을 결정하고,
    상기 기준값은 상기 제어 망의 가용한 혼잡 윈도우 크기 또는 상기 가용한 혼잡 윈도우 크기에서 전송 가능한 세그먼트 수인 패킷 스케줄링 방법.
  5. 제4항에서,
    원본 데이터 버퍼에서 전송 대기중인 데이터 중에서 상기 결정한 전송 데이터량을 상기 제어 망으로 전송하는 단계
    를 더 포함하는 패킷 스케줄링 방법.
  6. 제1항에서,
    상기 통합 스케줄링 시점인지 결정하는 단계는
    상기 스케줄링 변경 조건을 기초로, 단일망에서 사용되는 스케줄링 방법인 제1 스케줄링 방법에서 다중망 병합 스케줄링 방법인 제2 스케줄링 방법으로 변경하는 상기 통합 스케줄링 시점인지 결정하고,
    상기 제어 망을 결정하는 단계는
    상기 제1 스케줄링 방법에서 상기 제2 스케줄링 방법으로 변경되는 경우, 상기 복수 망 중에서 전송량 제어 대상인 제어 망을 결정하는,
    패킷 스케줄링 방법.
  7. 제6항에서,
    상기 스케줄링 변경 조건은
    상기 복수 망에 생성된 서브플로우의 수와 서브플로우들로 전송되는 데이터 스트림의 크기(Data Sequence Signal, DSS)로 구성된 판단 조건인 패킷 스케줄링 방법.
  8. 제6항에서,
    상기 스케줄링 변경 조건은
    상기 복수 망 중 어느 하나의 망의 전송 품질이 제1 기준값 이상으로 좋아지는 경우, 상기 복수 망 중 어느 하나의 망의 전송 품질이 제2 기준값 이상으로 악화되는 경우, 상기 복수 망 중 적어도 두 망의 품질 차이가 제3 기준값 이상인 경우 중 어느 하나를 포함하는 패킷 스케줄링 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 적어도 하나의 프로세서에 의해 동작하는 패킷 스케줄러로서,
    수신 장치와 연결된 복수 망 각각의 망 상태 파라미터들을 수집하는 망 상태 모니터링부,
    상기 복수 망 각각의 망 상태 파라미터들을 기초로 상기 복수 망 각각에 생성된 서브플로우별 전송량을 조절하는 패킷 전송량 조절부, 그리고
    상기 서브플로우별 전송량을 기초로 상기 수신 장치로 전달할 원본 데이터를 분할하고, 분할한 데이터를 각 서브플로우의 데이터 버퍼에 추가하는 버퍼 전달부를 포함하고,
    상기 패킷 전송량 결정부는
    1) 상기 복수 망 각각의 망 상태 파라미터를 기초로 단일 망별 스케줄링을 통합 스케줄링으로 변경하는 스케줄링 변경 조건을 만족하는 지 판단하고, 상기 스케줄링 변경 조건을 만족하는 경우, 상기 복수 망에 대한 통합 스케줄링이 필요한 통합 스케줄링 시점으로 결정하고, 상기 복수 망 중에서 전송량 제어 대상인 제어 망을 결정하며, 상기 제어 망에 대한 적어도 하나의 망 상태 파라미터를 기초로 상기 제어 망으로 전송할 단위시간당 데이터량을, 기준값을 기준으로 상향 또는 하향 조정하고, 2) 상기 통합 스케줄링으로 변경한 후 상기 복수 망 각각의 망 상태 파라미터들이 상기 스케줄링 변경 조건의 해제 조건을 만족하는지 판단하고, 상기 해제 조건을 만족하면 상기 통합 스케줄링을 상기 단일 망별 스케줄링으로 복귀시키며, 상기 복수 망 각각에 대해 상기 단일 망별 스케줄링에 따라 전송할 데이터량을 결정하고,
    상기 각 서브플로우의 데이터 버퍼에 저장된 데이터는 MPTCP(Multi-Path TCP) 계층과 IP(Internet Protocol) 계층을 거쳐 상기 각 서브플로우가 생성된 망으로 전달되는 패킷 스케줄러.
  16. 제15항에서,
    상기 망 상태 파라미터들은
    각 망으로 전송한 패킷의 왕복 시간(round trip time), 각 망으로 전송한 데이터 중에서 아직 확인응답을 수신하지 않은 데이터 크기, 각 망의 수신 윈도우 크기, 각 망의 혼잡 윈도우 크기, 그리고 각 망에서의 재전송 데이터 크기 중 적어도 두 개를 포함하는 패킷 스케줄러.
  17. 삭제
  18. 제15항에서,
    상기 패킷 전송량 결정부는
    상기 복수 망에 생성된 서브플로우의 수와 서브플로우들로 전송되는 데이터 스트림의 크기(Data Sequence Signal, DSS)로 구성된 판단 조건을 기초로 상기 서브플로우별 전송량 제어를 시작할 지 판단하는 패킷 스케줄러.
  19. 제15항에서,
    상기 패킷 전송량 결정부는
    상기 복수 망 중 어느 하나의 망의 전송 품질이 제1 기준값 이상으로 좋아지는 경우, 상기 복수 망 중 어느 하나의 망의 전송 품질이 제2 기준값 이상으로 악화되는 경우, 상기 복수 망 중 적어도 두 망의 품질 차이가 제3 기준값 이상인 경우 중 어느 하나를 포함하는 판단 조건을 기초로 상기 서브플로우별 전송량 제어를 시작할 지 판단하는 패킷 스케줄러.
  20. 제15항에서,
    상기 패킷 전송량 결정부는
    상기 복수 망 각각의 망 상태 파라미터를 기초로 단위시간당 전송되는 세그먼트 수 또는 총 전송 세그먼트 크기를 가변하는 패킷 스케줄러.
KR1020160076069A 2016-06-17 2016-06-17 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법 KR102111029B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160076069A KR102111029B1 (ko) 2016-06-17 2016-06-17 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160076069A KR102111029B1 (ko) 2016-06-17 2016-06-17 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법

Publications (2)

Publication Number Publication Date
KR20170142513A KR20170142513A (ko) 2017-12-28
KR102111029B1 true KR102111029B1 (ko) 2020-05-14

Family

ID=60940033

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160076069A KR102111029B1 (ko) 2016-06-17 2016-06-17 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법

Country Status (1)

Country Link
KR (1) KR102111029B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109951260B (zh) 2018-02-12 2020-04-03 华为技术有限公司 一种数据包发送方法及相关设备
DE102019115114A1 (de) 2018-10-16 2020-04-16 Samsung Electronics Co., Ltd. Verfahren und Vorrichtung zum Aufteilen von Daten in Multi-Konnektivität
KR101992061B1 (ko) * 2018-11-09 2019-09-30 건국대학교 산학협력단 데이터 전송 장치 및 그 방법
CN113068202A (zh) * 2020-08-19 2021-07-02 鲍俐文 网络设备之间实现数据快速传输的系统
CN116170375A (zh) * 2021-11-25 2023-05-26 华为技术有限公司 一种参数调整方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102051504B1 (ko) * 2013-05-15 2019-12-03 삼성전자주식회사 무선 통신 시스템에서 데이터 패킷 송수신 방법 및 장치
KR20150089853A (ko) * 2014-01-28 2015-08-05 삼성전자주식회사 이종 무선망에서 트래픽 분산 제어방법 및 장치
KR102187810B1 (ko) * 2014-09-26 2020-12-08 삼성전자주식회사 통신 시스템에서 데이터 흐름 제어 장치 및 방법

Also Published As

Publication number Publication date
KR20170142513A (ko) 2017-12-28

Similar Documents

Publication Publication Date Title
US11876711B2 (en) Packet transmission system and method
KR102111029B1 (ko) 다중망 병합 전송 장치, 그리고 이의 패킷 스케줄링 방법
EP3100420B1 (en) Buffer sizing for multi-hop networks
JP4878391B2 (ja) 適応的なキュー待ち時間を伴うスケジューリング及びキューマネージメント
US9124547B2 (en) System and method for enforcing uplink wireless medium usage in wireless networks
US20140140209A1 (en) Buffer sizing for multi-hop networks
KR102176653B1 (ko) 무선 통신 시스템에서 전송 제어를 위한 방법 및 장치
WO2009058085A2 (en) Efficient flow control in a radio network controller (rnc)
WO2009058078A1 (en) Limiting rlc window size in the hsdpa flow control
WO2011100914A2 (zh) 长期演进基站及其处理数据业务的方法
EP3262804B1 (en) Supporting delivery of data packets using transmission control protocol in a wireless communication network
US20220321482A1 (en) System and method for accelerating or decelerating a data transport network protocol based on real time transport network congestion conditions
US20140325064A1 (en) Controlling Establishment of Multiple TCP Connections
US11785442B2 (en) Data transport network protocol based on real time transport network congestion conditions
TW201325145A (zh) 在多連結環境中使用逐跳協定封包路由方法、系統及裝置
JP6973511B2 (ja) 通信装置、通信システム、通信方法及びプログラム
CN116261170A (zh) 一种通信方法、装置及系统
KR102176176B1 (ko) 전송 제어 프로토콜을 이용하는 무선 네트워크에서 혼잡 제어 방법 및 장치
JP2023016381A (ja) 情報通信装置、及び情報通信方法
Szilágyi et al. Efficient LTE PDCP buffer management
KR20210129872A (ko) 초정밀 데이터 통신 방법 및 그 장치
Seyedzadegan et al. The TCP fairness in WLAN: a review
Ngo et al. Avoiding bottlenecks due to traffic aggregation at relay nodes in multi-hop wireless networks
US20240163212A1 (en) Packet transmission system and method
JP6897769B2 (ja) データ送信装置、方法およびプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)