KR101231793B1 - Methods and apparatus for optimizing a tcp session for a wireless network - Google Patents

Methods and apparatus for optimizing a tcp session for a wireless network Download PDF

Info

Publication number
KR101231793B1
KR101231793B1 KR1020077014484A KR20077014484A KR101231793B1 KR 101231793 B1 KR101231793 B1 KR 101231793B1 KR 1020077014484 A KR1020077014484 A KR 1020077014484A KR 20077014484 A KR20077014484 A KR 20077014484A KR 101231793 B1 KR101231793 B1 KR 101231793B1
Authority
KR
South Korea
Prior art keywords
congestion window
network
tcp
network type
cwnd
Prior art date
Application number
KR1020077014484A
Other languages
Korean (ko)
Other versions
KR20080033134A (en
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 KR20080033134A publication Critical patent/KR20080033134A/en
Application granted granted Critical
Publication of KR101231793B1 publication Critical patent/KR101231793B1/en

Links

Images

Classifications

    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W80/00Wireless network protocols or protocol adaptations to wireless operation
    • H04W80/06Transport layer protocols, e.g. TCP [Transport Control Protocol] over wireless

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

TCP 세션 동안 혼잡 윈도우 및 저속 개시 임계치가, 무선 네트워크의 네트워크 유형에 적어도 일부 기초하여 최소 혼잡 윈도우 및 최대 혼잡 윈도우에 의해 규정된 범위로 제한될 수 있다. 무선 네트워크의 네트워크 유형은 하나 이상의 데이터 세그먼트의 하나 이상의 라운드 트립 시간에 적어도 일부 기초하여 결정될 수 있으며, 하나 이상의 TCP 세션이, 네트워크 유형과 연관된 대응 저장 세션 파라미터로 설정된다.The congestion window and the slow start threshold during a TCP session may be limited to the range defined by the minimum congestion window and the maximum congestion window based at least in part on the network type of the wireless network. The network type of the wireless network may be determined based at least in part on one or more round trip times of one or more data segments, wherein the one or more TCP sessions are set with corresponding storage session parameters associated with the network type.

혼잡 윈도우, 저속 개시 임계치, TCP 세션, 무선 네트워크, 네트워크 유형 Congestion Window, Slow Start Threshold, TCP Session, Wireless Network, Network Type

Description

TCP 세션 최적화 방법 및 네트워크 노드{METHODS AND APPARATUS FOR OPTIMIZING A TCP SESSION FOR A WIRELESS NETWORK}TCP session optimization method and network node {METHODS AND APPARATUS FOR OPTIMIZING A TCP SESSION FOR A WIRELESS NETWORK}

본 출원은 2004년 11월 24일자로 출원된 미국 가특허원 제60/630,895호의 이익을 주장하며, 그 전체 내용은 인용에 의해 본원에 포함되는 것으로 한다.This application claims the benefit of US Provisional Patent Application No. 60 / 630,895, filed November 24, 2004, the entire contents of which are incorporated herein by reference.

본 발명은 일반적으로 신뢰성 있는 종단간 통신(end-to-end communications)에 관한 것으로, 특히 무선 네트워크에서 전송 제어 프로토콜(TCP) 세션을 최적화하는 것에 관한 것이다.FIELD OF THE INVENTION The present invention generally relates to reliable end-to-end communications, and more particularly to optimizing a Transmission Control Protocol (TCP) session in a wireless network.

패킷 교환형 데이터 네트워크들은 일반적으로 다-계층 프로토콜 스택으로 표현된다. 일례로는 7 계층 오픈 시스템 인터페이스(Open System Interface; OSI) 모델과, 4 계층 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 모델이 있다. OSI 모델에서의 최상위 계층으로부터 최하위 계층까지의 순서는 (1) 애플리케이션 계층, (2) 프레젠테이션 계층, (3) 세션 계층, (4) 트랜스포트 계층, (5) 네트워크 계층, (6) 데이터-링크 계층, 및 (7) 물리 계층이다. TCP/IP 모델에서의 최상위 계층으로부터 최하위 계층까지의 순서는 (1) 애플리케이션 계층, (2) 트랜스포트 계층(통상적으로 TCP), (3) 인터넷 계층(통상적으로 IP), 및 (4) 네트워크 액세스 계층이다. 비록 이것이 가장 일반적인 모델이지만, 모든 TCP/IP 구현 들(implementations)이 이 모델을 따르는 것은 아니다. 또한, 비록 TCP/IP 모델이 OSI 모델을 따르지 않더라도, TCP/IP 트랜스포트 계층은 OSI 트랜스포트 계층에 매핑될 수 있고, TCP/IP 인터넷 계층은 OSI 네트워크 계층에 매핑될 수 있다.Packet-switched data networks are typically represented by a multi-layer protocol stack. Examples include a seven layer Open System Interface (OSI) model and a four layer transmission control protocol / Internet protocol (TCP / IP) model. The order from the top layer to the bottom layer in the OSI model is (1) application layer, (2) presentation layer, (3) session layer, (4) transport layer, (5) network layer, (6) data-link Layer, and (7) physical layer. The order from the top layer to the bottom layer in the TCP / IP model is (1) application layer, (2) transport layer (usually TCP), (3) Internet layer (usually IP), and (4) network access. Hierarchy. Although this is the most common model, not all TCP / IP implementations follow this model. Also, although the TCP / IP model does not follow the OSI model, the TCP / IP transport layer can be mapped to the OSI transport layer, and the TCP / IP Internet layer can be mapped to the OSI network layer.

트랜스포트 계층은 전송해야 할 데이터를 네트워크를 통해 전송하기에 적절한 크기의 세그먼트들로 분할하는 일을 담당한다. TCP는 트랜스포트 계층 프로토콜이다. 트랜스포트 계층은 네트워크 계층에서 누락될 수 있는 신뢰도 및 혼잡 제어 프로세스(reliability and congestion control processes)를 제공할 수 있다. 네트워크 계층은 네트워크를 통해 데이터 패킷들을 라우팅하는 일을 담당한다. IP는 네트워크 계층 프로토콜이다. 데이터-링크 계층은 네트워크의 물리적 요소들과 인터페이스하는 데 필요한 인터페이스 및 디바이스 드라이버를 관리한다. 데이터-링크 계층의 예로는 이더넷(Ethernet) 프로토콜 및 무선 링크 프로토콜(Radio Link Protocol; RLP)이 있다. 물리 계층은 네트워크의 물리적인 부분들로 구성되어 있다. 물리 계층의 예로는 직렬 및 병렬 케이블, 이더넷 및 토큰 링 케이블링, 안테나, 및 커넥터가 있다. The transport layer is responsible for dividing the data to be transmitted into segments of a size appropriate for transmission over the network. TCP is a transport layer protocol. The transport layer can provide reliability and congestion control processes that can be missed at the network layer. The network layer is responsible for routing data packets through the network. IP is a network layer protocol. The data-link layer manages the interface and device drivers needed to interface with the physical elements of the network. Examples of the data-link layer include the Ethernet protocol and the Radio Link Protocol (RLP). The physical layer consists of the physical parts of the network. Examples of physical layers include serial and parallel cables, Ethernet and token ring cabling, antennas, and connectors.

TCP/TP 네트워크에서, 데이터를 다른 컴퓨터에 전송할 필요가 있는 응용 프로그램들은 데이터를 트랜스포트 계층에 전달한다. 트랜스포트 계층에서는, 그 데이터를 적절한 크기의 세그먼트들로 분할한다. 이어서, 이들 세그먼트들은 네트워크 계층으로 전달되어, 그곳에서 네트워크 전체에 걸쳐 세그먼트들을 전송하는 데 필요한 헤더 정보를 포함한 데이터그램들로 패키지된다. 이 때, 네트워크 계층은 최하위 레벨의 프로토콜들(예컨대, 이더넷 또는 RLP)을 호출하여 특정의 물리적 매 체에 걸친 데이터의 전송을 관리한다. 데이터그램들이 한 네트워크에서 다른 네트워크로 전송될 때, 이들 데이터그램들은 또 다시 분할될 수 있다. 수신측 컴퓨터에서는, 반대의 프로세스가 행해진다. 최하위 레벨의 프로토콜들은 데이터그램들을 수신하여 이들을 네트워크 계층에 전달한다. 네트워크 계층은 데이터그램들을 세그먼트들로 재조합하여(reassemble) 이들 세그먼트들을 트랜스포트 계층에 전달한다. 트랜스포트 계층은 이들 세그먼트들을 재조합하여 데이터를 애플리케이션 계층에 전달한다.In a TCP / TP network, applications that need to send data to other computers deliver the data to the transport layer. In the transport layer, the data is divided into segments of appropriate size. These segments are then delivered to the network layer where they are packaged into datagrams containing the header information needed to transmit the segments throughout the network. At this point, the network layer invokes the lowest level protocols (eg, Ethernet or RLP) to manage the transfer of data across specific physical media. When datagrams are transferred from one network to another, these datagrams can be split again. In the receiving computer, the reverse process is performed. The lowest level protocols receive datagrams and forward them to the network layer. The network layer reassembles the datagrams into segments and delivers these segments to the transport layer. The transport layer reassembles these segments to deliver data to the application layer.

IP는 데이터그램을 발신지(source)에서 수신지(destination)로 전달하기 위한 충분한 기능(functionality)을 제공하는 것에만 한정되어, 신뢰성 있는 종단간 연결 또는 흐름 제어는 제공하지 않는다. IP를 이용하여 네트워크 계층에 전달된 세그먼트가 최종 수신지에 항상 도착한다는 보장은 없다. 세그먼트들은 수신측에서 순서가 뒤바뀐 채 수신될 수 있거나, 패킷들이 네트워크 또는 수신측 혼잡으로 인해 누락될 수 있다. 프로토콜을 단순하지만, 유연성 있게 만들기 위해 이런 비신뢰성(unreliability)을 의도적으로 IP에 구축시켰다.IP is limited only to providing sufficient functionality for delivering datagrams from source to destination, and does not provide reliable end-to-end connectivity or flow control. There is no guarantee that segments delivered to the network layer using IP will always arrive at their final destination. Segments may be received out of order at the receiving side, or packets may be missing due to network or receiving side congestion. This unreliability was intentionally built into IP to make the protocol simple but flexible.

TCP는 그 기본적인 전달 서비스로서 IP를 이용한다. TCP는 IP에서 상실된 신뢰성 및 흐름 제어를 제공한다. TCP/TP 규격 7에는 "TCP 계층 아래의 통신 프로토콜의 신뢰성에 대해 이루어진 가설은 거의 없다"라고 기술되어 있으며, 또한 TCP는 IP 등의 "하위 레벨 프로토콜로부터 단순하지만, 잠재적으로 신뢰성 없는 데이터그램 서비스를 얻을 수 있음"이라고 기술되어 있다. IP에서 상실된 신뢰성을 제공하기 위해, TCP는 다음 툴을 이용한다. 즉 (1) 데이터의 개개의 바이트를 검사 하여 이들을 순서대로 재조합하는 시퀀스 번호(sequence numbers), (2) 일부 바이트들이 통과(transit) 시에 유실되었는가를 알려주는 확인(ACK) 플래그, 및 (3)세그먼트의 내용(contents)을 검증하는 체크섬(주: IP는 데이터그램 헤더의 내용만을 검증하는 체크섬을 이용함).TCP uses IP as its basic delivery service. TCP provides the reliability and flow control lost in IP. TCP / TP Specification 7 states that "there is very little hypothesis about the reliability of communication protocols below the TCP layer". TCP also provides a simple but potentially unreliable datagram service from a lower-level protocol such as IP. Obtainable ". To provide the reliability lost in IP, TCP uses the following tools. (1) sequence numbers that examine individual bytes of data and recombine them in order, (2) an ACK flag indicating whether some bytes have been lost in transit, and (3 A checksum that verifies the contents of the segment (Note: IP uses a checksum that verifies only the contents of the datagram header).

또한, TCP는 여러 컴퓨터 및 네트워크들이 프로세서 속도, 메모리 및 대역폭 등의 면에서 상이한 역량을 갖는다는 사실로 인해 흐름 제어를 제공한다. 예를 들어, 웹 가동형(web enabled) 이동 전화는 웹 서버가 제공할 수 있는 속도와 동일한 속도로 데이터를 수신할 수 없을 것이다. 그러므로, TCP는 웹 서버가 데이터를 이동 전화가 받아들일 수 있는 속도로 제공하도록 보장해야 한다. TCP의 흐름 제어 체계의 목적은 너무 높은 전송 속도로 인해 데이터가 유실되는 것을 방지함과 동시에, 네트워크 자원이 불충분하게 활용되는 것을 방지하는 데 있다. In addition, TCP provides flow control due to the fact that different computers and networks have different capabilities in terms of processor speed, memory, bandwidth, and the like. For example, a web enabled mobile phone will not be able to receive data at the same rate that a web server can provide. Therefore, TCP must ensure that the web server provides the data at a rate that the mobile phone can accept. The purpose of the flow control scheme in TCP is to prevent data from being lost due to too high transmission speeds, and to prevent insufficient use of network resources.

초기의 대부분의 TCP 흐름 제어 메커니즘은, 어떠한 혼잡의 원인인 것으로 추정되었던 수신측 연결에 집중되었다. 수신측-기반 흐름 제어 메커니즘의 일례가 수신 윈도우(RWND) 사이징이다. RWND의 크기는 수신측이 송신측에게 전송하는 ACK 시에 수신측에 의해 알려진다. RWND의 크기는 수신측의 수신 버퍼의 사이즈, 및 이들이 비워지는 빈도 등과 같은 요인에 기초한다.Most of the early TCP flow control mechanisms concentrated on the receiving side connection, which was supposed to be the cause of some congestion. One example of a receive-side flow control mechanism is Receive Window (RWND) sizing. The size of the RWND is known by the receiving side at the time of ACK that the receiving side transmits to the transmitting side. The size of the RWND is based on factors such as the size of the receiving buffer at the receiving side, and the frequency with which they are empty.

그러나, 수신측에 기초한 흐름 제어 메커니즘은 네트워크에서 발생할 수 있는 문제점을 해결하지는 않는다. 이런 문제점은 네트워크 사용불능, 트랙픽 과부하, 및 네트워크 라우터에 대한 오버플로잉 버퍼일 수 있다. 수신측은 순조롭게 동작될 수 있지만, 네트워크는 패킷들을 누락시킬 수 있는 데, 이는 송신측이 네트 워크가 처리하기에 너무 높은 속도로 데이터를 전송하기 때문이다. 따라서, 송신측-기반 흐름 제어 방법들이 개발되었다. RFC 2581에는 TCP의 4 가지 흐름 제어 방법인 (1) 저속 개시, (2) 혼잡 회피, (3) 고속 재전송, 및 (4) 고속 복원이 상술되어 있다.However, the flow control mechanism based on the receiving side does not solve the problem that may occur in the network. These problems can be network unavailability, traffic overload, and overflowing buffers for network routers. The receiving side may operate smoothly, but the network may drop packets because the sending side transmits data at a rate that is too high for the network to process. Thus, sender-based flow control methods have been developed. RFC 2581 details four flow control methods of TCP: (1) slow start, (2) congestion avoidance, (3) fast retransmission, and (4) fast recovery.

상기 4가지 흐름 제어 방법들은 혼잡 관련 문제로부터 이를 복원하고 이를 방지하는 데에 이용된다. 어떤 방법이 이용되는지는, 어떤 혼잡 관련 문제에 대면하는지 또는 어떤 혼잡 관련 문제를 방지할지에 달려 있다. 저속 개시는 네트워크 용량을 탐구하기 위한 접속의 개시 시에, 또는 세그먼트가 손실되었음을 재전송 타이머가 가리킨 후에 이용된다. 세그먼트가 전송되거나 ACK가 수신되면, TCP 송신측은, 다음 세그먼트의 라운트 트립 타임(round trip time)을 예측하고 재전송 타임아웃을 산출한다. 다음 세그먼트가 전송되면, 그 세그먼트에 대한 재전송 타이머는 새로운 재전송 타임아웃 값으로 시작한다. 그 세그먼트에 대한 ACK가 수신되기 전에 재전송 타이머의 시간이 만료될 경우, 그 세그먼트는 손실된 것으로 추정된다. 혼잡 회피는, 저속 개시가 소정의 임계치에 도달한 후에, 또는 중복되는 ACK의 수신에 의해 잠재적인 혼잡이 검출된 후에 이용된다. 고속 재전송은, 재전송 타이머가 패킷이 손실된 것을 가리키기 전에 손실 가능성이 있는 패킷을 재전송하는 데에 이용된다. 고속 복원은, 불필요한 데이터 재전송을 방지하는 데에 이용된다.The four flow control methods are used to recover from and prevent congestion related problems. Which method is used depends on which congestion problems are encountered or which congestion problems are to be avoided. Slow start is used at the start of a connection to explore network capacity, or after the retransmission timer indicates that a segment has been lost. When a segment is sent or an ACK is received, the TCP sender estimates the round trip time of the next segment and calculates a retransmission timeout. When the next segment is sent, the retransmission timer for that segment starts with a new retransmission timeout value. If the time of the retransmission timer expires before the ACK for that segment is received, the segment is assumed to be lost. Congestion avoidance is used after a slow start has reached a predetermined threshold or after potential congestion has been detected by the reception of a duplicate ACK. Fast retransmission is used to retransmit a potentially lost packet before the retransmission timer indicates that the packet was lost. Fast recovery is used to prevent unnecessary data retransmission.

전술한 흐름 제어 방법들에 의해 제공되는 개선에도 불구하고, 네트워크 성능을 희생하면서까지 TCP 연결의 신뢰성을 높이는 것이 강조되어 왔다. 이에 따 라, 당 분야에서는 TCP 연결성을 최적화하여 신뢰성 및 성능 양쪽 모두가 양보되지 않도록 하는 것이 요구된다.Despite the improvements provided by the flow control methods described above, it has been emphasized to increase the reliability of TCP connections at the expense of network performance. Accordingly, there is a need in the art to optimize TCP connectivity so that both reliability and performance are not compromised.

무선 네트워크에서 TCP(Transmission Control Protocol) 세션을 최적화하기 위한 방법 및 장치가 개시된다. 일실시예에서, 본 방법은 혼잡 윈도우 및 저속 개시 임계치를, 최소 혼잡 윈도우 및 최대 혼잡 윈도우에 의해 규정되는 범위로 제한하는 단계를 포함하며, 최소 혼잡 윈도우 및 최대 혼잡 윈도우는 무선 네트워크의 네트워크 유형에 적어도 일부 기초한 것이다.A method and apparatus for optimizing a Transmission Control Protocol (TCP) session in a wireless network is disclosed. In one embodiment, the method includes limiting a congestion window and a slow start threshold to a range defined by a minimum congestion window and a maximum congestion window, wherein the minimum congestion window and the maximum congestion window depend on the network type of the wireless network. At least in part.

본 발명의 기타 양상, 특징, 및 기술들은 당업자라면 이하의 상세한 설명을 참조해 보면 명백해 질 것이다.Other aspects, features, and techniques of the present invention will become apparent to those skilled in the art upon reference to the following detailed description.

도 1은 본 발명의 하나 이상의 실시예에 따라, 본 발명의 하나 이상의 양상을 실시할 수 있는 시스템의 간략화된 시스템 다이어그램을 도시.1 illustrates a simplified system diagram of a system that may implement one or more aspects of the present invention, in accordance with one or more embodiments of the present invention.

도 2는 본 발명의 하나 이상의 실시예에 따라, TCP 모듈이 혼잡 윈도우를 제한할 수 있는 방법을 나타낸 흐름도.2 is a flow diagram illustrating a method in which a TCP module can limit a congestion window, in accordance with one or more embodiments of the present invention.

도 3은 본 발명의 하나 이상의 실시예에 따라, TCP 모듈이 저속 개시 임계치를 제한할 수 있는 방법을 나타낸 흐름도.3 is a flow diagram illustrating how a TCP module may limit a slow start threshold, in accordance with one or more embodiments of the present invention.

도 4는 본 발명의 하나 이상의 실시예에 따라, TCP 모듈이 재전송 타임아웃을 제한할 수 있는 방법을 나타낸 흐름도.4 is a flow diagram illustrating a method by which a TCP module can limit retransmission timeout, in accordance with one or more embodiments of the present invention.

도 5는 본 발명의 하나 이상의 실시예에 따라, TCP 혼잡 회피 국면 동안 TCP 모듈이 혼잡 윈도우를 증가시킬 수 있는 방법을 나타낸 흐름도.5 is a flow diagram illustrating a method by which a TCP module can increase a congestion window during a TCP congestion avoidance phase, in accordance with one or more embodiments of the present invention.

도 6은 본 발명의 하나 이상의 실시예에 따라, 변경된 TCP 고속 재전송/고속 복원 프로세스를 나타낸 흐름도.6 is a flow diagram illustrating a modified TCP fast retransmission / fast recovery process, in accordance with one or more embodiments of the present invention.

도 7은 본 발명의 하나 이상의 실시예에 따라, 타임아웃시의 변경된 TCP 재전송 프로세스를 나타낸 흐름도.7 is a flow diagram illustrating a modified TCP retransmission process upon timeout, in accordance with one or more embodiments of the present invention.

도 8은 본 발명의 하나 이상의 실시예에 따라, TCP 모듈이 네트워크 유형을 판정하고 하나 이상의 TCP 세션 파라미터를 설정할 수 있는 방법을 나타낸 흐름도. 8 is a flow diagram illustrating a method in which a TCP module can determine a network type and set one or more TCP session parameters, in accordance with one or more embodiments of the present invention.

무선 네트워크를 통해 통신하는 네트워크 노드에 대해 전송 제어 프로토콜(TCP) 세션을 최적화하는 방법 및 장치가 개시된다. 본 발명의 일 양상은, TCP 세션의 동작을, 무선 네트워크의 네트워크 유형과 연관된 하나 이상의 TCP 세션 파라미터에 맞추어 변경하는 것이다. 본 발명의 다른 양상은, 무선 네트워크의 네트워크 유형을 판정하고 하나 이상의 TCP 세션 파라미터를, 네트워크 유형과 연관된 하나 이상의 대응 저장된 세션 파라미터들로 설정하는 유연한 방법을 제공하는 것이다.A method and apparatus are disclosed for optimizing a Transmission Control Protocol (TCP) session for a network node communicating over a wireless network. One aspect of the present invention is to modify the operation of a TCP session to match one or more TCP session parameters associated with a network type of a wireless network. Another aspect of the present invention is to provide a flexible method of determining a network type of a wireless network and setting one or more TCP session parameters to one or more corresponding stored session parameters associated with the network type.

일실시예에서, 혼잡 윈도우 및 저속 개시 임계치는, 무선 네트워크의 네트워크 유형에 적어도 일부 기초하여 최소 혼잡 윈도우 및 최대 혼잡 윈도우에 의해 규정되는 범위로 제한될 수 있다. 다른 실시예에서, 하나 이상의 TCP 세션 파라미터가, 네트워크 유형에 기초하여 하나 이상의 대응 저장된 세션 파라미터로 설정될 수 있다. 재전송 타임아웃도 또한, 네트워크 유형에 적어도 일부 기초하여 최대 재전송 타임아웃 이하의 값으로 설정될 수 있다. 다른 실시예에서, 네트워크 유형에 적어도 일부 기초하여 TCP 혼잡 회피 국면 동안 혼잡 윈도우가 혼잡 윈도우 증가 속도만큼 증가될 수 있다.In one embodiment, the congestion window and slow start threshold may be limited to a range defined by a minimum congestion window and a maximum congestion window based at least in part on the network type of the wireless network. In another embodiment, one or more TCP session parameters may be set to one or more corresponding stored session parameters based on the network type. The retransmission timeout may also be set to a value less than or equal to the maximum retransmission timeout based at least in part on the network type. In another embodiment, the congestion window may be increased by the congestion window increase rate during the TCP congestion avoidance phase based at least in part on the network type.

컴퓨터 프로그래밍 숙련자의 실시에 따라, 컴퓨터 시스템 또는 유사 전자 시스템에 의해 수행되는 동작들(operations)을 참조하여 본 발명을 이하에서 기술하기로 한다. 이런 동작들을 때로는 컴퓨터에 의해 실행되는 것이라 칭한다. 기호로 표현되는 동작들이 데이터 비트를 표현하는 전기 신호에 대한 중앙 처리 장치 등의 프로세서에 의한 조작, 시스템 메모리에서와 같은 메모리 영역에서의 데이터 비트의 보존 이외에도 신호에 대한 기타 처리를 포함하는 것을 인식하게 될 것이다. 데이터 비트가 보존되는 메모리 영역은 그 데이터 비트에 대응하는 특정의 전기적, 자기적, 광학적, 또는 유기적 특성을 갖는 물리적 영역이다. 본원에서 기재된 "네트워크 노드", "송신측", 및 "수신측"은 중앙 처리 장치와 같은 프로세서를 포함하는 임의 전자 장치를 포함하는 것으로 이해된다.In accordance with the practice of a computer programming expert, the present invention is described below with reference to operations performed by a computer system or similar electronic system. These operations are sometimes referred to as being executed by a computer. Recognize that operations represented by symbols include manipulation by a processor, such as a central processing unit, for electrical signals representing data bits, as well as other processing of signals in addition to preservation of data bits in a memory region, such as in system memory. Will be. The memory region in which data bits are preserved is a physical region having specific electrical, magnetic, optical, or organic characteristics corresponding to the data bits. "Network node", "sending side", and "receiving side" described herein are understood to include any electronic device that includes a processor, such as a central processing unit.

본 발명의 엘리먼트들은 소프트웨어에 의해 구현될 때, 본질적으로는 필요한 태스크를 수행하기 위한 코드 세그먼트들이다. 코드 세그먼트들은 프로세서 판독가능 매체에 저장될 수 있거나, 전송 매체 또는 통신 링크를 통해 반송파에 실려진 컴퓨터 데이터 신호에 의해 전송될 수 있다. "프로세서 판독가능 매체"는 정보를 저장하거나 전달할 수 있는 어떠한 매체라도 포함될 수 있다. 프로세서 판독가능 매체의 예로서는 전자 회로, 반도체 메모리 장치, ROM, 플래시 메모리나 다른 비휘발성 메모리, 플로피 디스켓, CD-ROM, 광 디스크, 하드 디스크, 광 섬유 매체, 무 선 주파수(RF) 링크 등이 있다. 컴퓨터 데이터 신호는 전자 네트워크 채널, 광 섬유, 무선(air), 전자기적 RF 링크 등과 같은 전송 매체를 통해 전파될 수 있는 어떠한 신호라도 포함될 수 있다. 코드 세그먼트들은 인터넷, 인트라넷 등과 같은 컴퓨터 네트워크를 통해 다운로드될 수 있다.Elements of the present invention, when implemented by software, are essentially code segments for performing a necessary task. The code segments may be stored in a processor readable medium or transmitted by a computer data signal carried on a carrier via a transmission medium or a communication link. "Processor readable medium" can include any medium that can store or transfer information. Examples of processor readable media include electronic circuitry, semiconductor memory devices, ROMs, flash memory or other nonvolatile memory, floppy diskettes, CD-ROMs, optical disks, hard disks, optical fiber media, radio frequency (RF) links, and the like. . The computer data signal may include any signal that can be propagated through a transmission medium such as an electronic network channel, an optical fiber, an air, an electromagnetic RF link, or the like. Code segments can be downloaded over a computer network, such as the Internet, an intranet, or the like.

도 1은 하나 이상의 본 발명의 양상을 구현할 수 있는 예시적인 시스템(100)을 도시한다. 시스템(100)은 선택적 데이터 네트워크(120) 및 무선 네트워크(130)를 통해 수신측(140)과 통신하는 송신측(110)으로 구성된다. 도 1에 도시된 실시예에서는 선택적 데이터 네트워크(120)가 존재하는 것으로 되어 있지만, 다른 실시예에서는 생략될 수도 있다.1 illustrates an example system 100 that may implement one or more aspects of the present invention. System 100 is comprised of a transmitting side 110 in communication with a receiving side 140 via an optional data network 120 and a wireless network 130. Although the optional data network 120 is present in the embodiment shown in FIG. 1, it may be omitted in other embodiments.

송신측(110)은 송신측(110) 상에 상주하는 TCP 모듈을 이용하여 또 다른 장치에 대한 TCP 가상 회선(160)을 생성하도록 적응되는 네트워크 노드일 수 있다. 예를 들어, 송신측(110)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 셀룰러 전화, 개인 휴대 단말기(PDA), 서버, 네트워크 어댑터, 또는 내장형 컴퓨터일 수 있다. 송신측(110)으로서는, 또 다른 장치에 대해 TCP 가상 회선(160)을 생성할 수 있는 어떠한 장치라도 고려될 수 있는 바와 같이, 상기에서 열거된 것들은 단지 예를 든 것에 불과하다는 것을 인식해야 한다. TCP 모듈은 송신측(110) 상에서 둘 이상의 프로그램에 의해 공유되는 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 스택의 일부일 수 있거나, 또 다른 프로그램의 일부로서 존재할 수 있다. 또한, 본 발명의 원리에 부합되는 TCP 모듈을 포함하는 송신측(110)은 이처럼 구성되지 않은 다른 TCP 모듈을 더 포함할 수 있다는 것을 인식해야 한다.The transmitting side 110 may be a network node adapted to create a TCP virtual circuit 160 for another device using a TCP module residing on the transmitting side 110. For example, sender 110 may be a desktop computer, laptop computer, cellular telephone, personal digital assistant (PDA), server, network adapter, or embedded computer. As the transmitting side 110, it should be recognized that the above listed are merely examples, as any device capable of creating a TCP virtual circuit 160 for another device may be considered. The TCP module may be part of a Transmission Control Protocol / Internet Protocol (TCP / IP) stack shared by two or more programs on the sender 110 or may exist as part of another program. In addition, it should be appreciated that the sending side 110, including the TCP module in accordance with the principles of the present invention, may further include other TCP modules not configured as such.

수신측(140)은 수신측(140) 상에 상주하는 TCP 모듈을 이용하여 또 다른 장치에 대한 TCP 가상 회선(160)을 생성하도록 적응되는 네트워크 노드일 수 있다. 예를 들어, 수신측(140)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 셀룰러 전화, 개인 휴대 단말기(PDA), 서버, 네트워크 어댑터, 또는 내장형 컴퓨터일 수 있다. 수신측(140)으로서는, 또 다른 장치에 대해 TCP 가상 회선(160)을 생성할 수 있는 어떠한 장치라도 고려될 수 있는 바와 같이, 상기에서 열거된 것들은 단지 예를 든 것에 불과하다는 것을 인식해야 한다. TCP 모듈은 수신측(140) 상에서 둘 이상의 프로그램에 의해 공유되는 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 스택의 일부일 수 있거나, 또 다른 소프트웨어 프로그램의 일부로서 존재할 수 있다. 또한, 본 발명의 원리에 부합되는 TCP 모듈을 포함하는 수신측(140)은 이처럼 구성되지 않은 다른 TCP 모듈을 더 포함할 수 있다는 것을 인식해야 한다.Receiving side 140 may be a network node adapted to generate a TCP virtual circuit 160 for another device using a TCP module residing on receiving side 140. For example, the receiving side 140 may be a desktop computer, laptop computer, cellular telephone, personal digital assistant (PDA), server, network adapter, or embedded computer. It should be appreciated that as the receiving side 140, those listed above are merely examples, as any device capable of creating a TCP virtual circuit 160 for another device may be considered. The TCP module may be part of a Transmission Control Protocol / Internet Protocol (TCP / IP) stack shared by two or more programs on the receiving side 140 or may exist as part of another software program. In addition, it should be appreciated that the receiving side 140, which includes a TCP module in accordance with the principles of the present invention, may further include other TCP modules not configured as such.

도 1에 도시된 유닛(110 및 140)을 "송신측" 및 "수신측"으로 각각 기술하였지만, 이들 용어는 임의적인 것으로, 송신측(110)이 때로는 수신측(140)에 데이터를 전송할 수 있는 반면, 어떤 때에는 수신측(140)이 송신측(110)에 데이터를 전송할 수 있다는 것을 인식해야 한다.Although the units 110 and 140 shown in FIG. 1 are described as "sending side" and "receiving side," respectively, these terms are arbitrary and the transmitting side 110 may sometimes transmit data to the receiving side 140. FIG. On the other hand, it should be recognized that at some point the receiving side 140 may transmit data to the transmitting side 110.

도 1의 실시예에서, TCP 가상 회선(160)은 송신측 TCP 종단점(endpoint)(150)과 수신측 TCP 종단점(170) 간에 존재한다. TCP 가상 회선에 대한 상세한 사항은 본 발명의 범주를 벗어나는 것이지만, 도 1에서는 기본 네트워크 프로토콜 및 네트워크들을 신뢰할 수 없더라도, 신뢰성 있는 TCP 세션과 이에 수반되는 흐름 제어 알고리즘을 송신측(110) 및 수신측(140)에서 생성할 수 있는 것으 로 도시하였다. 송신측(110)과 수신측(140) 간의 둘 이상의 TCP 가상 회선(160)은 동시에 존재할 수 있다는 것을 이해할 것이다.In the embodiment of FIG. 1, TCP virtual circuit 160 exists between sender TCP endpoint 150 and receiver TCP endpoint 170. Details of the TCP virtual circuit are beyond the scope of the present invention, but in FIG. 1, although the underlying network protocol and networks are unreliable, a reliable TCP session and the accompanying flow control algorithm are transmitted to the sender 110 and the receiver ( As shown in FIG. It will be appreciated that two or more TCP virtual circuits 160 between the transmitting side 110 and the receiving side 140 may exist simultaneously.

선택적 데이터 네트워크(120)는 단일 네트워크 또는 다수의 상호연결된 네트워크로 구성될 수 있다. 선택적 데이터 네트워크(120)를 구성할 수 있는 네트워크의 예로서는 인터넷, LAN, WAN, 디지탈 가입자 회선(DSL) 네트워크, 케이블 네트워크, 전화 접속(dial-up) 네트워크, 셀룰러 데이터 네트워크, 및 위성 네트워크가 있다. 이들은 패킷 교환형 네트워크 또는 회선 교환형 네트워크일 수 있다. 선택적 데이터 네트워크(120)를 구성할 수 있는 상기에서 열거된 네트워크들은 단지 예시적인 것으로, 인터넷 프로토콜(IP)과 같은 하나 이상의 네트워크 계층 프로토콜을 이용하여 또 다른 네트워크에 연결될 수 있는 어떠한 네트워크라도 사용할 수 있다는 것을 인식해야 한다.The optional data network 120 may consist of a single network or multiple interconnected networks. Examples of networks that may constitute the optional data network 120 are the Internet, LAN, WAN, digital subscriber line (DSL) networks, cable networks, dial-up networks, cellular data networks, and satellite networks. These may be packet switched networks or circuit switched networks. The networks listed above that may constitute the optional data network 120 are merely exemplary and may use any network that can be connected to another network using one or more network layer protocols, such as the Internet Protocol (IP). It should be recognized.

무선 네트워크(130)는 적어도 하나의 무선 물리 계층, 또는 적어도 하나의 네트워크가 적어도 하나의 무선 물리 계층을 포함하는 다수의 상호연결된 네트워크로 구성될 수 있다. 무선 네트워크(130)는, CDMA2000 1x(Code Division Multiple Access 2000 1x) 네트워크, CDMA2000 1xEVDO(CDMA2000 1x Evolution Data Only) 네트워크, GPRS(General Packet Radio Services) 네트워크, UMTS(Universal Mobile Telecommunications System) 네트워크, UTRAN(Universal Terrestrial Radio Access Network) 네트워크, 및 EDGE(Enhanced Data for GSM Evolution) 네트워크와 같은 셀룰라 데이터 네트워크일 수 있다. 무선 네트워크(130)를 구성할 수 있는 상기에서 열거된 네트워크들은 단지 예시적인 것으로, IP와 같은 하나 이상의 네트워크 계층 프로토콜을 이용하여 또 다른 네트워크에 연결될 수 있는 어떠한 네트워크라도 사용할 수 있다는 것을 인식해야 한다. Wireless network 130 may be comprised of at least one wireless physical layer, or a plurality of interconnected networks where at least one network comprises at least one wireless physical layer. The wireless network 130 includes a CDMA2000 1x (Code Division Multiple Access 2000 1x) network, a CDMA2000 1x EVDO (CDMA2000 1x Evolution Data Only) network, a General Packet Radio Services (GPRS) network, a Universal Mobile Telecommunications System (UMTS) network, a UTRAN (UTRAN) Cellular data networks such as Universal Terrestrial Radio Access Network (EDR) networks, and Enhanced Data for GSM Evolution (EDGE) networks. It should be appreciated that the networks listed above that may make up the wireless network 130 are merely exemplary and may use any network that may be connected to another network using one or more network layer protocols such as IP.

송신측(110) 및/또는 수신측(140)의 하나 이상의 TCP 모듈이 TCP 세션을 최적화하도록 적응될 수 있다. 일실시예에서, 이러한 적응은, 두 개의 새로운 TCP 세션 파라미터, 즉 최소 CWND(min_CWND) 및 최대 CWND(max_CWND)를 도입하여 혼잡 윈도우(CWND)의 크기 및 저속 개시 임계치(slow start threshold; SSTHRESH)를 제한하는 것을 포함한다. 다른 적응은, 다른 TCP 세션 파라미터, 즉 최대 RTO(mx_RTO)를 도입하여 TCP 재전송 타임아웃(RTO)의 사이즈를 제한하는 것일 수 있다. 그 밖의 다른 적응은, CWND 증가 속도(speed_UP), CWND 감소 속도(speed_DOWN) 및 RTO 멀티플라이어(RTO_MULT)와 같은 그 밖의 다른 TCP 세션 파라미터들을 포함할 수 있다.One or more TCP modules at the transmitting side 110 and / or receiving side 140 may be adapted to optimize the TCP session. In one embodiment, this adaptation introduces two new TCP session parameters, namely minimum CWND (min_CWND) and maximum CWND (max_CWND) to reduce the size of the congestion window CWND and slow start threshold (SSTHRESH). Includes limitations. Another adaptation may be to introduce another TCP session parameter, namely the maximum RTO (mx_RTO), to limit the size of the TCP retransmission timeout (RTO). Other adaptations may include other TCP session parameters such as CWND increase rate (speed_UP), CWND decrease rate (speed_DOWN) and RTO multiplier (RTO_MULT).

소정의 실시예에서, TCP 모듈은, 변경된 TCP 고속 복원 프로세스 및 타임아웃 시 변경된 TCP 재전송 프로세스를 포함하여, 네트워크 유형에 적어도 일부 기초한 적응을 더 포함할 수 있다.In certain embodiments, the TCP module may further include an adaptation based at least in part on the network type, including a modified TCP fast recovery process and a modified TCP retransmission process upon timeout.

하나 이상의 TCP 세션 파라미터 및 TCP 프로세스는 무선 네트워크(130)의 네트워크 유형에 적어도 일부 기초할 수 있다. 일실시예에서, 하나 이상의 TCP 세션 파라미터는 네트워크 유형에 관한 하나 이상의 특징에 적어도 일부 기초하여 미리 결정된 후 송신측(110) 및/또는 수신측(140)에 프로그래밍될 수 있다. 소정의 실시예에서, 미리 결정된 세션 파라미터의 다수의 집합(각각이 네트워크 유형과 연관됨)가 송신측(110) 및/또는 수신측(140)에 미리 저장될 수 있다. 이들 실시예에 서, TCP 세션 동안 무선 네트워크(130)의 네트워크 유형을 판정하고, 이 네트워크 유형과 연관된 미리 저장된 세션 파라미터 집합에 포함된 대응 세션 파라미터로 하나 이상의 TCP 세션 파라미터를 갱신하도록 TCP 모듈이 적응될 수 있다.One or more TCP session parameters and TCP processes may be based at least in part on the network type of wireless network 130. In one embodiment, one or more TCP session parameters may be programmed at the sending side 110 and / or receiving side 140 after being predetermined based at least in part on one or more characteristics relating to the network type. In certain embodiments, multiple sets of predetermined session parameters, each associated with a network type, may be pre-stored at the transmitting side 110 and / or receiving side 140. In these embodiments, the TCP module adapts to determine the network type of the wireless network 130 during the TCP session and to update one or more TCP session parameters with the corresponding session parameters included in the set of prestored session parameters associated with the network type. Can be.

소정의 실시예에서, 네트워크 유형은 "높은 대역폭" 및 "낮은 대역폭"으로 식별될 수 있다. "높은 대역폭" 및 "낮은 대역폭"이라는 용어는 상대적인 것이며 하나의 네트워크 유형은 다른 네트워크 유형에 비해 "높은 대역폭"을 갖는 것으로 간주될 수 있지만, 또다른 네트워크 유형에 비해서는 "낮은 대역폭"을 갖는 것으로 간주될 수도 있음을 이해해야 한다. 예를 들면, 일실시예에서, CDMA2000 1x 네트워크는 "낮은 대역폭" 네트워크 유형인 것으로 간주될 수 있지만, CDMA2000 1x EVDO 네트워크는 "높은 대역폭" 네트워크 유형인 것으로 간주될 수 있는데, 이는 CDMA2000 1x EVDO 네트워크가 CDMA2000 1x 네트워크에 비해 통상적으로 높은 대역폭, 낮은 전파 지연, 및 낮은 대기 지연(queuing delays)을 갖기 때문이다. CDMA2000 1x 및 CDMA2000 1x EVDO 네트워크를 네트워크 유형의 개념을 예시하는 데에 이용하였지만, 기타 다른 무선 네트워크도 동일하게 적용할 수 있음을 이해해야 한다.In certain embodiments, the network type may be identified as "high bandwidth" and "low bandwidth." The terms "high bandwidth" and "low bandwidth" are relative and one network type may be considered to have "high bandwidth" compared to other network types, but as having "low bandwidth" compared to another network type. It should be understood that it may be considered. For example, in one embodiment, a CDMA2000 1x network may be considered to be a "low bandwidth" network type, while a CDMA2000 1x EVDO network may be considered to be a "high bandwidth" network type, which is a CDMA2000 1x EVDO network. This is because they typically have higher bandwidth, lower propagation delays, and lower queuing delays compared to CDMA2000 1x networks. Although CDMA2000 1x and CDMA2000 1x EVDO networks have been used to illustrate the concept of network types, it should be understood that other wireless networks may equally apply.

다른 실시예에서는, "가장 높은 대역폭", "높은 대역폭", "중간 대역폭", "낮은 대역폭", 및 "가장 낮은 대역폭"과 같은 여러 개의 네트워크 유형이 존재할 수도 있다.In other embodiments, there may be several network types, such as "highest bandwidth", "high bandwidth", "medium bandwidth", "low bandwidth", and "lowest bandwidth".

일실시예에서, 네트워크 유형이란 무선 네트워크(130)의 현재 네트워크 특징을 칭하는 것일 수 있다. 이들 상황에서, 무선 네트워크(130)의 네트워크 유형은, TCP 세션 전, 혹은 TCP 세션 동안, 혹은 TCP 세션 후에 변경될 수 있지만, 물리적 네트워크는 동일하게 유지된다. 예를 들면, 네트워크 유형은, 무선 네트워크(130)의 대역폭, 전파 지연, 패킷 손실, 대기 지연 등의 변화에 따라 변화할 수 있다. 이 변화는, 열악한 전파 품질, 하나의 BTS(base transceiver station)로부터 다른 BTS로의 수신측(140)의 빈번한 핸드오프, 또는 수신측(140)과 BTS 간의 거리와 같은 조건에 따라 발생될 수 있다. 예를 들면, 수신측(140)이 BTS에 가까이 있는 경우, 무선 네트워크(130)의 네트워크 유형은 "높은 대역폭"으로 간주될 수 있다. 그러나, 수신측(140)이 BTS로부터 더욱 멀어지도록 이동함에 따라, 수신측(140)과 BTS 간의 거리가 증가됨으로 인해 대기 지연 및 패킷 손실이 증가할 수 있으므로 네트워크 유형이 "낮은 대역폭"으로 변경될 수 있다. 환경적 요인 외에도, 무선 네트워크(130)에 걸리는 트래픽 부하의 변화도 네트워크 유형의 변경을 발생시킬 수 있다.In one embodiment, the network type may refer to the current network characteristics of the wireless network 130. In these situations, the network type of wireless network 130 may change before, during, or after a TCP session, but the physical network remains the same. For example, the network type may change according to changes in bandwidth, propagation delay, packet loss, standby delay, and the like of the wireless network 130. This change may occur depending on conditions such as poor propagation quality, frequent handoff of the receiving side 140 from one base transceiver station (BTS) to another, or the distance between the receiving side 140 and the BTS. For example, if the receiving side 140 is close to the BTS, the network type of the wireless network 130 may be considered "high bandwidth." However, as the receiving side 140 moves further away from the BTS, the network type may change to "low bandwidth" because the latency between the receiving side 140 and the BTS may increase, resulting in increased latency and packet loss. Can be. In addition to environmental factors, changes in the traffic load on the wireless network 130 may also cause changes in the network type.

도 2는, 송신측(예를 들면 송신측(110)) 또는 수신측(예를 들면 수신측(140))일 수 있는 네트워크 노드에서의 TCP 세션 동안 min_CWND 및 max_CWND가 CWND를 제한하도록 이용될 수 있는 방법에 대한 일실시예를 도시한 도면이다. 프로세스(200)는 블록(210)에 나타낸 바와 같이 CWND의 갱신시에 시작된다. CWND는 TCP 세션 동안 몇몇 방법을 이용하여 갱신될 수 있다. 예를 들면, RFC 2583에서 개략적으로 설명된 저속 개시 국면 동안, 비-중복(non-duplicate) 확인(NDACK)이 수신될 때마다 CWND가 1만큼 증가된다. RFC 2583에서 개략적으로 설명된 혼잡 회피 국면 동안, 하나 이상의 NDACK에 의해 확인된(acknowledged) 모든 CWND 세그먼 트 수에 대해 CWND가 1만큼 증가된다. 이들 예는 본 발명을 제한하는 것이 아니며 CWND의 어떠한 갱신에도 적용가능하다.FIG. 2 may be used such that min_CWND and max_CWND limit CWND during a TCP session at a network node, which may be a sender (eg, sender 110) or a receiver (eg, receiver 140). Figure 1 illustrates an embodiment of a method. Process 200 begins upon update of CWND as shown in block 210. CWND can be updated using several methods during a TCP session. For example, during the slow start phase outlined in RFC 2583, CWND is increased by 1 each time a non-duplicate acknowledgment (NDACK) is received. During the congestion avoidance phase outlined in RFC 2583, CWND is increased by 1 for every CWND segment number acknowledged by one or more NDACKs. These examples do not limit the invention and are applicable to any update of CWND.

프로세스(200)는 블록(220)으로 진행하며 여기서 CWND가 max_CWND와 비교된다. CWND가 max_CWND보다 클 경우, 프로세스(200)는 블록(230)으로 진행하며 여기서 CWND가 max_CWND에 설정된다. 그러나, CWND가 max_CWND 미만인 경우, 프로세스(200)는 블록(240)으로 진행된다.Process 200 proceeds to block 220 where CWND is compared to max_CWND. If CWND is greater than max_CWND, process 200 proceeds to block 230 where CWND is set to max_CWND. However, if CWND is less than max_CWND, process 200 proceeds to block 240.

블록(240)에서, CWND는 min_CWND와 비교된다. CWND가 min_CWND 미만인 경우, 프로세스(200)는 블록(250)으로 진행되어 CWND가 min_CWND에 설정된다. 그러나, CWND가 min_CWND보다 큰 경우, 이는 변경되지 않고 유지된다.At block 240, CWND is compared to min_CWND. If CWND is less than min_CWND, process 200 proceeds to block 250 where CWND is set to min_CWND. However, if CWND is greater than min_CWND, it remains unchanged.

CWND가 제한될 수 있는 예는, TCP 재전송 타이머가 시간 만료되어 패킷이 손실되었음(즉, 타임아웃)을 가리킨 후에 발생하는 CWND의 갱신이다. 일부 TCP 구현예에서, CWND는 타임아웃 후에 작은 값, 통상적으로 1과 4 사이의 값으로 감소된다. 그러나, CWND가 1과 4 사이의 값으로 감소되는 대신에, min_CWND 값으로 감소될 수도 있다.An example of a CWND that may be restricted is an update of CWND that occurs after the TCP retransmission timer has timed out indicating that a packet was lost (ie, timeout). In some TCP implementations, CWND is reduced to a small value, typically between 1 and 4, after timeout. However, instead of decreasing the CWND to a value between 1 and 4, it may be reduced to the min_CWND value.

CWND가 제한될 수 있는 다른 예는, 혼잡 회피 국면 동안의 CWND의 갱신이다. 일부 TCP 구현예에서, CWND는 확인(ACK)되는 모든 CWND 세그먼트(혹은 CWND가 세그먼트로 표현되지 않는 경우 바이트) 수에 대해 1만큼 갱신된다. CWND가 혼잡 회피 국면 동안 max_CWND를 초과하는 경우, 이는 max_CWND로 설정될 수 있다.Another example where CWND can be restricted is the update of CWND during the congestion avoidance phase. In some TCP implementations, the CWND is updated by 1 for every CWND segment (or bytes if CWND is not represented as a segment) that is acknowledged (ACK). If CWND exceeds max_CWND during the congestion avoidance phase, it may be set to max_CWND.

프로세스(200)에 나타낸 하나 이상의 행위(acts)의 순서는 본 발명의 원리에 부합되는 한 변경될 수 있다. 예를 들면, 소정의 실시예에서, CWND는 max_CWND와 비교되기 전에 min_CWND와 비교될 수 있다. CWND를 갱신하는 데에 이용되는 TCP 프로세스에 따라, CWND를 min_CWND가 아닌 max_CWND와 비교할 필요만 있을 수 있으며(예를 들면, CWND가 증가하는 경우), 그 반대의 경우(예를 들면 CWND가 감소하는 경우)도 있을 수 있다. 또한, CWND는 수신측의 수신 윈도우(RWND)의 크기에 의해 제한될 수 있다.The order of one or more acts shown in process 200 may be changed as long as it is consistent with the principles of the invention. For example, in some embodiments, CWND may be compared to min_CWND before comparing to max_CWND. Depending on the TCP process used to update CWND, it may only be necessary to compare CWND with max_CWND rather than min_CWND (for example, if CWND increases), and vice versa (for example, if CWND decreases) Case). In addition, the CWND may be limited by the size of the receiving window RWND on the receiving side.

도 3은 네트워크 노드에서의 TCP 세션 동안 min_CWND 및 max_CWND가 SSTHRESH를 제한하는 데에 이용될 수 있는 방법의 일실시예를 도시한다. 프로세스(300)는 블록(310)에서 나타낸 바와 같이 SSTHRESH의 갱신시에 시작된다. SSTHRESH는 TCP 세션 동안 여러 방법을 이용하여 갱신될 수 있다. 예를 들면, 시작시에, 일부 TCP 구현예들은 SSTHRESH를 RWND의 크기로 설정한다. 다른 예에서는, SSTHRESH는 TCP 고속 복원 국면 동안 CWND의 백분비로 감소될 수 있다. 이들 예들은 본 발명을 제한하는 것이 아니며, SSTHRESH의 어떠한 갱신에도 적용될 수 있다.3 illustrates one embodiment of how min_CWND and max_CWND can be used to limit SSTHRESH during a TCP session at a network node. Process 300 begins upon updating SSTHRESH as shown in block 310. SSTHRESH can be updated using several methods during a TCP session. For example, at startup some TCP implementations set SSTHRESH to the size of RWND. In another example, SSTHRESH may be reduced to a percentage of CWND during the TCP fast recovery phase. These examples do not limit the present invention and can be applied to any update of SSTHRESH.

프로세스(300)는 블록(320)으로 진행하여 SSTHRESH가 max_CWND와 비교된다. SSTHRESH가 max_CWND보다 클 경우, 프로세스(300)는 블록(330)으로 진행하여 SSTHRESH가 max_CWND로 설정된다. 그러나, SSTHRESH가 max_CWND 미만인 경우, 프로세스(300)는 블록(340)으로 진행된다.Process 300 proceeds to block 320 where SSTHRESH is compared to max_CWND. If SSTHRESH is greater than max_CWND, process 300 proceeds to block 330 where SSTHRESH is set to max_CWND. However, if SSTHRESH is less than max_CWND, process 300 proceeds to block 340.

블록(340)에서, SSTHRESH는 min_CWND와 비교된다. SSTHRESH가 min_CWND 미만인 경우, 프로세스(300)는 블록(350)으로 진행되어 SSTHRESH가 min_CWND에 설정된다. 그러나, SSTHRESH가 min_CWND보다 큰 경우, 이는 변경되지 않고 유지된다.At block 340, SSTHRESH is compared to min_CWND. If SSTHRESH is less than min_CWND, process 300 proceeds to block 350 where SSTHRESH is set to min_CWND. However, if SSTHRESH is greater than min_CWND, it remains unchanged.

SSTHRESH가 제한될 수 있는 예는, 타임아웃 후에 발생되는 SSTHRESH의 갱신이다. 일부 TCP 구현예에서, SSTHRESH는 타임아웃 후에 CWND의 값의 1/2로 감소된다. 그러나, 이 감소의 결과, SSTHRESH가 min_CWND 미만이 되는 경우, SSTHRESH는 min_CWND으로 설정될 수도 있다.An example where SSTHRESH may be limited is an update of SSTHRESH that occurs after a timeout. In some TCP implementations, SSTHRESH is reduced to one half of the value of CWND after timeout. However, as a result of this decrease, when SSTHRESH becomes less than min_CWND, SSTHRESH may be set to min_CWND.

SSTHRESH가 제한될 수 있는 다른 예는, TCP 세션이 시작될 때이다. 일부 TCP 구현예에서, SSTHRESH는 임의의 높은 값 또는 RWND로 설정된다. 그러나, 이 임의의 높은 값 또는 RWND가 max_CWND보다 높은 경우, SSTHRESH는 max_CWND로 설정될 수 있다.Another example where SSTHRESH can be restricted is when a TCP session is started. In some TCP implementations, SSTHRESH is set to any high value or RWND. However, if this any high value or RWND is higher than max_CWND, SSTHRESH may be set to max_CWND.

도 2에서와 같이, 프로세스(300)에 나타낸 하나 이상의 행위의 순서는 본 발명의 원리에 부합되는 한 변경될 수 있다. 예를 들면, 소정의 실시예에서, SSTHRESH는 max_CWND와 비교되기 전에 min_CWND와 비교될 수 있다. SSTHRESH를 갱신하는 데에 이용되는 TCP 프로세스에 따라, SSTHRESH를 min_CWND가 아닌 max_CWND와 비교할 필요만 있을 수 있으며(예를 들면, SSTHRESH가 증가하는 경우), 그 반대의 경우(예를 들면 SSTHRESH가 감소하는 경우)도 있을 수 있다. 또한, SSTHRESH는 RWND에 의해 제한될 수도 있다.As in FIG. 2, the order of one or more actions shown in process 300 may be changed as long as it is consistent with the principles of the present invention. For example, in some embodiments, SSTHRESH may be compared to min_CWND before being compared to max_CWND. Depending on the TCP process used to update SSTHRESH, it may only be necessary to compare SSTHRESH with max_CWND rather than min_CWND (for example, when SSTHRESH increases), and vice versa (for example, where SSTHRESH decreases). Case). In addition, SSTHRESH may be limited by RWND.

도 4는 네트워크 노드에서의 TCP 세션 동안 RTO가 max_RTO 이하의 값으로 제한될 수 있는 방법의 일실시예를 나타낸다. 프로세스(400)는 블록(410)에서 시작되며, 여기서 전송(또는 재전송)될 다음 세그먼트에 대한 RTO가 판정된다. RTO는 TCP 세션 동안 몇몇 방법을 통해 판정될 수 있다. 예를 들면, RTO는 NDACK의 수신 시에 수행되는 한 방법과 재전송 타이머의 시간이 만료되었을 때에 수행되는 다른 방법에 의해 판정될 수 있다.4 illustrates one embodiment of how an RTO may be limited to a value less than or equal to max_RTO during a TCP session at a network node. Process 400 begins at block 410 where an RTO is determined for the next segment to be sent (or retransmitted). RTO can be determined in several ways during a TCP session. For example, the RTO may be determined by one method performed upon reception of the NDACK and another method performed when the retransmission timer expires.

프로세스(400)는 블록(420)으로 진행되어 RTO가 max_RTO와 비교된다. RTO가 max_RTO보다 큰 경우, 프로세스(400)는 블록(430)으로 진행되어 RTO가 max_RTO에 설정된다. 그러나, RTO가 max_RTO 미만인 경우 변경되지 않고 유지된다.Process 400 proceeds to block 420 where the RTO is compared to max_RTO. If RTO is greater than max_RTO, process 400 proceeds to block 430 where the RTO is set to max_RTO. However, if the RTO is less than max_RTO, it remains unchanged.

도 5는 혼잡 회피 국면 동안 CWND를 증가시키는 데에 SPEED_UP이 이용될 수 있는 방법의 일실시예를 도시한다. 이 혼잡 회피 국면은, CWND가 저속 개시 국면 동안 SSTHRESH의 값에 도달한 후에, 또는 일련의 중복 ACK(DACK)의 수신에 의해 혼잡이 검출된 후에 TCP 세션 동안 이용된다. 소정의 TCP 구현예에서, (NDACK의 형태로) 수신측에 의해 확인된 모든 CWND 세그먼트 수에 대해 혼잡 회피 국면 동안 CWND가 1만큼 증가된다. 일부 TCP 구현예에서는 CWND를 세그먼트의 수로서 표현하지 않고 바이트의 수로서 표현함에 유의한다. 이 프로세스는 이들 구현예에도 마찬가지로 적용가능하지만, 간략함을 위해 본원에서는 CWND는 세그먼트의 수로서 표현되었다.5 illustrates one embodiment of how SPEED_UP can be used to increase CWND during a congestion avoidance phase. This congestion avoidance phase is used during a TCP session after CWND reaches the value of SSTHRESH during the slow start phase, or after congestion is detected by receipt of a series of redundant ACKs (DACKs). In some TCP implementations, the CWND is increased by 1 during the congestion avoidance phase for all CWND segment numbers identified by the receiving side (in the form of NDACK). Note that some TCP implementations express CWND as the number of bytes rather than the number of segments. This process is similarly applicable to these implementations, but for simplicity the CWND is expressed here as the number of segments.

프로세스(500)는 블록(510)에서 시작되며, 여기서 복수의 데이터 세그먼트가 확인(ACK)된다. 프로세스(500)는 블록(520)으로 진행되어 CWND는 SPEED_UP만큼 증가된다. 이는, SPEED_UP이 1에 한정되는 것이 아니며 블록(510)에서 확인된 복수의 데이터 세그먼트가 CWND 세그먼트 수에 한정되지 않는다는 점에서 통상의 TCP 구현예와 다르다. 일실시예에서, SPEED_UP은 조정가능할 수 있으며, 반면에 다른 실시예에서는 고정될 수 있다. CWND는 여전히 max_CWND 이하로 제한됨에 유의한다.Process 500 begins at block 510 where a plurality of data segments are identified (ACK). Process 500 proceeds to block 520 where the CWND is increased by SPEED_UP. This is different from the conventional TCP implementation in that SPEED_UP is not limited to 1 and the plurality of data segments identified in block 510 is not limited to the number of CWND segments. In one embodiment, SPEED_UP may be adjustable, while in other embodiments it may be fixed. Note that CWND is still limited to max_CWND or less.

도 6은 본 발명의 원리에 따른 변경된 TCP 고속 재전송/고속 복원 프로세스의 일실시예를 나타낸 도면이다. 표준 TCP에서, 3개의 연속적인 DACKS를 수신하면, TCP는, DACK와 연관된 세그먼트가 손실된 것으로 추정하여, DACK와 연관된 세그먼트가 재전송되는 고속 재전송 국면에 진입할 것이다. "고속 재전송"이란, 타임아웃이 세그먼트의 손실을 가리키기 전에 세그먼트를 재전송하는 것을 칭한다. 고속 재전송 후에, TCP는, SSTHRESH 및 CWND가 CWND의 백분비로 감소되는 고속 복원 국면으로 진입할 것이다. 일부 TCP 구현예에서 CWND는 CWND의 1/2 + 3으로 감소되어 클라이언트측에서 수신되어 DACK를 유발한 3개의 세그먼트를 반영한다.6 is a diagram illustrating one embodiment of a modified TCP fast retransmission / fast recovery process in accordance with the principles of the present invention. In standard TCP, upon receiving three consecutive DACKSs, TCP will enter a fast retransmission phase in which the segment associated with the DACK is retransmitted, assuming that the segment associated with the DACK is lost. "Fast retransmission" refers to retransmission of a segment before the timeout indicates a loss of the segment. After fast retransmission, TCP will enter a fast recovery phase where SSTHRESH and CWND are reduced to a percentage of CWND. In some TCP implementations the CWND is reduced to 1/2 + 3 of the CWND to reflect the three segments received at the client side causing the DACK.

SSTHRESH 및 CWND가 감소된 후, CWND는 일시적으로 증가되어, TCP Reno에 대한 RFC에 따라, 손실된 세그먼트가 확인(ACK)될 때까지 확인되지 않은(unacknowledged) 세그먼트가 재전송되는 것을 허용할 수 있다. 리눅스 TCP는 고속 재전송 후 CWND를 점차적으로 50퍼센트 감소시킴으로써 이러한 인위적인 증가를 방지한다. 리눅스 TCP는, 고속 재전송 후 도달하는 새로운 NDACK로 확인된 바이트로 된 2개의 MSS(maximum segment size) 마다 1만큼씩 CWND를 감소시킴으로써 이러한 점차적인 감소를 수행한다.After SSTHRESH and CWND are reduced, CWND may be temporarily increased to allow unacknowledged segments to be retransmitted until the lost segment is acknowledged (according to the RFC for TCP Reno). Linux TCP prevents this artificial increase by gradually reducing CWND after a fast retransmission. Linux TCP accomplishes this gradual reduction by decreasing the CWND by 1 for every two maximum segment sizes (MSS) of bytes identified as new NDACKs arriving after fast retransmission.

프로세스(600)는 블록(610)에서 시작되며, 여기서 데이터 세그먼트에 대응하는 복수의 DACK가 재전송 타이머의 시간이 만료되기 전에 네트워크 노드에 수신된다. 일실시예에서 고속 재전송 국면에 진입하기 위해서는 3개의 DACK가 요구될 수 있으며, 다른 실시예에서는 어떠한 복수 개의 DACK라도 충분할 수 있다.Process 600 begins at block 610, where a plurality of DACKs corresponding to data segments is received at the network node before the retransmission timer times out. In one embodiment, three DACKs may be required to enter the fast retransmission phase, and in another embodiment, any plurality of DACKs may be sufficient.

프로세스(600)는 블록(620)으로 진행되어 DACK에 대응하는 세그먼트가 재전 송된다. 이는 표준 TCP 고속 재전송 과정이다. 블록(630)에서, 프로세스(600)는 SSTHRESH가 CWND의 백분비로 감소될 때 표준 TCP로부터 벗어난다. 다른 TCP 구현에서와 달리, 블록(630)에서 이용된 백분비는 무선 네트워크의 네트워크 유형에 적어도 부분적으로 기초한 것일 수 있다. 일실시예에서, 이 백분비는 조정될 수 있다. 예를 들면, 일실시예에서 블록(630)에서 이용된 백분비는 네트워크 노드의 사용자에 의해 조정될 수 있다. 다른 실시예에서는, 무선 네트워크의 작동자 또는 소프트웨어 벤더에 의해 갱신될 수 있다. SSTHRESH는 여전히 min_CWND 및 max_CWND에 의해 제한됨을 이해해야 한다.Process 600 proceeds to block 620 where the segment corresponding to the DACK is retransmitted. This is a standard TCP fast retransmission process. At block 630, process 600 deviates from standard TCP when SSTHRESH is reduced to a percentage of CWND. Unlike in other TCP implementations, the percentage used at block 630 may be based at least in part on the network type of the wireless network. In one embodiment, this percentage can be adjusted. For example, in one embodiment the percentage used at block 630 may be adjusted by the user of the network node. In other embodiments, it may be updated by the operator or software vendor of the wireless network. It should be understood that SSTHRESH is still limited by min_CWND and max_CWND.

SSTHRESH이 감소된 후, 프로세스(600)는 블록(640)으로 진행되며 여기서 TCP 세션은 새로운 세그먼트를 전송하는 것을 재개한다. 블록(650)에서, 프로세스(600)는 CWND가 1만큼 감소되는 블록(660)으로 진행하기 전에 이벤트를 기다린다. 일실시예에서, 이 이벤트는 시계 주기, 시간 단위, 또는 그 밖의 다른 임의의 적절한 타이밍 파라미터로 표현되는 시간의 경과일 수 있다. 다른 실시예에서, 이 이벤트는 하나 이상의 NDACK의 수신일 수 있다. 예를 들면, 이 이벤트는, 이전의 이러한 이벤트 이후로 바이트로 된 새로운 적어도 (100/(100·X))*MSS를 ACK하는 하나 이상의 NDACK의 수신일 수 있는데, 여기서 X는 블록(630)에서 이용된 백분비의 크기이다(예를 들면, SSTHRESH이 블록(630)에서 CWND의 75%로 감소된 경우, X는 블록(660)에서 75이다). 전술한 예는 단지 예시용이며 본 발명을 제한하는 것으로 생각되어서는 않됨을 이해해야 한다. 또한, TCP 모듈은 여전히 이벤트가 발생하기를 기다리는 동안 백그라운드의 새로운 데이터 세그먼트를 전송하고 있을 수 있음 을 이해해야 한다.After SSTHRESH is reduced, process 600 proceeds to block 640 where the TCP session resumes sending new segments. At block 650, process 600 waits for an event before proceeding to block 660 where CWND is decremented by one. In one embodiment, this event may be the passage of time expressed in clock periods, time units, or any other suitable timing parameter. In another embodiment, this event may be the reception of one or more NDACKs. For example, this event may be the reception of one or more NDACKs that ACK a new at least (100 / (100.X)) * MSS in bytes since this previous event, where X is at block 630. Is the size of the percentage used (eg, if SSTHRESH is reduced to 75% of CWND in block 630, X is 75 in block 660). It is to be understood that the foregoing examples are illustrative only and should not be considered as limiting the present invention. It should also be understood that the TCP module may still be sending new data segments in the background while waiting for an event to occur.

전술한 이벤트가 발생하는 경우, 프로세스(600)는 블록(660)으로 진행되어 CWND가 감소된다. 일실시예에서, 블록(660)에서의 CWND의 감소는 1일 수 있지만, 다른 실시예에서는 이 감소는 다른 값일 수 있다. 이 값은 무선 네트워크의 네트워크 유형에 적어도 부분적으로 기초한 것일 수 있다.If the aforementioned event occurs, process 600 proceeds to block 660 where the CWND is reduced. In one embodiment, the reduction of CWND at block 660 may be 1, but in other embodiments this reduction may be another value. This value may be based at least in part on the network type of the wireless network.

그 후 프로세스(600)는 블록(670)으로 진행되어 CWND가 SSTHRESH와 비교된다. CWND가 SSTHRESH보다 작거나, 혹은 일부 실시예에서 SSTHRESH와 동일한 경우, 프로세스(600)는 블록(680)으로 진행되어 TCP는 혼잡 회피 국면으로 진입한다. 그렇지 않은 경우에는, 프로세스(600)는 블록(650)으로 다시 되돌아와서 다른 이벤트를 기다린다.Process 600 then proceeds to block 670 where the CWND is compared to SSTHRESH. If CWND is less than SSTHRESH, or in some embodiments equals SSTHRESH, process 600 proceeds to block 680 where TCP enters the congestion avoidance phase. If not, process 600 returns back to block 650 and waits for another event.

도 7은 본 발명의 원리에 따른, 타임아웃시의 변경된 TCP 복원 프로세스의 일실시예를 도시한다. 표준 TCP에서, 타임아웃이 발생되면 TCP는 타임아웃시 복원 프로세스를 개시한다. 이 프로세스에서 시간 만료된 재전송 타이머와 연관된 손실 세그먼트가 재전송되며, SSTHRESH이 CWND의 백분비(통상적으로 표준 TCP의 50%)로 감소되며, CWND는 1과 4 사이의 값으로 감소되며, TCP는 저속 개시 프로세스를 이용하여 CWND를 증가시키는 것을 재개한다. 또한, 칸 알고리즘(Karn's algorithm)으로 알려진 알고리즘에 따라 손실 세그먼트에 대한 RTO에 2가 멀티플라잉된다.Figure 7 illustrates one embodiment of a modified TCP recovery process at timeout, in accordance with the principles of the present invention. In standard TCP, if a timeout occurs, TCP initiates a restore process upon timeout. In this process, the lost segment associated with the timed retransmission timer is retransmitted, SSTHRESH is reduced to a percentage of CWND (typically 50% of standard TCP), CWND is reduced to a value between 1 and 4, and TCP is slow start Resumes increasing CWND using the process. In addition, 2 is multiplied to the RTO for the lost segment according to an algorithm known as the Karn's algorithm.

타임아웃시 변경된 재전송 프로세스(700)는 블록(710)에서 시작되며, 여기서 타임아웃이 발생하고 세그먼트가 손실됨을 나타낸다. 프로세스(700)는 블록(720)으로 진행하며, 여기서 새로운 세그먼트가 전송된다. 이는, 새로운 세그먼트가 아 닌 손실 세그먼트가 전송됨을 나타내는, 표준 TCP로부터의 일탈이다. 그러나, 네트워크 노드가 무선 네트워크를 통해 통신하는 중이라는 사실 때문에, 기지국 제어기와 수신측 사이의 재전송으로 인해 세그먼트가 손실되지 않고 재전송 타이머가 시간만료되는 것이 가능하다. 따라서, 새로운 세그먼트를 전송하는 것이 적절할 수 있다. 일실시예에서 새로운 세그먼트만이 전송되지만, 다른 실시예에서는 새로운 세그먼트 및 손실된 세그먼트도 또한 재전송될 수 있다. 새로운 세그먼트를 전송할지를 판정하는 것은 무선 네트워크의 네트워크 유형에 적어도 부분적으로 기초한 것일 수 있다.The retransmission process 700 changed at timeout begins at block 710, indicating that a timeout occurs and the segment is lost. Process 700 proceeds to block 720 where a new segment is sent. This is a deviation from standard TCP, indicating that a lost segment is transmitted rather than a new segment. However, due to the fact that the network node is communicating over the wireless network, it is possible for the retransmission timer to time out without segment loss due to retransmission between the base station controller and the receiving side. Therefore, it may be appropriate to send a new segment. In one embodiment only new segments are transmitted, while in other embodiments new and lost segments may also be retransmitted. Determining whether to send a new segment may be based at least in part on the network type of the wireless network.

블록(730)에서, RTO는, 칸 알고리즘에서 명기된 규격 2와는 상반되게 RTO_MULT와 멀티플라잉된다. 일실시예에서, RTO_MULT는 1.5로 설정될 수 있다. 다른 실시예에서는, RTO_MULT는 다른 값으로 설정될 수 있다. RTO는 여전히 max_RTO에 의해 제한됨에 유의한다.At block 730, the RTO is multiplied with RTO_MULT as opposed to specification 2 specified in the Khan algorithm. In one embodiment, RTO_MULT may be set to 1.5. In another embodiment, RTO_MULT may be set to another value. Note that the RTO is still limited by max_RTO.

블록(740)에서, 하나 이상의 ACK되지 않은 세그먼트가 재전송되며, 반면에 표준 TCP는, ACK되지 않은 세그먼트의 나머지 전체 윈도우가 재전송되어야 할 것으로 명기되어 있다. 일실시예에서, 첫 번째 2개의 ACK되지 않은 세그먼트의 나머지 윈도우가 전송될 수 있다.At block 740, one or more unacknowledged segments are retransmitted, while standard TCP specifies that the entire remaining window of the unacknowledged segment should be retransmitted. In one embodiment, the remaining windows of the first two unacknowledged segments may be sent.

블록(750)에서, SSTHRESH는 표준 TCP 50% 감소 대신에 CWND의 백분비로 감소된다. 이 백분비는 네트워크 노드의 사용자 또는 무선 네트워크 작동자 또는 소프트웨어 벤더에 의해 조정될 수 있다. SSTHRESH는 여전히 min_CWND에 의해 제한됨에 유의한다.At block 750, SSTHRESH is reduced to a percentage of CWND instead of a standard TCP 50% reduction. This percentage can be adjusted by the user of the network node or by the wireless network operator or software vendor. Note that SSTHRESH is still limited by min_CWND.

도 8은 네트워크 노드의 TCP 모듈이 TCP 세션 동안 무선 네트워크의 네트워크 유형을 판정하고 하나 이상의 세션 파라미터를, 네트워크 유형과 연관된 하나 이상의 대응 저장된 세션 파라미터로 설정하는 방법의 일실시예를 도시한다. TCP 세션 파라미터는 min_CWND, max_CWND, max_RTO, SPEED_UP, SPEED_DOWN 및 RTO_MULT 중 하나 이상을 포함할 수 있다. 또한, 타임아웃시 고속 재전송/고속 복원 및 재전송 프로세스에 대한 하나 이상의 변경이 설정될 수 있다.8 illustrates one embodiment of a method in which a TCP module of a network node determines a network type of a wireless network during a TCP session and sets one or more session parameters to one or more corresponding stored session parameters associated with the network type. The TCP session parameter may include one or more of min_CWND, max_CWND, max_RTO, SPEED_UP, SPEED_DOWN, and RTO_MULT. In addition, one or more changes to the fast retransmission / fast recovery and retransmission process may be set at timeout.

프로세스(800)는 블록(810)에서 시작되며, 여기서 이전에 전송된 세그먼트에 응하여 송신측에서의 TCP 모듈에 의해 NDACK가 수신된다. 블록 1의 송신측에 수신된 NDACK는 또한 지연된 ACK일 수 있으며 이 용어는 당 업계에 공지되어 있다.Process 800 begins at block 810 where an NDACK is received by a TCP module at the transmitting side in response to a previously transmitted segment. The NDACK received at the transmitting side of block 1 may also be a delayed ACK, which term is known in the art.

프로세스(800)는 블록(820)으로 진행되며, 여기서 수신된 NDACK와 연관된 적어도 하나의 데이터 세그먼트의 RTT(round trip time)가 결정된다. 세그먼트의 RTT는 송신측으로부터의 세그먼트의 전송과 그 대응 NDACK의 수신 사이에 경과된 시간일 수 있지만, 세그먼트의 RTT를 결정하는 어떠한 일관된 방법도 이용될 수 있다. 이는 시간 단위, 시계 주기, 또는 그 밖의 다른 임의의 적절한 타이밍 파라미터로 표현될 수 있다.Process 800 proceeds to block 820, where a round trip time (RTT) of at least one data segment associated with the received NDACK is determined. The RTT of the segment may be the time elapsed between transmission of the segment from the transmitting side and receipt of its corresponding NDACK, but any consistent method of determining the RTT of the segment may be used. This may be expressed in time units, clock periods, or any other suitable timing parameter.

RTT를 결정한 후에, 프로세스(800)는 블록(830)으로 진행되며 여기서 무선 네트워크의 네트워크 유형이 결정된다. 일실시예에서, 이 결정은 블록(820)에서 결정된 RTT와 하나 이상의 임계 RTT를 비교함으로써 행해질 수 있다. 이 비교는 RTT가 결정될 때마다 수행될 수도 있으며, 혹은 소정의 수의 RTT가 결정될 때마다 행해질 수도 있다.After determining the RTT, process 800 proceeds to block 830 where the network type of the wireless network is determined. In one embodiment, this determination may be made by comparing the RTT determined at block 820 with one or more threshold RTTs. This comparison may be performed each time an RTT is determined, or may be done each time a predetermined number of RTTs are determined.

RTT가 하나 이상의 임계 RTT에 의해 규정된 영역 내에 해당되는 경우, 네트워크 유형은 그 영역과 연관된 네트워크 유형인 것으로 판정될 수 있다. 일실시예에서, 두 개의 이용가능 네트워크 유형, 즉 하나 이상의 임계 RTT에 의해 규정된 두 개의 영역에 대응하는 "높은 대역폭" 및 "낮은 대역폭"이 존재할 수 있다. RTT가 "낮은 대역폭" 영역 내에 해당되는 경우, 네트워크 유형은 낮은 대역폭인 것으로 간주될 수 있다. 네트워크 유형이 "높은 대역폭" 내에 해당되는 경우 네트워크 유형은 높은 대역폭인 것으로 간주될 수 있다. 다른 실시예에서는 두 개 이상의 네트워크 유형이 존재할 수 있음을 이해해야 한다.If the RTT falls within the area defined by one or more threshold RTTs, the network type may be determined to be the network type associated with that area. In one embodiment, there may be "high bandwidth" and "low bandwidth" corresponding to two available network types, ie, two areas defined by one or more threshold RTTs. If the RTT falls within the “low bandwidth” area, the network type may be considered to be low bandwidth. If the network type falls within the "high bandwidth," the network type may be considered to be high bandwidth. In other embodiments, it should be understood that more than one network type may exist.

소정의 실시예에서, 부정하게 크거나 작은 RTT에 의해 인지된 네트워크 유형을 결정하게 되는 것을 방지하기 위해, RTT 임계치를 초과하는 연속하는 소정의 수의 RTT가 네트워크 유형을 결정하는 데에 이용될 수 있다. 예를 들면, 네트워크 유형의 마지막 변경 이후에 RTT 임계치를 초과하는 소정의 수의 RTT가 요구될 수 있다. 또다른 실시예에서는, 산출된 RTT의 평균치가 이용될 수 있다. 이 평균치는 TCP 세션의 개시 이후에 결정된 RTT의 평균치, 소정의 수의 RTT의 평균치, 네트워크 유형의 이전의 결정 이후에 결정된 RTT의 평균치, 또는 네트워크 유형의 마지막 변경 이후에 결정된 RTT의 평균치로 구성될 수 있다.In certain embodiments, in order to avoid having to determine the network type perceived by a fraudulently large or small RTT, a predetermined number of consecutive RTTs exceeding the RTT threshold may be used to determine the network type. have. For example, some number of RTTs may be required that exceed the RTT threshold since the last change of network type. In another embodiment, the average of the calculated RTTs may be used. This average may consist of the average of the RTTs determined after the start of the TCP session, the average of a certain number of RTTs, the average of the RTTs determined since the previous determination of the network type, or the average of the RTTs since the last change of the network type. Can be.

다시 도 8을 참조하면, 프로세스(800)는 블록(840)으로 진행되며 여기서 네트워크 유형이 변경되었는지 여부에 대한 판정이 행해진다(즉, 블록(830)에서 결정된 네트워크 유형이, (만약 존재하는 경우) 마지막 결정된 네트워크 유형과 다른지 여부에 대한 판정이 행해진다. 네트워크 유형이 변경된 경우, 프로세스(800)는 블 록(850)으로 진행되며, 여기서 하나 이상의 TCP 세션 파라미터가 설정될 수 있다. 그렇지 않은 경우, 프로세스는 종료한다. 소정의 실시예에서, 블록(840)이 생략될 수도 있으며, 프로세스(800)는 네트워크 유형을 결정한 후에 매번 하나 이상의 TCP 세션 파라미터를 설정할 수도 있다.Referring again to FIG. 8, process 800 proceeds to block 840 where a determination is made as to whether the network type has changed (ie, if the network type determined at block 830, if present). A determination is made as to whether it differs from the last determined network type: If the network type has changed, process 800 proceeds to block 850, where one or more TCP session parameters may be set. In some embodiments, block 840 may be omitted, and process 800 may set one or more TCP session parameters each time after determining the network type.

블록(850)에서, 하나 이상의 TCP 세션 파라미터가, 네트워크 유형과 연관된 하나 이상의 대응 저장된 세션 파라미터로 설정된다. 소정의 실시예에서, 둘 이상의 저장 세션 파라미터 집합이 존재할 수 있으며, 여기서 각 집합은 서로 다른 네트워크 유형과 연관된다.At block 850, one or more TCP session parameters are set to one or more corresponding stored session parameters associated with the network type. In certain embodiments, there may be more than one storage session parameter set, where each set is associated with a different network type.

일실시예에서, 본 발명의 원리에 부합하는 TCP 모듈을 포함하는 네트워크 노드의 사용자에 의해 하나 이상의 저장 세션 파라미터가 조정될 수 있다. 다른 실시예에서는, 하나 이상의 저장 세션 파라미터가 다른 일단(party)에 의해 조정될 수 있다. 예를 들면, 모바일 폰 상의 하나 이상의 저장 세션 파라미터는 셀룰라 네트워크 작동자 또는 소프트웨어 벤더에 의해 셀룰라 네트워크를 통해 조정될 수 있다. 타임아웃시 변경된 TCP 고속 재전송/고속 복원 및 변경된 TCP 복원 프로세스에 대한 하나 이상의 변경도 마찬가지로 조정될 수 있다.In one embodiment, one or more storage session parameters may be adjusted by a user of a network node comprising a TCP module consistent with the principles of the present invention. In other embodiments, one or more storage session parameters may be adjusted by another party. For example, one or more storage session parameters on the mobile phone may be adjusted over the cellular network by a cellular network operator or software vendor. One or more changes to the changed TCP fast retransmission / fast recovery and changed TCP recovery processes at timeout may likewise be adjusted.

소정의 실시예에서, 초기 네트워크 유형이 네트워크 노드에 저장될 수 있음을 이해해야 한다. TCP 세션의 시작시에, 이 초기 네트워크 유형은 임의의 세그먼트가 전송되기 전에 하나 이상의 TCP 세션 파라미터를 설정하는 데에 이용될 수 있다. 예를 들면, 저장된 초기 네트워크 유형이 "낮은 대역폭"인 경우, 하나 이상의 TCP 세션 파라미터가, "낮은 대역폭" 네트워크 유형과 연관된 하나 이상의 대응 저 장 세션 파라미터로 설정될 수 있다.In certain embodiments, it should be understood that the initial network type may be stored at the network node. At the start of a TCP session, this initial network type can be used to set one or more TCP session parameters before any segment is sent. For example, if the stored initial network type is "low bandwidth", one or more TCP session parameters may be set to one or more corresponding stored session parameters associated with the "low bandwidth" network type.

일실시예에서, 네트워크 유형이 TCP 세션 동안 변경되는 경우, CWND를 증가시키거나 감소시켜서 min_CWND와 max_CWND 사이의 새로운 값 내에 들어가게 하는 것이 필요할 수 있다. 예를 들면, max_CWND가 네트워크 유형 변경으로 인해 변경되고 CWND가 max_CWND보다 크면, CWND는 max_CWND에 의해 부과된 제한내에 들어가도록 감소되어야 한다. 일실시예에서, CWND는 네트워크 유형이 변경된 후에 즉시 감소될 수 있다. 다른 실시예에서, CWND가 max_CWND 이하로 될 때까지 네트워크 유형이 변경된 후에 이벤트가 발생할 때마다 CWND가 SPEED_DOWN 세그먼트 수만큼 감소될 수 있다. 이러한 점차적인 감소는, 시간의 경과 또는 하나 이상의 NDACK의 수신과 같은 이벤트에 기초한 것일 수 있다.In one embodiment, if the network type changes during a TCP session, it may be necessary to increase or decrease CWND to fall within a new value between min_CWND and max_CWND. For example, if max_CWND is changed due to network type change and CWND is greater than max_CWND, CWND should be reduced to fall within the limits imposed by max_CWND. In one embodiment, the CWND may be reduced immediately after the network type is changed. In another embodiment, each time an event occurs after the network type is changed until the CWND becomes less than or equal to max_CWND, the CWND may be reduced by the number of SPEED_DOWN segments. This gradual decrease may be based on events such as passage of time or receipt of one or more NDACKs.

마찬가지로, CWND가 네트워크 변화로 인해 min_CWND 보다 작은 경우, CWND는 네트워크 유형의 변경후 즉시 증가되거나, 혹은 시간의 경과 또는 하나 이상의 NDACK의 수신과 같은 이벤트에 기초하여 점차적으로 증가될 수 있다.Similarly, if CWND is less than min_CWND due to network changes, CWND may increase immediately after a change in network type, or may increase gradually based on events such as the passage of time or the receipt of one or more NDACKs.

도 2 내지 도 8의 프로세스들을 전술한 실시예로 설명하였지만, 이들은 단지 예시적인 값이며 다른 실시예들도 본 발명에 적용될 수 있음을 인식해야 한다. 도 2 내지 도 8의 프로세스에서 나타낸 하나 이상의 행위들의 순서는 본 발명의 원리에 부합되는 한 변경될 수 있다. 명료히 하기 위해, 도 2 내지 도 8의 프로세스는 포괄적인 단계들로 기술하였으며, 본 발명의 원리에 일치하는 다른 단계들도 포함될 수 있다는 것을 인식해야 한다. Although the processes of Figures 2-8 have been described in the foregoing embodiments, it should be appreciated that these are merely exemplary values and that other embodiments may be applied to the present invention. The order of one or more actions shown in the process of FIGS. 2-8 may be changed as long as it is consistent with the principles of the present invention. For the sake of clarity, it should be appreciated that the process of FIGS. 2-8 has been described in comprehensive steps and that other steps consistent with the principles of the invention may be included.

비록 본 발명을 상기 실시예에 대해서 기술하였지만, 본 발명은 또 다른 변 형예도 가능하다는 것을 이해할 수 있을 것이다. 본 출원은 본 발명의 원리를 따르는 어떠한 변형예도 총 망라하며, 본 발명이 속하는 기술적 분야에 알려진 관습적인 실시 내에서 본 발명의 원리를 벗어나지 않는 한 여러 변형예가 가능하다는 것을 인식해야 한다.Although the present invention has been described with respect to the above embodiments, it will be appreciated that the present invention is capable of other variations. It is to be understood that this application is intended to cover all variations that conform to the principles of the invention, and that various modifications are possible without departing from the principles of the invention within the conventional practice known in the art.

Claims (34)

무선 네트워크를 통해 통신하는 네트워크 노드에 대해 TCP(Transmission Control Protocol) 세션을 최적화하는 방법으로서, A method of optimizing a Transmission Control Protocol (TCP) session for network nodes that communicate over a wireless network. 혼잡 윈도우 및 저속 개시 임계치를, 최소 혼잡 윈도우 및 최대 혼잡 윈도우에 의해 규정된 범위로 제한하는 행위를 포함하고,Limiting the congestion window and the slow start threshold to a range defined by a minimum congestion window and a maximum congestion window, 상기 최소 혼잡 윈도우 및 상기 최대 혼잡 윈도우는 상기 무선 네트워크의 네트워크 유형에 적어도 일부 기초하되,The minimum congestion window and the maximum congestion window are based at least in part on a network type of the wireless network, 재전송 타이머의 시간이 만료되면,When the retransmission timer expires, 새로운 데이터 세그먼트를 전송하는 행위 ― 상기 새로운 데이터 세그먼트는 이전에 전송되지 않았음 ―;Sending a new data segment, the new data segment not previously transmitted; 재전송 타임아웃을 멀티플라잉하는 행위;Multiplying the retransmission timeout; 상기 저속 개시 임계치를 상기 혼잡 윈도우의 백분비로 감소시키는 행위; 및 Reducing the slow start threshold to a percentage of the congestion window; And 비-중복 확인을 수신하면, 하나 이상의 이전에 전송된 데이터 세그먼트를 재전송하는 행위를 더 포함하며,If receiving a non-duplicate acknowledgment, retransmitting one or more previously transmitted data segments, 상기 하나 이상의 이전에 전송된 데이터 세그먼트는 하나 이상의 이전에 수신된 비-중복 확인과 연관되지 않는 TCP 세션 최적화 방법.And wherein said at least one previously transmitted data segment is not associated with at least one previously received non-duplicate acknowledgment. 제1항에 있어서,The method of claim 1, 재전송 타임아웃을 최대 재전송 타임아웃 이하로 제한하는 행위를 더 포함하며,Limiting the retransmission timeout to less than or equal to the maximum retransmission timeout; 상기 최대 재전송 타임아웃은 상기 무선 네트워크의 네트워크 유형에 적어도 일부 기초한 TCP 세션 최적화 방법.And wherein the maximum retransmission timeout is based at least in part on the network type of the wireless network. 제1항에 있어서,The method of claim 1, TCP 혼잡 회피 국면 동안 복수의 비-중복 확인(a plurality of non-duplicate acknowledgments)을 수신하면 혼잡 윈도우 증가 속도만큼 상기 혼잡 윈도우를 증가시키는 행위를 더 포함하며,Receiving a plurality of non-duplicate acknowledgments during the TCP congestion avoidance phase, further including increasing the congestion window by a congestion window increase rate, 상기 혼잡 윈도우 속도 증가는 상기 무선 네트워크의 네트워크 유형에 적어도 일부 기초한 TCP 세션 최적화 방법.The congestion window speed increase is based at least in part on the network type of the wireless network. 삭제delete 제1항에 있어서,The method of claim 1, 상기 혼잡 윈도우가 상기 최대 혼잡 윈도우 이하로 될 때까지 이벤트가 발생할 때마다 한번씩 상기 혼잡 윈도우를 혼잡 윈도우 감소 속도만큼 감소시키는 행위를 더 포함하며, Reducing the congestion window by a congestion window reduction rate once each time an event occurs until the congestion window is below the maximum congestion window, 상기 이벤트는 하나 이상의 비-중복 확인의 수신 또는 시간 경과 중 하나인 TCP 세션 최적화 방법.The event is one of receiving one or more non-duplicate acknowledgments or elapsed time. 삭제delete 무선 네트워크를 통해 통신하는 네트워크 노드에 대해 TCP 세션을 최적화하는 방법으로서,A method of optimizing TCP sessions for network nodes that communicate over a wireless network, 하나 이상의 라운트 트립 시간 및 하나 이상의 라운트 트립 시간 임계치에 적어도 일부 기초하여 상기 무선 네트워크의 네트워크 유형을 판정하는 행위 ― 상기 하나 이상의 라운트 트립 시간은 상기 TCP 세션 동안 전송되는 하나 이상의 데이터 세그먼트와 연관되며, 상기 하나 이상의 라운트 트립 시간 임계치는 하나 이상의 네트워크 유형과 연관됨 ―; 및Determining a network type of the wireless network based at least in part on at least one count trip time and at least one count trip time threshold, wherein the at least one trip trip time is associated with at least one data segment transmitted during the TCP session. The at least one round trip time threshold is associated with at least one network type; And 복수의 TCP 세션 파라미터들을, 상기 네트워크 유형과 연관된 복수의 대응 저장된 세션 파라미터들로 설정하는 행위를 포함하되,Setting a plurality of TCP session parameters to a plurality of corresponding stored session parameters associated with the network type, 상기 복수의 TCP 세션 파라미터들은, 최소 혼잡 윈도우, 최대 혼잡 윈도우, 최대 재전송 타임아웃, 혼잡 윈도우 증가 속도 및 혼잡 윈도우 감소 속도 중 하나 이상을 포함하고,The plurality of TCP session parameters include one or more of a minimum congestion window, a maximum congestion window, a maximum retransmission timeout, a congestion window increase rate, and a congestion window decrease rate; 상기 최소 혼잡 윈도우 및 상기 최대 혼잡 윈도우에 의해 규정된 범위로 저속 개시 임계치를 제한하는 행위를 더 포함하는 TCP 세션 최적화 방법.Limiting a slow start threshold to a range defined by the minimum congestion window and the maximum congestion window. 삭제delete 삭제delete 삭제delete 제7항에 있어서,The method of claim 7, wherein 상기 복수의 대응 저장된 세션 파라미터들 중 하나 이상은 조정가능한 TCP 세션 최적화 방법.At least one of the plurality of corresponding stored session parameters is adjustable. 삭제delete 제7항에 있어서,The method of claim 7, wherein 상기 최소 혼잡 윈도우 및 상기 최대 혼잡 윈도우에 의해 규정된 범위로 혼잡 윈도우를 제한하는 행위를 더 포함하는 TCP 세션 최적화 방법.Limiting the congestion window to a range defined by the minimum congestion window and the maximum congestion window. 삭제delete 제7항에 있어서,The method of claim 7, wherein TCP 혼잡 회피 국면 동안 복수의 비-중복 확인의 수신시에 상기 혼잡 윈도우 증가 속도만큼 혼잡 윈도우를 증가시키는 행위를 더 포함하는 TCP 세션 최적화 방법.Increasing the congestion window by the congestion window increase rate upon receiving a plurality of non-duplicate acknowledgments during a TCP congestion avoidance phase. 제7항에 있어서,The method of claim 7, wherein 상기 TCP 세션에 대한 재전송 타임아웃을 상기 최대 재전송 타임아웃 이하로 제한하는 행위를 더 포함하는 TCP 세션 최적화 방법.Limiting a retransmission timeout for the TCP session to less than or equal to the maximum retransmission timeout. 제7항에 있어서,The method of claim 7, wherein 상기 혼잡 윈도우가 상기 최대 혼잡 윈도우 이하로 될 때까지 이벤트가 발생할 때마다 한번씩 상기 혼잡 윈도우를 혼잡 윈도우 감소 속도만큼 감소시키는 행위를 더 포함하며, 상기 이벤트는 하나 이상의 비-중복 확인의 수신 또는 시간 경과 중 하나인 TCP 세션 최적화 방법.Reducing the congestion window by a congestion window reduction rate once each time an event occurs until the congestion window is less than or equal to the maximum congestion window, the event further comprising receiving or time-lapsed receiving one or more non-duplicate acknowledgments. One of the methods of optimizing TCP sessions. 네트워크 노드로서,As a network node, 데이터 네트워크와의 연결성을 제공하도록 적응된 네트워크 인터페이스;A network interface adapted to provide connectivity with a data network; 상기 네트워크 인터페이스에 결합된 프로세서; 및A processor coupled to the network interface; And 상기 프로세서에 결합된 메모리Memory coupled to the processor 를 포함하며, 상기 메모리는 상기 프로세서로 하여금,Wherein the memory causes the processor to: 최소 혼잡 윈도우 및 최대 혼잡 윈도우에 의해 규정된 범위로 혼잡 윈도우 및 저속 개시 임계치를 제한하게 하는 프로세서 실행가능 명령어 시퀀스를 포함하며, A processor executable instruction sequence that allows limiting the congestion window and the slow start threshold to a range defined by a minimum congestion window and a maximum congestion window, 상기 최소 혼잡 윈도우 및 상기 최대 혼잡 윈도우는 무선 네트워크의 네트워크 유형에 적어도 일부 기초하되,The minimum congestion window and the maximum congestion window are based at least in part on a network type of a wireless network, 상기 메모리는 재전송 타이머의 시간만료시에 상기 프로세서로 하여금,The memory causes the processor to expire when the retransmission timer expires; 새로운 데이터 세그먼트를 전송하게 하고 ― 상기 새로운 데이터 세그먼트는 이전에 전송되지 않은 것임 ―,Send a new data segment, the new data segment not previously transmitted; 재전송 타임아웃 멀티플라이어에 의해 재전송 타임아웃의 시간을 멀티플라잉하게 하며, Multiply the time of retransmission timeout by retransmission timeout multiplier, 상기 저속 개시 임계치를 상기 혼잡 윈도우의 백분비로 감소시키게 하며,Reduce the slow start threshold to a percentage of the congestion window, 비-중복 확인의 수신시에 하나 이상의 이전에 전송된 데이터 세그먼트를 재전송 ― 상기 하나 이상의 이전에 전송된 데이터 세그먼트는 하나 이상의 이전에 수신된 비-중복 확인과 연관되지 않음 ― 하게 하는 프로세서 실행가능 명령어 시퀀스를 더 포함하는 네트워크 노드.Re-transmit one or more previously transmitted data segments upon receipt of a non-duplicate acknowledgment, wherein the one or more previously transmitted data segments are not associated with one or more previously received non-duplicate acknowledgments. A network node further comprising a sequence. 제18항에 있어서,19. The method of claim 18, 상기 메모리는 상기 프로세서로 하여금, 재전송 타임아웃을 최대 재전송 타임아웃 이하로 제한하게 하는 프로세서 실행가능 명령어 시퀀스를 더 포함하며, The memory further includes a processor executable instruction sequence that causes the processor to limit the retransmission timeout to less than or equal to the maximum retransmission timeout; 상기 최대 재전송 타임아웃은 상기 무선 네트워크의 네트워크 유형에 적어도 일부 기초한 네트워크 노드.And the maximum retransmission timeout is based at least in part on the network type of the wireless network. 제18항에 있어서,19. The method of claim 18, 상기 메모리는 상기 프로세서로 하여금, TCP 혼잡 회피 국면 동안 복수의 비-중복 확인의 수신시에 혼잡 윈도우 증가 속도만큼 상기 혼잡 윈도우를 증가시키게 하는 프로세서 실행가능 명령어 시퀀스를 더 포함하며, The memory further includes a processor executable instruction sequence that causes the processor to increase the congestion window by a congestion window increase rate upon receipt of a plurality of non-duplicate acknowledgments during a TCP congestion avoidance phase; 상기 혼잡 윈도우 증가 속도는 상기 무선 네트워크의 네트워크 유형에 적어도 일부 기초한 네트워크 노드.The congestion window increase rate is based at least in part on the network type of the wireless network. 삭제delete 제18항에 있어서,19. The method of claim 18, 상기 메모리는 상기 프로세서로 하여금, 상기 혼잡 윈도우가 상기 최대 혼잡 윈도우 이하로 될 때까지 이벤트가 발생할 때마다 한번씩 상기 혼잡 윈도우를 혼잡 윈도우 감소 속도만큼 감소시키게 하는 프로세서 실행가능 명령어 시퀀스를 더 포함하며, The memory further includes a processor executable instruction sequence that causes the processor to reduce the congestion window by a congestion window reduction rate once each event occurs until the congestion window is below the maximum congestion window, 상기 이벤트는 하나 이상의 비-중복 확인의 수신 또는 시간 경과 중 하나인 네트워크 노드.The event is one of receiving or time-lapse of one or more non-duplicate acknowledgments. 삭제delete 네트워크 노드로서,As a network node, 데이터 네트워크와의 연결성을 제공하도록 적응된 네트워크 인터페이스;A network interface adapted to provide connectivity with a data network; 상기 네트워크 인터페이스에 결합된 프로세서; 및A processor coupled to the network interface; And 상기 프로세서에 결합된 메모리Memory coupled to the processor 를 포함하며, 상기 메모리는 상기 프로세서로 하여금,Wherein the memory causes the processor to: 하나 이상의 라운드 트립 시간 및 하나 이상의 라운드 트립 시간 임계치에 적어도 일부 기초하여 무선 네트워크의 네트워크 유형을 판정하게 하며 ― 상기 하나 이상의 라운드 트립 시간은 TCP 세션 동안 전송된 복수의 데이터 세그먼트와 연관되며, 상기 하나 이상의 라운드 트립 시간 임계치는 하나 이상의 네트워크 유형과 연관됨 ―,Determine a network type of a wireless network based at least in part on at least one round trip time and at least one round trip time threshold, wherein the at least one round trip time is associated with a plurality of data segments transmitted during a TCP session; Round trip time threshold is associated with one or more network types ―, 복수의 TCP 세션 파라미터를, 상기 네트워크 유형과 연관된 복수의 대응 저장된 세션 파라미터들로 설정하게 하는 프로세서 실행가능 명령어 시퀀스를 포함하되,A processor executable instruction sequence for setting a plurality of TCP session parameters to a plurality of corresponding stored session parameters associated with the network type; 상기 복수의 TCP 세션 파라미터들은 최소 혼잡 윈도우, 최대 혼잡 윈도우, 최대 재전송 타임아웃, 혼잡 윈도우 증가 속도, 및 혼잡 윈도우 감소 속도 중 하나 이상을 포함하고,The plurality of TCP session parameters include one or more of a minimum congestion window, a maximum congestion window, a maximum retransmission timeout, a congestion window increase rate, and a congestion window decrease rate; 상기 메모리는 상기 프로세서로 하여금, 저속 개시 임계치를, 상기 최소 혼잡 윈도우 및 상기 최대 혼잡 윈도우에 의해 규정된 범위로 제한하게 하는 프로세서 실행가능 명령어 시퀀스를 더 포함하는 네트워크 노드.Wherein the memory further comprises a processor executable instruction sequence that causes the processor to limit a slow start threshold to a range defined by the minimum and maximum congestion windows. 제24항에 있어서,25. The method of claim 24, 상기 메모리는 상기 프로세서로 하여금, 상기 하나 이상의 라운드 트립 시 간, 또는 상기 하나 이상의 라운드 트립 시간으로부터 도출된 값이, 상기 하나 이상의 라운드 트립 시간 임계치에 의해 적어도 일부 규정된 범위 내에 있는 경우 상기 네트워크 유형을 판정하게 하는 프로세서 실행가능 명령어 시퀀스를 더 포함하는 네트워크 노드.The memory causes the processor to determine the network type if a value derived from the one or more round trip times, or the value derived from the one or more round trip times, is within at least some defined range by the one or more round trip time thresholds. Further comprising a processor executable instruction sequence for determining. 제25항에 있어서,26. The method of claim 25, 상기 하나 이상의 라운드 트립 시간, 또는 상기 하나 이상의 라운드 트립 시간으로부터 도출된 값이 낮은 대역폭 라운드 트립 시간 임계치보다 큰 경우 상기 네트워크 유형은 낮은 대역폭 네트워크 유형인 네트워크 노드.The network type is a low bandwidth network type when the one or more round trip times, or a value derived from the one or more round trip times, is greater than a low bandwidth round trip time threshold. 제25항에 있어서,26. The method of claim 25, 상기 하나 이상의 라운드 트립 시간, 또는 상기 하나 이상의 라운드 트립 시간으로부터 도출된 값이 높은 대역폭 라운드 트립 시간 임계치 미만인 경우 상기 네트워크 유형은 높은 대역폭 네트워크 유형인 네트워크 노드.The network type is a high bandwidth network type when the one or more round trip times, or a value derived from the one or more round trip times, is less than a high bandwidth round trip time threshold. 제24항에 있어서,25. The method of claim 24, 상기 복수의 대응 저장된 세션 파라미터중 하나 이상이 조정가능한 네트워크 노드.At least one of said plurality of corresponding stored session parameters is adjustable. 삭제delete 제24항에 있어서,25. The method of claim 24, 상기 메모리는 상기 프로세서로 하여금, 혼잡 윈도우를, 상기 최소 혼잡 윈도우 및 상기 최대 혼잡 윈도우에 의해 규정된 범위로 제한하게 하는 프로세서 실행가능 명령어 시퀀스를 더 포함하는 네트워크 노드.And the memory further comprises a processor executable instruction sequence that causes the processor to confine a congestion window to a range defined by the minimum congestion window and the maximum congestion window. 삭제delete 삭제delete 삭제delete 삭제delete
KR1020077014484A 2004-11-24 2005-11-23 Methods and apparatus for optimizing a tcp session for a wireless network KR101231793B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US63089504P 2004-11-24 2004-11-24
US60/630,895 2004-11-24
PCT/US2005/042744 WO2006058211A2 (en) 2004-11-24 2005-11-23 Methods and apparatus for optimizing a tcp session for a wireless network

Publications (2)

Publication Number Publication Date
KR20080033134A KR20080033134A (en) 2008-04-16
KR101231793B1 true KR101231793B1 (en) 2013-02-08

Family

ID=36498552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077014484A KR101231793B1 (en) 2004-11-24 2005-11-23 Methods and apparatus for optimizing a tcp session for a wireless network

Country Status (2)

Country Link
KR (1) KR101231793B1 (en)
WO (1) WO2006058211A2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013101942A1 (en) * 2011-12-28 2013-07-04 Jingyuan Wang Tcp congestion control for large latency networks
WO2015078491A1 (en) * 2013-11-26 2015-06-04 Telefonaktiebolaget L M Ericsson (Publ) Controlling a transmission control protocol congestion window size

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002030033A2 (en) * 2000-10-06 2002-04-11 Apple Computer, Inc. Improved connectionless arq protocol
JP2003032295A (en) * 2001-07-16 2003-01-31 Kddi Corp Packet repeater and method therefor
KR20040027176A (en) * 2002-09-27 2004-04-01 주식회사 케이티 congestion control method over wireless link

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643259B1 (en) * 1999-11-12 2003-11-04 3Com Corporation Method for optimizing data transfer in a data network
CA2534448C (en) * 2003-08-14 2009-10-27 Telcordia Technologies, Inc. Auto-ip traffic optimization in mobile telecommunications systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002030033A2 (en) * 2000-10-06 2002-04-11 Apple Computer, Inc. Improved connectionless arq protocol
JP2003032295A (en) * 2001-07-16 2003-01-31 Kddi Corp Packet repeater and method therefor
KR20040027176A (en) * 2002-09-27 2004-04-01 주식회사 케이티 congestion control method over wireless link

Also Published As

Publication number Publication date
KR20080033134A (en) 2008-04-16
WO2006058211A2 (en) 2006-06-01
WO2006058211A3 (en) 2007-01-04

Similar Documents

Publication Publication Date Title
KR100785293B1 (en) System and Method for TCP Congestion Control Using Multiple TCP ACKs
US7706269B2 (en) Method, system and device for controlling a transmission window size
US20070223395A1 (en) Methods and apparatus for optimizing a TCP session for a wireless network
US20080291911A1 (en) Method and apparatus for setting a TCP retransmission timer
US20070223492A1 (en) Methods and apparatus for optimizing a TCP session for a wireless network
US7742419B2 (en) Method, system and article for improved TCP performance during packet reordering
US8004981B2 (en) Methods and devices for the coordination of flow control between a TCP/IP network and other networks
EP1771742B1 (en) High performance tcp for systems with infrequent ack
US20070223529A1 (en) Methods and apparatus for estimating bandwidth of a data network
US8085669B2 (en) Session relay device and session relay method
KR100547749B1 (en) Congestion Control Method and System of Transmission Control Protocol to Reduce the Number of Retransmission Timeouts
EP1240753A1 (en) Congestion control method for a packet-switched network
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
KR101231793B1 (en) Methods and apparatus for optimizing a tcp session for a wireless network
KR101240312B1 (en) Methods and apparatus for optimizing a tcp session for a wireless network
WO2006058257A2 (en) Method and apparatus for setting a tcp retransmission timer
KR100913897B1 (en) Method for controlling congestion of TCP for reducing the number of retransmission timeout
Altahir et al. Performance evaluation of TCP congestion control mechanisms using NS-2
KR20110078564A (en) Update method of round trip time in communication protocol providing multi-homing function and communication apparatus providing multi-homing function
KR20080042764A (en) Methods and apparatus for estimating bandwidth of a data network
Chitre et al. TCP in the IPSEC environment
Islam et al. An Explicit Loss and Handoff Notification Scheme in TCP for Cellular Mobile System
KR101396785B1 (en) Method for performing tcp functions in network equipmment
JP2008536339A (en) Network for guaranteed services with virtually no congestion: external Internet NextGenTCP (square wave) TCP friendly SAN ready-to-run implementation

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160426

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170628

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180131

Year of fee payment: 6