[go: up one dir, main page]

KR20190095487A - 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템 - Google Patents

패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템 Download PDF

Info

Publication number
KR20190095487A
KR20190095487A KR1020197022121A KR20197022121A KR20190095487A KR 20190095487 A KR20190095487 A KR 20190095487A KR 1020197022121 A KR1020197022121 A KR 1020197022121A KR 20197022121 A KR20197022121 A KR 20197022121A KR 20190095487 A KR20190095487 A KR 20190095487A
Authority
KR
South Korea
Prior art keywords
packet
sequence number
retransmission
acknowledgment
server
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020197022121A
Other languages
English (en)
Other versions
KR102203509B1 (ko
Inventor
종 장
유 뎅
넹 양
지엔궈 웨이
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20190095487A publication Critical patent/KR20190095487A/ko
Application granted granted Critical
Publication of KR102203509B1 publication Critical patent/KR102203509B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/263Rate modification at the source after receiving feedback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/14
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/37Slow start
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/0289Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/06Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information

Landscapes

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

Abstract

본 발명은 패킷 전송 방법을 개시하며, 전송 단(transmit end) 및 수신 단(receive end)을 포함한다. 전송 단은, 제1 패킷이 유실된 것으로 결정한 후, 제1 패킷을 재전송하고 혼잡 윈도우(congestion window) 및/또는 느린 시작 임계 치(slow start threshold)를 감소시킨다. 수신 단은, 재전송된 제1 패킷을 최초로 수신한 후, 재전송된 제1 패킷에 대한 응답으로 ACK를 전송 단에 송신하고, 여기서 ACK는 사전에 생성된 DSACK 옵션을 포함하고, DSACK 옵션을 포함하는 ACK를 전송 단에 송신하여 제1 패킷이 반복적으로 수신되었음을 전송 단에 알린다. DSACK 옵션에 기록된 시퀀스 번호에 기초하여, 전송 단은, 혼잡으로 인해 제1 패킷이 유실된 것이 아니라 무질서하게 수신된 것이고, 제1 패킷의 유실로 인해 트리거되는 재전송 및 혼잡 윈도우의 회피는 불필요하다고 추론하므로, 혼잡 윈도우 및/또는 느린 시작 임계 치를 보상한다.

Description

패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템
본 발명은 통신 기술 분야, 특히 패킷 전송 방법, 단말 및 통신 시스템에 관한 것이다.
TCP(Transmission Control Protocol)는 연결 지향의, 신뢰성 있는, 바이트 스트림 기반 전송 계층 통신 프로토콜이다. 신뢰할 수 있는 패킷 전송을 보장하기 위해, TCP에서, 하나의 시퀀스 번호(Sequence Number)가 각 패킷에 대해 할당된다. 시퀀스 번호는 수신 단으로 전달된 패킷의 순서 바른 수신(orderly reception)을 보장한다. 성공적으로 수신된 패킷의 경우, 수신 단은 해당 확인 응답 패킷(Acknowledgment 또는 ACK)을 전송 단에 회신한다. 확인 응답 패킷은 수신된 패킷의 시퀀스 번호를 포함한다. 전송 단이 적절한 왕복 시간(Round-Trip Time, RTT) 내에 확인 응답 패킷을 수신하지 않으면, 대응하는 패킷이 재전송되어야 한다. 이 메커니즘은 보통 타임 아웃 기반 재전송으로 지칭된다. 고속 재전송은 타임 아웃 기반 재전송에 대한 최적화에 해당한다. N(일반적으로 N = 3)을 초과하는 개수의 중복 ACK를 수신하는 경우, 전송 단은 패킷이 유실되었다고 결정하고, 유실된 패킷을 즉시 재전송한다. 고속 재전송 메커니즘에 따르면, 패킷은 타임 아웃 타이머의 만료를 기다릴 필요 없이 재전송된다. 이것은 데이터 전송 효율을 크게 향상시킨다.
타임 아웃 기반의 재전송 및 고속 재전송 메커니즘이 신뢰할 수 있는 패킷 전송을 보장하지만, 네트워크 상태가 악화되고 전송 지연이 상대적으로 긴 경우, 패킷 재전송은 네트워크 부하를 증가시켜 전송 지연을 더 길어지게 하거나 패킷의 유실이 더 많아지도록 할 수 있다. 결과적으로 악의적인 사이클(malicious cycle)이 발생하고, 심지어 전체 네트워크가 다운된다. 이를 고려하여, TCP에 혼잡(congestion) 제어 알고리즘이 도입되었다. TCP 혼잡 제어 알고리즘의 주류는 본질적으로 패킷 유실 회피의 원칙에 기반을 두고 있다: 네트워크 패킷 유실이 발생했음을 확인한 후, 전송 단은 능동적으로 혼잡 윈도우를 줄여, 전송 속도를 줄이고 나아가 네트워크 혼잡을 줄인다.
혼잡 제어 알고리즘이 네트워크 혼잡을 어느 정도 억제할 수는 있지만 데이터 전송 속도가 부적절하게 제한될 수 있다. 특히, 무선 네트워크 환경에서, 무선 링크의 채널 품질은 복수의 요인에 의해 영향 받기 쉽다. 예를 들어, 약한 신호 커버리지와 같은 시나리오에서, 비트 에러와 같은 비 혼잡(non-congestion) 인자로 인해 무선 링크 상에서 패킷 유실이 종종 발생한다. 그러나, 종래의 혼잡 제어 알고리즘에 기초하여, 전송 단은, 패킷 유실에 기초하여, 네트워크 혼잡이 발생하는 지를 결정하고, 능동적으로 혼잡 윈도우를 감소시킨다. 이는 수신 단의 다운 링크 처리량을 감소시키고 사용자의 인터넷 서핑 경험에 영향을 미친다.
본 발명은 데이터의 전송 속도를 높이기 위한 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템을 제공하기 위한 것이다.
본 발명의 실시 예들은 데이터 전송 속도를 높이기 위한 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템을 제공한다.
본 발명의 전술한 목적을 달성하기 위해, 본 발명의 제1 측면에 따르면, 본 발명의 일 실시 예는 패킷 송신 방법을 제공한다. 상기 방법은, 서버에 의해 송신된 재전송 패킷(retransmitted packet)을 최초로 수신한 경우, 단말에 의해, 최초로 수신된 재전송 패킷에 응답하기 위해 사용되는 제1 확인 응답(acknowledgment) 패킷을 서버에 송신하는 단계 - 여기서 재전송 패킷은, 서버가, 송신된 제1 패킷이 유실된 것으로 결정한 후 서버에 의해 재전송되며, 재전송 패킷의 시퀀스 번호는 제1 패킷에 포함된 시퀀스 번호와 동일하고; 제1 확인 응답 패킷은 반복 지시 필드(repetition indication field)를 포함하고, 반복 지시 필드는 제1 패킷이 반복적으로 수신되었음을 나타내기 위해 사용됨 -; 재전송 패킷이 반복적으로 수신되었음을 전송 단에 알리기 위해, 수신 단에 의해, 최초로 수신된 재전송 패킷에 대한 응답으로 확인 응답 패킷의 TCP 헤더에 특별 정보를 추가하는 단계; 및 제1 확인 응답 패킷을 수신한 후, 제1 확인 응답 패킷에 포함된 반복 지시 필드에 기초하여 서버에 의해, 제1 패킷이 혼잡으로 인해 유실되지 않았음을 추론하는 단계를 포함한다. 그러므로, 이전에 결정된 제1 패킷의 유실로 인해 트리거되는 재전송 및 혼잡 윈도우 회피는 불필요하다. 이에 기초하여, 서버는 혼잡 윈도우 크기(congestion window size) 및/또는 느린 시작 임계 치(slow start threshold)를 보상하고, 이에 따라 다운 링크 처리량이 증가한다.
가능한 설계에서, 단말이 제1 패킷의 시퀀스 번호와 동일한 시퀀스 번호를 갖는 패킷을 최초로 수신할 때, 제1 확인 응답 패킷은 단말에 의해 송신된다. 이 경우, 제1 패킷과 동일한 시퀀스 번호를 갖는 패킷을 최초로 수신하면, 단말은 제1 확인 응답 패킷에 포함된 반복 지시 필드를 이용하여 서버를 "기만(deceive)"하여, 단말이 제1 패킷과 동일한 시퀀스 번호를 갖는 패킷을 반복적으로 수신하였음을 나타내고, 이에 기초하여, 서버는 혼잡으로 인해 제1 패킷이 유실되었다는 이전 결정이 오판이라고 결정하고, 결정된 제1 패킷의 유실로 인해 이전에 감소된 혼잡 윈도우를 추가로 복원하여 데이터 전송 속도를 증가시킨다.
가능한 설계에서, 수신된 패킷의 시퀀스 번호 및 수신되어 일시적으로 저장된 패킷의 시퀀스 번호에 기초하여, 단말은 패킷이 재전송 패킷인지 여부와, 시퀀스 번호가 해당 패킷의 시퀀스 번호와 동일한 패킷이 최초로 수신되는지 여부를 결정한다.
가능한 설계에서, 제1 확인 응답 패킷은 SACK 옵션을 더 포함하고, SACK 옵션은, 단말에 의해 수신된 패킷의 시퀀스 번호 정보를 나타내기 위해 사용된다.
가능한 설계에서, 반복 지시 필드는 제1 패킷의 시퀀스 번호를 포함하고, 반복 지시 필드는 제1 확인 응답 패킷의 SACK 옵션의 첫 번째 블록에 위치한다.
가능한 설계에서, 제1 확인 응답 패킷은 DSACK 패킷이고, 반복 지시 필드는 패킷의 DSACK 블록에 위치한다.
가능한 설계에서, 단말에 의해, 서버에 의해 송신된 재전송 패킷을 수신하기 전에, 상기 방법은, 단말에 의해, 하나 이상의 액세스 포인트를 이용하여 무선 네트워크에 연결하고 서버에 대한 TCP 연결을 수립하는 단계를 더 포함한다. 가능한 설계에서, 단말 및 서버는 모두 SACK 옵션이 인에이블된다.
본 발명의 제2 측면에 따르면, 본 발명의 일 실시 예는 패킷 송신 방법을 제공하며, 상기 방법은, 단말에 의해, 서버에 의해 송신된 재전송 패킷을 수신하는 단계 - 여기서 재전송 패킷은, 서버가, 송신된 제1 패킷이 유실된 것으로 결정한 후 서버에 의해 재전송되며, 재전송 패킷의 시퀀스 번호는 제1 패킷에 포함된 시퀀스 번호와 동일하고, 재전송 패킷은 재전송 패킷의 전송 타임스탬프를 나타내기 위해 사용되는 TSval 필드를 포함하고, TSval 필드의 값은 TSrexmit 이고, TSrexmit 은 재전송 패킷의 실제 전송 시간을 나타냄 -; 및 재전송 패킷을 최초로 수신한 경우, 단말에 의해, 최초로 수신된 재전송 패킷에 응답하기 위해 사용되는 제1 확인 응답 패킷을 서버에 송신하는 단계 - 여기서 제1 확인 응답 패킷은 재전송 패킷의 전송 타임스탬프를 서버에 보고하기 위해 사용되는 TSecr 필드를 포함하고, TSecr 필드의 값은 TSxmit 미만, 즉, 재전송 패킷의 실제 전송 타임스탬프 미만으로 설정됨 - 를 포함한다.
상기 방법을 이용함으로써, 한 번만 수신된 재송신 패킷에 대해, 단말기는 재전송 패킷의 실제 전송 타임스탬프보다 작은 값을 TSecr 필드에 추가하기 위한 타임스탬프 옵션을 위조하여, 전송 단이 재전송 패킷이 반복적으로 수신되었음을 믿도록 "기만"한다. 따라서, 전송 단은, 시퀀스 번호를 갖는 패킷의 이전 재전송으로 인한 혼잡 윈도우 회피가 불필요하다고 추론하고, 이에 기초하여, 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 보상하여, 데이터 전송 속도를 증가시킨다.
가능한 설계에서, 제1 확인 응답 패킷의 TSecr 필드의 값은, 제1 패킷의 시퀀스 번호의 직전에 해당하는 시퀀스 번호를 갖는 패킷의 전송 타임스탬프보다 작거나 같고, 제1 패킷의 시퀀스 번호의 직후에 해당하는 시퀀스 번호를 갖는 패킷의 전송 타임스탬프보다 크거나 같다. 이러한 기준에 기초하여 계산된 TSval 필드는 제1 패킷의 실제 전송 타임스탬프에 더 가깝다.
가능한 설계에서, 단말 및 서버 모두 TCP 타임스탬프 옵션이 인에이블되고, TCP 연결을 수립한다.
본 발명의 제3 측면에 따르면, 본 발명의 일 실시 예는 전송 단과 수신 단 사이에서 패킷을 포워딩하는 방법을 제공하며, 상기 방법은, 네트워크 디바이스에 의해, 전송 단에 의해 수신 단으로 송신된 재전송 패킷을 수신하고, 재전송 패킷을 수신 단에 포워딩하고, 재전송 패킷에 대한 응답으로 수신 단의 제1 확인 응답 패킷을 수신하는 단계 - 여기서 재전송 패킷은, 전송 단이, 송신된 제1 패킷이 유실된 것으로 결정한 후 전송 단에 의해 재전송되며, 재전송 패킷의 시퀀스 번호는 제1 패킷에 포함된 시퀀스 번호와 동일하고; 수신 단이 재전송 패킷을 최초로 수신한 경우 제1 확인 응답 패킷은 수신 단에 의해 송신됨 -; 및 네트워크 디바이스에 의해, 제1 확인 응답 패킷에 반복 지시 필드를 추가하여 제2 확인 응답 패킷을 획득하고, 제2 확인 응답 패킷을 송신하는 단계 - 여기서 반복 지시 필드는 제1 패킷이 반복적으로 수신되었음을 나타내기 위해 사용되어, 전송 단은, 제1 확인 응답 패킷을 수신한 후, 반복 지시 필드에 의한 지시 내용에 기초하여 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 증가시켜, 데이터 전송 속도를 증가시킴 -를 포함한다.
가능한 설계에서, 제1 확인 응답 패킷은, 제1 패킷의 시퀀스 번호와 동일한 시퀀스 번호를 갖는 패킷을 단말이 최초로 수신한 경우 단말에 의해 송신된다.
가능한 설계에서, 제1 확인 응답 패킷 및 제2 확인 응답 패킷 모두는 SACK 옵션을 더 포함하고, SACK 옵션은, 수신 단에 의해 수신된 패킷의 시퀀스 번호 정보를 나타내기 위해 사용된다.
가능한 설계에서, 반복 지시 필드는 제1 패킷의 시퀀스 번호를 포함하고, 반복 지시 필드는 제2 확인 응답 패킷의 SACK 옵션의 첫 번째 블록에 위치한다.
가능한 설계에서, 전송 단과 수신 단 사이의 연결은 TCP 연결이고, 전송 단 및 수신 단 모두는 SACK 옵션 또는 타임스탬프 옵션이 인에이블된다.
본 발명의 제4 측면에 따르면, 본 발명의 일 실시 예는 단말을 제공하며, 단말은 전술한 방법 예에 따른 단말의 기능들을 갖는다. 기능들은 하드웨어를 이용하여 구현되거나, 대응되는 소프트웨어를 하드웨어에 의해 실행함으로써 구현될 수 있다. 하드웨어 또는 소프트웨어는 전술한 기능들에 대응하는 하나 이상의 모듈을 포함한다.
가능한 설계에서, 단말은 어플리케이션 프로세서, 메모리 및 통신 서브 시스템을 포함하고, 통신 서브 시스템은 패킷을 수신하고 확인 응답 패킷을 송신하며, 어플리케이션 프로세서는 메모리의 프로토콜 스택 프로그램을 실행하여, 방법 예에 따른 단말의 기능들을 수행한다.
다른 가능한 설계에서, 단말의 구조는 수신 유닛, 프로세싱 유닛 및 송신 유닛을 포함하고, 이들 유닛들은 방법 예에 따른 대응하는 기능들을 수행할 수 있다. 상세한 내용에 대해서는, 방법 예의 상세한 설명을 참조할 수 있고, 여기서는 상세한 내용을 다시 설명하지 않는다.
본 발명의 제5 측면에 따르면, 본 발명의 일 실시 예는 네트워크 디바이스를 제공하며, 네트워크 디바이스는 전술한 방법 예에 따른 네트워크 디바이스의 기능들을 갖는다. 기능들은 하드웨어를 이용하여 구현되거나, 대응되는 소프트웨어를 하드웨어에 의해 실행함으로써 구현될 수 있다. 하드웨어 또는 소프트웨어는 전술한 기능들에 대응하는 하나 이상의 모듈을 포함한다.
본 발명의 다른 측면에 따르면, 본 발명의 일 실시 예는 통신 시스템을 제공하며, 시스템은 전술한 측면에 따른 단말 및 서버를 포함하고, 시스템은 본 발명의 일 실시 예에서 제공된 해결 방안의 다른 단말 상호작용 디바이스(terminal-interacting device)를 더 포함한다.
본 발명의 또 다른 측면에 따르면, 본 발명의 일 실시 예는 컴퓨터 저장 매체를 제공하며, 컴퓨터 저장 매체는 단말 또는 네트워크 디바이스에 의해 사용되는 컴퓨터 소프트웨어 인스트럭션을 저장하고, 컴퓨터 저장 매체는 전술한 측면들을 실행하도록 설계된 프로그램을 포함한다.
종래 기술과 비교하여, 본 발명의 실시 예들에서 제공되는 해결 방안에서, 수신 단은, 패킷이 반복적으로 수신되었음을 송신 단에 알리기 위해 최초로 수신된 재전송 패킷에 대한 응답으로 확인 응답 패킷의 헤더에 특별 정보를 추가하고, 확인 응답 패킷을 전송 단에 송신하며; 확인 응답 패킷을 수신한 후, 전송 단은, 확인 응답 패킷에 포함된 특별 정보에 기초하여, 이러한 패킷 유실이 혼잡으로 인한 패킷 유실이 아니라 무질서한 수신이며, 트리거되는 재전송 및 혼잡 윈도우 회피가 불필요하다고 추론할 수 있다. 이에 기초하여, 전송 단은 혼잡 윈도우 크기 및 느린 시작 임계 치를 보상하여, 다운 링크 처리량을 증가시킬 수 있다.
본 발명의 실시 예 또는 종래 기술의 기술적 해결 방안을 보다 명확하게 설명하기 위해, 실시 예 또는 종래 기술을 설명하기 위해 요구되는 첨부 도면을 간단히 설명한다.
도 1은 무선 네트워크 전송 시나리오를 설명하기 위한 개략도이다.
도 2는 본 발명의 일 실시 예에 따른 통신 시스템을 설명하기 위한 개략도이다.
도 3은 TCP 패킷 포맷을 설명하기 위한 개략도이다.
도 4는 종래 기술의 고속 전송 방법을 설명하기 위한 개념도이다.
도 5는 종래 기술의 SACK(selective acknowledgment) 방법을 설명하기 위한 개략도이다.
도 6은 종래 기술의 혼잡 제어 방법을 설명하기 위한 개략도이다.
도 7은 본 발명의 일 실시 예에 따른 패킷 전송 방법을 설명하기 위한 흐름도이다.
도 8은 SACK 옵션 포맷을 설명하기 위한 개략도이다.
도 9는 본 발명의 일 실시 예에 따른 SACK 옵션을 설명하기 위한 구조도이다.
도 10은 타임스탬프 옵션이 인에이블된 시나리오에서의 데이터 전송을 설명하기 위한 개략도이다.
도 11은 본 발명의 일 실시 예에 따른 다른 패킷 전송 방법을 설명하기 위한 개략도이다.
도 12는 본 발명의 일 실시 예에 따른 다른 패킷 전송 방법을 설명하기 위한 흐름도이다.
도 13은 본 발명의 일 실시 예에 따른 단말을 설명하기 위한 개략 구조도이다.
도 14는 본 발명의 일 실시 예에 따른 네트워크 디바이스를 설명하기 위한 개략 구조도이다.
도 15는 본 발명의 일 실시 예에 따른 패킷 전송 장치를 설명하기 위한 개략 구조도이다.
해당 기술 분야의 통상의 기술자가 본 발명의 기술적 해결 방안을 더 잘 이해할 수 있도록 하기 위해, 이하에서는 본 발명의 실시 예의 첨부된 도면을 참조하여 본 발명의 실시 예에서 기술적 해결 방안을 명확하게 설명한다. 명백하게, 설명된 실시 예는 본 발명의 모든 실시 예가 아닌 일부에 불과하다.
도 1은 일반적인 무선 네트워크 전송 시나리오를 도시한다. 단말은 셀룰러 네트워크 또는 WLAN(wireless local area network)의 액세스 포인트를 이용하여 무선 네트워크에 접속 한 후, 특정 네트워크 프로토콜에 기반하여 어플리케이션 서버에 데이터를 전송한다. 예를 들어, 서버는, 단말에 의해 요청된 바와 같이, 단말에 데이터를 패킷으로 송신할 수 있고; 또는 단말은 로컬 데이터를 패킷으로 캡슐화(encapsulate)하고, 네트워크를 이용하여 서버에 패킷을 송신할 수 있다. 몇몇의 다른 시나리오에서, 데이터 전송은, 유선 링크를 이용함으로써 단말과 서버 사이에서 번갈아 수행될 수 있다. 그러나, 어떤 타입의 링크가 사용되는 지와 무관하게, 데이터 전송 과정에서는 필연적으로 패킷 유실이 발생한다. 따라서, 신뢰할 수 있는 데이터 전송을 보장하기 위해, 서로 다른 디바이스 간 전송 프로토콜로 TCP(Transmission Control Protocol)가 첫 번째 선택이 된다. 느린 시작 메커니즘, 혼잡 제어 메커니즘, 타임 아웃 기반 재전송 메커니즘 등이 TCP에 도입되어 데이터 전송의 신뢰성을 보장한다. 그러나, 이러한 메커니즘은 데이터 전송 속도를 크게 제한하고, 링크 이용률(link utilization)을 감소시킨다. 본 발명의 목적은 신뢰성 있는 데이터 전송을 보장하면서, 데이터 전송 속도를 높이고 링크 이용률을 향상시키는 것이다. TCP/IP(Internet Protocol) 프로토콜 스택에 기초한 어떤 디바이스도 본 발명에서 제공되는 기술적 해결 방안에 적용 가능하다는 점을 이해할 수 있다. TCP/IP 프로토콜 스택은 TCP/IP 참조 모델에 의해 정의된 TCP/IP 프로토콜 스위트(suite)를 구현하기 위해 사용되는 구성 요소이며, TCP/IP 프로토콜 스위트는 다음 두 가지 핵심 프로토콜이 포함된다: TCP 및 IP. TCP/IP 참조 모델은 추상적으로 계층화된 모델이다. 이 모델에서, 모든 네트워크 프로토콜은 5 개의 추상 "계층"으로 분류된다: 물리 계층, 링크 계층, 네트워크 계층, 전송 계층 및 어플리케이션 계층. 이들 계층의 정의는 모두 종래 기술에서 이루어진 것이며, 그 상세한 내용은 본 발명의 실시 예에서 기술되지 않는다.
본 발명의 명세서, 청구범위 및 첨부된 도면에서, 용어 "단말"은 사용자에게 음성 및/또는 데이터 연결성을 제공하는 디바이스이고, 무선 단말 또는 유선 단말을 포함한다. 무선 단말은 무선 연결 기능을 갖는 핸드헬드 디바이스, 사물 인터넷 디바이스, 또는 무선 모뎀에 연결된 다른 처리 디바이스일 수 있다. 예를 들어, 무선 단말은 이동 전화(또는 "셀룰러" 폰이라고도 함) 또는 이동 단말을 구비한 컴퓨터일 수 있다. 다른 예로서, 무선 단말은 대안적으로 휴대용, 포켓 크기, 핸드헬드 또는 컴퓨터 내장형 모바일 장치 또는 차량 내 모바일 장치일 수 있다. 또 다른 예로서, 무선 단말은 이동 국(mobile station) 또는 사용자 기기(user equipment, UE)의 일부일 수 있다. "패킷"은 네트워크 전송의 기본 단위이며, 특정 형식으로 구성된 데이터이다. 여러 가지 타입의 네트워크 프로토콜에서 패킷 형식에 대한 정의는 여러 가지가 있다. 그러나, 보통, 하나의 패킷은 헤더(header) 및 페이로드(payload)를 포함할 수 있다. 헤더는 패킷 전송 과정에서 필요한 정보, 예를 들어 어드레스 정보 및 플래그 비트를 포함한다. 페이로드는 패킷의 데이터 섹션이라고도 하며, 송신할 데이터 컨텐트를 포함한다. "제1", "제2", "제3", "제4" 등과 같은 용어는 (존재한다면) 유사한 대상을 구별하기 위한 것이지만, 반드시 특정 순서 또는 특정 시퀀스를 나타내는 것은 아니다.
도 2는 본 발명의 일 실시 예에 따른 통신 시스템(100)을 설명하기 위한 간략화된 블록도이다. 통신 시스템(100)은 본 발명의 적용 시나리오서만 사용되며, 본 발명의 적용 시나리오를 제한하는 것으로 이해되어서는 안 된다.
통신 시스템(100)은 단말(110), 액세스 포인트(10), 무선 액세스 게이트웨이(12), 광역 네트워크(14), 제1 어플리케이션 서버(20), 제2 어플리케이션 서버(30) 및 제3 어플리케이션 서버(40)를 포함한다. 해당 기술 분야의 통상의 지식을 가진 자는, 일 통신 시스템이 통상적으로 도 2에 도시된 것들보다 더 적거나 더 많은 구성 요소들을 포함하거나, 도 2에 도시된 것들과 다른 구성 요소를 포함할 수 있다는 점을 이해할 수 있다. 도 2는 본 발명의 실시 예들에 개시된 복수의 구현 예들과 더욱 관련된 구성 요소들만을 도시한다.
해당 기술 분야의 통상의 지식을 가진 자는, 일 통신 시스템이 통상적으로 도 2에 도시된 것들보다 더 적거나 더 많은 구성 요소들을 포함하거나, 도 2에 도시된 것들과 다른 구성 요소를 포함할 수 있다는 점을 이해할 수 있다. 도 2는 본 발명의 본 실시 예에 개시된 복수의 구현 예들과 더욱 관련된 구성 요소들만을 도시한다. 예를 들어, 도 2에서 3 개의 어플리케이션 서버(20, 30, 40)가 설명되었지만, 해당 기술 분야의 통상의 지식을 가진 자는, 일 통신 시스템이 임의의 양에 해당하는 어플리케이션 서버를 포함하거나, 심지어 어플리케이션 서버를 포함하지 않을 수 있음을 이해할 수 있다. 어플리케이션 서버(20, 30, 40)는 대응하는 TCP/IP 프로토콜 스택(21, 31, 41)을 각각 포함한다. TCP/IP 프로토콜 스택(21, 31, 41)의 기능들은, 어플리케이션 서버(20, 30, 40) 상에서 각각 실행되는 소프트웨어, 하드웨어 및/또는 펌웨어의 적절한 조합에 의해 실행될 수 있다. 광역 네트워크(14)는 공중 네트워크, 사설 네트워크, 인터넷 및/또는 임의의 조합 중 하나를 포함할 수 있다. 액세스 포인트는 기지국(Base Station), NodeB, eNodeB, 무선 네트워크 컨트롤러(Radio Network Controller), 기지국 컨트롤러(Base Station Controller), 기지 송수신국(Base Transceiver Station), 송수신 기능, 무선 송수신기(Radio Transceiver), 무선 라우터(Radio Router), 기지 서비스 세트(Base Service Set) 또는 기타 유사한 용어로 지칭되거나 구현될 수 있다. 게이트웨이(12) 및 액세스 포인트(11)는 하나의 무선 네트워크에 포함될 수 있다. 간결함을 위해, 무선 네트워크의 다른 부분에 대해서는 설명을 생략한다.
단말(110)은 어플리케이션 프로그램 컨트롤러(120), TCP/IP 프로토콜 스택(130) 및 무선 모뎀(Wireless Modem)(140)을 포함한다. 무선 모뎀(140)은 안테나(142)에 연결된다. 해당 기술 분야의 통상의 지식을 가진 자는, 단말(110)이 도 2에 도시된 것들보다 더 적거나 더 많은 구성 요소를 포함할 수 있음을 이해할 수 있다. 도 2에 도시된 액세스 단말(110)은, 본 명세서에 개시된 복수의 구현 예들의 복수의 측면들과 더욱 관련된 구성 요소들만을 도시한다.
어플리케이션 프로그램 컨트롤러(120)는, 단말(110) 상에서 실행되는 어플리케이션 프로그램을 제어 및/또는 모니터링한다. 예를 들어, 제1 어플리케이션 프로그램(121), 제2 어플리케이션 프로그램(123), 제3 어플리케이션 프로그램(125)은 어플리케이션 프로그램 컨트롤러(120)의 제어 하에 실행된다. 제1 어플리케이션 프로그램(121), 제2 어플리케이션 프로그램(123), 제3 어플리케이션 프로그램(125)은 각각 제1 어플리케이션 프로그램 서버(20), 제2 어플리케이션 프로그램 서버(30), 제3 어플리케이션 프로그램 서버(40)의 클라이언트 측 어플리케이션 프로그램에 해당한다. 해당 기술 분야의 통상의 지식을 가진 자는 TCP/IP 프로토콜 스택(130)이 소프트웨어, 하드웨어 및/또는 펌웨어의 적절한 조합에 의해 실행될 수 있음을 이해할 수 있다. TCP/IP 프로토콜 스택(130), 무선 모뎀(140) 및 안테나(142)는 협력하여 데이터 송신 및 수신을 완료한다. 어플리케이션 프로그램 컨트롤러(120)는 구체적으로 프로세서 또는 프로세서 코어일 수 있다.
제1 어플리케이션 프로그램(121)은 제1 어플리케이션 프로그램 서버(20)로부터 정보를 요청하는 웹 페이지 브라우저일 수 있다. 제1 어플리케이션 프로그램(121)과 제1 어플리케이션 프로그램 서버(21) 사이의 통신을 용이하게 하기 위해, 제1 어플리케이션 프로그램(121)과 서버는 모두 대응하는 소켓(socket)을 생성하고, 소켓을 기반으로 TCP/IP 연결을 수립한 후, TCP/IP 연결을 이용하여 데이터를 전송한다. 클라이언트 소켓 및 서버 소켓은 소켓 페어(socket pair)로 지칭된다. 각 소켓은 일반적으로 고유한 5-튜플(5-tuple) 구조를 이용하여 설명된다. 고유한 5-튜플 구조는 프로토콜 ID, 소스 IP 주소, 목적지 IP 주소, 소스 포트 번호 및 목적지 포트 번호를 포함한다
제1 어플리케이션 프로그램(121)과 제1 어플리케이션 프로그램 서버(21) 사이의 TCP/IP 연결 수립은 제1 어플리케이션 프로그램(121)에 의해 시작될 수 있다. 제1 어플리케이션 프로그램(121)은 소켓 오픈(socket open) 명령을 생성한다. 상기 명령은 TCP/IP 프로토콜 스택(130)에 전달되어, TCP/IP 프로토콜 스택(130)이 3 가지 메시지 상호 작용(3 가지 핸드 셰이크(handshake)라고도 함)을 통해 제1 어플리케이션 서버(21)에 TCP/IP 연결을 수립하는 것을 트리거하고; 다음으로 TCP/IP 프로토콜 스택은 제1 어플리케이션 프로그램(121)에 연결이 수립되었음을 통지한다.
다음으로, 제1 어플리케이션 프로그램(121)과 제1 어플리케이션 프로그램 서버(21)는 설정된 TCP 연결에 기초하여 TCP 패킷으로 캡슐화 된 데이터를 전송할 수 있다. 도 3은 TCP 패킷 포맷을 도시한다. 소스 포트 및 목적지 포트는 전송 단 및 수신 단의 어플리케이션 프로세스를 결정한다. TCP 연결은 소스 포트, 목적지 포트, 소스 IP 주소 및 목적지 주소를 이용하여 고유하게 결정될 수 있다. TCP 패킷 헤더의 시퀀스 번호(Sequence Number, 일반적으로 간단히 seq라고 함) 필드는 패킷 시퀀스 번호를 나타내기 위해 사용된다. 일반적으로 패킷 시퀀스 번호는 패킷 페이로드의 첫 번째 데이터 바이트의 시퀀스 번호이다. TCP 패킷을 수신한 후, 수신 단은 확인 응답 패킷(Acknowledgement, 줄여서 ACK)을 전송 단으로 송신한다. ACK 헤더의 확인 응답 번호(Acknowledge Number, 보통 줄여서 ack) 값은, 수신 단에 의해 수신된 패킷의 "시퀀스 번호" 필드 값을 나타내고, 또한 수신 단이 전송 단에 의해 송신된, "시퀀스 번호" 값이 ACK 패킷의 "확인 응답 번호"보다 작은 모든 패킷을 수신하였음을 의미한다. 윈도우 크기는 수신 단의 현재 수신 버퍼의 크기를 나타내기 위해 사용된다. 또한 TCP 패킷 헤더에는 여전히 6 개의 플래그 비트와 하나의 사용자 정의 가능한 옵션(Option) 필드가 있다. 옵션 필드는 추가적인 정보를 전달하기 위해 사용될 수 있다. 6 개의 플래그 비트의 정의는 다음과 같다.
URG: 긴급 포인터(urgent pointer in effect);
ACK: 확인 응답 번호(acknowledgment number in effect);
PSH: 처리를 위한 어플리케이션 레이어에 즉시 송신(immediate sending to an application layer for processing);
RST: 예외에 대한 리셋(reset upon an exception);
SYN: 동기화 플래그(a synchronization flag), 1 로 설정된 것은 연결이 수립되었음을 의미함; 및
FIN: 연결 해제를 요청하는 종결 플래그(a finish flag, requesting to release a connection).
다음은 구체적인 예를 사용하여 TCP 재전송 및 혼잡 제어 메커니즘을 설명한다. 간략한 설명을 위해, 본 발명의 본 실시 예에서, 2 개의 연결된 디바이스 중 하나는 전송 단이라고 지칭되고, 다른 디바이스는 수신 단이라고 지칭된다. 전송 단 및 수신 단은 전송 및 수신 능력(capability)을 갖는 임의의 장치일 수 있음을 이해할 수 있다. 예를 들어, 전송 단은 서버일 수 있고, 수신 단은 단말일 수 있다. 또한 전송 단과 수신 단은 서로 상반되는 두 가지 역할을 하며 그 역할은 서로 바꿀 수 있다. 구체적으로, 디바이스는 하나의 시나리오에서 전송 단이 될 수 있고 다른 시나리오에서는 수신 단이 될 수 있다.
TCP 재전송 메커니즘은 신뢰할 수 있는 패킷 전송을 보장하며, 재전송 메커니즘은 주로 타임 아웃 기반 재전송 및 고속 재전송을 포함한다. 타임 아웃 기반 재전송의 기본 프로세스는 다음과 같다: 전송 단은 패킷을 송신한 후 타임 아웃 타이머를 시작하고, 패킷이 올바르게 수신되었음을 나타내는 확인 응답 패킷을 수신하기 전에 타임 아웃 타이머가 만료되면 전송 단은 패킷을 재전송한다. 타임 아웃 타이머의 값은 일반적으로 RTO(Retransmission TimeOut)로 표현된다. RTO는 일반적으로 RTT(Round Trip Time)와 동일하도록 설정되며, 이것은 송신되고 다시 돌아오는 패킷에 대한 시간이다. RTT는 샘플링을 통해 획득할 수 있다.
고속 재전송(Fast Retransmit) 알고리즘은 시간에 의해 구동되지 않고 데이터에 의해 구동된다. 도 4에 도시된 바와 같이, 전송 단은 시퀀스 번호 1, 2, 3, 4 및 5를 갖는 5 개의 패킷을 송신했다고 가정한다. 시퀀스 번호 1을 갖는 패킷(줄여서 패킷 1)은 수신 단에 의해 가장 먼저 수신되고, 수신 단은 확인 응답 번호 ack = 2를 갖는 확인 응답 패킷인 ACK2로 응답하며; 패킷 2가 네트워크 혼잡 또는 패킷 유실로 인해 수신 단에 도착하지 않고 패킷 3이 도착하면, 수신 단은 여전히 ACK2로 응답한다. TCP는 누적 확인 응답 메커니즘(accumulative acknowledgment mechanism)을 사용하기 때문에, 패킷이 무질서하게 도착하거나 패킷 유실이 발생하면, 수신 단은 순서대로 도착한 마지막 패킷을 반복해서 확인 응답한다. ACK의 시퀀스 번호는 변경될 수 없으며, 수신 단에 도착한 마지막의 순서 바른 패킷의 시퀀스 번호만 될 수 있다. 이와 유사하게, 패킷 4 및 5가 모두 도달했지만 패킷 2가 수신 단에 도착하지 않은 경우, 수신 측에 의해 송신된 누적 확인 응답의 시퀀스 번호는 여전히 2이다. 이 경우, 전송 단은 ack = 2 인 4 개 이상의 확인 응답 패킷을 수신하였고, 패킷 2가 유실되었다고 판단한다. 그 다음, 전송 단은 시퀀스 번호 2를 갖는 패킷을 즉시 재전송한다. 그 다음 수신 단은 패킷 2를 수신한다. 이 경우, 패킷 3, 4 및 5 모두가 수신되었기 때문에, 수신 단은 확인 응답 번호 ack = 6을 갖는 확인 응답 패킷인 ACK6으로 응답한다. 고속 재전송 메커니즘이 도입된 후, 송신된 시퀀스의 일부 패킷이 유실되면, 전송 단은 최종 누적 확인 응답의 시퀀스 번호 바로 뒤에 오는 패킷을 재전송한다는 것을 알 수 있다. 따라서, 정확하게 이전에 수신된 패킷이 반복적으로 송신되어, 네트워크 혼잡이 증가하고 TCP 전송 성능이 저하될 수 있다.
RFC 2018은 선택적 확인 응답(Selective Acknowledgement, 즉 SACK) 기술을 제안한다. 선택적 확인 응답(SACK) 옵션은, 수신 단이 불연속 데이터 블록을 수신하고 일시적으로 저장했음을 나타내기 위해 확인 응답 패킷 헤더에 추가된다. 전송 단은 이 정보에 기초하여 어떤 데이터가 유실되었는지를 검사할 수 있다. 도 5에 도시된 바와 같이, 전송 단은 수신 단에 의해 리턴된 확인 응답 패킷의 SACK 옵션에 기초하여, 수신 단에 의해 어떤 패킷이 수신되었는지, 수신 단에 의해 어떤 패킷이 수신되지 않았는지를 알 수 있다. 이 경우, 전송 단은 누적된 확인 응답을 따르는 모든 패킷을 송신하는 것이 아니라, 유실된 패킷 만을 재전송할 필요가 있다.
TCP는 재전송 메커니즘을 이용하여 신뢰할 수 있는 데이터 전송을 보장할 수 있지만, 재전송은, 특히 네트워크 전송 지연이 비교적 길 때 네트워크 혼잡을 악화시킬 수도 있다. 네트워크 혼잡 문제를 해결하기 위해, TCP는 혼잡 제어 알고리즘을 도입했다. 혼잡 제어 알고리즘은 주로 (1) 느린 시작(Slow Start) 알고리즘; 및 (2) 혼잡 회피(Congestion Avoidance) 알고리즘을 포함한다. 느린 시작 알고리즘의 원리는 다음과 같다:
(1) TCP 연결이 수립된 후, 혼잡 윈도우는 cwnd = 1(cwnd는 Congestion Window의 줄임말임)로 초기화되고, 하나의 패킷 또는 하나의 MSS(Maximum Segment Size) 데이터가 송신될 수 있음을 나타낸다.
(2) ACK가 수신될 때마다, 선형 성장을 나타내는 cwnd++를 수행한다.
(3) RTT가 만료될 때마다, cwnd = cwnd * 2를 수행한다.
구체적으로, 도 6에 도시된 바와 같이, cwnd는 1에서 2로 증가한 다음 2에서 4로 증가하여 기하 급수적인 증가를 나타낸다. 확실히, cwnd가 무한대로 증가하는 것은 불가능하다. 따라서, 전송 단은 혼잡 윈도우의 상한을 나타내는 느린 시작 임계 치(slow start threshold) ssthresh를 추가로 설정한다. cwnd >= ssthresh인 경우, "혼잡 회피 알고리즘"이 효과를 발휘한다. 일반적으로 ssthresh의 값은 65535 바이트이다. cwnd가이 값에 도달하면 혼잡 회피 알고리즘이 트리거된다. 일반적인 혼잡 회피 알고리즘은 다음과 같다:
(1) ACK가 수신된 때, cwnd = cwnd + 1/cwnd를 수행하고;
(2) RTT가 만료될 때마다, cwnd = cwnd + 1을 수행한다.
이러한 방식으로, 패킷이 지나치게 빠르게 증가하여 네트워크 혼잡을 일으키는 것을 방지할 수는 있지만, 패킷은 네트워크의 최적 값으로 조정될 때까지 느리게 증가한다.
또한, 데이터 전송 과정에서 패킷 유실이 발생하면, 타임 아웃 기반 재전송 또는 고속 재전송이 필연적으로 트리거되고, 유실 패킷을 재전송 할 때, 전송 단은 패킷 유실에 기초하여 네트워크 혼잡이 발생했는지를 결정하고, 이에 따라 혼잡 윈도우 크기를 감소시켜, 패킷을 네트워크게 주입하는 속도를 낮추고, 이에 따라 네트워크 혼잡을 해결한다. 여러 알고리즘에서, 혼잡 윈도우를 감소시키는 특정 방식에 대해 상이한 정의가 제공될 수 있으며, 본 명세서에서는 하나씩 나열되지 않는다는 것을 이해할 수 있다. 또한, 일부 혼잡 방지 알고리즘은 혼잡 윈도우를 감소시키면서 느린 시작 임계 치 ssthresh를 줄이는 데 도움이 된다.
본 발명의 일 실시 예는, 패킷 유실에 대해 재전송 및 패킷 유실 해결 방안에 대해 회피에 기반하여 패킷 전송 방법을 제공한다. 패킷 전송 방법의 기본 원리는 다음을 포함한다: 수신 단은 재전송 패킷이 반복적으로 수신되었다는 것을 전송 단에 알리기 위해, 최초로 수신된 재전송 패킷에 응답하여 확인 응답 패킷의 TCP 헤더에 특별한 정보를 추가하고, 확인 응답 패킷을 전송 단으로 송신하며; 확인 응답 패킷을 수신한 후, 전송 단은 확인 응답 패킷에 포함된 특별 정보에 기초하여, 이러한 패킷 유실이 혼잡으로 인한 패킷 유실이 아니라 무질서한 수신이며, 트리거되는 재전송 및 혼잡 윈도우 회피가 불필요하다고 추론할 수 있다. 이에 기초하여, 전송 단은 혼잡 윈도우 크기 및 느린 시작 임계 치를 보상하여, 다운 링크 처리량을 증가시킬 수 있다. 아래에서는 보다 구체적인 실시 예를 이용하여 본 발명의 기술적 해결 방안에 대해 설명한다.
도 7에 도시된 바와 같이, 본 발명의 일 실시 예는 패킷 전송 방법을 제공한다. 상기 방법은 다음 단계들을 포함한다.
단계(701). 3 가지 핸드 셰이크를 통해 수신 단에 TCP 연결을 수립한 후, 전송 단은 TCP 연결을 이용하여 수신 단에 복수의 패킷(예를 들어, 도 7의 패킷 1 내지 4)을 전송한다.
단계(702). 수신 단은, 전송 단으로부터 패킷을 수신한 후, 확인 응답 패킷(도 7에서 수신 단에서 전송 단으로 향하는 화살표로 도시됨)을 전송 단에 리턴하며, 여기서 리턴된 확인 응답 패킷은 수신 단에 의해 수신된 패킷에 대한 응답이다. 구체적으로 말하면, 패킷이 성공적으로 수신될 때마다, 수신 단은 패킷에 응답하여 대응하는 확인 응답 패킷을 생성하고, 대응하는 확인 응답 패킷을 전송 단으로 송신한다.
선택적으로, 일 실시 예에서, 전송 단에 의해 송신된 패킷의 시퀀스 번호(seq)는 점진적으로 증가한다. 점진적 증가의 진폭은 전송된 패킷의 바이트 수와 관련된다. 예를 들어, 3 가지 핸드 셰이크 이후, 전송 단에서 송신한 처음 두 패킷은 모두 1440 바이트의 길이를 갖고, 첫 번째 패킷의 seq는 초기 값 1이며, 두 번째 패킷의 seq는 1441이다. 이에 따라, 수신 단이 첫 번째 패킷을 정확하게 수신하면, 수신 단은 첫 번째 패킷에 대한 응답으로 확인 응답 패킷을 리턴하여 첫 번째 패킷이 수신되었고 리턴된 응답 패킷의 ack가 두 번째 패킷의 seq, 즉 1441임을 나타낸다. 전송 단이 후속 패킷을 전송할 때, 수신 단에 의해 리턴된 확인 응답 패킷의 패킷 seq 변경 및 ack 변경은 그 유추에 의해 도출될 수 있다. 또한, seq 및 ack의 정의에 대해서는, 도 3 및 관련 실시 예를 참조할 수 있고, 상세한 내용은 여기서 다시 설명되지 않는다.
선택적으로, 단계(701) 후, 전송 단은 후속 패킷 유실 검출을 위해, 송신된 패킷의 최대 시퀀스 번호를 추가로 기록할 수 있다.
단계(703). 패킷 유실 검출 알고리즘에 기초하여, 제1 패킷이 유실되었다고 판단한 후, 전송 단은 유실된 제1 패킷을 즉시 재전송하고, 혼잡 회피 알고리즘을 트리거하여 혼잡 윈도우 및/또는 느린 시작 임계 치를 감소시킨다. 재전송되는 제1 패킷(즉, FR3)은 재전송 패킷이라고도 하며, 재전송 패킷 FR3의 시퀀스 번호는 제1 패킷에 포함된 시퀀스 번호와 동일하다.
단계(705). 재전송 패킷 FR3을 최초로 수신한 후, 수신 단은 재전송 패킷에 대응하는 제1 확인 응답 패킷을 즉시 구성하고, 제1 확인 응답 패킷을 전송 단으로 송신한다. 제1 확인 응답 패킷은 반복 지시 필드를 포함하고, 반복 지시 필드는 제1 패킷이 반복적으로 수신되었음을 나타내기 위해 사용된다. 여기서 설명되는 "즉시"는, 재전송 패킷 FR3이 수신된 후 적절한 처리 시간 간격 내에 있는 것을 의미하며, 시간 간격은 0보다 크거나 같고, 제1 패킷에 대한 타임 아웃 타이머의 주기보다 작거나 훨씬 더 짧다. 예를 들어, 제1 패킷에 대응하는 타임 아웃 타이머의 주기가 T인 경우, 소정의 시간 간격은 T보다 작거나, T/2보다 작거나, 또는 T/4보다 작아야 한다. 바람직하게, 소정의 시간 간격은 0 또는 0에 가까우며, 이는 수신 단이 재전송 패킷 FR3을 수신할 때 거의 동시에 제1 확인 응답 패킷을 송신한다는 것을 의미한다.
구체적으로, 일 실시 예에서, 재전송 패킷 FR3을 최초로 수신하기 전에, 수신 단은 (제1 패킷의 시퀀스 번호와 동일한 시퀀스 번호를 갖는) 재전송 패킷 FR3과 시퀀스 번호가 동일한 패킷을 수신하지 못한다. 다시 말해서, 제1 확인 응답 패킷은 수신 단이 제1 패킷의 시퀀스 번호와 동일한 시퀀스 번호를 갖는 패킷을 최초로 수신할 때 수신 단에 의해 송신된다.
단계(707). 전송 단은 제1 확인 응답 패킷을 수신하고, 제1 확인 응답 패킷에 포함된 반복 지시 필드에 기초하여 혼잡 윈도우를 보상한다. 구체적으로, 전송 단은, 반복 지시 필드의 패킷 시퀀스 번호에 기초하여, 제1 패킷이 혼잡으로 인한 유실이 아니라 무질서하게 수신되었고, 제1 패킷의 유실로 인해 트리거되는 재전송 및 혼잡 윈도우 회피가 불필요하다고 추론할 수 있다. 따라서, 전송 단은 혼잡 윈도우 크기를 증가시킨다. 선택적으로, 일 실시 예에서, 전송 단은 또한, 혼잡 윈도우 크기를 증가시키면서 느린 시작 임계 치도 증가시킨다.
단계(703)에서, 전송 단에 의해 이용될 수 있는 복수의 패킷 유실 검출 알고리즘이 존재한다. 예를 들어 도 4에 도시된 고속 재전송 메커니즘을 이용하면, 전송 단이 동일한 ack 값을 갖는 N 개(일반적으로 N = 3) 또는 더 많은 확인 응답 패킷을 수신하면, N 개의 확인 응답 패킷의 ack에 기초하여, 시퀀스 번호가 동일한 ack 값에 1을 더한 제1 패킷이 손실되었다고 결정될 수 있다. 다른 예에서, 다른 실시 예에서, 전송 단과 수신 단이 모두 SACK 기능을 인에이블하면, 수신 단에 의해 리턴된 확인 응답 패킷은 수신 버퍼 내의 패킷의 정보를 나타내기 위해 추가적인 SACK 옵션을 포함한다. 수신 버퍼는 수신된 패킷을 임시 저장하기 위해 사용된다. SACK 옵션은 TCP 헤더의 옵션 필드에 위치한다. 도 8은 SACK 옵션의 포맷을 도시한다. SACK 옵션은 하나 이상의 블록(Block)을 포함하고, 각 블록은 수신 단에 의해 수신된 불연속 블록의 경계를 나타낸다. 예를 들어, 제1 블록의 좌측 에지는 불연속 블록의 제1 패킷 세그먼트의 시퀀스 번호이고, 제1 블록의 우측 에지는 불연속 블록의 최종 패킷 세그먼트의 시퀀스 번호를 따르는 시퀀스 번호이다. SACK 옵션은 가변 길이이며 각 블록은 32 바이트를 차지한다. 전체 TCP 옵션의 길이가 40 바이트를 초과하지 않기 때문에, SACK은 최대 4 개의 블록을 포함하며, 이것은 4 개의 경계 값 그룹을 의미한다. SACK 옵션은 수신 단에서 생성되어 전송 단에 통보된다. 전송 단은 이 정보에 기초하여 유실된 패킷을 결정하고 유실된 패킷을 재전송할 수 있다.
선택적으로, 단계(703)에서, 전송 단은 제1 패킷에 대한 타임 아웃 타이머가 만료된 후 타임 아웃 기반 재전송을 대안적으로 시작하여 제1 패킷을 재전송할 수 있다. 타임 아웃 기반 재전송에 대한 구체적인 구현 내용에 대해서는 전술한 실시 예를 참조할 수 있다. 일반적으로 프로토콜 스택에 의해 모든 패킷에 대해 설정된 타임 아웃 타이머 기간은 동일하다. 즉, 모든 패킷은 동일한 타임 아웃 타이머 기간을 가진다.
이와 유사하게, 단계(703)에 대한 복수의 혼잡 회피 알고리즘이 존재한다. 일 실시 예에서, 제1 패킷의 손실이 타임 아웃 기반 재전송으로 이어진다면, 전송 단은 느린 시작 임계 치를 cwnd/2로 감소시킨 다음 cwnd를 1로 설정하여 느린 시작 프로세스에 다시 진입할 수 있다. 다른 실시 예에서, ACK에 기초하여, 제1 패킷이 유실되었다고 판단하고 고속 재전송을 시작한 후, 전송 단은 혼잡 윈도우를 절반으로 감소시키고 느린 시작 임계 치를 갱신된 혼잡 윈도우 크기로 설정할 수 있다. 다른 실시 예에서, 대안적으로, 제1 패킷이 유실되었다고 판단한 후, 전송 단은 혼잡 윈도우를 1/2, 1/3 또는 다른 적절한 값으로 감소시킬 수 있지만 느린 시작 임계 치는 조정하지 않을 수 있다. 여러 혼잡 회피 알고리즘들에 대해, 혼잡 윈도우 및 느린 시작 임계 치를 감소시키기 위한 진폭 및 방식은 다양하지만, 모두 패킷 유실 시의 회피 원리에 기초한다는 점을 이해할 수 있다. 즉, 네트워크 패킷 유실이 발생했다고 판단한 후, 전송 단은 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 능동적으로 감소시킨다.
혼잡 회피 알고리즘에 관한 구체적인 구현 내용에 대해서는 도 6 및 관련 실시 예를 참조할 수 있고, 상세한 내용은 여기서 다시 설명되지 않는다.
단계(705)에서, 수신된 재전송 패킷의 시퀀스 번호와 현재 수신되어 일시적으로 저장된 패킷의 시퀀스 번호에 기초하여, 수신 단은 재전송 패킷이 최초로 수신되었는지 여부를 결정한다.
선택적으로, 일 실시 예에서, 단계(705)의 반복 지시 필드는 제1 패킷의 시퀀스 번호를 포함한다. 다른 실시 예에서, 반복 지시 필드는 시퀀스 번호 및 제1 패킷의 길이(일반적으로 바이트로 설명됨)를 모두 포함할 수 있다.
선택적으로, 일 실시 예에서, 전송 단과 수신 단이 모두 SACK 옵션을 인에이블 한 경우, 반복 지시 필드는 제1 확인 응답 패킷의 SACK 옵션에 위치한다. 바람직하게는, 반복 지시 필드는 제1 확인 응답 패킷 내의 SACK 옵션의 제1 블록(Block)에 위치할 수 있다. 블록은 DSACK(Duplicate SACK) 블록이라고도 지칭될 수 있으며, 수신 단에서 수신한 복제 패킷을 전송 단에 보고하기 위해 사용된다. 예를 들어, 수신 단은 제1 패킷의 시퀀스 번호를 포함하는 필드를 능동적으로 구성하고, 해당 필드를 제1 확인 응답 패킷의 SACK 옵션의 첫 번째 블록에 삽입한다. 삽입 후, 제1 확인 응답 패킷의 SACK 옵션이 최대 한계(4 블록)를 초과하면 마지막 블록이 삭제된다.
다른 실시 예에서, 반복 지시 필드는 제1 확인 응답 패킷의 헤더 내의 다른 비어있는 필드(field)에 위치한다. 다른 실시 예에서, 대안적으로, 반복 지시 필드 및 제1 확인 응답 패킷의 헤더 내의 기존 필드는 동일한 필드를 사용할 수 있다. 예를 들어, ack 필드에 의해 점유된 32 바이트를 갖는 필드에서, 반복 지시 필드에 몇 바이트가 할당될 수 있다.
본 발명의 본 실시 예에서 제공되는 패킷 전송 방법에서, 한 번만 수신된 재전송 패킷에 대해, 수신 단은 재전송 패킷에 대한 응답으로, 재전송 패킷의 시퀀스 번호를 포함하는 반복 지시 필드를 확인 응답 패킷의 헤더에 추가하고, 확인 응답 패킷을 전송 단에 송신하여, 재전송 패킷이 반복적으로 수신되었다는 것을 믿도록 전송 단을 "기만"하고, 반복 지시 필드를 포함하는 확인 응답 패킷을 수신한 후, 반복 지시 필드에 기록된 시퀀스 번호에 기초하여, 전송 단은 시퀀스 넘버를 갖는 패킷의 이전 재전송으로 인해 혼잡 윈도우 회피가 불필요하다는 것을 추론하고, 이에 기초하여, 전송 단은 혼잡 윈도우 크기 및/또는 늦은 시작 임계 치를 보상한다.
아래의 표는 네트워크 환경에서 본 발명의 본 실시 예에서 제공되는 패킷 전송 방법을 테스트한 결과를 나타낸다. 본 발명의 본 실시 예에서 제공하는 패킷 전송 방법은 무선 네트워크 시나리오에서 사용되며, 이동 단말의 다운 링크 처리량은 약 30 % 증가한다.
Figure pct00001
또 다른 시나리오에서, 전송 단 및 수신 단 모두 타임스탬프 옵션(Timestamp Option)을 인에이블하면, 각각의 TCP 패킷은 2 개의 타임스탬프 필드(TSval 및 TSecr)를 포함한다. 일반적으로 TSval과 TSecr의 길이는 모두 32 비트입니다. TSval은 전송 단이 TCP 패킷을 송신하는 타임 스탬프를 나타내기 위해 사용되며, TCP 패킷에 대한 응답으로 ACK를 송신하는 경우, 수신 단은 TCP 패킷에 대한 응답으로 ACK를 송신하는 경우 TCP 패킷의 TSval 값을 ACK 내의 TSecr 필드에 에코(echo)한다. TCP 연결은 양방향이기 때문에, 수신 단은 ACK에 TSecr을 에코할 때 TSval 필드에 현재 타임스탬프를 넣는다. 타임스탬프는 시간에 따라 단조롭게 점진적으로 증가하는 값이다. 수신 단은 단순히 ACK에 TSval을 에코할 필요만 있으므로, 통신 양측 모두 시간 동기화를 수행할 필요가 없다. 구체적으로, 도 9에 도시된 바와 같이, 전송 단은 시퀀스 번호 30 내지 34의 5 개 패킷을 수신 단에 송신한다. 각 패킷의 TSval은 패킷의 전송 타임 스탬프 10을 나타낸다. 이에 대응하여, 패킷이 수신된 후 매번, 수신 단은 패킷에 대한 응답으로 ACK를 전송 단으로 송신하고, ACK의 TSecr 필드를 패킷의 TSval 값 10으로 채운다. ACK의 TSval 필드는 수신 단이 이 ACK를 송신할 때의 타임 스탬프 5를 나타낸다.
또한, 전송 단과 수신 단이 모두 타임스탬프 옵션을 인에이블하는 시나리오에서, 도 7과 관련된 실시 예에서 설명된 패킷 전송 방법의 원리에 기초하여, 본 발명의 일 실시 예는 다른 패킷 전송 방법을 제공하며, 이것은 도 11에 도시된 바와 같이 다음 단계들을 포함한다.
단계(S1). 수신된 확인 응답 패킷에 기초하여, 패킷이 유실되었다고 판단한 후, 전송 단은 유실된 패킷을 재전송하고, 혼잡 윈도우 및/또는 느린 시작 임계 치를 감소시킨다. 도 9에 도시된 바와 같이, 전송 단은, ack=31인 복수의 확인 응답 패킷을 수신하고, 시퀀스 번호 31을 갖는 패킷이 유실되었다고 판단한다. 또한, 도 10에 도시된 바와 같이, 전송 단은 시퀀스 번호 31을 갖는 패킷을 즉시 재전송한다. 재전송 패킷의 시퀀스 번호는 변경되지 않지만, 전송 타임스탬프 TSval은 12로 갱신된다(최초로 시퀀스 번호를 갖는 패킷을 송신하는 타임스탬프는 10이다). 또한, 시퀀스 번호 31을 갖는 패킷을 재전송하는 경우, 전송 단은 시퀀스 번호 35 내지 37을 갖는 패킷을 송신하는 것을 계속할 수도 있다.
단계(S2). 전송 단에 의해 송신된 재송신 패킷(예를 들어, 도 10의 시퀀스 번호 31을 갖는 패킷)을 최초로 수신한 후, 수신 단은 재전송 패킷의 타임스탬프 옵션에서 TSval 필드를 판독하고, 여기서 TSval 필드의 값은 TSrexmit 이고. 재전송 패킷의 전송 타임스탬프를 나타내기 위해 사용된다. 도 10에 도시된 실시 예에서, 재전송 패킷의 TSval 필드의 값은 12, 즉, TSrexmit = 12이고, 이것은 재전송 패킷의 전송 타임스탬프가 12임을 나타낸다.
단계(S3). 수신 단은 시퀀스 번호가 재전송 패킷의 시퀀스 번호의 직전 및 직후인 패킷의 타임스탬프 옵션에서 Tsval 필드 값을 판독하고, 여기서 Tsval 값은 각각 TSbefore 및 TSafter 로 표시되고, TSbefore <= TSafter 이며; 다음으로 스퀴즈 이론(squeeze theorem) 또는 다른 유사한 알고리즘에 기초하여 TSxmit 으로 표시되는 근사적 TSval 값을 계산하고, 이것은 TSrexmit 보다 작다. 근사적 TSval 값은 TSbefore <= TSxmit <= TSafter 를 참으로 유지한다. 예를 들어, 도 10에 도시된 바와 같이, 수신 단은 시퀀스 번호가 30 및 32인 패킷의 TSval 값 10에 기초하여 TSxmit = 10임을 판단한다.
단계(S4). 수신 단은 TCP 프로토콜 명세에 따라 재전송 패킷에 대한 응답으로 확인 응답 패킷을 생성하며, 여기서 생성된 확인 응답 패킷의 TSecr 필드 값은, 재전송 패킷의 실제 전송 타임스탬프 대신에 계산된 근사적 TSval 값 TSxmit 으로 설정된다. 즉, 수신 단은 재전송 패킷의 타임스탬프를 위조한다. 도 10에 도시된 바와 같이, 재전송 패킷에 해당하는 확인 응답 패킷의 TSecr 필드 값은 10으로 설정된다. 따라서, 상기 확인 응답 패킷에 위조된 타임스탬프에 기초하여, 전송 단은: 확인 응답 패킷이 이전에 유실된 것으로 판단된 패킷(시퀀스 번호 31 및 전송 타임스탬프 10을 갖는 도 9의 패킷)에 대한 응답인 것이고, 이전에 패킷이 유실되었다고 판단하는 것은 오판이며, 따라서 혼잡 윈도우 회피 또한 불필요하다고 결정한다. 따라서, 전송 단은 혼잡 윈도우를 보상한다.
단계(S5). 수신 단은 생성된 확인 응답 패킷을 전송 단으로 송신한다.
단계(S6). 단계(S5)에서 생성된 확인 응답 패킷을 수신한 후, 확인 응답 패킷의 TSecr 필드에 기록된 타임스탬프에 기초하여, 전송 단은 이 확인 응답 패킷이, 재전송 패킷이 아니라, 동일한 시퀀스 번호를 갖는 이전에 송신된 패킷에 대한 응답이고(즉, 이 시퀀스 번호를 갖는 패킷은 유실된 것이 아니다), 이 시퀀스 번호를 갖는 패킷의 결정된 유실로 인해 트리거되는 재전송 및 혼잡 윈도우 회피가 불필요하다는 것을 추론하고; 이에 기초하여, 전송 단은 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 보상한다.
본 발명의 본 실시 예에서 제공되는 패킷 전송 방법에서, 한 번만 수신된 재전송 패킷에 대해, 수신 단은 재전송 패킷이 반복적으로 수신되었다고 믿도록 전송 단을 "기만"하는 타임스탬프 옵션을 위조하고, 전송 단은 시퀀스 넘버를 갖는 패킷의 이전의 재송신으로 인해 혼잡 윈도우 회피가 불필요하다고 추론하고, 이에 기초하여, 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 보상하고, 도 7에 도시된 패킷 전송 방법과 유사한 효과를 달성한다.
도 7 또는 도 11에 관련된 실시 예에서 설명되는 패킷 전송 방법에서, 수신 단에 의해 수행되는 동작들은 단말, 서버, 또는 네트워크 디바이스에 의해 구현될 수 있음을 알아야 한다.
일 실시 예에서, 도 7 또는 도 11에 관련된 실시 예에서 설명되는 전송 기능은 제1 어플리케이션 프로그램 서버(20)의 TCP/IP 프로토콜 스택에 의해 구현되며, 수신 단의 기능은 단말(110)의 TCP/IP 프로토콜 스택에 의해 구현된다. 단말(110)의 TCP/IP 프로토콜 스택은 소프트웨어, 하드웨어 및/또는 펌웨어의 적절한 조합에 의해 단말(110) 상에서 실행될 수 있다. 예를 들어, 가능한 구현 예에서, TCP/IP 프로토콜 스택은 실행 가능한 프로그램의 형태로 메모리에 저장될 수 있다. 단말(110)의 프로세서는 TCP/IP 프로토콜 스택에 대응하는 실행 가능한 프로그램을 실행하여, 방법 실시 예에서 설명된 수신 단의 일부 또는 모든 단계들을 수행한다. 다른 가능한 구현 예에서, TCP/IP 프로토콜 스택은, FPGA(field programmable gate array) 또는 ASIC(Application-Specific Integrated Circuit)과 같은 전용 칩 또는 하드웨어 회로에 의해 구현될 수 있다. TCP 하드웨어 회로 또는 전용 칩에 의해 전술한 방법 단계들을 수행하는 것에 관한 관련 세부 내용에 대해서는 전술한 실시 예를 참조할 수 있으며, 상세한 내용은 여기에서 반복하지 않는다.
다른 실시 예에서, 도 7 또는 도 11에 관련된 실시 예에서 설명되는 수신 단의 기능은 제1 어플리케이션 프로그램 서버(20)의 TCP/IP 프로토콜 스택에 의해 구현되며, 수신 단의 기능은 단말(110)의 TCP/IP 프로토콜 스택에 의해 구현된다. 관련된 구현 내용에 대해서는 전술한 실시 예를 참조할 수 있으며, 상세한 내용은 여기에서 다시 설명되지 않는다.
본 발명의 본 실시 예에서 설명된 패킷 전송 방법은 네트워크 디바이스에도 또한 적용될 수 있음을 이해할 수 있다. 네트워크 디바이스는 액세스 포인트 또는 라우터이고, 전송 단과 수신 단 사이에서 패킷을 포워딩한다.
도 12에 도시된 바와 같이, 타임스탬프 옵션이 인에이블된 시나리오에서, 네트워크 디바이스는, 전송 단에 의해 송신된 (재전송 패킷을 포함하는) 패킷을 수신 단에 포워딩하고, 재전송 패킷을 수신한 후 수신 단은 재전송 패킷에 대한 응답으로 확인 응답 패킷을 생성하고, 확인 응답 패킷을 리턴한다. 확인 응답 패킷이 네트워크 디바이스를 통과하는 경우, 네트워크 디바이스는 도 11의 단계(S3)에서 설명된 방식으로 근사적 TSval 값을 계산한 다음, 확인 응답 패킷의 현재 TSecr 값을 계산된 근사적 TSval 값으로 대체하고(도 12에 도시된 바와 같이, 재전송 패킷에 대한 ACK의 TSecr은 12에서 10으로 변경됨), 최종적으로, 갱신된 확인 응답 패킷을 송신한다. 갱신된 확인 응답 패킷을 수신한 후, 전송 단은 이 확인 응답 패킷의 갱신된 TSecr 필드 값에 기초하여 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 보상한다. 근사적 TSval 값을 계산하는 것에 관련된 구현 내용에 대해서는 도 11에 관련된 실시 예를 참조할 수 있고, 상세한 내용은 다시 설명되지 않는다.
이와 유사하게, SACK 옵션이 인에이블된 시나리오에서, 재전송 패킷에 대한 응답으로 확인 응답 패킷을 수신 및 리턴한 후, 네트워크 디바이스는 도 7의 단계(705)에서 설명된 방법을 또한 이용하여, 반복 지시 필드를 확인 응답 패킷에 추가한 다음, 확인 응답 패킷을 전송 단에 포워딩할 수 있고, 전송 단은 또한 반복 지시 필드에 기초하여 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 보상한다. 반복 지시 필드를 설정하는 것에 관련된 구현 내용에 대해서는 도 7에 관련된 실시 예를 참조할 수 있고, 상세한 내용은 다시 설명되지 않는다.
도 13에 도시 된 바와 같이, 본 발명의 일 실시 예는 단말(300)을 추가로 제공한다. 도 13에 따르면, 단말(300)은 어플리케이션 프로세서(310), 메모리(320), 통신 서브 시스템(330) 및 전력 관리 서브 시스템(340)을 포함한다. 메모리(320)는 실행 가능한 프로그램을 저장한다. 실행 가능한 프로그램은 운영 체제, 프로토콜 스택 프로그램 및 어플리케이션 프로그램을 포함한다. 전력 관리 서브 시스템(340)은 시스템에 전력을 공급하도록 구성되며, 특히 전력 관리 칩일 수 있다.
통신 서브 시스템(330)은 단말(300)의 기본 통신 유닛이다. 일 실시 예에서, 통신 서브 시스템(130)은 무선 모뎀(Modem)이며, 주로 기저 대역 처리, 변조, 복조, 신호 증폭 및 필터링 및 밸런싱과 같은 기능을 수행한다. 통신 서브 시스템(330)은 기저 대역 프로세서(331), 무선 주파수 모듈(332) 및 안테나(333)를 포함한다. 기저 대역 프로세서(331) 및 어플리케이션 프로세서(333)는 하나의 칩으로 통합될 수 있다. 다른 실시 예에서, 기저 대역 프로세서(331) 및 어플리케이션 프로세서(310)는 개별적으로 배치될 수 있다: 기저 대역 프로세서(331) 및 어플리케이션 프로세서(310)는 코어 간 통신 모드에서 정보를 교환하기 위해 2 개의 개별 칩으로서 동작한다. 이러한 별도의 배치 방식에서, 기저 대역 프로세서(331)는 어플리케이션 프로세서(310)의 주변 장치와 동등하다. 2 개의 프로세서는 각각 독립적인 외부 메모리 및 각각 독립적인 소프트웨어 업그레이드 인터페이스를 필요로 한다.
무선 주파수 모듈(332)은 주로 신호 송신 및 수신을 담당한다. 기저 대역 프로세서(331)는 신호 처리, 예를 들어 신호의 A/D 또는 D/A 변환, 신호 코딩 및 디코딩 및 채널 코딩 및 디코딩을 담당한다. 기저 대역 프로세서(331)는 하나 이상의 무선 통신 표준을 지원한다. 여기서의 무선 통신 표준은 GSM, CDMA 1x, CDMA2000, WCDMA, HSPA, LTE 등을 포함하지만 이에 한정되지 않는다. 일 실시 예에서, 무선 주파수 모듈(332)은 무선 주파수 수신 및 송신, 주파수 합성 및 전력 증폭과 같은 기능을 수행하는 무선 주파수 회로를 포함한다. 무선 주파수 회로는 무선 주파수 칩에 패키징될 수 있다. 다른 실시 예에서, 무선 주파수 모듈(332) 및 기저 대역 프로세서(131)에 포함된 무선 주파수 회로들의 일부 또는 전부는 기저 대역 칩에 공동으로 통합된다.
메모리(320)는 일반적으로 메모리 및 외부 저장 장치를 포함한다. 메모리는 RAM(random access memory), ROM(read-only memory), CACHE(high-speed cache) 등일 수 있다. 외부 저장 장치는 하드 디스크, 광 디스크, USB 디스크, 플로피 디스크, 테이프 드라이브 등일 수 있다. 실행 가능한 프로그램은 대개 외부 저장 장치에 저장된다. 어플리케이션 프로세서(310)는 외부 저장 장치로부터 실행 가능한 프로그램을 메모리에 로드한 다음, 해당 프로그램을 실행한다.
선택적으로, 단말(300)은 Wi-Fi(Wireless Fidelity) 모듈(350)을 더 포함한다. Wi-Fi 모듈(350)은 IEEE 802.11 프로토콜 시리즈를 지원한다. 단말(300)은 Wi-Fi 모듈(350)을 이용하여 WLAN(wireless local area network)에 연결할 수 있다. 일 실시 예에서, Wi-Fi 모듈(350)은 Wi-Fi 칩일 수 있으며, 버스를 이용하여 어플리케이션 프로세서(310)와 통신할 수 있다. 다른 실시 예에서, Wi-Fi 모듈(350)은 통신 서브 시스템(330), 예를 들어 기저 대역 프로세서(331)에 통합될 수 있다.
통신 서브 시스템(330) 및 Wi-Fi 모듈(350)은 모두 외부로부터 데이터를 수신하거나 단말(300)의 데이터를 외부 디바이스로 송신한다는 것을 이해할 수 있다. 단말(300)은 일반적으로 셀룰러 네트워크 액세스 및 WLAN 액세스 모두를 지원하기 위해 통신 서브 시스템(330) 및 Wi-Fi 모듈(350)을 모두 포함한다. 그러나, 비용 또는 다른 인자를 고려하여, 단말(300)은 통신 서브 시스템(300) 및 Wi-Fi 모듈(350) 중 하나만을 포함할 수 있다.
선택적으로, 단말(300)은 사용자에 의해 입력된 정보 또는 사용자에 제공된 정보, 단말(300)의 다양한 메뉴 인터페이스 등을 디스플레이하는 디스플레이(360)를 더 포함한다. 디스플레이(360)는 액정 디스플레이(Liquid Crystal Display, LED), 유기 발광 다이오드(Organic Light-Emitting Diode, OLED) 등일 수 있다. 일부 다른 실시 예에서, 터치 패널은 터치 디스플레이 스크린을 형성하기 위해 디스플레이(360)를 덮을 수 있다.
또한, 단말(300)은 사진을 찍거나 비디오를 촬영하는 카메라(380) 및 중력 센서, 가속 센서 또는 광 센서와 같은 하나 이상의 센서(370)를 더 포함할 수 있다.
또한, 해당 기술 분야의 통상의 지식을 가진 자는 단말(300)이 도 13에 도시 된 구성 요소들보다 더 적거나 더 많은 구성 요소들을 포함할 수 있음을 이해할 수 있다. 도 13에 도시된 단말은 본 명세서의 실시 예에 개시된 복수의 실시 예에 더 관련된 구성 요소만을 포함한다.
구체적으로, 도 13에 도시된 바와 같이, 메모리(320)에 저장된 실행 가능한 프로그램은 운영 체제, 프로토콜 스택 프로그램 및 어플리케이션 프로그램을 포함한다. 일부 시나리오에서, 프로토콜 스택 프로그램은 독립 실행형 프로그램이다. 운영 체제는 패킷 처리를 위해 인터페이스를 사용하여 프로토콜 스택을 호출한다. 일부 시나리오에서, 대안적으로, 프로토콜 스택 프로그램은 운영 체제 커널의 일부로서 작동하도록 운영 체제에 포함될 수도 있다. 프로토콜 스택 프로그램은 프로토콜 계층 또는 기능에 따라 복수의 모듈로 분류될 수 있다. 각 모듈은 하나의 프로토콜 계층의 기능을 구현한다. 예를 들어 네트워크 계층 모듈은 네트워크 계층 프로토콜(예컨대, IP 프로토콜)을 구현하며, 전송 계층 모듈은 전송 계층 프로토콜(예컨대, TCP 프로토콜 또는 UDP 프로토콜)을 구현한다. 통신 서브 시스템(330) 또는 Wi-Fi 모듈(350)이 패킷을 수신 한 후, 단말(300)의 하드웨어 드라이버는 패킷을 버퍼 큐에 추가하고, 운영 체제에 통지하며; 운영 체제는 시스템 호출 인터페이스를 이용하여 프로토콜 스택의 모든 모듈을 스케줄링하여, 도 7 또는 도 11과 관련된 실시 예에서 설명된 작업 프로세스를 수행한다.
본 발명의 본 실시 예에서 사용되는 "실행 가능한 프로그램"이라는 용어는 인스트럭션, 인스트럭션 세트, 코드, 코드 세그먼트, 서브 프로그램, 소프트웨어 모듈, 어플리케이션, 소프트웨어 패키지, 스레드, 프로세스, 함수, 펌웨어, 미들웨어 등을 포함하지만 이에 한정되는 것은 아닌 것으로 넓게 설명되어야 한다.
본 발명의 일 실시 예는 네트워크 디바이스(400)를 제공한다. 도 14에 도시된 바와 같이, 네트워크 디바이스(400)는 처리 회로(402), 처리 회로(402)에 연결된 통신 인터페이스(404) 및 저장 매체(406)를 포함한다.
프로세싱 회로(402)는 데이터를 처리하고, 데이터 액세스 및 저장을 제어하고, 명령을 전송하고, 동작을 수행하기 위해 다른 구성 요소를 제어한다. 프로세싱 회로(402)는 하나 이상의 프로세서, 하나 이상의 컨트롤러 및/또는 프로그램을 실행하도록 구성될 수 있는 다른 구조로서 구현될 수 있다. 프로세싱 회로(402)는 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC) 및 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그램 가능한 논리 컴포넌트 중 적어도 하나를 구체적으로 포함할 수 있다. 범용 프로세서는 마이크로 프로세서 및 임의의 종래의 프로세서, 제어기, 마이크로 프로세서 또는 상태 기계를 포함할 수 있다. 프로세싱 회로(302)는 DSP 및 마이크로 프로세서의 조합과 같은 컴퓨팅 구성 요소로서 구현될 수 있다.
저장 매체(406)는 자기 저장 장치(예를 들어, 하드 디스크, 플로피 디스크 또는 자기 스트라이프 카드), 광학 저장 매체(예를 들어,DVD(digital versatile disc)), 스마트 카드, 플래시 메모리 디바이스, RAM, ROM, 프로그램 가능 ROM(PROM), 소거 가능 ROM(EPROM), 레지스터, 또는 임의의 조합과 같은 컴퓨터로 판독 가능한 저장 매체를 포함할 수 있다. 저장 매체(406)는 프로세싱 회로(402)에 결합되어, 프로세싱 회로(402)가 정보를 판독하고 저장 매체(406)에 정보를 기록할 수 있다. 특히, 저장 매체(406)는 프로세싱 회로(402)에 통합될 수 있다. 저장 매체(406) 및 프로세싱 회로(402)는 별개일 수있다.
통신 인터페이스(404)는 단말(400) 및 (라우터, 스위치 또는 액세스 포인트와 같은) 하나 이상의 무선 네트워크 디바이스와의 양방향 통신을 구현하기 위한 회로 및/또는 프로그램을 포함할 수 있다. 통신 인터페이스(404)는 적어도 하나의 수신 회로(416) 및/또는 적어도 하나의 전송 회로(418)를 포함한다. 일 실시 예에서, 전체 통신 인터페이스(404) 또는 통신 인터페이스(404)의 일부는 무선 모뎀에 의해 구현될 수 있다.
일 실시 예에서, 저장 매체(406)는 프로토콜 스택 프로그램(420)을 저장한다. 프로세싱 회로(402)는 저장 매체(406)에 저장된 프로토콜 스택 프로그램(420)을 실행하여 프로토콜 스택의 기능을 구현한다. 프로토콜 스택은 특히 도 7 또는 도 11과 관련된 실시 예의 일부 또는 모든 단계를 구현한다.
전술한 실시 예들에서 설명된 패킷 전송 방법에 기초하여, 본 발명의 일 실시 예는 패킷 전송 장치(500)를 더 제공한다. 도 15에 도시된 바와 같이, 패킷 송신 장치(500)는 수신 유닛(501), 프로세싱 유닛(503) 및 송신 유닛(505)을 포함한다. 수신 유닛(501)는 전송 단으로부터 재전송 패킷을 수신한다. 재전송 패킷은, 전송 단이 송신된 제1 패킷이 유실되었다고 결정한 후 전송 단에 의해 재전송되고, 수신 유닛은 재전송 패킷을 최초로 수신한다. 프로세싱 유닛(503)은 재전송 패킷에 응답하여 제1 확인 응답 패킷을 생성한다. 제1 확인 응답 패킷은 반복 지시 필드를 포함하고, 이것은 제1 패킷이 반복적으로 수신되었음을 나타내고 전송 단이 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 증가시키도록 트리거한다. 송신 유닛(505)은 프로세싱 유닛(503)에 의해 생성된 확인 응답 패킷을 전송 단에 송신한다. 프로세싱 유닛(503)에 의해 제1 확인 응답 패킷을 생성하고 송신 유닛(505)에 의해 확인 응답 패킷을 전송하는 것에 대한 구현 세부 내용에 대해서는 도 7 또는 도 11과 관련된 방법 실시 예를 참조할 수 있고, 상세한 내용은 여기서 다시 설명되지 않는다.
본 발명의 실시 예들에서 제공되는 패킷 전송 방법 및 장치가 상세히 설명되었다. 본 발명의 원리 및 구현은 구체적인 예를 사용하여 본 명세서에서 설명되었다. 본 발명의 실시 예에 대한 설명은 본 발명의 방법 및 핵심 사상을 이해하는 것을 돕기 위한 것일 뿐이다. 또한, 해당 기술 분야의 통상의 지식을 가진 자는 본 발명의 사상에 기초한 특정 구현 및 응용 범위의 견지에서 본 발명에 대한 변형 및 수정을 할 수 있다. 따라서, 본 명세서의 내용은 본 발명을 한정하는 것으로 해석되어서는 안된다.

Claims (25)

  1. 단말에 의해, 서버에 의해 송신된 재전송 패킷(retransmitted packet)을 수신하는 단계 - 여기서 상기 재전송 패킷은, 상기 서버가, 송신된 제1 패킷이 유실된 것으로 결정한 후 상기 서버에 의해 재전송되며, 상기 재전송 패킷의 시퀀스 번호는 상기 제1 패킷에 포함된 시퀀스 번호와 동일함 -; 및
    상기 재전송 패킷을 최초로 수신한 경우, 상기 단말에 의해, 상기 최초로 수신된 상기 재전송 패킷에 응답하기 위해 사용되는 제1 확인 응답(acknowledgment) 패킷을 상기 서버에 송신하는 단계 - 여기서 상기 제1 확인 응답 패킷은 반복 지시 필드(repetition indication field)를 포함하고, 상기 반복 지시 필드는 상기 제1 패킷이 반복적으로 수신되었음을 나타내기 위해 사용되고, 상기 서버를 트리거하여 혼잡 윈도우 크기(congestion window size) 및/또는 느린 시작 임계 치(slow start threshold)를 증가시키기 위해 사용됨 - 를 포함하는
    패킷 전송 방법.
  2. 제1항에 있어서,
    상기 제1 확인 응답 패킷은, 시퀀스 번호가 상기 제1 패킷의 시퀀스 번호와 동일한 패킷을 상기 단말이 최초로 수신한 경우, 상기 단말에 의해 송신되는, 패킷 전송 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제1 확인 응답 패킷은 SACK 옵션을 더 포함하고,
    상기 SACK 옵션은, 상기 단말에 의해 수신된 패킷의 시퀀스 번호 정보를 나타내기 위해 사용되는, 패킷 전송 방법.
  4. 제3항에 있어서,
    상기 반복 지시 필드는 상기 제1 패킷의 상기 시퀀스 번호를 포함하고,
    상기 반복 지시 필드는 상기 제1 확인 응답 패킷의 상기 SACK 옵션의 첫 번째 블록에 위치하는, 패킷 전송 방법.
  5. 제3항에 있어서,
    상기 반복 지시 필드는 상기 제1 패킷의 상기 시퀀스 번호를 포함하고,
    상기 반복 지시 필드는 DSACK 블록이고,
    상기 DSACK는, 상기 단말에 의해 반복적으로 수신된 패킷을 상기 서버에 보고하기 위해 사용되는, 패킷 전송 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 단말에 의해, 서버에 의해 송신된 재전송 패킷을 수신하는 단계 전에,
    상기 단말에 의해, 무선 네트워크를 이용하여 상기 서버에 대한 TCP 연결을 수립하는 단계 - 여기서 상기 무선 네트워크는 하나 이상의 액세스 포인트를 포함함 - 를 더 포함하는 패킷 전송 방법.
  7. 단말에 의해, 서버에 의해 송신된 재전송 패킷을 수신하는 단계 - 여기서 상기 재전송 패킷은, 상기 서버가, 송신된 제1 패킷이 유실된 것으로 결정한 후 상기 서버에 의해 재전송되며, 상기 재전송 패킷의 시퀀스 번호는 상기 제1 패킷에 포함된 시퀀스 번호와 동일하고; 상기 재전송 패킷은 상기 재전송 패킷의 전송 타임스탬프를 나타내기 위해 사용되는 TSval 필드를 포함하고, 상기 TSval 필드의 값은 TSrexmit 이고, TSrexmit 은 상기 재전송 패킷의 실제 전송 시간을 나타냄 -; 및
    상기 재전송 패킷을 최초로 수신한 경우, 상기 단말에 의해, 상기 최초로 수신된 상기 재전송 패킷에 응답하기 위해 사용되는 제1 확인 응답 패킷을 상기 서버에 송신하는 단계 - 여기서 상기 제1 확인 응답 패킷은 상기 재전송 패킷의 상기 전송 타임스탬프를 상기 서버에 보고하기 위해 사용되는 TSecr 필드를 포함하고, 상기 TSecr 필드의 값은 TSxmit 으로 설정되고, TSxmit < TSrexmit 임 - 를 포함하는
    패킷 전송 방법.
  8. 제7항에 있어서,
    TSbefore <= TSxmit <= TSafter 이고,
    TSbefore 는 시퀀스 번호가 상기 재전송 패킷의 상기 시퀀스 번호의 직전에 해당하는 패킷의 전송 타임스탬프이고,
    TSafter 는 시퀀스 번호가 상기 재전송 패킷의 상기 시퀀스 번호의 직후에 해당하는 패킷의 전송 타임스탬프인, 패킷 전송 방법.
  9. 제7항 또는 제8항에 있어서,
    상기 단말 또는 상기 서버 모두 TCP 타임스탬프 옵션이 인에이블되고,
    상기 방법은,
    상기 단말에 의해, 상기 서버에 대한 TCP 연결을 수립하는 단계를 더 포함하는 패킷 전송 방법.
  10. 어플리케이션 프로세서, 메모리 및 통신 서브 시스템을 포함하고,
    상기 메모리는 프로토콜 스택 프로그램을 저장하고,
    상기 통신 서브 시스템은 서버에 의해 송신된 재전송 패킷을 수신하고, 상기 재전송 패킷은, 상기 서버가, 송신된 제1 패킷이 유실된 것으로 결정한 후 상기 서버에 의해 재전송되며, 상기 재전송 패킷의 시퀀스 번호는 상기 제1 패킷에 포함된 시퀀스 번호와 동일하고,
    상기 어플리케이션 프로세서는 상기 메모리의 상기 프로토콜 스택 프로그램을 실행하여:
    상기 통신 서브 시스템이 상기 재전송 패킷을 최초로 수신한 경우, 상기 최초로 수신된 상기 재전송 패킷에 응답하기 위해 사용되는 제1 확인 응답 패킷을 생성하고, 상기 제1 확인 응답 패킷은 반복 지시 필드를 포함하고, 상기 반복 지시 필드는 상기 제1 패킷이 반복적으로 수신되었음을 나타내기 위해 사용되고, 상기 서버를 트리거하여 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 증가시키기 위해 사용되고,
    상기 통신 서브 시스템은 상기 생성된 제1 확인 응답 패킷을 추가로 송신하는,
    단말.
  11. 제10항에 있어서,
    상기 통신 서브 시스템은, 시퀀스 번호가 상기 제1 패킷의 시퀀스 번호와 동일한 패킷이 최초로 수신된 경우, 상기 생성된 제1 확인 응답 패킷을 송신하는, 단말.
  12. 제10항 또는 제11항에 있어서,
    상기 제1 확인 응답 패킷은 SACK 옵션을 더 포함하고,
    상기 SACK 옵션은, 상기 단말에 의해 수신된 패킷의 시퀀스 번호 정보를 나타내기 위해 사용되는, 단말.
  13. 제12항에 있어서,
    상기 반복 지시 필드는 상기 제1 패킷의 상기 시퀀스 번호를 포함하고,
    상기 반복 지시 필드는 상기 제1 확인 응답 패킷의 상기 SACK 옵션의 첫 번째 블록에 위치하는, 단말.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 단말은, 하나 이상의 액세스 포인트를 이용하여, 무선 네트워크에 연결하고 상기 서버에 대한 TCP 연결을 수립하는, 단말.
  15. 어플리케이션 프로세서, 메모리 및 통신 서브 시스템을 포함하고,
    상기 메모리는 프로토콜 스택 프로그램을 저장하고,
    상기 통신 서브 시스템은 서버에 의해 송신된 재전송 패킷을 수신하고, 상기 재전송 패킷은, 상기 서버가, 송신된 제1 패킷이 유실된 것으로 결정한 후 상기 서버에 의해 재전송되며, 상기 재전송 패킷의 시퀀스 번호는 상기 제1 패킷에 포함된 시퀀스 번호와 동일하고; 상기 재전송 패킷은 상기 재전송 패킷의 전송 타임스탬프를 나타내기 위해 사용되는 TSval 필드를 포함하고, 상기 TSval 필드의 값은 TSrexmit 이고, TSrexmit 은 상기 재전송 패킷의 실제 전송 시간을 나타내고,
    상기 어플리케이션 프로세서는 상기 메모리의 상기 프로토콜 스택 프로그램을 실행하여:
    상기 통신 서브 시스템이 상기 재전송 패킷을 최초로 수신한 경우, 상기 최초로 수신된 상기 재전송 패킷에 응답하기 위해 사용되는 제1 확인 응답 패킷을 생성하고, 상기 제1 확인 응답 패킷은 상기 재전송 패킷의 상기 전송 타임스탬프를 상기 서버에 보고하기 위해 사용되는 TSecr 필드를 포함하고, 상기 TSecr 필드의 값은 TSxmit 으로 설정되고, TSxmit < TSrexmit 이고,
    상기 통신 서브 시스템은 상기 생성된 제1 확인 응답 패킷을 추가로 송신하는,
    단말.
  16. 제15항에 있어서,
    TSbefore <= TSxmit <= TSafter 이고,
    TSbefore 는 시퀀스 번호가 상기 재전송 패킷의 상기 시퀀스 번호의 직전에 해당하는 패킷의 전송 타임스탬프이고,
    TSafter 는 시퀀스 번호가 상기 재전송 패킷의 상기 시퀀스 번호의 직후에 해당하는 패킷의 전송 타임스탬프인, 단말.
  17. 전송 단(transmit end)과 수신 단(receive end) 사이에서 패킷을 포워딩하는 네트워크 디바이스에 있어서,
    상기 네트워크 디바이스는 프로세싱 회로, 통신 인터페이스 및 저장 매체를 포함하고,
    상기 통신 인터페이스는,
    상기 전송 단에 의해 상기 수신 단으로 송신된 재전송 패킷을 수신하고, 상기 재전송 패킷을 상기 수신 단에 포워딩하고, 상기 재전송 패킷에 대한 응답으로 상기 수신 단의 제1 확인 응답 패킷을 수신하고, 상기 재전송 패킷은, 상기 전송 단이, 송신된 제1 패킷이 유실된 것으로 결정한 후 상기 전송 단에 의해 재전송되며, 상기 재전송 패킷의 시퀀스 번호는 상기 제1 패킷에 포함된 시퀀스 번호와 동일하고; 상기 수신 단이 상기 재전송 패킷을 최초로 수신한 경우 상기 제1 확인 응답 패킷은 상기 수신 단에 의해 송신되고,
    상기 저장 매체는 프로토콜 스택 프로그램을 저장하고, 상기 프로세싱 회로는 상기 저장 매체에 저장된 상기 프로토콜 스택 프로그램을 실행하여:
    상기 제1 확인 응답 패킷에 반복 지시 필드를 추가하여 제2 확인 응답 패킷을 획득하고, 상기 반복 지시 필드는 상기 제1 패킷이 반복적으로 수신되었음을 나타내기 위해 사용되고, 상기 전송 단을 트리거하여 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 증가시키기 위해 사용되고,
    상기 통신 인터페이스는 상기 제2 확인 응답 패킷을 추가로 송신하는,
    네트워크 디바이스.
  18. 제17항에 있어서,
    상기 제1 확인 응답 패킷은, 시퀀스 번호가 상기 제1 패킷의 시퀀스 번호와 동일한 패킷을 상기 수신 단이 최초로 수신한 경우, 상기 수신 단에 의해 송신되는, 네트워크 디바이스.
  19. 제17항 또는 제18항에 있어서,
    상기 제1 확인 응답 패킷 및 상기 제2 확인 응답 패킷 모두는 SACK 옵션을 더 포함하고,
    상기 SACK 옵션은, 상기 수신 단에 의해 수신된 패킷의 시퀀스 번호 정보를 나타내기 위해 사용되는, 네트워크 디바이스.
  20. 제19항에 있어서,
    상기 반복 지시 필드는 상기 제1 패킷의 상기 시퀀스 번호를 포함하고,
    상기 반복 지시 필드는 상기 제2 확인 응답 패킷의 상기 SACK 옵션의 첫 번째 블록에 위치하는, 네트워크 디바이스.
  21. 제19항에 있어서,
    상기 네트워크 디바이스는 액세스 포인트이고,
    상기 수신 단은, 상기 네트워크 디바이스를 이용하여, 무선 네트워크에 연결하고 상기 전송 단에 대한 TCP 연결을 수립하는, 네트워크 디바이스.
  22. 전송 단과 수신 단 사이에서 패킷을 포워딩하는 네트워크 디바이스에 있어서,
    상기 네트워크 디바이스는 프로세싱 회로, 통신 인터페이스 및 저장 매체를 포함하고,
    상기 통신 인터페이스는,
    상기 전송 단에 의해 상기 수신 단으로 송신된 재전송 패킷을 수신하고, 상기 재전송 패킷을 상기 수신 단에 포워딩하고, 상기 재전송 패킷에 대한 응답으로 상기 수신 단의 제1 확인 응답 패킷을 수신하고, 상기 재전송 패킷은, 상기 전송 단이, 송신된 제1 패킷이 유실된 것으로 결정한 후 상기 전송 단에 의해 재전송되며, 상기 재전송 패킷의 시퀀스 번호는 상기 제1 패킷에 포함된 시퀀스 번호와 동일하고, 상기 재전송 패킷은 상기 재전송 패킷의 전송 타임스탬프를 나타내기 위해 사용되는 TSval 필드를 포함하고, 상기 TSval 필드의 값은 TSrexmit 이고, TSrexmit 은 상기 재전송 패킷의 실제 전송 시간을 나타내고; 상기 재전송 패킷을 최초로 수신한 경우, 상기 제1 확인 응답 패킷은 수신 단에 의해 송신되고; 상기 제1 확인 응답 패킷은 상기 재전송 패킷의 상기 전송 타임스탬프를 상기 전송 단에 보고하기 위해 사용되는 TSecr 필드를 포함하고,
    상기 저장 매체는 프로토콜 스택 프로그램을 저장하고, 상기 프로세싱 회로는 상기 저장 매체에 저장된 상기 프로토콜 스택 프로그램을 실행하여:
    상기 제1 확인 응답 패킷에 포함된 상기 타임스탬프 옵션의 TSecr 필드를 TSxmit 으로 교체하여, 제2 확인 응답 패킷을 획득하고, TSxmit < TSrexmit 이고,
    상기 통신 인터페이스는 상기 제2 확인 응답 패킷을 추가로 송신하는,
    네트워크 디바이스.
  23. 제22항에 있어서,
    TSbefore <= TSxmit <= TSafter 이고,
    TSbefore 는 시퀀스 번호가 상기 재전송 패킷의 상기 시퀀스 번호의 직전에 해당하는 패킷의 전송 타임스탬프이고,
    TSafter 는 시퀀스 번호가 상기 재전송 패킷의 상기 시퀀스 번호의 직후에 해당하는 패킷의 전송 타임스탬프인, 네트워크 디바이스.
  24. 단말 및 서버를 포함하고,
    상기 서버는, 상기 단말에 재전송 패킷을 송신하고, 상기 재전송 패킷은, 상기 서버가, 송신된 제1 패킷이 유실된 것으로 결정한 후 상기 서버에 의해 재전송되며, 상기 재전송 패킷의 시퀀스 번호는 상기 제1 패킷에 포함된 시퀀스 번호와 동일하고,
    상기 단말은, 상기 재전송 패킷을 최초로 수신한 경우, 상기 최초로 수신된 상기 재전송 패킷에 응답하기 위해 사용되는 제1 확인 응답 패킷을 생성하고, 상기 제1 확인 응답 패킷을 상기 서버에 송신하고, 상기 제1 확인 응답 패킷은 반복 지시 필드를 포함하고, 상기 반복 지시 필드는 상기 제1 패킷이 반복적으로 수신되었음을 나타내기 위해 사용되고,
    상기 서버는, 상기 제1 확인 응답 패킷의 상기 반복 지시 필드에 기초하여 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 추가로 증가시키는,
    통신 시스템.
  25. 단말 및 서버를 포함하고,
    상기 서버는, 상기 단말에 재전송 패킷을 송신하고, 상기 재전송 패킷은, 상기 서버가, 송신된 제1 패킷이 유실된 것으로 결정한 후 상기 서버에 의해 재전송되며, 상기 재전송 패킷의 시퀀스 번호는 상기 제1 패킷에 포함된 시퀀스 번호와 동일하고; 상기 재전송 패킷은 상기 재전송 패킷의 전송 타임스탬프를 나타내기 위해 사용되는 TSval 필드를 포함하고, 상기 TSval 필드의 값은 TSrexmit 이고, TSrexmit 은 상기 재전송 패킷의 실제 전송 시간을 나타내고,
    상기 단말은, 상기 재전송 패킷을 최초로 수신한 경우, 상기 최초로 수신된 상기 재전송 패킷에 응답하기 위해 사용되는 제1 확인 응답 패킷을 생성하고, 상기 제1 확인 응답 패킷을 상기 서버에 송신하고, 상기 제1 확인 응답 패킷은 상기 재전송 패킷의 상기 전송 타임스탬프를 상기 서버에 보고하기 위해 사용되는 TSecr 필드를 포함하고, 상기 TSecr 필드의 값은 TSxmit 으로 설정되고, TSxmit < TSrexmit 이고,
    상기 서버는, 상기 제1 확인 응답 패킷에 기초하여 혼잡 윈도우 크기 및/또는 느린 시작 임계 치를 추가로 증가시키는,
    통신 시스템.
KR1020197022121A 2016-12-30 2017-12-15 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템 Active KR102203509B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201611260835.6A CN108270682B (zh) 2016-12-30 2016-12-30 一种报文传输方法、终端、网络设备及通信系统
CN201611260835.6 2016-12-30
PCT/CN2017/116601 WO2018121294A1 (zh) 2016-12-30 2017-12-15 一种报文传输方法、终端、网络设备及通信系统

Publications (2)

Publication Number Publication Date
KR20190095487A true KR20190095487A (ko) 2019-08-14
KR102203509B1 KR102203509B1 (ko) 2021-01-14

Family

ID=62710242

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197022121A Active KR102203509B1 (ko) 2016-12-30 2017-12-15 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템

Country Status (6)

Country Link
US (1) US10924421B2 (ko)
EP (1) EP3554022B1 (ko)
KR (1) KR102203509B1 (ko)
CN (1) CN108270682B (ko)
BR (1) BR112019013438A2 (ko)
WO (1) WO2018121294A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230131636A (ko) * 2022-03-07 2023-09-14 현대오토에버 주식회사 차량용 이더넷 제어기 및 그것의 데이터 전송 방법

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109905209B (zh) * 2017-12-07 2020-12-29 网宿科技股份有限公司 一种设置网络乱序值的方法和装置
CN111614574A (zh) * 2019-02-26 2020-09-01 华为技术有限公司 一种通信方法、装置及系统
WO2020211061A1 (zh) * 2019-04-18 2020-10-22 北京小米移动软件有限公司 一种数据传输方法、装置及存储介质
CN110225419A (zh) * 2019-05-15 2019-09-10 深圳市麦谷科技有限公司 一种实现流量控制的丢包重传方法
CN110266446B (zh) * 2019-05-15 2022-05-20 网宿科技股份有限公司 一种基于sack模式调整乱序时长的方法和装置
CN110278191B (zh) * 2019-05-17 2022-05-20 西门子工厂自动化工程有限公司 用户数据报协议通信方法、装置、系统和计算机可读介质
CN111147197B (zh) * 2019-12-30 2022-06-21 北京奇艺世纪科技有限公司 一种数据传输方法及系统
US11438272B2 (en) * 2019-12-31 2022-09-06 Opanga Networks, Inc. System and method for mobility tracking
CN111263102B (zh) * 2020-05-07 2020-08-11 翱捷科技(上海)有限公司 一种基于延迟梯度累积的ViLTE视频通话拥塞控制方法及系统
WO2022056830A1 (en) * 2020-09-18 2022-03-24 Qualcomm Incorporated Fast retransmission of a pdu session establishment request after a lower layer failure
CN113765976B (zh) * 2020-11-13 2025-02-25 北京京东乾石科技有限公司 一种通信方法和系统
CN112491990B (zh) * 2020-11-17 2021-08-10 中科三清科技有限公司 混合云网络数据传输方法、装置、电子设备及存储介质
CN112511381B (zh) * 2020-11-20 2022-03-29 鹏城实验室 一种链路质量事件检测方法、智能终端及存储介质
CN112492646B (zh) * 2020-11-27 2022-04-08 清华大学 基于拥塞成因识别的拥塞控制方法及装置
CN113114580A (zh) * 2021-04-16 2021-07-13 电子科技大学 面向5g网络拥塞控制的用户态传输协议开发框架及方法
CN113286000A (zh) * 2021-05-21 2021-08-20 国网河北省电力有限公司 应用在电力单向传输系统中的数据收发方法及装置
CN113259062B (zh) * 2021-05-31 2021-10-29 恒生电子股份有限公司 丢包重传的方法、装置、可读介质以及设备
CN113472795A (zh) * 2021-07-05 2021-10-01 南京云利来软件科技有限公司 一种截断的tcp流拼接方法
CN115733799B (zh) * 2021-08-25 2025-06-13 超聚变数字技术有限公司 网络拥塞控制方法及相关装置
CN114268588A (zh) * 2021-11-30 2022-04-01 网络通信与安全紫金山实验室 数据传输方法、装置、电子设备及存储介质
CN114244845B (zh) * 2021-12-15 2024-09-20 锐捷网络股份有限公司 一种负载均衡的方法、装置及电子设备
CN114302451B (zh) * 2021-12-31 2025-08-01 紫金山实验室 一种数据传输方法、系统和存储介质
CN114697088B (zh) * 2022-03-17 2024-03-15 神州绿盟成都科技有限公司 一种确定网络攻击的方法、装置及电子设备
CN115037688A (zh) * 2022-04-22 2022-09-09 新华三技术有限公司 一种流量拥塞控制方法及装置
CN115174500B (zh) * 2022-05-23 2023-09-12 北京大学 一种基于pisa的用于网内聚合传输的发送节点和交换机
US12532312B2 (en) * 2022-06-07 2026-01-20 Qualcomm Incorporated Transmission control protocol acknowledgement shaping
CN115426317B (zh) * 2022-11-03 2023-03-24 新华三信息技术有限公司 数据传输速率控制方法、装置及电子设备
CN116073959B (zh) * 2022-12-01 2025-04-18 奇安信网神信息技术(北京)股份有限公司 基于双单向光闸系统的数据传输方法、装置、设备及介质
CN119341704A (zh) * 2024-10-25 2025-01-21 中国电信股份有限公司技术创新中心 丢包重传方法、装置、计算机设备、可读存储介质和程序产品
CN119277470B (zh) * 2024-12-06 2025-03-14 之江实验室 一种无线网中基于子路径的可靠数据传输方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1841118A2 (en) * 2006-03-30 2007-10-03 NTT DoCoMo, Inc. Communication terminal and retransmission control method

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1200368C (zh) 2000-08-18 2005-05-04 清华大学 一种将tcp用于不可靠传输网络的局域重传方法
US7046672B2 (en) * 2000-11-16 2006-05-16 Microsoft Corporation Robust, inferentially synchronized transmission of compressed transport-layer-protocol headers
JP2002290459A (ja) * 2001-03-27 2002-10-04 Nec Corp パケット転送装置および方法
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US20040192312A1 (en) * 2002-07-16 2004-09-30 Jia-Ru Li Communication system for voice and data with wireless TCP server
CN1520104B (zh) * 2003-09-02 2010-04-28 中国科学院计算技术研究所 提高tcp在异构网络中传输性能的方法
KR100533686B1 (ko) 2004-05-21 2005-12-05 삼성전자주식회사 모바일 애드 혹 네트워크에서의 데이터 전송 방법 및 이를이용한 네트워크 장치
US7912060B1 (en) * 2006-03-20 2011-03-22 Agere Systems Inc. Protocol accelerator and method of using same
US9049015B2 (en) 2007-09-12 2015-06-02 Cisco Technology, Inc. Allowing TCP ACK to pass a gateway while queuing data for parsing
CN101227478B (zh) * 2008-02-02 2012-09-05 中兴通讯股份有限公司 一种对抗链路乱序的方法
CN101646204B (zh) * 2009-08-24 2011-12-28 上海华为技术有限公司 数据传输方法和无线接入网元
US8787378B2 (en) * 2010-12-28 2014-07-22 The Chinese University Of Hong Kong Systems and methods to improve performance of TCP over large bandwidth-delay-product networks
US9178789B2 (en) * 2011-08-19 2015-11-03 Futurewei Technologies, Inc. System and method for transmission control protocol slow-start
US8964562B2 (en) * 2012-12-31 2015-02-24 Verizon Patent And Licensing Inc. Flow control methods and systems for use with a wireless network
CN103986548B (zh) * 2013-02-07 2018-02-23 华为技术有限公司 一种确定丢包原因的方法和终端
US9432251B2 (en) 2013-03-08 2016-08-30 Qualcomm Incorporated Enhanced acknowledgement and retransmission mechanism
WO2015113214A1 (en) * 2014-01-28 2015-08-06 Mediatek Singapore Pte. Ltd. Methods for enhanced harq mechanism
CN104125159B (zh) * 2014-07-29 2017-09-12 福建星网锐捷网络有限公司 一种拥塞带宽检测方法、装置及系统
CN106330406A (zh) * 2015-06-16 2017-01-11 中兴通讯股份有限公司 一种基于tcp的数据传输方法及装置
CN106656431B (zh) * 2015-09-21 2020-09-29 华为技术有限公司 一种报文传输方法及用户设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1841118A2 (en) * 2006-03-30 2007-10-03 NTT DoCoMo, Inc. Communication terminal and retransmission control method

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230131636A (ko) * 2022-03-07 2023-09-14 현대오토에버 주식회사 차량용 이더넷 제어기 및 그것의 데이터 전송 방법
KR20240142326A (ko) * 2022-03-07 2024-09-30 현대오토에버 주식회사 차량용 이더넷 제어기 및 그것의 데이터 전송 방법
US12526240B2 (en) 2022-03-07 2026-01-13 Hyundai Autoever Corp. Ethernet controller for a vehicle and data transmission method thereof

Also Published As

Publication number Publication date
WO2018121294A1 (zh) 2018-07-05
EP3554022B1 (en) 2021-11-03
CN108270682A (zh) 2018-07-10
EP3554022A1 (en) 2019-10-16
US20190319889A1 (en) 2019-10-17
KR102203509B1 (ko) 2021-01-14
CN108270682B (zh) 2022-06-24
BR112019013438A2 (pt) 2019-12-31
EP3554022A4 (en) 2019-11-20
US10924421B2 (en) 2021-02-16

Similar Documents

Publication Publication Date Title
KR102203509B1 (ko) 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템
US11153041B2 (en) Packet transmission method and user equipment
US11799790B2 (en) Data transmission method, computing device, network device, and data transmission system
US11272420B2 (en) Method and apparatus for transmitting data packets using dual sequence numbers
JP5523350B2 (ja) Tcpフロー制御のための方法及び装置
CN105684396B (zh) 无线系统中的tcp流量自适应
KR102397347B1 (ko) 메시지들을 송신하기 위한 방법 및 디바이스, 칩 및 단말
US8306062B1 (en) Method and apparatus of adaptive large receive offload
US10524175B2 (en) Data transmission method and network device
CN107959554A (zh) 一种数据的重传方法及装置
US9510242B2 (en) Reducing superfluous traffic in a network
EP3389206A1 (en) Multipath error correction
HK1224838A1 (en) Tcp traffic adaptation in wireless systems

Legal Events

Date Code Title Description
A201 Request for examination
E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

U11 Full renewal or maintenance fee paid

Free format text: ST27 STATUS EVENT CODE: A-4-4-U10-U11-OTH-PR1001 (AS PROVIDED BY THE NATIONAL OFFICE)

Year of fee payment: 6

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000