KR101563779B1 - 네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜 - Google Patents

네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜 Download PDF

Info

Publication number
KR101563779B1
KR101563779B1 KR1020130045557A KR20130045557A KR101563779B1 KR 101563779 B1 KR101563779 B1 KR 101563779B1 KR 1020130045557 A KR1020130045557 A KR 1020130045557A KR 20130045557 A KR20130045557 A KR 20130045557A KR 101563779 B1 KR101563779 B1 KR 101563779B1
Authority
KR
South Korea
Prior art keywords
packet
buffer
timer
protocol
server
Prior art date
Application number
KR1020130045557A
Other languages
English (en)
Other versions
KR20140127440A (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 KR1020130045557A priority Critical patent/KR101563779B1/ko
Publication of KR20140127440A publication Critical patent/KR20140127440A/ko
Application granted granted Critical
Publication of KR101563779B1 publication Critical patent/KR101563779B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

본 발명은 데이터의 손실이 발생하였을 때 재생 한계 시간 이전에 손실된 데이터를 재전송함으로써 실시간 멀티미디어의 품질을 향상시킬 수 있는 데이터 전송 장치 및 방법이 제공된다. 서버는 애플리케이션 계층으로부터 전달받은 패킷을 버퍼에 저장한 후 네트워크 계층으로 전달하고, 클라이언트는 서버로부터 패킷을 수신하고 일정 시간 동안 패킷을 추가로 수신한 후 서버에 ACK 전송을 한다. 또한 본 발명은 손실된 멀티미디어 패킷에 대해 패킷 수명 내에서 반복적으로 재전송하는 종단 간 프로토콜을 제공한다.

Description

네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜 {LIGHTWEIGHT END-TO-END PROTOCOL FOR RETRANSMITTING REAL-TIME MULTIMEDIA DATA LOST OVER THE NETWORKS}
본 발명은 통신 매체를 통해 실시간 데이터를 전송하는 방법에 관한 것으로, 데이터가 손실되는 경우 재생 한계 시간 이전에 손실된 데이터를 재전송하여 실시간 멀티미디어의 품질을 향상시킬 수 있는 데이터 전송 기법에 관한 것이다.
최근 많은 사용자들이 유선 랜(LAN)을 비롯한 무선 랜(WLAN 또는 Wi-Fi), 와이파이 다이렉트(Wi-Fi Direct), WCDMA 및 LTE 셀룰러 망 등의 다양한 네트워크에 접속하여 실시간 멀티미디어 서비스(Voice over IP (VoIP), 화상 회의 등)를 사용하고 있다. 특히 스마트 폰의 보급으로 인해 무선 네트워크에서의 멀티미디어 사용이 증가하는 추세이며, 사용자들은 시간 및 장소에 구애 받지 않고 다양한 멀티미디어 서비스를 사용하고자 한다.
특히 IEEE 802.11n 무선 랜 및 LTE 셀룰러 망을 위시한 최근의 무선 네트워크는 High Definition (HD) 비디오를 실시간으로 전송하기에 충분한 대역폭(High Bandwidth) 및 낮은 지연시간(Low Latency)을 제공하고 있기 때문에, 이를 활용한 실시간 스포츠 중계, HD 음성 통화, HD 영상 통화, 화상 회의, N-Screen 서비스, Over The Top (OTT) 서비스, Video On Demand (VOD) 서비스 등이 많이 사용되고 있다.
통상 실시간 멀티미디어 데이터는 실시간 전송 프로토콜(Real-time Transport Protocol (RTP))을 통해 전송되는데, RTP는 하위 프로토콜로 User Datagram Protocol (UDP)을 사용함으로써 낮은 지연시간 및 오버헤드를 가지는 장점이 있다. 그러나 UDP는 데이터의 신뢰적 전송을 보장하지 않기 때문에 데이터의 손실이 발생하더라도 이를 복구하거나 재전송하지 않으며, 이러한 데이터의 손실은 실시간 멀티미디어의 품질을 저하시키는 주원인이 된다.
실시간 멀티미디어 서비스는 비디오 코덱으로 MPEG2, M-JPEG, H.263, H.264/AVC와 같은 다양한 코덱들을 사용하며, 일반적으로 압축 효율이 좋은 참조 기반 코덱들이 사용된다. 참조 기반 코덱에서 하나의 프레임은 다른 여러 프레임을 참조(Referencing)하며, 네트워크로 전송될 때 여러 개의 데이터 패킷으로 나뉘어 전송된다. 따라서 패킷 손실이 발생하면 그 프레임뿐만 아니라 그 프레임을 참조하는 다른 프레임들까지 왜곡이 발생하여 비디오 품질이 저하될 수 있다. 특히 무선 네트워크의 경우, 매체의 특성 상 유선 네트워크에 비해 패킷 손실이 더욱 빈번히 발생하기 때문에 멀티미디어 서비스의 품질 저하가 자주 발생하고 심할 경우 서비스가 중단되는 문제가 있어, 사용자들이 무선 네트워크상에서 멀티미디어 서비스를 사용함에 있어 불편함이 많다.
한국공개특허 제2006-0096623호는 통신시스템에서 데이터그램 프로토콜을 이용하여 실시간 데이터의 신뢰성을 보장하기 위한 방법에 관하여 제안하고 있다. 이러한 종래의 기술에서 제시 되었던 방법들은 수신부가 전송 받지 못한 패킷에 대해 어떻게 재전송을 할 것인지, 재전송을 한다면 타이머를 어떻게 동작시킬 것인지 제안하지 못하고 있다.
본 발명은 유·무선 네트워크에서 발생하는 패킷 손실로 인해 실시간 멀티미디어의 품질이 저하되는 문제를 개선한다.
본 발명은 재생 한계 시간을 초과하는 패킷들에 대해서 재전송을 수행하여 실시간 멀티미디어의 실시간성을 유지할 수 있는 종단 간 프로토콜을 제공한다.
본 발명은 기존 네트워크를 수정하지 않고 단말의 애플리케이션만을 수정하여 적용하는 방법 및 장치를 제공한다.
본 발명의 일실시예에 따르면, 트랜스포트 계층에서 동작하고, 네트워크 상에서 손실된 패킷을 감지하여 상기 패킷을 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜을 통해 데이터를 전송하는 데이터 전송 장치를 제공한다.
일측에 따르면, 상기 프로토콜의 서버 단은 재전송을 위한 버퍼를 포함하고, 상기 프로토콜의 클라이언트 단은 패킷 정렬을 위한 버퍼를 포함하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 버퍼는 패킷의 순서 번호가 증가하는 순서로 노드를 삽입하여 패킷을 저장하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 버퍼 안의 단일 노드는 단일 패킷을 나타내며, 상기 단일 노드는 상기 패킷의 순서번호(Sequence Number), 타임스탬프(Timestamp), 패킷 크기(Packet Size), 패킷 데이터(Packet Data)를 저장하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 서버 단은 패킷 재전송을 수행하기 위한 타이머; 및 버퍼에 처음 삽입된 시간을 기준으로 버퍼에 일정 시간 저장된 패킷을 제거하기 위한 타이머를 포함하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 서버 단에서 상기 패킷 수명을 설정하는 타이머는 상기 패킷 재전송을 수행하기 위한 타이머보다 타이머 시간을 크게 설정하여 동일 패킷에 반복적으로 재전송을 가능하게 하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 클라이언트 단은 첫 패킷을 수신하고 그 이후의 패킷을 추가로 수신하기 위한 타이머; 및 버퍼에 처음 삽입된 시간을 기준으로 버퍼에 일정 시간 저장된 패킷을 제거하기 위한 타이머를 포함하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 클라이언트 단은 복수 개의 패킷 수신에 대한 확인 응답을 하나의 패킷으로 수행하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 서버 단은 애플리케이션 계층에서 전달된 패킷의 사본을 버퍼에 저장하고, 상기 클라이언트 단은 패킷 손실이 확인되면 네트워크 계층에서 전달된 패킷을 버퍼에 저장하여 향후 애플리케이션 계층으로 전달하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 클라이언트 단은 손실된 패킷이 재전송되어 도착하면 상기 손실된 패킷부터 연속된 패킷을 버퍼에서 삭제 및 애플리케이션 계층으로 전달하는 데이터 전송 장치를 제공한다.
또 다른 일측에 따르면, 상기 서버 단은 버퍼에서 수명이 끝난 패킷을 제거하고, 상기 클라이언트 단은 버퍼에서 수명이 다한 패킷을 제거한 후 애플리케이션 계층으로 전달하는 데이터 전송 장치를 제공한다.
본 발명의 일실시예에 따르면, 데이터 전송 방법에 있어서 네트워크 상에서 손실된 패킷을 감지하는 단계; 및 상기 패킷을 재생 한계 시간 이전에 재전송하는 단계를 포함하는 데이터 전송 방법을 제공한다.
일측에 따르면, 상기 데이터 전송 방법은 트랜스포트 계층에서 동작하는 종단 간 프로토콜을 통해 데이터를 전송하고, 상기 프로토콜의 서버 단은 상기 재전송을 위한 버퍼를 포함하고, 상기 프로토콜의 클라이언트 단은 패킷 정렬을 위한 버퍼를 포함하며, 상기 데이터 전송 방법은 상기 버퍼에 패킷의 순서 번호가 증가하는 순서로 노드를 삽입하여 패킷을 저장하는 단계를 더 포함하는 데이터 전송 방법을 제공한다.
또 다른 일측에 따르면, 상기 패킷을 재생 한계 시간 이전에 재전송하는 단계는 상기 서버 단에서 패킷 재전송을 수행하는 단계; 및 상기 재전송을 위한 버퍼에 처음 삽입된 시간을 기준으로 상기 버퍼에 일정 시간 저장된 패킷을 제거하는 단계를 포함하는 데이터 전송 방법을 제공한다.
또 다른 일측에 따르면, 상기 클라이언트 단에서 첫 패킷을 수신하고 그 이후의 패킷을 추가로 수신하는 단계; 및 상기 패킷 정렬을 위한 버퍼에 처음 삽입된 시간을 기준으로 상기 버퍼에 일정 시간 저장된 패킷을 제거하는 단계를 더 포함하는 데이터 전송 방법을 제공한다.
또 다른 일측에 따르면, 상기 클라이언트 단에서 패킷 손실이 확인되면 네트워크 계층에서 전달된 패킷을 버퍼에 저장하고 추후 애플리케이션 계층으로 전달하는 단계; 및 손실된 패킷이 재전송되어 도착하면 상기 손실된 패킷부터 연속된 패킷을 버퍼에서 삭제 및 애플리케이션 계층으로 전달하는 단계를 더 포함하는 데이터 전송 방법을 제공한다.
본 발명은 네트워크상에서 손실된 패킷을 감지하고 이를 재전송하여, 패킷 손실이 자주 발생하는 무선 네트워크와 같은 환경에서도 실시간 멀티미디어의 품질을 일정하게 유지할 수 있다.
본 발명은 재생 한계 시간을 초과하지 않는 패킷들에 대해서 재전송을 수행하여, 실시간 멀티미디어의 실시간성을 유지할 수 있는 종단 간 프로토콜을 제공할 수 있다.
본 발명은 종단 간 프로토콜로서 기존 네트워크를 수정하지 않고 단말의 애플리케이션만을 수정하여 적용할 수 있다.
도 1은 본 발명의 실시예에 따른 네트워크 상에서 손실된 데이터를 재생한계 시간 이전에 재전송하는 방법 및 장치에 관한 도면이다.
도 2는 본 발명의 실시예에 따른 네트워크 상에서 손실된 데이터를 재생한계 시간 이전에 재전송하는 방법 및 장치에 관한 LRP버퍼의 구조도이다.
도 3은 본 발명의 실시예에 따른 네트워크 상에서 손실된 데이터를 재생한계 시간 이전에 재전송하기 위한 LRP ACK의 구조도이다.
도 4는 본 발명의 실시예에 따른 클라이언트 단 LRP의 동작 과정을 나타낸 도면이다.
도 5는 본 발명의 실시예에 따른 네트워크 상에서 손실된 데이터를 재생한계 시간 이전에 재전송하는 방법에 있어서 서버와 클라이언트 간 메시지 흐름을 도시한 도면이다.
도 6은 본 발명의 실시예에 따른 프로토콜 서버 단의 동작을 설명하기 위한 흐름도이다.
도 7은 본 발명의 실시예에 따른 프로토콜 클라이언트 단의 ACK 전송 동작을 설명하기 위한 흐름도이다.
이하, 본 발명에 따른 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 네트워크 상에서 손실된 데이터를 재생한계 시간 이전에 재전송하는 방법 및 장치에 관한 도면이다.
도 1은 네트워크 상에서 서버(110)와 클라이언트(120) 간의 데이터를 전송하는 방법 및 장치를 나타낸 것으로 LRP(180,190)는Lightweight Retransmission Protocol 을 말한다. 도 1은 프로토콜 스택을 나타낸 것으로, LRP(180,190)는 RTP(160,170)를 사용하는 실시간 멀티미디어 애플리케이션을 지원하며, 실제로는 유·무선 네트워크에 관계없이 적용할 수 있지만, 본 발명에서 서버(110)는 유선 네트워크에 클라이언트(120)는 무선 네트워크에 연결되어 있다고 가정한다. 무선 네트워크는 이동성을 제공하기 때문에 사용자는 정지한 상태에서 또는 이동하는 중에 무선 네트워크를 사용할 수 있다. LRP(180,190)는 OSI 7-Layer의 트랜스포트 계층(140)에서 동작하는 종단 간 프로토콜로서 기존 네트워크를 수정하지 않고 단말의 애플리케이션만을 수정하여 적용할 수 있다. 서버(110) 단의 LRP(180)는 애플리케이션 계층(130)으로부터 전달받은 RTP(160) 패킷들을 LRP(180) 버퍼에 저장한 후 네트워크 계층(150)으로 전달한다.
새로운 RTP(160) 패킷이 애플리케이션 계층(130)으로부터 도착하면, 해당 패킷을 위한 새로운 노드를 생성한 후 버퍼에 삽입한다. 버퍼에 삽입할 때에는 기존에 저장되어 있는 패킷들의 순서번호를 고려하여 순서번호가 증가하는 순서로 노드를 삽입한다. 서버(110) 단의 LRP(180)에서는 단지 새로운 RTP(160) 패킷을 버퍼 끝에 삽입함으로써 순서를 유지할 수 있다.
서버(110) 단의 LRP(180)는 패킷을 네트워크 계층(150)으로 전송한 후, 각각의 패킷에 대해 두 가지 종류의 타이머를 작동시킨다. 하나는 패킷 재전송을 위한 타이머로서, 타이머 시간으로 Timeout_R 시간을 가진다. 본 발명에서는 Timeout_R 시간으로 130 ms 고정 값을 사용하며, 이 수치는 ITU에서 추천하는 실시간 멀티미디어의 종단 간 지연 시간인 150 ms 보다 작게 설정한 것이다. 두 번째 타이머는 버퍼에 오래 저장된 패킷들을 제거하기 위한 타이머로서, 타이머 시간으로 Timeout_D 시간을 가진다. 본 발명에서는 ITU에서 권고하는 실시간 멀티미디어의 최대 허용가능 한 종단 간 지연인 400 ms를 Timeout_D 시간으로 사용한다. 모든 실시간 멀티미디어 데이터는 서버(110) 단에서 전송된 후 최대 400 ms 이내에 수신 단에서 재생되어야 하기 때문에, 400 ms를 초과하는 데이터에 대해서는 실시간성을 상실하는 것으로 보고 재전송을 수행하지 않는다. 이는 Transmission Control Protocol (TCP)와는 다른 점으로서, LRP(180,190)는 모든 데이터에 대해 전송 신뢰성을 보장하지 않는다.
클라이언트(120) 단에서는 첫 LRP(190) 패킷을 수신하고 Timeout_A 시간 동안 수신할 수 있는 LRP(190) 패킷들을 추가로 수신한 후 LRP Acknowledgement (ACK)을 서버에 전송한다. 하나의 ACK에는 여러 개의 순서번호를 저장할 수 있기 때문에, 여러 패킷에 대한 확인 응답을 수행할 수 있다. 만약 클라이언트(120)가 하나의 패킷을 수신할 때마다 ACK으로 응답한다면, 무선 네트워크의 성능과 효율이 급격히 나빠질 수 있기 때문에 Timeout_A 시간 동안 패킷을 더 수신한 후 ACK을 전송한다.
또한 클라이언트(120) 단의 LRP(190)는 서버(110) 단이 재전송한 패킷들로 인해 패킷 간의 순서가 맞지 않는 것을 방지하기 위해 패킷의 순서번호를 추적하여 순서가 맞지 않는 패킷이 도착할 경우 버퍼에 저장한 후 추후 애플리케이션 계층(130)으로 전달한다. 패킷을 버퍼에 저장할 때에는 버퍼에 저장되어 있는 기존 패킷들의 순서번호를 고려하여 순서번호가 증가하는 순서로 패킷을 삽입한다. 이후 손실된 패킷이 재전송되어 도착하면 버퍼에 저장되어 있는 일부의 패킷들과 함께 애플리케이션 계층(130)으로 전달한다.
도 2는 본 발명의 실시예에 따른 네트워크 상에서 손실된 데이터를 재생한계 시간 이전에 재전송하는 방법 및 장치에 관한 LRP버퍼의 구조도이다.
도 2에서 LRP 버퍼는 이중 연결 리스트(Doubly linked-list)로 구성되어 있으며, 서버 단과 클라이언트 단이 동일한 구조의 버퍼를 사용한다. 버퍼 안의 하나의 노드는 하나의 RTP 패킷을 나타내며, 하나의 노드는 RTP 패킷의 순서번호 (Sequence Number)(210), 타임스탬프(Timestamp)(220), RTP 패킷의 크기 (Packet Size)(230), RTP 패킷의 데이터 (Packet Data)(240)를 저장한다.
도 2에서 순서번호(210)는 RTP 패킷의 헤더에서 추출한 값을 사용하며, 서버 단의 RTP는 순서번호(210)를 초기에 랜덤 값으로 설정한 후 순차적으로 1씩 증가시킨다. 타임스탬프(220)에는 RTP 패킷이 UDP로 전달된 시각(서버 단) 또는 전달받은 시각(클라이언트 단)이 마이크로 초 단위로 저장이 되며, 타이머 작동을 위한 시간 정보를 제공한다.
LRP는 RTP 패킷에 별도의 헤더를 추가하지 않으며, 애플리케이션 계층이 LRP 라이브러리를 사용함으로써 LRP를 활성화한다. LRP는 추가적으로 IP 헤더의 ‘Type of Service (ToS)’ 필드를 수정함으로써 Access Point (AP)가 IEEE 802.11e를 지원하는 경우 LRP 패킷을 차등적으로 전송할 수 있도록 한다. 본 발명에서는 ToS 필드에 ‘0xe0’ 값을 대입함으로써 LRP 패킷이 가장 높은 우선순위를 갖는다.
도 3은 본 발명의 실시예에 따른 네트워크 상에서 손실된 데이터를 재생한계 시간 이전에 재전송하기 위한 LRP ACK의 구조도이다.
LRP ACK의 구조는 가변 길이 구조를 가진다. ACK은 UDP 헤더 위에 LRP ACK 헤더가 추가되는 구조로서, 2 바이트 크기의 ‘Num’(310)필드를 통해 응답을 확인하려는 순서번호(320,330,340)의 개수를 알 수 있다. 이후 ACK 헤더의 4 바이트 위치에서부터 ‘Num’(310) 필드에 지정된 개수만큼 2 바이트 크기의 순서번호(320,330,340)가 나타난다. 따라서 클라이언트 단은 Timeout_A 시간 동안 수신한 패킷들의 순서번호(320,330,340)를 별도로 저장해 놓고 이를 ACK에 실어 전송한다.
클라이언트 단에서의 데이터 전송 흐름은 첫 LRP 패킷을 수신하고 Timeout_A 시간 동안 수신할 수 있는 LRP 패킷들을 추가로 수신한 후 ACK를 서버에 전송한다. 하나의 ACK에는 여러 개의 순서번호를 저장할 수 있기 때문에, 여러 패킷에 대한 확인 응답을 수행할 수 있다. 또한 클라이언트 단의 LRP는 서버 단이 재전송한 패킷들로 인해 패킷 간의 순서가 맞지 않는 것을 방지하기 위해 패킷의 순서번호를 추적하여 순서가 맞지 않는 패킷이 도착할 경우 버퍼에 저장한 후 추후 애플리케이션 계층으로 전달한다. 패킷을 버퍼에 저장할 때에는 버퍼에 저장되어 있는 기존 패킷들의 순서번호를 고려하여 순서번호가 증가하는 순서로 패킷을 삽입한다. 이후 손실된 패킷이 재전송되어 도착하면 버퍼에 저장되어 있는 일부의 패킷들과 함께 애플리케이션 계층으로 전달한다.
도 4는 본 발명의 실시예에 따른 클라이언트 단 LRP의 동작 과정을 나타낸 도면이다.
도 4의 ‘N’(410)은 네트워크 계층으로부터 마지막으로 도착한 패킷의 순서번호이고, ‘SEQ’(420)은 애플리케이션 계층에 마지막으로 전달한 패킷의 순서번호이다.
‘N’이 ‘SEQ’+ 1보다 작으면(430), 서버 단이 타이머 만료로 인하여 불필요하게 패킷을 재전송한 것으로 단순히 패킷을 폐기한다.
‘N’이 ‘SEQ’+ 1보다 크면(440), 네트워크 계층에서 패킷이 손실되거나 순서에 맞지 않는 전송이 발생함을 의미한다. 따라서 네트워크로 계층으로부터 전달받은 패킷을 LRP 버퍼에 저장하여 추후 애플리케이션 계층에 전달한다.
‘N’이 ‘SEQ’+ 1과 같으면(450) 애플리케이션 계층에 패킷을 전달해야 함을 의미하며, 세부 동작은 버퍼에 저장되어 있는 패킷의 유무에 따라 달라진다. 만약 기존에 저장되어 있는 패킷이 없다면, 최근에 패킷을 손실했거나 순서에 맞지 않는 전송이 발생하지 않음을 뜻하며, 바로 애플리케이션 계층에 패킷을 전달한 후 ‘SEQ’를 1 증가시킨다. 만약 패킷이 있다면, 네트워크 계층으로부터 전달받은 패킷을 버퍼에 저장한 후, 순서번호가 ‘N’부터 시작하는 연속된 패킷들을 애플리케이션 계층에 전달한다. 이후 애플리케이션에 전달한 패킷들을 버퍼에서 제거하며, ‘SEQ’를 애플리케이션 계층에 전달한 패킷의 개수만큼 증가시킨다.
예를 들어, ‘SEQ’가 99이고, 버퍼에 순서번호가 101~103, 105~107인 패킷들이 저장되어 있다고 가정한다. 네트워크로 계층으로부터 도착한 패킷의 순서번호(‘N’)가 100이라면 해당 패킷을 버퍼에 저장한 후, 순서번호가 100~103인 패킷들을 애플리케이션 계층에 전달한다. 이후 전달한 패킷들을 버퍼에서 제거하며, ‘SEQ’를 103으로 업데이트한다.
또한 클라이언트 단의 LRP도 서버 단의 LRP와 동일하게 버퍼에서 Timeout_D 시간이 지난 오래된 패킷들을 제거하며, 제거한 패킷들은 애플리케이션 계층으로 전달하여 멀티미디어 플레이어에서 재생되도록 한다.
도 5는 본 발명의 실시예에 따른 네트워크 상에서 손실된 데이터를 재생한계 시간 이전에 재전송하는 방법에 있어서 서버와 클라이언트 간 메시지 흐름을 도시한 도면이다.
서버(510)에서는 두 가지 종류의 타이머인 Timeout_R(530), Timeout_D(540) 가 각각의 패킷에 대해 동작하며 클라이언트(520)에는 ACK을 전송하기 위한 타이머인 Timeout_A(550) 가 여러 패킷에 대해 동작한다. 서버(510)에서의 Timeout_R(530)은 패킷 재전송을 위한 타이머이고 Timeout_D(540) 는 버퍼에 오래 저장된 패킷들을 제거하기 위한 타이머이다. 클라이언트(520)에서의 Timeout_D(540)는 첫 패킷을 수신하고 그 이후의 패킷을 추가로 수신하기 위한 타이머이다.
도 5에서는 순서번호 138, 139에 해당하는 확인 응답(LRP ACK)이 네트워크상에서 손실되어, 서버(510)가 Timeout_R(530) 만료 후 138, 139번 패킷을 차례대로 재전송을 한다. 또한 서버(510)는 재전송을 수행한 패킷들에 대해서도 다시 타이머를 작동시켜 패킷 손실 시 재전송을 수행한다. 따라서 RTP 패킷이 처음 LRP 버퍼에 들어온 시간으로부터 최대 Timeout_D(540) 시간까지 재전송을 한 번 이상 반복 수행할 수 있다.
도 6은 본 발명의 실시예에 따른 프로토콜 서버 단의 동작을 설명하기 위한 흐름도이다.
단계(610)에서 프로토콜 서버 단은 애플리케이션 계층으로부터 패킷을 수신한다.
단계(620)에서 애플리케이션 계층으로부터 수신한 패킷에 대해 노드를 생성한다.
단계(630)에서 패킷들의 순서번호를 고려하여 순서번호가 증가하는 순서로 노드를 버퍼에 저장한다. 서버 단 LRP에서는 단지 새로운 RTP 패킷을 버퍼 끝에 삽입함으로써 순서를 유지할 수 있다.
단계(640)에서는 패킷을 네트워크 계층에 전달한다.
단계(650)에서 프로토콜 서버 단의 타이머인 Timeout_R과 Timeout_D를 작동시킨다. 패킷 수명을 설정하기 위한 Timeout_D는 재전송을 위한 Timeout_R보다 타이머 시간을 크게 설정하여 동일 패킷에 대해 반복 재전송이 가능하게 한다.
서버 단은 새로운 RTP 패킷이 애플리케이션으로부터 도착하면, 해당 패킷을 위한 새로운 노드를 생성한 후 버퍼에 삽입한다. 버퍼에 삽입할 때에는 기존에 저장되어 있는 패킷들의 순서번호를 고려하여 순서번호가 증가하는 순서로 노드를 삽입한다. 서버 단 LRP에서는 단지 새로운 RTP 패킷을 버퍼 끝에 삽입함으로써 순서를 유지할 수 있다. 서버 단 LRP는 패킷을 네트워크로 전송한 후, 각각의 패킷에 대해 두 가지 종류의 타이머를 작동시킨다. 본 발명에서는 Timeout_R 시간으로 130 ms 고정 값을 사용하며, Timeout_D 시간으로 400 ms를 사용한다. 모든 실시간 멀티미디어 데이터는 서버 단에서 전송된 후 최대 400 ms 이내에 수신 단에서 재생되어야 하기 때문에, 400 ms를 초과하는 데이터에 대해서는 실시간성을 상실하는 것으로 보고 재전송을 수행하지 않는다.
도 7은 본 발명의 실시예에 따른 프로토콜 클라이언트 단의 ACK 전송 동작을 설명하기 위한 흐름도이다.
단계(710)에서 프로토콜의 클라이언트 단은 서버로부터 패킷을 수신한다.
단계(720)에서 프로토콜의 클라이언트 단은 Timeout_A동안 LRP 패킷을 추가로 수신한다. Timeout_A은 첫 패킷을 수신하고 그 이후의 패킷을 추가로 수신하기 위한 타이머이다.
단계(730)에서 Timeout_A시간 동안 수신한 패킷들의 순서번호를 별도로 저장한다.
단계(740)에서 클라이언트 단은 복수 개의 패킷 수신에 대한 확인 응답을 하나의 패킷으로 수행하여 서버에 ACK를 전송한다.
클라이언트 단에서는 첫 LRP 패킷을 수신하고 Timeout_A 시간 동안 수신할 수 있는 LRP 패킷들을 추가로 수신한 후 LRP Acknowledgement (ACK)을 서버에 전송한다. 하나의 ACK에는 여러 개의 순서번호를 저장할 수 있기 때문에, 여러 패킷에 대한 확인 응답을 수행할 수 있다. 만약 클라이언트가 하나의 패킷을 수신할 때마다 ACK으로 응답한다면, 무선 네트워크의 성능과 효율이 급격히 나빠질 수 있기 때문에 Timeout_A 시간 동안 패킷을 더 수신한 후 ACK을 전송한다. 본 발명에서는 Timeout_A 시간으로 50 ms를 사용한다.
클라이언트 단의 LRP는 서버 단이 재전송한 패킷들로 인해 패킷 간의 순서가 맞지 않는 것을 방지하기 위해, 패킷의 순서번호를 추적하여 순서가 맞지 않는 패킷이 도착할 경우 버퍼에 저장한 후 추후 애플리케이션 계층으로 전달한다. 패킷을 버퍼에 저장할 때에는 버퍼에 저장되어 있는 기존 패킷들의 순서번호를 고려하여 순서번호가 증가하는 순서로 패킷을 삽입한다. 이후 손실된 패킷이 재전송되어 도착하면 버퍼에 저장되어 있는 일부의 패킷들과 함께 애플리케이션 계층으로 전달한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
510: 서버
520: 클라이언트
530: Timeout R
540: Timeout D
550: Timeout A

Claims (16)

  1. 트랜스포트 계층에서 동작하고,
    네트워크 상에서 손실된 패킷을 감지하여 상기 패킷을 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜을 통해 데이터를 전송하고,
    상기 프로토콜의 서버 단은,
    패킷 재전송을 수행하기 위한 타이머; 및
    버퍼에 처음 삽입된 시간을 기준으로 버퍼에 일정 시간 동안 저장된 패킷을 제거함에 따라 패킷 수명을 설정하는 타이머를 포함하고,
    상기 서버 단은,
    상기 패킷을 전송한 이후, 상기 패킷 재전송을 수행하기 위한 타이머 및 상기 패킷 수명을 설정하는 타이머를 각각 작동시키고,
    전송된 패킷에 대한 확인 응답에 기초하여 상기 네트워크 상에서 손실된 패킷을 감지하고,
    상기 패킷 재전송을 수행하기 위한 타이머가 만료된 이후 상기 패킷 수명을 설정하는 타이머가 작동하는 상태에서, 재전송된 패킷의 손실이 감지됨에 따라, 손실이 감지된 패킷을 반복적으로 재전송하고,
    상기 종단 간 프로토콜은, 상기 패킷에 별도의 헤더를 추가하는 대신 애플리케이션 계층이 종단 간 프로토콜 라이브러리를 사용함에 따라 활성화되고,
    상기 프로토콜의 서버 단은 애플리케이션 계층으로부터 전달받은 패킷을 저장 및 재전송을 위한 버퍼를 포함하고, 프로토콜의 클라이언트 단은 패킷 정렬을 위한 버퍼를 포함하고,
    상기 클라이언트 단은,
    패킷의 순서 번호를 추적하여 패킷의 순서 번호가 증가 하는 순서로 노드를 삽입함에 따라, 패킷 재전송으로 인해 순서 번호가 맞지 않는 패킷을 정렬하여 상기 버퍼에 저장하고,
    상기 전송된 패킷에 대한 확인 응답은, 응답을 확인하려는 적어도 하나의 순서 번호의 개수가 명시된 필드를 포함하는, 데이터 전송 장치.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 버퍼 안의 단일 노드는 단일 패킷을 나타내며, 상기 단일 노드는 상기 패킷의 순서번호(Sequence Number), 타임스탬프(Timestamp), 패킷 크기(Packet Size), 패킷 데이터(Packet Data)를 저장하는,
    데이터 전송 장치.
  5. 삭제
  6. 제1항에 있어서,
    상기 서버 단에서 상기 패킷 수명을 설정하는 타이머는 상기 패킷 재전송을 수행하기 위한 타이머보다 타이머 시간을 크게 설정하여 동일 패킷에 반복적으로 재전송을 가능하게 하는,
    데이터 전송 장치.
  7. 제1항에 있어서,
    상기 클라이언트 단은
    첫 패킷을 수신하고 그 이후의 패킷을 추가로 수신하기 위한 타이머; 및
    버퍼에 처음 삽입된 시간을 기준으로 버퍼에 일정 시간 저장된 패킷을 제거하기 위한 타이머를 포함하는,
    데이터 전송 장치.
  8. 제1항에 있어서,
    상기 클라이언트 단은 복수 개의 패킷 수신에 대한 상기 확인 응답을 하나의 패킷으로 수행하는,
    데이터 전송 장치.
  9. 제1항에 있어서,
    상기 서버 단은 애플리케이션 계층에서 전달된 패킷의 사본을 버퍼에 저장하고, 상기 클라이언트 단은 패킷 손실이 확인되면 네트워크 계층에서 전달된 패킷을 버퍼에 저장하는,
    데이터 전송 장치.
  10. 제9항에 있어서,
    상기 클라이언트 단은 손실된 패킷이 재전송되어 도착하면 상기 손실된 패킷부터 연속된 패킷을 버퍼에서 삭제 및 애플리케이션 계층으로 전달하는,
    데이터 전송 장치.
  11. 제1항에 있어서,
    상기 서버 단은 버퍼에서 수명이 끝난 패킷을 제거하고, 상기 클라이언트 단은 버퍼에서 수명이 다한 패킷을 제거한 후 애플리케이션 계층으로 전달하는,
    데이터 전송 장치.
  12. 데이터 전송 방법에 있어서,
    패킷을 전송한 이후, 패킷 재전송을 수행하기 위한 타이머와 버퍼에 처음 삽입된 시간을 기준으로 버퍼에 일정 시간 동안 저장된 패킷을 제거함에 따라 패킷 수명을 설정하는 타이머를 각각 작동시키는 단계;
    전송된 패킷에 대한 확인 응답에 기초하여 네트워크 상에서 손실된 패킷을 감지하는 단계;
    상기 패킷을 재생 한계 시간 이전에 재전송하는 단계;
    상기 패킷 재전송을 수행하기 위한 타이머가 만료된 이후 상기 패킷 수명을 설정하는 타이머가 작동하는 상태에서 재전송된 패킷의 손실을 감지하는 단계; 및
    상기 손실이 감지된 패킷을 반복적으로 재전송하는 단계
    를 포함하고,
    상기 데이터 전송 방법은 트랜스포트 계층에서 동작하는 종단 간 프로토콜을 통해 데이터를 전송하고,
    상기 종단 간 프로토콜은, 상기 패킷에 별도의 헤더를 추가하는 대신 애플리케이션 계층이 종단 간 프로토콜 라이브러리를 사용함에 따라 활성화되고,
    상기 프로토콜의 서버 단은 애플리케이션 계층으로부터 전달받은 패킷을 저장 및 재전송을 위한 버퍼를 포함하고, 프로토콜의 클라이언트 단은 패킷 정렬을 위한 버퍼를 포함하고,
    상기 프로토콜의 클라이언트 단은,
    패킷의 순서 번호를 추적하여 패킷의 순서 번호가 증가 하는 순서로 노드를 삽입함에 따라, 패킷 재전송으로 인해 순서 번호가 맞지 않는 패킷을 정렬하여 상기 버퍼에 저장하고,
    상기 전송된 패킷에 대한 확인 응답은, 응답을 확인하려는 적어도 하나의 순서 번호의 개수가 명시된 필드를 포함하는 데이터 전송 방법.
  13. 삭제
  14. 제12항에 있어서,
    상기 패킷을 재생 한계 시간 이전에 재전송하는 단계는,
    상기 서버 단에서 패킷 재전송을 수행하는 단계; 및
    상기 재전송을 위한 버퍼에 처음 삽입된 시간을 기준으로 상기 버퍼에 일정 시간 저장된 패킷을 제거하는 단계
    를 포함하는 데이터 전송 방법.
  15. 제12항에 있어서,
    상기 클라이언트 단에서 첫 패킷을 수신하고 그 이후의 패킷을 추가로 수신하는 단계; 및
    상기 패킷 정렬을 위한 버퍼에 처음 삽입된 시간을 기준으로 상기 버퍼에 일정 시간 저장된 패킷을 제거하는 단계
    를 더 포함하는 데이터 전송 방법.
  16. 제15항에 있어서,
    상기 클라이언트 단에서 패킷 손실이 확인되면, 네트워크 계층에서 전달된 패킷은, 상기 버퍼에 저장되고,
    손실된 패킷이 재전송되어 도착하면, 상기 손실된 패킷부터 연속된 패킷은, 상기 버퍼에서 삭제 및 애플리케이션 계층으로 전달되는,데이터 전송 방법.
KR1020130045557A 2013-04-24 2013-04-24 네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜 KR101563779B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130045557A KR101563779B1 (ko) 2013-04-24 2013-04-24 네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130045557A KR101563779B1 (ko) 2013-04-24 2013-04-24 네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜

Publications (2)

Publication Number Publication Date
KR20140127440A KR20140127440A (ko) 2014-11-04
KR101563779B1 true KR101563779B1 (ko) 2015-10-28

Family

ID=52451673

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130045557A KR101563779B1 (ko) 2013-04-24 2013-04-24 네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜

Country Status (1)

Country Link
KR (1) KR101563779B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017171129A1 (ko) * 2016-03-31 2017-10-05 서울대학교 산학협력단 교차계층 기반 스트리밍 장치 및 방법
KR101836938B1 (ko) * 2016-08-18 2018-03-09 주식회사 엑스게이트 Ha 환경에서의 패킷 처리 방법, 패킷 처리 장치 및 패킷 처리 시스템

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102636890B1 (ko) * 2023-06-21 2024-02-15 주식회사 휴이노에임 생체 신호 데이터를 포함하는 패킷의 누락을 복구하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능한 기록 매체

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017171129A1 (ko) * 2016-03-31 2017-10-05 서울대학교 산학협력단 교차계층 기반 스트리밍 장치 및 방법
KR101836938B1 (ko) * 2016-08-18 2018-03-09 주식회사 엑스게이트 Ha 환경에서의 패킷 처리 방법, 패킷 처리 장치 및 패킷 처리 시스템

Also Published As

Publication number Publication date
KR20140127440A (ko) 2014-11-04

Similar Documents

Publication Publication Date Title
CA2442439C (en) Packet transmission system and packet reception system
US8175036B2 (en) Multimedia wireless distribution systems and methods
US8260935B2 (en) Error control terminal discovery and updating
US8499212B2 (en) Method and apparatus for adaptive forward error correction with merged automatic repeat request for reliable multicast in wireless local area networks
US20040098748A1 (en) MPEG-4 live unicast video streaming system in wireless network with end-to-end bitrate-based congestion control
KR20160135200A (ko) 확장된 송신 제어 기능을 구현하는 송신 가속기
JP2007189697A (ja) 分散した局のネットワークでデータパケットを交換する方法、データパケットを圧縮する装置及びデータパケットを解凍する装置
JP2010536271A (ja) 無線通信システムにおけるハンドオーバー中のデータのレイヤ2トンネリング
KR20120082416A (ko) 네트워크에서 신뢰성 있는 실시간 데이터 스트리밍을 위한 효율적인 애플리케이션 계층의 자동 반복 요청 재송신 방법
US10524175B2 (en) Data transmission method and network device
US20230345058A1 (en) Data packet transmission method and related device
KR20130116066A (ko) 복수의 서로 다른 네트워크를 통한 데이터 송신
KR101563779B1 (ko) 네트워크상에서 손실된 실시간 멀티미디어 데이터를 재생 한계 시간 이전에 재전송하는 종단 간 프로토콜
CN115883680A (zh) 一种基于arq的udp协议数据传输方法、系统及设备
US20220123869A1 (en) Network equipment and method for delivering data packets
US10129163B2 (en) Methods and apparatus for preventing head of line blocking for RTP over TCP
Le et al. Reliable user datagram protocol for airborne network
JP2017535117A (ja) Lteシステムを用いた呼の実行方法及び装置
EP3185505B1 (en) Data packet transmission processing method and device
JP2020150387A (ja) 受信装置、サーバシステム及び受信プログラム
US8639822B2 (en) Extending application-layer sessions based on out-of-order messages
US20240165508A1 (en) Method, apparatuses and systems directed to quality of experience improvement in cloud gaming
Arefin et al. Modified SACK-TCP and some application level techniques to support real-time application
WO2016067561A1 (ja) 通信端末、通信システムおよび通信方法、並びにコンピュータ・プログラムが格納されているコンピュータ読み取り可能な記憶媒体
CN117978787A (zh) 数据传输方法、装置、系统、电子设备及存储介质

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 4