KR102352428B1 - 단말 및 그 통신 방법 - Google Patents

단말 및 그 통신 방법 Download PDF

Info

Publication number
KR102352428B1
KR102352428B1 KR1020170058016A KR20170058016A KR102352428B1 KR 102352428 B1 KR102352428 B1 KR 102352428B1 KR 1020170058016 A KR1020170058016 A KR 1020170058016A KR 20170058016 A KR20170058016 A KR 20170058016A KR 102352428 B1 KR102352428 B1 KR 102352428B1
Authority
KR
South Korea
Prior art keywords
segments
ack
data
segment
received
Prior art date
Application number
KR1020170058016A
Other languages
English (en)
Other versions
KR20170126808A (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 삼성전자 주식회사
Publication of KR20170126808A publication Critical patent/KR20170126808A/ko
Application granted granted Critical
Publication of KR102352428B1 publication Critical patent/KR102352428B1/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/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
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0829Packet loss
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0858One way delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • 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/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • 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]
    • 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/37Slow start
    • 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]
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 TCP를 사용하는 단말 및 그 통신 방법에 관한 것으로, 본 발명의 일 실시 예에 따른 단말의 통신 방법은, 송신 장치로부터 적어도 하나의 데이터 세그먼트를 수신하는 단계; 상기 송신 장치에게 상기 적어도 하나의 데이터 세그먼트에 대응하는 적어도 하나의 긍정 응답(ACK: acknowledgement) 세그먼트를 전송하는 단계; 및 미리 설정된 시점에, 수신 예정인 데이터 세그먼트에 대응하는 미리 설정된 개수의 옵티미스틱(optimistic) ACK 세그먼트를 상기 송신 장치에게 전송하는 단계를 포함할 수 있다.

Description

단말 및 그 통신 방법{USER EQUIPMENT AND COMMUNICATION METHOD OF THE SAME}
본 발명은 전송 제어 프로토콜(TCP: transmission control protocol)을 사용하는 단말 및 그 통신 방법에 관한 것이다.
전송 제어 프로토콜(TCP: transmission control protocol)은 느린 시작(slow start) 알고리즘이라는 매우 보수적인 초기 전송률 결정 방식을 사용할 수 있다. 그리고, TCP 프로토콜의 전송률은 매 왕복 시간(RTT: round trip time) 마다 보낼 수 있는 세그먼트 수를 의미하는 혼잡 윈도우(cwnd: congestion window)에 의하여 표현될 수 있다. slow start 알고리즘에서는 적절한 전송률을 탐색하기 위하여, 최초에 아주 작은 cwnd(예를 들면, 4KB 미만, RFC3390)에서 시작하여 매 RTT마다 cwnd를 두 배씩 증가시키는 방식을 사용할 수 있다. 그리고, 이 단계를 slow start 단계, slow start 상태, 또는 slow start 구간이라고 할 수 있다. 따라서, 만약 현재 네트워크 경로 상 적정 cwnd가 N 이라고 할 때, slow start 알고리즘에 의해 적정 cwnd에 도달하기 위해서는
Figure 112017044303264-pat00001
번의 RTT가 필요할 수 있다. 이를 달리 표현하면 근사적으로 약 2N 개의 데이터 세그먼트를 전달할 때까지는 적정 cwnd에 도달하지 못함을 의미할 수 있다. 그리고, 현재 cwnd가 적정 cwnd 상태에 도달한 경우 이를 혼잡 회피(congestion avoidance) 단계 또는 혼잡 회피 상태라고 할 수 있다.
한편, 여러 인터넷 측정 연구에 의하면 현재 인터넷의 트래픽(traffic) 중 약 99%는 플로우(flow)의 전체 크기가 100KB 미만이고, 전체 웹 오브젝트의 약 95% 이상은 90KB 미만일 수 있다. 이는 대부분의 TCP 플로우는 전체 전송이 끝날 때까지 최적 cwnd에 도달하지 못한 slow start 상태에 머물게 됨을 의미한다. 이에 따라, TCP slow start 단계의 비효율을 개선하고자 하는 많은 기술들이 제안되어왔다. 하지만, 종래 기술들은 TCP 송신기의 변경을 요하거나, 송신기와 수신기 사이의 중간 라우터의 변경을 요하는 등 디플로이먼트(deployment)에 제약이 많아 현실에서 사용되는 것을 찾아보기 어렵다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로 TCP를 사용하는 수신 장치에서 상대 송신 장치 또는 중간 라우터의 변경이나 추가, 도움 없이 TCP 느린 시작(slow start) 구간의 성능을 향상하여 사용자의 체감 지연 시간을 줄이고 망의 이용률을 높이는데 그 목적이 있다.
또한, 본 발명은 송신 장치의 전송률(cwnd)을 높일 수 있도록 하는 수신 장치 및 그 제어 방법을 제공하는 것을 그 목적으로 한다.
또한, 본 발명은, TCP slow start 구간의 성능을 향상하도록 하는 경우에 발생할 수 있는 송신 장치로부터 전송되는 데이터 세그먼트의 손실 상황을 수신 장치가 감지하여 프로토콜의 안정성 (reliability)를 유지할 수 있도록 하는 방법을 제공하는 것을 목적으로 한다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위해 본 발명의 일 실시 예에 따른 단말의 통신 방법은, 송신 장치로부터 적어도 하나의 데이터 세그먼트를 수신하는 단계; 상기 송신 장치에게 상기 적어도 하나의 데이터 세그먼트에 대응하는 적어도 하나의 긍정 응답(ACK: acknowledgement) 세그먼트를 전송하는 단계; 및 미리 설정된 시점에, 수신 예정인 데이터 세그먼트에 대응하는 미리 설정된 개수의 옵티미스틱(optimistic) ACK 세그먼트를 상기 송신 장치에게 전송하는 단계를 포함할 수 있다.
또한, 상기 미리 설정된 개수는 현재 왕복 시간(RTT: round trip time) 라운드(round)에서 수신된 데이터 세그먼트의 개수와 동일할 수 있다.
또한, 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 전송하는 단계는, 느린 시작(slow start) 상태인 경우, 상기 미리 설정된 시점에 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 상기 송신 장치에게 전송하는 단계를 포함할 수 있다.
또한, 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 전송하는 단계는, 상기 현재 RTT 라운드의 수신 데이터 세그먼트의 수가, 이전 RTT 라운드의 수신 데이터 세그먼트의 수와 이전 RTT 라운드에서 송신한 ACK 세그먼트의 수의 합보다 크거나 같은 경우, 상기 미리 설정된 시점에 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 상기 송신 장치에게 전송하는 단계를 포함할 수 있다.
또한, 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 전송하는 단계는, 상기 현재 RTT 라운드의 경과 시간이 최소 단방향 지연(minimum one-way delay) 시간보다 작은 경우, 상기 미리 설정된 시점에 상기 미리 설정된 개수의 ACK 세그먼트를 상기 송신 장치에게 전송하는 단계를 포함할 수 있다.
또한, 상기 단말의 통신 방법은, 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트 중 적어도 하나의 데이터 세그먼트가 미리 설정된 시간 내에 수신되지 않은 경우, 상기 송신 장치에게 미수신 데이터 세그먼트에 대한 재전송 요청 메시지를 전송하는 단계를 더 포함할 수 있다.
또한, 상기 단말의 통신 방법은, 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트가 순차적으로(in-sequence) 수신되지 않은 경우, 손실 감지 타이머를 구동하는 단계; 및 상기 손실 감지 타이머의 만료 시까지 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트가 순차적으로 수신되지 않은 경우, 정상적으로 수신된 데이터 세그먼트의 다음 데이터 세그먼트를 시작 구간으로 하는 재전송 요청 메시지를 상기 송신 장치에게 전송하는 단계를 더 포함할 수 있다.
또한, 상기 목적을 달성하기 위해 본 발명의 일 실시 예에 따른 단말은, 다른 장치와 통신을 하는 통신부; 및 송신 장치로부터 적어도 하나의 데이터 세그먼트를 수신하고, 상기 송신 장치에게 상기 적어도 하나의 데이터 세그먼트에 대응하는 적어도 하나의 긍정 응답(ACK: acknowledgement) 세그먼트를 전송하고, 미리 설정된 시점에, 수신 예정인 데이터 세그먼트에 대응하는 미리 설정된 개수의 옵티미스틱(optimistic) ACK 세그먼트를 상기 송신 장치에게 전송하도록 제어하는 제어부를 포함할 수 있다.
또한, 상기 제어부는, 느린 시작(slow start) 상태인 경우, 상기 미리 설정된 시점에 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 상기 송신 장치에게 전송하도록 제어할 수 있다.
또한, 상기 제어부는, 현재 RTT 라운드의 수신 데이터 세그먼트의 수가, 이전 RTT 라운드의 수신 데이터 세그먼트의 수와 이전 RTT 라운드에서 송신한 ACK 세그먼트의 수의 합보다 크거나 같은 경우, 상기 미리 설정된 시점에 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 상기 송신 장치에게 전송하도록 제어할 수 있다.
또한, 상기 제어부는, 상기 현재 RTT 라운드의 경과 시간이 최소 단방향 지연(minimum one-way delay) 시간보다 작은 경우, 상기 미리 설정된 시점에 상기 미리 설정된 개수의 ACK 세그먼트를 상기 송신 장치에게 전송하도록 제어할 수 있다.
또한, 상기 제어부는, 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트 중 적어도 하나의 데이터 세그먼트가 미리 설정된 시간 내에 수신되지 않은 경우, 상기 송신 장치에게 미수신 데이터 세그먼트에 대한 재전송 요청 메시지를 전송하도록 제어할 수 있다.
또한, 상기 제어부는, 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트가 순차적으로(in-sequence) 수신되지 않은 경우, 손실 감지 타이머를 구동하고, 상기 손실 감지 타이머의 만료 시까지 상기 미리 설정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트가 순차적으로 수신되지 않은 경우, 정상적으로 수신된 데이터 세그먼트의 다음 데이터 세그먼트를 시작 구간으로 하는 재전송 요청 메시지를 상기 송신 장치에게 전송하도록 제어할 수 있다.
본 발명의 일 실시 예에 따르면, 수신 장치는 송신 장치가 전송한 적어도 하나의 데이터 세그먼트를 수신하기 이전에 상기 적어도 하나의 데이터 세그먼트가 성공적으로 수신될 것으로 가정하여, 긍정 응답(ACK: acknowledgement) 세그먼트를 미리 보내는 방식으로 송신 장치의 전송률을 증가시켜, 사용자의 체감 지연 시간을 줄이고 망의 이용률을 높이는 효과를 거둘 수 있다.
본 발명의 다른 일 실시 예에 따르면, 수신 장치는 송신 장치의 적어도 하나의 데이터 세그먼트가 성공적으로 수신될 것을 가정하여 ACK 세그먼트를 미리 보냈으나 실제로는 데이터 세그먼트가 손실된 상황을 감지하여, 상기 손실된 데이터 세그먼트의 재전송을 요청함으로써 프로토콜의 안정성 (reliability)를 유지하는 효과를 거둘 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시 예에 따른 단말의 블록 구성도이다.
도 2a, 도 2b 및 도 2c는 옵티미스틱(optimistic) ACK 메시지의 동작 원리를 개념적으로 설명하기 위한 도면이다.
도 3a 및 도 3b는 본 발명의 일 실시 예에 따른 단말의 데이터 세그먼트 수신에 따른 동작을 나타낸 순서도이다.
도 4는 본 발명의 일 실시 예에 따른 단말에서 손실 감지 타이머(loss detect timer)가 만료되었을 때의 동작을 나타낸 순서도이다.
도 5는 본 발명의 일 실시 예에 따른 단말에서 optimistic Ack timer가 만료되었을 때의 동작을 나타낸 순서도이다.
도 6은 본 발명의 일 실시 예에 따른 단말에서 optimistic Ack timer가 만료되었을 때의 동작의 다른 일 예를 나타낸 순서도이다.
도 7은 본 발명의 일 실시 예에 따른 단말에서 상위 계층이 상대 장치로 보내는 메시지를 전달받아 하위 계층을 통해 전송하는 동작을 나타내는 순서도이다.
도 8은 본 발명의 일 실시 예에 따른 단말에서 상대 장치로부터의 메시지를 하위 계층으로부터 전달받아 상위 계층을 통해 전달하거나, 하위 계층으로부터 에러를 전달받아 재전송을 통한 복구(recovery)를 수행하는 동작을 나타내는 순서도이다.
이하, 본 명세서의 실시 예의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 명세서의 실시 예가 속하는 기술 분야에 익히 알려져 있고 본 명세서의 실시 예와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 명세서의 실시 예의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
본 명세서에서 어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있는 것을 의미할 수도 있고, 중간에 다른 구성 요소가 존재하여 전기적으로 연결되어 있는 것을 의미할 수도 있다. 아울러, 본 명세서에서 특정 구성을 "포함" 한다고 기술하는 내용은 해당 구성 이외의 구성을 배제하는 것이 아니며, 추가적인 구성이 본 발명의 실시 또는 본 발명의 기술적 사상의 범위에 포함될 수 있음을 의미한다.
그리고, 본 발명의 실시 예에 나타나는 구성부들은 서로 다른 특징적인 기능을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성 단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 포함한 것으로 각 구성부 중 적어도 두 개의 구성부가 하나의 구성부를 이루거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있다. 각 구성부의 통합된 실시 예 및 분리된 실시 예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리 범위에 포함된다.
또한, 일부의 구성 요소는 본 발명에서 본질적인 기능을 수행하는 필수적인 구성 요소는 아니고 단지 성능을 향상시키기 위한 선택적 구성 요소일 수 있다. 본 발명은 단지 성능 향상을 위해 사용되는 구성 요소를 제외한 본 발명의 본질을 구현하는데 필수적인 구성부만을 포함하여 구현될 수 있고, 단지 성능 향상을 위해 사용되는 선택적 구성 요소를 제외한 필수 구성 요소만을 포함한 구조도 본 발명의 권리범위에 포함된다.
하기에서 본 명세서의 실시 예를 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 명세서의 실시 예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 이하 첨부된 도면을 참조하여 본 명세서의 실시 예의 실시 예를 설명하기로 한다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일 실시 예에 따른 단말의 블록 구성도이다.
도 1의 단말은 전송 제어 프로토콜(TCP: transmission control protocol)을 사용하여 데이터를 수신하는 모든 종류의 전자 장치가 될 수 있으며, 예를 들면 휴대폰, 스마트 폰(smart phone), 스마트 텔레비전(smart TV), 컴퓨터, 노트북 등이 될 수 있다. 그리고, 상기 단말은 이하 설명의 편의를 위해서 TCP 수신 장치 등의 용어와 혼용되어 사용될 수 있다. 또한, 도 1은 본 발명의 일 실시 예에 밀접히 연관되는 소프트웨어 모듈만을 도시한 것으로 실시 예와 직접 관련 없는 구성 요소는 생략되어있다.
도 1을 참고하면, 본 발명의 일 실시 예에 따른 단말은 어플리케이션(application)(110), 복구 모듈(recovery module)(120), 향상된 TCP 모듈(enhanced TCP module)(130), 및 네트워크 인터페이스(network interface)(140)를 포함할 수 있다. 이때, 각 구성 요소는 별개로 도시되어 있으나, 적어도 두 개의 구성 요소가 하나의 제어부에 의해서 동작할 수 있다. 예를 들면 복구 모듈(120), 및 향상된 TCP 모듈(130)이 하나의 제어부(미도시)로 구성될 수 있다.
어플리케이션(110)은 최상위에서 트래픽을 송수신하고, 네트워크 인터페이스(140)는 최하위에서 타 장치와의 통신을 연결할 수 있다. 그리고, 어플리케이션(110)과 네트워크 인터페이스(140)는 통신부(미도시)에 의해서 동작할 수 있다.
TCP 프로토콜을 사용하여 외부와 네트워킹(networking)하는 단말의 경우 어플리케이션(110)과 네트워크 인터페이스(140) 사이에는 운영 체제(OS: operating system)가 존재하여 구체적인 네트워킹 절차를 추상화하여 어플리케이션(110)에 제공할 수 있다. TCP 프로토콜 역시 통상 OS 내에 포함되어 구현될 수 있다.
도 1에 예시된 것과 같이, 본 발명의 일 실시 예에 따른 단말은 향상된 TCP 모듈(130)과 복구모듈(120)을 포함할 수 있다. 그러나, 이는 논리적인 설명을 위하여 제어부(미도시)에 포함되는 소프트웨어의 구현을 도시한 것으로, 실시 예에 따라서 상기 향상된 TCP 모듈(130)과 복구 모듈(120)은 하나의 모듈로 구현될 수도 있으며, 구현 방식을 둘로 분리해야 하는 것으로 제한되는 것은 아니다. 또한, 향상된 TCP 모듈(130)은 OS의 커널 영역(kernel space)에서 구현되고, 복구 모듈(120)은 사용자 영역(user space)에서 구현될 수 있다. 그러나, 이에 제한되는 것은 아니며, 실시 예에 따라서 향상된 TCP 모듈(130)이 사용자 영역(user space)에서 구현될 수도 있다.
향상된 TCP 모듈(130) 내에는 종래의 TCP 기본 기능 외에 왕복 시간(RTT: round trip time) 모니터(Monitor) 모듈(131), 옵티미스틱 긍정 응답 핸들러(optimistic ACK(acknowledgement) handler) 모듈(135), 데이터 수신 모니터(data RX monitor) 모듈(137) 등의 서브 모듈이 포함될 수 있다. 이 때, 옵티미스틱 ACK 핸들러 모듈(135), RTT 모니터 모듈(131), 데이터 수신 모니터 모듈(137)이 별개의 구성 요소로 도시되어 있으나, 이는 설명의 편의를 위한 것이며 이에 한정하는 것은 아니다. 예를 들면, 옵티미스틱 ACK 핸들러 모듈(135), RTT 모니터 모듈(131), 및 데이터 수신 모니터 모듈(137)이 하나의 TCP 모듈로 구성될 수 있다.
RTT 모니터 모듈(131)은 상대 장치와의 최소(minimum) RTT를 계산하는 기능을 수행할 수 있다. 최소 RTT는 TCP의 3-웨이 핸드쉐이크(3-way handshake)에 의해서 세션을 연결을 시도하는 시점부터 측정이 시작될 수 있다. 본 발명의 일 실시 예에 따른 단말에서 TCP SYN를 보내는 시점의 시각과 TCP SYN/ACK를 수신하는 시점의 시각의 차를 최초의 최소 RTT로 취할 수 있다. 이후, TCP가 수립된(established) 상태에서 데이터(data)와 ACK 세그먼트를 송수신하는 과정에서 RTT를 계산하여 종래의 최소 RTT보다 새로 측정한 RTT가 더 작은 경우 최소 RTT를 갱신할 수 있다. 이렇게 계산한 최소 RTT는 옵티미스틱 ACK 핸들러 모듈(135)에서 옵티미스틱(optimistic) ACK을 보내는 동작을 중단하고, 일반 TCP 모드로 회귀(fallback) 할지를 결정하는데 활용될 수 있다.
데이터 수신 모니터 모듈(137)은 데이터 세그먼트의 수신 이벤트와 관련된 처리를 담당할 수 있다. 상기 데이터 수신 모니터 모듈(137)은 데이터 세그먼트 간의 수신 시각 간격을 모니터하여 데이터 세그먼트들의 RTT 라운드(RTT round)를 구분하고, 각 RTT round에 수신된 데이터 세그먼트의 수를 저장할 수 있다. 또한, 상기 데이터 수신 모니터 모듈(137)은 수신되는 데이터 세그먼트의 시퀀스 번호를 모니터하여 비순차적인(out-of-sequence) 데이터 세그먼트가 수신된 경우, 손실 감지 타이머(loss detect timer)를 시작할 수 있다. 그리고, 상기 데이터 수신 모니터 모듈(137)은 수신되는 데이터 세그먼트의 시퀀스 번호를 모니터하여 손실 감지 타이머(loss detect timer)의 시작을 야기한 시퀀스 번호에 해당하는 데이터 세그먼트가 수신된 경우, 상기 손실 감지 타이머(loss detect timer)를 취소(초기화)할 수 있다.
옵티미스틱 ACK 핸들러 모듈(135)은 미리 설정된 시점에 미리 정해진 규칙에 따라 옵티미스틱 ACK(optimistic ACK)을 전송할 수 있다. 실시 예에 따라서 상기 옵티미스틱 ACK 핸들러 모듈(135)은 상기 옵티미스틱 ACK을 각 RTT round가 끝난 후에 전송할 수 있다. 또는 옵티미스틱 ACK 핸들러 모듈(135)은 RTT round가 종료되지 않았더라도, 현재 수신한 데이터 세그먼트에 대한 ACK 세그먼트를 전송하면서 옵티미스틱 ACK 세그먼트를 동시에 전송할 수 있다. 또는 현재 수신한 데이터 세그먼트에 대한 ACK 세그먼트를 전송할 시점에 일반 ACK 세그먼트를 대신하여 옵티미스틱 ACK 세그먼트를 대신 전송할 수 있다. 또는 옵티미스틱 ACK 핸들러 모듈(135)은 상기 미리 설정된 시점을 랜덤하게 설정하여 옵티미스틱 ACK 세그먼트를 전송할 수도 있다. 옵티미스틱 ACK(optimistic ACK)의 전송은 실시 예에 따라 첫 RTT round에서만 수행하거나, 여러 RTT round에 거쳐 수행될 수 있으며, 옵티미스틱 ACK의 전송에 대한 구체적인 방법은 이후에서 자세히 설명하도록 한다.
한편, 복구 모듈(120)은 프록시(proxy) 모듈(127)과 복구(recovery) 엔진 모듈(125)을 포함할 수 있다. 상기 프록시 모듈(127)과 복구 엔진 모듈(125)의 구분 또한, 논리적인 설명을 위한 것일 뿐 구현이 상기와 같이 제약되는 것은 아니다.
프록시 모듈(127)은 어플리케이션(application)(110)과 TCP 모듈(예를 들면, 향상된 TCP 모듈(130))의 중간에서 트래픽을 중개하는 역할을 수행할 수 있다. 상기 서브모듈은 종래의 로컬 HTTP Proxy 의 기능과 다르지 않으며, SW 라이브러리 등 다양한 형태로 구현될 수 있다.
복구 엔진 모듈(125)은 하위의 TCP 모듈(130)로부터 데이터 세그먼트의 손실에 의해 에러를 전달받은 경우, 현재까지 정상 수신된 메시지 바디(message-body)의 다음 바이트(byte)부터 재전송을 요청하는 HTTP(hypertext transfer protocol) 메시지를 생성하여 송신 장치에게 전송할 수 있다. 그리고, 상기 재전송 요청 HTTP 메시지에 상응하는 데이터를 송신 장치로부터 수신하고, 이를 기 수신한 데이터와 병합(concatenation)하여 상위 계층에게 전달할 수 있다.
도 2a 도 2b, 및 도 2c는 옵티미스틱(optimistic) ACK 메시지의 동작 원리를 개념적으로 설명하기 위한 도면이다.
도 2a는 TCP 동작에 따른 메시지 교환의 일 예를 도시한 도면이다. TCP 송신 장치(sender)(220)의 초기 혼잡 윈도우(cwnd: congestion window)가 5 라고 가정하면, 초기에 TCP 송신 장치(220)는 TCP 수신 장치(receiver)(210)에게 5개의 데이터 세그먼트(segment 1-5)를 전송할 수 있다(250).
한편, 실제 TCP의 시퀀스 번호는 바이트 시퀀스(byte sequence)로 되어있으나, 설명의 편의를 위하여 세그먼트 시퀀스(segment sequence)로 표기하였다. 또한, 역시 설명의 편의를 위하여 ACK 세그먼트의 긍정 응답 번호(acknowledgement number) 또한 바이트 시퀀스(byte sequence) 대신 긍정 응답(acknowledge) 하는 대상 데이터 세그먼트의 시퀀스 번호로 표기하였다. 예를 들어, ACK i 은 DATA i 에 대한 acknowledge를 의미할 수 있다.
한편, 이하 도면 및 동작의 설명에서는 편의를 위하여 하나의 TCP 데이터(DATA) 세그먼트를 수신한 후 하나의 TCP ACK 세그먼트가 응답되는 일명 QUICK ACK 모드를 가정하였으나, 복수의 TCP ACK 세그먼트 중 일부만을 전송하는 일명 DELAYED ACK 모드로도 동작할 수 있음은 자명하다. 예를 들면, 도 2a에는 TCP 수신 장치(210)는 데이터 세그먼트(segment 1-5)을 수신하면 그에 대응하는 TCP ACK 세그먼트(ACK 1-5)를 TCP 송신 장치(220)에게 바로 전송하는 QUICK ACK 모드가 예시적으로 도시되어 있다. 그러나, 이에 한정하는 것은 아니고, TCP 수신 장치(210)는 DELAYED ACK 모드로도 동작하여, 수신된 모든 데이터 세그먼트에 대한 ACK 세그먼트를 바로 전송하지 않을 수 있다. 즉, 수신된 한 데이터 세그먼트에 대한 ACK 세그먼트를 전송하지 않고 지연시키다가 또 다른 데이터 세그먼트가 수신될 때 또 다른 데이터 세그먼트에 대응하는 TCP ACK 세그먼트만을 전송하거나, 혹은 미리 설정된 시간을 지연한 다음에 송신할 수 있다. 이때, TCP ACK 메커니즘의 Cumulative ACK 속성에 의해 모든 데이터 세그먼트(segment 1-5)에 대해 각각의 응답을 하지 않더라도 최근의 데이터 세그먼트에 대한 ACK 세그먼트의 전송으로 이전의 데이터 세그먼트들에 대한 응답을 겸하도록 할 수 있음은 물론이다. 예를 들면, TCP 수신 장치(210)는 데이터 세그먼트(segment 1-5)를 수신하면 그에 대응하는 TCP ACK 세그먼트로서 1개의 ACK 세그먼트(ACK 5)만을 보낼 수도 있으며, 두 개의 TCP DATA 세그먼트를 받을 때마다 하나의 ACK 세그먼트를 전송한 후(ACK 2, 4), 마지막 데이터 세그먼트(segment 5)에 대한 ACK 세그먼트(ACK 5)는 미리 설정된 시간 지연 후에 전송할 수도 있다.
이후, 데이터 세그먼트를 수신한 TCP 수신 장치(210)는 상기 수신한 각각의 데이터 세그먼트에 대한 (immediate) ACK 세그먼트(ACK 1-5)를 TCP 송신 장치(220)에게 송신할 수 있다(251)(이때, 설명의 편의상 TCP 수신 장치(210)에 지연(delayed) ACK 기능은 사용하지 않는 것으로 가정하였으나, 이에 한정하는 것은 아니다).
TCP 송신 장치(220)는 초기에 느린 시작(slow start) 상태에 있으므로 ACK 세그먼트를 수신할 때 마다 아래 [수학식 1]에 따라 cwnd를 증가시킬 수 있다.
[수학식 1]
cwnd += min(newly acked bytes, MSS)
결국, 상기와 같은 한 RTT round가 지날 때마다 TCP 송신 장치(220)의 cwnd는 두 배로 지수적으로 증가할 수 있다. 이에 따라, TCP 송신 장치(220)는 다음 RTT round에 도 2a에 도시된 것과 같이 초기 cwnd의 두 배인 10개의 데이터 세그먼트(segment 6-15)를 전송할 수 있게 된다(253).
도 2b는 본 발명의 일 실시 예에 따른 옵티미스틱(optimistic) ACK을 사용했을 때의 TCP 메시지 교환의 일 예를 도시한 도면이다.
도 2a에 예시된 TCP 메시지 교환 방법과 달리 도 2b에 예시된 본 발명의 일 실시 예에 따른 TCP 메시지 교환 방법은 TCP 수신 장치(230)가 5개의 초기 RTT round의 데이터 세그먼트(segment 1-5)를 수신한 후(260), 추가의 ACK 세그먼트를 TCP 송신 장치(240)에게 전송할 수 있다(261). 예를 들면, TCP 수신 장치(230)가 수신한 5 개의 데이터 세그먼트(segment 1-5)에 대응하는 5 개의 ACK 세그먼트(ACK 1-5) 외에, 추가로 10 개의 추가 ACK 세그먼트(ACK 6-15)를 TCP 송신 장치(240)에게 송신할 수 있다(261). 즉, TCP 수신 장치(230)는 5 개의 데이터 세그먼트(segment 1-5)만을 수신하였지만, 제6 데이터 세그먼트(segment 6)의 유효한 수신을 가정하여, 아직 수신하지 않은 제6 데이터 세그먼트(segment 6)에 대한 ACK 세그먼트(ACK 6)를 TCP 송신 장치(240)에게 전송할 수 있다. 그리고, TCP 수신 장치(230)는 제7 데이터 세그먼트(segment 7) 내지 제15 데이터 세그먼트(segment 15)의 유효한 수신을 가정하여, 아직 수신하지 않은 제7 데이터 세그먼트(segment 7) 내지 제15 데이터 세그먼트(segment 15)에 대한 ACK 세그먼트(ACK 7-15)를 TCP 송신 장치(240)에게 전송할 수 있다. 이때, 상기 추가로 전송되는 ACK 세그먼트(ACK 6-15)를 추가 ACK 세그먼트 또는 옵티미스틱 ACK 세그먼트라고 칭할 수 있다. 이들 추가 ACK 세그먼트(옵티미스틱 ACK 세그먼트)는 TCP 수신 장치(230)가 수신하지 않은 데이터 세그먼트에 대하여 미리 해당 데이터 세그먼트의 수신이 유효하게 이루어졌음을 가정하여 전송되는 ACK 세그먼트를 의미하는 것으로, 이와 같은 ACK 세그먼트는 그 용어에 한정되는 것이 아니다.
그리고 TCP 수신 장치(230)는 단말 또는 수신 장치)라는 용어와 혼용되어 사용될 수 있고, TCP 송신 장치(240)는 송신 장치라는 용어와 혼용되어 사용될 수 있다.
한편, TCP 송신 장치(240)는 제1 ACK 세그먼트 내지 제5 ACK 세그먼트(ACK 1-5)를 수신한 이후에 cwnd를 증가시키고 대기 중이던 다음 데이터 세그먼트를 전송할 수 있다(263). 이때, 가령 TCP 송신 장치(240)는 제6 데이터 세그먼트(segment 6)를 전송한 이후, 실제 RTT보다 짧은 시간 후에 제6 ACK 세그먼트(ACK 6)를 수신하게 된다. 따라서, TCP 송신 장치(240)는 마치 RTT가 매우 짧은 네트워크에 놓인 것처럼 cwnd를 매우 빠르게 증가시키게 되어, 결과적으로 종래 slow start 구간의 비효율이 완화되게 된다.
이때, TCP 수신 장치(230)가 언제 몇 개의 옵티미스틱 ACK 세그먼트를 전송할 것인지, 또한 TCP 송신 장치(240)가 데이터 세그먼트를 전송하기 전에 해당 데이터 세그먼트에 대응하는 옵티미스틱 ACK 세그먼트를 수신하는 것을 방지하는 것이 필요하다.
이를 위해, TCP 수신 장치(230)는 미리 설정된 시점에 상기 옵티미스틱 ACK 세그먼트를 전송할 수 있다. 실시 예에 따라서, TCP 수신 장치(230)는 옵티미스틱 ACK 세그먼트를 RTT round의 종료 직후에 보낼 수 있다. 또는 TCP 수신 장치(230)는 RTT round가 종료되지 않았더라도, 현재 수신한 데이터 세그먼트에 대한 ACK 세그먼트를 전송하면서, 옵티미스틱 ACK 세그먼트를 전송할 수 있다. 또는 TCP 수신 장치(230)는 상기 미리 설정된 시점을 랜덤하게 설정하여 옵티미스틱 ACK 세그먼트를 전송할 수도 있다.
예를 들면, TCP 수신 장치(230)는 RTT round에서 모든 데이터 세그먼트를 수신한 이후에 바로 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 전송할 수 있다. 도 2b를 참고하면, TCP 수신 장치(230)는 제1 내지 제5 데이터 세그먼트(segment 1-5)를 수신한 직후(260), 즉 초기 RTT round의 종료 이후에 바로 제6 내지 제15 옵티미스틱 ACK 세그먼트(ACK 6-15)를 전송할 수 있다(261). 이때, 미리 설정된 옵티미스틱 ACK 세그먼트의 개수는 실험에 의해서 결정될 수 있다. 도 2b에서는 상기 미리 설정된 옵티미스틱 ACK 세그먼트의 개수가 10개(즉, ACK 6-15)로 예시되어 있으나, 이에 한정하는 것은 아니다.
또는 실시 예에 따라서, 미리 설정된 옵티미스틱 ACK 세그먼트의 개수는 이번 RTT round에 수신된 데이터 세그먼트의 개수와 동일할 수 있다. TCP 송신 장치(240)가 일반적인 ACK 세그먼트를 수신한 경우에, cwnd는 두 배가 되고, 그에 따라 TCP 송신 장치(240)는 옵티미스틱 ACK 세그먼트들을 수신하기 전에 해당 옵티미스틱 ACK 세그먼트들에 대응하는 데이터 세그먼트들을 전송할 수 있다. 따라서 TCP 송신 장치(240)가 데이터 세그먼트를 전송하기 전에 해당 데이터 세그먼트에 대응하는 옵티미스틱 ACK 세그먼트를 수신하는 것을 방지할 수 있다.
예를 들면, RTT round에서 제1 내지 제5 데이터 세그먼트를 TCP 수신 장치(230)가 수신한 경우, 그에 따라서 TCP 수신 장치(230)는 일반적인 제1 내지 제5 ACK 세그먼트를 TCP 송신 장치(240)에게 전송할 수 있다. 그리고, TCP 수신 장치(230)는 상기 RTT round의 종료 후, 즉 제5 ACK 세그먼트의 전송 후에 바로 미리 설정된 개수의 옵티미스틱 ACK 세그먼트들을 전송할 수 있다. 이때, TCP 수신 장치(230)는 RTT round 동안에 수신한 데이터 세그먼트의 개수와 동일한 개수의 옵티미스틱 ACK 세그먼트들을 TCP 송신 장치(240)에게 전송할 수 있다. 상기 예시에서는 TCP 수신 장치(230)는 5 개의 옵티미스틱 ACK 세그먼트들인 제6 내지 제10 옵티미스틱 ACK 세그먼트를 TCP 송신 장치(240)에게 전송할 수 있다. 이와 같은 경우, TCP 송신 장치(240)는 제1 내지 제5 ACK 세그먼트를 수신하여 cwnd가 이미 10으로 증가하게 되었으므로, TCP 송신 장치(240)는 제6 내지 제10 옵티미스틱 ACK 세그먼트에 대응하는 제6 내지 제10 데이터 세그먼트를 제6 내지 제10 옵티미스틱 ACK 세그먼트의 수신 이전에 전송할 수 있다.
또한, 도 2c를 참고하면, TCP 수신 장치(230)는 RTT round가 종료되지 않았더라도, 현재 수신한 데이터 세그먼트에 대한 ACK 세그먼트를 전송하면서, 옵티미스틱 ACK 세그먼트를 전송할 수 있다. 예를 들면, TCP 수신 장치(230)는 제1 데이터 세그먼트(segment 1)를 수신한 후(270) 그에 대한 ACK 세그먼트(ACK 1)을 TCP 송신 장치(240)에게 전송할 수 있다(271). 그리고, TCP 수신 장치(230)는 RTT round가 종료되지 않았더라도, 제2 데이터 세그먼트 내지 제4 데이터 세그먼트의 유효한 수신을 가정하여 제2 데이터 세그먼트 내지 제4 데이터 세그먼트에 대한 옵티미스틱 ACK 세그먼트(ACK 2, ACK 4, ACK 3)를 TCP 송신 장치(240)에게 전송할 수 있다(272). 한편, 이와 같은 경우에도 TCP 송신 장치(240)가 제2 데이터 세그먼트(segment 2)를 전송(273)하기 전에 해당 데이터 세그먼트(segment 2)에 대응하는 옵티미스틱 ACK 세그먼트(ACK 2)를 수신하는 것은 방지될 수 있다.
도 2c에서는 TCP 수신 장치(230)가 한 개의 데이터 세그먼트를 수신한 후, 복수 개의 옵티미스틱 ACK 세그먼트를 전송하는 것이 예시되어 있으나, 이에 한정하는 것은 아니다. 예를 들면, TCP 수신 장치(230)는 복수 개의 데이터 세그먼트를 수신한 후, 한 개의 옵티미스틱 ACK 세그먼트를 전송할 수 있다. TCP 수신 장치(230)는 제1 데이터 세그먼트 및 제2 데이터 세그먼트를 수신한 후, 제1 데이터 세그먼트 및 제2 데이터 세그먼트에 대한 제1 및 제2 ACK 세그먼트(ACK 1, ACK 2)를 전송하고, 제3 데이터 세그먼트의 유효한 수신을 가정하여 제3 데이터 세그먼트에 대한 제3 옵티미스틱 ACK 세그먼트(ACK 3)를 TCP 송신 장치(240)에게 전송할 수 있다. 또한, TCP 수신 장치(230)는 복수 개의 데이터 세그먼트를 수신한 후, 복수 개의 옵티미스틱 ACK 세그먼트를 전송할 수도 있다. TCP 수신 장치(230)는 제1 데이터 세그먼트 및 제2 데이터 세그먼트를 수신한 후, 제1 데이터 세그먼트 및 제2 데이터 세그먼트에 대한 제1 및 제2 ACK 세그먼트(ACK 1, ACK 2)를 전송하고, 제3 데이터 세그먼트 및 제4 데이터 세그먼트의 유효한 수신을 가정하여 제3 데이터 세그먼트 및 제4 데이터 세그먼트에 대한 제3 및 제4 옵티미스틱 ACK 세그먼트(ACK 3, ACK 4)를 TCP 송신 장치(240)에게 전송할 수 있다.
실시 예에 따라서, TCP 수신 장치(230)는 TCP 송신 장치(240)와 연결 생성 과정에서 측정된 최초의 RTT를 이용하여 옵티미스틱 ACK 세그먼트의 전송 시점을 결정할 수 있다. 예를 들면, 연결 과정에서 계산된 최초의 RTT가 미리 설정된 시간보다 긴 경우, TCP 수신 장치(230)는 옵티미스틱 ACK 세그먼트를 RTT round가 종료된 직후에 전송할 수 있다. 그리고 연결 과정에서 계산된 최초의 RTT가 미리 설정된 시간보다 짧은 경우, TCP 수신 장치(230)는 RTT round가 종료되지 않았더라도, 현재 수신한 데이터 세그먼트에 대한 ACK 세그먼트를 전송하면서, 옵티미스틱 ACK 세그먼트를 전송할 수 있다.
한편, TCP 수신 장치(230)는 slow start 상태에 있는 동안에만 옵티미스틱 ACK 세그먼트를 전송할 수 있다. slow start 상태에 있는 경우에는 옵티미스틱 ACK 세그먼트가 더 많은 가용 윈도우를 생성할 수 있다. 그러나, 혼잡 회피(congestion avoidance) 상태에 있는 경우에는 TCP 송신 장치(240)가 데이터 세그먼트를 전송하기 전에 그에 대응하는 옵티미스틱 ACK 세그먼트를 먼저 수신하는 문제가 발생할 수 있다.
이때, TCP 수신 장치(230)는 데이터 트레인(train)의 길이를 관찰함으로써, 현재 전송 상태(즉, slow start 상태 또는 congestion avoidance 상태)인지 여부를 판단할 수 있다. 이에 대한 구체적인 설명은 후술하도록 한다.
또한, 실시 예에 따라서, TCP 수신 장치(230)는 데이터 트레인의 길이(즉, 현재 RTT round의 경과 시간)와 최소 단방향 지연(minimum one-way delay) 시간을 비교함으로써 옵티미스틱 ACK 세그먼트를 전송할지 여부를 결정할 수 있다.
한편, TCP 수신 장치(230)가 미리 데이터 세그먼트의 유효한 수신을 가정하여 해당 데이터 세그먼트에 대응하는 옵티미스틱 ACK 세그먼트를 전송하였지만, 실제로는 TCP 수신 장치(230)가 해당 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트를 수신하지 못할 수 있다.
이 경우, TCP 수신 장치(230)는 데이터 세그먼트가 순차적으로(in sequence) 수신되지 않는 경우에 손실 감지 타이머(loss detect timer)를 구동할 수 있다. 그리고 손실 감지 타이머가 만료되기 전까지 누락된 데이터 세그먼트가 수신되지 않은 경우 에러가 발생하였음을 나타내는 정보가 포함된 메시지를 TCP 송신 장치(240)에게 전송할 수 있다.
또는 실시 예에 따라서, TCP 수신 장치(230)는 옵티미스틱 ACK 세그먼트를 전송할 때, 각각의 옵티미스틱 ACK 세그먼트 별 손실 감지 타이머를 구동할 수 있다. 예를 들면, 제6 내지 제10 옵티미스틱 ACK 세그먼트를 전송하는 경우, TCP 수신 장치(230)는 제6 내지 제10 옵티미스틱 ACK 세그먼트에 대응하는 제6 내지 제10 손실 감지 타이머를 구동할 수 있다. 그리고 각각의 손실 감지 타이머가 만료되기 전까지 각각의 타이머에 대응하는 대응하는 데이터 세그먼트가 세그먼트가 수신되지 않은 경우 에러가 발생하였음을 나타내는 정보가 포함된 메시지를 TCP 송신 장치(240)에게 전송할 수 있다.
이하, 본 발명의 일 실시 예에 따른 TCP 수신 장치(230), 즉 단말의 동작에 대하여 구체적으로 살펴보도록 한다.
도 3a 및 도 3b는 본 발명의 일 실시 예에 따른 단말의 데이터 세그먼트 수신에 따른 동작을 나타낸 순서도이다.
도 3a를 참고하면, 305 단계에서 본 발명의 일 실시 예에 따른 단말은 TCP 세션 연결 과정이 완료된 후, TCP가 수립(Established)된 상태에서 데이터(DATA) 세그먼트의 수신을 대기할 수 있다. 그리고, 단말이 TCP 데이터 세그먼트를 수신하게 되면 310 단계로 진행한다.
310 단계에서 단말은 종래의 TCP 프로토콜 규격에 따라 데이터 세그먼트를 수신 후에 헤더 프로세싱, ACK 세그먼트 생성 및 전송 등의 처리 절차를 수행할 수 있다.
그리고, 315 단계에서 단말은 수신된 데이터 세그먼트가 이전 데이터 세그먼트로부터 빠진 시퀀스 번호 없이 순차적으로 수신되었는지를 (in-sequence) 확인할 수 있다.
종래의 TCP 에서는 데이터 세그먼트가 비순차적으로 수신된 경우에는 인터넷의 다중 경로에 의해 지연차가 그 원인이 될 수 있다. 하지만, 본 발명에 따라 단말이 옵티미스틱 ACK을 송신한 경우에는, 전송 과정에서 데이터 세그먼트가 손실(Loss)된 것이 아닌지 확인할 필요가 있다. 따라서, 데이터 세그먼트가 in-sequence로 수신되지 않은 경우에 단말은 320 단계에서 손실 감지 타이머(loss detect timer)를 개시할 수 있다. 그리고, 손실 감지 타이머가 만료(Expiry)되는 경우에는 해당 데이터 세그먼트가 전송 과정에서 손실된 것으로 간주될 것이다.
예를 들면, 단말이 제6 데이터 세그먼트 내지 제7 데이터 세그먼트를 수신한 후, 제9 데이터 세그먼트를 수신한 경우, 제8 데이터 세그먼트가 수신되지 않았으므로 단말은 손실 감지 타이머를 개시할 수 있다. 그리고 상기 손실 감지 타이머가 만료되기 전까지 제8 데이터 세그먼트가 수신되지 않은 경우, 제8 데이터 세그먼트는 전송 과정에서 손실된 것으로 간주할 수 있다. 이 때의 단말 동작에 대해서는 후술하도록 한다.
그리고, 315 단계에서 데이터 시퀀스가 순차적으로 수신된 경우, 단말은 325 단계에서 현재 손실 감지 타이머가 구동 중인지 확인할 수 있다. 그리고, 단말은 데이터 세그먼트가 순차적으로 수신된 경우에는 데이터 세그먼트의 손실이 없었던 것이므로, 330 단계에서 상기 손실 감지 타이머를 취소할 수 있다. 이는 손실 감지 타이머가 구동된 후에, 해당 손실 감지 타이머를 구동하도록 한 데이터 세그먼트가 수신된 경우에 손실 감지 타이머를 취소하도록 하기 위한 것이다. 상술한 예와 같이 제8 데이터 세그먼트가 수신되지 않아 손실 감지 타이머가 구동되었으나, 이후에 단말이 제8 데이터 세그먼트를 수신한 경우 단말은 손실 감지 타이머를 취소할 수 있다.
이후, 335 단계에서 단말은 옵티미스틱 ACK 타이머(optimistic Ack timer)를 시작할 수 있다. 이때, 옵티미스틱 ACK 타이머는 옵티미스틱 ACK 세그먼트를 전송할 미리 설정된 시점을 지시하기 위한 것일 수 있다. 예를 들면, 상기 옵티미스틱 ACK 타이머의 만료는 RTT round의 종료를 의미할 수 있다. 그리고, 단말은 옵티미스틱 ACK 타이머가 만료된 경우, 옵티미스틱 ACK 전송을 실제 수행할지 여부를 판단하는 과정을 거쳐 옵티미스틱 ACK 세그먼트를 전송할 수 있다. 이에 대한 상세 과정은 이후에 도 5 및 도 6에서 자세히 설명하도록 한다.
실시 예에 따라서, 단말은 340 단계에서 이전 데이터 세그먼트의 수신 시각과 금번 데이터 세그먼트의 수신 시각과의 간격이 미리 정해진 시간 간격(예를 들면, 2ms) 이내인지 확인할 수 있다. 상기 미리 정해진 시간 간격은 일련의 데이터 세그먼트들이 하나의 RTT round에 속하는지를 판단하기 위한 것이다. 가령, 단말은 두 데이터 세그먼트의 수신 시각 간격이 2ms 이내이면 같은 RTT round로 판단하고, 그 이상이면 RTT round가 바뀐 것으로 판단할 수 있다.
만약, 이전데이터 세그먼트의 수신 시각과 금번 데이터 세그먼트의 수신 시각과의 간격이 미리 정해진 시간 간격 이내인 경우에 단말은 350 단계로 진행하여 옵티미스틱 ACK 타이머를 리셋할 수 있다.
반면, 이전 데이터 세그먼트의 수신 시각과 금번 데이터 세그먼트의 수신 시각과의 간격이 상기 미리 설정된 시간 간격을 넘어선 경우에 단말은 345 단계로 진행하여 다음 RTT round의 데이터 세그먼트 수신을 대기할 수 있다. 이 단계에는 각 RTT round 내에서 유지/관리하는 변수(예를 들면, RTT round의 시작 시각 등)의 초기화 과정이 포함될 수 있다.
실시 예에 따라서 단말은 355 단계에서 현재 RTT round의 경과 시간과 최소 단방향 지연(minimum one-way delay) 시간을 비교할 수 있다. 이는, 현재 상태가 slow start 상태이지만 congestion avoidance 상태에 가까운 상태에서 단말이 옵티미스틱 ACK을 전송하는 경우에, 송신 장치가 데이터 세그먼트를 전송하기 전에 그에 대응하는 옵티미스틱 ACK을 미리 수신할 수 있는 문제점을 방지하기 위한 것이다. 이때, 상기 최소 단방향 지연 시간은
Figure 112017044303264-pat00002
와 같을 수 있다. 만약 RTT round의 경과 시간이 최소 단방향 지연 시간보다 더 큰 경우(또는 크거나 같은 경우)에는 단말은 360 단계로 진행하여 본 발명의 옵티미스틱 ACK 전송 방법을 사용하지 않는 일반 TCP 모드로 회귀 할 수 있다. 일련의 데이터 세그먼트가 최소 단방향 지연 시간인
Figure 112017044303264-pat00003
에 근접하는 것은 TCP 송신 장치의 cwnd가 두 장치(송신 장치와 수신 장치) 간의 네트워크 경로 상의 대역폭 지연 곱(BDP: bandwidth delay product)에 근접하는 것으로 볼 수 있다. 그러므로 데이터 세그먼트의 손실이 생길 가능성이 커질 수 있어 옵티미스틱 ACK을 사용하지 않고 보수적으로 동작하게 하는 것이다. 반대의 경우에는 단말은 305 단계로 진행하여 다시 현재 RTT round의 데이터 세그먼트의 수신을 대기할 수 있다.
한편, 도시되지 않았지만, 본 발명의 일 실시 예에 따른 단말은 305 단계에서 데이터를 수신한 이후에, 옵티미스틱 ACK을 전송하는 동작을 따를 것인지, 종래의 TCP 모드에 따라서 동작을 할 것인지 여부를 판단할 수 있다. 이때, 단말은 예를 들면 현재 네트워크가 혼잡한 상황이어서 데이터 세그먼트의 빈번한 손실이 예상되거나, 실패 이력이 남아 있는 서버인 경우, 서버와의 RTT가 짧게 측정되는 경우 등과 같은 경우에는 옵티미스틱 ACK의 전송을 하지 않는 것으로 판단을 하고, 종래의 TCP 모드에 따라 동작을 하도록 할 수도 있다.
또한, 도시되지 않았지만, 본 발명의 일 실시 예에 따른 단말은, TCP 계층에서 일반(normal) 모드로 동작을 수행하다가, 상기 315 단계, 325 단계, 340 단계, 355 단계 등을 수행하여 모든 조건이 만족한 경우에 한해서 옵티미스틱 ACK 세그먼트의 전송을 개시하라고 지시를 하는 경우에 옵티미스틱 ACK 세그먼트를 전송하는 동작을 수행할 수도 있다.
한편, 도 3b를 참고하면, 단말은 305 단계 내지 330 단계를 수행할 수 있다. 이는 상기 도 3a의 305 단계 내지 330 단계의 동작과 유사한바, 그 구체적인 설명은 생략하기로 한다.
그리고, 단말은 330 단계단계에서 손실 감지 타이머를 종료한 후, 355 단계에서 현재 RTT round의 경과 시간과 최소 단방향 지연(minimum one-way delay) 시간을 비교할 수 있다. 이는, 현재 상태가 slow start 상태이지만 congestion avoidance 상태에 가까운 상태에서 단말이 옵티미스틱 ACK을 전송하는 경우에, 송신 장치가 데이터 세그먼트를 전송하기 전에 그에 대응하는 옵티미스틱 ACK을 미리 수신할 수 있는 문제점을 방지하기 위한 것이다. 이때, 상기 최소 단방향 지연 시간은
Figure 112017044303264-pat00004
와 같을 수 있다. 즉, 본 발명의 일 실시 예에 따른 단말은 도 3a의 335 단계 내지 350 단계를 수행하지 않을 수 있다.
만약 RTT round의 경과 시간이 최소 단방향 지연 시간보다 더 큰 경우(또는 크거나 같은 경우)에는 단말은 360 단계로 진행하여 본 발명의 옵티미스틱 ACK 전송 방법을 사용하지 않는 일반 TCP 모드로 회귀 할 수 있다.
반면, RTT round의 경과 시간이 최소 단방향 지연 시간보다 더 큰 경우(또는 크거나 같은 경우)가 아닌 경우, 단말은 370 단계에서 미리 정해진 개수의 옵티미스틱 ACK 세그먼트를 송신할 수 있다. 그리고, 305 단계로 진행하여 다시 현재 RTT round의 데이터 세그먼트의 수신을 대기할 수 있다. 도 3b의 단말의 경우에는 RTT round가 종료되지 않았더라도, 현재 수신한 데이터 세그먼트에 대한 ACK 세그먼트를 전송하면서, 옵티미스틱 ACK 세그먼트를 전송할 수 있다.
그리고, 실시 예에 따라서 상기 도 3a 및 도 3b의 단말의 동작은 단말의 향상된 TCP 모듈에 의해 이루어질 수 있다.
도 4는 본 발명의 일 실시 예에 따른 단말에서 손실 감지 타이머가 만료되었을 때의 동작을 나타낸 순서도이다.
도 4를 참고하면, 단말은 410 단계에서 손실 감지 타이머(loss detect timer)의 만료를 대기할 수 있다. 그리고, 타이머의 만료 이벤트가 발생시 단말은 410 단계로 진행할 수 있다.
410 단계에서 단말의 향상된 TCP 모듈은 현재까지 순차적으로 전송된 데이터를 상위 계층에 전달할 수 있다. 그리고 415 단계에서는 단말의 향상된 TCP 모듈은 에러의 발생을 상위 계층, 즉 복구(recovery) 모듈에 전달할 수 있다. 상기 에러의 형태는 예를 들면, 복구 모듈과 향상된 TCP 모듈이 소켓 인터페이스를 이용하여 통신하는 경우, 새로운 유형의 소켓 에러가 될 수 있다. 그리고 상기 에러가 발생되었음을 나타내는 정보는 recvmsg()를 통해 상위 계층에 전달될 수 있다.
그리고, 실시 예에 따라서 단말은 420 단계에서는 오류가 발생된 TCP 세션을 종료시킬 수 있다. 또는 다른 실시 예에 따르면 오류가 발생된 TCP 세션을 종료하지 않고, 분실된 데이터 세그먼트의 재수신을 위하여 사용될 수 있다.
도 5는 본 발명의 일 실시 예에 따른 단말에서 옵티미스틱 ACK 타이머가 만료되었을 때의 동작을 나타낸 순서도이다.
도 5를 참고하면, 단말은 510 단계에서 옵티미스틱 ACK 타이머(optimistic Ack timer)의 만료를 대기할 수 있다. 그리고, 상기 옵티미스틱 ACK 타이머의 만료 이벤트가 발생시 520 단계로 진행할 수 있다. 실시 예에 따라서, 옵티미스틱 ACK 타이머의 만료는 현재 RTT round의 종료를 의미할 수 있다. 즉, 본 발명의 일 실시 예에 따른 단말은 현재 RTT round가 종료된 경우에 520 단계로 진행할 수 있다. 또는, 실시 예에 따라서 옵티미스틱 ACK 타이머의 만료는 미리 설정된 개수의 데이터 세그먼트의 수신을 의미할 수 있다. 즉, 본 발명의 일 실시 예에 따른 단말은 미리 설정된 개수의 데이터 세그먼트를 수신한 후, 520 단계로 진행할 수 있다. 이 경우 단말은 현재 RTT round가 종료되지 않았더라도 현재 수신한 데이터 세그먼트에 대한 ACK 세그먼트를 전송하면서, 옵티미스틱 ACK 세그먼트를 전송할 수 있다.
520 단계에서 단말은 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 TCP 송신 장치에게 송신할 수 있다. 실시 예에 따라서 상기 미리 설정된 개수는 RTT round 동안 수신된 데이터 세그먼트의 수와 동일할 수 있다. 또는 실시 예에 따라, 상기 미리 설정된 개수는 RTT round 동안 수신된 데이터 세그먼트의 수와 무관하게 미리 설정된 고정 값일 수도 있다.
그리고, 530 단계에서 단말은 옵티미스틱 ACK 송신을 사용하지 않는 일반 TCP 모드로 회귀할 수 있다. 즉, 도 5의 실시 예에서는 첫 번째 RTT round에서만 옵티미스틱 ACK이 사용되며, 이후 RTT round에서는 일반 TCP 모드의 수신 동작이 수행될 수 있다.
실시 예에 따라서 상기 도 5의 단말의 동작은 단말의 향상된 TCP 모듈에 의해 이루어질 수 있다.
도 6은 본 발명의 일 실시 예에 따른 단말에서 옵티미스틱 ACK 타이머가 만료되었을 때의 동작의 다른 일 예를 나타낸 순서도이다.
도 6을 참고하면, 610 단계에서 단말은 옵티미스틱 ACK 타이머(optimistic Ack timer)의 만료를 대기할 수 있다. 그리고, 상기 옵티미스틱 ACK 타이머의 만료 이벤트가 발생시 620 단계로 진행할 수 있다. 실시 예에 따라서, 옵티미스틱 ACK 타이머의 만료는 현재 RTT round의 종료를 의미할 수 있다. 즉, 본 발명의 일 실시 예에 따른 단말은 현재 RTT round가 종료된 경우에 620 단계로 진행할 수 있다. 또는, 실시 예에 따라서 옵티미스틱 ACK 타이머의 만료는 미리 설정된 개수의 데이터 세그먼트의 수신을 의미할 수 있다. 즉, 본 발명의 일 실시 예에 따른 단말은 미리 설정된 개수의 데이터 세그먼트를 수신한 후, 620 단계로 진행할 수 있다.
620 단계에서 단말은 현재 RTT round가 TCP 세션이 만들어진 이후에 첫 번째 RTT round인지를 확인할 수 있다.
만약, 첫 번째 RTT round 인 경우에는, 단말은 640 단계로 진행하여 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 TCP 송신 장치에게 송신할 수 있다. 실시 예에 따라서 단말은 640 단계에서 현재 RTT round에서 수신된 데이터 세그먼트 개수만큼의 옵티미스틱 ACK 세그먼트를 TCP 송신 장치에게 송신할 수 있다.
한편, 현재 RTT round가 첫 번째 RTT round가 아닌 경우에 단말은 630 단계에서 현재 slow start 상태인지 또는 congestion avoidance 상태인지 여부를 판단할 수 있다. 즉, 단말은 630 단계에서 옵티미스틱 ACK 세그먼트를 전송할 것인지 여부에 대해서 판단할 수 있다.
이를 위해서 단말은 '현재 RTT round에서 수신된 데이터 세그먼트 수'와 '이전 RTT round에서 수신된 데이터 세그먼트 수 + 이전 RTT round에서 송신한 ACK 세그먼트 수'를 비교할 수 있다. 상기 '이전 RTT round에서 송신한 ACK 세그먼트 수' 는 일반적인 ACK(normal ACK) 세그먼트의 수와 옵티미스틱 ACK 세그먼트의 수를 모두 포함하는 것이다. 이때, 일반적인 ACK 세그먼트의 수는 단말이 이전 RTT round에서 수신한 데이터 세그먼트에 대응하여 전송한 ACK 세그먼트의 수를 의미하는 것이다.
만약, '현재 RTT round에서 수신된 데이터 세그먼트 수'가 '이전 RTT round에서 수신된 데이터 세그먼트 수 + 이전 RTT round에서 송신한 ACK 세그먼트 수' 보다 작다면, 이는 TCP 송신 장치가 congestion avoidance 상태로 전이했다고 추정할 수 있다. 이 경우에는 단말은 660 단계로 진행하여 옵티미스틱 ACK을 더 이상 사용하지 않는 일반(normal) TCP 모드로 회귀할 수 있다.
반면, '현재 RTT round에서 수신된 데이터 세그먼트 수'가 '이전 RTT round에서 수신된 데이터 세그먼트 수 + 이전 RTT round에서 송신한 ACK 세그먼트 수' 보다 작지 않은 경우에는, TCP 송신 장치가 slow start 상태에 있다고 추정할 수 있다. 이 경우, 단말은 640 단계로 진행하여 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 TCP 송신 장치에게 송신할 수 있다. 실시 예에 따라서 단말은 640 단계에서 현재 RTT round에서 수신된 데이터 세그먼트 개수만큼의 옵티미스틱 ACK 세그먼트를 TCP 송신장치에게 송신할 수 있다.
한편, 630 단계에서 단말은 데이터 트레인의 길이(즉, 현재 RTT round의 경과 시간)와 최소 단방향 지연(minimum one-way delay) 시간을 비교함으로써 옵티미스틱 ACK 세그먼트를 전송할지 여부를 결정할 수도 있다. 또한, 실시 예에 따라서 단말은 '현재 RTT round에서 수신된 데이터 세그먼트 수'가 '이전 RTT round에서 수신된 데이터 세그먼트 수 + 이전 RTT round에서 송신한 ACK 세그먼트 수' 보다 작지 않은 경우, 현재 RTT round의 경과 시간과 최소 단방향 지연(minimum one-way delay) 시간을 비교함으로써 옵티미스틱 ACK 세그먼트를 전송할지 여부를 결정할 수도 있다.
이는, 현재 상태가 slow start 상태이지만 congestion avoidance 상태에 가까운 상태에서 단말이 옵티미스틱 ACK을 전송하는 경우에, 송신 장치가 데이터 세그먼트를 전송하기 전에 그에 대응하는 옵티미스틱 ACK을 미리 수신할 수 있는 문제점을 방지하기 위한 것이다. 이때, 상기 최소 단방향 지연 시간은
Figure 112017044303264-pat00005
와 같을 수 있다. 만약 현재 RTT round의 경과 시간이 최소 단방향 지연 시간보다 더 큰 경우에는 단말은 660 단계로 진행하여 본 발명의 옵티미스틱 ACK 전송 방법을 사용하지 않는 일반 TCP 모드로 회귀 할 수 있다.
그리고, 현재 RTT round의 경과 시간이 최소 단방향 지연 시간보다 더 큰 경우에는 단말은 640 단계로 진행하여 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 TCP 송신 장치에게 송신할 수 있다.
또한, 실시 예에 따라서 단말은 630 단계에서 지금까지 전송한 옵티미스틱 ACK 세그먼트의 총 개수를 미리 설정된 임계 값(MAX_NUM)과 비교하여 옵티미스틱 ACK 세그먼트를 전송할 것인지 여부를 판단할 수도 있다. 만약, 지금까지 전송한 옵티미스틱 ACK 세그먼트의 총 개수가 미리 설정된 임계 값(예를 들면, 최대 전송 옵티미스틱 ACK 세그먼트 개수; MAX_NUM)보다 큰 경우에 단말은 660 단계로 진행하여 옵티미스틱 ACK 세그먼트를 전송하지 않을 수 있다.
반면, 지금까지 전송한 옵티미스틱 ACK 세그먼트의 총 개수가 미리 설정된 임계 값(MAX_NUM)보다 작은 경우 단말은 640 단계로 진행하여 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 TCP 송신 장치에게 전송할 수 있다.
실시 예에 따라서 630 단계에서 단말은 복구 모듈(recovery module)에 의한 재전송 횟수를 미리 설정된 임계 값(예를 들면, 최대 재전송 횟수; MAX_RETRY)과 비교하여 옵티미스틱 ACK 세그먼트를 전송할 것인지 여부를 판단할 수도 있다. 만약, 복구 모듈(recovery module)에 의한 재전송 횟수가 미리 설정된 임계 값(MAX_ RETRY)보다 큰 경우에 단말은 660 단계로 진행하여 옵티미스틱 ACK 세그먼트를 전송하지 않을 수 있다. 복구 모듈(recovery module)에 의한 재전송에 대한 구체적인 설명은 후술하도록 한다.
반면, 복구 모듈(recovery module)에 의한 재전송 횟수가 미리 설정된 임계 값(MAX_ RETRY)보다 작은 경우 단말은 640 단계로 진행하여 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 TCP 송신 장치에게 전송할 수 있다.
또한, 실시 예에 따라서 630 단계에서 단말은 현재 RTT round에서 수신한 데이터 세그먼트의 개수와 이전 RTT round에서 수신한 데이터 세그먼트의 개수의 비율(현재 RTT round에서 수신한 데이터 세그먼트의 개수/이전 RTT round에서 수신한 데이터 세그먼트의 개수)을 미리 설정된 임계 값(δ)과 비교하여 옵티미스틱 ACK 세그먼트를 전송할 것인지 여부를 판단할 수도 있다.
예를 들면, TCP 송신 장치가 slow start 상태인 경우에는 RTT round마다 cwnd가 두 배씩 증가할 수 있다. 이 경우에, slow start 상태에서는 현재 RTT round에서 수신한 데이터 세그먼트의 개수와 이전 RTT round에서 수신한 데이터 세그먼트의 개수의 비율은 2와 같을 수 있다. 반면 congestion avoidance 상태에서는 cwnd가 거의 증가하지 않을 수 있다. 따라서, congestion avoidance 상태에서는 현재 RTT round에서 수신한 데이터 세그먼트의 개수와 이전 RTT round에서 수신한 데이터 세그먼트의 개수의 비율은 1에 가까운 값일 수 있다.
따라서, 단말은 현재 RTT round에서 수신한 데이터 세그먼트의 개수와 이전 RTT round에서 수신한 데이터 세그먼트의 개수의 비율이 미리 설정된 임계 값(δ)보다 작은 경우에 단말은 현재 congestion avoidance 상태인 것으로 판단할 수 있다. 그리고 단말은 660 단계로 진행하여 옵티미스틱 ACK 세그먼트를 전송하지 않을 수 있다. 예를 들면, 상기 미리 설정된 임계 값(δ)은 1 내지 2 사이의 값일 수 있다.
반면, 현재 RTT round에서 수신한 데이터 세그먼트의 개수와 이전 RTT round에서 수신한 데이터 세그먼트의 개수의 비율이 미리 설정된 임계 값(δ)보다 작지 않은 경우에 단말은 640 단계로 진행하여 미리 설정된 개수의 옵티미스틱 ACK 세그먼트를 TCP 송신 장치에게 전송할 수 있다.
640 단계를 완료 후에 단말은 650 단계로 진행하여 다음 RTT round의 데이터 수신을 대기할 수 있다. 이 단계에는 각 RTT round 내에서 유지/관리하는 변수(예를 들면, RTT round의 시작 시각 등)의 초기화 과정이 포함될 수 있다.
실시 예에 따라서 상기 도 6의 단말의 동작은 단말의 향상된 TCP 모듈에 의해 이루어질 수 있다.
도 7은 본 발명의 일 실시 예에 따른 단말에서 상위 계층이 상대 장치로 보내는 메시지를 전달받아 하위 계층을 통해 전송하는 동작을 나타내는 순서도이다.
도 7을 참고하면, 단말의 복구 모듈은 710 단계에서 상위 계층이 상대 장치로 보내는 메시지를 수신 대기할 수 있다. 실시 예에 따라서, 상기 메시지는 일례로 HTTP 요청(HTTP request) 메시지일 수 있다. 본 명세서에서는 HTTP 메시지를 이용하는 것을 가정하여 설명할 것이나, 이에 한정하는 것은 아니다.
이후, 단말은 실시 예에 따라서 715 단계에서 옵티미스틱 ACK 세그먼트의 전송이 가능한지 여부를 판단할 수 있다.
예를 들면, 단말은 현재 HTTP 버전(HTTP version)이 1.1 이상인지 여부를 확인할 수 있다. 즉, 단말은 HTTP 버전이 옵티미스틱 ACK 세그먼트의 전송을 지원하는지 여부를 판단할 수 있다. HTTP 버전 1.1 이상인 경우에는 에러가 발생한 데이터 세그먼트 이후의 데이터 세그먼트 또는 해당 데이터 세그먼트에 대한 재전송 요청 및 재전송을 지원할 수 있다. 따라서, 단말은 HTTP 버전이 1.1 이상인지 여부를 판단해, 옵티미스틱 ACK 세그먼트의 전송이 가능한지 여부를 판단할 수 있다.
또한, 단말은 HTTP 요청 메시지가 겟 메소드(GET method)인지 여부를 판단할 수 있다. HTTP 요청 메시지는 겟 메소드(GET method), 포스트 메소드(POST method), 헤드 메소드(HEAD method), 풋 메소드(PUT method) 등과 같은 메소드를 사용할 수 있다. 이 중, GET method는 단말(TCP 수신 장치)가 TCP 송신 장치로부터 하향링크 데이터를 수신하는 동작에 대응하는 것이다. 그리고, 단말의 옵티미스틱 ACK 세그먼트의 전송은, 단말이 하향링크 데이터를 수신하는 경우 신속하게 congestion avoidance 상태로 진입하기 위하여 사용될 수 있다. 따라서, 단말은 HTTP 요청 메시지가 GET method인지 여부를 판단하여, 옵티미스틱 ACK 세그먼트의 전송 동작을 수행할 것인지 여부를 결정할 수 있다.
이후, 상기 715 단계에서 단말이 옵티미스틱 ACK 세그먼트의 전송이 가능한 것으로 판단한 경우, 717 단계에서 단말은 TCP 계층에 옵티미스틱 ACK 세그먼트의 전송이 가능함을 통지할 수 있다. 반면, 단말이 옵티미스틱 ACK 세그먼트의 전송이 가능하지 않은 것으로 판단한 경우, 단말은 719 단계에서 TCP 계층에 옵티미스틱 ACK 세그먼트이 전송이 불가함을 통지할 수 있다.
실시 예에 따라서, 메시지 수신 이벤트가 발생하면 단말은 720 단계로 진행하여 상대 장치와 새로운 TCP 세션 연결을 생성할 수 있다. 만약, 이미 상대 장치와 연결된 TCP 세션이 있는 경우에는 720 단계는 생략될 수 있다.
그리고, 730 단계에서 단말은 연결된 TCP 세션을 이용하여 HTTP request 메시지를 상대 장치에 전송할 수 있다.
이후, 740 단계에서 단말은 상기 HTTP request 메시지에 대하여 상대 장치가 보내올 HTTP 응답(HTTP response) 메시지의 수신을 대기할 수 있다.
실시 예에 따라서 상기 도 7의 단말의 동작은 단말의 복구 모듈에 의해 이루어질 수 있다.
도 8은 본 발명의 일 실시 예에 따른 단말에서 상대 장치로부터의 메시지를 하위 계층으로부터 전달받아 상위 계층을 통해 전달하거나, 하위 계층으로부터 에러를 전달받아 재전송을 통한 복구(recovery)를 수행하는 동작을 나타내는 순서도이다.
도 8을 참고하면, 810 단계에서 단말의 복구 모듈은 상대 장치로부터의 메시지를 하위 계층으로부터 수신 대기할 수 있다. 상기 메시지는 일례로 HTTP response 메시지일 수 있으며, 혹은 하위 계층의 전송 오류를 나타내는 에러 메시지일 수 있다.
실시 예에 따라, 단말이 HTTP response 메시지를 수신한 경우, 813 단계에서 HTTP response 메시지를 분석할 수 있다. 그리고, 상기 HTTP response 메시지의 분석 결과를 이용하여 815 단계에서 옵티미스틱 ACK 세그먼트의 전송을 계속할 수 있는지 여부를 판단할 수 있다.
예를 들면, 815 단계에서 단말은 옵티미스틱 ACK 세그먼트의 전송을 계속할 수 있는지 여부를 판단하기 위해서, HTTP response 메시지 내에 억셉트 레인지(Accept-Ranges) 헤더가 있는지 여부를 판단할 수 있다. Accept-Ranges 헤더는 "Accept-Ranges: bytes"와 같이 HTTP response 메시지 내에 존재할 수 있으며, 이는 에러가 발생한 데이터 세그먼트 이후의 데이터 세그먼트 또는 해당 데이터 세그먼트에 대한 재전송 요청 및 재전송을 지원할 수 있음을 지시할 수 있다. 따라서, HTTP response 메시지에 Accept-Ranges 헤더가 존재하지 않는 경우, 단말은 옵티미스틱 ACK 세그먼트의 전송을 중단해야 하는 것으로 판단할 수 있다.
또한, 실시 예에 따라서 단말은 트랜스퍼 인코딩(Transfer-encoding) 헤더에서 청크드(chunked)로 지정되어 있는지 여부를 판단할 수 있다. Transfer-encoding 헤더는 "Transfer-encoding: chunked"와 같이 HTTP response 메시지 내에 존재할 수 있고, 이 경우 데이터의 전체 크기(길이)가 미정인 상태임을 나타내는 것이다. 데이터의 전체 크기가 미정인 경우에 단말은 후술하는 것과 같이 에러가 발생한 데이터 세그먼트 이후의 데이터 세그먼트들에 대한 재전송 요청을 할 수 없으므로, Transfer-encoding 헤더가 chunked로 지정되어 있는 경우, 단말은 옵티미스틱 ACK 세그먼트의 전송을 중단해야 하는 것으로 판단할 수 있다.
또한, 실시 예에 따라서 단말은 컨텐츠 길이(Content-Length) 헤더 값이 없거나 유효하지 않은지 여부를 판단할 수 있다. Content-Length 헤더 값이 없거나 유효하지 않은 경우에는 단말이 수신하는 데이터의 전체 길이를 알 수 없다. 이 경우에 단말은 후술하는 것과 같이 에러가 발생한 데이터 세그먼트 이후의 데이터 세그먼트들에 대한 재전송 요청이 불가능할 수 있다. 따라서, Content-Length 헤더 값이 없거나 유효하지 않은 경우 단말은 옵티미스틱 ACK 세그먼트의 전송을 중단해야 하는 것으로 판단할 수 있다.
상기 815 단계에서 단말이 옵티미스틱 ACK 세그먼트의 전송을 중단해야 하는 것으로 판단한 경우, 단말은 817 단계에서 TCP 계층에 일반(normal) 모드로 복귀하도록 지시할 수 있다.
그리고, 단말이 옵티미스틱 ACK 세그먼트의 전송을 계속할 수 있는 것으로 판단한 경우, 단말의 복구 모듈은 820 단계에서 하위 계층으로부터 에러 메시지가 전달되었는지를 확인할 수 있다.
이때, 에러 메시지는 상술한 것과 같이 손실 감지 타이머의 만료에 따라서 발생할 수 있다. 그리고, 상기 에러 메시지는 손실된 데이터 세그먼트에 대한 정보를 포함할 수 있다.
예를 들면, 제6 내지 제10 옵티미스틱 ACK 세그먼트를 전송하였으나, 손실 감지 타이머의 만료 전까지 제8 데이터 세그먼트를 수신하지 못한 경우, 상기 제8 데이터 세그먼트가 손실되었음을 나타내는 에러 메시지일 수 있다.
실시 예에 따라서, 손실 감지 타이머는 단말이 옵티미스틱 ACK 세그먼트를 전송할 때, 각각의 옵티미스틱 ACK 세그먼트 별로 구동될 수 있다. 이때, 각각의 손실 감지 타이머의 만료 전까지 그에 대응하는 데이터 세그먼트가 수신되지 않은 경우, 복구 모듈은 에러 메시지를 하위 계층으로부터 수신할 수 있다. 이때, 복구 모듈은 손실이 발생한 데이터 세그먼트 별로 에러 메시지를 수신할 수도 있으며, 한 RTT round 동안에 손실이 발생된 데이터 세그먼트에 대한 정보가 함께 포함되어 하나의 에러 메시지로 수신할 수도 있다.
예를 들면, 단말이 제6 내지 제10 옵티미스틱 ACK 세그먼트를 전송하면서 제6 내지 제10 손실 감지 타이머를 구동한 경우에, 제7 손실 감지 타이머 및 제9 손실 감지 타이머의 만료 전까지 제7 데이터 세그먼트 및 제9 데이터 세그먼트가 수신되지 않을 수 있다. 이 경우, 복구 모듈은 제7 데이터 세그먼트가 손실되었음을 나타내는 정보가 포함된 제1 에러 메시지와, 제9 데이터 세그먼트가 손실되었음을 나타내는 정보가 포함된 제2 에러 메시지를 하위 계층으로부터 수신할 수 있다. 또는 실시 예에 따라서 복구 모듈은 제7 데이터 세그먼트 및 제9 데이터 세그먼트가 손실되었음을 나타내는 정보가 포함된 에러 메시지를 하위 계층으로부터 수신할 수도 있다.
상기 820 단계에서 판단 결과 에러 메시지가 수신된 경우, 단말의 복구 모듈은 830 단계로 진행하여 에러가 발생한 데이터 세그먼트의 재전송을 요청하는 정보가 포함된 재전송 요청 메시지를 생성할 수 있다. 이때, 상기 재전송 요청 메시지는 정상적으로 수신된 메시지 바디(message-body)의 다음 바이트(byte)를 시작 구간으로 하는 HTTP 범위 요청(HTTP range request) 메시지일 수 있다. 예를 들면, 제6 내지 제10 데이터 세그먼트 중 제8 데이터 세그먼트의 손실로 인한 에러 메시지를 수신한 경우, 단말은 상기 제8 데이터 세그먼트를 시작 구간으로 하는 HTTP 범위 요청 메시지를 생성할 수 있다. 이 경우 단말은 제8 내지 제10 데이터 세그먼트의 재전송을 요청하게 된다.
또는 실시 예에 따라서, 단말의 복구 모듈은 에러가 발생한 데이터 세그먼트만의 재전송을 요청하는 정보가 포함된 재전송 요청 메시지를 생성할 수 있다. 예를 들면, 제6 내지 제10 데이터 세그먼트 중 제7 및 제9 데이터 세그먼트의 손실로 인한 에러 메시지를 수신한 경우, 단말은 제7 및 제9 데이터 세그먼트의 재전송을 요청하는 HTTP 범위 요청 메시지를 생성할 수 있다.
그리고, 실시 예에 따라서, 단말은 840 단계에서 에러가 발생한 기존 세션의 연결을 해제하고 새로운 세션 연결을 생성할 수 있다. 또는 실시 예에 따라서 단말은 기존 세션의 연결을 해제하지 않고 이를 이용하여 손실 복구 동작을 수행할 수도 있다.
이후, 850 단계에서 단말은 상기 830 단계에서 생성한 HTTP range request 메시지를 기존의 세션 또는 상기 840 단계에서 생성한 새로운 세션을 통하여 상대 장치에 전송할 수 있다. 그리고, 단말은 810 단계로 돌아가 상기 HTTP range request에 대하여 상대 장치가 보내올 HTTP response 메시지의 수신을 대기할 수 있다.
한편, 820 단계에서 단말의 복구 모듈이 하위 계층으로부터 에러가 아닌 정상 메시지를 수신한 경우에, 860 단계로 진행하여, 전체(모든) 메시지(HTTP response)의 수신이 완료되었는지를 확인할 수 있다.
만약, 전체 메시지의 수신이 완료된 경우에는 단말의 복구 모듈은 870 단계에서 상위 계층에 전체 HTTP response 메시지를 전달할 수 있다. 그리고, 880 단계에서 단말은 세션을 종료할 수 있다(만약, 이후에 다른 메시지 처리를 위해 세션을 유지하고자 하는 경우에는 880 단계가 생략될 수 있다.).
한편, 860 단계에서 전체 수신이 완료되지 않은 경우(예를 들면, HTTP response 메시지 중 일부만 수신된 경우)에, 단말의 복구 모듈은 810 단계로 다시 진행하여 나머지 메시지가 하위계층으로부터 전달되기를 대기할 수 있다.
본 명세서와 도면에 개시된 실시 예는 기술 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
110: 어플리케이션 120: 복구모듈
130: 향상된 TCP 모듈 140: 네트워크 인터페이스

Claims (14)

  1. 무선 통신 시스템의 단말에 의해 수행되는 방법에 있어서,
    송신 장치로부터 적어도 하나의 데이터 세그먼트를 수신하는 단계;
    상기 송신 장치에게 상기 적어도 하나의 데이터 세그먼트에 대응하는 적어도 하나의 긍정 응답(ACK: acknowledgement) 세그먼트를 전송하는 단계;
    수신될 데이터 세그먼트에 대응하는 옵티미스틱(optimistic) ACK 세그먼트의 개수를 결정하는 단계;
    느린 시작(slow start) 상태인 동안에 제1 미리 설정된 시점에, 상기 결정된 개수의 옵티미스틱 ACK 세그먼트를 상기 송신 장치에게 전송하는 단계; 및
    상기 결정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트들 중 적어도 하나의 데이터 세그먼트가 제2 미리 설정된 시간 내에 수신되지 않은 경우, 상기 송신 장치에게 수신되지 않은 데이터 세그먼트의 재전송을 요청하는 메시지를 전송하는 단계를 포함하고,
    상기 결정된 개수의 옵티미스틱 ACK 세그먼트의 개수는 현재 왕복 시간(RTT: round trip time) 라운드(round)에서 수신된 데이터 세그먼트의 개수와 동일하고,
    상기 결정된 개수의 옵티미스틱 ACK 세그먼트를 전송하는 단계는, 상기 현재 RTT 라운드에서 수신된 데이터 세그먼트의 수가, 이전 RTT 라운드에서 수신된 데이터 세그먼트의 수와 이전 RTT 라운드에서 송신한 ACK 세그먼트의 수의 합보다 크거나 같은 경우, 상기 제1 미리 설정된 시점에 상기 결정된 개수의 옵티미스틱 ACK 세그먼트를 상기 송신 장치에게 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 삭제
  3. 제1 항에 있어서, 상기 느린 시작 상태는 혼잡 윈도우(congestion window)가 매 RTT 라운드에서 지수적으로(exponentially) 증가하는 상태인 것을 특징으로 하는 방법.
  4. 삭제
  5. 제1 항에 있어서, 상기 결정된 개수의 옵티미스틱 ACK 세그먼트를 전송하는 단계는,
    상기 RTT 라운드의 경과 시간이 최소 단방향 지연(minimum one-way delay) 시간보다 작은 경우, 상기 제1 미리 설정된 시점에 상기 결정된 개수의 ACK 세그먼트를 상기 송신 장치에게 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 삭제
  7. 제1 항에 있어서,
    상기 결정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트가 순차적으로(in-sequence) 수신되지 않은 경우, 손실 감지 타이머를 구동하는 단계; 및
    상기 손실 감지 타이머의 만료 시까지 상기 결정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트가 순차적으로 수신되지 않은 경우, 정상적으로 수신된 데이터 세그먼트의 다음 데이터 세그먼트를 시작 구간으로 하는 재전송 요청 메시지를 상기 송신 장치에게 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 무선 통신 시스템의 단말에 있어서,
    통신부; 및
    송신 장치로부터 적어도 하나의 데이터 세그먼트를 상기 통신부를 통해 수신하고, 상기 송신 장치에게 상기 적어도 하나의 데이터 세그먼트에 대응하는 적어도 하나의 긍정 응답(ACK: acknowledgement) 세그먼트를 상기 통신부를 통해 전송하고, 수신될 데이터 세그먼트에 대응하는 옵티미스틱(optimistic) ACK 세그먼트의 개수를 결정하고, 느린 시작(slow start) 상태인 동안에 제1 미리 설정된 시점에, 상기 결정된 개수의 옵티미스틱(optimistic) ACK 세그먼트를 상기 송신 장치에게 상기 통신부를 통해 전송하고, 상기 결정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트들 중 적어도 하나의 데이터 세그먼트가 제2 미리 설정된 시간 내에 수신되지 않은 경우, 상기 송신 장치에게 수신되지 않은 데이터 세그먼트의 재전송을 요청하는 메시지를 상기 통신부를 통해 전송하는 제어부를 포함하고,
    상기 결정된 개수의 옵티미스틱 ACK 세그먼트의 개수는 현재 왕복 시간(RTT: round trip time) 라운드(round)에서 수신된 데이터 세그먼트의 개수와 동일하고,
    상기 제어부는, 상기 현재 RTT 라운드에서 수신된 데이터 세그먼트의 수가, 이전 RTT 라운드에서 수신된 데이터 세그먼트의 수와 이전 RTT 라운드에서 송신한 ACK 세그먼트의 수의 합보다 크거나 같은 경우, 상기 제1 미리 설정된 시점에 상기 결정된 개수의 옵티미스틱 ACK 세그먼트를 상기 송신 장치에게 상기 통신부를 통해 전송하는 것을 특징으로 하는 단말.
  9. 삭제
  10. 제8 항에 있어서,
    상기 느린 시작 상태는 혼잡 윈도우(congestion window)가 매 RTT 라운드에서 지수적으로(exponentially) 증가하는 상태인 것을 특징으로 하는 단말.
  11. 삭제
  12. 제8 항에 있어서, 상기 제어부는,
    상기 RTT 라운드의 경과 시간이 최소 단방향 지연(minimum one-way delay) 시간보다 작은 경우, 상기 제1 미리 설정된 시점에 상기 결정된 개수의 ACK 세그먼트를 상기 송신 장치에게 상기 통신부를 통해 전송하는 것을 특징으로 하는 단말.
  13. 삭제
  14. 제8 항에 있어서, 상기 제어부는,
    상기 결정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트가 순차적으로(in-sequence) 수신되지 않은 경우, 손실 감지 타이머를 구동하고, 상기 손실 감지 타이머의 만료 시까지 상기 결정된 개수의 옵티미스틱 ACK 세그먼트에 대응하는 데이터 세그먼트가 순차적으로 수신되지 않은 경우, 정상적으로 수신된 데이터 세그먼트의 다음 데이터 세그먼트를 시작 구간으로 하는 재전송 요청 메시지를 상기 송신 장치에게 상기 통신부를 통해 전송하는 것을 특징으로 하는 단말.
KR1020170058016A 2016-05-10 2017-05-10 단말 및 그 통신 방법 KR102352428B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160056921 2016-05-10
KR1020160056921 2016-05-10

Publications (2)

Publication Number Publication Date
KR20170126808A KR20170126808A (ko) 2017-11-20
KR102352428B1 true KR102352428B1 (ko) 2022-01-19

Family

ID=60267876

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170058016A KR102352428B1 (ko) 2016-05-10 2017-05-10 단말 및 그 통신 방법

Country Status (4)

Country Link
US (1) US10728131B2 (ko)
EP (1) EP3417585B1 (ko)
KR (1) KR102352428B1 (ko)
WO (1) WO2017196064A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10742561B2 (en) * 2017-03-28 2020-08-11 Cisco Technology, Inc. Prevention of network retransmission timeout
US10356658B2 (en) 2017-07-10 2019-07-16 Google Llc Packet segmentation and reassembly for mesh networks
FR3129049A1 (fr) * 2021-11-05 2023-05-12 Orange Procédé de gestion d’une retransmission de données échangées sur un chemin établi entre un premier équipement de communication et un deuxième équipement de communication au moyen d’une valeur d’un paramètre de performance intermédiaire déterminée par un nœud intermédiaire appartenant audit chemin

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090213850A1 (en) * 2008-01-30 2009-08-27 Canon Kabushiki Kaisha Method for transmitting a data stream with anticipation of acknowledgments, correspondence input device and computer-readable storage medium
WO2015118553A1 (en) * 2014-02-06 2015-08-13 Council Of Scientific & Industrial Research Method and device for detecting a malicious sctp receiver terminal

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0018119D0 (en) * 2000-07-24 2000-09-13 Nokia Networks Oy Flow control
US7385923B2 (en) 2003-08-14 2008-06-10 International Business Machines Corporation Method, system and article for improved TCP performance during packet reordering
US20070008884A1 (en) 2003-10-08 2007-01-11 Bob Tang Immediate ready implementation of virtually congestion free guarantedd service capable network
US7609640B2 (en) 2003-12-19 2009-10-27 Nokia Corporation Methods and applications for avoiding slow-start restart in transmission control protocol network communications
CA2589161A1 (en) 2004-11-29 2006-06-01 Bob Tang Immediate ready implementation of virtually congestion free guaranteed service capable network: external internet nextgentcp (square wave form) tcp friendly san
GB0703068D0 (en) 2007-02-16 2007-03-28 British Telecomm Monitoring behaviour of data receivers using data networks
US8364812B2 (en) 2010-08-27 2013-01-29 Sandvine Incorporated Ulc Method and system for network data flow management
US9178789B2 (en) 2011-08-19 2015-11-03 Futurewei Technologies, Inc. System and method for transmission control protocol slow-start
US10009445B2 (en) 2012-06-14 2018-06-26 Qualcomm Incorporated Avoiding unwanted TCP retransmissions using optimistic window adjustments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090213850A1 (en) * 2008-01-30 2009-08-27 Canon Kabushiki Kaisha Method for transmitting a data stream with anticipation of acknowledgments, correspondence input device and computer-readable storage medium
WO2015118553A1 (en) * 2014-02-06 2015-08-13 Council Of Scientific & Industrial Research Method and device for detecting a malicious sctp receiver terminal

Also Published As

Publication number Publication date
KR20170126808A (ko) 2017-11-20
EP3417585A1 (en) 2018-12-26
WO2017196064A1 (en) 2017-11-16
US20170331715A1 (en) 2017-11-16
EP3417585A4 (en) 2019-02-13
US10728131B2 (en) 2020-07-28
EP3417585B1 (en) 2021-06-30

Similar Documents

Publication Publication Date Title
US10972226B2 (en) Disabling, using an explicit indication, hybrid automatic repeat request (HARQ) acknowledgments for packets for which acknowledgements are supported at a network or higher layer
EP2888853B1 (en) Tcp proxy server
WO2018121294A1 (zh) 一种报文传输方法、终端、网络设备及通信系统
EP2681880B1 (en) Controlling network device behavior
US8010861B2 (en) System for fast recovery from losses for reliable data communication protocols
US10560382B2 (en) Data transmission method and apparatus
WO2018082615A1 (zh) 一种发送报文的方法、装置、芯片及终端
JP4654926B2 (ja) 通信システム、通信装置及びそれらに用いる輻輳制御方法並びにそのプログラム
KR102352428B1 (ko) 단말 및 그 통신 방법
US11671377B2 (en) System and method for reducing bandwidth usage of a network
US10524175B2 (en) Data transmission method and network device
EP2996275A1 (en) Link processing method and mobile terminal in multiplexing control protocol
US20140355623A1 (en) Transmission Control Protocol (TCP) Connection Control Parameter In-Band Signaling
KR101741003B1 (ko) 중복된 애크를 이용한 통신 방법
Cisco Stream Control Transmission Protocol (SCTP) Release 2
JP4531302B2 (ja) パケット中継装置、及びその方法
KR101511225B1 (ko) 패킷 송수신을 제어하는 망연동장치 및 방법
KR101396785B1 (ko) 네트워크 장치에서 tcp 기능을 수행하는 방법

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