KR20050013777A - 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법 - Google Patents

재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법

Info

Publication number
KR20050013777A
KR20050013777A KR1020030052333A KR20030052333A KR20050013777A KR 20050013777 A KR20050013777 A KR 20050013777A KR 1020030052333 A KR1020030052333 A KR 1020030052333A KR 20030052333 A KR20030052333 A KR 20030052333A KR 20050013777 A KR20050013777 A KR 20050013777A
Authority
KR
South Korea
Prior art keywords
data segment
retransmission
segment
received
lost
Prior art date
Application number
KR1020030052333A
Other languages
English (en)
Other versions
KR100913897B1 (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 KR1020030052333A priority Critical patent/KR100913897B1/ko
Publication of KR20050013777A publication Critical patent/KR20050013777A/ko
Application granted granted Critical
Publication of KR100913897B1 publication Critical patent/KR100913897B1/ko

Links

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
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • 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/1874Buffer management
    • 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

Landscapes

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

Abstract

본 발명은, 전송제어 프로토콜을 사용하는 통신 시스템을 위한 혼잡제어 방법에 있어서, 수신자로부터 수신된 데이터 세그먼트 응답(ACK)이 빠른 복구 상태인지를 판단하는 과정과, 상기 수신된 데이터 세그먼트 응답이 빠른 복구 상태가 아니고 미리 설정된 중복 응답 개수만큼 중복되어 수신된 경우 상기 데이터 시그먼트를 재전송하고, 상기 재전송 후 전송할 다음 데이터 세그먼트의 시퀀스 번호를 스코어 보드에 저장하는 과정과, 상기 수신된 데이터 세그먼트 응답이 빠른 복구 모드이고, 상기 재전송 데이터 세그먼트에 대한 중복 응답을 수신한 경우 상기 응답을 통해 수신된 수신자의 버퍼 상태 정보를 이용하여 상기 재전송 데이터 세그먼트의 손실 여부를 확인하는 과정과, 상기 재전송 데이터 세그먼트가 손실된 경우 상기 재전송 데이터 세그먼트를 다시 재전송하는 과정을 포함하는 것을 특징으로 한다.

Description

재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜 혼잡제어 방법{Method for controlling congestion of TCP for reducing the number of retransmission timeout}
본 발명은 전송제어 프로토콜을 사용하는 통신 시스템에 것으로서, 특히 전송제어 프로토콜의 혼잡제어시 재전송 타임아웃에 따른 성능 저하를 방지하기 위한 방법에 관한 것이다.
인터넷을 통해 데이터를 전송하기 위한 프로토콜로서, 인터넷 표준화 단체인 IETF(Internet Engineering Task Force)에 의해 발행된 RFC(Request For Comments) 793은 전송제어 프로토콜(Transmission Control Protocol: 이하 TCP라 칭한다.)을 규정하고 있다. 전송제어 프로토콜은 인터넷을 통해 노드들간에 데이터를 패킷의 형태로 전송하기 위해 사용된다. 이러한 전송제어 프로토콜은, 네트워크 계층의 인터넷 프로토콜(Internet Protocol: 이하 IP라 칭한다.)에 대한 상위에서 트랜스포트 계층(Transport Layer)의 프로토콜로서 동작하기 때문에, 통상의 경우 TCP/IP라 표기한다.
전송제어 프로토콜(TCP)은 사용자 데이터그램 프로토콜(User Datagram Protocol: 이하 UDP라 칭한다)과 같이 인터넷 프로토콜(IP)을 네트워크 계층으로 이용하지만 UDP와는 기본적으로 다른 연결 지향형 서비스와 신뢰성 있는 바이트 스트림 서비스를 제공한다. TCP는 네트워크의 상태를 고려하여 전송률을 조절하는 프로토콜로서, 향후 유무선 통합 망에서도 트랜스포트 계층으로서의 사용이 고려되고 있다.
TCP는 Tahoe, Reno, Newreno 등의 버전이 사용되고 있으며, TCP 통신에서 수신자는 송신자로부터 데이터 세그먼트(Data Segment)를 수신하면 상기 데이터 세그먼트와 동일한 시퀀스 번호를 가지는 애크(Acknowledge: ACK)를 전송한다. 송신자는 수신자로부터의 ACK 없이도 미리 정해지는 개수, 즉 혼잡 윈도우(CongestionWindow: 이하 CWND라 칭한다.)만큼의 데이터 세그먼트들을 동시에 전송하고, 동일한 시퀀스 번호를 가지는 ACK들, 즉 중복(Duplicate) ACK들을 받으면 상기 시퀀스 번호를 가지는 데이터 세그먼트를 즉시 재전송한다. 그렇지 않은 경우 데이터 세그먼트를 전송한 이후 일정한 타임아웃 시간 동안 ACK를 받지 못하면 그 데이터 세그먼트를 재전송한다.
종래 기술에 따른 TCP Newreno의 손실 복구에서는 재전송된 데이터 세그먼트가 다시 손실되는 경우에 송신자는 재전송한 세그먼트를 성공적으로 수신하였다는 ACK가 아니라, 재전송 중 손실된 세그먼트에 대한 중복(Duplicate) ACK만을 계속 수신하게 되므로, 불가피하게 재전송 타임아웃이 발생하게 된다. 세그먼트 손실 확률이 높을수록 하나의 윈도우 내에서 손실되는 세그먼트들의 개수가 증가하고 손실된 세그먼트들을 재전송하는 과정에서 손실 확률이 다시 증가하기 때문에, 종래 기술에 따른 TCP Newreno의 손실 복구는 손실율이 높은 환경에서 전송 성능을 상당히 저하시킬 수 있다.
또한 TCP Newreno는 중복 ACK들에 의해 해당 세그먼트를 재전송한 이후 매 중복 ACK 수신시마다 새로운 세그먼트들을 전송하는데, 이렇게 새로 전송한 세그먼트가 손실되었을 때에는 타임아웃 또는 새로 전송한 세그먼트에 대한 중복 ACK들의 수신에 의해 상기 새로 전송한 세그먼트를 재전송한다. 그러나 이러한 경우 이전 세그먼트를 재전송함에 의해 혼잡 윈도우의 크기가 반으로 감소하기 때문에 새로 손실된 세그먼트를 재전송하기에 충분한 중복 ACK들을 수신하지 못하게 될 수 있으며, 이에 따라 타임아웃이 발생하였다.
재전송 타임아웃은 예를 들어 500ms의 비교적 긴 단위의 해상도를 갖는 타이머를 이용하기 때문에 데이터 세그먼트를 전송하고 ACK를 기다리는 시간이 타이머의 시간 단위로 이루어지게 된다. 이러한 타이머의 동작은 손실된 세그먼트에 대해 긴 시간 동안 아무런 동작도 취할 수 없게 되고 결국 전송 대역폭을 낭비하는 결과를 초래한다. 따라서 전송제어 프로토콜에서 재전송 타임아웃 확률을 감소시키기 위한 방법을 필요로 하게 되었다.
따라서, 본 발명의 목적은 재전송된 세그먼트가 손실되었을 때 재전송 타임 아웃 없이 손실된 세그먼트를 제전송하는 전송 제어 프로토콜의 혼잡제어 방법을 제공함에 있다.
본 발명의 다른 목적은 재전송된 세그먼트가 손실되었을 때 수신자가 ACK를 통해 보내오는 버퍼 상태 정보(SACK 블록 정보)를 활용하여 재전송된 세그먼트의 손실 여부를 확인하고, 다시 한번 재전송하여 재전송 타임 아웃 발생 확률을 낮추기 위한 전송 제어 프로토콜의 혼잡제어 방법을 제공함에 있다.
상기 이러한 본 발명의 목적들을 달성하기 위한 방법은, 전송제어 프로토콜을 사용하는 통신 시스템을 위한 혼잡제어 방법에 있어서, 수신자로부터 수신된 데이터 세그먼트 응답(ACK)이 빠른 복구 상태인지를 판단하는 과정과, 상기 수신된 데이터 세그먼트 응답이 빠른 복구 상태가 아니고 미리 설정된 중복 응답 개수만큼 중복되어 수신된 경우 상기 데이터 세그먼트를 재전송하고, 상기 재전송 후 전송할다음 데이터 세그먼트의 시퀀스 번호를 스코어 보드에 저장하는 과정과, 상기 수신된 데이터 세그먼트 응답이 빠른 복구 모드이고, 상기 재전송 데이터 세그먼트에 대한 중복 응답을 수신한 경우 상기 응답을 통해 수신된 수신자의 버퍼 상태 정보를 이용하여 상기 재전송 데이터 세그먼트의 손실 여부를 확인하는 과정과, 상기 재전송 데이터 세그먼트가 손실된 경우 상기 재전송 데이터 세그먼트를 다시 재전송하는 과정을 포함하는 것을 특징으로 한다.
도 1은 본 발명이 적용될 수 있는 패킷 데이터 전송 시스템의 구성을 도시한 블록도,
도 2는 상기 도 1에 나타낸 통신 단말기의 구성을 도시한 블록도,
도 3은 전송제어 프로토콜의 혼잡제어를 위한 동작을 나타낸 상태도,
도 4는 일반적인 전송 제어 프로토콜 선택 응답의 혼잡제어 동작을 나타낸 흐름도,
도 5는 본 발명의 실시예에 따른 전송제어 프로토콜 선택 응답의 혼잡제어 동작을 나타낸 흐름도.
이하, 본 발명의 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 그리고 본 발명을 설명함에 있어, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하 본 발명에 따른 구성과 동작원리를 상세히 설명함에 있어서 적어도 부분적으로 무선 네트워크를 포함하는 패킷 데이터 전송 시스템을 이용할 것이다.
도 1은 본 발명이 적용될 수 있는 패킷 데이터 전송 시스템의 구성을 도시한 블럭도이다.
상기 도 1을 참조하면, 패킷 데이터 전송 시스템은 무선 채널을 통해 이동 단말기(10)를 서비스하는 기지국 송수신기(Base Transceiver Subsystem: BTS)(12)와 상기 기지국 송수신기(12)를 제어하는 기지국 제어기(Base Station Controller: BSC)(14)와 상기 기지국 제어기(14)를 패킷 데이터 서비스 노드(Packet DataService Node: PDSN)(18)를 통해 패킷 네트워크(30)로 연결하는 GAN(Global ATM(Asynchronous Transfer Mode) Network) 교환기(16)로 구성된다. 이러한 구성을 통해 상기 이동 단말기(10)는 패킷 네트워크(30)에 접속하는 컴퓨터(20)와 데이터를 교환한다.
여기서 상기 이동 단말기(10)는 셀룰러 전화기(Cellular Phone)나 PCS(Personal Communications Service) 전화기에 접속된 노트북 또는 인터넷 통신이 가능한 PDA(Personal Digital Assistant) 전화기나 IMT(International Mobile Telecommunication)-2000 단말기 등이며, 상기 컴퓨터(20)는 웹 서버(Web Server), FTP(File Transfer Protocol) 서버 등이다. 예를 들어 FTP 서버(20)는 사용자에 의해 요구된 파일을 데이터 세그먼트들에 실어 이동 단말기(10)에게 제공한다. 여기서 데이터 세그먼트들은 순서의 정렬을 위한 시퀀스 번호들을 포함한다. 이러한 경우 상기 FTP 서버는 송신자가 되고 상기 이동 단말기(10)는 수신자가 된다.
도 2는 상기 도 1에 나타낸 통신 단말기의 구성을 도시한 블럭도이다. 이 구성은 도 1에 나타낸 이동 단말기(10) 및 FTP 서버(20)에 적용된다.
상기 도 2를 참조하면, 통신 노드는 송신부(40)와 수신부(50)와 네트워크 인터페이스(70) 및 이들을 상호 연결하는 버스(60)를 포함한다. 수신부(50)는 송신측으로부터 송신된 데이터 세그먼트들을 통신 회선을 통해 수신하여, 그 패킷을 분석한다. 송신부(40)는 전송하고자 하는 데이터를 소정 포맷의 데이터 세그먼트로 변환하여 통신 회선을 통해 수신측 노드로 송신한다.
도 1은 이동 단말기로서의 송신자와 웹 서버 또는 FTP 서버로서의 수신자 및송신자와 수신자간을 연결하는 다수의 장치들을 개시하고 있지만, 본 발명이 이러한 구성에 한정되지 않음은 물론이다. 즉 본 발명은 유사한 기술적 배경을 가지는 여타의 데이터 전송 시스템에도 본 발명의 범위를 크게 벗어나지 아니하는 범위에서 약간의 변형으로 적용 가능하며, 이는 본 발명의 분야에서 숙련된 기술적 지식을 가진 자의 판단으로 가능할 것이다.
상기와 같은 구성에 있어서 송신자는 전송하고자 하는 파일들을 분할하여 생성한 데이터 세그먼트들을 수신자에게 송신한다. 인터넷 프로토콜(Internet Protocol: IP)에 기반한 패킷 네트워크(30)에서의 통신은 통상 전송제어 프로토콜(Transmission Control Protocol: TCP)(이하 "TCP/IP"라 한다.)을 사용하여 이루어진다.
도 3은 전송제어 프로토콜의 혼잡제어를 위한 동작을 나타낸 상태도로서 도시한 바와 같이, TCP의 혼잡 제어는 기본적으로 슬로우 스타트(Slow Start) 모드(80)와 혼잡 회피(Congestion Avoidance) 모드(82)로 구성되어 있다.
슬로우 스타트(80)는 네트워크 상에 위치한 라우터로 한꺼번에 많은 수의 세그먼트들이 도착하였을 때 라우터 버퍼용량의 한계로 인해 세그먼트들이 폐기되는 것을 막기 위한 것이다. 네트워크의 전송 대역폭이 전달하려는 세그먼트들을 다 수용할 만큼 여유가 있는 경우에도 버스트(Burst)한 트래픽의 특성 때문에 라우터들에서 세그먼트들을 전송하지 못하게 되는 경우가 발생하게 될 수 있다. 슬로우 스타트(80)는 이러한 현상을 피하기 위한 알고리즘으로서, 송신자측에서 혼잡 윈도우(Congestion Window: 이하 CWND라 칭한다)를 사용한다
슬로우 스타트(80)는 처음 TCP 연결 시와 타임아웃이 발생된 경우에 사용되고, CWND의 값이 슬로우 스타트 임계값(Slow Start Threshold : 이하 SSTHRESH)보다 크게 되거나 소정 개수(일반적으로 3개)의 중복 ACK 수신을 통해 전송된 세그먼트의 손실을 감지하게 되면 종료된다. 중복 ACK는 수신된 세그먼트들의 순서가 정확하지 않을 경우 수신자가 동일한 시퀀스 번호를 사용하여 발생시키는 ACK를 나타낸다. 여기서, ACK는 정상적으로 수신한 바로 다음 세그먼트의 시퀀스 번호를 담고 있다. 예를 들어, 송신한 1,2,3(손실),4,5,6,7에 대해서 2,3,( ),3,3,3,3 이 전송되므로 4,5,6,7에 대해서는 중복되는 ACK를 받게 된다.
CWND의 값은 매 라운드 트립 시간(Round Trip Time: 이하 RTT라 칭한다.) 동안에 수신한 ACK의 개수만큼씩 증가된다. 여기서 RTT는 송신자로부터 수신자로의 사이에서 측정된 왕복 지연을 나타낸다. 그러나 실질적으로 송신자는 데이터 세그먼트를 전송할 때 송신자의 CWND와 수신자의 현재 남은 버퍼 크기를 나타내는 수신자 윈도우(Advertised Window: 이하 AWND라 칭한다)를 비교하여 둘 중 작은 값을 CWND로서 사용한다. 즉 송신자는 Min(CWND, AWDN)을 이용하여 세그먼트를 전송한다. 여기서 AWND의 값은 수신자로부터 송신자에게 보고되는 것으로서 그 최대값은 64Kbyte이고 수신자의 흐름제어에 사용된다. 이와 같이 슬로우 스타트는 CWND를 지수적으로 증가시켜 네트워크의 가용 대역폭에 빠르게 접근한다.
혼잡 회피(82)는 슬로우 스타트(80)가 종료되거나 혼잡으로 인해 발생한 세그먼트의 손실을 복구한 이후에, CWND 값을 매 RTT마다 1만큼씩 선형적으로 증가시킨다. 혼잡 회피 모드에서는 매 ACK가 수신될 때마다 CWND를 1/CWND만큼 증가시킨다. 슬로우 스타트(80)에서의 CWND의 증가가 지수적인데 반해서 혼잡 회피(82)에서의 CWND의 증가는 선형적이다. 즉, 슬로우 스타트(80)는 한 RTT 동안에 수신된 ACK의 개수만큼 CWND를 증가시키는 반면, 혼잡회피(82)는 한 RTT 동안에 CWND를 1만큼을 증가시킨다.
슬로우 스타트(80)와 혼잡 회피(82)는 별개의 알고리즘이지만 TCP에서 같이 구현된다. 즉 슬로우 스타트(80)에서 CWND의 값이 슬로우 스타트 임계값 SSTHRESH보다 크게 되는 경우 혼잡 회피(82)가 사용된다.
한편, TCP에서 손실된 세그먼트는 재전송 타임아웃 또는 빠른 재전송(Fast Retransmit)(84)에 의해 복구된다.
슬로우 스타트 모드(80) 또는 혼잡 회피 모드(82)에서 데이터 세그먼트를 전송할 때마다 미리 설정된 재전송 타이머(예를 들어 500ms로 설정)를 시동하고, 상기 재전송 타이머가 만기되기까지 수신자로부터 아무런 응답도 수신되지 않으면 타임아웃이 발생한다. 타임아웃이 발생하면 CWND는 1로 설정되고 슬로우 스타트 모드(80)가 재시작된다.
빠른 재전송(84)은 소정 개수의 중복(Duplicate) ACK들이 수신되는 경우에 사용된다. 빠른 재전송(84)에서는 소정 개수 이상의 중복 ACK들이 수신되면 해당 시퀀스 번호를 가지는 세그먼트가 손실된 것으로 간주하고, 상기 손실된 것으로 예상되는 세그먼트를 재전송함으로써 타임아웃이 발생하지 않도록 한다. 즉, 재전송 임계값(Retransmit Threshold) 이상의 연속된 중복 ACK들을 수신하는 경우 송신자는 해당 세그먼트를 재전송 타이머가 만료되는 것과 상관없이 즉시 재전송한다. 보통의 경우 재전송 임계값은 3이다.
빠른 재전송(84)에서 손실된 것으로 예상되는 세그먼트가 재전송된 이후에는 빠른 복구 모드(Fast Recovery)(86)가 시작된다. 빠른 복구 모드(86)에서는 매 수신되는 중복 ACK마다 CWND를 증가시키고 증가된 CWND를 증가시키고 증가된 CWND를 기준으로 새로운 세그먼트를 전송한다. 그리고 상기 손실된 것으로 예상되는 세그먼트에 대한 ACK가 수신되면 빠른 복구 모드(86)는 종료되고 혼잡 회피 모드(82)가 시작된다. 이러한 빠른 복구 모드(86)는 특히 대역폭 지연(Bandwidth-Delay Product: 이하 BDP라 칭한다)이 큰 경우에 효율적이다. 빠른 복구 모드(86)가 사용되지 않는 경우 빠른 재전송(84) 이후에는 혼잡 회피 모드(82)가 시작된다.
이와 같은 전송제어 프로토콜의 혼합제어 동작을 전송 제어프로토콜의 여러 버전중 전송 제어 프로토콜 선택 응답(TCP Selective ACKnowledgement이하, TCP SACK이라 칭함) 버전을 적용한 혼잡제어 방법을 도면을 참조하여 설명하면 다음과 같다. 여기서 TCP SACK은 수신자로 하여금 송신자에게 어떤 세그먼트들이 손실되었는지를 정확하게 알려주기 위한 것으로서 송신자가 손실된 세그먼트를 보다 빨리 재전송하도록 할 수 있으며, 불필요한 재전송을 예방할 수 있다.
도 4는 전송제어 프로토콜의 선택응답(TCP SACK)에 따른 혼잡제어 동작을 나타낸 흐름도이다. 여기서 나타낸 흐름은 송신자에 의해 이루어지는 것이다.
100단계에서 수신자로부터 ACK가 도착하면, 110단계에서 송신자는 현재 상태가 빠른 복구 상태인지를 확인한다. 확인 결과, 현재 상태가 빠른 복구 상태가 아니라면 120단계에서 상기 수신된 ACK가 새로운 ACK인지를 확인하여 새로운 ACK인경우 121단계에서 송신자는 스코어 보드(Score Board)를 초기화한 다음 122단계에서 CWND가 허용하는 범위 내에서 새로운 세그먼트를 전송하고 다시 100단계로 진행한다. 반면, 120단계에서 확인 결과, 새로운 ACK가 아닌 경우 130단계에서 스코어 보드를 갱신한다. 여기서 스코어 보드는 수신자로부터 상기 수신된 ACK를 통해 수신되는 버퍼 상태 정보(SACK 블록 정보)를 바탕으로 갱신되며, 다시 재전송할 데이터 세그먼트의 시퀀스를 저장한다.
140단계에서 송신자는 수신된 중복 ACK의 개수를 임계값 예를들어 3개와 같은지를 확인한다. 확인결과, 수신된 중복 ACK의 개수가 3이면 141단계에서 송신자는 빠른 재전송을 통해 손실된 세그먼트를 재전송하고, 142단계에서 nxt_snd, STHRESH, pipe 및 CWND 값을 새롭게 설정한다. 여기서 SSTHRESH는 1/2*CWND로 설정하고, CWND는 반으로 줄이고, CWND 대신에 사용할 pipe값은 현재 CWND에서 수신한 중복 ACK의 개수만큼을 뺀 값으로 설정한다. 이후 송신자는 빠른 복구 모드로 천이되고, 다시 100단계로 진행한다. 반면, 수신된 중복 ACK의 개수가 3이 아니면 다시 100단계로 진행한다.
한편, 110단계에서 현재 상태가 빠른 복구 상태로 확인 되면, 150단계에서 송신자는 pipe 값을 1만큼 감소한다. 이때, 부분 ACK를 수신한 경우라면 150단계에서 pipe 값을 2만큼 감소한다. 그런 다음 160단계에서 빠른 복구 상태가 종료되었는지를 확인한다. 확인 결과, 종료시에는 161단계에서 스코어 보드(Score Board)를 초기화하고, 162단계에서 새로운 세그먼트를 전송한 후 다시 100단계로 진행한다. 여기서 TCP SACK에서 복구가 종료되는 시점은 빠른 복구가 시작되기 전까지 전송한모든 세그먼트를 응답하는 ACK가 도착하는 시점이다.
반면, 빠른 복구 상태가 유지되는 경우 170단계에서 송신자는 스코어 보드(Score Board)를 갱신하고 180단계에서 pipe값을 1만큼 증가한다. 181단계에서 송신자는 손실된 세그먼트를 재전송하거나 새로운 세그먼트를 전송하고, 이때, 재전송의 경우에는 nxt_snd를 새롭게 설정한다. 그런 다음 송신자는 다시 100단계로 진행하여 다음 ACK를 수신 대기한다. 여기서 pipe 값은 CWND보다 작은 한도 내에서 추가로 전송할 수 있으며 매 전송시마다 증가된다.
이와 같이, 종래의 혼잡제어 방법은 TCP가 수신자의 버퍼 상태 정보(SACK 블록 정보)를 사용하며, 한 윈도우안에 여러 개의 세그먼트 손실이 발생하더라도 어떤 세그먼트가 손실되었고, 재전송되어야 하는지를 정확하게 알 수 있기 때문에 한 RTT내에 여러 세그먼트를 재전송한다. 이에 따라 TCP의 다른 버전보다 빠르게 손실된 세그먼트를 재전송함으로써 타임 아웃이 발생하는 확률을 줄이게 된다.
그러나 종래의 혼잡 제어 방법(TCP SACK)은 한 윈도우 안에 여러 개의 세그먼트 손실을 복구한다. 즉, 재전송된 세그먼트가 다시 손실되었을 경우 SACK에서는 윈도우 크기와 관계없이 항상 재전송 타임 아웃이 발생한다. 이는 TCP SACK이 손실 복구 과정에서 재전송된 세그먼트가 다시 손실되는 경우에 송신자는 재전송한 세그먼트를 성공적으로 수신하였다는 ACK가 아니라 재전송 중 손실된 세그먼트에 대한 중복 ACK만을 계속 수신하게 되므로 빠른 복구를 종료하는 것이 불가능하여 불가피하게 재전송 타임 아웃이 발생하게 된다. 또한, 세그먼트 손실 확률이 높을수록 하나의 윈도우 내에서 손실되는 세그먼트의 수가 증가하고, 상기 세그먼트들을 재전송하는 과정에서 다시 손실될 확률도 증가하므로 손실율이 높은 환경에 TCP SACK의 성능이 저하될 수 있다. 이를 개선하기 위해 본 발명은 상기 종래의 혼잡제어 방법을 개선한 TCP SACKPlus(TCP Selective ACKnowledgement Plus 이하, TCP SACKPulse라 함)를 적용하여 혼잡 제어 동작을 수행한다.
본 발명은 수신자가 ACK를 통해 보내오는 버퍼 상태 정보(SACK 블록 정보)를 활용하여 재전송된 세그먼트의 손실 여부를 확인하고 다시 한번 재전송하여 재전송 타임 아웃 확률을 낮춘다. 즉, 전송한 세그먼트가 손실이 되었을 때 재전송 타임 아웃 없이 손실된 세그먼트를 재전송한다. SACK에서 재전송한 세그먼트가 손실되었을 때 나타나는 현상은 재전송 세그먼트를 전송하라는 중복 ACK가 계속 수신되다가 결국은 타임아웃이 발생하는데, 이를 위해 재전송 할 때마다 재전송한 이후에 보낼 다음 세그먼트의 시퀀스를 스코어 보드에 저장한다. 그리고 수신되는 중복 ACK에 포함되어 있는 SACK 블록 정보를 계속 검사한다. 여기서 재전송한 세그먼트가 수신단에 수신되지 않은 상태로 나타나고, 스코어 보드에 저장되어 있는 재전송한 이후의 세그먼트는 수신단에 정상적으로 도착되면, 재전송한 세그먼트가 손실되었음을 알 수 있다. 이러한 혼잡 제어 동작을 도면을 참조하여 설명하면 다음과 같다.
도 5는 본 발명의 실시예에 따른 개선된 전송제어 프로토콜 선택 응답의 혼잡 제어 동작을 도시한 흐름도이다.
200단계에서 수신자로부터 ACK를 수신하면, 210단계에서 송신자는 현재 상태가 빠른 복구 상태인지를 확인한다. 확인 결과, 현재 상태가 빠른 복구 상태가 아니라면 220단계에서 상기 수신된 ACK가 새로운 ACK인지를 확인하여 새로운 ACK인경우 221단계에서 송신자는 SACK 블록 정보를 바탕으로 스코어 보드(Score Board)를 초기한다. 그런 다음 222단계에서 송신자는 CWND가 허용하는 범위 내에서 수신자에게 새로운 세그먼트를 전송하고 다시 200단계로 진행한다.
반면, 220단계에서 확인 결과, 새로운 ACK가 아닌 경우 230단계에서 스코어 보드(Score Board)를 갱신한다. 240단계에서 송신자는 수신된 중복 ACK 개수가 임계값 예를 들어 3개와 같은지를 확인한다. 확인 결과, 수신된 중복 ACK의 개수가 임계값과 같지 않으면 다시 200단계로 진행하고, 같으면 241단계에서 송신자는 빠른 재전송을 통해 손실된 세그먼트를 재전송한 다음 242단계에서 전송할 세그먼트의 시퀀스를 스코어 보드(Score Board) 내에 있는 nxt_snd를 새롭게 설정한다. 이때, 1개의 손실만 발생한 경우라면, nxt_snd는 현재까지 전송한 시퀀스의 최대값(maxseq)에서 1만큼씩 더한 세그먼트 시퀀스 변수가 된다. 이에 따라 송신자는 빠른 복구 모드로 동작되며, CWND대신에 사용할 pipe값을 현재 CWND에서 수신한 중복 ACK의 개수만큼을 뺀 값으로 설정하고, CWND를 반으로 줄인다. 그리고 SSTHRESH를 1/2*CWND로 설정한다.
한편, 210단계에서 현재 상태가 빠른 복구 상태이면, 250단계에서 송신자는 pipe 값을 1만큼 감소한다. 이때, 부분 ACK를 수신한 경우라면 250단계에서 pipe 값을 2만큼 감소한다. 그런 다음 260단계에서 빠른 복구 상태가 종료되었는지를 확인한다. 확인 결과, 종료된 경우에는 271단계에서 스코어 보드를 초기화하고, 272단계에서 새로운 세그먼트를 전송한 후 다시 200단계로 진행하고, 빠른 복구 상태가 유지되는 경우 270단계에서 송신자는 스코어 보드를 갱신한다. 이후, 280단계에서 송신자는 재전송 세그먼트의 손실여부를 판단한다. 즉, 수신되는 중복 ACK에 포함되어 있는 SACK 블록 정보를 계속 검사한다. 이러한 검사 결과, 재전송 데이터 세그먼트가 손실된 경우 281 내지 282단계에서 송신자는 pipe값을 1만큼 증가하고 손실된 재전송 데이터 세그먼트를 재전송하며, 이때, 재전송일 경우에는 nxt_snd를 새롭게 설정한 다음 다시 200단계로 진행한다. 여기서 pipe 값은 CWND보다 작은 한도 내에서 추가로 전송할 수 있으며 매 전송시마다 증가된다.
반면, 280단계에서 재전송 세그먼트가 손실되지 않은 경우 290단계에서 송신자는 pipe 값을 1만큼 증가한다. 291단계에서 송신자는 재전송 전에 손실된 데이터 세그먼트를 재전송하거나 새로운 세그먼트를 전송하며, 이때, 재전송하는 경우에는 nxt_snd를 새롭게 설정한 다음 다시 200단계로 진행한다. 여기서 pipe 값은 CWND보다 작은 한도 내에서 추가로 전송할 수 있으며 매 전송시마다 증가된다. 그리고 재전송한 세그먼트가 수신단에 수신되지 않은 상태로 나타나고, 스코어 보드에 저장되어 있는 재전송한 이후에 전송할 다음 데이터 세그먼트가 수신단에서 제대로 도착된 것으로 확인되면, 송신자는 재전송한 데이터 세그먼트가 손실된 것으로 판단한다. 이때 손실된 것으로 예상되는 데이터 세그먼트를 다시 재전송하여 재전송 타임아웃이 발생하는 경우를 막을 수 있게 된다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 발명청구의 범위뿐 만 아니라 이 발명청구의 범위와 균등한 것들에 의해정해져야 한다.
상술한 바와 같이 본 발명은 수신자의 버퍼 상태 정보를 바탕으로 재전송된 세그먼트의 손실 여부를 확인하여 손실된 재전송 데이터 세그먼트를 다시 한번 재전송함으로써 재전송 타임아웃의 발생 확률을 낮출 수 있으므로 손실이 많이 발생하는 환경에서 성능이 향상되는 효과가 있다.

Claims (3)

  1. 전송제어 프로토콜을 사용하는 통신 시스템을 위한 혼잡제어 방법에 있어서,
    수신자로부터 수신된 데이터 세그먼트 응답(ACK)이 빠른 복구 상태인지를 판단하는 과정과,
    상기 수신된 데이터 세그먼트 응답이 빠른 복구 상태가 아니고 미리 설정된 중복 응답 개수만큼 중복되어 수신된 경우 상기 데이터 시그먼트를 재전송하고, 상기 재전송 후 전송할 다음 데이터 세그먼트의 시퀀스 번호를 스코어 보드에 저장하는 과정과,
    상기 수신된 데이터 세그먼트 응답이 빠른 복구 모드이고, 상기 재전송 데이터 세그먼트에 대한 중복 응답을 수신한 경우 상기 응답을 통해 수신된 수신자의 버퍼 상태 정보를 이용하여 상기 재전송 데이터 세그먼트의 손실 여부를 확인하는 과정과,
    상기 재전송 데이터 세그먼트가 손실된 경우 상기 재전송 데이터 세그먼트를 다시 재전송하는 과정을 포함하는 것을 특징으로 하는 상기 혼잡제어 방법.
  2. 제1항에 있어서, 상기 재전송 데이터 세그먼트의 손실 여부를 검사하는 과정은,
    상기 수신자에게 재전송 세그먼드 바로 다음에 전송될 세그먼트의 시퀀스 값을 변수로 저장하는 단계와,
    상기 재전송 데이터 세그먼트 응답을 통해 수신된 수신자의 버퍼 상태 정보를 바탕으로 상기 스코어 보드를 갱신하는 단계와,
    상기 재전송 데이터 세그먼트의 손실여부를 판단하고 상기 재전송 데이터 세그먼트를 다시 재전송할 때마다 상기 변수 값을 갱신하는 단계를 포함하는 것을 특징으로 하는 상기 혼잡제어 방법.
  3. 제2항에 있어서,
    상기 버퍼 상태 정보는 상기 재전송 데이터 세그먼트가 수신단에서 수신되지 않은 상태 및 상기 데이터 구조체에 저장되어 있는 상기 다음 데이터 세그먼트가 수신단에서 정상으로 수신되지 않은 상태를 나타내는 정보임을 특징으로 하는 상기 혼잡제어 방법.
KR1020030052333A 2003-07-29 2003-07-29 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법 KR100913897B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030052333A KR100913897B1 (ko) 2003-07-29 2003-07-29 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030052333A KR100913897B1 (ko) 2003-07-29 2003-07-29 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법

Publications (2)

Publication Number Publication Date
KR20050013777A true KR20050013777A (ko) 2005-02-05
KR100913897B1 KR100913897B1 (ko) 2009-08-26

Family

ID=37225093

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030052333A KR100913897B1 (ko) 2003-07-29 2003-07-29 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법

Country Status (1)

Country Link
KR (1) KR100913897B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100895182B1 (ko) * 2005-12-14 2009-04-24 삼성전자주식회사 무선통신 시스템의 전송 제어 방법
US9985752B2 (en) 2009-03-24 2018-05-29 Samsung Electronics Co., Ltd. Operating method and apparatus according to data duplicate retransmission in mobile communication system
CN114095129A (zh) * 2021-11-17 2022-02-25 厦门勇仕网络技术股份有限公司 一种移动端游戏网络传输的通信方法及***

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102124878B1 (ko) 2018-10-18 2020-06-19 주식회사 우리넷 무선통신망 상태나 단말기 상태를 고려한 tcp 재전송 제어 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010045532A (ko) * 1999-11-05 2001-06-05 김진찬 전송 제어 프로토콜의 재전송 알고리즘 개선 방법
CN1200368C (zh) 2000-08-18 2005-05-04 清华大学 一种将tcp用于不可靠传输网络的局域重传方法
US6975591B1 (en) 2000-11-22 2005-12-13 International Business Machines Corporation Methodology for improving TCP throughput over lossy communication links
US7099273B2 (en) 2001-04-12 2006-08-29 Bytemobile, Inc. Data transport acceleration and management within a network communication system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100895182B1 (ko) * 2005-12-14 2009-04-24 삼성전자주식회사 무선통신 시스템의 전송 제어 방법
US8018846B2 (en) 2005-12-14 2011-09-13 Samsung Electronics Co., Ltd Transport control method in wireless communication system
US9985752B2 (en) 2009-03-24 2018-05-29 Samsung Electronics Co., Ltd. Operating method and apparatus according to data duplicate retransmission in mobile communication system
US10476638B2 (en) 2009-03-24 2019-11-12 Samsung Electronics Co., Ltd. Operating method and apparatus according to data duplicate retransmission in mobile communication system
US11088787B2 (en) 2009-03-24 2021-08-10 Samsung Electronics Co., Ltd. Operating method and apparatus according to data duplicate retransmission in mobile communication system
CN114095129A (zh) * 2021-11-17 2022-02-25 厦门勇仕网络技术股份有限公司 一种移动端游戏网络传输的通信方法及***
CN114095129B (zh) * 2021-11-17 2024-05-17 厦门勇仕网络技术股份有限公司 一种移动端游戏网络传输的通信方法及***

Also Published As

Publication number Publication date
KR100913897B1 (ko) 2009-08-26

Similar Documents

Publication Publication Date Title
KR100785293B1 (ko) 다중 tcp확인응답을 이용한 tcp 혼잡 제어 시스템및 그 방법
US6697331B1 (en) Link layer acknowledgement and retransmission for cellular telecommunications
US8064461B2 (en) Method and apparatus for TCIP/IP data transfer over a wireless network
US7277390B2 (en) TCP processing apparatus of base transceiver subsystem in wired/wireless integrated network and method thereof
EP1771742B1 (en) High performance tcp for systems with infrequent ack
US7460472B2 (en) System and method for transmitting information in a communication network
US20040052234A1 (en) Method and system for dispatching multiple TCP packets from communication systems
US7593338B2 (en) Congestion control method and system for reducing a retransmission timeout count in a transmission control protocol
US8085669B2 (en) Session relay device and session relay method
KR100600607B1 (ko) 무선 휴대 인터넷 시스템에서 arq 제어 장치 및 제어방법
EP1787419A1 (en) Signalling a state of a transmission link via a transport control protocol
Wong et al. Improving end-to-end performance of TCP using link-layer retransmissions over mobile internetworks
Wang et al. Use of TCP decoupling in improving TCP performance over wireless networks
EP1278348A1 (en) Long-lived TCP connection using ICMP messages in wireless mobile communications
JP4384676B2 (ja) データ通信装置の制御方法
KR100913897B1 (ko) 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법
JP2006101339A (ja) データ通信装置
EP1505759B1 (en) Method and device for transmitting/receiving data using acknowledged transport layer protocols
KR101231793B1 (ko) Tcp 세션 최적화 방법 및 네트워크 노드
EP1191764A1 (en) A method of controlling the time-out in a wireless data TCP transmission
KR20040024628A (ko) 유디피 제어시스템의 송수신처리방법
CN115766747A (zh) 一种适用于无线信道的可靠高效传输方法
Shamakumar et al. TCP for Wireless Networks
KR101396785B1 (ko) 네트워크 장치에서 tcp 기능을 수행하는 방법
Thoppian et al. TCP for Wireless Networks

Legal Events

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

Payment date: 20120730

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130730

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160728

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170728

Year of fee payment: 9