KR102109021B1 - 데이터 전송 방법, 전송 노드, 수신 노드 및 데이터 전송 시스템 - Google Patents

데이터 전송 방법, 전송 노드, 수신 노드 및 데이터 전송 시스템 Download PDF

Info

Publication number
KR102109021B1
KR102109021B1 KR1020187016871A KR20187016871A KR102109021B1 KR 102109021 B1 KR102109021 B1 KR 102109021B1 KR 1020187016871 A KR1020187016871 A KR 1020187016871A KR 20187016871 A KR20187016871 A KR 20187016871A KR 102109021 B1 KR102109021 B1 KR 102109021B1
Authority
KR
South Korea
Prior art keywords
packet
data packet
sequence number
node
data
Prior art date
Application number
KR1020187016871A
Other languages
English (en)
Other versions
KR20180082571A (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 KR20180082571A publication Critical patent/KR20180082571A/ko
Application granted granted Critical
Publication of KR102109021B1 publication Critical patent/KR102109021B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/02Communication route or path selection, e.g. power-based or shortest path routing
    • H04W40/12Communication route or path selection, e.g. power-based or shortest path routing based on transmission quality or channel quality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0829Packet loss
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/196Integration of transport layer protocols, e.g. TCP and UDP
    • 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/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • 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
    • 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/267Flow control; Congestion control using explicit feedback to the source, e.g. choke packets sent by the destination endpoint
    • 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/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signaling, i.e. of overhead other than pilot signals
    • H04L5/0055Physical resource allocation for ACK/NACK
    • 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
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms

Abstract

본 발명은 데이터 전송 가속 방법, 관련 장치 및 시스템을 개시한다. 본 방법은, 전송 노드에 의해, 데이터 패킷을 특정 레이트로 수신 노드에 전송하는 단계 - 상기 각 데이터 패킷은 패킷 전송 시퀀스와 관련된 랜덤 시퀀스 번호 및 스크롤링 시퀀스 번호를 운반함 -; 및 수신 노드에 의해, 수신된 데이터 패킷의 이중 시퀀스 번호에 따라 손실된 데이터 패킷을 신속하게 결정하고, 전송 노드가 손실된 데이터 패킷을 재전송하도록 지시하기 위해, 손실된 데이터 패킷의 시퀀스 번호 정보를 전송 노드에 피드백하는 단계를 포함한다. 본 발명의 해결책은 높은 지연 및 높은 패킷 손실률을 갖는 네트워크에서 네트워크 처리율/전송률을 향상시킬 수 있으며, 일부 네트워크 지터로 인해 높은 처리율/전송률이 크게 변하지 않는다.

Description

데이터 전송 방법, 전송 노드, 수신 노드 및 데이터 전송 시스템
삭제
본 발명은 통신 기술 분야에 관한 것으로, 특히 데이터 전송 가속 방법 및 관련 장치 및 시스템에 관한 것이다.
네트워크 통신에서, 네트워크 상에서 신뢰성 있고 효율적인 데이터 전송을 보장하는 방법은 항상 학문 및 산업 분야에서의 연구 중심이다. 데이터 전송 효율은 네트워크 프로토콜 성능과 직접 관련되며, 처리율/전송률은 네트워크 프로토콜 성능을 측정하는 중요한 지표 중 하나이다. 기존의 통신 네트워크에서, 전송 제어 프로토콜(TCP: transmission control protocol) 또는 사용자 데이터그램 프로토콜(UDP: user datagram protocol)은 일반적으로 전송 계층 프로토콜로서 사용된다. TCP 및 UDP는 TCP/IP 모델의 2가지 가장 보편적인 전송 계층 프로토콜이다. 통계에 따르면, 현재, 글로벌 인터넷 데이터 트래픽의 90% 이상이 TCP를 사용하여 전송되며, 글로벌 인터넷 데이터 트래픽의 10% 미만이 UDP를 사용하여 전송된다. 또한, TCP의 비율은 여전히 계속해서 증가하고 있으며, 점차적으로 TCP 프로토콜은 현재 UDP 프로토콜을 널리 사용하는 멀티미디어 응용의 멀티미디어 데이터 패킷을 전송하는 데에도 사용되기 시작한다. 그러나, 20년 이상 전에 설계된 TCP 전송 프로토콜은 급속하게 발전하는 고속 네트워크 환경과 새로운 응용의 요구사항을 점점 더 충족시킬 수 없다. 예를 들어, "이중 윈도우(double-window)" 혼잡 제어 또는 패킷 손실 재전송과 같은 TCP 메커니즘으로 인해, 패킷 손실이나 네트워크 지연이 있을 때, TCP 연결의 처리율이 급격하게 떨어지며, 대역폭이 효과적으로 사용될 수 없다. 결과적으로, TCP 프로토콜은 높은 처리율/전송률에서 데이터 전송을 잘 지원할 수 없다.
TCP 전송률 문제에 대해, 다양한 네트워크 가속 기술이 이에 따라 출현한다. 이들 가속 기술은 기본적으로 3가지 유형: 패킷 손실 기반 TCP 가속 기술, 지연 기반 TCP 가속 기술 및 학습 기반 TCP 가속 기술로 분류될 수 있다.
손실 기반 TCP 가속 기술은 패킷 손실에 의해 TCP가 혼잡을 결정하고 전송률을 조정하는 주류 방식을 따른다. 종래의 TCP에 비해 손실 기반 TCP 가속 기술의 향상은 주로 초기 혼잡 윈도우(CNWD)를 확대하고, 패킷 손실로 인해 혼잡을 결정한 후 종래의 TCP보다 진보적인 복구 방식을 사용하여 CNWD를 복구하며, 이로써 혼잡이 레이트에 미치는 영향을 감소시킨다. 이러한 향상으로 많은 상황에서 레이트가 향상될 수 있지만, 많은 네트워크, 특히 무선 네트워크에서 비 혼잡(non-congestion) 요인으로 인해 패킷 손실이 발생할 수 있다. 예를 들어, 신호 간섭과 같은 요인으로 인해 발생되는 패킷 손실은 혼잡 발생을 의미하지 않는다. 따라서, 손실 기반 TCP 가속 기술에서, 패킷 손실을 혼잡 발생 신호로서 사용하는 것이 실수를 초래할 가능성이 매우 높다. 결과적으로, 전송률이 감소되고, 대역폭이 효과적으로 사용될 수 없다.
지연 기반 TCP 가속 기술은 지연 변경을 사용하여 혼잡도를 결정하고 그에 따라 전송률을 조정함으로써 손실 기반 TCP 가속 기술의 주된 단점을 극복한다. 이 메커니즘은 현대 네트워크의 기능에 더 부합하는데, 혼잡이 발생하는 네트워크 노드의 큐에서 스태킹(stacking)이 시작될 때 전송률이 낮아질 수 있기 때문에, 혼잡의 악화를 피하고 패킷 손실을 감소시키거나 심지어 피할 수 있다. 또한, 지연 기반 TCP 가속 기술에서, 패킷 손실은 혼잡으로 간주되지 않으며, 이로써 비 혼잡 요인이 패킷 손실을 초래할 때 비교적 높은 레이트를 유지한다. 따라서, 손실 기반 TCP 가속 기술과 비교하여, 잘 설계된 지연 기반 TCP 가속 기술은 전송률을 크게 향상시킨다. 그럼에도 불구하고, 네트워크 경로의 지연이 크게 변할 때, 지연 기반 TCP 가속 기술에 따라, 혼잡 및 혼잡 처리가 수행됨에 따라 비 혼잡 인자로 초래된 지연 증가가 부정확하게 결정되고, 결과적으로, 전송률의 불필요한 감소가 초래된다. 예를 들어, 모바일 인터넷을 포함하는 무선 네트워크의 지연은 빈번하게 변경되고, 일부 네트워크 디바이스(특히 보안 디바이스)는 또한 지연 처리를 위해 산발적으로 추가 데이터 패킷을 도입할 수 있다.
학습 기반 TCP 가속 기술은 네트워크 경로 기능 자체 학습의 동적 알고리즘을 사용하여, 각 TCP 연결에 기초하여 실시간으로 네트워크 기능을 관찰하고 분석하며, 학습된 네트워크 기능에 따라 알고리즘을 언제든지 조정하고, 이로써 보다 정확하게 혼잡도를 결정하고 패킷 손실을 보다 시기 적절하게 결정함으로써, 처리 혼잡을 보다 적절하게 처리하고 손실된 패킷을 보다 신속하게 복구한다. 원칙적으로, 이 설계는 정적 알고리즘이 네트워크 경로 기능 변경에 적응할 수 없다는 문제점을 극복하고, 빈번하게 변경되는 네트워크 지연 및 빈번하게 변경되는 패킷 손실 기능을 사용하여 다양한 네트워크 환경에서 가속 효과가 효과적으로 유지되도록 보장한다. 그러나, 학습 기반 TCP 가속 기술에서, 과거 기록을 학습하여 현재 네트워크 상태를 학습할 필요가 있으며, 랜덤 패킷 손실 및 큰 지연 지터(jitter)가 있는 네트워크의 경우 학습/결정이 분명한 영향을 미치지 않는다. 결과적으로, 네트워크 처리율/전송률이 분명하게 향상되지 않는다.
결론적으로, 기존의 전송 프로토콜의 처리율/전송률은 여전히 비교적 큰 향상 공간을 갖는다. 일부 가속 알고리즘은 어느 정도 가속을 구현할 수 있지만, 네트워크 개발 트랜드는 트래픽 기능이 더 복잡하고 예측할 수 없다는 것이다. 특히, 높은 지연, 높은 패킷 손실률 및 높은 대역폭 지연 제품의 시나리오에서는 네트워크 경로 기능이 지속적으로 변한다. 따라서, 가속 효과가 불안정하고, 때로는 악영향을 미칠 수도 있다. 따라서, 종래 기술의 전송 계층 프로토콜의 처리율/전송률은 여전히 개선될 필요가 있다.
본 발명의 실시예는 데이터 전송 방법, 전송/수신 노드 및 데이터 전송 시스템을 제공하고, 이로써 데이터 전송률을 향상시킨다.
상기 발명의 목적을 달성하기 위해, 제1 측면에 따르면, 본 발명의 일 실시예는 패킷 전송 방법을 제공한다. 본 방법은, 전송 노드에 의해, 다수의 데이터 패킷을 미리 설정된 전송률로 수신 노드에 전송하는 단계: 수신된 데이터 패킷의 시퀀스 번호에 따라 하나 이상의 손실된 데이터 패킷을 검출한 후, 수신 노드에 의해, 패킷 손실 피드백 정보를 전송 노드에 전송하여, 이로써 손실된 데이터 패킷을 재전송하도록 요청하는 단계; 및 패킷 손실 피드백 정보를 수신한 후, 전송 노드에 의해, 패킷 손실 피드백 정보의 표시에 따라 손실된 데이터 패킷을 재전송하는 단계를 포함한다. 최선의 노력으로 데이터 패킷이 전송되는 종래의 TCP 메커니즘과는 달리, 본 발명의 실시예에서의 데이터 전송 방법에서, 데이터 패킷은 특정 레이트로 고르게 전송된다. 이는 데이터 패킷이 네트워크로 즉시 주입되고 네트워크 혼잡이 야기되는 경우를 감소시킬 수 있다. 또한, TCP와 달리, 전송 윈도우 또는 혼잡 윈도우와 같은 제한으로 인해 패킷이 전송될 수 없는 현상을 피할 수 있으며, 이로써 데이터 전송률 및 대역폭 활용도를 크게 향상시킬 수 있다.
제1 가능한 구현 방식에서, 전송 노드에 의해 전송된 데이터 패킷은 랜덤 시퀀스 번호(SEQ) 및 스크롤링 시퀀스 번호(PKT.SEQ)를 운반하며, 수신 노드는 수신된 데이터 패킷의 스크롤링 시퀀스 번호에 따라 손실된 데이터 패킷을 검출할 수 있다. PKT.SEQ는 데이터 패킷의 전송 시퀀스를 나타내는 데 사용되며, 데이터 패킷의 전송 시퀀스에만 관련된다. 따라서, 수신 노드는 연속적으로 수신된 데이터 패킷의 PKT.SEQ에 따라 손실된 데이터 패킷을 신속하게 결정할 수 있다. 이중 SEQ 메커니즘에서, 임의의 손실된 데이터 패킷이 RTT(round trip time) 내에서 검출될 수 있으며, 지연은 TCP에서 사용되는 타임 아웃 재전송과 비교하여 더 짧다.
제1 측면의 제1 가능한 구현 방식에 따르면, 제2 가능한 구현 방식에서, 전송 노드에 의해 전송된 다수의 데이터 패킷의 스크롤링 시퀀스 번호는 다수의 데이터 패킷의 전송 시퀀스에 대응한다.
제1 측면의 제1 또는 제2 가능한 구현 방식에 따르면, 제3 가능한 구현 방식에서, 재전송된 데이터 패킷은 새로운 스크롤링 시퀀스 번호를 운반한다.
제1 측면의 제1 또는 제2 가능한 구현 방식에 따르면, 제4 가능한 구현 방식에서, 재전송된 데이터 패킷에 운반된 랜덤 시퀀스 번호는 처음으로 전송된 데이터 패킷에 운반된 랜덤 시퀀스 번호와 동일하며, 재전송된 데이터 패킷에 운반된 스크롤링 시퀀스 번호는 처음으로 전송된 데이터 패킷에 운반된 스크롤링 시퀀스 번호와 상이하다.
제1 측면 또는 상기 구현 방식 중 임의의 하나에 따르면, 제5 가능한 구현 방식에서, 패킷 손실 피드백 정보는 손실된 데이터 패킷의 시퀀스 번호 정보를 포함하며, 시퀀스 번호 정보는 구체적으로 랜덤 시퀀스 번호이거나 스크롤링 시퀀스 번호일 수 있다. 다르게는, 제6 가능한 구현 방식에서, 패킷 손실 피드백 정보는 랜덤 시퀀스 번호 또는 스크롤링 시퀀스 번호와 같이 수신 노드에 의해 이미 수신된 데이터 패킷의 시퀀스 번호 정보를 포함한다.
제1 측면 또는 제1 측면의 상기 구현 방식 중 임의의 하나에 따르면, 제7 가능한 구현 방식에서, 수신 노드에 의해 전송된 패킷 손실 피드백 정보는 패킷 손실 표시 필드를 포함하는 NACK 제어 패킷이며, 패킷 손실 표시 필드는 손실된 데이터 패킷의 스크롤링 시퀀스 번호를 운반하는 데 사용된다. 대응하여, NACK 제어 패킷을 수신한 후, 전송 노드는 NACK 제어 패킷에 운반된 스크롤링 시퀀스 번호에 기초하여, 전송 노드에 의해 전송된 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계에 기초하여 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하고, 새로운 스크롤링 시퀀스 번호를 결정된 손실된 데이터 패킷에 할당한 후 손실된 데이터 패킷을 재전송한다. 다르게는, 제8 가능한 구현 방식에서, NACK 제어 패킷의 패킷 손실 표시 필드는 손실된 데이터 패킷의 랜덤 시퀀스 번호를 운반하는 데 사용될 수 있으며, 수신 노드는 손실된 데이터 패킷의 스크롤링 시퀀스 번호에 따라 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계의 테이블을 쿼리할 수 있고, 이로써 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하고, 결정된 시퀀스 번호를 패킷 손실 표시 필드에 추가하며, 패킷 손실 표시 필드를 전송 노드에 피드백할 수 있다.
제1 측면의 제5 또는 제7 가능한 구현 방식에 따르면, 제9 가능한 구현 방식에서, NACK 제어 패킷의 패킷 손실 표시 필드는 패킷 손실 시작 필드(START) 및 패킷 손실 종료 필드(END)를 포함한다. 패킷 손실 시작 필드 및 패킷 손실 종료 필드는 다수의 연속 손실된 데이터 패킷의 제1 패킷 및 마지막 패킷의 스크롤링 시퀀스 번호를 나타내는 데 각각 사용된다. 대응하여, NACK 제어 패킷을 수신한 후, 전송 노드는 NACK 제어 패킷의 패킷 손실 시작 필드 및 패킷 손실 종료 필드에 따라 다수의 연속 손실된 데이터 패킷을 결정할 수 있으며, 다수의 연속 손실된 데이터 패킷을 재전송한다. 수신 노드는 하나의 NACK 제어 패킷을 사용하여 다수의 연속 손실된 데이터 패킷을 전송 노드에 피드백하며, 이로써 NACK 제어 패킷의 양을 감소시키고, 네트워크 자원을 감소시키며, 재전송 효율을 증가시킨다.
제1 측면 또는 제1 측면의 상기 가능한 구현 방식 중 임의의 하나에 따르면, 제10 가능한 구현 방식에서, 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계는 맵핑 테이블 형태로 전송 노드에 저장된다. 또한, 제11 가능한 구현 방식에서, 데이터 패킷 전송 프로세스에서, 전송 노드는 이미 전송된 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계를 맵핑 테이블에 추가하며, 이로써 맵핑 테이블을 동적으로 업데이트한다.
제1 측면 또는 제1 측면의 상기 가능한 구현 방식 중 임의의 하나에 따르면, 제12 가능한 구현 방식에서, NACK 제어 패킷은 해제 필드(Release SEQ)를 포함하며, 해제 필드는 현재 수신 노드에 의해 이미 수신된 데이터 패킷의 랜덤 시퀀스 번호 또는 스크롤링 시퀀스 번호를 운반하는 데 사용된다. 대응하여, NACK 제어 패킷을 수신한 후, 전송 노드는 해제 필드의 표시에 따라 전송 버퍼로부터, 수신 노드에 의해 이미 수신된 데이터 패킷에 의해 점유되는 공간을 해제할 수 있다. 또한, 수신 노드는 이미 수신된 데이터 패킷에 의해 점유되는 수신 버퍼를 제 시간에 해제할 수도 있다.
제1 측면 또는 제1 측면의 상기 가능한 구현 방식 중 임의의 하나에 따르면, 제13 가능한 구현 방식에서, 수신 노드는 또한 PACK 제어 패킷을 주기적으로 전송하고, 여기서 PACK 제어 패킷은 HOL 패킷의 랜덤 시퀀스 번호를 운반한다. HOL 패킷은 전송 노드에 의해 감지되지 않은 손실된 데이터 패킷 및/또는 재전송된 후 다시 손실된 데이터 패킷을 포함한다. 대응하여, PACK 제어 패킷을 수신한 후, 전송 노드는 PACK 제어 패킷에 운반된 랜덤 시퀀스 번호에 대응하는 데이터 패킷을 재전송한다. PACK 제어 패킷은 주기적으로 전송되고, HOL 패킷의 랜덤 시퀀스 번호(SEQ)가 PACK 제어 패킷에 추가된다. 이는 수신 버퍼가 NACK 제어 패킷의 손실 또는 재전송된 데이터 패킷의 손실로 인해 차단되는 문제점을 효과적으로 해결할 수 있다.
또한, 제1 측면의 제13 가능한 구현 방식에 따르면, 제14 가능한 구현 방식에서, PACK 제어 패킷은 데이터 패킷 수신율 또는 데이터 패킷 손실률 중 적어도 하나를 더 포함할 수 있다. 또한, 제15 가능한 구현 방식에서, 전송 노드는 PACK에 포함된 데이터 패킷 수신율 및/또는 데이터 패킷 손실률에 따라 초기 전송률을 조정하고, 이로써 초기 전송률이 데이터 패킷 수신율에 적응된다. PACK 제어 패킷은 주기적으로 전송되며, 이로써 전송 노드가 전송률을 동적으로 조정할 수 있고, 전송 노드와 수신 노드 사이의 협력이 보다 효율적으로 이루어져, 데이터 전송률이 향상된다. 선택적으로, 수신 노드는 데이터 패킷 수신율 및/또는 데이터 패킷 손실률과 같은 정보를 다른 개별 제어 패킷에 추가할 수 있으며, 정보를 전송 노드에 피드백할 수 있다.
제1 측면의 제13 내지 제15 가능한 구현 방식 중 임의의 하나에 따르면, 제16 가능한 구현 방식에서, 수신 노드에 의해 PACK을 전송하는 기간은 max(RTT/a, 임계값)(1<a<6)에 의해 계산될 수 있다.
제1 측면의 제13 내지 제16 가능한 구현 방식 중 임의의 하나에 따르면, 제17 가능한 구현 방식에서, 첫 번째 데이터 패킷을 수신한 후, 수신 노드는 PACK 타이머를 가능하게 하고; PACK 타이머가 타임 아웃하면, PACK이 전송된다.
제1 측면 또는 제1 측면의 임의의 가능한 구현 방식에 따르면, 제18 가능한 구현 방식에서, 전송 노드는 UDP 연결을 수신 노드에 확립하고, UDP 연결에 기초하여 데이터를 전송한다.
본 발명의 실시예의 제2 측면은 버스를 사용하여 연결된 프로토콜 스택, 프로세서, 저장 장치 및 통신 인터페이스를 포함하는 전송 노드를 더 제공한다. 프로토콜 스택은 프로세서의 제어 하에, 제1 측면에서의 전송 노드의 프로세스 또는 제1 측면의 임의의 가능한 구현 방식을 실행하도록 구성된다.
본 발명의 실시예의 제3 측면은 버스를 사용하여 연결된 프로토콜 스택, 프로세서, 저장 장치 및 통신 인터페이스를 포함하는 노드를 더 제공한다. 프로토콜 스택은 프로세서의 제어 하에, 제1 측면에서의 수신 노드의 프로세스 또는 제1 측면의 임의의 가능한 구현 방식을 실행하도록 구성된다. 제2 측면 및 제3 측면의 제1 가능한 구현 방식에서, 통신 인터페이스는 송신기 회로 및 수신기 회로를 포함하며, 프로토콜 스택은 구체적으로, 송신기 회로를 사용하여 데이터 패킷을 전송하고, 수신기 회로를 사용하여 데이터 패킷을 수신하도록 구성된다. 제2 측면 및 제3 측면의 제2 가능한 구현 방식에서, 프로토콜 스택은 전송 노드와 수신 노드의 기능을 구현하도록 프로세서에 의해 실행되는 실행 가능한 프로그램의 형태로 저장 장치에 저장된다.
본 발명의 실시예의 제4 측면은 제2 측면에서의 전송 노드 및 제3 측면에서의 수신 노드를 포함하는 데이터 전송 시스템을 더 제공한다.
본 발명의 실시예의 제5 측면은 전송 노드 및 수신 노드를 포함하는 데이터 전송 시스템을 더 제공한다. 전송 노드는 제1 측면에서의 전송 노드의 기능 또는 제1 측면의 임의의 가능한 구현 방식을 구현하는 하나 이상의 기능 유닛을 포함한다. 수신 노드는 제1 측면에서의 수신 노드의 기능 또는 제1 측면의 임의의 가능한 구현 방식을 구현하는 하나 이상의 기능 유닛을 포함한다.
본 발명의 실시예의 제6 측면은 컴퓨터 판독 가능 저장 매체를 더 제공하며, 여기서 저장 매체는 프로그램 코드를 저장하고, 프로그램 코드는 상기 임의의 측면에 설명된 방법 단계 또는 임의의 측면의 가능한 구현 방식을 실행하는 데 사용된다.
본 발명의 실시예의 임의의 측면 또는 임의의 측면 임의의 구현 방식에서, 레이트를 수신하는 데이터 패킷은 수신 노드에 의해 데이터 패킷을 수신하는 레이트 또는 수신 노드에 의해 수신 버퍼로부터 데이터 패킷을 판독하는 레이트 또는 수신 노드에 의해 유효한 데이터 패킷을 수신하는 레이트를 나타내는 데 사용되며, 여기서 유효한 데이터 패킷은 비 중복 데이터 패킷을 지칭한다. 전송 버퍼 및 수신 버퍼는 전송 노드 및 수신 노드의 메모리에 각각 위치된다. 랜덤 시퀀스 번호는 데이터가 전송 버퍼에 순서대로 정렬되었음을 보장하도록 데이터 패킷 식별자 또는 데이터 부분 정보를 식별하고; 스크롤링 시퀀스 번호는 전송 노드에 의해 데이터 패킷을 전송하는 시퀀스를 나타내는 데 사용된다. 랜덤 시퀀스 번호는 데이터 패킷의 데이터 부분에 관련되고, 스크롤링 시퀀스 번호는 데이터 패킷의 전송 시퀀스에만 관련되며 데이터 패킷의 데이터 부분과는 무관하다.
본 발명의 실시예에서 제공되는 데이터 전송 방법, 장치 및 데이터 전송 시스템에 따르면, 전송자는 특정 전송률로 데이터 패킷을 수신기에 푸시한다. 손실된 패킷을 검출할 때, 수신기는 신속한 인-스트림 재전송에 의해 손실된 패킷을 신속하게 "풀" 백하고, 이미 수신된 연속 데이터 패킷에 의해 점유된 메모리를 해제한다. 이는 높은 지연 및 높은 패킷 손실률을 갖는 네트워크에서 네트워크 처리율/전송률을 향상시킬 수 있다.
이하에서는 실시예를 설명하기 위해 요구되는 첨부 도면을 간단히 설명한다.
도 1은 본 발명의 일 실시예에 따른 전형적인 응용 시나리오의 개략도이다.
도 2는 본 발명의 일 실시예에 따른 데이터 전송 시스템의 개략도이다.
도 3은 본 발명의 일 실시예에 따른 프로토콜 스택의 동작 원리도이다.
도 4는 본 발명의 일 실시예에 따른 데이터 전송 방법의 개략도이다.
도 5는 본 발명의 일 실시예에 따른 프로토콜 스택의 동작 원리도이다.
도 6은 본 발명의 일 실시예에 따른 이중 시퀀스 번호 메커니즘의 개략도이다.
도 7은 본 발명의 일 실시예에 따른 데이터 전송 방법의 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 NACK 제어 패킷의 개략적인 구조도이다.
도 9는 본 발명의 일 실시예에 따른 PACK 제어 패킷의 개략적인 구조도이다.
도 10은 본 발명의 일 실시예에 따른 전송 노드의 동작 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 수신 노드의 동작 흐름도이다.
도 12는 본 발명의 일 실시예에 따른 데이터 전송 시스템에서의 데이터 상호작용의 개략적인 흐름도이다.
도 13은 본 발명의 일 실시예에 따른 다른 데이터 전송 시스템의 구조도이다.
이하는 첨부 도면을 참조하여 본 발명의 실시예를 설명한다.
본 발명의 실시예에서 설명된 네트워크 아키텍처 및 서비스 시나리오는 본 발명의 실시예에서의 기술적 해결책을 보다 명확하게 설명하기 위한 것이지만, 본 발명의 실시예에서 제공되는 기술적 해결책에 제한을 부과하지 않는다. 통상의 기술자는 본 발명의 실시예에서 제공되는 기술적 해결책이 네트워크 아키텍처가 진화하고 새로운 서비스 시나리오가 출현하는 것과 유사한 기술적 문제점에도 적용 가능하다는 것을 이해할 수 있다.
도 1은 본 발명의 해결책이 적용 가능한 전형적인 응용 시나리오의 개략도이다. 도 1에 나타난 바와 같이, 시나리오에서, 사용자 장비(UE: user equipment)는 인터넷 서비스 제공자("ISP")를 사용하여 인터넷에 액세스하고, 전송 프로토콜을 기초하여 서버와 데이터 전송을 수행하며, 예를 들어, 서버로부터 컨텐츠를 다운로드하거나 UE의 로컬 컨텐츠를 서버에 백업한다. 일반적으로, UE와 서버 사이의 데이터 전송은 다수의 지역과 다수의 ISP를 가로지를 수 있으며, 따라서 높은 지연과 높은 패킷 손실률이 불가피하다. 일부 다른 시나리오에서, 데이터는 유선 또는 무선 링크를 사용하여 UE와 서버 사이에서 데이터가 전송될 수 있으며, 링크와 같은 요인으로 인해 데이터 패킷이 손실되는 상황 또한 있을 수 있다. 따라서, 신뢰할 수 있는 데이터 전송을 보장하기 위해, 전송 제어 프로토콜(TCP: transmission control protocol)이 상이한 디바이스 사이의 전송 프로토콜에서 첫 번째 선택이 된다. 그러나, 신뢰성 있는 데이터 전송을 보장하기 위해 TCP에 도입된 전송 메커니즘, 혼잡 제어 메커니즘 또는 타임아웃 재전송 메커니즘과 같은 윈도우 기반 메커니즘은 데이터 전송률에 매우 큰 제한을 부과하며, 링크 활용도를 감소시킨다. 신뢰성 있는 데이터 전송을 보장하기 위해, 이 응용은 데이터 전송률을 더욱 향상시키고 링크 활용도를 향상시키는 것을 목표로 한다. 본 발명의 실시예에서 제공되는 기술적 해결책은 TCP/IP 기준 모델에 기초하여 모든 통신 시스템에 적용 가능하다는 것을 이해할 수 있다. TCP/IP 기준 모델은 추상 계층 모델이다. 일반적으로, TCP/IP 기준 모델은 TCP/IP 프로토콜 스택으로도 지칭된다. 이 모델에서, 모든 네트워크 프로토콜은 5개의 추상 "계층": 물리 계층, 링크 계층, 네트워크 계층, 전송 계층 및 응용 계층으로 분류된다. 각 층의 정의는 종래 기술이며, 본 발명의 실시예에서 설명되지 않는다.
본 출원에 포함된 사용자 장비(UE)는 통신 기능을 가진 핸드 헬드(handheld) 디바이스, 차량 탑재 디바이스, 웨어러블 디바이스 및 컴퓨팅 디바이스를 포함하고, 도 1에 나타난 개인용 컴퓨터(PC: personal computer), 스마트폰, 랩탑 컴퓨터, 태블릿 컴퓨터 및 디지털 카메라(DC: digital camera)와 같은 다양한 형태의 사용자 장비(UE), 모바일 스테이션(MS), 단말 및 단말 장비(TE)를 포함할 수 있다. 설명의 편의를 위해, 이 출원에서, 상기 언급된 디바이스는 집합적으로 사용자 장비 또는 UE로 지칭될 수 있다. 본 발명의 명세서, 청구항 및 첨부 도면에서, 용어 "제1", "제2", "제3", "제4" 등(존재한다면)은 유사한 대상을 구별하기 위한 것이지만 반드시 특정 순서 또는 시퀀스를 나타내는 것은 아니다.
도 2는 본 발명의 일 실시예에서 제공되는 데이터 전송 시스템(100)의 간략화된 블록도이다. 도 2에 따르면, 데이터 전송 시스템(100)은 전송 노드(110), 액세스 포인트(10), 무선 액세스 게이트웨이(12), 광역 네트워크(14) 및 수신 노드(20)를 포함한다. 통상의 기술자는 일반적으로 데이터 전송 시스템이 도 2에 나타난 구성요소보다 더 많거나 더 적은 구성요소를 포함할 수 있거나, 또는 도 2에 나타난 구성요소와 상이한 구성요소를 포함할 수 있다는 것을 이해할 수 있다. 도 2는 본 발명의 실시예에 개시된 다수의 구현 방식에 더 관련된 구성요소만을 나타낸다.
또한, 전송 노드(110) 및 수신 노드는 독립적인 물리적 디바이스일 수 있거나 또는 가상 머신일 수 있다. 시나리오에서, 전송 노드(110)는 도 1에 설명된 사용자 장비일 수 있으며, 수신 노드(20)는 도 1에 설명된 서버일 수 있다. 다른 시나리오에서, 사용자 장비와 서버의 역할이 상호 교환될 수 있다. 즉, 서버는 전송 노드로서 기능하고, 사용자 장비는 수신 노드로서 기능한다. 분명한 것은, 전송 노드(110) 및 수신 노드(20)는 모두 사용자 장비 또는 서버일 수 있으며, 이는 본 발명에서 특별하게 제한되는 것은 아니라는 것이다. 광역 네트워크(14)는 공중망(public network)의 일부, 사설망(private network) 및 인터넷 및/또는 이들의 임의의 조합을 포함할 수 있다. 무선 액세스 게이트웨이(12) 및 액세스 포인트(10)는 무선 네트워크에 포함될 수 있으며, 간략함을 위해, 무선 네트워크의 다른 부분은 설명되지 않는다. 또한, 본 발명의 실시예에서, 전송 노드 및 수신 노드에 배치된 네트워크 프로토콜은 전송 노드와 수신 노드 사이의 네트워크의 유형에 관계 없이, 데이터 전송률을 향상시키도록 주로 최적화된다는 것을 더 알 수 있다. 도 2에 설명된, 무선 네트워크에 기초하여 전송 노드와 수신 노드 사이의 데이터 전송은 본 발명의 실시예에서의 전형적인 응용 시나리오일 뿐이다. 본 발명의 실시예에서 제공되는 방법은 유선 또는 무선 네트워크를 사용하여 상이한 디바이스 사이에서 데이터가 전송되는 시나리오에서 사용될 수 있다는 것을 이해할 수 있다. 예를 들어, 도 1에서, 데이터는 무선 네트워크(Wi-Fi 네트워크 및 셀룰러 네트워크와 같은)를 사용하여 상이한 UE 사이에서 전송되거나, 유선 또는 무선 방식으로 서버 사이에서 데이터가 전송된다.
도 2에 따르면, 전송 노드(110)는 프로세서(120), 통신 인터페이스(140) 및 저장 장치(150)를 포함한다. 대응하여, 수신 노드(20)는 또한, 프로세서, 통신 인터페이스 및 저장 장치(도 2에 도시되지 않음)를 포함한다. 전송 노드(110) 및 수신 노드(20)는 또한 각각 프로토콜 스택(130) 및 프로토콜 스택(21)을 포함한다. 프로토콜 스택(130 및 21)의 기능은 소프트웨어, 하드웨어 및/또는 펌웨어의 적절한 조합에 의해 실행될 수 있다. 또한, 통상의 기술자는 전송 노드(110) 및 수신 노드(20)가 도 2에 나타난 구성요소보다 더 많거나 더 적은 구성요소를 포함할 수 있으며, 도 2는 본 발명의 실시예에 개시된 다수의 구현 방식과 더 관련된 구성요소만을 나타낸다는 것을 이해할 수 있다.
전송 노드(110)의 저장 장치(150)는 응용 프로그램(121)(또는 전송 응용 프로그램으로 지칭됨)을 저장한다. 예를 들어, 응용 프로그램(121)은 수신 노드(20)에 컨텐츠를 업로드하는 데 사용되는 백업 프로그램일 수 있거나, 또는 수신 노드(20)로부터 컨텐츠를 요청하는 데 사용되는 브라우저일 수 있다. 이는 본 발명의 실시예에 특별하게 제한되는 것은 아니다. 응용 프로그램은 일반적으로 응용 계층에 속하며, 프로세서(120)는 저장 장치(150)의 응용 프로그램(121)을 판독하고 실행할 수 있으며, 이로써 특정 기능을 구현할 수 있다. 대응하여, 응용 프로그램(22)(또는 수신 응용 프로그램으로 지칭됨)은 수신 노드(20)에서 실행된다. 응용 프로그램(121 및 22)은 프로토콜 스택(130 및 21)에 기초하여 데이터 전송을 수행할 수 있다. 도 3을 참조하면, 전송 노드(110) 및 수신 노드(20)의 프로토콜 스택은 적어도 네트워크 계층 프로토콜(IP) 및 전송 계층 프로토콜(UDP는 본 발명의 실시예에서 선택됨)을 포함한다.
또한, 도 3에 나타난 바와 같이, 본 발명의 실시예에서의 데이터 전송 시스템의 전송 노드 및 수신 노드의 프로토콜 스택은 또한 데이터 전송 가속 능력을 제공하는 데 사용되는 가속 프로토콜 Fillp를 포함한다. 도 4에 나타난 바와 같이, 전송 노드의 Fillp은 주로 상위 계층 응용 프로그램의 데이터 패킷을 캡슐화하고, 안정된 전송률로 메모리로부터 수신 노드로 끊임없이 데이터 패킷을 "푸시"하는 데 사용된다. 수신 노드의 Fillp은 주로 손실된 데이터 패킷을 검출하고, 전송 노드가 손실된 데이터 패킷을 재전송하도록 지시하기 위해 "풀(pull)" 요청을 전송하는 데 사용된다. Fillp은 전형적으로 UDP를 통해 운반될 수 있다. 전송 노드의 Fillp에 의해 처리된 후, 캡슐화를 위해 데이터 패킷이 기본 UDP 및 IP로 연속적으로 전송되고, 마지막으로 물리 계층의 링크를 사용하여 전송된다. 대응하여, 수신 노드가 물리 계층으로부터 데이터 패킷을 수신한 후, IP 및 UDP는 데이터 패킷을 캡슐 해제한 후, 처리를 위해 데이터 패킷을 Fillp에 전송한다. 그 다음, 데이터 패킷은 수신 노드의 메모리에 기록되고, 마지막으로 상위 계층 응용 프로그램에 제출된다. 전송 노드(110) 및 수신 노드(20)의 프로토콜 스택에 의해 패킷에 대한 캡슐화 및 캡슐 해제를 수행하는 프로세스는 도 5에 나타난다. 도 5로부터, 패킷 캡슐화 프로세스는 본질적으로 프로토콜 스택의 각 계층 프로토콜의 사양에 따라 패킷의 헤더 및/또는 프레임 트레일러를 추가하는 프로세스이며; 패킷 캡슐 해제 프로세스는 본질적으로 프로토콜 스택의 각 계층 프로토콜의 사양에 따라 패킷으로부터 헤더 및/또는 프레임 트레일러를 제거하는 프로세스라는 것을 알 수 있다.
보다 구체적으로, 도 3에 따르면, 전송 노드 측에서, Fillp 프로토콜은 주로 응용 계층에 대한 데이터 패킷 캡슐화, 특정 레이트에 기반한 데이터 패킷 전송 및 수신 노드의 패킷 손실 피드백 정보에 기반한 재전송을 구현하며; 수신 노드 측에서, Fillp 프로토콜은 주로 데이터 패킷 캡슐 해제, 패킷 손실 검출 및 패킷 손실 처리의 기능을 구현한다. 선택적으로, Fillp 프로토콜은 또한 이하의 기능: 수신 노드의 피드백 정보에 기반한 전송률 제어, 데이터 패킷 암호화/복호화, 네트워크 환경 초기화 또는 순방향 오류 정정(FEC)의 피드백 정보에 기반한 전송률 제어 중 적어도 하나의 기능을 포함할 수 있다. 가속 프로토콜 Fillp의 기능 구현 상세한 설명에 대해서는, 후속 실시예를 참조한다. 일 실시예에서, 도 3에 나타난 바와 같이, Fillp은 전송 계층 위에 위치될 수 있다는 것을 이해할 수 있다. 다른 실시예에서, Fillp 가속 능력은 전송 계층 프로토콜(UDP와 같은)의 확장으로서 사용될 수 있으며, 전송 계층 프로토콜에 통합되거나, 응용 프로그램 또는 응용 프로그램 플러그 인의 형태로 응용 계층 상에서 구현될 수 있거나, 또는 물리 계층(네트워크 어댑터) 및 네트워크 계층(IP) 사이에 위치될 수도 있다. 이는 본 발명의 실시예에 특별하게 제한되지 않는다.
도 3에 나타난 바와 같이, 일 실시예에서, 전송 노드 및 수신 노드가 네트워크 환경 초기화를 완료한 후, 연결이 확립된다(UDP 연결은 본 발명의 실시예에서 설명을 위한 일례로서 사용됨). 전송 노드에서 실행되는 응용 프로그램은 데이터를 전송 버퍼에 기록하고, 전송 버퍼는 일반적으로 전송 노드의 메모리이거나 메모리의 일부이다. Fillp은 이중 시퀀스 번호 메커니즘을 사용하여 응용 프로그램의 데이터 패킷을 캡슐화하고, 캡슐화를 위해 기본 UDP 프로토콜 및 IP 프로토콜에 데이터 패킷을 전송한 후, 물리 계층의 물리 링크를 사용하여 데이터 패킷을 수신 노드에 전송한다. 구체적으로, 도 6에 나타난 바와 같이, 각 데이터 패킷은 헤더(Header) 및 데이터 일부(data)를 포함한다. 헤더는 2개의 시퀀스 번호: 랜덤 시퀀스 번호(SEQ를 사용하여 표현됨) 및 스크롤링 시퀀스 번호(PKT.SEQ를 사용하여 표현됨)를 포함한다. TCP 데이터 패킷 내의 헤더의 시퀀스 번호(sequence number)의 기능과 동일하게, 랜덤 시퀀스 번호는 데이터 패킷 식별자(데이터 부분 정보)를 식별하는 데 사용되고 이로써 데이터가 전송 버퍼에 순서대로 정렬되도록 보장한다. 예를 들어, TCP 패킷 내의 헤더의 시퀀스 번호와 유사하게, 랜덤 시퀀스 번호는 32 바이트 비 심볼값(non-symbol value)일 수 있다. 연결이 확립된 후, 전송 노드에 의해 전송된 첫 번째 데이터 패킷의 랜덤 시퀀스 번호는 일반적으로 전송 노드에 의해 랜덤하게 생성되고, 후속 데이터 패킷의 랜덤 시퀀스 번호는 첫 번째 데이터 패킷의 랜덤 시퀀스 번호에 기초하여 데이터 패킷의 데이터 부분 길이(점유된 바이트의 양)에 따라 증가되거나 감소될 수 있거나; 또는 데이터 패킷의 랜덤 시퀀스 번호는 특정 알고리즘(해쉬 알고리즘 또는 메시지 다이제스트 알고리즘과 같은)을 사용하여 데이터 패킷의 데이터 일부 컨텐츠에 따라 생성될 수 있다. 스크롤링 시퀀스 번호는 전송 노드에 의해 데이터 패킷을 전송하는 시퀀스(또는 전송 노드에 의해 이미 전송된 데이터 패킷의 양과 동일할 수 있음)에 대응한다. 예를 들어, 전송 노드가 현재 n개의 데이터 패킷을 전송하면, 전송 노드에 의해 전송될 다음 데이터 패킷의 스크롤링 시퀀스 번호는 n+1, n+2 또는 라인 관계 또는 n과의 단조 함수 관계의 다른 값일 수 있다. 동일한 연결 또는 동일한 세션에서, 전송 노드에 의해 전송된 각 데이터 패킷의 스크롤링 시퀀스 번호 및 전송 노드에 의해 연속적으로 전송된 다수의 데이터 패킷의 스크롤링 시퀀스 번호는 단조 증가 시퀀스, 단조 감소 시퀀스 또는 기하학적 시퀀스여야 한다. 본 발명의 실시예에서, 랜덤 시퀀스 번호는 데이터 패킷의 데이터 부분과 관련되고, 2개의 데이터 패킷의 데이터 일부가 동일하면, 2개의 데이터 패킷의 랜덤 시퀀스 번호는 동일하다. 예를 들어, 데이터 패킷의 랜덤 시퀀스 번호는 N이고, 데이터 패킷이 처음으로 전송되는지 또는 재전송되는지 여부에 관계 없이, 데이터 패킷의 랜덤 시퀀스 번호는 일정하다. 스크롤링 시퀀스 번호는 데이터 패킷의 전송 시퀀스에만 관련되며 데이터 패킷의 데이터 부분과 무관하다. 즉, 동일한 연결 또는 동일한 세션에서, 각 데이터 패킷의 스크롤링 시퀀스 번호는 고유하고, 데이터 패킷의 스크롤링 시퀀스 번호는 전송 시퀀스와 단조 함수 관계에 있다. 이러한 방식으로, 제1 전송 및 재전송에서, 데이터 패킷의 랜덤 시퀀스 번호는 일정하지만, 스크롤링 시퀀스 번호는 변한다. 또한, 수신 노드 측에서 Fillp은 수신된 데이터 패킷의 스크롤링 시퀀스 번호에 따라 손실된 데이터 패킷을 신속하게 검출할 수 있으며, 패킷 손실 정보를 전송 노드에 피드백하여, 손실된 데이터 패킷을 신속하게 재전송하도록 전송 노드에 요청한다. 일 실시예에서, 상기 설명된 이중 시퀀스 번호 메커니즘은 기존의 TCP에 적용될 수 있으며, 이로써 TCP에서의 패킷 손실 검출 문제, 특히 재전송된 패킷 손실 검출 문제를 해결한다. 또한, 다른 실시예에서, 수신 노드 측의 Fillp은 수신율 및 데이터 패킷 손실률과 같은 정보를 전송 노드에 피드백할 수 있고, 이로써 전송 노드가 전송률을 조정한다.
본 발명의 실시예에서의 데이터 전송 시스템에서, 종래의 "윈도우"-기반 전송 메커니즘 및 TCP에서의 손실된 패킷 타임아웃 재전송 메커니즘이 사용되지 않는다; 대신, 전송 노드의 메모리가 전송 버퍼로서 사용되며, 전송 노드는 일정 속도로 메모리부터 데이터 패킷을 수신 노드에 "푸시"한다. 수신 노드는 이미 수신된 연속 데이터 패킷에 의해 점유된 전송 버퍼를 제 시간에 해제하며, 손실된 패킷을 검출할 때 "풀(pull)" 요청을 전송하며, 이로써 전송 노드는 손실된 패킷을 재전송한다. 전송 노드가 데이터 패킷을 능동적으로 "푸시"하고 수신 노드가 "푸시된" 데이터에 따라 손실된 패킷을 "풀"하는 메커니즘은 링크에서 패킷 손실을 허용하여, 이로써 혼잡 및 레이트 조정을 피하고, 링크에서 높은 처리율 및 높은 전송률을 달성할 수 있다.
상기 실시예에서 설명된 가속 프로토콜 Fillp의 기본 프레임워크 및 원리에 기초하여, 이하에서는 Fillp 프로토콜이 배치된 후, 본 발명의 일 실시예에서의 데이터 전송 시스템의 데이터를 전송하는 방법을 설명한다. 도 7에 나타난 바와 같이, 본 방법은 주로 이하의 단계를 포함한다.
단계 703: 전송 노드와 수신 노드 사이에 확립된 연결(예: UDP 연결)에 기초하여, 전송 노드는 다수의 데이터 패킷을 초기 전송률로 수신 노드에 전송하며, 여기서 각 데이터 패킷은 2개의 시퀀스 번호: 랜덤 시퀀스 번호 및 스크롤링 시퀀스 번호를 운반한다. 랜덤 시퀀스 번호 및 스크롤링 시퀀스 번호의 정의와 구현에 대해서는, 도 5 및 도 6의 관련 실시예의 설명을 참조하며, 상세한 설명은 다시 설명되지 않는다. TCP에서, 데이터 패킷은 윈도우를 기초하여 전송되며, 윈도우 내의 모든 데이터 패킷은 최선의 노력으로 완전하게 전송된다는 것을 알아야 한다. 결과적으로, 대량의 데이터 패킷이 즉시 네트워크에 압축되고, 즉각적인 혼잡 문제가 야기될 수 있다. 그러나, 본 발명의 실시예에서의 데이터 전송 방법에서, 데이터 패킷은 특정 레이트로 고르게 전송된다. 이는 데이터 패킷이 네트워크에 즉시 주입되는 경우를 감소시킬 수 있다. 또한, TCP와 달리, 전송 윈도우 또는 혼잡 윈도우와 같은 제한으로 인해 패킷이 전송될 수 없는 현상을 피할 수 있고, 이로써 데이터 전송률 및 대역폭 활용도를 크게 향상시킬 수 있다.
일 실시예에서, 전송 노드의 초기 전송률은 사용자 인터페이스, 스크립트 또는 구성 파일을 사용하여 사용자에 의해 구성될 수 있다. 다른 실시예에서, 초기 전송률은 전송 노드와 수신 노드 사이의 네트워크 대역폭에 따라 전송 노드에 의해 자동으로 구성될 수 있다. 전송 노드의 전송 버퍼에 전송될 데이터 패킷이 있으면, 전송 노드는 전송 버퍼에서 데이터 패킷을 전송하기 위해 전송률 조정 명령이 수신될 때까지 계속해서 초기 전송률을 사용한다.
단계 705: 수신 노드는 다수의 데이터 패킷을 수신한다.
일 실시예에서, 수신 노드에 의해 데이터 패킷을 수신하는 레이트는 전송 노드의 초기 전송률과 일치하며, 예를 들어 둘은 동일하거나 유사하다. 일 실시예에서, 수신 노드의 수신율이 전송 노드의 초기 전송률보다 크거나 작을 때, 제어 정보는 전송 노드에 피드백될 수 있으며, 이로써 전송 노드는 초기 전송률이 수신 노드의 수신율과 일치하도록 초기 전송률을 조정한다.
단계 706: 수신 노드는 하나 이상의 수신된 데이터 패킷에 운반된 시퀀스 번호에 따라 하나 이상의 손실된 데이터 패킷을 검출하고, 검출된 손실된 데이터 패킷에 관한 정보에 따라 패킷 손실 피드백 정보를 생성하며, 패킷 손실 피드백 정보를 전송 노드에 전송한다.
일 실시예에서, 수신 노드는 수신된 데이터 패킷의 스크롤링 시퀀스 번호 PKT.SEQ에 따라 손실된 패킷을 신속하게 검출할 수 있다. 예를 들어, 수신 노드가 스크롤링 시퀀스 번호 PKT.SEQ가 3인 데이터 패킷을 수신한 후, PKT.SEQ가 1인 데이터 패킷이 수신되지만, PKT.SEQ가 2인 데이터 패킷이 수신되지 않으면, PKT.SEQ가 2인 데이터 패킷이 손실되었다고 결정한다. 패킷 손실이 다수의 ACK를 사용하여 결정될 필요가 있는 종래의 TCP에 비해, 본 발명의 실시예에서의 방법이 더 효율적이다.
일 실시예에서, 수신 노드는 검출된 손실된 데이터 패킷의 랜덤 시퀀스 번호 또는 스크롤링 시퀀스 번호를 ACK 패킷에 추가하고, ACK 패킷을 전송 노드에 전송한다.
다른 실시예에서, 수신 노드는 검출된 손실된 데이터 패킷의 시퀀스 번호를 NACK(Negative Acknowledge) 제어 패킷(이하 짧게 NACK)에 추가하고, NACK 제어 패킷을 전송 노드에 전송한다. 구체적으로, 가능한 구현 방식에서, NACK는 패킷 손실 표시 필드를 포함하며, 필드는 손실된 데이터 패킷의 스크롤링 시퀀스 번호를 운반하는 데 사용된다. 예를 들어, 수신 노드가 현재 이미 수신된 데이터 패킷의 시퀀스 번호에 따라, PKT.SEQ가 2인 데이터 패킷이 손실되었다고 결정하면, NACK의 패킷 손실 표시 필드가 2로 즉시 채워지며, NACK가 전송 노드에 전송된다. 다른 가능한 구현 방식에서, 도 8에 나타난 바와 같이, NACK는 패킷 손실 시작 필드 START 및 패킷 손실 종료 필드 END를 포함할 수 있으며, 패킷 손실 시작 필드 START 및 패킷 손실 종료 필드는 각각 첫 번째 패킷의 스크롤링 시퀀스 번호 및 다수의 연속 손실된 패킷의 마지막 필드를 운반하는 데 사용된다. 전송 시퀀스에 따라 데이터 패킷의 스크롤링 시퀀스 번호가 증가하는 것을 이해할 수 있으므로, 수신 노드가 다수의 연속 손실된 패킷을 검출하면, 패킷 손실 시작 필드 및 패킷 손실 종료 필드는 각각 최대 스크롤링 시퀀스 번호를 갖는 데이터 패킷 및 다수의 연속 손실된 패킷에서 가장 작은 스크롤링 시퀀스 번호를 갖는 데이터 패킷을 나타낸다. 수신 노드가 현재 단일 손실된 데이터 패킷만을 검출하면, 구성된 NACK에서, START 및 END 필드의 값은 동일하고, 둘 다 손실된 데이터 패킷의 스크롤링 시퀀스 번호이다. 도 8에 나타난 바와 같이, 수신 노드가 PKT.SEQ가 1인 데이터 패킷을 수신한 후 PKT.SEQ가 5인 데이터 패킷을 수신할 때, PKT.SEQ가 2 내지 4인 3개의 데이터 패킷이 연속적으로 손실되었다고 결정하며, START가 2이고 END가 4인 NACK가 구성되어, 이로써 전송 노드가 연속 손실된 데이터 패킷을 재전송하도록 요청한다. 수신 노드가 PKT.SEQ가 7인 데이터 패킷을 계속 수신할 때, PKT.SEQ가 6인 데이터 패킷이 손실된 것으로 결정되므로, START가 6이고 END가 6인 NACK가 구성되고 전송 노드에 전송된다. START 및 END 필드를 사용하여, 하나의 NACK 제어 패킷을 사용하여 다수의 연속 손실된 데이터 패킷이 전송 노드에 피드백될 수 있고, 이로써 NACK 제어 패킷의 양을 감소시키고, 네트워크 자원을 감소시키며, 재전송 효율을 향상시킨다는 것을 알 수 있다. 다른 가능한 구현 방식에서, NACK에 포함된 패킷 손실 표시 필드는 또한 손실된 데이터 패킷의 랜덤 시퀀스 번호를 운반할 수 있다. 예를 들어, 수신 노드가 현재 이미 수신된 데이터 패킷의 스크롤링 시퀀스 번호(PKT.SEQ)에 따라, PKT.SEQ가 2인 데이터 패킷이 손실되었다고 결정하면, 수신 노드는 데이터 패킷의 랜덤 시퀀스 번호 및 스크롤링이 시퀀스 번호 사이의 맵핑 관계에 따라, 손실된 데이터 패킷에 대응하는 랜덤 시퀀스 번호를 결정하고, 결정된 랜덤 시퀀스 번호를 NACK의 패킷 손실 표시 필드에 채우며, NACK를 전송 노드에 전송하여, 이로써 전송 노드가 NACK의 패킷 손실 표시 필드의 표시에 따라 대응하는 데이터 패킷을 재전송한다.
단계 707: 전송 노드는 수신된 패킷 손실 피드백 정보의 표시에 따라 손실된 데이터 패킷을 재전송한다.
일 실시예에서, 전송 노드는 수신된 NACK에 운반된 스크롤링 시퀀스 번호에 기초하고 전송 노드에 의해 전송된 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계에 기초하여 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정한 후, 결정된 랜덤 시퀀스 번호에 따라, 대응하는 데이터 패킷이 전송 버퍼로부터 발견되며 재전송된다. 재전송된 데이터 패킷은 기존 랜덤 시퀀스 번호 및 새로운 스크롤링 시퀀스 번호를 운반한다. 이 경우, 전송 노드는 일반적으로 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계를 기록한다. 예를 들어, 전송 노드는 이미 전송된 및/또는 전송될 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계를 해쉬 테이블의 형태로 저장하며, 이로써 후에 NACK가 수신될 때, 대응하는 손실된 데이터 패킷은 NACK에 운반된 스크롤링 시퀀스 번호에 따라 결정된다.
다른 실시예에서, 전송 노드는 수신 노드에 의해 수신된 ACK 패킷에 운반된 시퀀스 번호에 따라 수신 노드에 의해 이미 수신된 데이터 패킷을 손실된 데이터 패킷으로 결정하고, 손실된 데이터 패킷을 재전송할 수 있다.
또한, 일 실시예에서, NACK는 해제 필드(Release SEQ)를 더 포함하고, 해제 필드는 현재 수신 노드에 의해 이미 수신된 데이터 패킷의 랜덤 시퀀스 번호 및/또는 스크롤링 시퀀스 번호를 나타내는 데 사용된다. 도 8에 나타난 바와 같이, 수신 노드가 PKT.SEQ가 5인 데이터 패킷을 수신할 때, PKT.SEQ가 2 내지 4인 3개의 데이터 패킷이 손실되고, 패킷이 손실되기 전에 이미 수신된 데이터 패킷의 최대 PKT.SEQ가 1이라고 결정한다. 따라서, Release SEQ 필드에 채워진 값이 1이며, 이로써 PKT.SEQ가 1인 데이터 패킷에 의해 점유된 전송 버퍼를 해제하도록 전송 노드에 지시한다. 또한, 수신 노드가 PKT.SEQ가 6인 데이터 패킷이 손실된 것을 검출한다고 가정하면, PKT.SEQ가 2 내지 4인 재전송된 데이터 패킷(이전에 손실된 데이터 패킷으로서 결정된 3개의 데이터 패킷)이 수신되면, Release SEQ 필드 값이 5인 NACK가 구성되고, 이로써 PKT.SEQ가 2내지 5인 데이터 패킷에 의해 점유된 전송 버퍼를 해제하도록 전송 노드에 지시한다. 대응하여, 실시예에서, 전송 노드는 또한 단계 709: 수신된 NACK의 Release SEQ 필드에 따라 전송 버퍼로부터, Release SEQ 필드에 의해 나타난 데이터 패킷에 의해 점유된 공간을 해제하는 단계를 실행한다. 전송 버퍼는 일반적으로 전송 노드의 메모리 또는 메모리의 일부이다.
본 발명의 모든 실시예에서, 손실된 데이터 패킷은 이미 수신된 데이터 패킷에 관한 정보에 따라 수신 노드에 의해 결정된 손실된 데이터 패킷을 지칭한다는 것을 알아야 한다. 네트워크 전송에서 예측할 수 없는 요인 때문에, 수신 노드에 의해 결정된 손실된 데이터 패킷은 실제로 손실되지 않을 수 있으며, 즉 수신 노드가 "실수를 할" 수 있지만, 실수는 본 발명의 효과에 실제로 영향을 미치지 않는다. 선택적으로, 패킷 손실 피드백 정보를 수신한 후, 전송 노드는 손실된 데이터 패킷을 즉시 재전송하지 않을 수 있고, 잠시 동안 대기하여, 무질서하게 수신된 패킷에 초래한 "실수"의 영향을 감소시킬 수 있으며, 여기서 대기 시간은 사용자에 의해 구성될 수 있다.
상기 설명한 바와 같이, 본 발명의 상기 실시예에서, 손실된 데이터 패킷이 데이터 패킷의 스크롤링 시퀀스 번호를 사용하여 신속하게 검출되며, 손실된 데이터 패킷이 검출된 후, 패킷 손실 피드백 정보가 전송 노드에 전송되며, 이로써 손실된 데이터 패킷을 제 시간에 재전송하도록 요청한다는 것을 알 수 있다. 데이터 패킷 전송 및 상위 계층 응용 프로그램으로의 제출 동안 시퀀스 보존 요구사항 때문에, 데이터 패킷이 수신 노드에 의해 수신되지 않으면, 데이터 패킷에 후속하는 수신된 데이터 패킷은 데이터 패킷이 재전송되고 수신 노드에 의해 수신될 때까지 수신 버퍼에 저장되어야 한다. 그 다음, 후속 데이터 패킷이 응용 프로그램에 제출되고, 후속 데이터 패킷에 의해 점유되는 수신 버퍼가 해제된다. 즉, 수신 버퍼의 데이터가 비연속적이면(즉, 수신 버퍼에 누락된 데이터 패킷이 있는 경우), 수신 버퍼는 제 시간에 해제될 수 없다. 그러나, 일부 경우에서, 예를 들어, 링크 혼잡 및 다른 이유로 인해, 수신 노드에 의해 전송된 패킷 손실 피드백 정보가 전송 프로세스에서 손실되거나, 전송 노드에 의해 재전송된 손실된 데이터 패킷이 다시 손실되고, 수신 노드는 손실된 데이터 패킷을 오랜 시간동안 수신할 수 없다. 수신 버퍼의 데이터 패킷의 누락은 비연속적 데이터를 초래하고, 결과적으로, 수신 버퍼의 다른 데이터 패킷은 오랜 시간동안 해제될 수 없으며, 수신 버퍼는 차단된다. 수신 버퍼에서 누락된 데이터 패킷, 즉 차단된 수신 버퍼(전형적으로, 수신 노드에 의해 수신되지 않고 전송 노드에 의해 손실 데이터 패킷으로서 감지되지 않는 데이터 패킷 및 재전송된 후 다시 손실된 데이터 패킷)를 초래하는 데이터 패킷은 일반적으로 HOL(head of line) 패킷으로 지칭된다. 수신 버퍼가 HOL 패킷에 의해 차단되는 현상은 일반적으로 HOL 효과로 지칭된다. 수신 버퍼가 HOL 패킷에 의해 차단되는 문제점을 해결하기 위해, 본 발명의 실시예에서의 데이터 전송 방법은 이하를 더 포함한다:
단계 713: 수신 노드는 주기적으로 PACK(Period ACK) 제어 패킷(이하 짧게 PACK)을 전송 노드에 전송한다. 도 9에 나타난 바와 같이, PACK은 HOL SEQ 필드를 포함하며, 필드는 HOL 패킷의 랜덤 시퀀스 번호 정보를 운반하는 데 사용된다. 구체적으로, 수신 노드가 손실된 데이터 패킷을 검출하고 패킷 손실 피드백 정보를 전송 노드에 전송한 후, 손실된 데이터 패킷이 아직 특정 시간 간격 내에 수신되지 않았거나 PACK 타이머가 타임 아웃될 때, 손실된 데이터 패킷이 HOL 패킷이라고 결정하며, HOL 패킷의 랜덤 시퀀스 번호 정보를 전송되는 다음 PACK에 추가한다. 여기서, 시간 간격은 하나의 RTT일 수도 있거나, 또는 실제 요구사항에 따라 사용자에 의해 설정된 값일 수도 있다. 수신 노드는 HOL 패킷의 랜덤 시퀀스 번호를 PACK의 HOL SEQ 필드에 채운다. 이러한 방식으로, PACK을 수신한 후, 전송 노드는 HOL SEQ 필드의 표시에 따라 HOL 패킷을 재전송할 수 있다. PACK이 주기적으로 전송되므로, PACK이 손실되더라도, HOL 패킷에 대한 정보는 후속 PACK을 사용하여 전송 노드에 여전히 피드백될 수 있으며, 이로써 수신 버퍼가 HOL 패킷에 의해 차단되는 상기 문제점이 잘 해결된다. 일 실시예에서, 수신 노드에 의해 PACK을 전송하는 기간은 max(RTT/a, 임계값)(1<a<6)에 의해 계산될 수 있다. RRT는 정식으로 왕복 시간이며, 데이터 패킷이 왕복 방식으로 전송 노드와 수신 노드 사이에 한번 전송되는 동안의 시간을 지칭한다. 또한, 여기서 임계값은 사용자에 의해 설정될 수 있으며, 본 발명의 실시예에서는 임계값이 15ms로 설정된다. 분명한 것은, 여기서 계산 공식은 전형적인 예일 뿐이라는 것이다. 기간은 실제 요구사항에 따라 통상의 기술자에 의해 정의될 수 있으며, 공식에 제한되지 않는다. 또한, 첫 번째 데이터 패킷을 수신한 후, 수신 노드는 PACK 타이머를 가능하게 할 수 있고, 타이머의 기간은 상기 설명된 방법에 따라 설정될 수 있다. 타이머가 타임 아웃할 때, 수신 노드는 PACK을 전송하고, 타이머를 리셋하며, 타이밍을 다시 시작한다.
선택적으로, 도 9에 나타난 바와 같이, 일 실시예에서, 각 PACK은 데이터 패킷 수신율 및/또는 데이터 패킷 손실률을 운반한다. 데이터 패킷 수신율은 수신 노드에 의해 데이터 패킷을 수신하는 레이트 또는 수신 노드에 의해 수신 버퍼로부터 데이터 패킷을 판독하는 레이트 또는 수신 노드에 의해 유효한 데이터 패킷을 수신하는 레이트를 나타내는 데 사용되며, 여기서 유효한 데이터 패킷은 비 중복(non-redundant) 데이터 패킷을 지칭한다. 데이터 패킷 손실률은 수신 노드에 의해 카운트된 데이터 패킷 손실률이며, 일정 시간 내에 네트워크 상태를 나타내는 데 사용된다. 대응하여, 본 발명의 실시예에서의 데이터 전송 방법은 또한 이하를 더 포함한다:
단계 715: 전송 노드는 수신된 PACK에 따라 초기 전송률을 조정하여, 이로써 초기 전송률은 PACK에 의해 나타난 데이터 패킷 수신율에 적응된다.
단계 717: 전송 노드는 조정된 전송률에 기초하여 데이터 패킷을 수신 노드에 계속 전송한다.
단계 719: 수신 노드는 데이터 패킷을 수신하고 상기 단계 706 내지 715를 반복한다.
선택적으로, 도 9에 나타난 바와 같이, 일 실시예에서, PACK은 또한 해제 필드(Release SEQ)를 포함하고, 필드의 특정 의미는 NACK의 Release SEQ 필드의 의미와 동일하며, 둘 다 수신 노드에 의해 이미 수신된 데이터 패킷에 점유된 전송 버퍼를 제 시간에 해제하도록 전송 노드에 지시하는 데 사용된다. 선택적으로, 임의의 상기 설명된 실시예에 기초하여, 다른 실시예에서, 단계 703 이전에, 전송 노드 및 수신 노드는 또한 단계 701: 통신 연결을 확립하기 위해 네트워크 환경을 초기화하는 단계를 실행한다.
선택적으로, 임의의 상기 설명된 실시예에 기초하여, 다른 실시예에서, 전송 노드는 데이터 패킷에 이미 전송된 랜덤 시퀀스 번호 및 스크롤링 시퀀스 번호 사이의 맵핑 관계를 기록한다. 예를 들어, 맵핑 관계는 다른 형태의 해쉬 테이블 또는 맵핑 테이블에 저장될 수 있다. 또한, 일 실시예에서, 전송 노드는 또한 단계 711: 맵핑 테이블을 동적으로 업데이트하도록, 데이터 패킷에 이미 전송된 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계를 맵핑 테이블에 추가하는 단계를 실행한다.
본 발명의 실시예에서 제공되는 데이터 전송 방법 및 시스템에서, 전송 노드는 상대적으로 일정한 전송률로 데이터 패킷을 수신 노드에 연속적으로 전송하며, 수신 노드는 손실된 데이터 패킷을 검출한 후 패킷 손실 피드백 정보를 전송 노드에 즉시 전송하여, 이로써 손실된 데이터 패킷을 재전송하도록 전송 노드에 요청한다. 데이터 패킷이 전송 윈도우 또는 혼잡 윈도우와 같은 제한 때문에 전송될 수 없는 현상이 있는 TCP와는 달리, 적절한 메모리의 경우, 전송 노드가 데이터 패킷을 능동적으로 "푸시"하고 수신 노드가 "푸시된" 데이터에 따라 손실된 패킷을 "풀"하는 메커니즘은 데이터 전송률 및 대역폭 활용도를 크게 향상시킬 수 있다. 또한, 데이터 패킷이 특정 레이트로 전송되기 때문에, 데이터 패킷이 네트워크에 순간적으로 주입되는 경우를 줄일 수 있다. 또한, 데이터 패킷은 이중 시퀀스 번호에 기초하여 전송되고, 이로써 수신 노드는 손실된 데이터 패킷을 신속하게 검출할 수 있다. 또한, 해제 가능한 프로토콜 스택 메모리는 Release SEQ 필드를 NACK에 추가함으로써 신속하게 해제된다. 또한, 수신 버퍼가 HOL 패킷에 의해 차단되는 문제점은 주기적인 PACK 제어 패킷을 사용하여 해결된다.
도 10을 참조하면, 이하는 본 발명의 실시예에서의 전송 노드의 동작 프로세스를 설명한다. 도 10에 따르면, 전송 노드는 상위 계층 응용 프로그램으로부터 수신된 데이터를 캡슐화한 후, 캡슐화된 데이터를 전송 버퍼에 기록한다. 데이터 패킷을 캡슐화할 때, 전송 노드는 데이터 패킷의 헤더에 상기 실시예에서 설명된 랜덤 시퀀스 번호 및 스크롤링 시퀀스 번호를 추가한다. 전송 노드가 수신 노드에 의해 전송된 NACK를 현재 수신하면, 전송 노드는 NACK의 패킷 손실 표시 필드 및 해제 필드에 따라 해제 가능한 전송 버퍼를 해제하고, 손실된 패킷을 손실된 패킷 시퀀스에 추가한다. 전송 노드가 수신 노드에 의해 전송된 PACK을 현재 수신하면, 전송 노드는 데이터 패킷 수신율 및/또는 PACK에서 운반된 데이터 패킷 손실률에 따라 전송률을 조정한다. 전송 노드가 PACK과 NACK 모두 현재 수신하지 않으면, 손실된 패킷 시퀀스가 비어 있는지 여부가 결정되며, 여기서 손실된 패킷 시퀀스는 수신 노드에 의해 손실된 데이터 패킷으로 결정된 데이터 패킷을 저장하는 데 사용되며; 손실된 시퀀스가 비어 있지 않으면, 손실된 패킷 시퀀스의 손실된 데이터 패킷이 전송되거나; 또는 손실된 패킷 시퀀스가 비어 있으면, 전송 버퍼가 비어 있는지 여부가 결정된다. 전송 버퍼가 비어 있지 않으면, 데이터 패킷은 특정 레이트에 따라 전송 버퍼로부터 전송되거나; 또는 전송 버퍼가 비어 있으면, 상위 계층 응용 프로그램이 전송을 완료하는지 여부가 결정된다. 상위 계층 응용 프로그램이 전송을 완료하면, 수신 노드에 확립된 연결(UDP 연결과 같은)이 중단되고, 전송 버퍼가 해제되거나; 또는 상위 계층 응용 프로그램이 전송을 완료하지 않으면, 상위 계층 응용 프로그램으로부터 데이터를 수신하고 상기 프로세스의 실행을 대기한다.
대응하여, 도 11을 참조하면, 이하는 본 발명의 실시예의 수신 노드의 동작 프로세스를 설명한다. 도 11에 따르면, 데이터 패킷을 수신한 후, 수신 노드는 현재 이미 수신된 데이터 패킷이 응용 프로그램에 제출될 수 있는 연속 데이터 패킷인지 여부를 결정한다. 수신된 데이터 패킷이 응용 프로그램에 제출될 수 있는 연속 데이터 패킷이면, 연속 데이터 패킷이 응용 프로그램에 제출되며, 이미 제출된 데이터 패킷에 의해 점유되는 전송/수신 버퍼가 해제된다. 수신된 데이터 패킷이 응용 프로그램에 제출될 수 있는 연속 데이터 패킷이 아니면, 수신 노드는 데이터 패킷이 손실되었다고 결정하고, NACK을 전송 노드에 전송하며, 현재 수신된 데이터 패킷을 수신 버퍼에 위치시킨다. 여기서 연속 데이터 패킷은 연속 전송 시퀀스의 데이터 패킷이다. 또한, 수신 노드는 PACK 타이머(일반적으로 첫 번째 데이터 패킷이 수신된 후 가능해지는)를 가능하게 하고, 타이머가 타임 아웃되면, 수신 노드는 PACK을 전송하기 위해 트리거되고, 타이머를 리셋하며, 타이밍을 재시작한다. 응용 프로그램이 모든 데이터 패킷의 수신을 완료하면, 수신 노드는 전송 노드에 확립된 연결(예: UDP 연결)을 중단하고 수신 버퍼를 해제한다.
본 발명의 일 실시예에서, 도 10 및 도 11의 상기 설명된 프로세스는 각각 전송 노드 및 수신 노드의 프로토콜 스택에 의해 구현될 수 있다. 보다 구체적으로, 일 실시예에서, 도 10 및 도 11의 프로세스는 전송 노드 및 수신 노드에 각각 배치된 가속 프로토콜(Fillp)에 의해 구현될 수 있다. 프로토콜 계층의 관점으로부터, Fillp은 임의의 계층에서 구현될 수 있다. 예를 들어, 일 실시예에서, Fillp은 네트워크 계층 및 물리 계층 사이에 위치될 수 있거나, 또는 전송 계층 프로토콜에 위치될 수 있으며, 예를 들어, Fillp이 UDP에서 운반될 수 있다. 다른 실시예에서, 상기 설명된 프로세스는 전송 노드 및 수신 노드의 프로토콜 계층의 전송 계층 프로토콜(예: UDP)에 의해 직접 구현될 수 있으며, 분명하게, 기능 확장은 기존 전송 계층 프로토콜에서 수행될 필요가 있다. 다른 실시예에서, 상기 설명된 프로세스는 전송 노드 및 수신 노드에 배치된 응용 프로그램 또는 응용 프로그램 플러그 인에 의해 각각 구현될 수 있다.
이하는 도 12에 나타난 일례를 사용하여 본 발명의 일 실시예에서의 데이터 전송 시스템의 데이터 패킷 전송 및 수신 절차를 상세하게 설명한다. 도 12에 따르면, 절차는 주로 이하의 단계를 포함한다.
단계 1: 전송 노드는 초기 전송률을 결정하며, 수신 노드에 확립된 연결(예: UDP 연결)을 사용하여 초기 전송률로 다수의 데이터 패킷을 전송한다. 전송 노드는 이중 시퀀스 번호(랜덤 시퀀스 번호 및 스크롤링 시퀀스 번호 PKT.SEQ, 설명의 편의를 위해, 이하에서, SEQ를 사용하여 랜덤 시퀀스 번호가 표현되고 PKT를 사용하여 스크롤링 시퀀스 번호가 표현됨)를 각 데이터 패킷의 헤더에 추가한다. 예를 들어, 데이터 패킷 1에서, SEQ는 1이고 PKT는 1이며; 데이터 패킷 2에서, SEQ는 2이고 PKT는 2이다. 이해의 편의를 위해, 도 12에서, 각 데이터 패킷이 단지 1 바이트 데이터만을 운반한다고 가정하면, 인접한 데이터 패킷의 랜덤 시퀀스 번호 사이의 차이는 단지 1이라는 것을 알 수 있다. 선택적으로, 전송 노드는 PKT.SEQ->SEQ 해쉬(hash) 테이블을 확립한다.
단계 2: 수신 노드가 첫 번째 데이터 패킷(PKT=1)을 수신할 때, PACK 타이머가 타이밍을 시작한다.
단계 3: PKT가 2, 3 및 4인 데이터 패킷은 링크 이유로 인해 손실된다. SEQ가 5이고 PKT가 5인 데이터 패킷이 수신되고, 이 경우, 수신 노드는 NACK을 즉시 리턴한다. NACK은 해제 가능한 메모리 release SEQ=1(PKT가 1인 데이터 패킷은 이미 수신됨) 및 패킷 손실 표시 필드 NPKT=2 내지 4(START =2 및 END=4)를 운반한다. 여기서, 패킷 손실을 이 시간에 결정할 수 없는 TCP와 비교하여, 수신 노드는 스크롤링 시퀀스 번호에 따라 손실된 데이터 패킷을 더 신속하게 검출할 수 있다.
단계 4: 전송 노드는 데이터 패킷을 계속 전송하고, SEQ가 6이고 PKT는 6인 데이터 패킷이 손실된다.
단계 5: SEQ가 7이고 PKT가 7인 데이터 패킷이 수신되고, 수신 노드는 PKT가 6인 데이터 패킷이 손실되었음을 통지하기 위해 NACK(release SEQ=1, NPKT=6)을 즉시 전송한다.
단계 6: 수신 노드에 의해 이전에 전송된 NACK(NPKT=2 내지 4)은 전송 노드에 의해 수신되고; 전송 노드에 의해 이미 확립된 PKT.SEQ->SEQ 맵핑 테이블에 따라, SEQ가 2, 3 및 4인 데이터 패킷이 손실되었다고 결정되고; 전송 노드는 재전송 단계: SEQ가 2, 3 및 4인 데이터 패킷을 추출하고, 새로운 PKT.SEQ를 데이터 패킷에 할당하고, 재전송을 수행하는 단계에 즉시 진입한다. SEQ가 2, 3 및 4인 데이터 패킷에 대응하는 PKT가 이미 8, 9 및 10으로 변경되고, PKT.SEQ->SEQ 맵핑 테이블이 업데이트되었음을 알아야 한다. 또한, 전송 노드는 NACK에 운반된 Release SEQ=1에 따라, SEQ가 1인 데이터 패킷에 의해 점유되는 전송 버퍼를 해제한다.
단계 7: 수신 노드는 SEQ가 2, 3 및 4이고 PKT가 8, 9 및 10인 재전송된 데이터 패킷을 수신한다. 모든 손실된 패킷이 한번에 재전송될 수 없고, 시퀀스 번호가 ACK 번호에 가장 가까운 손실된 패킷만 재전송되는 TCP와 비교하여, 본 발명의 실시예에서의 데이터 전송 시스템에서, 전송 노드는 모든 결정된 손실된 패킷을 잠시 재전송할 수 있어, 이로써 재전송이 보다 효율적이다.
단계 8: 전송 노드는 NACK(NPKT=6)을 수신하고, NACK를 처리하는 상기 방식과 유사하게, SEQ가 6인 데이터 패킷이 재전송되고, 여기서 재전송된 데이터 패킷의 SEQ는 변경되지 않지만, PKT는 11로 업데이트된다.
단계 9: 전송 노드는 SEQ가 8이고 PKT가 12인 데이터 패킷을 계속 전송하며; SEQ가 6이고 PKT가 11인 재전송된 데이터 패킷이 링크 문제로 인해 다시 손실된다고 가정된다.
단계 10: SEQ가 8이고 PKT가 12인 데이터 패킷이 수신될 때, 수신 노드는 NACK(release SEQ=5, NPKT=11)를 전송하여, 전송 노드가 PKT가 11인 데이터 패킷이 다시 손실되었음을(여기서, SEQ가 6인 재전송된 패킷이 다시 손실됨) 통지한다.
단계 11: 전송 노드는 SEQ가 9 및 10이고 PKT가 13 및 14인 데이터 패킷을 계속 전송하고, 데이터 패킷은 수신 노드에 의해 수신된다.
단계 12: 전송 노드는 NACK(release SEQ=5, NPKT=11)를 수신하고, 맵핑 테이블을 쿼리함으로써, SEQ가 6인 재전송된 데이터 패킷이 다시 손실되었음을 발견하며, 다시 재전송을 수행하고, 여기서 PKT는 15로 업데이트된다. 또한, SEQ가 2 내지 5인 데이터 패킷에 의해 점유되는 전송 버퍼는 release SEQ=5에 따라 해제된다.
단계 13: 수신 노드는 SEQ가 6이고 PKT가 15(SEQ가 6인 데이터 패킷은 총 2회 재전송됨)인 데이터 패킷을 수신한다.
단계 14: 전송 노드는 SEQ가 11이고 PKT가 16인 데이터 패킷 및 SEQ가 12이고 PKT가 17인 데이터 패킷을 전송하며; 링크 품질로 인해, SEQ가 11인 데이터 패킷이 손실된다.
단계 15: SEQ가 12이고 PKT가 17인 데이터 패킷을 수신한 후, 수신 노드는 PKT가 16인 데이터 패킷이 손실되었다고 결정하며, NACK(release SEQ=10, NPKT=16)를 전송한다.
단계 16: 전송 노드는 SEQ가 13이고 PKT가 18인 데이터 패킷 및 SEQ가 14이고 PKT가 19인 데이터 패킷을 전송한다.
단계 17: 수신 노드는 SEQ가 13이고 PKT가 18인 데이터 패킷을 수신한다. 이 때, PACK 타이머가 타임 아웃하기 때문에, 수신 노드는 PACK을 전송한다. SEQ가 11인 데이터 패킷이 수신 버퍼에서 누락되기 때문에, 수신 버퍼의 데이터는 불연속적이고, 데이터는 제 시간에 응용 프로그램에 제출될 수 없으며, 수신 버퍼는 해제될 수 없다. 따라서, PACK에서, Nseq=11이며, 이로써 SEQ가 11인 데이터 패킷이 수신되지 않았다고 전송 노드에 통지하며, 여기서 SEQ는 HOL 패킷의 SEQ이다. PACK이 전송된 후, PACK 타이머가 리셋되고 타이밍을 재시작한다.
단계 18: 전송 노드는 NACK(release SEQ=10, NPKT=16)을 수신하고, 맵핑 테이블을 쿼리하며, SEQ가 11인 데이터 패킷이 손실되었음을 발견하고, SEQ가 11인 데이터 패킷을 재전송하며, 여기서 재전송된 데이터 패킷의 PKT는 20으로 업데이트된다. SEQ가 6 내지 10인 데이터 패킷에 의해 점유되는 전송 버퍼가 해제된다.
단계 19: 전송 노드는 PACK(release SEQ=10, Nseq=11)를 수신하고, SEQ가 11인 패킷이 손실되었음을 발견하며, 수신 버퍼를 차단하는 HOL 패킷이 되고, SEQ가 11이고 PKT가 21인 데이터 패킷을 재전송한다. 또한, 전송 노드는 PACK에서 운반된 수신율 및/또는 데이터 패킷 손실률 정보에 따라 전송률을 조정한다.
단계 20: 수신 노드는 SEQ가 11이고 PKT가 20인 데이터 패킷을 수신하며, 또한 SEQ가 11이고 PKT가 21인 데이터 패킷을 수신한 후, SEQ가 11이고 PKT가 21인 데이터 패킷을 폐기한다.
상기 절차로부터, 전송 노드의 패킷 전송률이 고정되고 일정한 전송률이라는 것을 알 수 있다. TCP 윈도우 전송과 달리, 과도한 데이터 패킷이 네트워크에 즉시 주입되어 발생하는 혼잡 문제가 발생하지 않는다. 또한, TCP와 비교하여, 이중 시퀀스 번호 메커니즘에서, 임의의 손실된 데이터 패킷이 RTT 내에서 검출될 수 있고, 결정 방법은 비교적 간단하며, TCP에서 사용되는 타임 아웃 재전송과 비교하여 더 많은 시간이 절약된다.
이하는 본 발명의 장치 실시예를 설명한다. 도 2에 나타난 바와 같이, 본 발명의 실시예의 측면은 프로세서(120), 프로토콜 스택(130), 통신 인터페이스(140) 및 저장 장치(150)를 포함하는 전송 노드(110)를 제공한다. 프로세서(120)는 구체적으로, 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그래머블 논리적 구성요소를 포함할 수 있다. 저장 장치(150)는 자기 저장 디바이스(하드 디스크, 플로피 디스크 또는 자기 스트라이프와 같은), 광 저장 매체(디지털 다기능 디스크(DVD)와 같은), 스마트카드, 플래시 디바이스, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그래머블 ROM(PROM), 소거 가능 PROM(EPROM), 레지스터 및 이들의 임의의 조합과 같은 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 통신 인터페이스(140)는 구체적으로, 송신기 회로(142) 및 수신기 회로(146)를 포함한다. 전송 노드(110)의 저장 장치(150)는 응용 프로그램(121)을 저장하며, 응용 프로그램(121)은 특정 서비스 기능을 수행하도록 프로세서에 의해 실행될 수 있다. 프로토콜 스택(130)은 일반적으로 소프트웨어에 의해 구현된다. 예를 들어, 프로토콜 스택(130)은 실행 가능한 프로그램의 형태로 저장 장치(150)에 저장되며, 데이터 처리, 전송 및 수신을 구현하도록 프로세서에 의해 실행된다. 일부 시나리오에서, 프로토콜 스택(130)은 하드웨어 회로 또는 필드 프로그래머블 게이트 어레이(FPGA: field programmable gate array) 또는 주문형 집적 회로(ASIC: application specific integrated circuit)와 같은 전용 칩에 의해 구현될 수 있다. 구체적으로, 일 실시예에서, 응용 프로그램(121)이 프로세서에 의해 실행되는 프로세스에서, 한편으로, 응용 프로그래밍 인터페이스(API: Application Programming Interface)는 데이터를 프로토콜 스택(130)에 전송하도록 호출될 수 있고; 데이터를 수신한 후, 프로토콜 스택(130)은 프로토콜 사양에 따라 데이터에 대한 캡슐화와 같은 처리를 수행한다; 그 다음, 커널의 하드웨어 드라이버는 시스템 기능을 사용하여 호출되어, 관련 하드웨어를 구동하며, 예를 들어, 송신기 회로(142)는 데이터 패킷을 전송한다. 다른 한편으로, 데이터 패킷을 수신한 후, 수신기 회로(146)는 하드웨어 드라이버의 구동 하에 수신 이벤트를 커널에 보고하며, 커널은 데이터를 처리하도록 프로토콜 스택(130)을 호출한다. 프로토콜 스택(130)의 데이터 전송, 수신 및 처리의 프로세스에 대해서는, 도 3 내지 도 12에 나타난 실시예에서의 전송 노드의 동작 프로세스를 참조하고, 상세한 설명은 다시 설명되지 않는다. 또한, 저장 장치(150)는 메모리를 포함하며, 메모리의 전부 또는 일부 공간은 프로토콜 스택(130)의 전송 버퍼로서 사용된다.
다른 측면에 따르면, 도 2를 참조하면, 본 발명의 일 실시예는 또한, 프로토콜 스택(21), 프로세서, 통신 인터페이스 및 저장 장치(도면에 도시되지 않음)를 포함하는 수신 노드(20)를 제공한다. 통신 인터페이스는 구체적으로 송신기 회로 및 수신기 회로를 포함한다. 프로토콜 스택(21), 프로세서, 통신 인터페이스 및 저장 장치의 특정 형태는 전송 노드(110)의 프로토콜 스택, 프로세서, 통신 인터페이스, 저장 장치의 특정 형태와 유사하다. 관련 동작 프로세스에 대해서는, 상기 실시예의 설명을 참조한다. 또한, 수신 노드(20)의 프로토콜 스택(21)의 데이터 패킷 전송/수신 및 처리 프로세스에 대해서는, 도 3 내지 도 12에 나타난 실시예에서의 수신 노드의 동작 프로세스를 참조하며, 상시한 설명은 다시 설명되지 않는다.
본 발명의 일 실시예는 데이터 전송 시스템을 더 제공한다. 도 13에 나타난 바와 같이, 데이터 전송 시스템은 전송 노드(13) 및 수신 노드(23)를 포함한다. 응용 프로그램(131) 및 응용 프로그램(22)은 각각 전송 노드(13) 및 수신 노드(23)에서 실행된다.
전송 노드(13)는 전송 유닛(133), 처리 유닛(132) 및 수신 유닛(131)을 포함한다. 처리 유닛(132)은 전송 노드(13)에서 실행되는 응용 프로그램의 데이터를 다수의 데이터 패킷으로 캡슐화하도록 구성된다. 전송 유닛(133)은 다수의 데이터 패킷을 초기 전송률로 수신 노드에 전송하도록 구성된다. 수신 유닛(131)은 수신 노드(23)로부터 패킷 손실 피드백 정보를 수신하도록 구성된다. 전송 유닛(133)은 또한 수신된 패킷 손실 피드백 정보에 기초하여 손실된 데이터 패킷을 재전송하도록 구성되며, 여기서 재전송된 데이터 패킷은 새로운 스크롤링 시퀀스 번호를 운반한다. 수신 노드(23)는 전송 유닛(231), 처리 유닛(232) 및 수신 유닛(233)을 포함한다. 수신 유닛(233)은 전송 노드(13)에 의해 전송된 다수의 데이터 패킷을 초기 전송률로 수신하도록 구성된다. 처리 유닛(232)은, 수신 유닛(233)에 의해 수신된 데이터 패킷의 스크롤링 시퀀스 번호에 따라 적어도 하나의 손실된 데이터 패킷을 검출한 후, 전송 노드(13)가 손실된 데이터 패킷을 재전송하도록 지시하기 위해, 전송 유닛(231)에 의해 패킷 손실 피드백 정보를 전송 노드(13)에 전송하도록 구성된다. 전송 유닛(133), 처리 유닛(132) 및 수신 유닛(131)은 또한, 모든 상기 방법 실시예에서의 전송 노드의 기능을 구현하도록 협력하도록 구성된다. 전송 유닛(133)은 처리 유닛(132)의 제어 하에 데이터 패킷을 전송한다. 수신 유닛(131)은 처리 유닛(132)의 제어 하에 데이터 패킷을 수신한다. 처리 유닛(132)은 또한 수신된 제어 패킷에 따라 손실된 데이터 패킷을 결정하고, 전송 유닛이 데이터 패킷을 재전송하도록 제어하도록 구성된다. 선택적으로, 처리 유닛은 또한 수신 유닛(131)에 의해 수신된 제어 패킷에 따라 데이터 전송률을 조정할 수 있다. 대응하여, 전송 유닛(231), 처리 유닛(232) 및 수신 유닛(233)은 또한, 상기 모든 방법 실시예에서의 수신 노드의 기능을 구현하도록 협력하도록 구성된다. 각 유닛의 기능 분할은 전송 노드(13)의 것과 유사하거나, 통상의 기술자에 의해 일반적으로 사용되는 다른 분할 방식이 사용된다.
통상의 기술자는 실시예에서의 방법의 단계 전부 또는 일부가 관련 하드웨어(프로세서와 같은)를 지시하는 프로그램에 의해 구현될 수 있다는 것을 이해할 수 있다. 프로그램은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 저장 매체는 ROM, RAM, 자기 디스크 또는 광 디스크를 포함할 수 있다. 본 발명의 실시예에서 사용되는 용어 "프로그램"은 명령, 명령 세트, 코드, 코드 세그먼트, 서브 프로그램, 소프트웨어 모듈, 응용, 소프트웨어 패키지, 스레드(thread), 프로세스, 기능, 펌웨어, 미들웨어 등으로 널리 이해되고 포함하지만 이에 한정되는 것은 아니다.
상기는 본 발명의 실시예에서 제공되는 패킷 전송 방법, 시스템, 사용자 장비 및 서버를 상세하게 설명한다. 본 명세서에서, 특정 예가 본 발명의 원리 및 구현 방식을 설명하는 데 사용되며, 실시예의 설명은 본 발명의 방법 및 핵심 사상을 이해하는 것을 돕기 위한 것일 뿐이다. 또한, 통상의 기술자는 본 발명의 사상에 기초하여, 특정 구현 방식 및 적용 범위에 대한 수정을 할 수 있다. 따라서, 본 명세서의 컨텐츠는 본 발명의 제한으로 해석되어서는 안 된다.

Claims (34)

  1. 전송 노드와 수신 노드 사이의 데이터를 전송하는 방법으로서,
    상기 전송 노드에 의해, 다수의 데이터 패킷을 초기 전송률로 상기 수신 노드에 전송하는 단계 - 상기 데이터 패킷 각각은 랜덤 시퀀스 번호(SEQ) 및 스크롤링 시퀀스 번호(PKT.SEQ)를 운반하고, 상기 랜덤 시퀀스 번호는 상기 데이터 패킷의 데이터 부분 정보를 식별하는 데 사용되며, 상기 스크롤링 시퀀스 번호는 상기 데이터 패킷의 전송 시퀀스를 나타내는 데 사용됨 -;
    상기 전송 노드에 의해, 상기 수신 노드에 의해 전송된 패킷 손실 피드백 정보를 수신하는 단계 - 상기 패킷 손실 피드백 정보는, 상기 수신 노드가 수신된 데이터 패킷의 스크롤링 시퀀스 번호에 따라 적어도 하나의 손실된 데이터 패킷을 검출한 후 생성되고, 상기 패킷 손실 피드백 정보는 상기 적어도 하나의 손실된 데이터 패킷의 스크롤링 시퀀스 번호 정보를 포함함 -; 및
    상기 전송 노드에 의해, 상기 수신된 패킷 손실 피드백 정보에 기초하여 적어도 하나의 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하고, 상기 결정된 랜덤 시퀀스 번호에 대응하는 데이터 패킷을 재전송하는 단계 - 상기 재전송된 데이터 패킷은 새로운 스크롤링 시퀀스 번호를 운반함 -;
    를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 패킷 손실 피드백 정보는 NACK 제어 패킷이고, 상기 NACK 제어 패킷은 패킷 손실 표시 필드를 포함하며, 상기 패킷 손실 표시 필드는 상기 적어도 하나의 손실된 데이터 패킷의 스크롤링 시퀀스 번호를 운반하는 데 사용되고;
    상기 전송 노드에 의해, 상기 수신된 패킷 손실 피드백 정보에 기초하여 상기 적어도 하나의 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하는 단계는, 상기 전송 노드에 의해, 상기 수신된 NACK 제어 패킷에 운반된 스크롤링 시퀀스 번호에 기초하고, 또 상기 전송 노드에 의해 전송된 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계에 기초하여, 상기 적어도 하나의 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하는 단계를 포함하는,
    방법.
  3. 제2항에 있어서,
    상기 적어도 하나의 손실된 데이터 패킷은 다수의 연속 손실된 데이터 패킷을 포함하며, 상기 NACK 제어 패킷에 포함된 상기 패킷 손실 표시 필드는 패킷 손실 시작 필드(START) 및 패킷 손실 종료 필드(END)를 포함하고, 상기 패킷 손실 시작 필드 및 상기 패킷 손실 종료 필드는 상기 다수의 연속 손실된 데이터 패킷의 첫 번째 패킷 및 마지막 패킷의 스크롤링 시퀀스 번호를 각각 운반하는 데 사용되는, 방법.
  4. 제2항에 있어서,
    상기 NACK 제어 패킷은 또한 해제 필드를 포함하고, 상기 해제 필드는 현재 수신 노드에 의해 이미 수신된 데이터 패킷의 랜덤 시퀀스 번호 또는 스크롤링 시퀀스 번호를 운반하는 데 사용되는, 방법.
  5. 제4항에 있어서,
    상기 전송 노드에 의해, 상기 수신된 NACK 제어 패킷에 운반된 상기 해제 필드에 따라, 전송 버퍼로부터, 상기 수신 노드에 의해 이미 수신된 상기 데이터 패킷을 해제하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 전송 노드에 의해, PACK 제어 패킷을 수신하는 단계 - 상기 PACK 제어 패킷은 상기 수신 노드에 의해 주기적으로 전송되고, 상기 PACK 제어 패킷은 수신 버퍼에 누락된 데이터 패킷의 랜덤 시퀀스 번호를 운반하며, 상기 누락된 데이터 패킷은 상기 전송 노드에 의해 감지되지 않은 손실된 데이터 패킷 또는 재전송된 후 다시 손실된 데이터 패킷 중 적어도 하나를 포함함 -; 및
    상기 전송 노드에 의해, 상기 PACK 제어 패킷에 운반된 상기 랜덤 시퀀스 번호에 대응하는 데이터 패킷을 재전송하는 단계
    를 더 포함하는,
    방법.
  7. 제6항에 있어서,
    상기 PACK 제어 패킷은 또한 데이터 패킷 수신율 또는 데이터 패킷 손실률 중 적어도 하나를 운반하며;
    상기 방법은 또한,
    상기 전송 노드에 의해, 상기 초기 전송률이 상기 데이터 패킷 수신율에 적응되도록, 상기 PACK 제어 패킷에 운반되는 상기 데이터 패킷 수신율 또는 상기 데이터 패킷 손실 률에 따라 상기 초기 전송률을 조정하는 단계를 포함하는,
    방법.
  8. 전송 노드로서,
    버스를 사용하여 연결된 프로세서, 메모리 및 통신 인터페이스를 포함하며, 상기 통신 인터페이스는 송신기 회로 및 수신기 회로를 포함하며;
    상기 프로세서는, 상기 전송 노드에서 실행하는 응용 프로그램의 데이터를 다수의 데이터 패킷으로 캡슐화하고, 상기 송신기 회로를 사용하여 초기 전송률로 상기 다수의 데이터 패킷을 수신 노드에 전송하며 및 상기 수신기 회로를 사용하여, 상기 수신 노드에 의해 전송된 패킷 손실 피드백 정보를 수신하고 - 상기 다수의 데이터 패킷의 각 데이터 패킷은 랜덤 시퀀스 번호(SEQ) 및 스크롤링 시퀀스 번호(PKT.SEQ)를 운반하며, 상기 랜덤 시퀀스 번호는 상기 데이터 패킷의 데이터 부분 정보를 식별하는 데 사용되며, 상기 스크롤링 시퀀스 번호는 상기 데이터 패킷의 전송 시퀀스를 나타내는 데 사용되고, 상기 패킷 손실 피드백 정보는, 상기 수신 노드가 수신된 데이터 패킷의 스크롤링 시퀀스 번호에 따라 적어도 하나의 손실된 데이터 패킷을 검출한 후 생성되며, 상기 패킷 손실 피드백 정보는 상기 적어도 하나의 손실된 데이터 패킷의 스크롤링 시퀀스 번호 정보를 포함함 -; 및
    상기 수신된 패킷 손실 피드백 정보에 기초하여 상기 적어도 하나의 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하고, 상기 결정된 랜덤 시퀀스 번호에 대응하는 데이터 패킷을 재전송하도록, 상기 메모리에 저장된 명령을 실행하도록 구성되며,
    상기 재전송된 데이터 패킷은 새로운 스크롤링 시퀀스 번호를 운반하는,
    전송 노드.
  9. 제8항에 있어서,
    상기 패킷 손실 피드백 정보는 NACK 제어 패킷이고, 상기 NACK 제어 패킷은 패킷 손실 표시 필드를 포함하며, 상기 패킷 손실 표시 필드는 상기 적어도 하나의 손실된 데이터 패킷의 스크롤링 시퀀스 번호를 운반하는 데 사용되며;
    상기 프로세서는, 상기 수신된 NACK 제어 패킷에 운반된 스크롤링 시퀀스 번호에 기초하고, 또 전송된 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계에 기초하여, 상기 적어도 하나의 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하도록 구성되는,
    전송 노드.
  10. 제9항에 있어서,
    상기 적어도 하나의 손실된 데이터 패킷은 다수의 연속 손실된 데이터 패킷을 포함하며;
    상기 패킷 손실 표시 필드는 패킷 손실 시작 필드(START) 및 패킷 손실 종료 필드(END)를 포함하고, 상기 패킷 손실 시작 필드 및 상기 패킷 손실 종료 필드는 상기 다수의 연속 손실된 데이터 패킷의 첫 번째 패킷 및 마지막 패킷의 스크롤링 시퀀스 번호를 운반하는 데 각각 사용되는,
    전송 노드.
  11. 제10항에 있어서,
    상기 NACK 제어 패킷은 또한 해제 필드를 포함하고, 상기 해제 필드는 상기 수신 노드에 의해 이미 수신된 데이터 패킷의 랜덤 시퀀스 번호 또는 상기 스크롤링 시퀀스 번호를 운반하는 데 사용되는, 전송 노드.
  12. 제11항에 있어서,
    상기 메모리의 전부 또는 일부는 전송 버퍼로서 사용되며;
    상기 프로세서는 또한, 상기 수신된 NACK 제어 패킷에 운반된 상기 해제 필드에 따라 상기 전송 버퍼로부터, 상기 수신 노드에 의해 이미 수신된 상기 데이터 패킷을 해제하도록 구성되는,
    전송 노드.
  13. 제8항에 있어서,
    상기 프로세서는 또한, 상기 수신기 회로를 사용하여, 상기 수신 노드에 의해 전송된 PACK 제어 패킷을 수신하고 - 상기 PACK 제어 패킷은 수신 버퍼에 누락된 데이터 패킷의 랜덤 시퀀스 번호를 운반함 -; 및
    상기 PACK 제어 패킷에 운반된 상기 랜덤 시퀀스 번호에 대응하는 상기 데이터 패킷을 재전송하도록 구성되며,
    상기 누락된 데이터 패킷은 상기 전송 노드에 의해 감지되지 않은 손실된 데이터 패킷 또는 재전송된 후 다시 손실된 데이터 패킷 중 적어도 하나를 포함하는,
    전송 노드.
  14. 제13항에 있어서,
    상기 PACK 제어 패킷은 또한, 데이터 패킷 수신율 또는 데이터 패킷 손실률 중 적어도 하나를 운반하며;
    상기 프로세서는 또한, 상기 초기 전송률이 상기 데이터 패킷 수신율에 적응되도록, 상기 PACK 제어 패킷에 포함된 상기 데이터 패킷 수신율 또는 상기 데이터 패킷 손실률에 따라 상기 초기 전송률을 조정하도록 구성되는,
    전송 노드.
  15. 비 일시적 컴퓨터 판독 가능 저장 매체로서,
    프로세서에 의해 실행될 때, 상기 프로세서로 하여금 이하의 단계:
    다수의 데이터 패킷을 초기 전송률로 수신 노드에 전송하는 단계 - 상기 각 데이터 패킷은 랜덤 시퀀스 번호(SEQ) 및 스크롤링 시퀀스 번호(PKT.SEQ)를 운반하고, 상기 랜덤 시퀀스 번호는 상기 데이터 패킷의 데이터 부분 정보를 식별하는 데 사용되며, 상기 스크롤링 시퀀스 번호는 상기 데이터 패킷의 전송 시퀀스를 나타내는 데 사용됨 -;
    상기 수신 노드에 의해 전송된 패킷 손실 피드백 정보를 수신하는 단계 - 상기 패킷 손실 피드백 정보는 상기 수신 노드가 수신된 데이터 패킷의 스크롤링 시퀀스 번호에 따라 적어도 하나의 손실된 데이터 패킷을 검출한 후 생성되고, 상기 패킷 손실 피드백 정보는 상기 적어도 하나의 손실된 데이터 패킷의 스크롤링 시퀀스 번호 정보를 포함함 -; 및
    상기 수신된 패킷 손실 피드백 정보에 기초하여 적어도 하나의 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하고, 상기 결정된 랜덤 시퀀스 번호에 대응하는 데이터 패킷을 재전송하는 단계 - 상기 재전송된 데이터 패킷은 새로운 스크롤링 시퀀스 번호를 운반함 -;
    를 수행하게 하는 명령을 저장하는
    비 일시적 컴퓨터 판독 가능 저장 매체.
  16. 제15항에 있어서,
    상기 패킷 손실 피드백 정보는 NACK 제어 패킷이며, 상기 NACK 제어 패킷은 패킷 손실 표시 필드를 포함하며, 상기 패킷 손실 표시 필드는 상기 적어도 하나의 손실된 데이터 패킷의 스크롤링 시퀀스 번호를 운반하는 데 사용되고;
    상기 수신된 패킷 손실 피드백 정보에 기초하여 상기 적어도 하나의 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하는 단계는, 상기 수신된 NACK 제어 패킷에 운반되는 스크롤링 시퀀스 번호에 기초하고, 또 전송된 데이터 패킷의 랜덤 시퀀스 번호와 스크롤링 시퀀스 번호 사이의 맵핑 관계에 기초하여, 상기 적어도 하나의 손실된 데이터 패킷의 랜덤 시퀀스 번호를 결정하는 단계를 포함하는,
    비 일시적 컴퓨터 판독 가능 저장 매체.
  17. 제16항에 있어서,
    상기 NACK 제어 패킷은 또한 해제 필드를 포함하고, 상기 해제 필드는 현재 상기 수신 노드에 의해 이미 수신된 데이터 패킷의 랜덤 시퀀스 번호 또는 스크롤링 시퀀스 번호를 운반하는 데 사용되는, 비 일시적 컴퓨터 판독 가능 저장 매체.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020187016871A 2015-12-14 2016-08-26 데이터 전송 방법, 전송 노드, 수신 노드 및 데이터 전송 시스템 KR102109021B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510926077.6A CN106878191B (zh) 2015-12-14 2015-12-14 一种数据传送方法、发送节点、接收节点及数据传送系统
CN201510926077.6 2015-12-14
PCT/CN2016/096957 WO2017101503A1 (zh) 2015-12-14 2016-08-26 一种数据传送方法、发送节点、接收节点及数据传送系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020207012792A Division KR102249741B1 (ko) 2015-12-14 2016-08-26 데이터 전송을 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180082571A KR20180082571A (ko) 2018-07-18
KR102109021B1 true KR102109021B1 (ko) 2020-05-11

Family

ID=59055674

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207012792A KR102249741B1 (ko) 2015-12-14 2016-08-26 데이터 전송을 위한 방법 및 장치
KR1020187016871A KR102109021B1 (ko) 2015-12-14 2016-08-26 데이터 전송 방법, 전송 노드, 수신 노드 및 데이터 전송 시스템

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020207012792A KR102249741B1 (ko) 2015-12-14 2016-08-26 데이터 전송을 위한 방법 및 장치

Country Status (6)

Country Link
US (2) US10701616B2 (ko)
EP (2) EP3370376B1 (ko)
KR (2) KR102249741B1 (ko)
CN (2) CN106878191B (ko)
BR (1) BR112018010735A8 (ko)
WO (1) WO2017101503A1 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3252979B1 (en) * 2016-06-03 2019-01-30 Mitsubishi Electric R&D Centre Europe B.V. Requesting retransmission of data in a multicast network
US11516141B2 (en) * 2016-08-02 2022-11-29 Telecom Italia S.P.A. Dynamic bandwidth control over a variable link
CN109257138B (zh) * 2017-07-13 2020-11-17 华为技术有限公司 一种数据传输控制方法以及相关设备
CN107395441A (zh) * 2017-08-31 2017-11-24 江苏省公用信息有限公司 一种检测网络丢包状况的方法
CN108494698B (zh) * 2017-12-13 2022-02-25 天地伟业技术有限公司 一种基于传输速率的拥塞控制方法
CN108512774A (zh) * 2018-04-18 2018-09-07 清华大学 无丢失网络中的拥塞控制方法
CN110943933B (zh) * 2018-09-25 2023-09-01 华为技术有限公司 一种实现数据传输的方法、装置和系统
FR3086824A1 (fr) * 2018-10-02 2020-04-03 Orange Procede de preservation d'un debit d'emission de donnees d'un terminal dans un reseau de communications
CN111385523B (zh) * 2018-12-27 2022-10-28 北京图森智途科技有限公司 一种数据接收方法、图像处理设备和汽车
CN109605383B (zh) * 2019-01-29 2021-05-28 达闼机器人有限公司 一种信息通信方法、机器人及存储介质
CN111740808B (zh) * 2019-03-25 2022-07-22 华为技术有限公司 一种数据传输方法及装置
CN111835651B (zh) 2019-04-19 2022-03-18 上海哔哩哔哩科技有限公司 数据写入方法、系统、设备及计算机可读存储介质
CN110311847B (zh) * 2019-06-26 2022-08-05 北京和利时系统集成有限公司 一种批量数据传输方法和装置
CN112217686B (zh) 2019-07-12 2022-12-27 华为技术有限公司 一种评估往返时延的系统、方法及装置
CN110417644A (zh) * 2019-07-29 2019-11-05 中国工商银行股份有限公司 即时通讯的消息发送方法及装置
CN111615006B (zh) * 2020-05-29 2022-02-01 北京讯众通信技术股份有限公司 基于网络状态自评估的视频编码转换传输控制系统
CN113938945B (zh) * 2020-06-29 2023-11-28 华为技术有限公司 数据包发送的方法、装置
CN114070459B (zh) * 2020-08-04 2023-11-07 成都鼎桥通信技术有限公司 数据传输方法、装置、终端设备和存储介质
CN112165355B (zh) * 2020-10-23 2022-03-22 中国电子科技集团公司第三十研究所 一种面向卫星网络的基于udp的可靠数据传输方法
CN112953835B (zh) * 2021-01-18 2023-03-14 广州三七互娱科技有限公司 数据传输方法、装置及系统
CN114979015B (zh) * 2021-02-19 2024-04-12 腾讯科技(深圳)有限公司 一种数据包的处理方法及装置
CN113132069A (zh) * 2021-03-22 2021-07-16 合肥富煌君达高科信息技术有限公司 一种丢包重传的通信机制及基于fpga实现其的方法
CN115150372B (zh) * 2021-03-31 2024-03-15 海能达通信股份有限公司 一种防止呼叫中语音丢失的方法、通信系统及终端
CN113572582B (zh) * 2021-07-15 2022-11-22 中国科学院计算技术研究所 数据发送、重传控制方法及系统、存储介质及电子设备
CN113595694B (zh) * 2021-09-28 2022-04-01 阿里巴巴(中国)有限公司 数据的传输方法、计算设备及存储介质
CN113992654A (zh) * 2021-10-22 2022-01-28 西安热工研究院有限公司 一种高速的文件传输方法、系统、设备及介质
CN114337942B (zh) * 2021-12-29 2023-06-13 伟乐视讯科技股份有限公司 一种报文重传方法、装置及电子设备
CN114257350A (zh) * 2021-12-31 2022-03-29 广东省教育研究院 传输质量优化方法、装置及传输系统
CN114676083B (zh) * 2022-03-30 2024-02-23 深圳唯创知音电子有限公司 一种具有较强抗干扰能力的两线串口控制方法
CN115118632B (zh) * 2022-06-21 2024-02-06 中电信数智科技有限公司 一种基于云网融合的主机丢包自动检测方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140201318A1 (en) * 2011-09-28 2014-07-17 Open Text S.A. System and method for data transfer, including protocols for use in data transfer

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526022B1 (en) * 1998-06-30 2003-02-25 Sun Microsystems Detecting congestion by comparing successive loss of packets in windows to provide congestion control in reliable multicast protocol
US7388853B2 (en) * 2000-04-07 2008-06-17 Broadcom Corporation Method for providing dynamic adjustment of frame encoding parameters in a frame-based communications network
EP1638238A1 (en) * 2004-09-15 2006-03-22 Siemens Aktiengesellschaft Method for combining data packets by a telecommunication device
US8214707B2 (en) 2007-06-26 2012-07-03 Aspera, Inc. Method and system for reliable data transfer
CN101179362B (zh) * 2006-11-07 2012-07-11 中兴通讯股份有限公司 适宜移动流媒体应用的自动重传请求机制
US8068491B2 (en) * 2008-02-13 2011-11-29 Telcordia Technologies, Inc. Methods for reliable multicasting in local peer group (LPG) based vehicle ad hoc networks
CN101729228B (zh) * 2008-10-31 2014-04-16 华为技术有限公司 丢包抑制重传的方法、网络节点和系统
CN101588225B (zh) * 2009-06-25 2013-01-09 杭州再灵电子科技有限公司 一种基于分组交换网络的快速重传方法
CN102025717B (zh) * 2010-09-10 2013-09-11 香港城市大学深圳研究院 一种传输多媒体数据的方法
WO2012164668A1 (ja) * 2011-05-30 2012-12-06 株式会社メガチップス 通信システム
US20130250853A1 (en) * 2012-03-20 2013-09-26 Qualcomm Incorporated Methods and apparatuses to improve round trip time in transfer control protocol using accelerated acknowledgement messages
CN103152359B (zh) * 2013-03-25 2016-03-23 重庆大学 一种端到端无线传输控制协议线性网络编码的改进方法
CN103684787B (zh) * 2013-12-13 2018-01-16 北京大学深圳研究生院 基于网络传输的数据包的加密解密方法及终端
CN104113722A (zh) * 2014-06-19 2014-10-22 南京熊猫电子股份有限公司 一种无线视频会议传输方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140201318A1 (en) * 2011-09-28 2014-07-17 Open Text S.A. System and method for data transfer, including protocols for use in data transfer

Also Published As

Publication number Publication date
CN109327288A (zh) 2019-02-12
KR102249741B1 (ko) 2021-05-07
EP3370376A4 (en) 2018-11-07
US20200280902A1 (en) 2020-09-03
BR112018010735A2 (pt) 2018-11-13
EP3855688A1 (en) 2021-07-28
BR112018010735A8 (pt) 2019-02-26
EP3370376A1 (en) 2018-09-05
US11272420B2 (en) 2022-03-08
EP3370376B1 (en) 2021-04-28
WO2017101503A1 (zh) 2017-06-22
CN106878191A (zh) 2017-06-20
CN106878191B (zh) 2018-11-16
CN109327288B (zh) 2023-11-10
KR20200051059A (ko) 2020-05-12
EP3855688B1 (en) 2023-10-11
US20180295555A1 (en) 2018-10-11
KR20180082571A (ko) 2018-07-18
US10701616B2 (en) 2020-06-30

Similar Documents

Publication Publication Date Title
KR102109021B1 (ko) 데이터 전송 방법, 전송 노드, 수신 노드 및 데이터 전송 시스템
US11153041B2 (en) Packet transmission method and user equipment
KR102203509B1 (ko) 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템
US11799790B2 (en) Data transmission method, computing device, network device, and data transmission system
US20220014312A1 (en) Data transmission method and apparatus
CN109936510B (zh) 多路径rdma传输
WO2018082615A1 (zh) 一种发送报文的方法、装置、芯片及终端
CN105493457A (zh) 基于传输控制协议(tcp)的视频流传输
US10932159B2 (en) Data transmission method, data receiving device, and data sending device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant