KR102035912B1 - Ip 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치 - Google Patents

Ip 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치 Download PDF

Info

Publication number
KR102035912B1
KR102035912B1 KR1020170183315A KR20170183315A KR102035912B1 KR 102035912 B1 KR102035912 B1 KR 102035912B1 KR 1020170183315 A KR1020170183315 A KR 1020170183315A KR 20170183315 A KR20170183315 A KR 20170183315A KR 102035912 B1 KR102035912 B1 KR 102035912B1
Authority
KR
South Korea
Prior art keywords
packet
recovery
information
packets
start position
Prior art date
Application number
KR1020170183315A
Other languages
English (en)
Other versions
KR20190081048A (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 KR1020170183315A priority Critical patent/KR102035912B1/ko
Publication of KR20190081048A publication Critical patent/KR20190081048A/ko
Application granted granted Critical
Publication of KR102035912B1 publication Critical patent/KR102035912B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64723Monitoring of network processes or resources, e.g. monitoring of network load
    • H04N21/64738Monitoring network characteristics, e.g. bandwidth, congestion level
    • 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
    • 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/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23605Creation or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2381Adapting the multiplex stream to a specific network, e.g. an Internet Protocol [IP] network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2407Monitoring of transmitted content, e.g. distribution time, number of downloads
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6405Multicasting

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

IP 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치를 개시한다.
본 실시예는 일반적인 IPTV는 멀티캐스트 스트림이 실시간 전송 프로토콜(RTP: Real-time Transport Protocol)를 사용해야만 재전송이 가능했지만, 사용자 데이터그램 프로토콜(UDP)을 사용하는 경우에도 재전송이 가능하여 패킷 손실에 의한 오디오, 비디오 품질 열화를 사전에 방지할 수 있도록 하는 IP 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치를 제공한다.

Description

IP 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치{Method And Apparatus for Repairing and Detecting Packet Loss}
본 실시예는 IP 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치에 관한 것이다.
이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.
이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.
IPTV는 스트림은 헤드엔드(Headend)에서 오디오, 비디오, 데이터를 압축하고 IP로 변환 후 네트워크를 경유하여 멀티캐스트(Multicast) 방식으로 가입자 댁내 셋탑박스(STB)까지 전송한다.
멀티캐스트 방식은 가입자 단말의 수와는 무관하여 1:N 형태로 특정 그룹의 N개의 단말기로 동일 컨텐츠를 단 하나의 스트림으로 전송하므로, 트래픽 전송효율을 매우 향상시킨다.
멀티캐스트 방식으로 스트림 전송시 UDP(User Datagram Protocol) 또는 RTP(Real-time Transport Protocol)를 사용하여 실시간성은 효율적이나 재전송이 없어 품질에 취약한 단점이 있다.
UDP에는 패킷의 손실검출이나 순서재구성 능력이 없는 점을 보완하기 위해서 RTP는 헤더(Header) 정보에 타임스템프(Timestamp)와 시퀀스(Sequence) 번호를 담아서 송신한다. 수신 측에서는 헤더 정보에 담긴 타임스템프와 시퀀스 번호를 이용하여 패킷의 손실검출이나 순서 재구성 후 미디어 스트림을 재생할 수 있다.
IPTV 프레임(Frame) 구조는 오디오, 비디오, 데이터 스트림을 압축 후 MPEG-2 TS(Transport Stream) 형식으로 변환하고, 변환된 TS 패킷을 전송 시, 1 개의 IP 전송 단위에 다수 개(에컨대, 7개)의 TS 패킷을 실어 전송하는 구조이다. IPTV 프레임 구조를 갖는 IP를 전송 시에 UDP 또는 RTP 헤더를 추가하여 전송한다.
IPTV 전송기술인 멀티캐스트는 전송과정에서 패킷 손실 발생 시 재전송 기능이 없어, IPTV 시청 중 방송화면의 끊김/멈춤 현상이 발생할 수 있다.
전술한 패킷 손실에 의한 품질 열화를 방지하기 위해서 종래의 기술에서는 헤드엔드에서 RTP를 적용하여 전송을 하고 셋탑박스(STB)의 클라이언트(Client) 가 패킷 손실을 인지하고 손실 패킷(Missing Packet)을 재요청하면, 백본망에 있는 캐싱서버가 해당 패킷을 요청한 셋탑박스(STB)에게만 유니캐스트(Unicast) 방식으로 복구 데이터를 재전송한다.
셋탑박스(STB)는 재전송된 RTP 패킷을 수신한 후 RTP 헤더 정보의 시퀀스(Sequence) 번호를 활용하여 스트림을 재조합하여 정상적으로 디코딩하는데, UDP에서는 RTP와 달리 시퀀스 번호가 없어, 패킷의 손실 검출, 손실 패킷 확인 및 복구가 매우 어렵다는 문제가 있다.
본 실시예는 일반적인 IPTV는 멀티캐스트 스트림이 실시간 전송 프로토콜(RTP: Real-time Transport Protocol)를 사용해야만 패킷 손실 검출 및 재전송이 가능했지만, 사용자 데이터그램 프로토콜(UDP)을 사용하는 경우에도 패킷 손실 검출 및 재전송이 가능하여 패킷 손실에 의한 오디오, 비디오 품질 열화를 사전에 방지할 수 있도록 하는 IP 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치를 제공하는 데 목적이 있다.
본 실시예의 일 측면에 의하면, 클라이언트 단말기로부터 손실 패킷에 대한 복구 요청 신호 및 손실 패킷 정보를 수신하는 복구 요청 수신부; 상기 손실 패킷 정보 내에 포함된 프로그램 클럭 참조정보(PCR)값, 인덱스 값과 시작 패킷 특정정보에 근거하여 복구 시작 위치를 결정하는 복구 시작 위치 결정부; 상기 복구 시작 위치 이후를 검색한 정보 및 상기 손실 패킷 정보 내에 포함된 종료 패킷 특정 정보에 근거하여 복구 종료 위치를 결정하는 복구 종료 위치 결정부; 및 상기 복구 시작 위치와 상기 복구 종료 위치 사이의 구간을 복구 패킷으로 결정하고 상기 클라이언트 단말기로 전송하도록 하는 복구 패킷 결정부를 포함하는 것을 특징으로 하는 패킷 손실 검출 장치를 제공한다.
상기 복구 시작 위치 결정부는 상기 프로그램 클럭 참조정보(PCR) 값을 가진 패킷으로부터, 인덱스 값에 해당하는 개수의 패킷 이후의 연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보와 상기 시작 패킷 특정정보를 비교한 결과에 근거하여 상기 복구 시작 위치를 결정한다.
상기 인덱스값은 정상적인 연속 카운터(CC)가 유지된 마지막 패킷인 상기 복구 시작 위치의 이전 (n)번째 패킷에 대한 인덱스값이다.
상기 n은 상기 복구 시작 위치의 패킷으로부터, 그 이전 n개의 패킷을 지정하는 수이며, 복구 시작 위치 패킷과 그 이전 n개의 패킷의 합인 n+1개에 대한 상기 시작 패킷 특정정보를 수신하여 손실 패킷을 검색하는데 사용한다. 이 때 특정 정보라 함은 전송 스트림(TS) 패킷의 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보 등이다.
상기 n과 같이 특정 고정된 수가 아닌, 변수 N을 사용할 수도 있는데, N은 상기 복구 시작 위치의 패킷으로부터, 그 이전 패킷 중 NULL 패킷을 제외한 패킷의 개수가 n개가 되는 패킷까지의 패킷 수(N=n+(복구 시작 위치 패킷과 그 이전 N번째 패킷 사이의 Null패킷수))를 갖는다. 이 경우 상기 시작 패킷 특정정보는 상기 복구 시작 위치의 패킷과 바로 이전 N개의 패킷 중 NULL 패킷을 제외한 n개의 패킷을 포함하는 총 (n+1)개의 전송 스트림(TS) 패킷의 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보 등이다.
상기 복구 시작 위치 결정부는 상기 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷 중 NULL 패킷을 제외한 데이터 패킷의 특정 정보와 상기 시작 패킷 특정정보가 일치하는 경우, 해당 n+1개(또는 N+1개)의 마지막 패킷을 상기 복구 시작 위치로 결정한다.
상기 복구 시작 위치 결정부는 상기 손실 패킷 정보에 포함된 정상적인 연속 카운터(CC)가 유지된 마지막 패킷인 상기 복구 시작 위치의 패킷과 바로 이전 n개(또는 N개)의 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크((n+1)비트 (또는 (N+1) 비트))로 구성된 시작 패킷 비트마스크에 근거하여 상기 복구 시작 위치를 결정한다.
상기 복구 시작 위치 결정부는 상기 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷의 특정 정보와 상기 시작 패킷 특정정보가 비일치하는 경우, 이후 기 설정된 일정 구간을 검색하여 일치하는 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷 특정 정보를 검색하여 상기 복구 시작 위치를 결정한다.
상기 복구 종료 위치 결정부는 상기 복구 시작 위치가 결정되면 그 이후 구간을 다시 검색하여 상기 종료 패킷 특정 정보 k+1개와 일치하는 연속된 k+1개의 전송 스트림(TS) 패킷을 추출하고, 상기 k+1개의 패킷의 첫번째 패킷을 상기 복구 종료 위치로 결정한다.
상기 종료 패킷 특정 정보는 연속 카운터(CC) 불연속이 검출된 마지막 패킷인 상기 복구 종료 위치의 패킷을 시작으로 이후 (k) 개의 전송 스트림(TS) 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보이다.
상기 k와 같이 특정 고정된 수가 아닌, 변수 K를 사용할 수도 있는데, 상기 복구 종료 위치 결정부는 상기 복구 시작 위치가 결정되면 그 이후 구간을 다시 검색하여 상기 종료 패킷 특정 정보 K+1개와 일치하는 연속된 K+1개의 전송 스트림(TS) 패킷을 추출하고, 상기 K+1개의 패킷의 첫번째 패킷을 상기 복구 종료 위치로 결정한다. K는 상기 복구 종료 위치의 패킷으로부터, 그 이후 패킷 중 NULL 패킷을 제외한 패킷의 개수가 k개가 되는 패킷까지의 패킷 수(K=k+(복구 종료 위치 패킷과 그 이후 K번째 패킷 사이의 Null패킷수))를 갖는다. 이 경우 상기 종료 패킷 특정정보는 상기 복구 종료 위치의 패킷과 바로 이후 K개의 패킷 중 NULL 패킷을 제외한 k개의 패킷을 포함하는 총 (k+1)개의 전송 스트림(TS) 패킷의 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보 등이다.
상기 복구 종료 위치 결정부는 상기 손실 패킷 정보에 포함된 연속 카운터(CC) 불연속이 검출된 마지막 패킷인 상기 복구 종료 위치의 패킷을 시작으로 이후 k개(또는 K개)의 전송 스트림(TS) 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크로 구성되는 종료 패킷 비트마스크에 근거하여 상기 복구 종료 위치를 결정한다.
상기 복구 패킷 결정부는 상기 복구 시작 위치에 해당하는 패킷 다음 패킷부터, 상기 복구 종료 위치 패킷 이전 패킷까지의 연이은 패킷 데이터를 상기 클라이언트 단말기로 전송한다.
상기 복구 요청 수신부는 클라이언트 단말기로부터 손실 패킷에 대한 복구 요청 신호 및 손실 패킷 정보 외에 복구 패킷 구간에 포함될 수 있는 정상 패킷 특정 정보를 수신할 수도 있다.
상기 정상 패킷 특정 정보는 상기 복구 시작 위치 다음 패킷으로부터, 상기 복구 종료 위치의 이전 패킷까지 구간 내의 클라이언트 단말기가 정상 수신한 패킷들의 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보이다.
상기 복구 패킷 결정부는 상기 복구 시작 위치에 해당하는 패킷 다음 패킷부터, 상기 복구 종료 위치 패킷 이전 패킷까지의 연이은 패킷 데이터를 결정하고, 이들 패킷 중 상기 정상 패킷 특정 정보를 갖는 패킷을 제외한 패킷 들을 상기 클라이언트 단말기로 전송한다.
본 실시예의 다른 측면에 의하면, 클라이언트 단말기로부터 손실 패킷에 대한 복구 요청 신호 및 손실 패킷 정보를 수신하는 패킷 수신 과정; 상기 손실 패킷 정보 내에 포함된 인덱스 값과 시작 패킷 특정정보에 근거하여 복구 시작 위치를 결정하는 복구 시작 위치 결정 과정; 상기 복구 시작 위치 이후를 검색한 정보 및 상기 손실 패킷 정보 내에 포함된 종료 패킷 특정 정보에 근거하여 복구 종료 위치를 결정하는 복구 종료 위치 결정 과정; 및 상기 복구 시작 위치와 상기 복구 종료 위치 사이의 구간을 복구 패킷으로 결정하고 상기 클라이언트 단말기로 전송하도록 하는 복구 패킷 결정 과정을 포함하는 것을 특징으로 하는 패킷 손실 검출 방법을 제공한다.
이상에서 설명한 바와 같이 본 실시예에 의하면, 일반적인 IPTV는 멀티캐스트 스트림이 RTP를 사용해야만 재전송이 가능했지만, UDP를 사용하는 경우에도 재전송이 가능하여 패킷 손실에 의한 오디오, 비디오 품질 열화를 사전에 방지할 수 있는 효과가 있다.
본 실시예에 의하면, 일반적인 IPTV 멀티캐스트 재전송 기술은 반드시 RTP 를 사용해야만 가능했는데, 실제 서비스망은 RTP를 사용하기도 하지만 여전히 UDP를 이용하여 전송을 하고 있어서 UDP를 사용하는 멀티캐스트의 손실 패킷 재전송이 가능한 효과가 있다.
본 실시예에 의하면, UDP 전송방식에서는 RTP의 시퀀스와 같은 정보가 없지만 UDP 패킷 안에 담고 있는 TS 패킷의 구조적 특징들을 이용하여 시퀀스와 같은 인덱싱 방안과 TS 패킷 손실을 감지하면 해당 손실 패킷들을 요청하고 재전송하는 프로토콜을 제공하는 효과가 있다.
본 실시예에 의하면, 멀티 PID에 대하여 패킷 손실을 검출할 수 있는 효과가 있다.
도 1은 본 실시예에 따른 UDP 패킷 손실 검출 방법을 설명하기 위한 도면이다.
도 2는 본 실시예에 따른 UDP 패킷 손실 검출 방법을 이용한 복구구간을 설명하기 위한 도면이다.
도 3은 본 실시예에 따른 UDP 손실 패킷 재전송 요청을 위한 정보를 나타낸 도면이다.
도 4는 본 실시예에 따른 사용자 데이터그램 프로토콜(UDP) 방식에서의 단말기 패킷 손실 검출 후 복구 패킷 요청을 MLR 서버로 보내는 방법을 나타낸 도면이다.
도 5는 본 실시예에 따른 복구 시작 위치 및 복구 종료 위치 내에 포함된 정상 패킷 정보 전송 방법을 나타낸 도면이다.
도 6은 본 실시예에 따른 MLR 서버를 개략적으로 나타낸 블럭 구성도이다.
도 7은 본 실시예에 따른 클라이언트 단말기를 개략적으로 나타낸 블록 구성도이다.
도 8은 본 실시예에 따른 최단 시간으로 손실 패킷 구간을 검출하기 위한 PCR 기준 TS 패킷 인덱싱을 나타낸 도면이다.
도 9는 본 실시예에 따른 MLR 서버에서 패킷 손실 구간을 확정하는 방법을 나타낸 도면이다.
도 10은 본 실시예에 따른 클라이언트 단말기에서 복구 패킷 수신 후 복구하는 방법을 나타낸 도면이다.
도 11은 본 실시예에 따른 클라이언트 단말기 동작을 설명하기 위한 순서도이다.
도 12는 본 실시예에 따른 MLR 서버의 데이터 저장 동작을 설명하기 위한 순서도이다.
도 13은 본 실시예에 따른 MLR 서버의 데이터 복구 동작을 설명하기 위한 순서도이다.
이하, 본 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 실시예에 따른 사용자 데이터그램 프로토콜(UDP) 패킷 손실 검출 방법을 설명하기 위한 도면이다.
도 1은 사용자 데이터그램 프로토콜(UDP: User Datagram Protocol) 방식에서의 단말기 패킷 손실 검출 방법을 설명한다.
사용자 데이터그램 프로토콜(UDP) 방식의 스트림을 클라이언트 단말기(110)에서 수신한다. 클라이언트 단말기(110)는 패킷 손실 유무를 확인하기 위해 MPEG-2 전송 스트림(TS: Transport Stream)의 패킷 헤더에 기재되어 있는 연속 카운터((CC: Continuity Count)(이후 연속 카운터(CC))를 확인하여 패킷 간의 연결성이 유지되는지의 여부를 확인한다. 여기서, 연속 카운터(CC)는 전송 스트림(TS) 패킷의 시퀀스 번호이다.
연속 카운터(CC) 값은 4bit 값으로 0 ~ 15까지의 정수로 이루어져 있다. 일반적으로 영상 스트림은 최소한 1개 이상의 비디오 스트림과 1개 이상의 오디오 스트림으로 구성되어 있으며, 이들은 패킷 식별자(PID: Packet IDentifier) 값으로 구분된다. 패킷 식별자(PID)는 전송 스트림(TS) 패킷의 데이터 소스를 식별한다.
각 패킷 식별자(PID) 별로 연속 카운터(CC)가 기재되고 있어, 각 패킷 식별자(PID) 별 연속 카운터(CC)를 모두 동시에 확인하면, 1개의 패킷 식별자(PID)에서의 연속 카운터(CC)를 확인할 때 발생할 수 있는 16의 배수 개의 연속 카운터(CC)가 포함된 패킷의 손실을 확인할 수 없는 경우를 보상할 수 있다.
다시 말해, 사용자 데이터그램 프로토콜(UDP) 방식에서의 단말기 패킷 손실 검출을 위해 MPEG-2 TS(전송 프로토콜 규약) 등에 포함된 각 패킷 식별자(PID)(스트림별)의 연속 카운터(CC)의 연결성을 동시에 확인할 수 있다.
도 1에 도시된 바와 같이, 클라이언트 단말기(110)에서의 사용자 데이터그램 프로토콜(UDP) 패킷 수신 시 내부의 전송 스트림(TS) 패킷에 포함된 패킷 식별자(PID) 별 연속 카운터(CC)를 각각 확인하여 연속 카운터(CC)의 연결성이 끊어진 경우 사용자 데이터그램 프로토콜(UDP) 패킷의 손실이 발생한 것으로 간주한다.
도 2는 본 실시예에 따른 사용자 데이터그램 프로토콜(UDP) 패킷 손실 검출 방법을 이용한 복구구간을 설명하기 위한 도면이다.
도 2에 도시된 바와 같이, MLR (Media Loss Recovery) 클라이언트(700)는 사용자 데이터그램 프로토콜(UDP) 방식에서의 단말기 패킷 손실 검출 방법으로 멀티 패킷 식별자(PID) 적용하여 '복구 시작 위치'와 '복구 종료 위치’를 결정한다.
클라이언트 단말기(110, 700)는 사용자 데이터그램 프로토콜(UDP) 방식의 스트림을 수신한다(710, 패킷 수신부). 패킷 손실 검출부(720)는 패킷 손실 유무를 확인하기 위해 MPEG-2 TS의 패킷 헤더에 기재되어 있는 연속 카운터(CC)(이후 연속 카운터(CC))를 확인하여 패킷 간의 연결성이 유지되는지의 여부를 확인한다.
연속 카운터(CC) 값은 4bit 값으로 0 ~ 15까지의 정수로 이루어져 있다.
일반적으로 영상 스트림은 최소한 1개 이상의 비디오 스트림과 1개 이상의 오디오 스트림으로 구성되어 있으며, 이들은 패킷 식별자(PID) 값으로 구분된다.
각 패킷 식별자(PID) 별로 연속 카운터(CC)가 기재되고 있어, 각 패킷 식별자(PID) 별 연속 카운터(CC)를 모두 동시에 확인하면, 1개의 패킷 식별자(PID)에서의 연속 카운터(CC)를 확인할 때 발생할 수 있는 16배수 개의 연속 카운터(CC)가 포함된 패킷의 손실을 확인할 수 없는 경우를 보상할 수 있다.
패킷 손실 검출부(720)는 1개의 전송 스트림(TS) 스트림에 포함된 모든 또는 1개 이상의 패킷 식별자(PID)에 대하여 패킷 손실 검출 및 복구를 진행할 경우, 동시에 해당(모든 또는 1개 이상) 패킷 식별자(PID)의 연속 카운터(CC)의 끊어짐 유무를 판단한다.
도 2에 도시된 바와 같이, 패킷 손실 검출부(720)는 어느 한 패킷 식별자(PID)의 연속 카운터(CC)가 끊어진 것을 검출한 경우, 해당 위치에서 마지막 정상 패킷을 '복구 시작 위치'로, 연속 카운터(CC)가 불연속된 첫 번째 패킷을 '복구 종료 위치'로 지정한다.
이후, 패킷 손실 검출부(720)는 해당 패킷 이후의 입력 패킷에 대하여, 기존 연속 카운터(CC) 불연속 여부를 판단한 패킷 식별자(PID) 이외의 다른 모든 대상 패킷 식별자(PID)에 대하여 연속 카운터(CC) 연결 유무를 확인한다.
패킷 손실 검출부(720)는 확인결과, 새롭게 연속 카운터(CC)가 불연속인 패킷이 발견된 경우, 연속 카운터(CC) 불연속을 검출한 해당 패킷 식별자(PID)의 이전 가장 최근 패킷과 현재의 '복구 시작 위치'를 비교하여 더 이전인 패킷을 '복구 시작 위치'로 업데이트한다.
패킷 손실 검출부(720)는 연속 카운터(CC) 불연속을 검출한 해당 패킷 식별자(PID)의 현재의 패킷을 '복구 종료 위치'로 업데이트한다.
패킷 손실 검출부(720)는 전술한 연속 카운터(CC) 연결 확인 과정을 모든 대상 패킷 식별자(PID)를 확인한 후, 마지막으로 업데이트된 복구 시작 위치 패킷과 복구 종료 위치 패킷을 기준으로, 복구 요청 데이터 생성부(730)에서 복구 요청 데이터 생성을 진행한다.
다시 말해, 패킷 손실 검출부(720)는 사용자 데이터그램 프로토콜(UDP) 방식에서의 단말기 패킷 손실 검출을 위해 MPEG-2 TS(전송 프로토콜 규약) 등에 포함된 각 패킷 식별자(PID)(스트림별)의 연속 카운터(CC)의 연결성을 동시에 확인한다.
패킷 손실 검출부(720)는 연속 카운터(CC) 불연결 패킷이 검출 시, 이후 패킷에 대하여 모든 패킷 식별자(PID)에 대하여 연속 카운터(CC) 연결성을 확인하여, 새롭게 검출된 패킷 손실이 존재할 경우 해당 패킷을 시작과 종료로 업데이트하여, 최종 손실 패킷 시작 위치(복구 시작 위치 패킷)와 종료 위치(복구 종료 위치 패킷)를 결정한다.
도 3은 본 실시예에 따른 사용자 데이터그램 프로토콜(UDP)의 손실 패킷 재전송 요청을 위한 정보를 나타낸 도면이다.
도 3의 사용자 데이터그램 프로토콜(UDP)의 손실 패킷 재전송 요청을 위한 정보는 n=2, k=2인 경우의 예시로 한다. 도 3에서의 재전송 요청을 위한 정보는 복구 요청 데이터 생성부(730)에서 생성된다.
도 3은 클라이언트 단말기(110)가 사용자 데이터그램 프로토콜(UDP) 손실 패킷의 재전송을 요청하기 위해 MLR 서버(600)로 전송하는 정보를 나타낸다. 클라이언트 단말기(110, 700)는 복구요청 송신부(740)을 통해 복구 요청 신호를 MLR 서버(600)로 전송한다. 이 후 MLR 서버(600)로부터 복구된 패킷 정보를 복구데이터 수신부(750)를 통해 수신 후 복구 데이터 처리부(760)을 통해 복구된 정상 스트림을 구성하고, 이를 패킷 출력부(770)을 통해, 단말기의 다음 처리 모듈로 출력한다.
MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식(또는 기타 프로토콜)의 패킷 복구 요청 신호를 클라이언트 단말기(110, 700)로부터 수신한다. 클라이언트 단말기(110, 700)는 패킷 손실이 확인된 경우, 하기 A, B, C, D 등의 값을 추출한 후, [표 1]에 예시된 프로토콜 또는 유사한 프로토콜 형식을 이용하여 MLR 서버(600)로 전송한다.
Figure 112017130822716-pat00001
클라이언트 단말기(110, 700)는 정상적인 연속 카운터(CC)가 유지된 마지막 패킷(복구 시작 위치 패킷)을 기준으로, A, B, C, D 값을 추출한다.
A: 프로그램 클럭 참조정보(PCR: Program Clock Reference)값
프로그램 클럭 참조정보(PCR) 값은 복구 시작 위치 패킷 이전의 가장 마지막 프로그램 클럭 참조정보(PCR) 값을 의미한다.
B: 인덱스 값
인덱스 값은 정상적인 연속 카운터(CC)가 유지된 마지막 패킷(복구 시작 위치 패킷)의 바로 이전 2번째 패킷에 대한 인덱스 값을 의미한다.
C: 시작 패킷 헤더(Start Sample Packet Header)
시작 패킷 헤더는 정상적인 연속 카운터(CC)가 유지된 마지막 패킷과 바로 이전 2개의 패킷을 포함하는 총 3개의 전송 스트림(TS) 패킷의 헤더 정보를 의미한다.
D: 종료 패킷 헤더(End Sample packet Header)
종료 패킷 헤더는 손실이 검출된 패킷 및 이후 2개를 포함한 총 3개의 전송 스트림(TS) 패킷의 전송 스트림(TS) 패킷 헤더 정보를 의미한다.
클라이언트 단말기(110, 700)는 전술한, A, B, C, D값을 MLR 서버(600)로 전송하여 손실 패킷에 대한 복구를 요청한다.
클라이언트 단말기(110, 700)가 MLR 서버(600)로 가장 마지막 프로그램 클럭 참조정보(PCR)를 전송하는 이유로는 MLR 서버(600)에서 복구 패킷을 확정하기 위해 필요한 데이터 검색(Search) 시간을 최소화하기 위함이다.
클라이언트 단말기(110, 700)가 MLR 서버(600)로 마지막 정상적으로 수신된 패킷을 기준으로 바로 이전 프로그램 클럭 참조정보(PCR)를 전송하여, 복구 패킷에 가장 가까운 프로그램 클럭 참조정보(PCR)의 위치를 기준으로 복구 데이터 확인 작업을 시작할 수 있다.
클라이언트 단말기(110)가 MLR 서버(600)로 전송한 프로그램 클럭 참조정보(PCR)(상기 A값)와 함께 인덱스 값(상기 B값)을 전송한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷을 포함한 연이은 3개의 전송 스트림(TS) 패킷 헤더와 복구 요청 시 전송한 '시작 패킷 헤더(Start Sample Packet Header)'(C값)를 비교한다.
MLR 서버(600)는 인덱스 값에 해당하는 패킷과 연이은 2개의 패킷을 포함하는 3개의 전송 스트림(TS) 패킷 헤더와 시작 패킷 헤더(Start Packet Header)가 일치하면 해당 3개의 패킷의 마지막 패킷을 '복구 시작 위치(Start Point)' 패킷으로 결정한다.
MLR 서버(600)는 인덱스 값에 해당하는 패킷과 연이은 2개의 패킷을 포함하는 3개의 전송 스트림(TS) 패킷 헤더 특정 정보와 시작 패킷 헤더(Start Sample Packet Header) 정보가 비일치하면, 이후 일정 구간을 검색하여 일치하는 연이은 3개의 전송 스트림(TS) 패킷 헤더를 찾아 '복구 시작 위치'를 확정한다.
MLR 서버(600)는 '복구 시작 위치'가 확정되면 그 이후 구간을 다시 검색하여 '종료 패킷 헤더’(D값) 3개와 일치하는 연속된 3개의 전송 스트림(TS) 패킷을 검색한다.
MLR 서버(600)는 검색된 3개의 패킷의 첫번째 패킷을 '복구 종료 위치(End Point)' 패킷으로 확정하여, '복구 시작 위치'와 '복구 종료 위치' 사이 구간을 복구 패킷으로 결정한다.
다시 말해, MLR 서버(600)는 A, B, C, D를 전송 스트림(TS) 패킷 복구 요청용 데이터로 사용한다. MLR 서버(600)는 A, B를 이용하여 복구 데이터를 찾는 시간을 최소화한다. MLR 서버(600)는 C, D를 이용하여 복구 시작 위치와 복구 종료 위치를 확정한다.
MLR 서버(600)는 [표 1]과 같이 예시된 형식의 프로토콜 등을 이용하여 클라이언트 단말기(110, 700)로부터 A, B, C, D를 수신한다. 이 때, C 데이터 바로 앞에 N+1비트의 StartSample 비트마스크와, D 데이터 바로 앞에 K+1비트의 EndSample 비트마스크를 전송하여, C, D의 특정 정보를 추출한 패킷과 NULL 패킷을 구분하여, NULL 패킷을 특정 정보 비교에서 제외할 수 도 있다.
도 3에 도시된 바와 같이, 클라이언트 단말기(110, 700)는 MLR 서버(600)로 손실 패킷 복구 요청을 위해, 패킷 손실 검출 되기 전 마지막 정상 수신 패킷을 기준으로, 기준 패킷 이전 정상 수신된 마지막 프로그램 클럭 참조정보(PCR), 기준 패킷 이전 n번째 패킷의 인덱스, 기준 패킷 및 이전 n(=2)개를 포함한 총 n+1(=3)개의 전송 스트림(TS) 패킷의 헤더 특정 정보와 손실 검출 구간 바로 뒤 패킷을 기준으로, 기준 패킷과 그 이전 k(=2)개의 패킷을 포함하는 k+1(=3)개의 전송 스트림(TS) 패킷의 헤더 특정 정보를 MLR 서버(600)로 전송한다. 관련 프로토콜의 예시는 [표 1]과 같다.
도 4는 본 실시예에 따른 사용자 데이터그램 프로토콜(UDP) 방식에서의 단말기 패킷 손실 검출 후 복구 패킷 요청을 MLR 서버로 보내는 방법에 있어서, PCR, 인덱스, StartSample 비트마스크, 시작 패킷헤더 특정 정보, EndSample 비트마스크, 종료 패킷 헤더 특정 정보를 생성하는 방법을 나타낸 도면이다.
도 4는 클라이언트 단말기(700)에서 사용자 데이터그램 프로토콜(UDP) 손실 패킷 재전송 요청을 위해 MLR 서버(600)로 전송하는 정보를 나타낸다.
도 4에 도시된 샘플링 데이터(StartSample, EndSample)는 사용자 데이터그램 프로토콜(UDP) 패킷 내에서의 전송 스트림(TS) 패킷의 순서에 해당하는 인덱스값을 포함할 수도 있다.
TS 패킷헤더 특정정보에 해당하는 샘플링 데이터(StartSample, EndSample)는 전송 스트림(TS) 패킷에서 SyncByte(0x47)을 제외한 임의의 샘플링 데이터를 사용한다. 샘플 전송 스트림(TS) 패킷 중 NULL 패킷이 포함된 것을 제외하기 위해서 비트마스크(BitMask)값을 이용해서 샘플 전송 스트림(TS) 패킷중 Null 패킷인 경우와 Null 패킷이 아닌 경우를 구분한다. 이때, 비트마스크의 길이는 서버와 약속한 샘플 전송 스트림(TS) 패킷 개수(n+1, k+1)만큼의 비트마스크를 사용하는 경우와, NULL패킷을 제외한 유효한 데이터 패킷의 개수가 n+1 및 k+1이 되도록 하여 정해진 비트수인 N+1 및 K+1의 비트마스크를 사용하는 경우가 존재한다.
클라이언트 단말기(700)는 사용자 데이터그램 프로토콜(UDP) 방식에서의 단말기 패킷 손실 검출 후 복구 패킷 요청을 MLR 서버(600)로 전송한다.
MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식의 복구요청 신호(스트림)를 클라이언트 단말기(700)로부터 수신한다.
클라이언트 단말기(700)는 패킷 손실이 확인된 경우, A, B, C, D, E, F 값을 추출하여 MLR 서버(600)로 적절한 프로토콜을 사용하여 송신한다.
클라이언트 단말기(700)는 정상적인 연속 카운터(CC)가 유지된 마지막 패킷(복구 시작 위치)을 기준으로 A, B, C, D, E, F 값을 추출한다.
A: 프로그램 클럭 참조정보(PCR) 값
‘프로그램 클럭 참조정보(PCR) 값'은 가장 마지막 프로그램 클럭 참조정보(PCR) 값(손실 패킷이 검출된 위치에서 가장 가까운 이전 프로그램 클럭 참조정보(PCR) 값)을 의미한다.
B: 인덱스값
‘인덱스값’은 복구 시작 위치(정상적인 연속 카운터(CC)가 유지된 마지막 패킷)의 이전 (n)번째 패킷에 대한 인덱스값(A값에 해당하는 PCR 패킷의 패킷수)을 의미한다.
C: 시작 패킷 비트마스크(Start Sample Bitmask)
‘시작 패킷 비트마스크'는 복구 시작 위치(정상적인 연속 카운터(CC)가 유지된 마지막 패킷) 패킷과 바로 이전 n개의 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크((n+1) 비트로 구성된다. 각 비트는 B의 인덱스값에 해당하는 패킷으로부터 복구 시작 위치 패킷까지의 순서로, 각 패킷이 Null이면 0, Null이 아니면 1로 표시된다.
D: 시작 패킷 특정 정보(Start Sample Packet Specific Information)
‘시작 패킷 특정 정보’는 복구 시작 위치 패킷과 바로 이전 n개의 패킷을 포함하는 총 (n+1)개의 전송 스트림(TS) 패킷의 특정 정보를 의미한다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
E: 종료 패킷 비트마스크(End Sample Bitmask)
‘종료 패킷 비트마스크'는 복구 종료 위치(연속 카운터(CC) 불연속이 검출된 마지막 패킷) 패킷을 시작으로 이후 (k)개의 전송 스트림(TS) 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크(k+1 비트로 구성되며, 각 비트는 복구 종료 위치 패킷 및 이후 k 개의 패킷까지의 순서로, 각 패킷이 Null이면 0, Null이 아니면 1로 표시)를 의미한다.
F: 종료 패킷 특정 정보(End Sample Packet Specific Information)
‘종료 패킷 특정 정보'는 복구 종료 위치(연속 카운터(CC) 불연속이 검출된 마지막 패킷) 패킷을 시작으로 이후 (k) 개의 전송 스트림(TS) 패킷의 특정 정보를 의미한다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
클라이언트 단말기(700)는 전술한, A, B, C, D, E, F값을 MLR 서버(600)로 전송하여 손실 패킷에 대한 복구를 요청한다.
클라이언트 단말기(700)가 MLR 서버(600)로 가장 마지막(최근) 프로그램 클럭 참조정보(PCR)를 전송하는 이유로는 MLR 서버(600)에서 복구 패킷을 확정하기 위해 필요한 데이터 검색 시간을 최소화하기 위함이다.
클라이언트 단말기(700)가 MLR 서버(600)로 마지막 정상 수신 패킷을 기준으로 바로 이전 프로그램 클럭 참조정보(PCR)를 전송하여, MLR 서버(600)에서 복구 패킷에 가장 가까운 프로그램 클럭 참조정보(PCR)의 위치를 기준으로 복구 데이터 확인 작업을 시작할 수 있다.
MLR 서버(600)는 '프로그램 클럭 참조정보(PCR)'와 함께 수신한 '인덱스 값'에 해당하는 패킷으로부터 '연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보'와 복구 요청 시 수신된 '시작 패킷 특정정보'를 비교한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷으로부터 '연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보'와 '시작 패킷 특정정보’가 일치하면 해당 n+1개의 패킷 중 마지막 패킷을 복구 데이터에 대한 '복구 시작 위치(Start Point)'로 결정한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷으로부터 '연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보’와 '시작 패킷 특정정보'가 비일치하면, 이후 일정 구간을 검색하여 일치하는 연이은 n+1개의 전송 스트림(TS) 패킷 특정 정보를 찾아 복구 데이터에 대한 '복구 시작 위치'를 확정한다.
MLR 서버(600)는 복구 데이터에 대한 '복구 시작 위치'가 확정되면 그 이후를 다시 검색하여 '종료 패킷 특정 정보’ k+1개와 일치하는 연속된 k+1개의 전송 스트림(TS) 패킷을 검색한다.
MLR 서버(600)는 검색된 k+1개의 패킷 중 첫번째 패킷을 복구데이터에 대한 '복구 종료 위치'로 확정하여, 복구데이터에 대한 '복구 시작 위치’와 복구 데이터에 대한 '복구 종료 위치' 사이 구간(복구 시작위치 다음 패킷부터 복구 종료 위치 이전 패킷)을 복구 패킷으로 결정한다. MLR 서버(600)는 결정된 복구 패킷을 복구를 요청한 클라이언트 단말기(700)로 전송한다.
여기서, n+1과 k+1은 같을 수도 있고, 다른 값일 수도 있다.
<관련 프로토콜의 예시가 변경되는 경우의 실시예>
클라이언트 단말기(700)는 사용자 데이터그램 프로토콜(UDP) 방식에서의 단말기 패킷 손실 검출 후 복구 패킷 요청을 MLR 서버(600)로 전송한다.
클라이언트 단말기(700)는 MLR 서버(600)로 복구 패킷을 요청할 때, NULL 패킷을 제외한 실질적인 데이터가 존재하는 시작샘플 패킷(StartSample Packet)/종료샘플 패킷(EndSample Packet)의 샘플 개수가 n+1, k+1로 적용한다.
MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식의 복구 요청 신호(스트림)을 클라이언트 단말기(700)로부터 수신한다.
클라이언트 단말기(700)는 패킷 손실이 확인된 경우, A, B, C, D, E, F 값을 추출하여 MLR 서버(600)로 적절한 프로토콜을 사용하여 전송한다.
클라이언트 단말기(700)는 정상적인 연속 카운터(CC)가 유지된 마지막 패킷(복구 시작 위치)을 기준으로, A, B, C, D, E, F 값을 추출한다.
A: 프로그램 클럭 참조정보(PCR) 값
‘프로그램 클럭 참조정보(PCR) 값'은 가장 마지막 프로그램 클럭 참조정보(PCR) 값(손실 패킷이 검출된 위치에서 가장 가까운 이전 프로그램 클럭 참조정보(PCR) 값)을 의미한다.
B: 인덱스값
‘인덱스값’은 복구 시작 위치(정상적인 연속 카운터(CC)가 유지된 마지막 패킷)의 이전 (N)번째 패킷에 대한 인덱스값(A값에 해당하는 PCR 패킷의 패킷수)을 의미한다.
여기서, N은 복구 시작 위치 패킷으로부터, 그 이전 패킷 중 NULL 패킷을 제외한 패킷의 개수가 n개가 되는 패킷까지의 패킷 수(N=n+(복구 시작 위치 패킷과 그 이전 N번째 패킷 사이의 Null패킷수))를 의미한다.
C: 시작 패킷 비트마스크(Start Sample Bitmask)
‘시작 패킷 비트마스크'는 복구 시작 위치(정상적인 연속 카운터(CC)가 유지된 마지막 패킷) 패킷과 바로 이전 N개의 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크((N+1) 비트로 구성된다. 각 비트는 B의 인덱스값에 해당하는 패킷으로부터 복구 시작 위치 패킷까지의 순서로, 각 패킷이 Null이면 0, Null이 아니면 1로 표시된다.
D: 시작 패킷 특정 정보(Start Sample Packet Specific Information)
‘시작 패킷 특정 정보’는 복구 시작 위치 패킷과 바로 이전 N개의 패킷을 포함하는 총 (N+1)개의 전송 스트림(TS) 패킷의 특정 정보를 의미한다. 이 때 실제로 전송되는 시작 패킷 특정 정보는 NULL 패킷의 개수를 제외한 n+1개의 패킷에 대한 정보이다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
E: 종료 패킷 비트마스크(End Sample Bitmask)
‘종료 패킷 비트마스크'는 복구 종료 위치(연속 카운터(CC) 불연속이 검출된 마지막 패킷) 패킷을 시작으로 이후 (K)개의 전송 스트림(TS) 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크(K+1 비트로 구성되며, 각 비트는 복구 종료 위치 패킷 및 이후 K개 패킷까지의 순서로, 각 패킷이 Null이면 0, Null이 아니면 1로 표시)를 의미한다.
여기서, K는 복구 종료 위치의 패킷 바로 뒤 패킷으로부터, 그 이후 패킷 중 NULL 패킷을 제외한 패킷의 개수가 k개가 되는 패킷까지의 패킷 수(K=k+(복구 종료 위치 패킷 바로 뒤 패킷과 그 이후 K번째 패킷 사이의 Null패킷수))를 의미한다.
F: 종료 패킷 특정 정보(End Sample Packet Specific Information)
‘종료 패킷 특정 정보'는 복구 종료 위치(연속 카운터(CC) 불연속이 검출된 마지막 패킷) 패킷을 시작으로 이후 (K) 개의 전송 스트림(TS) 패킷을 포함하는 총 K+1개의 패킷 특정 정보를 의미한다. 이 때 실제로 전송되는 종료 패킷 특정 정보는 NULL 패킷의 개수를 제외한 k+1개의 패킷에 대한 정보이다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
클라이언트 단말기(700)는 전술한, A, B, C, D, E, F값을 MLR 서버(600)로 전송하여 손실 패킷에 대한 복구를 요청한다.
클라이언트 단말기(700)가 MLR 서버(600)로 가장 마지막(최근) 프로그램 클럭 참조정보(PCR)를 전송하는 이유로는 MLR 서버(600)에서 복구 패킷을 확정하기 위해 필요한 데이터 검색 시간을 최소화하기 위함이다.
클라이언트 단말기(700)가 MLR 서버(600)로 마지막 정상 수신 패킷을 기준으로 바로 이전 프로그램 클럭 참조정보(PCR)를 전송하여, MLR 서버(600)에서 복구 패킷에 가장 가까운 프로그램 클럭 참조정보(PCR)의 위치를 기준으로 복구 데이터 확인 작업을 시작할 수 있다.
MLR 서버(600)는 '프로그램 클럭 참조정보(PCR)'와 함께 수신한 '인덱스 값'에 해당하는 패킷으로부터 '연이은 N+1개의 전송 스트림(TS) 패킷의 특정 정보'와 복구 요청 시 수신된 '시작 패킷 특정정보’를 비교한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷으로부터 '연이은 N+1개의 전송 스트림(TS) 패킷의 특정 정보'와 '시작 패킷 특정정보’가 일치하면 해당 N+1개의 패킷의 마지막 패킷을 복구 데이터에 대한 '복구 시작 위치(Start Point)'로 결정한다.
MLR 서버(600)는 복구 데이터에 대한 '복구 시작 위치'가 확정되면 그 이후를 다시 검색하여 '종료 패킷 특정 정보' K+1개와 일치하는 연속된 K+1개의 전송 스트림(TS) 패킷을 검색한다.
MLR 서버(600)는 검색된 K+1개의 패킷 중 첫번째 패킷을 복구데이터에 대한 '복구 종료 위치'로 확정하여, 복구데이터에 대한 '복구 시작 위치'와 복구 데이터에 대한 '복구 종료 위치' 사이 구간을 복구 패킷으로 결정한다. MLR 서버(600)는 결정된 복구 패킷을 복구를 요청한 클라이언트 단말기(700)로 전송한다.
여기서, n+1과 k+1은 같을 수도 있고, 다른 값일 수도 있다.
도 5는 본 실시예에 따른 복구 시작 위치 및 복구 종료 위치 내에 포함된 정상 패킷 정보 전송 방법을 나타낸 도면이다.
도 5는 클라이언트 단말기(700)에서 사용자 데이터그램 프로토콜(UDP) 손실 패킷 재전송 요청을 위해 MLR 서버(600)로 전송하는 정보를 나타낸다.
도 5에서는 '복구 시작 위치' 및 '복구 종료 위치' 내에 포함된 정상 패킷 정보를 전송할 때, MLR 서버(600)에서 종료 패킷 검색 시간을 단축할 수 있다.
클라이언트 단말기(700)에서 설정한 복구 구간에 존재하는 전송 스트림(TS) 패킷정보, 즉 사용자 데이터그램 프로토콜(UDP) 패킷 내의 전송 스트림(TS) 인덱스값(4Bit)과 전송 스트림(TS) 패킷의 연속 카운터(CC) 값(4Bit)값을 MLR 서버(600)로 전송해서 서버에서 시작 샘플(StartSample) 위치를 찾은 후에 복구 구간의 정보를 이용해서 손실 패킷만을 찾아서 복구 데이터로서 클라이언트 단말기(700)로 전송한다.
MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식의 복구 요청 신호(스트림)을 클라이언트 단말기(700)로부터 수신한다. 클라이언트 단말기(700)는 패킷 손실이 확인된 경우, A, B, C, D, E, F, G 값을 추출하여 MLR 서버(600)로 적절한 프로토콜을 사용하여 전송한다.
클라이언트 단말기(700)는 정상적인 복구 시작 위치 패킷(복구 시작 위치)을 기준으로, A, B, C, D, E, F, G 값을 추출한다.
A: 프로그램 클럭 참조정보(PCR) 값
‘프로그램 클럭 참조정보(PCR) 값'은 가장 마지막 프로그램 클럭 참조정보(PCR) 값(손실 패킷이 검출된 위치에서 가장 가까운 이전 프로그램 클럭 참조정보(PCR) 값)을 의미한다.
B: 인덱스값
‘인덱스값’은 복구 시작 위치(정상적인 연속 카운터(CC)가 유지된 마지막 패킷)의 이전 (n)번째 패킷에 대한 인덱스값을 의미한다.
C: 시작 패킷 비트마스크(Start Packet Bitmask)
‘시작 패킷 비트마스크'는 복구 시작 위치(정상적인 연속 카운터(CC)가 유지된 마지막 패킷) 패킷과 바로 이전 n개의 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크((n+1) 비트로 구성된다. 각 비트는 B의 인덱스값에 해당하는 패킷으로부터 복구 시작 위치 패킷까지의 순서로, 각 패킷이 Null이면 0, Null이 아니면 1로 표시된다.
D: 시작 패킷 특정 정보(Start Packet Specific Information)
‘시작 패킷 특정 정보’는 복구 시작 위치 패킷과 바로 이전 n개의 패킷을 포함하는 총 (n+1)개의 전송 스트림(TS) 패킷의 특정 정보를 의미한다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
E: 종료 패킷 비트마스크(End packet Bitmask)
‘종료 패킷 비트마스크'는 복구 종료 위치(연속 카운터(CC) 불연속이 검출된 마지막 패킷) 패킷을 시작으로 이후 (k)개의 전송 스트림(TS) 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크(k+1 비트로 구성되며, 각 비트는 복구 종료 위치 패킷 및 이후 k 개의 패킷까지의 순서로, 각 패킷이 Null이면 0, Null이 아니면 1로 표시)를 의미한다.
F: 종료 패킷 특정 정보(End Packet Specific Information)
‘종료 패킷 특정 정보'는 복구 종료 위치(연속 카운터(CC) 불연속이 검출된 마지막 패킷) 패킷을 시작으로 이후 (k) 개의 전송 스트림(TS) 패킷의 특정 정보를 의미한다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
G: 정상 패킷의 수
‘정상 패킷의 수'는 복구 시작 위치 다음 패킷으로부터, 복구 종료 위치 이전 패킷까지 구간 내의 정상 수신된 패킷의 수를 의미한다.
클라이언트 단말기(700)는 전술한, A, B, C, D, E, F, G값을 MLR 서버(600)로 전송하여 손실 패킷에 대한 복구를 요청한다.
MLR 서버(600)는 '프로그램 클럭 참조정보(PCR)'와 함께 수신한 '인덱스 값'에 해당하는 패킷으로부터 '연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보'와 복구 요청 시 수신된 '시작 패킷 특정정보'를 비교한다.
MLR 서버(600)는 ‘인덱스 값'에 해당하는 패킷으로부터 '연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보'와 '시작 패킷 특정정보'가 일치하면 해당 n+1개의 패킷 중 마지막 패킷을 복구 데이터에 대한 '복구 시작 위치(Start Point)'로 결정한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷으로부터 '연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보'와 '시작 패킷 특정정보'가 비일치하면, 이후 일정 구간을 검색하여 일치하는 연이은 n+1개의 전송 스트림(TS) 패킷 특정 정보를 찾아 복구 데이터에 대한 '복구 시작 위치'를 확정한다.
MLR 서버(600)는 복구 데이터에 대한 '복구 시작 위치'가 확정되면 G개의 패킷을 건너뛴 이후를 다시 검색하여 '종료 패킷 특정정보’ k+1개와 일치하는 연속된 k+1개의 전송 스트림(TS) 패킷을 검색한다.
MLR 서버(600)는 검색된 k+1개의 패킷의 첫번째 패킷을 복구데이터에 대한 '복구 종료 위치'로 확정하여, 복구데이터에 대한 '복구 시작 위치'와 복구 데이터에 대한 '복구 종료 위치' 사이 구간을 복구 패킷으로 결정한다. MLR 서버(600)는 결정된 복구 패킷을 복구를 요청한 클라이언트 단말기(700)로 전송한다.
이때 n+1과 k+1은 같을 수도 있고, 다른 값일 수도 있다.
<관련 프로토콜의 예시가 변경되는 경우의 실시예>
MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식의 스트림을 클라이언트 단말기(700)로부터 수신한다.
클라이언트 단말기(700)는 패킷 손실이 확인된 경우, A, B, C, D, E, F, G, H 값을 추출하여 MLR 서버(600)로 적절한 프로토콜을 사용하여 전송한다.
A: 프로그램 클럭 참조정보(PCR) 값
‘프로그램 클럭 참조정보(PCR) 값'은 가장 마지막 프로그램 클럭 참조정보(PCR) 값(손실 패킷이 검출된 위치에서 가장 가까운 이전 프로그램 클럭 참조정보(PCR) 값)을 의미한다.
B: 인덱스값
‘인덱스값’은 복구 시작 위치(정상적인 연속 카운터(CC)가 유지된 마지막 패킷)의 이전 (n)번째 패킷에 대한 인덱스값을 의미한다.
C: 시작 패킷 비트마스크(Start Sample Bitmask)
‘시작 패킷 비트마스크'는 복구 시작 위치(정상적인 연속 카운터(CC)가 유지된 마지막 패킷) 패킷과 바로 이전 n개의 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크((n+1) 비트로 구성된다. 각 비트는 B의 인덱스값에 해당하는 패킷으로부터 복구 시작 위치 패킷까지의 순서로, 각 패킷이 Null이면 0, Null이 아니면 1로 표시된다.
D: 시작 패킷 특정 정보(Start Sample Packet Specific Information)
‘시작 패킷 특정 정보'는 복구 시작 위치 패킷과 바로 이전 n개의 패킷을 포함하는 총 (n+1)개의 전송 스트림(TS) 패킷의 특정 정보를 의미한다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
E: 종료 패킷 비트마스크(End Sample Bitmask)
‘종료 패킷 비트마스크'는 복구 종료 위치(연속 카운터(CC) 불연속이 검출된 마지막 패킷) 패킷을 시작으로 이후 (k)개의 전송 스트림(TS) 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크(k+1 비트로 구성되며, 각 비트는 복구 종료 위치 패킷 및 이후 k 개의 패킷까지의 순서로, 각 패킷이 Null이면 0, Null이 아니면 1로 표시)를 의미한다.
F: 종료 패킷 특정 정보(End Sample Packet Specific Information)
‘종료 패킷 특정 정보'는 복구 종료 위치(연속 카운터(CC) 불연속이 검출된 마지막 패킷) 패킷을 시작으로 이후 (k) 개의 전송 스트림(TS) 패킷의 특정 정보를 의미한다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
G: 정상 패킷의 수
‘정상 패킷의 수'는 복구 시작 위치 다음 패킷으로부터, 복구 종료 위치 이전 패킷까지 구간 내의 정상 수신된 패킷의 수를 의미한다.
H: 정상 패킷 특정 정보
‘정상 패킷 특정 정보'는 '복구 시작 위치' 다음 패킷으로부터, '복구 종료 위치' 이전 패킷까지 구간 내의 정상 수신된 패킷들의 특정 정보를 의미한다.
여기서, 특정 정보는 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보를 포함할 수 있다. 특정 정보에서 Sync-byte(0x47)는 제외될 수 있다.
클라이언트 단말기(700)는 전술한, A, B, C, D, E, F, G, H값을 MLR 서버(600)로 전송하여 손실 패킷에 대한 복구를 요청한다.
MLR 서버(600)는 '프로그램 클럭 참조정보(PCR)'와 함께 수신한 '인덱스 값'에 해당하는 패킷으로부터 '연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보’와 복구 요청 시 수신된 '시작 패킷 특정정보'를 비교한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷으로부터 연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보'와 '시작 패킷 특정정보'가 일치하면 해당 n+1개의 패킷의 마지막 패킷을 복구 데이터에 대한 '복구 시작 위치(Start Point)'로 결정한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷으로부터 '연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보'와 '시작 패킷 특정정보’가 비일치하면, 이후 일정 구간을 검색하여 일치하는 연이은 n+1개의 전송 스트림(TS) 패킷 특정 정보를 찾아 복구 데이터에 대한 '복구 시작 위치'를 확정한다.
MLR 서버(600)는 복구 데이터에 대한 '복구 시작 위치'가 확정되면 G개의 패킷을 건너뛴 이후를 다시 검색하여 '종료 패킷 특정정보' k+1개와 일치하는 연속된 k+1개의 전송 스트림(TS) 패킷을 검색한다.
MLR 서버(600)는 검색된 k+1개의 패킷의 첫번째 패킷을 복구데이터에 대한 '복구 종료 위치'로 확정하여, 복구데이터에 대한 '복구 시작 위치'와 복구 데이터에 대한 '복구 종료 위치' 사이 구간을 복구 패킷으로 결정한다.
MLR 서버(600)는 결정된 복구 패킷과 H의 정보를 비교하여 동일한 패킷을 제거하고, 나머지 패킷만 복구를 요청한 클라이언트 단말기(700)로 전송한다.
여기서, n+1과 k+1은 같을 수도 있고, 다른 값일 수도 있다.
도 6은 본 실시예에 따른 MLR 서버를 개략적으로 나타낸 블럭 구성도이다.
본 실시예에 따른 MLR 서버(600)는 복구 요청 수신부(610), 복구 시작 위치 결정부(620), 복구 종료 위치 결정부(630), 복구 패킷 결정부(640)를 포함한다. MLR 서버(600)에 포함된 구성요소는 반드시 이에 한정되는 것은 아니다.
MLR 서버(600)는 (ⅰ) 각종 기기 또는 유무선 네트워크와 통신을 수행하기 위한 통신 모뎀 등의 통신 장치, (ⅱ) 각종 프로그램과 데이터를 저장하기 위한 메모리, (ⅲ) 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비하는 다양한 장치이다.
적어도 일 실시예에 따르면, 메모리는 램(Random Access Memory: RAM), 롬(Read Only Memory: ROM), 플래시 메모리, 광 디스크, 자기 디스크, 솔리드 스테이트 디스크(Solid State Disk: SSD) 등의 컴퓨터로 판독 가능한 기록/저장매체일 수 있다. 적어도 일 실시예에 따르면, 마이크로프로세서는 명세서상에 기재된 동작과 기능을 하나 이상 선택적으로 수행하도록 프로그램될 수 있다. 적어도 일 실시예에 따르면, 마이크로프로세서는 전체 또는 부분적으로 특정한 구성의 주문형반도체(Application Specific Integrated Circuit: ASIC) 등의 하드웨어로써 구현될 수 있다.
MLR 서버(600)에 포함된 각 구성요소는 장치 내부의 소프트웨어적인 모듈 또는 하드웨어적인 모듈을 연결하는 통신 경로에 연결되어 상호 간에 유기적으로 동작할 수 있다. 이러한 구성요소는 하나 이상의 통신 버스 또는 신호선을 이용하여 통신한다.
도 6에 도시된 MLR 서버(600)의 각 구성요소는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 소프트웨어적인 모듈, 하드웨어적인 모듈 또는 소프트웨어와 하드웨어의 결합으로 구현될 수 있다.
복구 요청 수신부(610)는 클라이언트 단말기(110, 700)로부터 손실 패킷에 대한 복구 요청 신호 및 손실 패킷 정보를 수신한다.
손실 패킷 정보는 A(프로그램 클럭 참조정보(PCR) 값), B(인덱스값), C(시작 패킷 비트마스크), D(시작 패킷 특정 정보), E(종료 패킷 비트마스크), F(종료 패킷 특정 정보), G(정상 패킷의 수), H(정상 패킷 특정 정보)값을 포함한다.
복구 시작 위치 결정부(620)는 손실 패킷 정보 내에 포함된 인덱스 값과 시작 패킷 특정정보에 근거하여 복구 시작 위치를 결정한다.
복구 시작 위치 결정부(620)는 인덱스 값에 해당하는 패킷에 포함된 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷의 특정 정보와 시작 패킷 특정정보를 비교한 결과에 근거하여 복구 시작 위치를 결정한다.
여기서, 인덱스값은 정상적인 연속 카운터(CC)가 유지된 마지막 패킷인 복구 시작 위치의 이전 n번째(또는 N번째) 패킷에 대한 인덱스값이다.
N은 복구 시작 위치의 패킷으로부터, 그 이전 패킷 중 NULL 패킷을 제외한 패킷의 개수가 n개가 되는 패킷까지의 패킷 수(N=n+(복구 시작 위치 패킷과 그 이전 N번째 패킷 사이의 Null패킷수))를 갖는다.
시작 패킷 특정정보는 복구 시작 위치의 패킷과 바로 이전 n개(또는 N개)의 패킷을 포함하는 총 (n+1)개(또는 (N+1)개)의 전송 스트림(TS) 패킷의 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보이다.
복구 시작 위치 결정부(620)는 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷의 특정 정보와 시작 패킷 특정정보가 일치하는 경우, 해당 n+1개(또는 N+1개)의 패킷의 마지막 패킷을 복구 시작 위치로 결정한다.
복구 시작 위치 결정부(620)는 손실 패킷 정보에 포함된 정상적인 연속 카운터(CC)가 유지된 마지막 패킷인 복구 시작 위치의 패킷과 바로 이전 N개의 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크(n+1(또는N+1) 비트로 구성된 시작 패킷 비트마스크에 근거하여 복구 시작 위치를 결정한다.
복구 시작 위치 결정부(620)는 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷의 특정 정보와 시작 패킷 특정정보가 비일치하는 경우, 이후 기 설정된 일정 구간을 검색하여 일치하는 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷 특정 정보를 검색하여 복구 시작 위치를 결정한다.
복구 종료 위치 결정부(630)는 복구 시작 위치 이후를 검색한 정보 및 손실 패킷 정보 내에 포함된 종료 패킷 특정 정보에 근거하여 복구 종료 위치를 결정한다.
복구 종료 위치 결정부(630)는 복구 시작 위치가 결정되면 그 이후 구간을 다시 검색하여 종료 패킷 특정 정보 k+1개(또는 K+1개)와 일치하는 연속된 k+1개(또는 K+1개)의 전송 스트림(TS) 패킷을 추출하고, k+1개(또는 K+1개)의 패킷 의 첫번째 패킷을 복구 종료 위치로 결정한다.
종료 패킷 특정 정보는 연속 카운터(CC) 불연속이 검출된 마지막 패킷인 복구 종료 위치의 패킷을 시작으로 이후 k개(또는 K개)의 전송 스트림(TS) 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보이다.
복구 종료 위치 결정부(630)는 복구 시작 위치가 확정되면 G개의 패킷을 건너뛴 이후를 다시 검색하여 종료 패킷 특정정보 k+1개(또는 K+1개)와 일치하는 연속된 k+1개(또는 K+1개)의 전송 스트림(TS) 패킷을 추출한다.
복구 종료 위치 결정부(630)는 손실 패킷 정보에 포함된 연속 카운터(CC) 불연속이 검출된 마지막 패킷인 복구 종료 위치의 패킷을 시작으로 이후 k개(또는 K개)의 전송 스트림(TS) 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크로 구성되는 종료 패킷 비트마스크에 근거하여 복구 종료 위치를 결정한다.
복구 패킷 결정부(640)는 복구 시작 위치와 복구 종료 위치 사이의 구간을 복구 패킷으로 결정하고 클라이언트 단말기(110, 700)로 전송하도록 한다.
복구 패킷 결정부(640)는 복구 패킷과 손실 패킷 정보 내에 포함된 정상 패킷 특정 정보를 비교하여 동일한 패킷을 제거한 나머지 패킷을 클라이언트 단말기(700)로 전송한다.
정상 패킷 특정 정보는 복구 시작 위치 다음 패킷으로부터, 복구 종료 위치의 이전 패킷까지 구간 내의 정상 수신된 패킷들의 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보이다.
도 7은 본 실시예에 따른 클라이언트 단말기를 개략적으로 나타낸 블록 구성도이다.
본 실시예에 따른 클라이언트 단말기(700)는 패킷 수신부(710), 패킷 손실 검출부(720), 복구 요청 데이터 생성부(730), 복구 요청 신호 송신부(740), 복구 데이터 수신부(750), 복구 데이터 처리부(760), 패킷 출력부(770)를 포함한다. 클라이언트 단말기(700)에 포함된 구성요소는 반드시 이에 한정되는 것은 아니다.
패킷 수신부(710)는 IP 망으로부터 패킷 정보를 수신한다.
패킷 손실 검출부(720)는 패킷 정보 내의 패킷 식별자(PID)별 패킷 연속 카운터(CC)를 검사한다. 패킷 손실 검출부(720)는 패킷 식별자(PID)별 패킷 연속 카운터(CC)를 검사하여 비연속인 패킷 연속 카운터(CC)가 존재하는 지의 여부를 검출한다.
패킷 손실 검출부(720)는 비연속인 패킷 연속 카운터(CC)가 존재하는 경우 이후 입력되는 패킷에 대하여 모든 패킷 식별자(PID) 또는 전부 또는 일부에 대하여 패킷 연속 카운터(CC)의 연속성을 검사하여 패킷 복구 시작 위치와 패킷 복구 종료 위치를 확정한다.
복구 요청 데이터 생성부(730)는 패킷 복구 시작 위치 및 패킷 복구 종료 위치를 근거로 패킷 복구 시작 위치 이전 마지막 수신된 프로그램 클럭 참조정보(PCR) 값, 프로그램 클럭 참조정보(PCR) 값으로부터 인덱스값, 패킷 복구 시작 패킷 및 그 이전 n개의 패킷에 대한 비트마스크 및 특정 정보, 패킷 복구 종료 패킷 및 그 이후 k개 패킷에 대한 비트마스크 및 특정 정보, 복구 구간 내의 유효 수신한 패킷의 개수, 복구 구간 내의 유효 수신한 패킷의 특정 정보 중 적어도 하나 이상의 정보를 포함하는 복구 요청 데이터를 생성한다.
복구 요청 신호 송신부(740)는 복구 요청 데이터를 MLR 서버(600)로 송신한다. 복구 데이터 수신부(750)는 MLR 서버(600)로부터 복구 데이터를 수신한다. 복구 데이터 처리부(760)는 복구 데이터를 이용하여 손실된 데이터를 복구한다. 패킷 출력부(770)는 복구 데이터를 출력한다.
도 8은 본 실시예에 따른 최단 시간으로 손실 패킷 구간을 검출하기 위한 PCR 기준 TS 패킷 인덱싱을 나타낸 도면이다.
도 8은 MLR 서버(600)에서 최단 시간으로 '손실 패킷 구간'을 검출하기 위해 프로그램 클럭 참조정보(PCR)를 기준으로 전송 스트림(TS) 패킷 인덱싱을 나타낸다. MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식에서 전송 스트림(TS) 패킷을 인덱싱한다.
MLR 서버(600)는 도 8에 도시된 바와 같이 전송하는 인덱스값은 프로그램 클럭 참조정보(PCR)를 기준으로 다음 프로그램 클럭 참조정보(PCR)가 수신되기 전까지의 모든 전송 스트림(TS) 패킷에 1부터 증가하는 정수 값으로 인덱스값을 지정한다.
MLR 서버(600)는 전술한 바와 같이 인덱스값을 지정하는 방식을 이용하여 데이터 검색 및 확인 시간을 최소화한다.
도 8에 도시된 바와 같이, MLR 서버(600)의 데이터 버퍼링 시 프로그램 클럭 참조정보(PCR)과 인덱스를 같이 저장하는 구조 및 프로그램 클럭 참조정보(PCR)과 인덱스를 이용하여 최단 시간에 손실 패킷을 확정한다.
도 9은 본 실시예에 따른 MLR 클라이언트에서의 복구 요청 신호 송신과 이를 수신한 MLR 서버에서 패킷 손실 구간을 확정 및 복구 데이터 송신하는 방법을 나타낸 도면이다.
MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식에서 패킷 손실 구간을 확정한 클라이언트 단말기(110, 700)로부터 손실 패킷 복구 요청을 수신하고, 손실 패킷 확정한 후, 복구 데이터를 클라이언트 단말기(110, 700)로 전송한다.
MLR 서버(600)는 클라이언트 단말기(110, 700)로부터 손실 패킷에 대한 복구 요청을 수신하면, [표 1]과 같은 프로토콜을 이용하여 A, B, C, D의 값을 수신한다.
MLR 서버(600)는 A, B, C, D값을 이용하여, 도 4에 설명된 방법으로 손실 패킷 구간인 '복구 시작 위치', '복구 종료 위치'를 확정한다.
MLR 서버(600)는 클라이언트 단말기(110, 700)로부터 수신된 프로그램 클럭 참조정보(PCR)(A값)를 이용해 버퍼 상의 동일 위치로 이동한다.
MLR 서버(600)는 버퍼 상의 동일 위치로부터, 프로그램 클럭 참조정보(PCR)(A값)과 같이 수신한 인덱스 값(B값)에 해당하는 패킷으로부터, n+1개(또는 N+1개)의 전송 스트림(TS) 패킷 헤더 단위로 시작 패킷 헤더(C값)와 비교한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷을 포함한 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷 헤더와 시작 패킷 헤더(C값)가 일치하면 해당 n+1개(또는 N+1개)의 마지막 패킷을 복구 시작 위치로 결정한다.
MLR 서버(600)는 '인덱스 값'에 해당하는 패킷을 포함한 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷 헤더와 시작 패킷 헤더(C값)가 비일치하면, 이후 일정 구간을 검색하여 일치하는 연이은 n+1개(또는 N+1개)의 전송 스트림(TS) 패킷 헤더를 찾아 복구 시작 위치를 확정한다.
MLR 서버(600)는 복구 시작 위치가 확정되면 그 이후를 다시 검색하여 종료 패킷 헤더 특정 정보 k+1개(또는 K+1개) (D값)와 일치하는 연속된 k+1개(또는 K+1개)의 전송 스트림(TS) 패킷을 검색한다.
MLR 서버(600)는 검색된 k+1개(또는 K+1개)의 패킷의 첫번째 패킷을 복구 종료 위치로 확정한 후 복구 시작 위치와 복구 종료 위치 사이 구간을 복구 패킷으로 결정한다.
MLR 서버(600)는 [표 2]와 같은 프로토콜을 이용하여 복구 패킷을 클라이언트 단말기(110, 700)로 전송한다.
Figure 112017130822716-pat00002
다시 말해, MLR 서버(600)는 데이터 버퍼링 방법으로, 전송 스트림(TS) 패킷 단위로 버퍼링한다.
MLR 서버(600)는 버퍼링 시 각 프로그램 클럭 참조정보(PCR) 값에 맵핑되는 해당 프로그램 클럭 참조정보(PCR)를 포함하는 전송 스트림(TS) 패킷의 위치 기록 저장한다.
MLR 서버(600)는 각 프로그램 클럭 참조정보(PCR)를 포함한 패킷을 기준으로 다음 프로그램 클럭 참조정보(PCR)를 포함한 패킷이 오기 전까지의 각 전송 스트림(TS) 패킷을 인덱싱한다.(예컨대, 1,2,…)
MLR 서버(600)는 클라이언트 단말기(110)로부터 수신된 A, B, C, D값을 이용하여 복구 데이터를 확인한다. MLR 서버(600)는 [표 2]의 프로토콜을 이용하여 복구 데이터를 클라이언트 단말기(110, 700)로 전송한다.
도 9에 도시된 바와 같이, MLR 서버(600)의 데이터 버퍼링 시 프로그램 클럭 참조정보(PCR)과 인덱스를 같이 저장하는 구조 및 프로그램 클럭 참조정보(PCR)과 인덱스를 이용하여 최단 시간에 손실 패킷을 확정한다.
도 9에 도시된 바와 같이, MLR 서버(600)에서 손실 패킷 구간 확정을 위한 연이어 n+1개(또는 N+1개) 및 k+1개(또는 K+1개)의 전송 스트림(TS) 패킷 헤더를 이용한다. MLR 서버(600)에서 손실 패킷을 확정하여 복구 패킷으로 클라이언트 단말기(110, 700)로 재전송하는 프로토콜의 예시는 [표 2]와 같다.
도 10은 본 실시예에 따른 클라이언트 단말기에서 복구 패킷 수신 후 복구하는 방법을 나타낸 도면이다.
클라이언트 단말기(110, 700)는 예컨대, [표 2]의 프로토콜을 이용하여 MLR 서버(600)로부터 복구 패킷을 수신한다. 클라이언트 단말기(110, 700)는 복구 패킷을 복구 패킷 버퍼(Packet buffer 2)에 저장한다. 클라이언트 단말기(110, 700)는 복호화를 위해 출력 버퍼(Out-Buffer)에서 패킷이 출력될 때, 손실 버퍼 유무를 표시하는 플래그를 확인한다.
클라이언트 단말기(110, 700)는 플래그가 설정(Set)되어 있는 패킷이 출력되면, 해당 이벤트 ID를 확인한다. 이후 클라이언트 단말기(110, 700)는 출력 패킷을 복구 패킷 버퍼(packet buffer 2)에서 해당 이벤트 ID에 해당하는 복구 패킷을 출력 버퍼(out-buffer)를 통해 출력한다.
클라이언트 단말기(110, 700)는 2 개의 패킷 버퍼를 사용한다. 클라이언트 단말기(110)는 2개의 버퍼 중 1개의 버퍼를 일반 수신 패킷을 계속적으로 버퍼링하여 순차적으로 출력하는 용도로 사용한다. 클라이언트 단말기(110, 700)는 2개의 버퍼 중 나머지 1개를 복구 패킷을 수신하여 버퍼링하면서 해당 복구 이벤트 패킷 출력 시 순차적으로 해당 이벤트에 대한 패킷을 출력하는 용도로 사용한다.
클라이언트 단말기(110, 700)는 2 개의 버퍼에 패킷을 저장할 때, 복구 이벤트에 대한 인덱스를 각 패킷에 기록하여 저장함으로써, 일반 수신 패킷에서 복구 이벤트 발생 여부를 확인할 수 있다. 클라이언트 단말기(110, 700)는 복구 이벤트가 발생한 패킷이 출력되면, 이후부터, 복구 패킷 버퍼로부터 해당 이벤트에 해당하는 복구 패킷을 출력한다.
도 10에 도시된 바와 같이, 클라이언트 단말기(110)에서 복구 패킷 수신 후 복구하기 위한 버퍼링 구조 및 버퍼링 시 복구 이벤트 인덱스 값을 같이 기록하여 버퍼링한다.
도 11은 본 실시예에 따른 클라이언트 단말기 동작을 설명하기 위한 순서도이다.
클라이언트 단말기(110, 700)는 사용자 데이터그램 프로토콜(UDP) 방식의 스트림을 수신한다(S1110).
클라이언트 단말기(110, 700)는 사용자 데이터그램 프로토콜(UDP) 방식의 스트림에서 패킷 손실 유무를 확인하기 위해 MPEG-2 전송 스트림(TS)의 패킷 헤더를 확인한다(S1120).
클라이언트 단말기(110)는 패킷 손실 유무를 확인하기 위해 MPEG-2 전송 스트림(TS)의 패킷 헤더에 기재되어 있는 연속 카운터((CC: Continuity Count)(이후 연속 카운터(CC))를 확인하여 패킷 간의 연결성이 유지되는지의 여부를 확인한다(S1130).
단계 S1130의 확인 결과, 패킷 간의 연결성이 유지되는 경우, 클라이언트 단말기(110)는 일반 패킷을 일반 출력으로 버퍼링한다(S1140).
단계 S1130의 확인 결과, 패킷 간의 연결성이 유지되지 않는 경우, 클라이언트 단말기(110, 700)는 A, B, C, D, E, F, G, H값을 추출한다(S1150). 단계 S1150에서, 클라이언트 단말기(110, 700)는 F, G, H값을 선택적(Optional)으로 추출한다.
클라이언트 단말기(110, 700)는 MLR 서버(600)로 손실 패킷에 대한 복구 요청을 전송하면서 A, B, C, D, E, F, G, H값을 함께 전송한다(S1152). 단계 S1152에서, 클라이언트 단말기(110)는 F, G, H값을 선택적으로 전송한다.
클라이언트 단말기(110, 700)는 MLR 서버(600)로부터 복구 패킷을 수신한다(S1154). 클라이언트 단말기(110, 700)는 MLR 서버(600)로 수신된 복구 패킷을 버퍼링한다(S1156).
클라이언트 단말기(110, 700)는 버퍼링된 일반 패킷 또는 버퍼링된 복구 패킷을 출력한다(S1160). 클라이언트 단말기(110, 700)는 출력된 패킷을 복호화한다(S1170). 클라이언트 단말기(110, 700)는 복호화된 패킷을 출력한다(S1180).
도 11에서는 단계 S1110 내지 단계 S1180을 순차적으로 실행하는 것으로 기재하고 있으나, 반드시 이에 한정되는 것은 아니다. 다시 말해, 도 11에 기재된 단계를 변경하여 실행하거나 하나 이상의 단계를 병렬적으로 실행하는 것으로 적용 가능할 것이므로, 도 11은 시계열적인 순서로 한정되는 것은 아니다.
도 12는 본 실시예에 따른 MLR 서버의 데이터 저장 동작을 설명하기 위한 순서도이다.
MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식의 스트림을 수신한다(S1210). MLR 서버(600)는 사용자 데이터그램 프로토콜(UDP) 방식의 스트림에서 전송 스트림(TS)을 분석한다(S1220).
MLR 서버(600)는 전송 스트림(TS)이 프로그램 클럭 참조정보(PCR) 값을 갖는 패킷인지의 여부를 확인한다(S1230).
단계 S1230의 확인 결과, 전송 스트림(TS)이 프로그램 클럭 참조정보(PCR) 값을 갖지 않는 패킷인 경우, MLR 서버(600)는 전송 스트림(TS)에 대한 인덱스를 생성한 후 저장한다(S1240). MLR 서버(600)는 인덱스를 생성한 패킷을 버퍼링한다(S1250).
단계 S1230의 확인 결과, 전송 스트림(TS)이 프로그램 클럭 참조정보(PCR) 값을 갖는 패킷인 경우, MLR 서버(600)는 프로그램 클럭 참조정보(PCR) 값의 패킷 저장 위치 생성하고 저장한다(S1260).
도 12에서는 단계 S1210 내지 단계 S1260을 순차적으로 실행하는 것으로 기재하고 있으나, 반드시 이에 한정되는 것은 아니다. 다시 말해, 도 12에 기재된 단계를 변경하여 실행하거나 하나 이상의 단계를 병렬적으로 실행하는 것으로 적용 가능할 것이므로, 도 12은 시계열적인 순서로 한정되는 것은 아니다.
도 13는 본 실시예에 따른 MLR 서버의 데이터 복구 동작을 설명하기 위한 순서도이다.
MLR 서버(600)는 클라이언트 단말기(110, 700)로부터 손실 패킷에 대한 복구 요청을 수신한다(S1310). 단계 S1310에서, MLR 서버(600)는 클라이언트 단말기(110)로부터 A(프로그램 클럭 참조정보(PCR) 값), B(인덱스값), C(시작 패킷 비트마스크), D(시작 패킷 특정 정보), E(종료 패킷 비트마스크), F(종료 패킷 특정 정보), G(정상 패킷의 수), H(정상 패킷 특정 정보)값을 함께 수신한다. 클라이언트 단말기(110)는 F(종료 패킷 특정 정보), G(정상 패킷의 수), H(정상 패킷 특정 정보)값을 선택적으로 MLR 서버(600)로 전송한다.
MLR 서버(600)는 프로그램 클럭 참조정보(PCR) 값을 이용한 프로그램 클럭 참조정보(PCR) 패킷의 저장 위치를 확정한다(S1320). MLR 서버(600)는 인덱스 값을 이용한 시작 패킷의 저장 위치를 확정한다(S1330).
MLR 서버(600)는 시작 패킷을 확인하고 복구 시작 위치를 확정한다(S1340). MLR 서버(600)는 종료 패킷을 확인하고 복구 종료 위치를 확정한다(S1350). MLR 서버(600)는 복구 패킷을 확정하고 클라이언트 단말기(110, 700)로 전송한다(S1360).
도 13에서는 단계 S1310 내지 단계 S1360을 순차적으로 실행하는 것으로 기재하고 있으나, 반드시 이에 한정되는 것은 아니다. 다시 말해, 도 12에 기재된 단계를 변경하여 실행하거나 하나 이상의 단계를 병렬적으로 실행하는 것으로 적용 가능할 것이므로, 도 13는 시계열적인 순서로 한정되는 것은 아니다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
110: 클라이언트 단말기
600: MLR 서버
610: 복구 요청 수신부
620: 복구 시작 위치 결정부
630: 복구 종료 위치 결정부
640: 복구 패킷 결정부
700 : 클라이언트 단말기

Claims (21)

  1. 클라이언트 단말기로부터 손실 패킷에 대한 복구 요청 신호 및 손실 패킷 정보를 수신하는 복구 요청 수신부;
    상기 손실 패킷 정보 내에 포함된 인덱스 값과 시작 패킷 특정정보에 근거하여 복구 시작 위치를 결정하는 복구 시작 위치 결정부;
    상기 복구 시작 위치 이후를 재검색한 정보 및 상기 손실 패킷 정보 내에 포함된 종료 패킷 특정 정보에 근거하여 복구 종료 위치를 결정하는 복구 종료 위치 결정부; 및
    상기 복구 시작 위치와 상기 복구 종료 위치 사이의 구간을 복구 패킷으로 결정하고 상기 클라이언트 단말기로 전송하도록 하는 복구 패킷 결정부
    를 포함하되,
    상기 복구 시작 위치 결정부는,
    상기 인덱스 값에 해당하는 패킷에 포함된 연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보와 상기 시작 패킷 특정정보를 비교한 결과에 근거하여 상기 복구 시작 위치를 결정하고,
    상기 인덱스값은,
    정상적인 연속 카운터(CC)가 유지된 마지막 패킷인 상기 복구 시작 위치의 이전 (n)번째 패킷에 대한 인덱스값인 것을 특징으로 하는 패킷 손실 검출 장치.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 복구 시작 위치의 패킷으로부터, 그 이전 패킷 중 NULL 패킷을 제외한 패킷의 개수가 n개가 되는 패킷까지의 패킷 수 N (N=n+(복구 시작 위치 패킷과 그 이전 N번째 패킷 사이의 Null패킷수))를 갖는 것을 특징으로 하는 패킷 손실 검출 장치.
  5. 제 1 항에 있어서,
    상기 시작 패킷 특정정보는,
    상기 복구 시작 위치의 패킷과 바로 이전 n개의 패킷을 포함하는 총 (n+1)개의 전송 스트림(TS) 패킷의 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보인 것을 특징으로 하는 패킷 손실 검출 장치.
  6. 제 1 항에 있어서,
    상기 복구 시작 위치 결정부는,
    상기 연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보와 상기 시작 패킷 특정정보가 일치하는 경우, 해당 n+1개의 패킷의 마지막 패킷을 상기 복구 시작 위치로 결정하는 것을 특징으로 하는 패킷 손실 검출 장치.
  7. 제 6 항에 있어서,
    상기 복구 시작 위치 결정부는,
    상기 손실 패킷 정보에 포함된 정상적인 연속 카운터(CC)가 유지된 마지막 패킷인 상기 복구 시작 위치의 패킷과 바로 이전 n개의 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크((n+1) 비트)로 구성된 시작 패킷 비트마스크에 근거하여 상기 복구 시작 위치를 결정하는 것을 특징으로 하는 패킷 손실 검출 장치.
  8. 제 1 항에 있어서,
    상기 복구 시작 위치 결정부는
    상기 연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보와 상기 시작 패킷 특정정보가 비일치하는 경우, 이후 기 설정된 일정 구간을 검색하여 일치하는 연이은 n+1개의 전송 스트림(TS) 패킷 특정 정보를 검색하여 상기 복구 시작 위치를 결정하는 것을 특징으로 하는 패킷 손실 검출 장치.
  9. 제 1 항에 있어서,
    상기 복구 종료 위치 결정부는,
    상기 복구 시작 위치가 결정되면 그 이후 구간을 다시 검색하여 상기 종료 패킷 특정 정보 k+1개와 일치하는 연속된 k+1개의 전송 스트림(TS) 패킷을 추출하고, 상기 k+1개의 패킷의 첫번째 패킷을 상기 복구 종료 위치로 결정하는 것을 특징으로 하는 패킷 손실 검출 장치.
  10. 제 9 항에 있어서,
    상기 종료 패킷 특정 정보는
    연속 카운터(CC) 불연속이 검출된 마지막 패킷인 상기 복구 종료 위치의 패킷과 그 이후 (k) 개의 전송 스트림(TS) 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보인 것을 특징으로 하는 패킷 손실 검출 장치.
  11. 제 9 항에 있어서,
    상기 복구 종료 위치 결정부는,
    상기 복구 시작 위치가 확정되면 G개의 패킷을 건너뛴 이후를 다시 검색하여 상기 종료 패킷 특정정보 k+1개와 일치하는 연속된 k+1개의 전송 스트림(TS) 패킷을 추출하는 것을 특징으로 하는 패킷 손실 검출 장치.
  12. 제 9 항에 있어서,
    상기 복구 종료 위치 결정부는,
    상기 손실 패킷 정보에 포함된 연속 카운터(CC) 불연속이 검출된 마지막 패킷인 상기 복구 종료 위치의 패킷을 시작으로 이후 (k)개의 전송 스트림(TS) 패킷 각각이 NULL 패킷인지 아닌지를 표시하는 비트마스크로 구성되는 종료 패킷 비트마스크(k+1비트)에 근거하여 상기 복구 종료 위치를 결정하는 것을 특징으로 하는 패킷 손실 검출 장치.
  13. 제 9 항에 있어서,
    상기 복구 종료 위치의 패킷으로부터, 그 이후 패킷 중 NULL 패킷을 제외한 패킷의 개수가 k개가 되는 패킷까지의 패킷 수 K (K=k+(복구 종료 위치 패킷과 그 이후 K번째 패킷 사이의 Null패킷수))를 갖는 것을 특징으로 하는 패킷 손실 검출 장치.
  14. 제 1 항에 있어서,
    상기 복구 패킷 결정부는
    상기 복구 패킷과 상기 손실 패킷 정보 내에 포함된 정상 패킷 특정 정보를 비교하여 동일한 패킷을 제거한 나머지 패킷을 상기 클라이언트 단말기로 전송하는 것을 특징으로 하는 패킷 손실 검출 장치.
  15. 제 14 항에 있어서,
    상기 정상 패킷 특정 정보는,
    상기 복구 시작 위치 다음 패킷으로부터, 상기 복구 종료 위치의 이전 패킷까지 구간 내의 정상 수신된 패킷들의 각 패킷의 헤더 정보, 특정 위치들의 바이트 정보들의 배열, 각 전송 스트림(TS) 패킷의 사용자 데이터그램 프로토콜(UDP) 전송 단위 내에서의 로컬 인덱스 정보인 것을 특징으로 하는 패킷 손실 검출 장치.
  16. 클라이언트 단말기로부터 손실 패킷에 대한 복구 요청 신호 및 손실 패킷 정보를 수신하는 패킷 수신 과정;
    상기 손실 패킷 정보 내에 포함된 인덱스 값과 시작 패킷 특정정보에 근거하여 복구 시작 위치를 결정하는 복구 시작 위치 결정 과정;
    상기 복구 시작 위치 이후를 검색한 정보 및 상기 손실 패킷 정보 내에 포함된 종료 패킷 특정 정보에 근거하여 복구 종료 위치를 결정하는 복구 종료 위치 결정 과정; 및
    상기 복구 시작 위치와 상기 복구 종료 위치 사이의 구간을 복구 패킷으로 결정하고 상기 클라이언트 단말기로 전송하도록 하는 복구 패킷 결정 과정을 포함하되,
    상기 복구 시작 위치 결정 과정은,
    상기 인덱스 값에 해당하는 패킷에 포함된 연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보와 상기 시작 패킷 특정정보를 비교한 결과에 근거하여 상기 복구 시작 위치를 결정하고,
    상기 연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보와 상기 시작 패킷 특정정보가 일치하는 경우, 해당 n+1개의 패킷의 마지막 패킷을 상기 복구 시작 위치로 결정하는 것을 특징으로 하는 패킷 손실 검출 방법.
  17. 삭제
  18. 삭제
  19. 제 16 항에 있어서,
    상기 복구 시작 위치 결정 과정은,
    상기 연이은 n+1개의 전송 스트림(TS) 패킷의 특정 정보와 상기 시작 패킷 특정정보가 비일치하는 경우, 이후 기 설정된 일정 구간을 검색하여 일치하는 연이은 n+1개의 전송 스트림(TS) 패킷 특정 정보를 검색하여 상기 복구 시작 위치를 결정하는 것을 특징으로 하는 패킷 손실 검출 방법.
  20. 제 16 항에 있어서,
    상기 복구 종료 위치 결정 과정은,
    상기 복구 시작 위치가 결정되면 그 이후 구간을 다시 검색하여 상기 종료 패킷 특정 정보 k+1개와 일치하는 연속된 k+1개의 전송 스트림(TS) 패킷을 추출하고, 상기 k+1개의 패킷의 첫번째 패킷을 상기 복구 종료 위치로 결정하는 것을 특징으로 하는 패킷 손실 검출 방법.
  21. IP 망으로부터 패킷 정보를 수신하는 패킷 수신부;
    상기 패킷 정보 내의 패킷 식별자(PID)별 패킷 연속 카운터(CC)를 검사하여 비연속인 패킷 연속 카운터(CC)를 검출하는 경우, 이후 입력되는 패킷에 대하여 모든 패킷 식별자(PID) 또는 전부 또는 일부에 대하여 패킷 연속 카운터(CC)의 연속성을 검사하여 패킷 복구 시작 위치와 패킷 복구 종료 위치를 확정하는 패킷 손실 검출부;
    상기 패킷 복구 시작 위치 및 상기 패킷 복구 종료 위치를 근거로 상기 패킷 복구 시작 위치 이전 마지막 수신된 프로그램 클럭 참조정보(PCR) 값, 프로그램 클럭 참조정보(PCR) 값으로부터 인덱스값, 패킷 복구 시작 패킷 및 그 이전 n개의 패킷에 대한 비트마스크 및 특정 정보, 패킷 복구 종료 패킷 및 그 이후 k개 패킷에 대한 비트마스크 및 특정 정보, 복구 구간 내의 유효 수신한 패킷의 개수, 복구 구간 내의 유효 수신한 패킷의 특정 정보 중 적어도 하나 이상의 정보를 포함하는 복구 요청 데이터를 생성하는 복구 요청 데이터 생성부;
    상기 복구 요청 데이터를 MLR 서버로 송신하는 복구 요청 신호 송신부;
    상기 MLR 서버로부터 복구 데이터를 수신하는 복구 데이터 수신부;
    상기 복구 데이터를 이용하여 손실된 데이터를 복구하는 복구 데이터 처리부; 및
    상기 복구 데이터를 출력하는 패킷 출력부;
    를 포함하는 것을 특징으로 하는 클라이언트 단말 장치.
KR1020170183315A 2017-12-29 2017-12-29 Ip 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치 KR102035912B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170183315A KR102035912B1 (ko) 2017-12-29 2017-12-29 Ip 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170183315A KR102035912B1 (ko) 2017-12-29 2017-12-29 Ip 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190081048A KR20190081048A (ko) 2019-07-09
KR102035912B1 true KR102035912B1 (ko) 2019-10-24

Family

ID=67261065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170183315A KR102035912B1 (ko) 2017-12-29 2017-12-29 Ip 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102035912B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102486889B1 (ko) 2021-10-18 2023-01-10 (주)다인시스 이종 통신망에서 타임라인 기반의 수집데이터 전송 시스템

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110730053A (zh) * 2019-09-09 2020-01-24 晶晨半导体(深圳)有限公司 一种基于ts格式和udp传输方式的网络丢包重传方法
KR20210156041A (ko) * 2020-06-17 2021-12-24 에스케이텔레콤 주식회사 캐시 서버를 이용한 패킷손실 복구장치 및 방법
KR102589864B1 (ko) * 2023-02-16 2023-10-16 (주)유유코리아 음향 동기화 기술이 적용된 디지털 음향의 무선 WiFi 전송 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4226481B2 (ja) * 2002-04-19 2009-02-18 トムソン ライセンシング 前方消失訂正を使用する同期損失回復デジタル通信システム
KR101008976B1 (ko) * 2003-10-20 2011-01-17 삼성전자주식회사 멀티미디어 스트리밍 시스템에서의 에러 검출 방법
KR20170009105A (ko) * 2015-07-15 2017-01-25 에스케이텔레콤 주식회사 스트리밍 컨텐츠의 패킷 손실을 보상하여 저장하는 방법 및 이를 위한 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102486889B1 (ko) 2021-10-18 2023-01-10 (주)다인시스 이종 통신망에서 타임라인 기반의 수집데이터 전송 시스템

Also Published As

Publication number Publication date
KR20190081048A (ko) 2019-07-09

Similar Documents

Publication Publication Date Title
KR102035912B1 (ko) Ip 네트워크를 이용하여 스트림 패킷 전송 시 패킷 손실 검출 및 복구 방법 및 장치
US9246630B2 (en) Method, device, and system for forward error correction
US8532171B1 (en) Multiple stream adaptive bit rate system
TWI519147B (zh) 提供與傳送複合濃縮串流之方法以及系統
US10560866B2 (en) Method of handling packet losses in transmissions based on DASH standard and FLUTE protocol
KR101670723B1 (ko) 비디오 및 오디오 통신 시스템에서 가변 길이의 전송 패킷 지원 방법 및 장치
US8081635B2 (en) Reconstruction of errored media streams in a communication system
US9319446B2 (en) System and method for transport stream sync byte detection with transport stream having multiple emulated sync bytes
CN110430480B (zh) 一种流媒体云存储同步的系统和方法
US7839925B2 (en) Apparatus for receiving packet stream
US9648391B2 (en) Multimedia content broadcast procedure
KR102392888B1 (ko) 패킷 손실 복구를 개선하기 위한 장치 및 방법
CN111866526B (zh) 一种直播业务处理方法和装置
US8718131B2 (en) Method and apparatus for generating and processing packet in MPEG-2 transport stream
KR101879194B1 (ko) 패킷의 손실을 복구하기 위한 장치 및 그 방법
JP2003324733A (ja) 動画像送受信システムおよび動画像送受信方法
US7894486B2 (en) Method for depacketization of multimedia packet data
US20090265478A1 (en) Method and apparatus for data stream analysis and decoding apparatus
KR101401746B1 (ko) 멀티미디어 데이터 다중화 장치 및 방법
US20230319368A1 (en) Packet loss recovery device and method using cache server
TWI574558B (zh) 播放複合濃縮串流之方法以及播放器
JP5433245B2 (ja) データ制御装置、データ制御システム、制御方法及びプログラム
US7983251B2 (en) Broadcasting service transmission/reception method and apparatus for providing fast access to broadcasting service

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