KR20180137281A - 통신 시스템에서 tcp ack 전송 방법 및 장치 - Google Patents

통신 시스템에서 tcp ack 전송 방법 및 장치 Download PDF

Info

Publication number
KR20180137281A
KR20180137281A KR1020170076737A KR20170076737A KR20180137281A KR 20180137281 A KR20180137281 A KR 20180137281A KR 1020170076737 A KR1020170076737 A KR 1020170076737A KR 20170076737 A KR20170076737 A KR 20170076737A KR 20180137281 A KR20180137281 A KR 20180137281A
Authority
KR
South Korea
Prior art keywords
ack
tcp
transmission frequency
flow
ack transmission
Prior art date
Application number
KR1020170076737A
Other languages
English (en)
Other versions
KR102356912B1 (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 KR1020170076737A priority Critical patent/KR102356912B1/ko
Priority to US16/009,872 priority patent/US10645609B2/en
Publication of KR20180137281A publication Critical patent/KR20180137281A/ko
Application granted granted Critical
Publication of KR102356912B1 publication Critical patent/KR102356912B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/0273Traffic management, e.g. flow control or congestion control adapting protocols for flow control or congestion control to wireless environment, e.g. adapting transmission control protocol [TCP]
    • 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/20Traffic policing
    • 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/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • 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/2466Traffic characterised by specific attributes, e.g. priority or QoS using signalling traffic
    • 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/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • H04L47/323Discarding or blocking control packets, e.g. ACK packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/0231Traffic management, e.g. flow control or congestion control based on communication conditions
    • H04W28/0236Traffic management, e.g. flow control or congestion control based on communication conditions radio quality, e.g. interference, losses or delay

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 개시는 4G 시스템 이후 보다 높은 데이터 전송률을 지원하기 위한 5G 통신 시스템을 IoT 기술과 융합하는 통신 기법 및 그 시스템에 관한 것이다. 본 개시는 5G 통신 기술 및 IoT 관련 기술을 기반으로 지능형 서비스 (예를 들어, 스마트 홈, 스마트 빌딩, 스마트 시티, 스마트 카 혹은 커넥티드 카, 헬스 케어, 디지털 교육, 소매업, 보안 및 안전 관련 서비스 등)에 적용될 수 있다.
본 발명에 따른 통신 장치의 방법은 TCP 송신부의 상태에 기반하여 플로우 별로 ACK 전송 빈도를 결정하는 단계, 상향링크 자원이 부족한지 여부를 확인하는 단계, 상기 상향링크 자원이 부족한 경우, 상기 ACK 전송 빈도를 조절할 플로우를 선택하는 단계, 및 상기 선택된 플로우의 상기 ACK 전송 빈도를 조절하는 단계를 포함하는 것을 특징으로 한다.

Description

통신 시스템에서 TCP ACK 전송 방법 및 장치 {Method and apparatus for transmitting a TCP ACK in a communication system}
본 발명은 통신 시스템에 대한 것으로서, 보다 구체적으로, 전송 제어 프로토콜 (transmission control protocol: TCP)을 사용하는 통신 시스템의 통신 방법 및 장치에 관한 것이다.
4G 통신 시스템 상용화 이후 증가 추세에 있는 무선 데이터 트래픽 수요를 충족시키기 위해, 개선된 5G 통신 시스템 또는 pre-5G 통신 시스템을 개발하기 위한 노력이 이루어지고 있다. 이러한 이유로, 5G 통신 시스템 또는 pre-5G 통신 시스템은 4G 네트워크 이후 (Beyond 4G Network) 통신 시스템 또는 LTE 시스템 이후 (Post LTE) 이후의 시스템이라 불리어지고 있다. 높은 데이터 전송률을 달성하기 위해, 5G 통신 시스템은 초고주파(mmWave) 대역 (예를 들어, 60기가(60GHz) 대역과 같은)에서의 구현이 고려되고 있다. 초고주파 대역에서의 전파의 경로손실 완화 및 전파의 전달 거리를 증가시키기 위해, 5G 통신 시스템에서는 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO), 전차원 다중입출력(Full Dimensional MIMO: FD-MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 및 대규모 안테나 (large scale antenna) 기술들이 논의되고 있다. 또한 시스템의 네트워크 개선을 위해, 5G 통신 시스템에서는 진화된 소형 셀, 개선된 소형 셀 (advanced small cell), 클라우드 무선 액세스 네트워크 (cloud radio access network: cloud RAN), 초고밀도 네트워크 (ultra-dense network), 기기 간 통신 (Device to Device communication: D2D), 무선 백홀 (wireless backhaul), 이동 네트워크 (moving network), 협력 통신 (cooperative communication), CoMP (Coordinated Multi-Points), 및 수신 간섭제거 (interference cancellation) 등의 기술 개발이 이루어지고 있다. 이 밖에도, 5G 시스템에서는 진보된 코딩 변조(Advanced Coding Modulation: ACM) 방식인 FQAM (Hybrid FSK and QAM Modulation) 및 SWSC (Sliding Window Superposition Coding)과, 진보된 접속 기술인 FBMC(Filter Bank Multi Carrier), NOMA(non orthogonal multiple access), 및SCMA(sparse code multiple access) 등이 개발되고 있다.
한편, 인터넷은 인간이 정보를 생성하고 소비하는 인간 중심의 연결 망에서, 사물 등 분산된 구성 요소들 간에 정보를 주고 받아 처리하는 IoT(Internet of Things, 사물인터넷) 망으로 진화하고 있다. 클라우드 서버 등과의 연결을 통한 빅데이터(Big data) 처리 기술 등이 IoT 기술에 결합된 IoE (Internet of Everything) 기술도 대두되고 있다. IoT를 구현하기 위해서, 센싱 기술, 유무선 통신 및 네트워크 인프라, 서비스 인터페이스 기술, 및 보안 기술과 같은 기술 요소 들이 요구되어, 최근에는 사물간의 연결을 위한 센서 네트워크(sensor network), 사물 통신(Machine to Machine, M2M), MTC(Machine Type Communication)등의 기술이 연구되고 있다. IoT 환경에서는 연결된 사물들에서 생성된 데이터를 수집, 분석하여 인간의 삶에 새로운 가치를 창출하는 지능형 IT(Internet Technology) 서비스가 제공될 수 있다. IoT는 기존의 IT(information technology)기술과 다양한 산업 간의 융합 및 복합을 통하여 스마트홈, 스마트 빌딩, 스마트 시티, 스마트 카 혹은 커넥티드 카, 스마트 그리드, 헬스 케어, 스마트 가전, 첨단의료서비스 등의 분야에 응용될 수 있다.
이에, 5G 통신 시스템을 IoT 망에 적용하기 위한 다양한 시도들이 이루어지고 있다. 예를 들어, 센서 네트워크(sensor network), 사물 통신(Machine to Machine, M2M), MTC(Machine Type Communication)등의 기술이 5G 통신 기술이 빔 포밍, MIMO, 및 어레이 안테나 등의 기법에 의해 구현되고 있는 것이다. 앞서 설명한 빅데이터 처리 기술로써 클라우드 무선 액세스 네트워크(cloud RAN)가 적용되는 것도 5G 기술과 IoT 기술 융합의 일 예라고 할 수 있을 것이다.
한편, TCP 프로토콜의 지연 ACK (또는 delayed ACK) 기술은 리눅스 운영체제를 비롯한 대부분의 TCP 구현에서 사용하고 있다. 지연 ACK 기술은 복수의 ACK 응답을 하나의 ACK 응답으로 줄이는 동작으로 정의되며, TCP 프로토콜의 오버헤드를 줄이는 것을 목적으로 한다. 일반적으로, 지연 ACK을 사용하는 경우 1개의 TCP 데이터 (또는 TCP DATA)를 수신했을 때는 TCP ACK 응답을 지연시키고, 그 이후 일정 시간이 경과하는 동안 더 이상의 TCP DATA가 수신되지 않거나 혹은 일정 시간이 경과하기 전에 또 하나의 TCP DATA가 수신되면 TCP ACK을 응답하도록 하고 있다.
일반적으로 TCP를 사용하는 많은 응용 (application)의 경우 단일 TCP DATA가 전송되기 보다는 여러 TCP DATA가 연속적으로 전송되는 경우가 대부분이므로, 대략적으로 2개의 TCP DATA를 수신한 후 1개의 TCP ACK 이 송신되는 것이 일반적이다.
다만, 5G 이동통신을 비롯한 수십 Gbps 급 고속 네트워크 환경에서는 이와 같은 종래의 통상적인 TCP 지연 ACK (delayed ACK) 구현은 TCP ACK 응답을 위해서만 수백 Mbps의 대역폭을 소모하게 되어 충분히 프로토콜 오버헤드를 줄이지 못할 것으로 보인다.
따라서, TCP 프로토콜의 성능을 유지하면서 TCP 프로토콜의 오버헤드를 감소시키기 위한 방법이 필요하다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로 TCP 프토로콜의 종단 수신 장치 혹은 중간 경유 장치에서 TCP ACK을 가변적으로 지연 혹은 압축하여 전송함으로써 사용자의 체감 성능 하락을 막으면서도 통신 사업자의 자원 사용 효율을 높이는데 그 목적이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 통신 장치의 방법은, 서버와 상기 통신 장치의 TCP 송신부의 상태에 기반하여 플로우 별로 ACK 전송 빈도를 결정하는 단계, 상향링크 자원이 부족한지 여부를 확인하는 단계, 상기 상향링크 자원이 부족한 경우, 상기 ACK 전송 빈도를 조절할 플로우를 선택하는 단계, 및 상기 선택된 플로우의 상기 ACK 전송 빈도를 조절하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기와 같은 문제점을 해결하기 위한 본 발명의 통신 장치는 신호를 송수신하는 송수신부, 및 서버와 상기 통신 장치의 TCP 송신부 상태에 기반하여 플로우 별로 ACK 전송 빈도를 결정하고, 상향링크 자원이 부족한지 여부를 확인하고, 상기 상향링크 자원이 부족한 경우, 상기 ACK 전송 빈도를 조절할 플로우를 선택하고, 상기 선택된 플로우의 상기 ACK 전송 빈도를 조절하는 제어부를 포함하는 것을 특징으로 한다.
본 발명의 일 실시 예에 따르면, 종단 수신 장치 혹은 중간 경유 장치는 상대 송신 장치의 TCP 상태 (TCP state)에 따라 빠른 TCP 응답이 필요한 경우와 반드시 필요치 않은 경우를 구분하여 TCP ACK의 지연이나 압축 정도를 가변적으로 적용함으로써, 사용자의 체감 성능 하락을 최소화하면서도 자원 사용 효율을 높이는 효과가 있다.
본 발명의 다른 실시 예에 따르면, 종단 수신 장치 혹은 중간 경유 장치는 복수의 TCP 플로우 간 우선순위에 따라 TCP ACK 응답을 지연하거나 압축할 플로우를 선정하여 가변적으로 적용함으로써, 사용자의 체감 성능 하락을 최소화하면서도 자원 사용 효율을 높이는 효과가 있다.
본 발명의 또 다른 실시 예에 따르면, 종단 수신 장치 혹은 중간 경유 장치는 TCK ACK 응답의 지연이나 압축만으로는 상향링크 자원이 부족한 상황을 인지하여 상향 TCP DATA의 전송을 지연함으로써 사용자의 체감 성능 하락을 최소화하면서도 자원 사용 효율을 높이는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 통신 장치의 구성 및 다른 장치 간의 관계를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 통신 장치의 구성 및 다른 장치 간의 관계를 나타낸 다른 도면이다.
도 3은 본 발명의 일 실시예에 따른 통신 장치의 구성 및 다른 장치 간의 관계를 나타낸 또 다른 도면이다.
도 4는 본 발명에 따른 TCP ACK의 전송 빈도를 조절하는 방법을 도시한 도면이다.
도 5는 본 발명에 따른 TCP ACK의 전송 빈도를 조절하는 방법을 구체적으로 도시한 도면이다.
도 6은 플로우 별 최적 ACK 전송 빈도를 결정하는 방법을 도시한 도면이다.
도 7는 단위시간 당 데이터 패킷이 수신되는 예시를 도시한 도면이다.
도 8은 플로우별 최적 ACK 전송 빈도를 결정하는 다른 방법을 도시한 도면이다.
도 9는 플로우 별 최적 ACK 전송 빈도를 결정하는 또 다른 방법을 도시한 도면이다.
도 10은 플로우 별 최적 ACK 전송 빈도를 결정하는 또 다른 방법을 도시한 도면이다.
도 11 은 TCP 플로우가 복수 개인 경우에는 플로우를 결정하는 방법을 도시한 도면이다.
도 12는 본 발명에 따른 통신 장치의 구조를 도시한 도면이다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
또한 실시 예에서 방법을 설명하는 도면에서 설명의 순서가 반드시 실행의 순서와 대응되지는 않으며, 선후 관계가 변경되거나 병렬적으로 실행 될 수도 있다.
또한, 본 발명은 설명의 편의상 무선 통신 시스템의 경우를 예를 들어 설명하지만, 본 발명의 내용은 유선 통신 시스템에도 적용할 수 있다.
상술한 바와 같이 차세대 이동 통신 (예를 들어, 5G 이동 통신)을 비롯한 고속 네트워크 환경에서는 TCP 응답을 위해서만 수백 Mbps의 대역폭을 소모하게 되어, TCP 프로토콜 오버헤드를 충분히 줄일 수 없다. 예를 들어, 5G 이동통신의 경우 하향 전송속도가 20Gbps에 이르게 되는데, 이 때 TCP DATA의 크기를 1500 바이트로 가정하면 하기의 표 1과 같이 IPv4의 경우 347 Mbps, IPv6의 경우 480 Mbps 정도의 상향 전송속도가 TCP ACK 전송을 위해 사용되게 된다.
[표 1]
Figure pat00001
한 가지 방법은, TCP Delayed ACK 구현 시, 2개의 TCP DATA를 수신하는 경우 TCP ACK을 전송하는 것이 아닌, N (2보다 큰 양의 정수) 개의 TCP DATA를 수신하는 경우 TCP ACK을 전송하도록 하는 것이다. 하지만, 이러한 변경은 TCP ACK의 응답 시간이 증가함에 따라 전체 종단 간 (end-to-end) 왕복 시간 (rount trip time: RTT)이 증가하게 되며, RTT의 증가는 TCP 프로토콜의 처리량 (throughput) 성능을 떨어뜨리게 된다.
따라서, 이하에서는 TCP ACK을 가변적으로 지연 또는 압축하여 전송함으로써 TCP 프로토콜의 성능을 유지하며 자원 사용 효율을 증가시키는 방법을 제안한다.
도 1은 본 발명의 일 실시예에 따른 통신 장치의 구성 및 다른 장치 간의 관계를 나타낸 도면이다.
도 1의 종단 수신 장치는 TCP 연결의 종단에 위치한 장치로서, 본 발명에서는 단말 (110)을 의미할 수 있다. 또한 본 발명에서는 상기 종단 수신 장치, 중간 경유 장치 또는 중간 장치 등을 통칭하여 통신 장치라 칭할 수 있다.
통신 장치는 이동 통신 기지국과 연결되어있으며, 기지국을 통해 이동통신 망 외부의 서버와 TCP 연결을 생성하고 TCP DATA 및 TCP ACK을 송수신할 수 있다. 또한, 상기 통신 장치는 복수의 서버와 복수의 TCP 연결을 생성하여 TCP DATA 및 ACK을 송수신할 수도 있다. 이 때, 통신 장치는 TCP ACK 최적화 장치 (TCP ACK optimizer)를 포함할 수 있으며, 상기 TCP ACK 최적화 장치는 가변적으로 ACK 지연을 수행할 수 있다. 구체적인 내용은 후술한다.
도 1의 통신 장치의 프로토콜 계층 (120)은 네트워크 인터페이스 (Network Interface: N/W IF) (121) 와 TCP 계층 (122), 응용 계층 (123)으로 구성될 수 있다. 본 도면에서는 본 발명과 관계없는 계층들은 생략하여 표시하였다.
N/W IF (121)는 이동 통신 망의 경우 셀룰러 모뎀에 해당하는 것으로 OSI 7계층의 1,2 계층 기능을 수행한다. 서버로부터 N/W IF에 수신된 DATA (130)는 통상적인 장치와 마찬가지로 TCP 계층 (122)을 거쳐 상위 응용 계층 (123)에 전달된다. 그리고, TCP 계층(122)은 수신된 TCP DATA의 일련 번호 (sequence number) 및 과거 수신한 TCP DATA의 일련 번호를 기반으로 다음에 수신하기를 기대하는 일련 번호를 의미하는 승인 번호 (acknowledgement number)를 담은 TCP ACK을 생성하여 서버에 응답할 수 있다. 이 때, 이와 같은 TCP ACK 생성 및 송신을 담당하는 TCP 계층 내의 기능 모듈을 ACK 처리부 (124)라 명명할 수 있다. 이 때, 본 발명의 ACK 처리부는 상술한 TCP 최적화 장치를 의미할 수 있다.
본 발명의 ACK 처리부 (124)는 각 TCP 연결의 송신 측의 상태 (TCP state) 등을 추론하여 가변적으로 적절한 ACK 지연을 수행함으로써 상향링크 자원을 절약하고 TCP 성능 하락을 최소화할 수 있다. 본 발명의 장치는 N/W IF 와 TCP 계층 간의 내부 인터페이스에 따라 N/W IF가 상향링크 자원에 대한 정보를 TCP 계층의 ACK 처리부에 전달할 수 있도록 하고 있다. 상기 상향링크 자원에 대한 정보는 가장 최근에 할당된 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기를 통해 추측된 할당될 것으로 예측되는 상향링크 자원의 크기 중 하나 이상을 포함할 수 있다.
또한 상기 상향링크 자원에 대한 정보는 현 시점의 상향링크 자원의 부족 여부, 혹은 예측된 상향링크 자원의 부족 여부를 나타낸 것일 수 있다. 또한 상기 상향링크 자원에 대한 정보는 TCP 계층에서 줄여야 할 상향 전송 데이터율의 크기를 나타낸 것일 수 있다.
본 발명의 ACK 처리부 (124)는 N/W IF로부터 인지한 상기 정보를 ACK 지연 정도를 결정하는 등에 활용할 수 있다.
또한, 본 발명의 장치는 응용 계층과 TCP 계층 간의 내부 인터페이스에 따라 응용 계층이 자신의 컨텍스트를 TCP 계층에 전달할 수 있도록 하고 있다. 상기 응용계층은 비디오 스트리밍 플레이어와 같이 사용자가 직접 대면하는 응용 프로그램뿐만 아니라, 안드로이드 프레임워크와 같이 사용자가 직접 대면하지 않는 소프트웨어 영역을 포괄하는 개념이다. 상기 컨텍스트는 예를 들어 비디오 재생의 초기 상태인지 여부, 응용이 현재 전면(혹은 후면) 상태인지 여부 등을 포함할 수 있다.
도 2는 본 발명의 일 실시예에 따른 통신 장치의 구성 및 다른 장치 간의 관계를 나타낸 다른 도면이다.
도 2의 중간 경유 장치 (210)는 TCP 연결의 양 종단인 단말과 서버의 중간에 위치하며, 기지국에 직접 연결되거나, 기지국에 직접 연결되진 않았더라도 기지국과 직접 연결된 장치와의 통신을 통해 기지국 상향링크 자원의 상황을 알 수 있는 장치일 수 있다. 상술한 바와 같이, 중간 경유 장치를 통신 장치라 칭할 수 있다.
이 통신 장치는 DPI (Deep Packet Inspection) 등을 통해 단말과 서버 간 TCP 연결의 내용을 파악할 수 있다. 또한, 통신 장치는 복수의 서버와 복수의 TCP 연결을 생성하여 TCP DATA 및 ACK을 주고 받을 수도 있다. 이 때, 통신 장치는 TCP ACK 최적화 장치를 포함할 수 있으며, 상기 TCP ACK 최적화 장치는 가변적으로 ACK 압축을 수행할 수 있다.
구체적으로, 통신 장치는 단말과 서버와의 연결을 유지한 채 서버로부터 수신되는 TCP DATA를 단말에 전달하고, 단말이 생성한 TCP ACK을 서버에 전달할 수 있다. 다만, 이 과정에서 통신 장치는 상기 TCP ACK을 압축하여 서버에 전송하여 가변적으로 ACK 지연을 수행할 수 있다. 이 때, TCP ACK을 압축한다는 것은 복수의 TCP ACK 응답 중 하나의 TCP ACK 응답만을 서버에 전송하는 동작을 의미할 수 있다.
통신 장치의 ACK 처리부가 TCP ACK을 생성하여 지연 전송하는 것을 TCP ACK 지연을 수행한다고 표현할 수 있으며, 통신 장치의 ACK 처리부가 수신한 TCP ACK 중 일부의 TCP ACK만을 전송하는 것을 TCP ACK을 압축한다고 표현할 수 있다. 다만, 본 발명의 내용이 이에 한정되는 것은 아니며, TCP ACK을 생성하여 지연 전송하는 것과 수신된 TCP ACK 중 일부의 TCP ACK을 전송하는 것을 통칭하여 TCP ACK을 압축한다고 표현하거나, 지연한다고 표현하거나 또는 TCP ACK의 전송 빈도를 조절한다고 표현할 수 있다.
도 2의 장치의 프로토콜 계층 (220)은 복수의 N/W IF (Network Interface) (221, 222) 와 TCP 계층 (223)으로 구성된다. 본 도면에서는 본 발명과 관계없는 계층들은 생략하여 표시하였다. 또한, 본 발명에서는 TCP enhancer라는 용어를 사용하였지만, 이는 기지국과 단말 사이에 위치하여 기지국과 데이터 사이의 플로우를 분할하지 않고 그대로 송수신하는 장치를 의미하는 것이며, 용어는 변경될 수 있다.
일례로 N/W IF중 하나(N/W IF2) (222)는 이동통신 망의 경우 셀룰러 모뎀에 해당하는 것으로 OSI 7계층의 1,2 계층 기능을 수행하며, N/W IF 중 또 다른 하나(N/W IF1) (221)는 이더넷 카드에 해당할 수 있다. 서버로부터 N/W IF 2 (222)에 수신된 DATA (230)는 TCP 계층을 거쳐 (혹은 TCP 계층 하부의 L2 혹은 L3 계층만을 거쳐) 또 다른 N/W IF 1 (221)로 전달될 수 있다. 단말은 이처럼 전달된 TCP DATA를 수신 후 자체 로직에 의하여 TCP ACK을 생성하여 서버에 응답할 것이며, 이는 다시 N/W IF 1 (221)을 통해 수신될 것이다. 수신된 TCP ACK 은 중간 경유 장치의 TCP 계층 (223)으로 올려보내져 ACK 처리부 (224)에서 가변적으로 압축 처리된다. 상기 압축 처리는 N/W IF 1을 통해 수신되는 복수의 TCP ACK 응답을 하나의 TCP ACK 응답만을 남기고 제거(drop)한 후 하나의 TCP ACK 응답만을 N/W IF 2 (222)로 내보내는 것을 의미한다. 이 때, 본 발명의 ACK 처리부는 상술한 TCP 최적화 장치를 의미할 수 있다.
본 발명의 중간 경유 장치는 N/W IF 와 TCP 계층 간의 내부 인터페이스에 따라 N/W IF가 상향링크 자원에 대한 정보를 TCP 계층의 ACK 처리부 (224)에 전달할 수 있도록 하고 있다. 상기 상향링크 자원에 대한 정보는 가장 최근에 할당된 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기를 통해 추측된 할당될 것으로 예측되는 상향링크 자원의 크기 중 하나 이상을 포함할 수 있다. 또한 상기 상향링크 자원에 대한 정보는 현 시점의 상향링크 자원의 부족 여부, 혹은 예측된 상향링크 자원의 부족 여부를 나타낸 것일 수 있다. 또한 상기 상향링크 자원에 대한 정보는 TCP 계층에서 줄여야 할 상향 전송 데이터율의 크기를 나타낸 것일 수 있다. 본 발명의 ACK 처리부는 N/W IF로부터 인지한 상기 정보를 ACK 지연 정도를 결정하는 등에 활용할 수 있다.
도 3은 본 발명의 일 실시예에 따른 통신 장치의 구성 및 다른 장치 간의 관계를 나타낸 또 다른 도면이다.
도 3의 중간 장치 (310)는 TCP 연결의 본래 양 종단인 단말과 서버의 중간에 위치하며, 단말과 서버 간의 하나의 TCP 연결을 단말과 중간 장치, 중간 장치와 서버 간의 두 개의 TCP 연결로 분리하여 운영하도록 하는 특징이 있다. 본 발명에서는 이와 같은 중간 장치를 TCP Proxy 또는 통신 장치라고 칭할 수 있다.
본 발명의 통신 장치는 도 3과 같이 기지국에 직접 연결되거나, 기지국에 직접 연결되진 않았더라도 기지국과 직접 연결된 장치와의 통신을 통해 기지국 상향링크 자원의 상황을 알 수 있는 장치일 수 있다. 또한, 통신 장치는 서버와 복수의 TCP 연결을 생성하여 TCP DATA 및 TCP ACK을 송수신할 수 있다. 이 때, 통신 장치는 TCP ACK 최적화 장치를 포함할 수 있으며, 상기 TCP ACK 최적화 장치는 가변적으로 ACK 지연을 수행할 수 있다.
도 3의 통신 장치의 프로토콜 계층 (320)은 복수의 N/W IF (Network Interface) (321, 322)와 TCP 계층 (323) 및 응용 계층 (324)으로 구성된다. 본 도면에서는 본 발명과 관계없는 계층들은 생략하여 표시하였다.
일례로 N/W IF중 하나(N/W IF2) (322)는 이동통신 망의 경우 셀룰러 모뎀에 해당하는 것으로 OSI 7계층의 1,2 계층 기능을 수행하며, N/W IF 중 또 다른 하나(N/W IF1) (321)는 이더넷 카드에 해당할 수 있다. 서버로부터 N/W IF 2 (322)에 수신된 DATA (330)는 TCP 계층을 거쳐 응용 계층으로 전달되며, TCP 계층(의 ACK 처리부 (325))은 그에 대한 TCP ACK (331)을 생성하여 N/W IF2 (322)를 통해 서버에 응답한다. 이때 본 발명의 ACK 처리부 (325)에 의한 TCK ACK 생성은 특별히 각 TCP 연결의 상대 송신 측의 상태 (TCP state) 등을 추론하거나 TCP 연결 별로 중간 장치 내에서 버퍼링(혹은 큐잉) 중인 패킷의 수에 따라 가변적으로 적절한 ACK 지연을 수행함으로써 상향링크 자원을 절약하면서도 TCP 성능 하락을 최소화할 수 있다. 이 때, 본 발명의 ACK 처리부는 상술한 TCP 최적화 장치를 의미할 수 있다.
본 발명의 중간 장치는 특별히 N/W IF 와 TCP 계층 간의 내부 인터페이스에 따라 N/W IF가 상향링크 자원에 대한 정보를 TCP 계층의 ACK 처리부에 전달할 수 있도록 하고 있다. 상기 상향링크 자원에 대한 정보는 가장 최근에 할당된 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기를 통해 추측된 할당될 것으로 예측되는 상향링크 자원의 크기 중 하나 이상을 포함할 수 있다. 또한 상기 상향링크 자원에 대한 정보는 현 시점의 상향링크 자원의 부족여부, 혹은 예측된 상향링크 자원의 부족 여부를 나타낸 것일 수 있다. 또한 상기 상향링크 자원에 대한 정보는 TCP 계층에서 줄여야 할 상향 전송 데이터율의 크기를 나타낸 것일 수 있다. 본 발명의 ACK 처리부는 N/W IF로부터 인지한 상기 정보를 ACK 지연 정도를 결정하는 등에 활용할 수 있다.
도 4는 본 발명에 따른 TCP ACK의 전송 빈도를 조절하는 방법을 도시한 도면이다.
도 4를 참고하면, 통신 장치는 S410 단계에서 플로우 별로 ACK 전송 빈도를 결정할 수 있다. 상술한 바와 같이, 통신 장치는 단말, TCP 프록시 또는 TCP 인핸서 (TCP enhancer) 등을 포함할 수 있다.
통신 장치는 송신 측의 혼잡 제어 알고리즘 상태 (이하, TCP 송신부의 상태) 에 기반하여 최적의 ACK 전송 빈도를 결정할 수 있으며, 즉, 통신 장치는 플로우 별로 최적의 TCP ACK 압축률을 결정하고, 이를 각 플로우에 적용할 수 있다.
그리고, 통신 장치는 S420 단계에서 상향링크 자원이 부족한지 여부를 확인할 수 있다. 이 때, 상향링크 자원에 대한 정보는 하위 계층 (예를 들어, 모뎀, CP 등)으로부터 알려질 수 있다.
통신 장치는 상기 수신된 상향링크 자원에 대한 정보에 기반하여 상향링크 자원이 부족한지 여부를 확인할 수 있다. 예를 들어, 상술한 바와 같이 상향링크 자원에 대한 정보는 가장 최근에 할당된 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기를 통해 추측된 할당될 것으로 예측되는 상향링크 자원의 크기 중 하나 이상을 포함할 수 있으며, 상기 상향링크 자원에 대한 정보가 임계 값보다 작은 경우, 통신 장치는 상향링크 자원이 부족하다고 판단할 수 있다. 또는 상향링크 자원에 대한 정보는 현 시점의 상향링크 자원의 부족 여부, 혹은 예측된 상향링크 자원의 부족 여부일 수 있으며, 통신 장치는 상기 정보를 확인하여 상향링크 자원이 부족한지 여부를 확인할 수 있다.
상향링크 자원이 부족하지 않은 경우, 통신 장치는 별도로 ACK 전송 빈도를 조절할 필요가 없으며, 기존에 적용된 전송 빈도에 따라 ACK을 전송할 수 있다. 다만, 플로우 별로 TCP 송신부의 상태 등이 변경되는 경우, 통신 장치는 TCP 송신부의 상태에 기반하여 TCP 전송 빈도를 변경할 수 있다.
한편, 상향링크 자원이 부족한 경우, 통신 장치는 S430 단계에서 ACK 전송 빈도를 조절할 플로우를 결정할 수 있다. 통신 장치는 플로우 간의 우선 순위에 기반하여 플로우를 결정할 수 있다. 이에 대한 구체적인 내용은 후술한다.
그리고, 통신 장치는 S440 단계에서 선택된 플로우의 ACK 전송 빈도를 조절할 수 있다. 이 때, 통신 장치는 TCP 송신부의 상태에 기반하여 플로우의 ACK 전송 빈도를 조절할 수 있다. 예를 들어, 선택된 플로우의 TCP 송신부 상태가 혼잡 회피 상태인 경우와 빠른 재전송 상태인 경우에 전송 빈도를 다르게 조절할 수 있다.
이와 같이, 본 발명은 가변적으로 ACK의 전송 빈도를 조절함으로써 처리량을 감소시키지 않고, 시스템의 성능을 향상시킬 수 있다.
도 5는 본 발명에 따른 TCP ACK의 전송 빈도를 조절하는 방법을 구체적으로 도시한 도면이다.
통신 장치는 S510 단계에서 플로우 (Flow)별 최적의 ACK 전송 빈도 (ACK 압축/지연율)을 결정할 수 있다. 그리고, 통신 장치는 그에 따라 압축/지연율을 적용하여 TCP ACK을 처리할 수 있다. 이 때, 통신 장치는 플로우 별로 최적의 ACK 전송 빈도 또는 압축/지연율을 결정하기 위해 TCP 송신부 상태를 활용할 수 있다. 이에 대한 상세한 절차는 후술한다. 이 단계는 N/W IF 로부터 상향링크 자원에 대한 정보를 받지 아니하고 TCP 계층의 ACK 처리부가 독자적으로 결정하여 처리할 수 있는 기능이다.
그리고, 통신 장치는 S520 단계에서 상향링크 자원이 부족한지 여부를 확인할 수 있다. ACK 처리부는 N/W IF로부터 상향링크 자원에 대한 정보를 수신할 수 있으며, 상향링크 자원의 부족 상황을 확인할 수 있다.
예를 들어, 상술한 바와 같이 상향링크 자원에 대한 정보는 가장 최근에 할당된 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기, 혹은 최근에 할당된 평균적인 상향링크 자원의 크기를 통해 추측된 할당될 것으로 예측되는 상향링크 자원의 크기 중 하나 이상을 포함할 수 있으며, 상기 상향링크 자원에 대한 정보가 임계 값보다 작은 경우, 통신 장치는 상향링크 자원이 부족하다고 판단할 수 있다. 또는 상향링크 자원에 대한 정보는 현 시점의 상향링크 자원의 부족 여부, 혹은 예측된 상향링크 자원의 부족 여부일 수 있으며, 통신 장치는 상기 정보를 확인하여 상향링크 자원이 부족한지 여부를 확인할 수 있다.
상향링크 자원이 부족하지 않은 경우, 통신 장치는 별도로 ACK 전송 빈도를 조절할 필요가 없으며, 기존에 적용된 전송 빈도에 따라 ACK을 전송할 수 있다. 다만, 플로우 별로 TCP 송신부의 상태 등이 변경되는 경우, 통신 장치는 TCP 송신부의 상태에 기반하여 ACK 전송 빈도를 변경할 수 있다.
한편, 상향링크 자원이 부족한 경우, 통신 장치는 수신된 정보에 기반하여 ACK 전송 빈도를 조절할 수 있다. 구체적으로, 통신 장치는 TCP ACK의 지연율 혹은 압축률을 더욱 상향하여 부족한 상향링크 자원에 맞추어 TCP ACK 응답이 이루어질 수 있도록 할 수 있다.
만약, 장치에서 처리 중인 TCP 플로우가 복수 개인 경우에는 복수 개의 플로우 중 일부의 TCP ACK 지연율 혹은 압축률을 조절할 수 있다.
따라서, 통신 장치는 S530 단계에서 플로우의 수가 1개를 초과하는지 여부를 확인할 수 있다.
통신 장치는 여러가지 조건을 고려하여 규칙에 따라 전송 빈도를 조절할 (더욱 지연 혹은 압축할) 플로우를 정할 수 있으며, 이에 대해서는 후술한다.
만약, 플로우의 수가 1개를 초과하는 경우, 통신 장치는 ACK 전송 빈도를 조절할 플로우를 선택할 수 있다. 상술한 바와 같이 통신 장치는 플로우 간의 우선 순위에 기반하여 플로우를 선택할 수 있다.
만약, 처리 중인 TCP 플로우가 하나뿐이거나, 상기 단계에서 전송 빈도를 조절할 (더욱 지연 혹은 압축할) TCP 플로우가 선택되면 통신 장치는 S550 단계에서 해당 플로우의 TCP ACK의 전송 빈도를 조절하는 것이 가능한지를 판단할 수 있다.
통신 장치의 ACK 처리부는 단위 시간 내에 응답 해야 하는 최소 TCP ACK 개수 혹은 최대 압축률의 값을 사전에 저장하고 있을 수 있다. 만약, S510 단계에서 결정한 ACK 전송 빈도 (또는 압축률)이 사전에 정해진 최소 ACK 전송 빈도 (또는 최대 압축률)에 해당하는 값이라면 해당 플로우에 대해서 더 이상 ACK 전송 빈도를 조절할 수 없다. 해당 플로우에 대해 ACK 전송 빈도를 더 낮게 설정하거나 더 지연 혹은 압축을 적용할 경우 TCP 플로우의 큰 성능 하락이 발생할 수 있기 때문이다. 따라서, 통신 장치는 해당 플로우에 대해서는 더 이상 ACK 전송 빈도를 조절하지 않도록 (지연 혹은 압축을 적용하지 않도록) 할 수 있다.
따라서, 통신 장치는 S560 단계에서 다른 플로우가 있는지 확인할 수 있다.
만약 다른 플로우가 있는 경우, 통신 장치는 S540 단계로 돌아가 다른 플로우를 선택할 수 있다.
한편, 선택된 플로우의 ACK 전송 빈도 (또는 압축률 또는 지연률)가 사전에 정해진 최대 ACK 전송 빈도보다 큰 값 (최대 압축률보다는 작은 값)이라면 통신 장치는 S570 단계에서 해당 플로우의 ACK 전송 빈도를 조절할 수 있다. (더욱 지연 혹은 압축하도록 압축률을 상향 조정할 수 있다.)
이 때, 통신 장치는 해당 플로우의 TCP 송신부 상태에 기반하여 ACK 전송 빈도를 조절할 수 있다. 예를 들어, 후술하는 바와 같이 단위 시간당 데이터 수신량 증가율이 1보다 작아 Fast recovery 상태라고 판단되는 경우에는 ACK 전송 빈도를 데이터의 수신 빈도와 동일하게 설정 (압축률을 1로 설정)할 수 있다. 또한, 데이터 수신량 증가율이 1과 유사한 값 (미리 정해진 오차 범위 이내의 값)이어서 혼잡 회피 상태라고 판단되는 경우, 통신 장치는 ACK 전송 빈도의 감소 정도가 Fast recovery 상태인 경우보다 작도록 설정할 수 있다.
이후, 통신 장치는 S575 단계에서 상기와 같은 TCP 전송 빈도의 조절 (압축률/지연율의 상향 조정)로 상향링크 자원의 부족 문제가 해결되는지를 확인한다.
해결이 되는 경우에는 처리 흐름이 종료되며, 해결이 되지 않는 경우에는 통신 장치는 S560 단계에서 다른 플로우가 있는지 확인할 수 있다.
만약, 모든 플로우를 확인하였음에도 불구하고 ACK 전송 빈도를 조절할 수 있는 (더욱 지연/압축시킬 수 있는) 플로우가 없는 경우에는, 통신 장치는 S580 단계에서 상향링크로 전송할 TCP DATA가 존재하는지를 확인할 수 있다.
상향링크로 전송할 TCP DATA가 존재하지 않는 경우, 처리 흐름이 종료될 수 있다. 반면, 상향링크로 전송할 TCP DATA가 존재하는 경우, 통신 장치는 S590 단계에서 상향링크 DATA를 지연할 플로우를 선택할 수 있다.
TCP 플로우가 복수 개인 경우에는 복수 개의 플로우 중 일부의 TCP DATA를 지연시켜도 충분할 수 있다. 따라서, 여러 가지 조건을 감안하여 규칙에 따라 상향링크 데이터의 전송을 지연 혹은 압축할 플로우를 정할 수 있다. 구체적으로, 통신 장치는 플로우의 우선 순위에 기반하여 플로우를 선택할 수 있으며, 플로우를 선택하는 과정은 S540 단계와 동일하다.
도 6은 플로우 별 최적 ACK 전송 빈도를 결정하는 방법을 도시한 도면이다.
상술한 바와 같이 ACK 전송 빈도는 ACK 압축률 또는 지연율에 기반하여 결정될 수 있는 바, ACK 전송 빈도를 ACK 압출률 또는 지연율이라 칭할 수 있다. 이는 본 발명의 전반에 적용될 수 있다.
ACK 전송 빈도를 결정하는 과정은, N/W IF 로부터 상향링크 자원에 대한 정보를 받지 아니하고 TCP 계층의 ACK 처리부가 독자적으로 결정하여 처리할 수 있다.
먼저, 통신 장치는 S605 단계에서 데이터를 수신할 수 있다. 그리고, 통신 장치는 S610 단계에서 수신된 데이터를 누적할 수 있다. 통신 장치는 단위시간 (T1)의 시간 동안 데이터를 수신하면서 누적 수신량을 기록할 수 있다. T1 은 n * RTT (round trip time) (n은 1이상의 작은 정수)의 시간이 될 수 있으며, RTT는 측정된 RTT 의 최소값 혹은 측정된 RTT 의 평균값이 될 수 있다.
그리고, 통신 장치는 S620 단계에서 미리 정해진 단위시간 (T1)이 경과했는지 여부를 확인할 수 있다.
단위시간이 경과한 경우, 통신 장치는 S630 단계에서 단위시간 당 데이터 수신량의 증가율을 계산할 수 있다. 통신 장치는 매 T1 의 시간이 경과될 때 마다, 단위시간 당 수신량 증가율을 계산할 수 있다.
단위시간 당 수신량 증가율은 이전 T1 동안의 데이터 수신량 / 이번 T1 동안의 데이터 수신량으로 정의될 수 있다. 만약, 연결 생성 후 최소 T1 이 경과하여 직전 T1 동안의 데이터 수신량 기록이 없는 경우에는 직전 T1 동안의 데이터 수신량은 0 인 것으로 한다.
그리고, 통신 장치는 S640 단계에서 단위시간 당 데이터 수신량 증가율이 1보다 큰지 여부를 확인할 수 있다.
만약, 계산된 단위시간 당 수신량 증가율이 1보다 작은 경우에는 통신 장치는 S650 단계에서 ACK 전송 빈도를 최대로 설정할 수 있다. 즉, 통신 장치는 TCP DATA 를 수신할 때마다 TCP ACK을 전송하도록 ACK 전송 빈도를 설정할 수 있다. 또는 통신 장치는 TCP DATA과 TCP ACK의 전송 빈도가 동일하도록 설정할 수 있다. 또는, 통신 장치는 TCP ACK의 압축률/지연율을 1 로 정할 수 있다.
즉, 단위시간 당 데이터 수신량 증가율이 1보다 작은 경우는 TCP 송신부의 상태가 빠른 재전송 (Fast retransmit) 상태일 수 있으며, 재전송을 위해 통신 장치는 DATA를 수신할 때마다 TCP ACK을 전송하도록 설정할 수 있다.
이 때, TCP ACK의 압축률/지연율은 도 2와 같은 구조에서 장치로 입력된 TCP ACK 몇 개에 대하여 1개의 TCP ACK이 출력 인터페이스로 보내지는지로 정의될 수 있다. 또한, TCP ACK 압출률/지연율은 도 1 또는 도 3과 같은 구조에서 몇 개의 TCP DATA를 받은 후 TCP ACK 이 생성되어 응답되는지로 정의될 수 있다. 또한, 상기 정의된 TCP ACK 압축률/지연율과 관계없이 ACK timeout 시 TCP ACK이 전송될 수 있다. 따라서, TCP ACK의 압축률/지연율이 1로 결정되면 TCP DATA의 수신 즉시 TCP ACK이 생성되어 응답되거나, 단말로부터 TCP ACK의 수신 직후 바로 압축 없이 서버로 전달하게 된다.
만약, 계산된 단위시간 당 수신량 증가율이 1보다 큰 경우에는 통신 장치는 S660 단계에서 ACK 전송 빈도를 미리정해진 규칙에 따라 결정할 수 있다.
예를 들어, 통신 장치는 TCP ACK의 압축률/지연율을 “1/ {MIN(2, 수신량증가율)-1}” 로 결정하거나 이에 비례하는 값으로 정할 수 있다. 따라서, 통신 장치는 상기 TCP ACK 압축률/지연율에 따라 ACK 전송 빈도를 결정할 수 있다.
TCP 연결은 패킷 손실이 발생하지 않으면 느린 시작 (Slow Start) 상태에서 시작하여 서버의 혼잡 윈도우 (congestion window: cwnd)가 임계 값 (ssthresh) 를 초과함에 따라 혼잡 회피 (Congestion Avoidance) 상태로 넘어가게 된다. Slow Start 상태의 서버는 TCP ACK을 받음에 따라 cwnd를 +1 증가시키므로 RTT 당 수신량 증가율이 2에 가깝게 커지게 되며 (T1이 RTT의 배수인 경우에는 2보다 큰 값을 갖게 되며), Congestion Avoidance 상태의 서버는 통상 cwnd 크기만큼의 TCP ACK을 받으면 cwnd를 +1 증가시키므로 RTT 당 수신량 증가율이 1보다 조금 더 큰 값을 갖게 된다. 따라서, 상기 계산식을 따르게 되면 TCP ACK의 압축률/지연율은 TCP 연결 중 Slow Start 에서는 1의 값을 갖게 되어 TCP ACK의 응답이 즉각적이게 되며, Congestion Avoidance 상태에서는 cwnd 크기가 커짐에 따라 TCP ACK의 압축률/지연율이 높아지게 된다.
도 7는 단위시간 당 데이터 패킷이 수신되는 예시를 도시한 도면이다.
도 7a는 TCP 연결이 Slow Start 상태에 있을 때의 데이터 수신 양상을 도시한다.
도 7a를 참고하면, t1 시점에서의 데이터 수신량은 3이며, t1 시점부터 t2 시점에서의 데이터 수신량은 12이다. 따라서, t2 시점에서의 수신량 증가율은 12/3 = 4 이며, 그에 따라 ACK 지연율/압축률은 1/ {MIN(2,4)-1} = 1 로 계산될 수 있다. 즉, TCP 연결의 상태가 slow start인 경우, ACK 지연률/압출률은 1로 결정되어, TCP DATA가 전송될 때마다 TCP ACK이 전송될 수 있다.
도 7b는 TCP 연결이 Congestion Avoidance 상태에 있을 때의 데이터 수신 양상을 도시한다. 도 7b를 참고하면, ti -1 시점에서의 데이터 수신량은 50이며, ti -1 시점부터 ti 시점에서의 데이터 수신량은 51이다. 따라서, ti 시점에서의 단위시간당 수신량 증가율은 51/50 = 1.02 이며, 그에 따라 ACK 지연율/압축률은 1 / {MIN(2,1.02)-1} = 50 로 계산될 수 있다. 즉, 이는 50개의 TCP DATA에 대해 하나의 TCP ACK을 전송하는 것을 의미하며, TCP 송신부의 상태가 Congestion avoidance 상태에서는 TCP ACK의 전송 빈도를 조절하여 TCP 프로토콜의 오버헤드를 감소시킬 수 있다.
도 7c는 패킷 손실 등의 이벤트에 의해 서버 측의 cwnd 가 감소하였을 때의 데이터 수신 양상을 도시한다. 도 7b를 참고하면, tj -1 시점부터 tj 시점에서의 데이터 수신량은 50이며, tj 시점부터 tj +1 시점에서의 데이터 수신량은 4이다. 따라서, tj+1 시점에서의 단위시간당 수신량 증가율은 4/50 = 0.08 이며, 그에 따라 ACK 지연율/압축률 := 1 로 계산될 수 있다.
즉, 데이터의 수신 양이 급격하게 감소하는 경우, 패킷 손실 등의 이벤트에 의해 재전송을 위한 상태 (fast recovery)일 수 있으며, 재전송이 빠를수록 fast recovery 상태가 빨리 종료되어 성능 향상을 가져올 수 있다. 따라서, 빠르게 TCP ACK의 응답을 전송하기 위해 ACK 지연률/압출률은 1로 결정되어, TCP DATA가 전송될 때마다 TCP ACK이 전송될 수 있다.
도 8은 플로우별 최적 ACK 전송 빈도를 결정하는 다른 방법을 도시한 도면이다.
본 발명의 통신 장치는 S810 단계에서 서버 측에 ACK을 송신 할 때 3개의 중복 ACK (DUPACK)이 송신 되었는지를 판단한다. 만약, 3개의 DUPACK이 송신될 경우 상대 TCP 서버는 3개의 DUPACK을 수신한 후 Fast Retransmit 및 Fast Recovery 를 수행하게 되므로 TCP ACK의 응답이 빠를수록 Fast Recovery 가 빨리 종료되어 성능 향상을 가져올 수 있다.
따라서, 3개의 DUPACK을 송신한 경우, 통신 장치는 S820 단계에서 현재의 ACK 전송 빈도 (ACK 압축률/지연율)을 기록할 수 있다. 또한 TCP SACK (selective ACK) 옵션을 사용하고 있고 SACK 정보가 응답된 적이 있다면, 통신 장치는 SACK 으로 응답한 가장 큰 일련번호인 HighSACK을 기록한다.
이 후, 통신 장치는 S830 단계에서 ACK 압축률을 1로 결정할 수 있다. 즉, 통신 장치는 TCP DATA가 전송될 때마다 TCP ACK이 전송되도록 ACK 전송 빈도를 설정할 수 있다.
다만, 3개의 DUPACK을 전송한 경우가 아니라 할지라도 미리 정해진 조건을 만족하는 경우에는 TCP 서버 측에서 SACK 정보를 토대로 Fast Retransmit / Recovery 에 진입하는 경우가 있다.
이 때, 미리 정해진 조건은 하기와 같다.
첫째, 지금까지 보낸 ACK 번호 중 가장 큰 번호를 뜻하는 HighACK에 1을 더한 번호보다 더 큰 번호의 SACK을 비연속적으로 3개를 보낸 경우에 fast retransmit/recovery에 진입할 수 있다.
둘째, 일련번호가 HighACK + 1 보다 큰 2 * SMSS 를 넘는 바이트가 SACK으로 응답된 경우 TCP 연결은 fast retransmit/recovery에 진입할 수 있다.
따라서, 통신 장치는 3개의 DUPACK을 전송한 경우가 아니라도, 미리 정해진 조건을 만족하는 경우에는 현재의 ACK 압축률을 기록한 뒤, ACK 압축률을 1로 결정할 수 있다.
구체적으로, 통신 장치는 S840 단계에서 HighACK에 1을 더한 번호보다 더 큰 번호의 ACK을 비연속적으로 3개 보냈는지 여부를 판단할 수 있다. HighACK에 1을 더한 번호보다 더 큰 번호의 ACK을 비연속적으로 3개 보낸 경우, 통신 장치는 S820 단계 및 S830 단계로 돌아가 3 DUPACK을 송신한 것과 마찬가지로 ACK 압축률 등을 기록 후, ACK 압축률을 1로 결정할 수 있다.
또한, HighACK에 1을 더한 번호보다 더 큰 번호의 ACK을 비연속적으로 3개 보내지 않은 경우, 통신 장치는 S850 단계에서 일련번호가 HighACK + 1 보다 큰 2 * SMSS 를 넘는 바이트가 SACK으로 응답되었는지 여부를 판단할 수 있다.
일련번호가 HighACK + 1 보다 큰 2 * SMSS 를 넘는 바이트가 SACK으로 응답된 경우, 통신 장치는 S820 단계 및 S830 단계로 돌아가 3 DUPACK을 송신한 것과 마찬가지로 ACK 압축률 등을 기록 후, ACK 압축률을 1로 결정할 수 있다.
이 때, S840 단계와 S850 단계를 판단하는 순서는 변경될 수 있다.
또는, 손실된 데이터를 감지한 뒤 미리 정해진 시간 (T2)가 경과된 경우에는 TCP 송신부에서 RTO가 발생할 수 있다. 이 때, 미리 정해진 시간 (T2)는 RTO 수준의 시간을 의미하는 것으로 예를 들어, RTT + 4mdev의 시간을 의미할 수 있다.
이와 같이, 손실된 데이터를 감지한 뒤, 미리 정해진 시간이 경과되면, TCP 프록시가 ACK을 빠르게 전송해야 cwnd가 빠르게 증가하므로, 통신 장치는 ACK 압축률을 1로 설정할 수 있다.
도 9는 플로우 별 최적 ACK 전송 빈도를 결정하는 또 다른 방법을 도시한 도면이다.
이 처리 흐름의 목적은 Fast recovery 단계의 TCP 송신부가 Fast recovery를 종료하게 되는 이벤트를 감지하여 본 발명의 통신 장치가 다시 압축률을 높일 수 있도록 하는 것이다.
이와 같이 Fast recovery가 종료되는 조건은 예를 들어, SACK이 사용되지 않고 ACK을 송신한 경우, 또는 SACK이 사용되고 ACK의 번호가 기록된 HighSACK의 번호보다 크거나 같은 경우를 포함할 수 있다. 구체적인 판단 과정은 하기와 같다.
본 처리 흐름은 통신 장치가 DUPACK 이 아닌 ACK(non-dupack)을 전송하는 경우에 개시된다.
본 발명의 통신 장치는 S910 단계에서 ACK (non-dupack)을 전송할 수 있다. 이와 같이, ACK을 전송하는 경우, 통신 장치는 TCP 송신부의 Fast recovery 상태가 종료되고 혼잡 회피 상태로 진입할 것을 예측할 수 있다.
따라서, 통신 장치는 S920 단계에서 TCP 연결이 SACK 옵션을 사용 중인지를 확인할 수 있다. 만약, SACK 옵션을 사용 중이지 않은 경우에는 통신 장치는 TCP 송신부가 non-dupack을 수신 후 바로 fast recovery 를 종료할 것으로 예측할 수 있다.
따라서, 통신 장치는 ACK 압축률을 이전에 기록해둔 ACK 압축률로 복원하는 것으로 결정할 수 있다. 또는, ACK 전송 빈도를 이전에 기록해둔 ACK 전송 빈도로 복원할 수 있다. 혹은 ACK 압축률을 이전에 기록한 ACK 압축률의 상수배 (예: 0.7) 로 결정할 수 있다. 이 때, 통신 장치는 현재 압축률이 1인지 여부를 확인하는 과정을 수행할 수 있으며, 압축률이 1인 경우 ACK 압축률을 이전에 기록해둔 ACK 압축률로 복원할 수 있다.
만약, SACK 옵션을 사용하고 있는 경우에는 통신 장치는 S930 단계에서 Non-DUPACK의 ACK 번호가 SACK 으로 응답한 가장 큰 일련번호인 HighSACK보다 크거나 같은지를 확인할 수 있다.
만약, Non-DUPACK의 ACK 번호가 HighSACK보다 크거나 같은 경우, 통신 장치는 S940 단계에서 ACK 압축률을 이전에 기록해둔 ACK 압축률로 복원하는 것으로 결정할 수 있다. 혹은 ACK 압축률을 이전에 기록한 ACK 압축률의 상수배 (예: 0.7) 로 결정할 수 있다.
도 10은 플로우 별 최적 ACK 전송 빈도를 결정하는 또 다른 방법을 도시한 도면이다. 본 방법은 도 3에서 설명한 구조에서만 사용될 수 있다.
본 실시 예에서는 단말과 서버 간의 TCP 연결이 단말-프록시, 프록시-서버의 두 TCP 연결로 분리되어있다. 만약, 예를 들어, 단말-프록시 연결의 대역폭이 작고, 프록시-서버 연결의 대역폭은 커서 프록시 큐에 점차 많은 데이터가 쌓이게 되면 프록시는 서버로부터 빨리 데이터를 더 받아야할 필요가 적어지므로 더 많은 TCP ACK을 지연시킬 수 있다.
따라서, 통신 장치는 S1010 단계에서 데이터를 수신할 수 있다. 그리고, 통신 장치는 S1020 단계에서 단위시간 (T1)이 경과했는지 여부를 확인할 수 있다.
단위시간 (T1)이 경과한 경우, 통신 장치는 단위시간 (T1)마다 프록시의 큐 길이 증가율을 계산할 수 있다.
그리고, 통신 장치는 S1030 단계에서 큐 길이의 증가율이 미리 설정된 임계 값 Tmax보다 큰지 여부를 확인할 수 있다.
만약, 증가율이 미리 설정된 임계값 Tmax보다 큰 경우에는 통신 장치는 S1040 단계에서 ACK 압축률을 증가시킬 수 있다. 이 때, 통신 장치는 미리 설정된 규칙으로 ACK 압축률을 증가시킬 수 있으며, 예를 들어, ACK 압축률을 현재값보다 10% 증가시킬 수 있다.
만약, 증가율이 미리 설정된 임계값 Tmax보다 작은 경우, 통신 장치는 S1050 단계에서 큐 길이의 증가율이 미리 설정된 임계값 Tmin보다 작은지 여부를 확인할 수 있다.
만약 증가율이 미리 설정된 임계값 Tmin 보다 작은 경우에는 통신 장치는 S1060 단계에서 ACK 압축률을 감소시킬 수 있다. 이 때, 통신 장치는 미리 설정된 규칙으로 ACK 압축률을 감소시킬 수 있으며, 예를 들어 ACK 압축률을 현재값보다 20% 감소시킬 수 있다.
반면, 큐 길이의 증가율이 미리 설정된 Tmin 보다 큰 경우, 통신 장치는 S1070 단계에서 ACK 압축률을 유지시킬 수 있다.
본 발명에서는 증가율을 사용하였으나, 증가율이 아닌 큐 길이의 절대값 등 큐 길이와 연관된 다른 메트릭으로 쉽게 변형이 가능하다.
도 11 은 TCP 플로우가 복수 개인 경우에는 플로우를 결정하는 방법을 도시한 도면이다.
본 실시예의 목적은 복수 개의 플로우 중 일부의 TCP ACK 지연율 혹은 압축률을 상향하여도 충분할 수 있으므로, 여러가지 조건을 고려하여 우선순위를 부여하고 우선순위가 가장 낮은 플로우를 ACK 전송 빈도를 조절할 플로우로 결정하는 방법을 제공하는 것이다.
본 도면에 따르면, 통신 장치는 처리 중인 모든 플로우에 대하여 일련의 조건에 해당하는 것이 있는지를 확인하고 해당이 있는 경우 해당 플로우의 우선순위를 상향할 수 있다. 우선순위의 상향은 우선순위 기본값이 일정값을 더하거나 곱해주는 것일 수 있다. 우선순위를 상향할 수 있는 조건은 다음과 같다.
통신 장치는 S1110 단계에서 TCP 송신부가 Slow Start 혹은 Fast Recovery 상태에 있는지 여부를 확인할 수 있다. TCP 송신부가 Slow Start 혹은 Fast Recovery 상태에 있는 것으로 추정되는 경우 통신 장치는 S1120 단계에서 플로우의 우선 순위를 상향할 수 있다. 이 때, TCP 송신부가 Slow Sart 혹은 Fast Recovery 상태에 있는지 여부를 확인하는 방법은 도 6 내지 도 9에서 설명한 바와 동일하며, 이하에서는 생략한다.
또한, 통신 장치는 S1130 단계에서 측정된 RTT가 미리 설정된 목표 RTT 보다 큰지 여부를 확인할 수 있다. 측정된 RTT가 미리 설정된 목표 RTT보다 큰 경우 통신 장치는 S1140 단계에서 플로우의 우선 순위를 상향할 수 있다.
또한, 통신 장치는 S1150 단계에서 플로우를 이용해 송수신 중인 앱이 foreground에 있는지 여부를 확인할 수 있다. 플로우를 이용해 송수신 중인 앱이 foreground에 있는 경우, 통신 장치는 S1160 단계에서 플로우의 우선 순위를 상향할 수 있다.
또한, 통신 장치는 S1170 단계에서 플로우를 이용해 송수신 중인 앱이 비디오 앱이며 이 앱이 비디오의 초기 재생 상태에 있는지 여부를 확인할 수 있다. 플로우를 이용해 송수신 중인 앱이 비디오 앱이며 이 앱이 비디오의 초기 재생 상태에 있는 경우, 통신 장치는 S1180 단계에서 플로우의 우선 순위를 상향할 수 있다.
그리고, 통신 장치는 S1190 단계에서 모든 플로우에 대해 우선 순위 계산이 완료되었는지 여부를 확인할 수 있다.
장치에서 처리 중인 모든 플로우에 대하여 상기 조건에 대한 확인 및 우선순위 값 갱신이 완료되면, 통신 장치는 S1195 단계에서 우선순위가 가장 낮은 플로우를 선택할 수 있다.
도 12는 본 발명에 따른 통신 장치의 구조를 도시한 도면이다.
상술한 바와 같이, 통신 장치는 단말, 프록시 장치, 프록시 인핸서 등을 포함할 수 있다.
도 12를 참고하면, 통신 장치는 송수신부 (1210), 제어부 (1220), 저장부 (1230)을 포함할 수 있다. 본 발명에서 제어부는, 회로 또는 어플리케이션 특정 통합 회로 또는 적어도 하나의 프로세서라고 정의될 수 있다.
송수신부 (1210)는 다른 네트워크 엔티티와 신호를 송수신할 수 있다. 송수신부(1210)는 예를 들어, 서버로부터 데이터를 수신하고, 단말로부터 수신되거나 생성된 ACK을 서버에 전송할 수 있다.
제어부 (1220)은 본 발명에서 제안하는 실시예에 따른 통신 장치의 전반적인 동작을 제어할 수 있다. 예를 들어, 제어부 (1220)는 상기에서 기술한 순서도에 따른 동작을 수행하도록 각 블록 간 신호 흐름을 제어할 수 있다.
구체적으로, 제어부 (1220)는 플로우 별로 ACK 전송 빈도를 결정할 수 있다. 제어부 (1220)는 TCP 송신부의 상태에 기반하여 최적의 ACK 전송 빈도를 결정할 수 있으며, 즉, 제어부 (1220)는 플로우 별로 최적의 TCP ACK 압축률을 결정하고, 이를 각 플로우에 적용할 수 있다.
그리고, 제어부 (1220)는 상향링크 자원이 부족한지 여부를 확인할 수 있다. 이 때, 상향링크 자원에 대한 정보는 하위 계층 (예를 들어, 모뎀, CP 등)으로부터 알려질 수 있다.
제어부 (1220)는 상기 수신된 상향링크 자원에 대한 정보에 기반하여 상향링크 자원이 부족한지 여부를 확인할 수 있다. 상향링크 자원이 부족하지 않은 경우, 제어부 (1220)는 별도로 ACK 전송 빈도를 조절할 필요가 없으며, 기존에 적용된 전송 빈도에 따라 ACK을 전송할 수 있다. 다만, 플로우 별로 TCP 송신부의 상태 등이 변경되는 경우, 제어부 (1220)는 TCP 송신부의 상태에 기반하여 TCP 전송 빈도를 변경할 수 있다.
한편, 상향링크 자원이 부족한 경우, 제어부 (1220)는 ACK 전송 빈도를 조절할 플로우를 결정할 수 있다. 통신 장치는 플로우 간의 우선 순위에 기반하여 플로우를 결정할 수 있다. 이에 대한 구체적인 내용은 상술한 바와 동일하다.
그리고, 제어부 (1220)는 선택된 플로우의 ACK 전송 빈도를 조절할 수 있다. 이 때, 제어부 (1220)는 TCP 송신부의 상태에 기반하여 플로우의 ACK 전송 빈도를 조절할 수 있다. 예를 들어, 선택된 플로우의 TCP 송신부 상태가 혼잡 회피 상태인 경우와 빠른 재전송 상태인 경우에 전송 빈도를 다르게 조절할 수 있다.
이와 같이, 본 발명은 가변적으로 ACK의 전송 빈도를 조절함으로써 처리량을 감소시키지 않고, 시스템의 성능을 향상시킬 수 있다.
또한, 이외에도 제어부 (1220)는 본 발명에서 제안하는 프록시 장치의 전반적인 동작을 제어할 수 있으며, 구체적인 내용은 생략한다.
저장부(1230)는 상기 송수신부 (1210)를 통해 송수신되는 정보 및 제어부 (1220)을 통해 생성되는 정보 중 적어도 하나를 저장할 수 있다. 예를 들어, 저장부 (1230)는 수신된 상향링크 자원에 대한 정보를 저장할 수 있다. 또한, 저장부 (1230)는 현재의 압축률과 HighSACK의 번호 등을 저장할 수 있다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (16)

  1. 통신 장치의 방법에 있어서,
    전송 제어 프로토콜 (transmission control protocol: TCP) 송신부의 상태에 기반하여 플로우 별로 ACK 전송 빈도를 결정하는 단계;
    상향링크 자원이 부족한지 여부를 확인하는 단계;
    상기 상향링크 자원이 부족한 경우, 상기 ACK 전송 빈도를 조절할 플로우를 선택하는 단계; 및
    상기 선택된 플로우의 상기 ACK 전송 빈도를 조절하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 플로우 별로 상기 ACK 전송 빈도를 결정하는 단계는,
    단위 시간 당 데이터 수신량의 증가율을 확인하는 단계; 및
    상기 데이터 수신량의 증가율에 기반하여 상기 플로우 별로 상기 ACK 전송 빈도를 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 ACK 전송 빈도는,
    상기 데이터 수신량의 증가율이 1보다 작은 경우, 데이터의 전송 빈도와 동일하게 설정되며,
    상기 데이터의 수신량의 증가율이 1보다 큰 경우, 미리 설정된 규칙에 기반하여 결정되는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 플로우 별로 상기 ACK 전송 빈도를 결정하는 단계는,
    빠른 재전송 (fast retransmit)을 수행하기 위한 조건이 만족되는 경우, 데이터의 전송 빈도와 동일한 상기 ACK 전송 빈도를 결정하는 단계를 포함하는 것을 특징으로 하며,
    상기 빠른 재전송을 수행하기 위한 조건은 중복 ACK이 3회 이상 발생하는 경우, 가장 큰 ACK 번호인 HighACK에 1을 더한 번호보다 더 큰 번호의 SACK을 비연속적으로 3개를 보낸 경우, 상기 HighACK에 1을 더한 번호보다 더 큰 2 * SMSS 를 넘는 바이트가 SACK으로 응답된 경우 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 플로우 별로 상기 ACK 전송 빈도를 결정하는 단계는,
    상기 빠른 재전송이 완료되기 위한 조건이 만족되는 경우, 저장된 ACK 전송 빈도를 이용하여 상기 ACK 전송 빈도를 결정하는 단계를 포함하며,
    상기 빠른 재전송이 완료되기 위한 조건은,
    SACK이 사용되지 않고 ACK을 송신한 경우, 또는 ACK이 사용되고, ACK의 번호가 저장된 HighSACK의 번호보다 크거나 같은 경우를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 선택 단계는,
    각 플로우의 우선 순위에 기반하여 상기 ACK 전송 빈도를 조절할 플로우를 선택하는 단계를 포함하며,
    상기 우선 순위는 상기 TCP 송신부의 상태, 측정된 RTT, 앱이 초기 비디오 재생 중인지, 앱이 foreground에서 동작하는지 여부 중 적어도 하나에 기반하여 결정되는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 통신 장치는 단말 또는 프록시 장치를 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 ACK 전송 빈도를 조절 단계는,
    상기 TCP 송신부의 상태에 기반하여 상기 ACK 전송 빈도를 조절하는 단계를 포함하며,
    상기 상향링크 자원이 부족한지 여부를 확인하는 단계는,
    상향링크 자원에 대한 정보를 수신하는 단계; 및
    상기 정보에 기반하여 상기 상향링크 자원이 부족한지 여부를 확인하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 통신 장치에 있어서,
    신호를 송수신하는 송수신부; 및
    TCP 송신부의 상태에 기반하여 플로우 별로 ACK 전송 빈도를 결정하고,
    상향링크 자원이 부족한지 여부를 확인하고,
    상기 상향링크 자원이 부족한 경우, 상기 ACK 전송 빈도를 조절할 플로우를 선택하고,
    상기 선택된 플로우의 상기 ACK 전송 빈도를 조절하는 제어부를 포함하는 것을 특징으로 하는 통신 장치.
  10. 제9항에 있어서,
    상기 제어부는,
    단위 시간 당 데이터 수신량의 증가율을 확인하고, 상기 데이터 수신량의 증가율에 기반하여 상기 플로우 별로 상기 ACK 전송 빈도를 결정하는 것을 특징으로 하는 통신 장치.
  11. 제10항에 있어서,
    상기 ACK 전송 빈도는,
    상기 데이터 수신량의 증가율이 1보다 작은 경우, 데이터의 전송 빈도와 동일하게 설정되며,
    상기 데이터의 수신량의 증가율이 1보다 큰 경우, 미리 설정된 규칙에 기반하여 결정되는 것을 특징으로 하는 통신 장치.
  12. 제9항에 있어서,
    상기 제어부는,
    빠른 재전송 (fast retransmit)을 수행하기 위한 조건이 만족되는 경우, 데이터의 전송 빈도와 동일한 상기 ACK 전송 빈도를 결정하는 것을 특징으로 하며,
    상기 빠른 재전송을 수행하기 위한 조건은 중복 ACK이 3회 이상 발생하는 경우, 가장 큰 ACK 번호인 HighACK에 1을 더한 번호보다 더 큰 번호의 SACK을 비연속적으로 3개를 보낸 경우, 상기 HighACK에 1을 더한 번호보다 더 큰 2 * SMSS 를 넘는 바이트가 SACK으로 응답된 경우 중 적어도 하나를 포함하는 것을 특징으로 하는 통신 장치.
  13. 제12항에 있어서,
    상기 제어부는,
    상기 빠른 재전송이 완료되기 위한 조건이 만족되는 경우, 저장된 ACK 전송 빈도를 이용하여 상기 ACK 전송 빈도를 결정하며,
    상기 빠른 재전송이 완료되기 위한 조건은,
    SACK이 사용되지 않고 ACK을 송신한 경우, 또는 ACK이 사용되고, ACK의 번호가 저장된 HighSACK의 번호보다 크거나 같은 경우를 포함하는 것을 특징으로 하는 통신 장치.
  14. 제9항에 있어서,
    상기 제어부는,
    각 플로우의 우선 순위에 기반하여 상기 ACK 전송 빈도를 조절할 플로우를 선택하며,
    상기 우선 순위는 상기 TCP 송신부의 상태, 측정된 RTT, 앱이 초기 비디오 재생 중인지, 앱이 foreground에서 동작하는지 여부 중 적어도 하나에 기반하여 결정되는 것을 특징으로 하는 통신 장치.
  15. 제9항에 있어서,
    상기 통신 장치는 단말 또는 프록시 장치를 포함하는 것을 특징으로 하는 통신 장치.
  16. 제9항에 있어서,
    상기 제어부는,
    상기 TCP 송신부의 상태에 기반하여 상기 ACK 전송 빈도를 조절하고, 상향링크 자원에 대한 정보를 수신하며, 상기 정보에 기반하여 상기 상향링크 자원이 부족한지 여부를 확인하는 것을 특징으로 하는 통신 장치.
KR1020170076737A 2017-06-16 2017-06-16 통신 시스템에서 tcp ack 전송 방법 및 장치 KR102356912B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170076737A KR102356912B1 (ko) 2017-06-16 2017-06-16 통신 시스템에서 tcp ack 전송 방법 및 장치
US16/009,872 US10645609B2 (en) 2017-06-16 2018-06-15 Method and apparatus for transmitting TCP ACK in communication system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170076737A KR102356912B1 (ko) 2017-06-16 2017-06-16 통신 시스템에서 tcp ack 전송 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180137281A true KR20180137281A (ko) 2018-12-27
KR102356912B1 KR102356912B1 (ko) 2022-01-28

Family

ID=64657819

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170076737A KR102356912B1 (ko) 2017-06-16 2017-06-16 통신 시스템에서 tcp ack 전송 방법 및 장치

Country Status (2)

Country Link
US (1) US10645609B2 (ko)
KR (1) KR102356912B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180368021A1 (en) * 2017-06-16 2018-12-20 Samsung Electronics Co., Ltd. Method and apparatus for transmitting tcp ack in communication system

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11012540B2 (en) * 2019-07-29 2021-05-18 International Business Machines Corporation Dynamic retransmission timeout values
CN115801199A (zh) * 2019-10-28 2023-03-14 华为技术有限公司 一种确认报文的处理方法和通信装置以及存储介质
JP7286513B2 (ja) * 2019-11-18 2023-06-05 キヤノン株式会社 通信装置、通信装置の制御方法、及びプログラム
CN113285914B (zh) * 2021-03-29 2022-10-28 上海大学 一种基于fpga的tcp协议高效数据确认的通信传输方法
CN116261226B (zh) * 2023-05-15 2023-09-29 上海星思半导体有限责任公司 上行信道资源配置及确定方法、网络侧设备及终端设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1052797A2 (en) * 1999-05-08 2000-11-15 Kent Ridge Digital Labs Dynamically delayed acknowledgement transmission system

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5793768A (en) * 1996-08-13 1998-08-11 At&T Corp Method and apparatus for collapsing TCP ACKs on asymmetrical connections
US6038606A (en) * 1997-11-25 2000-03-14 International Business Machines Corp. Method and apparatus for scheduling packet acknowledgements
FI110563B (fi) * 2000-06-20 2003-02-14 Nokia Corp Resurssien varaus pakettimuotoisessa tiedonsiirrossa
US8842642B2 (en) * 2000-10-19 2014-09-23 Ipr Licensing, Inc. Transmitting acknowledgement messages using a staggered uplink time slot
US6961309B2 (en) * 2001-04-25 2005-11-01 International Business Machines Corporation Adaptive TCP delayed acknowledgment
KR100460958B1 (ko) * 2002-12-04 2004-12-09 삼성전자주식회사 비대칭 네트워크 환경에서의 tcp의 데이터 전송효율을향상시킬 수 있는 통신시스템 및 그 방법
US7225266B2 (en) * 2002-12-20 2007-05-29 Nokia Corporation Adaptive delayed ACK switching for TCP applications
WO2005112296A2 (en) * 2004-04-29 2005-11-24 Interdigital Technology Corporation Wireless communication method and system for configuring radio access bearers for enhanced uplink services
US7433314B2 (en) * 2004-06-01 2008-10-07 Samsung Electronics Co., Ltd. Method and system for acknowledging the receipt of a transmitted data stream in a wireless personal area network
US8661322B2 (en) * 2004-12-22 2014-02-25 Qualcomm Incorporated Apparatus and method for selective response to incremental redundancy transmissions
US8310921B2 (en) * 2008-09-04 2012-11-13 Lg Electronics Inc. Method of random access in a wireless system
JP5387058B2 (ja) * 2009-03-04 2014-01-15 日本電気株式会社 送信装置、送信レート算出方法及び送信レート算出プログラム
US8730799B2 (en) * 2010-03-03 2014-05-20 Akamai Technologies, Inc. Dynamic adjustment of receive window utilized by a transmitting device
US9444749B2 (en) * 2011-10-28 2016-09-13 Telecom Italia S.P.A. Apparatus and method for selectively delaying network data flows
KR20130074828A (ko) * 2011-12-23 2013-07-05 삼성전자주식회사 프록시 서버에 의한 데이터 흐름 제어 방법 및 장치
WO2013123979A1 (en) * 2012-02-21 2013-08-29 Telefonaktiebolaget L M Ericsson (Publ) Data block transmission with variable retransmission feedback time
WO2013123977A1 (en) * 2012-02-21 2013-08-29 Telefonaktiebolaget L M Ericsson (Publ) Retransmission protocol feedback handling with multiple feedback times
US9386128B2 (en) 2012-03-23 2016-07-05 Qualcomm Incorporated Delay based active queue management for uplink traffic in user equipment
CN102790913B (zh) * 2012-07-03 2016-11-16 深圳市时代经纬科技有限公司 一种基于3g网络音视频传输方法
US20140226571A1 (en) * 2013-02-13 2014-08-14 Qualcomm Incorporated Apparatus and method for enhanced application coexistence on an access terminal in a wireless communication system
US9351183B2 (en) * 2013-02-26 2016-05-24 Google Technology Holdings LLC Apparatus and method for measuring and using congestion in a wireless communication system
CN105264843B (zh) * 2013-06-07 2020-06-05 苹果公司 在通信设备中管理待发送的确认数据包
CN105846948B (zh) * 2015-01-13 2020-04-28 中兴通讯股份有限公司 一种实现harq-ack检测的方法及装置
US9980156B2 (en) 2015-07-17 2018-05-22 Altiostar Networks, Inc. Optimization of downlink throughput
US10601721B2 (en) * 2015-10-29 2020-03-24 Altiostar Networks, Inc. Maintenance of downlink throughput
US20180092115A1 (en) * 2016-09-29 2018-03-29 Qualcomm Incorporated Reliable wi-fi packet delivery using delayed/scheduled block acknowledgment mechanism
US10587385B2 (en) * 2017-06-15 2020-03-10 Qualcomm Incorporated Techniques and apparatuses for acknowledgement (ACK) / negative acknowledgement (NACK) signaling using a reference signal
KR102356912B1 (ko) * 2017-06-16 2022-01-28 삼성전자 주식회사 통신 시스템에서 tcp ack 전송 방법 및 장치
US10278227B2 (en) * 2017-09-01 2019-04-30 Google Llc Downlink-only fifth generation new radio
US10440604B2 (en) * 2018-01-11 2019-10-08 Intel Corporation Uplink congestion mitigation
US10939470B2 (en) * 2018-02-07 2021-03-02 Qualcomm Incorporated Collision avoidance for scheduling requests and uplink control information
US11265852B2 (en) * 2018-02-09 2022-03-01 Qualcomm Incorporated Uplink control information reporting
US11153218B2 (en) * 2018-03-22 2021-10-19 Qualcomm Incorporated Transmission control protocol acknowledgement management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1052797A2 (en) * 1999-05-08 2000-11-15 Kent Ridge Digital Labs Dynamically delayed acknowledgement transmission system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180368021A1 (en) * 2017-06-16 2018-12-20 Samsung Electronics Co., Ltd. Method and apparatus for transmitting tcp ack in communication system
US10645609B2 (en) * 2017-06-16 2020-05-05 Samsung Electronics Co., Ltd. Method and apparatus for transmitting TCP ACK in communication system

Also Published As

Publication number Publication date
KR102356912B1 (ko) 2022-01-28
US20180368021A1 (en) 2018-12-20
US10645609B2 (en) 2020-05-05

Similar Documents

Publication Publication Date Title
KR102356912B1 (ko) 통신 시스템에서 tcp ack 전송 방법 및 장치
US10693800B2 (en) TCP proxy device-assisted communication method and apparatus in wireless communication
EP3595219B1 (en) Method of multi-link retransmission under multiple connections, base station and storage medium
KR20170067830A (ko) 링크 상태, 트래픽 유형 및/또는 우선 순위에 대한 통신 파라미터 적응
KR100750170B1 (ko) 통신 네트워크에서 데이터 프레임을 효율적으로 전송하는방법 및 장치
KR100600607B1 (ko) 무선 휴대 인터넷 시스템에서 arq 제어 장치 및 제어방법
JP6643542B2 (ja) データパケットの送信方法、受信方法、送信装置及び受信装置
US20190007324A1 (en) Threshold for reduced latency mechanisms
WO2018082595A1 (zh) 数据传输方法、装置及基站
CN111954262B (zh) 无线通信系统中用于控制分组传输以减少时延的方法和装置
EP3641389B1 (en) Terminal and base station in wireless communication system, and communication method thereof
KR20150030517A (ko) 무선 네트워크 환경에서 데이터를 전송하는 방법 및 데이터 전송 장치
CN107534890A (zh) 适应性tti调整的方法
KR101485017B1 (ko) 데이터 송신을 위해 상이한 주파수 대역들을 사용하는 라디오 링크들 간의 끊김 없는 전이들을 위한 방법 및 장치
JP7166356B2 (ja) アップリンク制御情報の伝送方法及び装置
US11502986B2 (en) Reducing transmission delay of transmitting data in Wi-Fi
CN110637446B (zh) 无线通信中tcp代理设备辅助的通信方法和装置
CN114285800A (zh) 一种tcp数据流的拥塞调整方法及装置
JP2023524345A (ja) ネットワークコーディング動作の中断及び再開をシグナリングする方法及び装置
WO2020154872A1 (zh) 一种传输控制协议加速方法和装置
WO2020101807A2 (en) Methods and apparatus aggregating multiple wireless communications channels for flexible full-duplex communications
WO2018028638A1 (zh) 一种信息传输方法、装置、系统、相关设备和存储介质
CN113141631B (zh) 双连接数据分流方法、装置、设备及存储介质
KR102061035B1 (ko) 업링크 데이터 전송에서 즉각적인 ack를 사용하는 클라우드 기반 와이파이 네트워크 시스템
WO2022193225A1 (zh) 一种突发监测的方法和装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant