KR100922472B1 - 통신 단말, 통신 제어 방법 및 통신 제어 프로그램 - Google Patents

통신 단말, 통신 제어 방법 및 통신 제어 프로그램 Download PDF

Info

Publication number
KR100922472B1
KR100922472B1 KR1020070090793A KR20070090793A KR100922472B1 KR 100922472 B1 KR100922472 B1 KR 100922472B1 KR 1020070090793 A KR1020070090793 A KR 1020070090793A KR 20070090793 A KR20070090793 A KR 20070090793A KR 100922472 B1 KR100922472 B1 KR 100922472B1
Authority
KR
South Korea
Prior art keywords
segment
bytes
transmission
rtt
reception
Prior art date
Application number
KR1020070090793A
Other languages
English (en)
Other versions
KR20080023176A (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
Priority claimed from JP2007215080A external-priority patent/JP4435817B2/ja
Application filed by 가부시키가이샤 엔.티.티.도코모 filed Critical 가부시키가이샤 엔.티.티.도코모
Publication of KR20080023176A publication Critical patent/KR20080023176A/ko
Application granted granted Critical
Publication of KR100922472B1 publication Critical patent/KR100922472B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/187Details of sliding window management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

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

Abstract

네트워크로의 과잉의 세그먼트의 송신을 효과적으로 억제할 수 있도록 한다.
수신 바이트수 계산부(14)는, 최소 시간 계측부(13)로 계측된 RTT의 최소값의 기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하고, 타겟 계산부(15)는, 수신 바이트수 계산부(14)로 산출된 수신 세그먼트의 바이트수에 기초하여, 세그먼트의 송신 제어에 이용하는 타겟을 계산하며, 송신 세그먼트 제어부 (16)는, 타겟 계산부(15)로 계산된 타겟에 기초하여, 세그먼트의 송신 제어를 행한다.

Description

통신 단말, 통신 제어 방법 및 통신 제어 프로그램{COMMUNICATION TERMINAL, COMMUNICATION CONTROL METHOD, AND COMMUNICATION CONTROL PROGRAM}
본 발명은 통신 단말, 통신 제어 방법 및 통신 제어 프로그램에 관한 것으로서, 특히, TCP(Transmission Control Protocol)에 있어서의 폭주(輻輳)제어방법에 적용하기에 적합한 것이다.
현재, 인터넷에서 폭넓게 이용되고 있는 TCP에서는, 네트워크의 폭주를 회피하기 위해서, 세그먼트를 송신할 때에 폭주 윈도우(CWND)를 이용하여 폭주제어가 이루어지고 있다.
일반적으로 TCP의 폭주제어 알고리즘에서는, 아래와 같이 하여 폭주 윈도우 (CWND)의 설정이 이루어진다.
1. ACK(Acknowlegment) 수신시
1.1. Slow Start시
CWND(n+1) = CWND(n) + a×MSS로 설정한다.
1.2. Congestion Avoidance시
CWND(n+1) = CWND(n) + a/CWND(n)으로 설정한다.
2. 패킷 로스 발생시
CWND(n+1) = (1-b)×CWND(n)으로 설정한다.
다만, MSS(Maximum Segment Size)는 송신측이 송신할 수 있는 최대 세그먼트 (segment) 사이즈이다. 또한, CWND(CONGESTION WINDOW)는, TCP의 송신 가능 사이즈를 제한하는 TCP 스테이트 변수이다.
통상의 TCP에서는, a=1, b=0.5가 이용된다.
이 TCP의 폭주제어 알고리즘에서는, 세그먼트 로스를 계기로 하여 CWND를 감소시켜, 폭주제어가 이루어지기 때문에, 세그먼트 로스가 발생하지 않는 한, CWND가 계속 증가한다. 이 때문에, 세그먼트 로스가 발생하지 않는 한, CWND가 증가하여, 중계 노드의 수신 버퍼의 이용율의 상승에 의해서 RTT(Round Trip Time)의 증가를 초래한다.
예를 들면, 비특허 문헌 1에는, 송신측의 Slow Start를 고려하여, 수신측이 1RTT의 사이에 어플리케이션으로 읽어들인 바이트수(rcv_bytes)의 2배를 광고 윈도우로서 송신측에 전달하고, 송신측이 세그먼트의 송신량을 rcv_bytes×2로 억제함으로써, 여분의 세그먼트의 송신을 방지하는 방법이 개시되어 있다.
도 7은, 종래의 RTT의 계측 방법을 나타내는 도면이다. 각 세그먼트는 10byte의 데이터를 가진다고 상정하여, 각 세그먼트의 최초의 순서 번호를 seq로서 도면에 표시하고 있다.
도 7에 있어서, TCP 수신측(32)에서는, 광고 윈도우(rcv_wnd)를 이용하여 ack(acknowledge number) + rcv_wnd의 seq(sequence number) - 1를 TCP 송신측(31) 으로부터 받을 때까지의 시간을 1RTT로 할 수 있다.
예를 들면, ack=210, rcv_wnd=60으로 하면, TCP 수신측(32)에서는, seq=210으로부터 seq=269(ack+rcv_wnd-1)를 TCP 송신측(31)으로부터 받을 때까지의 시간을 1RTT로 할 수 있다.
[비특허 문헌 1] Dynamic Right-Sizing in TCP Mike Fisk and W. Feng 2nd Annual Los Alamos Computer Science Institute Symposium(LA CSI2001), Santa Fe, New Mexico, October 2001
그러나, 비특허 문헌 1에 개시된 방법에서는, RTT의 계측이나 rcv_bytes의 산출이 TCP 수신측(32)에서 이루어지기 때문에, RTT의 계측 정밀도의 열화를 초래하거나, 과잉의 세그먼트의 송출을 하거나 한다고 하는 문제가 있었다.
도 8은, 종래의 RTT의 계측 방법의 문제점을 나타내는 도면이다.
도 8에 있어서, CWND가 rcv_wnd보다 작으면 RTT가 통상보다 길게 계측되고, rcv_bytes가 증가하기 때문에, 과잉의 세그먼트의 송출이 이루어진다. 예를 들면, ack=210, rcv_wnd=60으로 하고, CWND=40으로 하면, seq=230이 송신되는 시각과 seq=240이 송신되는 시각과의 사이의 간격이 커진다. 이 때문에, TCP 수신측(32)에서는, seq=210으로부터 seq=269를 받을 때까지의 시간이 1RTT가 되기 때문에, RTT가 통상보다 길게 계측된다.
또한, 비특허 문헌 1에 개시된 방법에서는, rcv_bytes의 2배를 광고 윈도우 로서 송신측에 전달하는 동시에, 계측된 rcv_bytes의 최대값을 이용하기 때문에, 「1RTT의 사이에 송신한 바이트수=1RTT의 사이에 수신한 바이트수」와 같은 이상적인 경우에 비하면, 과잉의 세그먼트의 송출이 이루어진다.
따라서, 본 발명의 목적은, 네트워크로의 과잉의 세그먼트의 송신을 효과적으로 억제하는 것이 가능한 통신 단말, 통신 제어 방법 및 통신 제어 프로그램을 제공하는 것이다.
상술한 과제를 해결하기 위해서, 청구항 1에 기재된 통신 단말에 의하면, 일정기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하는 수신 바이트수 계산부와, 상기 수신 바이트수 계산부로 산출된 세그먼트의 바이트수에 기초하여, 송신 세그먼트수를 제어하는 송신 세그먼트 제어부를 구비한 것을 특징으로 한다.
또한, 청구항 2에 기재된 통신 단말에 의하면, RTT의 최소값을 계측하는 최소 시간 계측부와, 상기 최소 시간 계측부로 계측된 RTT의 최소값의 기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하는 수신 바이트수 계산부와, 상기 수신 바이트수 계산부로 산출된 세그먼트의 바이트수에 기초하여, 송신 세그먼트수를 제어하는 송신 세그먼트 제어부를 구비한 것을 특징으로 한다.
또한, 청구항 3에 기재된 통신 단말에 의하면, 상기 최소 시간 계측부는, 세그먼트의 송신이 소정 시간 이상 이루어지지 않을 경우, 혹은 폭주 윈도우가 초기 윈도우 사이즈를 밑돌 경우, 혹은 소정의 계측 시간에 걸쳐 상기 RTT의 최소값에서 규정되는 값 이하의 RTT가 계측되지 않을 경우, 상기 RTT의 최소값을 재설정하는 것을 특징으로 한다.
또한, 청구항 4에 기재된 통신 단말에 의하면, 상기 송신 세그먼트 제어부는, 송신측이 송신할 수 있는 최대 세그먼트 사이즈, 혹은 ACK된 바이트수에 기초하여, 세그먼트의 송출을 제한하는 것을 특징으로 한다.
또한, 청구항 5에 기재된 통신 단말에 의하면, 상기 수신 바이트수 계산부로 산출된 세그먼트의 바이트수를 고려하지 않고, ACK 수신시 또는 패킷 로스 발생시의 폭주 윈도우 또는 슬로우 스타트 역치를 계산하는 폭주 윈도우 계산부를 더 구비하고, 상기 송신 세그먼트 제어부는, 상기 폭주 윈도우 계산부로 계산된 폭주 윈도우 또는 슬로우 스타트 역치에 기초하여 세그먼트의 송신 제어를 행하는 것을 특징으로 한다.
또한, 청구항 6에 기재된 통신 제어 방법에 의하면, 일정기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하는 스텝과, 상기 송신측에서 산출된 세그먼트의 바이트수에 기초하여, 송신 세그먼트수를 제어하는 스텝을 구비한 것을 특징으로 한다.
또한, 청구항 7에 기재된 통신 제어 프로그램에 의하면, 일정기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하는 스텝과, 상기 송신측에서 산출된 세그먼트의 바이트수에 기초하여, 송신 세그먼트수를 제어하는 스텝을 컴퓨터에 실행시키는 것을 특징으로 한다.
이상 설명한 바와 같이, 본 발명에 의하면, 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출함으로써, 송신측의 사정을 고려하면서, 수신측에 도달한 세그먼트의 바이트수를 송신측에 전달할 필요가 없어져, 네트워크에의 과잉의 세그먼트의 송신을 효과적으로 억제하는 것이 가능해진다.
아래에, 본 발명의 실시형태와 관련된 통신 단말에 대하여 도면을 참조하면서 설명한다.
도 1은, 본 발명의 제1 실시형태와 관련된 송신 단말의 개략 구성을 나타내는 블록도이다.
도 1에 있어서, 송신 단말(11)에는, 인터넷 등의 네트워크를 통하여 보내진 세그먼트를 수신하는 세그먼트 수신부(12), RTT의 최소값을 계측하는 최소 시간 계측부(13), 최소 시간 계측부(13)로 계측된 RTT의 최소값의 기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하는 수신 바이트수 계산부(14), 수신 바이트수 계산부(14)로 산출된 수신 세그먼트의 바이트수에 기초하여, 세그먼트의 송신 제어에 이용하는 타겟을 계산하는 타겟 계산부(15), 타겟 계산부(15)로 계산된 타겟에 기초하여, 세그먼트의 송신 제어를 행하는 송신 세그먼트 제어부(16) 및 인터넷 등의 네트워크를 통하여 세그먼트를 송신하는 세그먼트 송신부(17)가 설치되어 있다.
그리고, 최소 시간 계측부(13)는, TCP로 이루어진 방법과 동일하게 하여 RTT를 계측할 수 있다. 즉, Timestamp Option을 이용할 수 있는 경우, 최소 시간 계 측부(13)는, ACK(Acknowledgement)의 수신시에, (현재의 시각)-(Timestamp Echo)을 RTT로 할 수 있다.
한편, Timestamp Option을 이용할 수 없는 경우, 최소 시간 계측부(13)는, ACK의 수신시에, (현재의 시각)-(Ack된 세그먼트가 송신된 시각)을 RTT로 할 수 있다.
그리고, 최소 시간 계측부(13)는, 세그먼트가 송신되고 있는 동안에 RTT의 계측을 계속해서 행하고, RTT의 최소값(rtt_min)이 계측될 때마다 RTT의 최소값 (rtt_min)을 갱신하면서, RTT의 최소값(rtt_min)을 수신 세그먼트의 바이트수 (rcv_bytes)의 계산에 이용할 수 있다.
또한, 루트의 변환이나 수신 단말의 이동 등에 의해서 RTT가 크게 변화하는 경우를 고려하여, 이하의 경우에는 RTT의 최소값(rtt_min)를 재설정할 수도 있다.
① 세그먼트의 송신이 1RTT 이상의 시간 이루어지지 않을 경우.
이 경우에는, 1RTT로서는, RTT의 최소값(rtt_min) 외에, TCP에 있어서 RTT로부터 계산되는 RTO(Retransmission Timeout)를 이용할 수 있다.
② CWND가 초기 윈도우 사이즈를 밑돌 경우.
③ 수RTT에 걸쳐 rtt_min×(target/rcv_bytes+1)(target는 후술) 이하의 RTT가 계측되지 않을 경우. 여기서, 계측하는 기간으로서는, rcv_bytes의 계측의 1RTT, 계측한 값에 기초하여 송신 세그먼트수를 제어하는 기간 1RTT를 고려하여, 2RTT 이상을 설정한다.
다음에, 수신 바이트수 계산부(14)는, 최소 시간 계측부(13)로 RTT의 최소값 (rtt-min)이 계측되면, RTT의 최소값(rtt_min)의 시간내에 수신한 ACK 또는 SACK (Selective Acknowledgement)의 정보로부터, 수신 세그먼트의 바이트수(rcv_bytes)를 산출한다.
도 2는, 본 발명의 일실시형태와 관련된 수신 세그먼트의 바이트수의 계측 포인트를 종래예와 비교하여 나타내는 블록도이다.
도 2에 있어서, TCP 송신측(21)으로부터는, 세그먼트(24)가 네트워크(23)를 통하여 TCP 수신측(22)으로 보내진다. 그리고, TCP 수신측(22)에서 수신된 세그먼트(24)는 수신 버퍼(26)에 유지되고, 수신 버퍼(26)를 통하여 어플리케이션(25)에 읽혀진다.
여기서, 도 5의 방법에서는, 어플리케이션(25)에 읽히는 시점 P2의 세그먼트 (24)의 바이트수가 폭주제어에 이용된다. 이 때문에, 세그먼트의 재발송이 있을 경우에는 어플리케이션(25)에 읽히는 시점 P2의 세그먼트수가 과소/과대하게 평가되어 버려, 정확한 제어를 행할 수 없다.
이에 대해서, 본 실시형태에서는, 수신한 시점 P1의 세그먼트(24)의 바이트수를 폭주제어에 이용함으로써, 네트워크에의 과잉의 세그먼트의 송신을 효과적으로 억제하는 것이 가능해진다.
도 3은, 본 발명의 일실시형태와 관련된 수신 세그먼트의 바이트수의 계측 방법을 나타내는 도면이다.
도 3에 있어서, TCP 송신측(21)에서는, RTT의 최소값(rtt_min)의 시간내에 TCP 수신측(22)으로부터 수신한 ACK의 정보로부터, 수신 세그먼트의 바이트수(rcv_ bytes)가 산출된다.
구체적으로는, 수신 세그먼트의 바이트수(rcv_bytes)는, 아래와 같이 하여 계측할 수 있다.
·SACK Option이 서포트되어 있는 경우.
RTT의 최소값(rtt_min)의 시간내에 받아들인 ACK에 의해서 수신 단말에 수신이 통지된 최대의 시퀀스 번호(rcv_ack)로부터, 계측을 개시했을 때에 ACK를 수신하고 있지 않은 선두 세그먼트의 시퀀스 번호수(drs_snd_una)를 뺀 값을 이용할 수 있다.
또한, 세그먼트의 재발송중에 있어서는, RTT의 최소값(rtt_m in)의 시간내에 재발송한 세그먼트의 합계 바이트수를 고려하기 때문에, 받아들인 ACK의 SACK Option에 의해서 통지된 세그먼트의 합계의 바이트수(sack_end)로부터, 계측을 개시했을 때에 SACK Option에 의해서 통지된 세그먼트의 합계의 바이트수 (sack_start)를 뺀 값을 최초의 값에 더한다.
즉, rcv_bytes = rcv_ack - drs_snd_una + (sack_end - sack_start)이 된다.
한편, 세그먼트 로스가 발생하고 있지 않은 경우, sack_end 및 sack_start의 양쪽 모두 0이 되므로, rcv_bytes = rcv_ack - drs_snd_una가 된다. 또한, RTT의 최소값(rtt_min)의 시간내에 세그먼트 로스가 해소되었을 경우, sack_end 는 0이 되어, sack_start만이 유효하게 된다.
·SACK Option가 서포트되어 있지 않은 경우.
이 경우에는, 중복 ACK[rcv_ack가 ACK를 수신하고 있지 않은 최소의 세그먼 트(snd_una) 이하의 ack]의 수를 고려하여 수신 세그먼트의 바이트수(rcv_bytes)를 산출할 수 있다.
즉, RTT의 최소값(rtt_min)의 시간내에 마지막에 받아들인 ACK에 의해서 수신 단말에 수신이 통지된 순서 번호(rcv_ack)로부터, 계측을 개시했을 때에 ACK를 수신하고 있지 않은 선두 세그먼트의 순서 번호(drs_snd_una)를 뺀 값을 이용할 수 있다.
또한, 세그먼트의 재발송중에는, 재발송한 세그먼트의 합계 바이트수를 고려하기 때문에, RTT의 최소값(rtt_min)의 시간내에 수신한 중복 ACK의 수×MSS (dack_end)로부터, 계측을 개시했을 때에 수신한 중복 ACK의 수×MSS(dack_start)를 뺀 값을 최초의 값에 더한다.
즉, rcv_bytes = rcv_ack - drs_snd_una + (dack_end - dack_start)가 된다.
한편, 수신 세그먼트의 바이트수(rcv_bytes)가 전회 산출된 수신 세그먼트의 바이트수(rcv_bytes)부터 증가했을 경우에는, ACK의 수신마다 값을 갱신하도록 해도 좋다.
또한, 세그먼트 로스가 발생하고 있지 않는 경우, dack_end 및 dack_start의 양쪽 모두 0이 된다.
여기서, ACK 패스에 대해서도 큐잉 딜레이가 발생하는 경우, 상황에 따라서는 수신 세그먼트의 바이트수(rcv_bytes)를 정밀도 좋게 계측할 수 없는 경우가 있다.
이 때문에, ACK의 송신 시각을 이용하는 것에 의해서 ACK 패스의 큐잉 딜레 이의 영향을 없애고, 수신 세그먼트의 바이트수(rcv_bytes)를 정밀도 좋게 계측하는 것이 가능해진다.
도 4는, 본 발명의 일실시형태와 관련된 수신 세그먼트의 바이트수의 계측 방법의 그 외의 예를 나타내는 도면이다.
도 4에 있어서, ACK에 있어서 TCP 송신측(21)측과 같은 Timestamp Option이 부가되어 있는 경우, RTT의 최소값(rtt_min)의 시간내에 송신된 ACK의 송신 시각을 참조함으로써, 수신 세그먼트의 바이트수(rcv_bytes)를 계측할 수 있다. 다만, 수신측과 송신측에서 이용되고 있는 Timestamp Option의 입도가 다른 경우, 송신측에서 ACK의 송신 시각을 보정할 필요가 있다.
도 5는, 송신측에 있어서 ACK의 송신 시각을 보정하는 예를 나타내는 도면이다.
도 5에 있어서, ts는 세그먼트의 송신 시각, ts_echo는 Timestamp Echo을 표시한다. 송신측에서는, ACK를 수신했을 때에, 일정한 기간 계측을 실시하여, 그 사이에 수신한 ACK의 ts와 ts_echo의 증가량을 계산하여, 보정에 이용한다. 도 5에서는, ts_echo의 증가량이 60인데 비해서, ts의 증가량은 6이므로, rcv_bytes는 송신을 개시했을 때의 ACK의 송신 시각에 rtt_min의 10분의 1을 더한 시각까지의 ACK에 의해서 산출된다.
다음에, 도 1의 타겟 계산부(15)는, 수신 바이트 계산부(14)로 산출된 수신 세그먼트의 바이트수에 기초하여 타겟(target)을 계산한다.
여기서, 타겟의 계산방법으로서는, 이하의 6종류의 방법을 생각할 수 있다.
① 수신 바이트수 계산부(14)에서 계측된 수신 세그먼트의 바이트수 (rcv_bytes)의 최대값×2를 이용하는 방법.
② 수신 바이트수 계산부(14)에서 계측된 수신 세그먼트의 바이트 수 (rcv_bytes)×2를 이용하는 방법.
③ 수신 바이트수 계산부(14)로 계측된 가장 가까운 시점의 2회의 수신 세그먼트의 바이트수(rcv_bytes)의 평균을 이용하는 방법.
④ 수신 바이트수 계산부(14)로 계측된 수신 세그먼트의 바이트수 (rcv_bytes)의 가중 평균의 2배를 이용하는 방법.
예를 들면, target = (그때까지 계측된 수신 세그먼트의 바이트수 (rcv_bytes)의 평균(av_rcv_bytes) × 7/8 + (rcv_bytes) × 1/8) × 2로 할 수 있다.
⑤ 임의의 상수 α를 이용하는 방법.
예를 들면, rcv_bytes + α × MSS ≥ cwnd
한편 cwnd<Slowstart Threshold(ssthresh)의 경우, target = rcv_bytes × 2로 할 수 있다.
그 이외의 경우는,
target = rcv_bytes + α × MSS로 할 수 있다.
⑥ 수신 바이트수 계산부(14)로 계측된 수신 세그먼트의 바이트수 (rcv_bytes)의 가중 평균과 가중 평균 편차를 이용하는 방법.
예를 들면, 수신 세그먼트의 바이트수(rcv_bytes)의 가중평균(avg_rcv_ bytes) = (avg_rcv_bytes) × 7/8 + (rcv_bytes) × 1/8로서 계산하고, 수신 세그먼트의 바이트수(rcv_bytes)의 가중평균 편차(var_rcv_bytes) = (var_rcv_bytes) × 7/8 + │rcv_bytes - avg_rcv_bytes│× 1/8로서 계산하여, 구해진 var_rcv_ bytes를 이용하여, target = avg_rcv_bytes + var_rcv_bytes × 4로 할 수 있다.
한편, 상수 α는, 네트워크의 상황에 따라 임의로 설정할 수 있고, 최저라도, cwnd≥ssthresh의 경우에 1RTT의 사이에 최대한 증가하는 cwnd의 값(TCP라면 1MSS) 이상으로 설정할 수 있다.
또한, target이 소정치 이하가 되지 않도록 임의의 상수 β를 이용하여, β×MSS 를 target의 하한치로서 이용할 수 있다. 상수 β는 임의로 설정할 수 있지만, 예를 들면, 초기 윈도우 사이즈를 이용할 수 있다.
다음에, 도 1의 송신 세그먼트 제어부(16)는, 타겟 계산부(15)로 계산된 target에 기초하여 세그먼트의 송신 제어를 행한다. 한편, 송신 세그먼트 제어부 (16)는, target가 급격하게 증가했을 때에 폭발적으로 세그먼트가 송출되는 것을 방지하기 위해서, space라는 값을 이용하여, 실제의 세그먼트의 송출을 제한할 수 있다
여기서, space는 이하와 같이 설정할 수 있다.
space<target의 경우.
ACK 수신마다 space=space+2MSS로 한다.
space>target의 경우에는, 이하의 2종류의 방법을 생각할 수 있다.
① space=target로 하는 방법.
② ACK 수신마다 space=space-MSS로 하는 방법.
한편, ACK된 바이트수를 계산할 수 있는 경우에는,
space<target의 경우
ACK 수신마다 space=space+ack된 바이트 수로 한다.
space>target의 경우에는, 이하의 2종류의 방법을 생각할 수 있다.
① space=target로 하는 방법.
② ACK 수신마다 space=space-ack된 바이트수/2로 하는 방법
또한, ACK가 중복 ACK의 경우에는, 1MSS로서 취급하고, space를 감소시킬 때에 ACK된 바이트수가 1MSS에 못 미친 경우에는, ACK된 바이트수가 1MSS이상이 될 때까지, space를 감소시키지 않는다.
다음에, 도 1의 세그먼트 송신부(17)는, 송신 세그먼트 제어부(16)에서 송신 제어를 한 세그먼트를 송신한다. 구체적으로는, space, cwnd 및 rcv_wnd의 최소값에 따라서 세그먼트를 송신할 수 있어, space의 값이 cwnd 및 rcv_wnd의 최소값을 밑도는 경우에는, space에 따라서 세그먼트를 송신할 수 있다.
이에 따라서, 송신측에서 산출된 수신 세그먼트의 바이트수(rcv_bytes)에 기초하여, 세그먼트의 송신을 억제하는 것이 가능해져, 네트워크에의 과잉의 세그먼트의 송신을 효과적으로 억제하는 것이 가능해진다.
한편, cwnd가 작은 경우에 통신 속도를 방해하지 않게 하기 위해서, 수신 세그먼트의 바이트수(rcv_bytes)가, 수신 세그먼트의 바이트수(rcv_bytes)의 계측시의 cwnd + α(상수) 이하인 경우, space를 이용한 제어는 실시하지 않도록 할 수도 있다.
또한, 재발송시에 space에 의한 제어를 행하지 않은 TCP와의 공평성을 유지하기 위해서 space를 이용한 제어를 행하지 않도록 하여 얻어진 CWND의 값을 이용하여 ACK 수신시 또는 패킷 로스의 발생시의 CWND 및 SSTHRESH를 설정하도록 해도 좋다.
도 6은, 본 발명의 제2 실시형태와 관련된 송신 단말의 개략 구성을 나타내는 블록도이다.
도 6에 있어서, 송신 단말(111)에는, 도 1의 구성에 더하여 ACK 수신시 또는 패킷 로스의 발생시의 CWND 및 SSTHRESH를 계산하는 폭주 윈도우 계산부(18)가 설치되어 있다.
여기서, 폭주 윈도우 계산부(18)는, ACK 수신시 또는 패킷 로스의 발생시의 CWND 및 SSTHRESH를 아래와 같이 하여 계산할 수 있다.
즉, 패킷 로스 발생시에는 이하와 같이 WND(Window)를 이용하여, SSTHRESH 및 CWND를 결정한다.
WND=Max(CWND, CWND_est)
여기서, CWND_est는, space를 이용한 제어를 행하지 않는 경우에 얻을 수 있는 CWND의 값이다.
2.1. FF(Fast Retransmit & Fast Recovery:고속 재발송 및 고속 복귀)시
SSTHRESH=(1-b)×WND
CWND=SSTHRESH가 되도록 설정한다.
2.2. RTO(Retransmit Timeout:재발송 타임 아웃) 발생시
SSTHRESH=(1-b)×WND
CWND=1×MSS가 되도록 설정한다.
다만, 수신 세그먼트의 바이트수(rcv_bytes)가, 수신 세그먼트의 바이트수 (rcv_bytes)의 계측시의 cwnd+α(상수) 이하인 경우, 폭주에 의한 패킷 로스는 아니라고 판단하고, CWND와 SSTHRESH를 감소시키지 않는 것도 가능하다.
한편, MSS(Maximum Segment Size)는 송신측이 송신할 수 있는 최대 세그먼트 사이즈이다. 또한, CWND(CONGESTION WINDOW)는, TCP의 송신 가능 사이즈를 제한하는 TCP 스테이트 변수이다. 또한, SSTHRESH(SLOWSTART THRESHOLD)는 슬로우 스타트 역치이다.
통상의 TCP에서는, a=1, b=0.5가 이용된다.
그리고, space를 이용한 제어를 행하지 않는 경우, 폭주 윈도우 계산부(18)는, ACK수신시 또는 패킷 로스의 발생시의 CWND 및 SSTHRESH를 상기의 식에 따라서 계산한다. 그리고, 송신 세그먼트 제어부(16)는, 폭주 윈도우 계산부(18)에서 계산된 CWND 및 SSTHRESH에 기초하여 세그먼트의 송신 제어를 행하면서, 세그먼트 송신부(17)를 통하여 세그먼트를 송신한다.
한편, 최소 시간 계측부(13), 수신 바이트수 계산부(14) 및 타겟 계산부(15)는, 이들 수단으로 행해지는 처리를 수행시키는 명령이 기술된 프로그램을 컴퓨터에 실행시킴으로써 실현할 수 있다.
그리고, 이 프로그램을 CD-ROM 등의 기억 매체에 기억해 두면, 송신 단말 (11)의 컴퓨터에 기억 매체를 장착하고, 그 프로그램을 컴퓨터에 인스톨함으로써, 최소 시간 계측부(13), 수신 바이트수 계산부(14) 및 타겟 계산부(15)로 이루어지는 처리를 실현할 수 있다. 또한, 이 프로그램을 네트워크를 통하여 다운로드함으로써, 이 프로그램을 용이하게 보급시킬 수 있다.
또한, 도 7의 방법에서는, 도 2의 네트워크(23) 및 TCP 수신측(22)의 상황을 고려하여 rcv_bytes가 결정되는데 비하여, 본 실시형태에서는, 네트워크(23)의 상황을 고려하여 rcv_bytes가 결정된다. 다만, 네트워크(23)의 데이터 전송 속도에 비해 어플리케이션(25)이 데이터를 읽어들이는 속도가 극단적으로 늦은 경우에는, TCP 수신측(22)에 체류하고 있는 세그먼트의 바이트수도 고려하는 것이 바람직하다.
여기서, rcv_bytes를 결정할 때에, TCP 수신측(22)의 상황을 고려하는 방법으로서 수신 버퍼(26)에 체류하고 있는 세그먼트의 바이트수(buf_bytes)를 ACK로부터 간접적으로 예측할 수 있다.
구체적으로는, buf_bytes=(ACK로 받은 최대의 rcv_wnd)-(현재의 rcv_wnd)로 할 수 있다.
rcv_bytes를 산출할 때에 buf_bytes를 계산해 두고, target로부터 buf_bytes를 빼는 것에 의해서, TCP 수신측(22)의 수신 버퍼(26)에 체류하고 있는 세그먼트의 바이트수를 간접적으로 고려할 수 있다. 다만, 세그먼트를 재발송하고 있는 경우에는, 수신 버퍼(26)에서의 세그먼트의 체류는 순서 대기의 세그먼트로 일어날 가능성이 높기 때문에, buf_bytes를 고려하지 않고, target를 계산하는 것이 바람 직하다.
한편, 상술한 실시형태에서는, 타겟 계산부(15)로 계산된 target에 기초하여 세그먼트의 송신 제어를 행하는 방법에 대하여 설명했지만, target의 계산을 수신측에서 행하고, 수신측에서 계산된 target를 송신측에 전달함으로써, 세그먼트의 송신 제어를 행하도록 해도 좋다.
도 1은 본 발명의 제1 실시형태와 관련된 송신 단말의 개략 구성을 나타내는 블록도이다.
도 2는 본 발명의 일실시형태와 관련된 수신 세그먼트의 바이트수의 계측 포인트를 종래예와 비교하여 나타내는 블록도이다.
도 3은 본 발명의 일실시형태와 관련된 수신 세그먼트의 바이트수의 계측 방법을 나타내는 도면이다.
도 4는 본 발명의 일실시형태와 관련된 수신 세그먼트의 바이트수의 계측 방법의 기타 예를 나타내는 도면이다.
도 5는 송신측에 있어서 ACK의 송신 시각을 보정하는 예를 나타내는 도면이다.
도 6은 본 발명의 제2 실시형태와 관련된 송신 단말의 개략 구성을 나타내는 블록도이다.
도 7은 종래의 RTT의 계측 방법을 나타내는 도면이다.
도 8은 종래의 RTT의 계측 방법의 문제점을 나타내는 도면이다.
[부호의 설명]
11, 111 : 송신 단말
12 : 세그먼트 수신부
13 : 최소 시간 계측부
14 : 수신 바이트수 계산부
15 : 타겟 계산부
16 : 송신 세그먼트 제어부
17 : 세그먼트 송신부
18 : 폭주 윈도우 계산부
21 : TCP 송신측
22 : TCP 수신측
23 : 네트워크
24 : 세그먼트
25 : 어플리케이션
26 : 수신 버퍼

Claims (7)

  1. RTT의 최소값을 계측하는 최소 시간 계측부와,
    상기 최소 시간 계측부로 계측된 RTT의 최소값의 기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하는 수신 바이트수 계산부와,
    상기 수신 바이트수 계산부로 산출된 세그먼트의 바이트수에 기초하여, 송신 세그먼트수를 제어하는 송신 세그먼트 제어부를 구비한 것을 특징으로 하는 통신 단말.
  2. 제 1 항에 있어서, 상기 최소 시간 계측부는, 세그먼트의 송신이 소정 시간 이상 이루어지지 않을 경우, 혹은 폭주 윈도우가 초기 윈도우 사이즈를 밑돌 경우, 혹은 소정의 계측 시간에 걸쳐 상기 RTT의 최소값에서 규정되는 값 이하의 RTT가 계측되지 않을 경우, 상기 RTT의 최소값을 재설정하는 것을 특징으로 하는 통신 단말.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 송신 세그먼트 제어부는, 송신측이 송신할 수 있는 최대 세그먼트 사이즈, 혹은 ACK된 바이트수에 기초하여, 세그먼트의 송출을 제한하는 것을 특징으로 하는 통신 단말.
  4. 제 1 항 또는 제 2 항에 있어서, 상기 수신 바이트수 계산부로 산출된 세그먼트의 바이트수를 고려하지 않고, ACK수신시 또는 패킷 로스 발생시의 폭주 윈도우 또는 슬로우 스타트 역치를 계산하는 폭주 윈도우 계산부를 더 구비하고,
    상기 송신 세그먼트 제어부는, 상기 폭주 윈도우 계산부로 계산된 폭주 윈도우 또는 슬로우 스타트 역치에 기초하여 세그먼트의 송신 제어를 행하는 것을 특징으로 하는 통신 단말.
  5. RTT의 최소값을 계측하는 스텝과,
    상기 계측된 RTT의 최소값의 기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하는 수신 스텝과,
    상기 송신측에서 산출된 세그먼트의 바이트수에 기초하여, 송신 세그먼트수를 제어하는 스텝을 구비한 것을 특징으로 하는 통신 제어 방법.
  6. RTT의 최소값을 계측하는 스텝과,
    상기 계측된 RTT의 최소값의 기간내에 수신측에 도달한 세그먼트의 바이트수를 송신측에서 산출하는 수신 스텝과,
    상기 송신측에서 산출된 세그먼트의 바이트수에 기초하여, 송신 세그먼트수를 제어하는 스텝을 컴퓨터에 실행시키는 것을 특징으로 하는 통신 제어 프로그램을 기억한 컴퓨터 판독 가능한 기록매체.
  7. 제 3 항에 있어서, 상기 수신 바이트수 계산부로 산출된 세그먼트의 바이트수를 고려하지 않고, ACK수신시 또는 패킷 로스 발생시의 폭주 윈도우 또는 슬로우 스타트 역치를 계산하는 폭주 윈도우 계산부를 더 구비하고,
    상기 송신 세그먼트 제어부는, 상기 폭주 윈도우 계산부로 계산된 폭주 윈도우 또는 슬로우 스타트 역치에 기초하여 세그먼트의 송신 제어를 행하는 것을 특징으로 하는 통신 단말.
KR1020070090793A 2006-09-08 2007-09-07 통신 단말, 통신 제어 방법 및 통신 제어 프로그램 KR100922472B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2006243853 2006-09-08
JPJP-P-2006-00243853 2006-09-08
JP2007059618 2007-03-09
JPJP-P-2007-00059618 2007-03-09
JPJP-P-2007-00215080 2007-08-21
JP2007215080A JP4435817B2 (ja) 2006-09-08 2007-08-21 通信端末、通信制御方法および通信制御プログラム

Publications (2)

Publication Number Publication Date
KR20080023176A KR20080023176A (ko) 2008-03-12
KR100922472B1 true KR100922472B1 (ko) 2009-10-21

Family

ID=38834486

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070090793A KR100922472B1 (ko) 2006-09-08 2007-09-07 통신 단말, 통신 제어 방법 및 통신 제어 프로그램

Country Status (3)

Country Link
US (1) US8279756B2 (ko)
EP (1) EP1898546A3 (ko)
KR (1) KR100922472B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5018663B2 (ja) * 2008-06-17 2012-09-05 富士通株式会社 遅延時間計測装置、遅延時間計測プログラム、および遅延時間計測方法
KR101835387B1 (ko) * 2011-04-29 2018-03-08 삼성전자주식회사 단말기 및 그 단말기에서 자원 스케줄링 방법
US9736045B2 (en) * 2011-09-16 2017-08-15 Qualcomm Incorporated Systems and methods for network quality estimation, connectivity detection, and load management
CN104093170B (zh) * 2014-06-10 2017-12-01 北京创毅视讯科技有限公司 基于tcp的数据传输方法和tcp代理装置
US20170195085A1 (en) * 2016-01-06 2017-07-06 Futurewei Technologies, Inc. Transmission control protocol segment recovery
US10425338B2 (en) * 2016-03-14 2019-09-24 International Business Machines Corporation Virtual switch-based congestion control for datacenter networks
US9985890B2 (en) 2016-03-14 2018-05-29 International Business Machines Corporation Identifying a local congestion control algorithm of a virtual machine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004158916A (ja) 2002-11-01 2004-06-03 Matsushita Electric Ind Co Ltd 通信システム及び方法
US6925502B1 (en) 2000-06-20 2005-08-02 At&T Corp. Methods and systems for improving data transmission rates having adaptive protocols
JP2005268979A (ja) 2004-03-17 2005-09-29 Nippon Telegr & Teleph Corp <Ntt> 片方向遅延時間に基づいた輻輳制御方法、通信システム、通信装置、通信方法、プログラム、および記録媒体
KR20050121476A (ko) * 2004-06-22 2005-12-27 삼성전자주식회사 무선 네트워크 장치 및 이를 이용한 전송율 제어 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001237882A (ja) * 2000-02-23 2001-08-31 Nec Corp パケットデータ転送におけるパケットサイズ制御装置及びその制御方法
US7099273B2 (en) * 2001-04-12 2006-08-29 Bytemobile, Inc. Data transport acceleration and management within a network communication system
KR100450938B1 (ko) * 2001-10-05 2004-10-02 삼성전자주식회사 고속 순방향 패킷 접속 방식을 사용하는 통신 시스템에서트랜스포트 블록 셋 크기 정보를 송수신하는 장치 및 방법
US6851008B2 (en) * 2002-03-06 2005-02-01 Broadcom Corporation Adaptive flow control method and apparatus
AU2003224464B2 (en) * 2002-04-24 2005-08-25 Samsung Electronics Co., Ltd. Apparatus and method for supporting automatic repeat request in a high-speed wireless packet data communication system
WO2005006664A1 (ja) * 2003-07-11 2005-01-20 Nec Corporation トランスポート層中継方法及びトランスポート層中継装置並びにプログラム
US7656800B2 (en) 2004-07-30 2010-02-02 Cisco Technology, Inc. Transmission control protocol (TCP)
US9325456B2 (en) * 2005-03-22 2016-04-26 Intel Corporation Method and apparatus for delayed recovery for block acknowledgement bursting in a wireless network
US7889654B2 (en) * 2005-03-30 2011-02-15 At&T Intellectual Property Ii, L.P. Loss tolerant transmission control protocol
US7719967B2 (en) * 2005-09-28 2010-05-18 Netapp, Inc. Cumulative TCP congestion control

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925502B1 (en) 2000-06-20 2005-08-02 At&T Corp. Methods and systems for improving data transmission rates having adaptive protocols
JP2004158916A (ja) 2002-11-01 2004-06-03 Matsushita Electric Ind Co Ltd 通信システム及び方法
JP2005268979A (ja) 2004-03-17 2005-09-29 Nippon Telegr & Teleph Corp <Ntt> 片方向遅延時間に基づいた輻輳制御方法、通信システム、通信装置、通信方法、プログラム、および記録媒体
KR20050121476A (ko) * 2004-06-22 2005-12-27 삼성전자주식회사 무선 네트워크 장치 및 이를 이용한 전송율 제어 방법

Also Published As

Publication number Publication date
KR20080023176A (ko) 2008-03-12
US20080062875A1 (en) 2008-03-13
EP1898546A2 (en) 2008-03-12
EP1898546A3 (en) 2011-04-27
US8279756B2 (en) 2012-10-02

Similar Documents

Publication Publication Date Title
JP4778453B2 (ja) 通信端末、輻輳制御方法および輻輳制御プログラム
JP4016387B2 (ja) データフロー制御方法
US7782758B2 (en) Efficient loss recovery architecture for loss-decoupled TCP
US7061856B2 (en) Data throughput over lossy communication links
KR100922472B1 (ko) 통신 단말, 통신 제어 방법 및 통신 제어 프로그램
JP4708978B2 (ja) 高スループットを実現する通信システム、通信端末、セッション中継装置、及び通信プロトコル
US7444578B2 (en) Data unit sender and method of controlling the same
US20060209838A1 (en) Method and system for estimating average bandwidth in a communication network based on transmission control protocol
JP5941853B2 (ja) パケット通信方法及び装置
JP5299794B2 (ja) 通信品質監視装置、通信システム、通信品質監視方法及びそのプログラム
WO2010032370A1 (ja) 伝送レート制御装置及び伝送レート制御方法
JP4435817B2 (ja) 通信端末、通信制御方法および通信制御プログラム
US7613976B2 (en) Method for setting the retransmission timeout period in a packet switched communication network
KR100912178B1 (ko) 무선 환경에서의 혼잡제어방법 및 기록매체
JP5387058B2 (ja) 送信装置、送信レート算出方法及び送信レート算出プログラム
CN117676695A (zh) Tcp传输方法、装置和系统
JP6011813B2 (ja) 通信装置およびその通信制御方法
KR100915996B1 (ko) 대역폭변화에 따른 적응형 전송 제어 프로토콜을 이용한데이터 패킷 전송 방법 및 그를 위한 송신측 단말장치

Legal Events

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

Payment date: 20120924

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130924

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141001

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150917

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170920

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180920

Year of fee payment: 10