KR101506770B1 - 데이터 전송 장치 및 방법 - Google Patents

데이터 전송 장치 및 방법 Download PDF

Info

Publication number
KR101506770B1
KR101506770B1 KR1020120156465A KR20120156465A KR101506770B1 KR 101506770 B1 KR101506770 B1 KR 101506770B1 KR 1020120156465 A KR1020120156465 A KR 1020120156465A KR 20120156465 A KR20120156465 A KR 20120156465A KR 101506770 B1 KR101506770 B1 KR 101506770B1
Authority
KR
South Korea
Prior art keywords
packet
time
packets
error recovery
receiving end
Prior art date
Application number
KR1020120156465A
Other languages
English (en)
Other versions
KR20140086228A (ko
Inventor
황진범
장영호
송성학
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020120156465A priority Critical patent/KR101506770B1/ko
Priority to PCT/KR2013/005264 priority patent/WO2014104501A1/ko
Priority to US13/933,524 priority patent/US9219574B2/en
Publication of KR20140086228A publication Critical patent/KR20140086228A/ko
Application granted granted Critical
Publication of KR101506770B1 publication Critical patent/KR101506770B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • 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/1812Hybrid protocols; Hybrid automatic repeat request [HARQ]
    • H04L1/1819Hybrid protocols; Hybrid automatic repeat request [HARQ] with retransmission of additional or different redundancy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0072Error control for data other than payload data, e.g. control data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0083Formatting with frames or packets; Protocol or part of protocol for error control

Abstract

데이터 전송 장치 및 방법이 개시된다. 본 발명의 일 실시예에 따른 데이터 전송 장치는, 송신 데이터를 구성하는 복수 개의 패킷을 수신단으로 전송하기 위한 시스템으로서, 상기 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산하는 패킷별 가중치 계산부, 계산된 상기 패킷별 가중치에 따라 상기 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성하는 패킷 변환부, 및 복수 개의 전송 가능 세션을 이용하여 상기 오류 복구 패킷을 상기 수신단으로 송신하는 송신부를 포함한다.

Description

데이터 전송 장치 및 방법{SYSTEM AND METHOD FOR DATA TRANSMISSION}
본 발명의 실시예들은 네트워크를 이용한 데이터 전송 기술과 관련된다.
최근 들어, 모바일 디바이스 등을 이용한 인터랙티브 서비스가 증가하면서 무선망 등을 통해 실시간으로 데이터를 전송하는 경우가 빈번하게 발생하고 있다. 일반적으로 이러한 경우 TCP를 이용하여 데이터를 패킷 단위로 전송하게 되나, 패킷 유실률이 높은 네트워크 패스에서는 유실된 패킷을 재전송 하는데 지연이 발생한다. 즉, 수신단에서는 모든 패킷이 도착해야 데이터를 읽고 처리할 수 있는데, 유실되어 재전송 되는 패킷의 도착 지연으로 인해 총 서비스 처리 시간에 지연이 발생하게 되며 이는 실시간 서비스의 품질을 떨어뜨리는 결과를 가져 온다.
이를 해결하기 위한 방법으로는 TCP가 아닌 UDP를 이용하여 데이터를 전송하는 방법을 고려해 볼 수 있다. UDP의 경우 반드시 데이터를 순서대로 전송할 필요가 없으므로 일부의 패킷이 유실되더라도 나머지 패킷들이 유실된 패킷의 재전송을 대기할 필요가 없기 때문이다. 그러나 UDP의 경우 별도의 유실에 따른 복구 알고리즘을 제공하지 않으므로 이를 별도로 처리해야 하며, 특히 방화벽 통과가 제한적이라는 문제가 있다. 또한, TCP를 이용하면서 전송 지연을 완화하기 위한 다른 수단들이 제안되었으나, 이들은 모두 TCP 자체의 수정을 필요로 하기 때문에 이를 일반화하여 적용하기에는 여러 어려움이 있었다. 따라서 기존의 패킷 전송 프로토콜을 수정하지 않으면서 전송 지연을 효과적으로 완화하기 위한 기술이 필요하게 되었다.
본 발명의 실시예들은 네트워크를 이용한 데이터 전송 시 전송 지연을 최소화하고 전송 속도를 향상하기 위한 수단을 제공하는 데 그 목적이 있다.
본 발명의 일 실시예에 따른 데이터 전송 장치는, 송신 데이터를 구성하는 복수 개의 패킷을 수신단으로 전송하기 위한 시스템으로서, 상기 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산하는 패킷별 가중치 계산부, 계산된 상기 패킷별 가중치에 따라 상기 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성하는 패킷 변환부, 및 복수 개의 전송 가능 세션을 이용하여 상기 오류 복구 패킷을 상기 수신단으로 송신하는 송신부를 포함한다.
한편, 본 발명의 일 실시예에 따른 데이터 전송 방법은, 데이터 전송 장치에서 송신 데이터를 구성하는 복수 개의 패킷을 수신단으로 전송하기 위한 방법으로서, 패킷별 가중치 계산부에서, 상기 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산하는 단계, 패킷 변환부에서, 계산된 상기 패킷별 가중치에 따라 상기 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성하는 단계, 및 송신부에서, 복수 개의 전송 가능 세션을 이용하여 상기 오류 복구 패킷을 상기 수신단으로 송신하는 단계를 포함한다.
한편, 본 발명의 일 실시예에 따른 장치는, 하나 이상의 프로세서, 메모리, 및 하나 이상의 프로그램을 포함하는 장치로서, 상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며, 상기 프로그램은 송신 데이터를 구성하는 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산하는 단계, 계산된 상기 패킷별 가중치에 따라 상기 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성하는 단계, 및 복수 개의 전송 가능 세션을 이용하여 상기 오류 복구 패킷을 상기 수신단으로 송신하는 단계를 수행하기 위한 명령어들을 포함한다.
본 발명의 실시예들에 따를 경우, 송신단과 수신단 사이의 데이터 전송 시 전송 대상 원본 패킷과 함께 오류 복구 패킷을 함께 전송함으로써, 일부 원본 패킷의 유실이 발생하더라도 오류 복구 패킷을 이용하여 수신단에서 유실된 패킷을 복구할 수 있다. 따라서 수신단에서 유실된 패킷의 재전송을 기다릴 필요가 없게 되므로 패킷 유실로 인한 전송 지연을 최소화할 수 있는 장점이 있다.
또한, 본 발명의 실시예들에 따를 경우 전송 대상 패킷별 및 전송 경과 시간별로 설정된 가중치에 따라 오류 복구 패킷의 복구 강도를 조절하도록 구성된다. 이에 따라 유실될 가능성이 높은 패킷의 경우 높은 복구 강도를 적용하고, 낮은 패킷의 경우에는 낮은 복구 강도를 적용함으로써 유실된 패킷의 복구 확률을 높이는 동시에 네트워크 자원을 효과적으로 사용할 수 있다.
아울러, 본 발명의 실시예들에 따를 경우 송신단과 수신단 사이에 형성된 복수 개의 세션들 각각의 상태를 고려하여 각 세션에 패킷을 할당하므로, 네트워크의 이용 효율을 높임으로써 데이터 전송 속도를 향상시킬 수 있는 장점이 있다.
또한 본 발명의 실시예들에 따를 경우, 본 발명을 적용하기 위하여 종래의 패킷 전송 프로토콜을 변경하거나 수정할 필요가 없으므로, 기존의 데이터 송수신 시스템에도 용이하게 적용할 수 있는 장점이 있다.
도 1은 본 발명의 일 실시예에 따른 데이터 전송 시스템(100)을 설명하기 위한 도면이다.
도 2는 송신단(102)에서 원본 패킷을 그대로 수신단(104)으로 전송할 경우 예를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따라 송신단(102)에서 원본 패킷을 복구 가능한 형태로 변환하여 송신한 경우의 예를 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 송신단(102)의 상세 구성을 나타낸 도면이다.
도 5 및 도 6은 데이터의 송신 시작 시각부터의 경과시간에 따라 패킷의 유실이 전체 데이터 전송 시간에 미치는 영향을 설명하기 위한 도면이다.
도 7 및 도 8은 경과시간에 따른 가중치 계산 방법을 예시한 그래프이다.
도 9는 본 발명의 일 실시예에 따른 데이터 전송 방법(900)을 나타낸 순서도이다.
도 10은 본 발명의 실시예에 따를 경우의 데이터 전송 속도를 종래기술과 비교한 그래프이다.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명의 기술적 사상은 청구범위에 의해 결정되며, 이하의 실시예는 본 발명의 기술적 사상을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 효율적으로 설명하기 위한 일 수단일 뿐이다.
도 1은 본 발명의 일 실시예에 따른 데이터 전송 시스템(100)을 설명하기 위한 도면이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 데이터 전송 시스템(100)은 송신단(102) 및 수신단(104)을 포함한다.
도시된 실시예에서, 송신단(102)은 데이터를 송신하기 위한 네트워크 내 구성요소이고, 수신단(104)은 송신단(102)으로부터 수신된 상기 데이터를 수신하기 위한 네트워크 내 구성요소이다. 본 발명의 실시예에서 송신단(102) 및 수신단(104)은 특별히 한정되지 않으며, 네트워크 접속 및 데이터 처리가 가능한 하드웨어 장치라면 제한 없이 본 발명의 실시예에 따른 송신단(102) 및 수신단(104)이 될 수 있다. 또한, 본 발명의 실시예에서 송신단(102) 및 수신단(104)은 네트워크 상에 존재하는 장치들을 해당 특정 시점에서 수행하는 기능에 따라 분류한 것으로서, 예를 들어 반대로 수신단(104)에서 송신단(102)으로 데이터가 전송될 경우에는 수신단(104)이 송신단으로, 송신단(102)이 수신단으로 각각 기능할 수 있음을 유의한다.
송신단(102)에서 수신단(104)으로 전송되는 데이터는, 예를 들어 실시간 음성 데이터 등의 실시간 데이터일 수 있다. 상기 데이터를 전송하기 위하여, 송신단(102)은 상기 데이터로부터 복수 개의 패킷을 생성한다. 상기 데이터를 구성하는 각 패킷들은 일정한 시간 간격(예를 들어, 100ms)으로 생성될 수 있다. 또한 상기 데이터의 전송 효율을 높이기 위하여, 송신단(102)은 수신단(104)과 복수 개의 세션(multi session)을 생성하고, 이를 통하여 상기 패킷들을 송신할 수 있다. 이때 상기 각 세션은 TCP(Transmission Control Protocol) 세션일 수 있으나 반드시 이에 한정되는 것은 아니며, TCP와 유사한 기능을 제공하는 다른 프로토콜을 사용하는 것 또한 가능하다. 다만, UDP의 경우에는 TCP에 비해 방화벽 통과가 제한적이며, 패킷 전송의 신뢰성을 보장하지 않으므로, UDP를 이용할 경우에는 패킷의 방화벽 통과 및 수신단(104)에서의 신뢰성 보장을 위한 별도의 처리 기술이 필요할 수 있다.
본 발명의 실시예에서, 송신단(102)은 생성된 상기 패킷들을 원본 패킷 형태 그대로 수신단(104)으로 송신하는 것이 아니라, 수신단(104)에서 일부의 패킷을 수신하지 못하더라도 복구 가능한 형태로 원본 패킷을 변환하여 송신한다. 이때, 상기 원본 패킷을 변환하기 위하여 생성되는 패킷을 오류 복구 패킷이라고 부르기로 한다. 이를 예를 들어 설명하면 도 2 및 도 3과 같다.
먼저, 도 2는 송신단(102)에서 원본 패킷을 그대로 수신단(104)으로 전송할 경우 예를 나타낸 도면이다. 도시된 예에서, 송신 데이터는 패킷 1 내지 5의 5개의 패킷으로 구성되며, 송신단(102)은 수신단(104)과 3개의 세션(세션 1 내지 3)을 생성하여 상기 5개의 패킷을 송신한다고 가정하자. 이때, 만약 패킷 4가 네트워크상에서 유실되어 수신단(104)에 도달하지 못한 경우, 수신단(104)은 패킷 4의 수신을 계속해서 대기하게 되며, 송신단(102)은 일정 시간 경과 후 패킷 4가 유실된 것을 감지하고 이를 재전송하게 된다. 즉, 본 예에서 수신단(104)은 재전송된 패킷 4가 정상적으로 수신된 이후에 데이터 수신을 완료하게 된다.
다음으로, 도 3은 본 발명의 일 실시예에 따라 송신단(102)에서 원본 패킷을 복구 가능한 형태로 변환하여 송신한 경우의 예를 나타낸 도면이다. 도 2와 마찬가지로 도 3의 예에서도 송신 데이터는 5개의 패킷으로 구성되며, 이를 3개의 세션으로 송신하게 된다. 다만 본 예에서는 상기 원본 패킷들과 함께 패킷 1과 2의 배타적 논리합, 즉 1xor2 및 패킷 3과 4의 배타적 논리합인 (3xor4)를 오류 복구 패킷으로 함께 전송한다는 점이 상이하다.
도 3의 예에서, 도 2에서와 마찬가지로 패킷 4가 전송 도중 유실되었다고 가정하자. 이 경우 송신단(102)에서 일정 시간 경과 후 패킷 4의 유실을 감지하고 이를 재전송하는 것은 도 2와 동일하다. 그러나 본 예에서는 패킷 3과 오류 복구 패킷인 (3xor4) 가 정상적으로 수신단(104)으로 전송되므로, 수신단(104)에서는 패킷 4의 재전송을 기다릴 필요 없이 다음과 같은 방법으로 패킷 4를 복구할 수 있다.
(3xor4)xor3 = 4
즉, 본 발명의 실시예에서, 송신단(102)은 원본 패킷으로부터 생성된 오류 복구 패킷을 함께 송신함으로써, 전송 도중 일부 패킷이 유실되더라도 수신단(104)에서 이를 복구할 수 있도록 구성하였다. 즉, 상기 실시예에서는 패킷 3, 패킷 4 및 (3xor4) 의 3개의 패킷 중 어느 두 개의 패킷만을 수신하더라도 나머지 패킷을 복원해 낼 수 있게 된다. 한편, 상기 실시예에서는 2개의 패킷을 xor 연산하여 오류 복구 패킷을 생성하는 예를 도시하였으나, 이는 단지 예시적인 것으로서, 오류 복구 패킷을 생성하기 위한 패킷의 개수에는 제한이 없다. 예를 들어, 패킷 1 내지 3의 3개의 패킷을 이용하여 다음과 같이 오류 복구 패킷을 생성할 수도 있다.
오류 복구 패킷: (1xor2xor3)
이 경우, 수신단에서는, 패킷 1, 2, 3 및 오류 복구 패킷 (1xor2xor3)을 포함하는 4개의 패킷 중 임의의 3개의 패킷을 수신하더라도 나머지 패킷을 복원해 낼 수 있게 된다. 또한, 상기 실시예에서는 오류 복구 패킷을 생성하기 위하여 XOR 연산을 이용하였으나, 본 발명은 이에 한정되지 않으며, 효율적으로 오류 복구 패킷을 생성 가능한 다양한 코딩 방식을 이용할 수 있다. 예를 들어, 리드 솔로몬 부호화(Reed-Solomon FEC) FEC 코딩 방식 등의 이용이 가능하다.
도 4는 본 발명의 일 실시예에 따른 송신단(102)의 상세 구성을 나타낸 도면이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 송신단(102)은 패킷별 가중치 계산부(400), 경과시간 가중치 계산부(402), 패킷 변환부(404), 세션 정렬부(406) 및 송신부(408)를 포함한다.
패킷별 가중치 계산부(400)는 송신 데이터를 구성하는 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산한다. 상기 전송 예정 원본 패킷에는 현재 시점에서 새로 생성된 패킷과 함께 기 전송되었으나 수신단(104)에 도착하지 못한 것으로 판단되어 재전송을 기다리고 있는 패킷이 포함될 수 있다. 패킷별 가중치 계산부(400)에서는 이러한 전송 예정 원본 패킷 각각에 대하여 패킷별 가중치를 계산한다.
상기 패킷별 가중치는 각 패킷에 얼마나 강한 오류 복구 알고리즘을 적용하여 오류 복구 패킷을 생성할 것인지를 결정하는 데 사용된다. 오류 복구 알고리즘이 강하다는 것은 생성된 오류 복구 패킷을 통해 해당 패킷을 복구할 확률이 높다는 것을 의미한다. 예를 들어, 다음과 같은 두 개의 오류 복구 패킷이 존재한다고 가정하자.
오류 복구 패킷 1: 1xor2
오류 복구 패킷 2: 1xor2xor3
이 중, 오류 복구 패킷 1의 경우 패킷 2만 있으면 패킷 1에 대한 복구가 가능하나, 오류 복구 패킷 2의 경우 패킷 1의 복구를 위하여 패킷 2 및 패킷 3의 2개의 패킷이 필요하므로, 이 경우 오류 복구 패킷 1의 복구 강도는 오류 복구 패킷 2의 복구 강도보다 높게 된다. (다만, 이는 패킷 1, 2 및 3이 모두 아직 전송이 완료되지 않았다는 가정 하에서 성립하는 것이다. 즉, 2와 3이 이미 수신단으로 전송된 상태라면 1xor2 및 1xor2xor3 모두 패킷 1을 복구할 수 있는 확률이 동일하므로 동일한 강도를 갖게 된다.) 또한, 오류 복구 패킷의 개수를 증가시킴으로써 오류 복구 패킷의 강도를 증가시키는 것 또한 가능하다. 예를 들어, 1xor2 와 함께 1xor3의 오류 복구 패킷을 전송할 경우에는 패킷 2 또는 3 중 어느 하나만 있어도 패킷 1에 대한 복구가 가능하므로, 1xor2만을 전송할 때 보다 패킷 1에 대한 복구 강도가 높아지게 된다.
본 발명의 실시예에서, 각 원본 패킷별 가중치는 각 원본 패킷이 설정된 시간 내에 수신단(104)에서 복구될 확률에 따라 계산될 수 있다. 즉, 설정된 시간 내에 수신단(104)에서 복구될 확률이 낮은 패킷에 대하여 더 높은 가중치를 주도록 상기 패킷별 가중치를 적용할 수 있다.
구체적으로, 특정 원본 패킷이 설정된 시간 내에 수신단(104)에서 복구될 확률은 다음과 같은 방법으로 계산될 수 있다. 본 발명의 실시예에서는 특정 원본 패킷의 복구 확률을 추정하기 위하여, 송신단(102)과 수신단(104) 사이의 라운드트립 타임(RTT; Round Trip Time), 상기 라운드트립 타임의 분산(RTTvar; RTT variance), 해당 패킷이 송신되는 세션의 재전송 타임아웃(RTO; Retransmission TimeOut)값 및 송신단(102)과 수신단(104) 사이의 패킷 유실률(ρ)을 사용한다. 또한 패킷이 송신단(102)을 출발하여 수신단(104)에 도착할 때까지 소요되는 단방향 네트워크 지연시간(재전송은 고려하지 않음)이 필요한데, 이 값은 상기 라운드트립 타임을 반으로 나눈 값을 적용할 수도 있고, 또는 별도의 알려진 알고리즘을 이용하여 추정된 값을 사용할 수도 있다.
먼저 특정 원본 패킷 i가 T 시간 이내에 수신단(104)에서 복구될 확률을 Pi rcv(T)라 하자. 상기 패킷 i가 수신단(104)에서 복구되는 경우는 다음의 두 가지의 경우가 있을 수 있다.
i) 기 전송된 패킷 i의 원본이 수신단(104)에 도착하는 경우
ii) 기 전송된 패킷 i의 오류 복구 패킷들에 의하여 수신단(104)에서 패킷 i가 복구되는 경우
즉, 상기 특정 원본 패킷 i가 T 시간 이내에 수신단(104)에서 복구될 확률은 상기 i)의 사건이 일어날 확률 및 ii)의 사건이 일어날 확률의 확률 합으로 계산될 수 있다.
패킷 i를 복구하기 위한 복구 패킷들의 집합을 J라고 가정하고, j∈J 를 만족하는 오류 복구 패킷 j를 이용하여 패킷 i를 복구하기 위하여 필요한 다른 원본 패킷들의 집합을 Kji라고 가정하자. 예를 들어, i = 1, 복구 패킷 j = 1xor2라고 가정하면, 복구 패킷 j로 i를 복구하기 위하여 필요한 패킷 집합 Kji={2} 가 된다. 이 경우, 원본 패킷 i가 T 시간 이내에 수신단에서 복구될 확률 Pi rcv(T) 은 다음의 수학식 1과 같이 계산될 수 있다.
Figure 112012109078439-pat00001
이때, Pi rcv(T)는 패킷 i가 시간 T 내에 수신단(104)에서 복구될 확률, Pi arr(T)는 패킷 i가 시간 T 내에 수신단(104)에 도착할 확률, J는 패킷 i를 복구하기 위하여 생성된 오류 복구 패킷의 집합, Pj arr(T)는 오류 복구 패킷 j가 시간 T 내에 수신단(104)에 도착할 확률, Kji는 오류 복구 패킷 j로 패킷 i를 복구하기 위해 필요한 패킷 집합, Pk arr(T)는 Kij에 속한 패킷 k가 시간 T 내에 수신단(104)에 도착할 확률이다.
즉, Pi rcv(T)는 1에서 패킷 i가 복구될 수 없는 경우에 대한 확률값을 뺀 값과 같다. 패킷 i가 복구될 수 없는 경우는 원본 패킷 i가 T 시간내에 도착하지 못하고, 동시에 i에 대한 복구 패킷들과 복구에 필요한 다른 원본들 중 하나라도 도착하지 못하는 경우이다.
특정 패킷 a가 시간 T 내에 수신단(104)에 도착할 확률(Pa arr(T))을 계산하기 위해서는, 먼저 패킷 a가 T 시간내에 도착하기 위해 허용 가능한 최대 재전송 회수 Na를 구해야 한다. 예를 들어, TCP 표준에서는 송신단(102)에서 패킷을 전송한 후 재전송 타임아웃(RTO)이 지나도 해당 패킷에 대한 ACK (acknowledgement) 가 오지 않으면 타임아웃을 발생시키고 해당 패킷을 재전송 하도록 하고 있다. 또한 타임아웃이 발생할 때마다 RTO를 두 배로 재설정하여 타임아웃 발생 시간 간격을 지수적으로 늘려간다. 이를 반영하면 Na는 다음의 수학식 2와 같이 계산될 수 있다.
Figure 112012109078439-pat00002
상기 수학식에서, ρ는 송신단(102)과 수신단(104) 사이의 패킷 유실률, RTO는 패킷 a을 송신한 세션의 재전송 타임아웃, RTT는 송신단(102)과 수신단(104) 사이의 라운드트립 타임, curTime은 현재 시각, sentTime은 패킷 a의 최초 송신 시각을 각각 의미한다. 또한, argmaxn{condition} 은 condition을 만족시키는 n값중 가장 큰 값을 의미한다.
특정 패킷 a가 시간 T 내에 수신단(104)에 도착할 확률(Pa arr(T))은 다음의 3과 같이 계산될 수 있다.
Figure 112012109078439-pat00003
다음으로, 경과시간 가중치 계산부(402)는 송신 데이터의 송신 시작 시각부터의 경과시간(elapsed time)에 따른 가중치를 계산한다. 경과시간 가중치 계산부(402)에서 상기 경과시간에 따른 가중치를 계산하는 이유는, 데이터가 전송 시작 시점부터의 경과 시간에 따라 패킷의 유실이 전체 데이터 전송 시간에 미치는 영향이 달라지기 때문이다.
도 5 및 도 6은 데이터의 송신 시작 시각부터의 경과시간에 따라 패킷의 유실이 전체 데이터 전송 시간에 미치는 영향을 설명하기 위한 도면이다. 도 5 및 도 6 모두 총 5개의 패킷으로 구성된 데이터를 송신단(102)에서 수신단(104)으로 전송하는 경우를 가정한 것으로서, 도 5에서는 2번째 패킷이 유실되어 재전송되는 경우를, 도 6에서는 4번째 패킷이 유실되어 재전송되는 경우를 각각 도시한 것이다. 도 5의 실시예의 경우, 유실된 2번째 패킷은 마지막 패킷인 패킷 5의 전송 전에 재전송되어 수신단(104)에 도달하므로 패킷의 유실이 전체 데이터 전송 시간에 영향을 미치지 않는다. 그러나, 도 6의 실시예의 경우에는 유실된 4번째 패킷의 재전송이 마지막 패킷의 전송 이후에 일어나므로, 그 만큼 데이터 전송 시간이 증가하게 된다. 즉, 데이터 전송 초기의 패킷 재전송은 전체 데이터 전송 시간에 미치는 영향이 작으나, 시간이 경과할수록 패킷 재전송이 전체 데이터 전송 시간에 미치는 영향이 증가하게 된다. 따라서 경과시간 가중치 계산부(402)는 이와 같은 점을 고려하여 송신 데이터의 송신 시작 시각부터의 경과시간(elapsed time)에 따른 가중치를 계산하게 된다. 상기 경과시간에 따른 가중치는 후술할 패킷 변환부(404)에서의 복구 코드 강도 보정에 사용된다.
구체적으로, 상기 경과시간에 따른 가중치는 송신 데이터의 송신 시점에서 최소값을 가지다가, 전송 시간이 점차 경과할수록 증가하도록 설정될 수 있다. 예를 들어, 도 7에 도시된 바와 같이 경과시간에 따라 상기 가중치가 지수형으로 증가하거나, 또는 도 8에 도시된 바와 같이 선형으로 증가하도록 설정될 수 있다. 다만, 이는 단지 예시일 뿐이므로, 이 외에도 다양한 형태로 상기 경과시간에 따른 가중치를 설정할 수 있음은 물론이다. 또한, 본 실시예에서는 송신 데이터의 송신 시각부터의 시간 경과에 따라 상기 가중치가 증가하도록 설정되었으나, 만약 마지막 패킷의 전송 예정 시각을 알고 있을 경우 현재 시각부터 마지막 패킷의 전송 예정 시각까지의 여유시간(remaining time)에 따라 상기 가중치를 설정하는 것 또한 가능하다.
다음으로, 패킷 변환부(404)는 패킷별 가중치 계산부(400)에서 계산된 패킷별 가중치 및 경과시간 가중치 계산부(402)에서 계산된 경과시간에 따른 가중치에 따라 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성한다. 전술한 바와 같이, 상기 오류 복구 패킷의 생성 방식에는 다양한 알고리즘이 사용될 수 있으며, 이하에서는 이 중 배타적 논리합(XOR)을 이용한 방식 및 리드 솔로몬 부호화를 이용한 방식을 예로 들어 설명하기로 한다.
먼저, 배타적 논리합(XOR)을 이용한 오류 복구 패킷 생성 방식을 설명하면 다음과 같다. 현재 시점에서, 다음과 같이 10개의 전송 대상 원본 패킷이 존재한다고 가정하자.
P1, P2, P3 ..., P10
패킷 변환부(404)는 패킷별 가중치 계산부(400)에서 계산된 각 패킷별 가중치에 따라 상기 전송 대상 원본 패킷들을 복수 개의 구간으로 분류한다. 예를 들어 패킷 변환부(404)는 패킷별 가중치 계산부(400)에서 계산된 각 패킷별 가중치를 0 내지 1의 값으로 정규화하고, 이를 구간1(가중치 0.8 이상 1.0 이하인 구간), 구간2(가중치 0.6 이상 0.8 미만인 구간), 구간3(가중치 0.4 이상 0.6 미만인 구간), 구간4(가중치 0.2 이상 0.4 미만인 구간) 및 구간5(가중치 0 이상 0.2 미만인 구간)의 5개의 구간으로 분류할 수 있다. 이때, 상기 전송 대상 원본 패킷들이 패킷별 가중치에 따라 다음과 같이 분류된다고 가정하자.
구간1(가중치 0.8~1.0): P10, P9
구간2(가중치 0.6~0.8): P8
구간3(가중치 0.4~0.6): P7, P6
구간4(가중치 0.2~0.4): P5, P4, P3
구간5(가중치 0.0~0.2): P2, P1
상기와 같이 패킷들이 복수 개의 구간으로 분류되면, 다음으로 패킷 변환부(404)는 분류된 구간 별로 설정된 복구 코드 강도에 따라 각 구간 별 오류 복구 패킷을 생성한다. 이때 상기 구간별 복구 코드 강도는 각 구간 별로 얼마나 강한 오류 복구 패킷을 생성할 지를 나타내는 값이다. 예를 들어, 상기 복구 코드 강도는 구간 별로 오류 복구 패킷을 생성하기 위하여 사용되는 원본 패킷의 개수로 설정될 수 있다. 이 경우, 상기 원본 패킷의 개수는 해당 구간의 가중치가 높을수록 작아지도록 설정될 수 있다. 전술한 바와 같이, 오류 복구 패킷을 생성하기 위한 원본 패킷의 개수가 많을수록 해당 패킷을 복구할 확률이 낮아지기 때문이다. 즉, 패킷별 가중치가 높다는 것은 해당 패킷의 유실 가능성 또한 높다는 의미이므로, 더 강한 오류 복구 패킷을 생성할 필요가 있으므로, 패킷 변환부(404)는 이를 반영하여 각 구간 별 복구 코드 강도를 설정한다. 만약 상기 오류 복구 패킷을 생성하기 위한 원본 패킷의 개수가 1일 경우에는 원본 패킷을 그래도 오류 복구 패킷으로 사용한다.
예를 들어, 전술한 실시예에서 각 구간 별 가중치는 다음과 같이 설정될 수 있다.
구간1(가중치 0.8~1.0): 원본 전송
구간2(가중치 0.6~0.8): 2개 패킷 XOR
구간3(가중치 0.4~0.6): 3개 패킷 XOR
구간4(가중치 0.2~0.4): 4개 패킷 XOR
구간5(가중치 0.0~0.2): 5개 패킷 XOR
즉, 가장 가중치가 높은 구간인 구간1의 경우 원본을 그대로 전송하고, 구간2의 경우 2개의 패킷을 XOR하여 오류 복구 패킷을 생성하며, 그 이하의 구간에서는 XOR 연산을 수행할 패킷의 개수를 점차 가중시킬 수 있다. 상기와 같이 설정된 복구 코드 강도를 이용하여 각 구간별 오류 복구 패킷을 생성하면 다음과 같다. 이때 특정 구간의 오류 복구 패킷 생성시에는 해당 구간의 상위구간, 즉 해당 구간보다 가중치가 높은 구간에 포함된 패킷들이 반복적으로 사용된다. 또한, 오류 복구 패킷을 생성하기 위한 원본 패킷의 개수가 부족한 구간이 존재하는 경우에는, 해당 구간의 하위 구간, 즉 해당 구간보다 가중치가 낮은 구간에 포함된 전송 대상 패킷 중 하나 이상의 패킷을 해당 구간에 추가하여 오류 복구 패킷을 생성하게 된다.
구간1: P10, P9
구간2: P10xorP9, P8xorP7
구간3: P10xorP9xorP8, P7xorP6xorP5
구간4: P10xorP9xorP8xorP7, P6xorP5xorP4xorP3
구간5: P10xorP9xorP8xorP7xorP6, P5xorP4xorP3xorP2xorP1
상기 예에서 알 수 있는 바와 같이, 구간1에 속한 P10, P9는 구간2 내지 5에서 반복적으로 사용되며, 이는 다른 패킷들 또한 마찬가지이다. 또한, 구간 2의 경우 P8과 XOR 연산을 수행할 패킷이 존재하지 않으므로, 구간3에 포함된 P7을 추가하여 오류 복구 패킷(P8xorP7)을 생성하였다.
상기와 같이 오류 복구 패킷들이 생성되면, 다음으로 생성된 오류 복구 패킷들을 각 패킷들이 속한 구간의 가중치에 따라 정렬한다. 즉, 가중치가 높은 상위구간에 속한 오류 복구 패킷들이 하위구간에 속한 오류 복구 패킷보다 먼저 송신되도록 각 패킷들을 정렬하게 된다. 예를 들어, 상술한 실시예에서 생성된 오류 복구 패킷들을 정렬하면 다음과 같다.
P10, P9, P10xorP9, P8xorP7, P10xorP9xorP8, P7xorP6xorP5, P10xorP9xorP8xorP7, P6xorP5xorP4xorP3, P10xorP9xorP8xorP7xorP6, P5xorP4xorP3xorP2xorP1
한편, 전술한 바와 같이 상기 복구 코드 강도는 경과시간 가중치 계산부(402)에서 계산된 경과시간에 따른 가중치에 따라 보정될 수 있다. 예를 들어, 패킷 변환부(404)는 경과시간에 따른 가중치 별로 다음과 같이 복구 코드 강도의 보정치를 적용할 수 있다.
가중치 0~0.5: 복구 코드 강도 +0
가중치 0.5~0.8: 복구 코드 강도 +1
가중치 0.8~1.0: 복구 코드 강도 +2
상기 예에서 복구 코드 강도를 +1만큼 보정한다는 의미는, 상위구간의 복구 코드 강도를 한 단계 낮은 구간에까지 적용한다는 의미이다. 예를 들어, 상기 예에서 복구 코드 강도에 +2만큼을 보정한 경우 각 구간의 복구 코드 강도는 다음과 같이 정해진다.
구간1(가중치 0.8~1.0): 원본 전송
구간2(가중치 0.6~0.8): 원본 전송
구간3(가중치 0.4~0.6): 원본 전송
구간4(가중치 0.2~0.4): 2개 패킷 XOR
구간5(가중치 0.0~0.2): 3개 패킷 XOR
즉, 원 가중치에서는 구간1에서만 원본을 전송하였으나, 보정치를 적용한 경우에는 구간3까지 원본을 전송하게 된다. 또한, 이에 따라 구간4의 경우 원 가중치의 구간2에 해당하는 복구 코드 강도가, 구간5의 경우 원 가중치의 구간3에 해당하는 복구 코드 강도가 각각 적용된다. 이 경우 각 구간별 오류 복구 패킷은 다음과 같다.
구간1: P10, P9
구간2: P10, P9, P8
구간3: P10, P9, P8, P7, P6
구간4: P10xorP9, P8xorP7, P6xorP5, P4xorP3
구간5: P10xorP9xorP8, P7xorP6xorP5, P4xorP3xorP2, P1xorP10xorP9
다음으로, 리드 솔로몬 부호화(Reed-Solomon Forward Error Correction; 이하 RS-FEC로 줄여 칭함)를 이용한 오류 복구 패킷 생성 방식을 설명하면 다음과 같다. RS-FEC 방식의 경우, K개의 원본 패킷을 전송하기 위해 N-K 개의 복구 코드를 생성하여 함께 전송하여 총 N개의 패킷을 전송하게 되며, 이를 RS (N, K) 로 표기할 수 있다. 여기서 N은 총 전송 패킷 수, K는 원본 패킷 수 이며, N-K는 오류 복구 패킷의 수가 된다. 송신단(102)이 RS-FEC를 통해 복구패킷을 생성하고 총 N개의 데이터를 전송하면, 수신단(104)에서는 N개중 어떤 조합으로든지 K개의 패킷을 받으면 원본 데이터를 모두 복구할 수 있다. 즉 N개의 패킷 중에서 N-K개의 패킷이 유실되어 지연되더라도 가장 빨리 도착한 K개의 패킷만으로 원본을 복구할 수 있는 것이다.
본 실시예에서도 앞선 실시예에서와 마찬가지로 다음과 같이 10개의 전송 대상 원본 패킷이 패킷별 가중치에 따라 다음과 같이 분류된다고 가정하자.
구간1(가중치 0.8~1.0): P10, P9
구간2(가중치 0.6~0.8): P8
구간3(가중치 0.4~0.6): P7, P6
구간4(가중치 0.2~0.4): P5, P4, P3
구간5(가중치 0.0~0.2): P2, P1
상기와 같이 패킷들이 복수 개의 구간으로 분류되면, 다음으로 패킷 변환부(404)는 분류된 구간 별로 설정된 복구 코드 강도에 따라 각 구간 별 오류 복구 패킷을 생성한다. 이때 상기 구간별 복구 코드 강도는 각 구간 별로 얼마나 강한 오류 복구 패킷을 생성할 지를 나타내는 값이다. 예를 들어, 상기 복구 코드 강도는 구간 별로 오류 복구 패킷을 생성하기 위하여 사용되는 원본 패킷의 개수로 설정될 수 있다. 이 경우, 상기 원본 패킷의 개수는 해당 구간의 가중치가 높을수록 작아지도록 설정될 수 있다. 전술한 바와 같이, 오류 복구 패킷을 생성하기 위한 원본 패킷의 개수가 많을수록 해당 패킷을 복구할 확률이 낮아지기 때문이다. 즉, 패킷별 가중치가 높다는 것은 해당 패킷의 유실 가능성 또한 높다는 의미이므로, 더 강한 오류 복구 패킷을 생성할 필요가 있으므로, 패킷 변환부(404)는 이를 반영하여 각 구간 별 복구 코드 강도를 설정한다. 만약 상기 오류 복구 패킷을 생성하기 위한 원본 패킷의 개수가 1일 경우에는 원본 패킷을 그래도 오류 복구 패킷으로 사용한다.
예를 들어, 각 구간 별 가중치는 다음과 같이 설정될 수 있다.
구간1(가중치 0.8~1.0): 원본 전송
구간2(가중치 0.6~0.8): RS(3, 2)
구간3(가중치 0.4~0.6): RS(4, 3)
구간4(가중치 0.2~0.4): RS(5, 4)
구간5(가중치 0.0~0.2): RS(6, 5)
즉, 가장 가중치가 높은 구간인 구간1의 경우 원본을 그대로 전송하고, 구간2의 경우 2개의 패킷에 RS-FEC를 적용하여 오류 복구 패킷을 생성하며, 그 이하의 구간에서는 RS-FEC를 적용할 패킷의 개수를 점차 증가시킬 수 있다. 상기와 같이 설정된 복구 코드 강도를 이용하여 각 구간별 오류 복구 패킷을 생성하면 다음과 같다. 이때 특정 구간의 오류 복구 패킷 생성시에는 해당 구간의 상위구간, 즉 해당 구간보다 가중치가 높은 구간에 포함된 패킷들이 반복적으로 사용된다. 또한, 오류 복구 패킷을 생성하기 위한 원본 패킷의 개수가 부족한 구간이 존재하는 경우에는, 해당 구간의 하위 구간, 즉 해당 구간보다 가중치가 낮은 구간에 포함된 전송 대상 패킷 중 하나 이상의 패킷을 해당 구간에 추가하여 오류 복구 패킷을 생성하게 된다.
구간1: P10, P9
구간2: RS(3,2) {P10, P9}, RS(3, 2) {P8, P7}
구간3: RS(4,3) {P10, P9, P8}, RS(3,2) {P7, P6, P5}
구간4: RS(5,4) {P10, P9, P8, P7}, RS(5,4) {P6, P5, P4, P3}
구간5: RS(6,5) {P10, P9, P8, P7, P6, RS(6,5) {P5, P4, P3, P2, P1}
(이때, RS(3,2) {P10, P9}는 P10 및 P9로부터 RS-FEC를 통해 1개의 오류 복구 패킷을 포함하는 3개의 패킷을 생성한다는 의미이다.)
상기 예에서 알 수 있는 바와 같이, 구간1에 속한 P10, P9는 구간2 내지 5에서 반복적으로 사용되며, 이는 다른 패킷들 또한 마찬가지이다. 또한, 구간 2의 경우 P8과 RS-FEC 연산을 수행할 패킷이 존재하지 않으므로, 구간3에 포함된 P7을 추가하여 오류 복구 패킷(RS(3, 2) {P8, P7})을 생성하였다.
상기와 같이 오류 복구 패킷들이 생성되면, 다음으로 생성된 오류 복구 패킷들을 각 패킷들이 속한 구간의 가중치에 따라 정렬한다. 즉, 가중치가 높은 상위구간에 속한 오류 복구 패킷들이 하위구간에 속한 오류 복구 패킷보다 먼저 송신되도록 각 패킷들을 정렬하게 된다. 예를 들어, 상술한 실시예에서 생성된 오류 복구 패킷들을 정렬하면 다음과 같다.
P10, P9, RS(3,2) {P10, P9}, RS(3, 2) {P8, P7}, RS(4,3) {P10, P9, P8}, RS(3,2) {P7, P6, P5}, RS(5,4) {P10, P9, P8, P7}, RS(5,4) {P6, P5, P4, P3}, RS(6,5) {P10, P9, P8, P7, P6, RS(6,5) {P5, P4, P3, P2, P1}
한편, 전술한 바와 같이 상기 복구 코드 강도는 경과시간 가중치 계산부(402)에서 계산된 경과시간에 따른 가중치에 따라 보정될 수 있다. 예를 들어, 패킷 변환부(404)는 경과시간에 따른 가중치 별로 다음과 같이 복구 코드 강도의 보정치를 적용할 수 있다.
가중치 0~0.5: 복구 코드 강도 +0
가중치 0.5~0.8: 복구 코드 강도 +1
가중치 0.8~1.0: 복구 코드 강도 +2
상기 예에서 복구 코드 강도를 +1만큼 보정한다는 의미는, 상위구간의 복구 코드 강도를 한 단계 낮은 구간에까지 적용한다는 의미이다. 예를 들어, 상기 예에서 복구 코드 강도에 +2만큼을 보정한 경우 각 구간의 복구 코드 강도는 다음과 같이 정해진다.
구간1(가중치 0.8~1.0): 원본 전송
구간2(가중치 0.6~0.8): 원본 전송
구간3(가중치 0.4~0.6): 원본 전송
구간4(가중치 0.2~0.4): RS(3, 2)
구간5(가중치 0.0~0.2): RS(4, 3)
즉, 원 가중치에서는 구간1에서만 원본을 전송하였으나, 보정치를 적용한 경우에는 구간3까지 원본을 전송하게 된다. 또한, 이에 따라 구간4의 경우 원 가중치의 구간2에 해당하는 복구 코드 강도가, 구간5의 경우 원 가중치의 구간3에 해당하는 복구 코드 강도가 각각 적용된다. 이 경우 각 구간별 오류 복구 패킷은 다음과 같다.
구간1: P10, P9
구간2: P10, P9, P8
구간3: P10, P9, P8, P7, P6
구간4: RS(3, 2) {P10, P9}, RS(3, 2) {P8, P7}, RS(3, 2) {P6, 5}, RS(3, 2) {P4, P3}
구간5: RS(4,3) {P10, P9, P8}, RS(4,3) {P7 P6, P5}, RS(4,3) {P4, P3, P2}, RS(4,3) {P1, P10, P9}
다음으로, 세션 정렬부(406)는 송신단(102)과 수신단(104) 사이에 형성된 복수 개의 전송 가능 세션 각각의 예상 릴리즈 시간을 계산하고, 예상 릴리즈 시간이 빠른 순서로 상기 전송 가능 세션을 정렬한다. 본 발명의 실시예에서, 각 세션의 릴리즈 시간은 해당 세션으로 기 전송된 패킷이 모두 전송 완료될 때 까지 남은 시간을 의미한다. 예를 들어, TCP의 경우 응용 계층에 순서대로 패킷들을 전달하도록 설계되어 있으므로, 기 전송된 패킷이 수신단(104)에 모두 도착하기 전에는 새로운 패킷이 먼저 수신단(104)에 도착한다고 하더라도 응용 계층에서 값을 읽을 수 없다. 즉, 세션이 릴리즈 되면 해당 세션으로 패킷을 보냈을 때 패킷이 유실되지 않는 한 바로 수신단(104)의 응용 계층에 전달 될 수 있는 반면, 세션이 릴리즈 되지 않았을 때 패킷을 전송하면 해당 패킷이 수신단(104)에 도착하더라도 기존에 전송 중이던 패킷이 유실 등으로 인해 아직 수신단에 도착하지 않은 상태라면, 이전 패킷들이 모두 수신단(104)에 도착한 후에야 새로 보낸 패킷이 응용 계층에 전달될 수 있게 된다. 따라서 본 발명의 실시예에서는 각 세션의 릴리즈 시간을 계산하여 예상 릴리즈 시간이 작은 순으로 세션들을 정렬하도록 구성된다.
구체적으로, 각 세션 별 예상 릴리즈 시간은, 송신단(102)과 수신단(104) 사이의 패킷 유실률, 라운드트립 타임, 해당 세션의 재전송 타임아웃 및 해당 세션에서의 마지막 패킷 전송 시각 정보를 이용하여 계산될 수 있다. 예를 들어, 각 각 세션 별 예상 릴리즈 시간은, 다음의 수학식 4와 같이 계산될 수 있다.
Figure 112012109078439-pat00004
이때, rTi는 i번째 세션의 예상 릴리즈 시간, ρ는 송신단(102)과 수신단(104) 사이의 패킷 유실률, RTO는 i번째 세션의 재전송 타임아웃, RTT는 송신단(102)과 수신단(104) 사이의 라운드트립 타임, curTime은 현재 시각, lastTxTi은 i번째 세션의 마지막 패킷 전송 시각을 각각 의미한다. 상기 수학식 4는 각 패킷 별 3번의 연속적인 패킷 로스까지만을 고려한 것이며, 그 이상의 패킷 로스는 실질적으로 매우 작은 값이므로 이를 무시하여 추정한 것이다. 한편, 상기 수학식 4는 현재 해당 세션에 전송 중인 패킷이 있는 경우를 가정한 것이며, 현재 전송 중인 패킷이 없는 경우 해당 세션의 예상 릴리즈 시간은 0이 된다.
다음으로, 송신부(408)는 정렬된 복수 개의 전송 가능 세션에 패킷 변환부(404)에서 생성 및 정렬된 오류 복구 패킷을 순차적으로 할당한다. 즉, 정렬된 오류 복구 패킷 중 첫 번째 패킷은 예상 릴리즈 시간이 가장 짧은 세션에, 두 번째 패킷은 예상 릴리즈 시간이 두 번째로 짧은 세션에 각각 할당되며, 이와 동일한 방법으로 나머지 패킷들도 각각 세션에 할당된다. 만약 전송될 패킷의 수가 세션의 수 보다 많을 경우에는 순환 방식으로 다시 예상 릴리즈 시간이 가장 짧은 세션으로 돌아가서 할당을 반복하게 된다. 이와 같은 패킷 할당이 완료되면, 송신부(408)는 할당된 세션을 이용하여 각 패킷들을 수신단(104)으로 송신한다.
도 9는 본 발명의 일 실시예에 따른 데이터 전송 방법(900)을 나타낸 순서도이다. 먼저, 패킷별 가중치 계산부(400)에서 송신 데이터를 구성하는 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산한다(902). 패킷별 가중치 계산부(400)는 각 원본 패킷이 설정된 시간 내에 수신단(104)에서 복구될 확률을 계산하고, 계산된 확률에 따라 원본 패킷 각각에 대한 패킷별 가중치를 계산할 수 있다. 이때 특정 원본 패킷이 설정된 시간 내에 수신단(104)에서 복구될 확률은 특정 원본 패킷이 설정된 시간 내에 수신단(104)에 도착할 확률, 및 특정 원본 패킷의 복구에 필요한 다른 패킷들이 설정된 시간 내에 수신단(104)에 도착할 확률의 확률 합으로 계산될 수 있다. 구체적인 계산 방법에 대해서는 전술하였는 바 여기서는 그 상세한 설명을 생략한다.
다음으로, 경과시간 가중치 계산부(402)에서 상기 송신 데이터의 송신 시작 시각부터의 경과시간에 따른 가중치를 계산한다(904). 상기 경과시간에 따른 가중치는 패킷 변환부(404)에서 각 구간 별 복구 코드 강도를 보정하는 데 사용될 수 있음은 전술한 바와 같다.
다음으로, 패킷 변환부(404)에서 계산된 상기 패킷별 가중치에 따라 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성한다(906). 구체적으로, 패킷 변환부(404)는 패킷별 가중치에 따라 원본 패킷을 복수 개의 구간으로 분류하고, 분류된 구간 별로 설정된 복구 코드 강도에 따라 각 구간 별 오류 복구 패킷을 생성하며, 생성된 각 오류 복구 패킷들을 적용된 복구 코드 강도에 따라 정렬하도록 구성될 수 있다. 이때 상기 복구 코드 강도는 상기 각 구간 별 오류 복구 패킷을 생성하기 위하여 사용되는 원본 패킷의 개수로 정해질 수 있으며, 상기 분류된 구간에 포함된 상기 원본 패킷의 패킷별 가중치가 낮을수록 해당 구간에서 상기 오류 복구 패킷을 생성하기 위하여 결합되는 원본 패킷의 개수는 증가하도록 설정될 수 있다.
다음으로, 세션 정렬부(406)에서 복수 개의 전송 가능 세션 각각의 예상 릴리즈 시간을 계산하고, 예상 릴리즈 시간이 빠른 순서로 상기 전송 가능 세션을 정렬한다(908). 이때 각 세션 별 예상 릴리즈 시간은, 데이터 전송 방법과 수신단(104) 사이의 패킷 유실률, 라운드트립 타임, 해당 세션의 재전송 타임아웃 및 해당 세션에서의 마지막 패킷 전송 시각 정보를 이용하여 계산될 수 있다. 구체적인 예상 릴리즈 시간 계산 방법은 전술하였다.
다음으로, 송신부(408)에서 정렬된 복수 개의 전송 가능 세션에 패킷 변환부(404)에서 생성 및 정렬된 오류 복구 패킷을 순차적으로 할당하고, 할당된 세션을 이용하여 오류 복구 패킷을 수신단(104)으로 송신한다(910).
도 10은 본 발명의 실시예에 따를 경우의 데이터 전송 속도를 종래기술과 비교한 그래프이다. 패킷 전송 프로토콜로는 TCP를, 오류 복구 패킷 생성 알고리즘으로는 ?을 사용하였으며, 각 테스트 별 유실률 및 비트 에러율은 아래의 표 1과 같다. 도시된 바와 같이, 유실률이 높아질 수록 일반 TCP의 경우는 지연시간이 급격하게 증가하는 반면, 본 발명의 실시예를 적용하였을 경우에는 지연시간의 증가가 크게 완화되는 것을 볼 수 있다. 특히 test6의 경우 일반 TCP의 절반의 지연만으로 데이터를 전송 가능한 것으로 나타나, 지연시간의 관점에서 일반 TCP 대비 100%의 성능 향상을 보여주고 있음을 알 수 있다.
유실률(%) 비트 에러율(%)
test 1 0 0
test 2 0 1*(10-5)
test 3 2 2*(10-5)
test 4 5 3*(10-5)
test 5 10 4*(10-5)
test 6 15 5*(10-5)
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야에서 통상의 지식을 가진 자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다.
그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 전송 시스템
102: 송신단
104: 수신단
400: 패킷별 가중치 계산부
402: 경과시간 가중치 계산부
404: 패킷 변환부
406: 세션 정렬부
408: 송신부

Claims (33)

  1. 송신 데이터를 구성하는 복수 개의 패킷을 수신단으로 전송하기 위한 시스템으로서,
    상기 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산하는 패킷별 가중치 계산부;
    계산된 상기 패킷별 가중치에 기초한 복구코드 강도에 따라 상기 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성하는 패킷 변환부; 및
    복수 개의 전송 가능 세션을 이용하여 상기 오류 복구 패킷을 상기 수신단으로 송신하는 송신부를 포함하는 데이터 전송 장치.
  2. 청구항 1에 있어서,
    상기 패킷별 가중치 계산부는, 상기 각 원본 패킷이 설정된 시간 내에 상기 수신단에서 복구될 확률을 계산하고, 계산된 상기 확률에 따라 상기 패킷별 가중치를 계산하는, 데이터 전송 장치.
  3. 청구항 2에 있어서,
    특정 원본 패킷이 설정된 시간 내에 상기 수신단에서 복구될 확률은, 상기 특정 원본 패킷이 상기 설정된 시간 내에 상기 수신단에 도착할 확률, 및 상기 특정 원본 패킷의 복구에 필요한 다른 패킷들이 상기 설정된 시간 내에 상기 수신단에 도착할 확률의 확률 합으로 계산되는, 데이터 전송 장치.
  4. 청구항 2에 있어서,
    특정 원본 패킷이 설정된 시간 내에 상기 수신단에서 복구될 확률은, 다음의 수학식
    Figure 112012109078439-pat00005

    (이때, Pi rcv(T)는 패킷 i가 시간 T 내에 수신단에서 복구될 확률, Pi arr(T)는 패킷 i가 시간 T 내에 수신단에 도착할 확률, J는 패킷 i를 복구하기 위하여 생성된 오류 복구 패킷의 집합, Pj arr(T)는 오류 복구 패킷 j가 시간 T 내에 수신단에 도착할 확률, Kji는 오류 복구 패킷 j로 패킷 i를 복구하기 위해 필요한 패킷 집합, Pk arr(T)는 Kij에 속한 패킷 k가 시간 T 내에 수신단에 도착할 확률)
    에 의하여 계산되는, 데이터 전송 장치.
  5. 청구항 4에 있어서,
    특정 패킷 a가 시간 T 내에 수신단에 도착할 확률(Pa arr(T))은 다음의 수학식
    Figure 112012109078439-pat00006

    Figure 112012109078439-pat00007

    (이때, ρ는 상기 데이터 전송 장치와 수신단 사이의 패킷 유실률, RTO는 상기 패킷 a을 송신한 세션의 재전송 타임아웃, RTT는 상기 데이터 전송 장치와 수신단 사이의 라운드트립 타임, curTime은 현재 시각, sentTime은 상기 패킷 a의 최초 송신 시각)
    에 의하여 계산되는, 데이터 전송 장치.
  6. 청구항 1에 있어서,
    상기 패킷 변환부는, 상기 패킷별 가중치에 따라 상기 원본 패킷을 복수 개의 구간으로 분류하고, 분류된 구간 별로 설정된 복구 코드 강도에 따라 각 구간 별 오류 복구 패킷을 생성하며, 생성된 각 오류 복구 패킷들을 적용된 복구 코드 강도에 따라 정렬하는, 데이터 전송 장치.
  7. 청구항 6에 있어서,
    상기 복구 코드 강도는, 상기 각 구간 별 오류 복구 패킷을 생성하기 위하여 사용되는 원본 패킷의 개수인, 데이터 전송 장치.
  8. 청구항 7에 있어서,
    상기 분류된 구간에 포함된 상기 원본 패킷의 패킷별 가중치가 낮을수록, 해당 구간에서 상기 오류 복구 패킷을 생성하기 위하여 결합되는 원본 패킷의 개수는 증가하도록 설정되는, 데이터 전송 장치.
  9. 청구항 7에 있어서,
    상기 패킷 변환부는, 상기 오류 복구 패킷을 생성하기 위한 원본 패킷의 개수가 부족한 구간이 존재하는 경우, 해당 구간의 하위 구간에 포함된 전송 대상 패킷 중 하나 이상의 패킷을 상기 해당 구간에 추가하여 상기 오류 복구 패킷을 생성하는, 데이터 전송 장치.
  10. 청구항 7에 있어서,
    상기 패킷 변환부는, 해당 구간 및 해당 구간의 상위 구간에 포함된 둘 이상의 원본 패킷의 배타적 논리합(XOR)을 계산하거나, 또는 리드 솔로몬 부호화 알고리즘을 적용함으로써 상기 오류 복구 패킷을 생성하는, 데이터 전송 장치.
  11. 청구항 6에 있어서,
    상기 데이터 전송 장치는, 상기 송신 데이터의 송신 시작 시각부터의 경과시간에 따른 가중치를 계산하는 경과시간 가중치 계산부를 더 포함하며,
    상기 패킷 변환부는, 상기 경과시간에 따른 가중치에 따라 상기 각 구간 별 복구 코드 강도를 보정하는, 데이터 전송 장치.
  12. 청구항 11에 있어서,
    상기 경과시간에 따른 가중치는, 상기 송신 데이터의 송신 시각부터의 시간 경과에 따라 증가하도록 설정되는, 데이터 전송 장치.
  13. 청구항 6에 있어서,
    상기 데이터 전송 장치는,
    상기 복수 개의 전송 가능 세션 각각의 예상 릴리즈 시간을 계산하고, 상기 예상 릴리즈 시간이 빠른 순서로 상기 복수 개의 전송 가능 세션을 정렬하는 세션 정렬부를 더 포함하며,
    상기 송신부는, 정렬된 복수 개의 전송 가능 세션에 상기 패킷 변환부에서 생성 및 정렬된 상기 오류 복구 패킷을 순차적으로 할당하는, 데이터 전송 장치.
  14. 청구항 13에 있어서,
    상기 각 세션 별 예상 릴리즈 시간은, 상기 데이터 전송 장치와 상기 수신단 사이의 패킷 유실률, 라운드트립 타임, 해당 세션의 재전송 타임아웃 및 해당 세션에서의 마지막 패킷 전송 시각 정보를 이용하여 계산되는, 데이터 전송 장치.
  15. 청구항 14에 있어서,
    상기 각 세션 별 예상 릴리즈 시간은, 다음의 수학식
    Figure 112012109078439-pat00008

    (이때, rTi는 i번째 세션의 예상 릴리즈 시간, ρ는 상기 데이터 전송 장치와 수신단 사이의 패킷 유실률, RTO는 i번째 세션의 재전송 타임아웃, RTT는 상기 데이터 전송 장치와 수신단 사이의 라운드트립 타임, curTime은 현재 시각, lastTxTi은 상기 i번째 세션의 마지막 패킷 전송 시각)
    을 이용하여 계산되는, 데이터 전송 장치.
  16. 청구항 14에 있어서,
    상기 전송 가능 세션 중 특정 세션에 현재 전송 중인 패킷이 없는 경우, 해당 세션의 예상 릴리즈 시간은 0으로 설정되는, 데이터 전송 장치.
  17. 데이터 전송 장치에서, 송신 데이터를 구성하는 복수 개의 패킷을 수신단으로 전송하기 위한 방법으로서,
    패킷별 가중치 계산부에서, 상기 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산하는 단계;
    패킷 변환부에서, 계산된 상기 패킷별 가중치에 기초한 복구코드 강도에 따라 상기 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성하는 단계; 및
    송신부에서, 복수 개의 전송 가능 세션을 이용하여 상기 오류 복구 패킷을 상기 수신단으로 송신하는 단계를 포함하는 데이터 전송 방법.
  18. 청구항 17에 있어서,
    상기 패킷별 가중치 계산 단계는, 상기 각 원본 패킷이 설정된 시간 내에 상기 수신단에서 복구될 확률을 계산하고, 계산된 상기 확률에 따라 상기 패킷별 가중치를 계산하는, 데이터 전송 방법.
  19. 청구항 18에 있어서,
    특정 원본 패킷이 설정된 시간 내에 상기 수신단에서 복구될 확률은, 상기 특정 원본 패킷이 상기 설정된 시간 내에 상기 수신단에 도착할 확률, 및 상기 특정 원본 패킷의 복구에 필요한 다른 패킷들이 상기 설정된 시간 내에 상기 수신단에 도착할 확률의 확률 합으로 계산되는, 데이터 전송 방법.
  20. 청구항 18에 있어서,
    특정 원본 패킷이 설정된 시간 내에 상기 수신단에서 복구될 확률은, 다음의 수학식
    Figure 112012109078439-pat00009

    (이때, Pi rcv(T)는 패킷 i가 시간 T 내에 수신단에서 복구될 확률, Pi arr(T)는 패킷 i가 시간 T 내에 수신단에 도착할 확률, J는 패킷 i를 복구하기 위하여 생성된 오류 복구 패킷의 집합, Pj arr(T)는 오류 복구 패킷 j가 시간 T 내에 수신단에 도착할 확률, Kji는 오류 복구 패킷 j로 패킷 i를 복구하기 위해 필요한 패킷 집합, Pk arr(T)는 Kij에 속한 패킷 k가 시간 T 내에 수신단에 도착할 확률)
    에 의하여 계산되는, 데이터 전송 방법.
  21. 청구항 20에 있어서,
    특정 패킷 a가 시간 T 내에 수신단에 도착할 확률(Pa arr(T))은 다음의 수학식
    Figure 112012109078439-pat00010

    Figure 112012109078439-pat00011

    (이때, ρ는 상기 데이터 전송 방법과 수신단 사이의 패킷 유실률, RTO는 상기 패킷 a을 송신한 세션의 재전송 타임아웃, RTT는 상기 데이터 전송 방법과 수신단 사이의 라운드트립 타임, curTime은 현재 시각, sentTime은 상기 패킷 a의 최초 송신 시각)
    에 의하여 계산되는, 데이터 전송 방법.
  22. 청구항 17에 있어서,
    상기 오류 복구 패킷을 생성하는 단계는,
    상기 패킷별 가중치에 따라 상기 원본 패킷을 복수 개의 구간으로 분류하는 단계;
    분류된 구간 별로 설정된 복구 코드 강도에 따라 각 구간 별 오류 복구 패킷을 생성하는 단계; 및
    생성된 각 오류 복구 패킷들을 적용된 복구 코드 강도에 따라 정렬하는 단계를 포함하는, 데이터 전송 방법.
  23. 청구항 22에 있어서,
    상기 복구 코드 강도는, 상기 각 구간 별 오류 복구 패킷을 생성하기 위하여 사용되는 원본 패킷의 개수인, 데이터 전송 방법.
  24. 청구항 23에 있어서,
    상기 분류된 구간에 포함된 상기 원본 패킷의 패킷별 가중치가 낮을수록, 해당 구간에서 상기 오류 복구 패킷을 생성하기 위하여 결합되는 원본 패킷의 개수는 증가하도록 설정되는, 데이터 전송 방법.
  25. 청구항 23에 있어서,
    상기 오류 복구 패킷을 생성하는 단계는, 상기 오류 복구 패킷을 생성하기 위한 원본 패킷의 개수가 부족한 구간이 존재하는 경우, 해당 구간의 하위 구간에 포함된 전송 대상 패킷 중 하나 이상의 패킷을 상기 해당 구간에 추가하여 상기 오류 복구 패킷을 생성하는, 데이터 전송 방법.
  26. 청구항 23에 있어서,
    상기 오류 복구 패킷을 생성하는 단계는, 해당 구간 및 해당 구간의 상위 구간에 포함된 둘 이상의 원본 패킷의 배타적 논리합(XOR)을 계산하거나, 또는 리드 솔로몬 부호화 알고리즘을 적용함으로써 상기 오류 복구 패킷을 생성하는, 데이터 전송 방법.
  27. 청구항 22에 있어서,
    상기 오류 복구 패킷을 생성하는 단계의 수행 이전,
    경과시간 가중치 계산부에서, 상기 송신 데이터의 송신 시작 시각부터의 경과시간에 따른 가중치를 계산하는 단계를 더 포함하며,
    상기 오류 복구 패킷을 생성하는 단계는, 상기 경과시간에 따른 가중치에 따라 상기 각 구간 별 복구 코드 강도를 보정하는, 데이터 전송 방법.
  28. 청구항 27에 있어서,
    상기 경과시간에 따른 가중치는, 상기 송신 데이터의 송신 시각부터의 시간 경과에 따라 증가하도록 설정되는, 데이터 전송 방법.
  29. 청구항 22에 있어서,
    상기 오류 복구 패킷을 생성하는 단계의 수행 이후,
    세션 정렬부에서, 상기 복수 개의 전송 가능 세션 각각의 예상 릴리즈 시간을 계산하고, 상기 예상 릴리즈 시간이 빠른 순서로 상기 복수 개의 전송 가능 세션을 정렬하는 단계를 더 포함하며,
    상기 송신 단계는, 정렬된 복수 개의 전송 가능 세션에 상기 패킷 변환부에서 생성 및 정렬된 상기 오류 복구 패킷을 순차적으로 할당하는, 데이터 전송 방법.
  30. 청구항 29에 있어서,
    상기 각 세션 별 예상 릴리즈 시간은, 상기 데이터 전송 방법과 상기 수신단 사이의 패킷 유실률, 라운드트립 타임, 해당 세션의 재전송 타임아웃 및 해당 세션에서의 마지막 패킷 전송 시각 정보를 이용하여 계산되는, 데이터 전송 방법.
  31. 청구항 30에 있어서,
    상기 각 세션 별 예상 릴리즈 시간은, 다음의 수학식
    Figure 112012109078439-pat00012

    (이때, rTi는 i번째 세션의 예상 릴리즈 시간, ρ는 상기 데이터 전송 방법과 수신단 사이의 패킷 유실률, RTO는 i번째 세션의 재전송 타임아웃, RTT는 상기 데이터 전송 방법과 수신단 사이의 라운드트립 타임, curTime은 현재 시각, lastTxTi은 상기 i번째 세션의 마지막 패킷 전송 시각)
    을 이용하여 계산되는, 데이터 전송 방법.
  32. 청구항 30에 있어서,
    상기 전송 가능 세션 중 특정 세션에 현재 전송 중인 패킷이 없는 경우, 해당 세션의 예상 릴리즈 시간은 0으로 설정되는, 데이터 전송 방법.
  33. 하나 이상의 프로세서;
    메모리; 및
    하나 이상의 프로그램을 포함하는 장치로서,
    상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며,
    상기 프로그램은
    송신 데이터를 구성하는 복수 개의 패킷 중 현재 시점에서의 전송 예정 원본 패킷들 각각에 대한 패킷별 가중치를 계산하는 단계;
    계산된 상기 패킷별 가중치에 기초한 복구코드 강도에 따라 상기 원본 패킷으로부터 하나 이상의 오류 복구 패킷을 생성하는 단계; 및
    복수 개의 전송 가능 세션을 이용하여 상기 오류 복구 패킷을 수신단으로 송신하는 단계를 수행하기 위한 명령어들을 포함하는 장치.
KR1020120156465A 2012-12-28 2012-12-28 데이터 전송 장치 및 방법 KR101506770B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120156465A KR101506770B1 (ko) 2012-12-28 2012-12-28 데이터 전송 장치 및 방법
PCT/KR2013/005264 WO2014104501A1 (ko) 2012-12-28 2013-06-14 데이터 전송 장치 및 방법
US13/933,524 US9219574B2 (en) 2012-12-28 2013-07-02 Apparatus and method for data transmission

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120156465A KR101506770B1 (ko) 2012-12-28 2012-12-28 데이터 전송 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140086228A KR20140086228A (ko) 2014-07-08
KR101506770B1 true KR101506770B1 (ko) 2015-03-27

Family

ID=51018785

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120156465A KR101506770B1 (ko) 2012-12-28 2012-12-28 데이터 전송 장치 및 방법

Country Status (3)

Country Link
US (1) US9219574B2 (ko)
KR (1) KR101506770B1 (ko)
WO (1) WO2014104501A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105490773B (zh) * 2015-11-26 2019-04-09 珠海多玩信息技术有限公司 传输多媒体数据的方法和装置
CN109952725B (zh) * 2016-11-04 2022-04-29 瑞典爱立信有限公司 复制传输的激活和去激活
WO2018084759A1 (en) 2016-11-04 2018-05-11 Telefonaktiebolaget Lm Ericsson (Publ) Enabling efficient handling of redundant packet copies in a wireless communication system
TWI638538B (zh) * 2017-06-02 2018-10-11 佳世達科技股份有限公司 無線訊號穩定度的判斷方法及其系統
CN108667563B (zh) * 2018-01-19 2021-05-11 唐桥科技(杭州)有限公司 一种前向纠错包个数获取方法及装置
US11689323B2 (en) * 2020-02-16 2023-06-27 Video Flow Ltd. Efficient on-demand packet recovery for broadcast and multicast networks system and method
US11277304B1 (en) * 2020-05-29 2022-03-15 Amazon Technologies, Inc. Wireless data protocol

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080028896A (ko) * 2005-06-30 2008-04-02 돌비 레버러토리즈 라이쎈싱 코오포레이션 무선 네트워크들로 멀티미디어 스트리밍의 순방향 오류정정을 최적화하기 위한 방법 및 시스템

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6278716B1 (en) * 1998-03-23 2001-08-21 University Of Massachusetts Multicast with proactive forward error correction
US6782490B2 (en) * 1999-03-17 2004-08-24 At&T Corp. Network-based service for the repair of IP multicast sessions
KR100956819B1 (ko) * 2003-04-29 2010-05-11 엘지전자 주식회사 패킷 데이터 레이트를 결정하는 방법
WO2005020523A1 (ja) * 2003-08-20 2005-03-03 Nec Corporation セッション中継装置及び中継方法
US8804761B2 (en) * 2003-08-21 2014-08-12 Qualcomm Incorporated Methods for seamless delivery of broadcast and multicast content across cell borders and/or between different transmission schemes and related apparatus
US7631085B2 (en) * 2004-08-30 2009-12-08 Nokia Corporation Point-to-point delivery verification report mechanism for point-to-multipoint transmission systems
KR100690622B1 (ko) * 2005-02-16 2007-03-09 엘지전자 주식회사 무선 기기의 오류 복구 방법
JP4787320B2 (ja) * 2005-07-07 2011-10-05 テレフオンアクチーボラゲット エル エム エリクソン(パブル) パケット・データ通信システムにおける符号化およびスケジューリングのための方法および装置
US8310996B2 (en) * 2006-08-07 2012-11-13 Qualcomm Incorporated Conditional scheduling for asynchronous wireless communication
US8031701B2 (en) * 2006-09-11 2011-10-04 Cisco Technology, Inc. Retransmission-based stream repair and stream join
KR100851918B1 (ko) * 2006-10-20 2008-08-12 광주과학기술원 네트워크 적응형 데이터 전송 방법, 이를 위한 데이터 전송시스템, 데이터 송신 장치, 및 데이터 수신 장치
US7957307B2 (en) * 2007-03-14 2011-06-07 Microsoft Corporation Reducing effects of packet loss in video transmissions
US7940644B2 (en) * 2007-03-14 2011-05-10 Cisco Technology, Inc. Unified transmission scheme for media stream redundancy
US8787153B2 (en) * 2008-02-10 2014-07-22 Cisco Technology, Inc. Forward error correction based data recovery with path diversity
CA2757647A1 (en) * 2008-04-04 2009-12-03 Powerwave Cognition, Inc. Methods and systems for a mobile, broadband, routable internet
JP5412917B2 (ja) * 2009-03-27 2014-02-12 富士通株式会社 誤り訂正制御装置、誤り訂正制御方法およびメディアデータ配信システム
US8347048B2 (en) * 2009-10-30 2013-01-01 Ca, Inc. Self learning backup and recovery management system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080028896A (ko) * 2005-06-30 2008-04-02 돌비 레버러토리즈 라이쎈싱 코오포레이션 무선 네트워크들로 멀티미디어 스트리밍의 순방향 오류정정을 최적화하기 위한 방법 및 시스템

Also Published As

Publication number Publication date
WO2014104501A1 (ko) 2014-07-03
KR20140086228A (ko) 2014-07-08
US20140189470A1 (en) 2014-07-03
US9219574B2 (en) 2015-12-22

Similar Documents

Publication Publication Date Title
KR101506770B1 (ko) 데이터 전송 장치 및 방법
US10009259B2 (en) Multi-path data transfer using network coding
CN107257270B (zh) 基于混合自动重传请求的数据传输方法及系统
US7254765B2 (en) Method and devices for error tolerant data transmission, wherein retransmission of erroneous data is performed up to the point where the remaining number of errors is acceptable
CN109981385B (zh) 一种实现丢包检测的方法、装置和系统
WO2015106625A1 (zh) 一种混合自动重传请求方法及相关装置
JP2020516178A (ja) データ処理方法及び装置
KR101274756B1 (ko) 멀티캐스트 및 브로드캐스트 서비스 송신 장치, 송신 방법, 수신 방법
Dunaytsev et al. Modeling TCP SACK performance over wireless channels with completely reliable ARQ/FEC
CN102752184A (zh) 用于实时多播业务的数据通信系统及其方法
KR101116742B1 (ko) 무선통신시스템에서 패킷 데이터 재전송 장치 및 방법
WO2014194493A1 (zh) 一种减少传输控制层确认报文的方法、装置和系统
JP2017092692A (ja) データ伝送制御システム及び方法、並びに、データ伝送制御プログラム
JP5258408B2 (ja) 送信装置及び受信装置
Maisuria et al. Overview of techniques for improving QoS of TCP over wireless links
JP5998923B2 (ja) プログラム、情報処理装置、及び通信方法
US11502986B2 (en) Reducing transmission delay of transmitting data in Wi-Fi
JP2009081567A (ja) 再送制御システム、再送制御方法、送信機及び受信機
US20220311539A1 (en) Forward error correction and ran retransmission
US11463201B2 (en) HARQ TXOP frame exchange for HARQ retransmission using HARQ threads
JP2011211616A (ja) 動画像伝送装置、動画像伝送システム、動画像伝送方法およびプログラム
CN106100797B (zh) 一种基于ltp异步加速重传策略的深空文件传输方法
Chen et al. Effective retransmission in network coding for TCP
Pathapati et al. Comparison of adaptive transport layer error-control mechanisms for highly-dynamic airborne telemetry networks
US9209947B1 (en) Fault-tolerant data transmission system for networks subject to jamming conditions

Legal Events

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

Payment date: 20171213

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200121

Year of fee payment: 6