KR101951659B1 - 방송 및 통신 시스템에서 수신 패킷들의 복호 방법 및 장치 - Google Patents

방송 및 통신 시스템에서 수신 패킷들의 복호 방법 및 장치 Download PDF

Info

Publication number
KR101951659B1
KR101951659B1 KR1020120112070A KR20120112070A KR101951659B1 KR 101951659 B1 KR101951659 B1 KR 101951659B1 KR 1020120112070 A KR1020120112070 A KR 1020120112070A KR 20120112070 A KR20120112070 A KR 20120112070A KR 101951659 B1 KR101951659 B1 KR 101951659B1
Authority
KR
South Korea
Prior art keywords
source
symbols
packet
symbol
packets
Prior art date
Application number
KR1020120112070A
Other languages
English (en)
Other versions
KR20140045828A (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 KR1020120112070A priority Critical patent/KR101951659B1/ko
Priority to PCT/KR2013/008863 priority patent/WO2014058182A1/en
Priority to EP18197812.3A priority patent/EP3493442B1/en
Priority to EP13844943.4A priority patent/EP2907238A4/en
Priority to US14/046,209 priority patent/US9705640B2/en
Publication of KR20140045828A publication Critical patent/KR20140045828A/ko
Application granted granted Critical
Publication of KR101951659B1 publication Critical patent/KR101951659B1/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
    • 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
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • H03M13/2707Simple row-column interleaver, i.e. pure block interleaving
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6356Error control coding in combination with rate matching by repetition or insertion of dummy data, i.e. rate reduction
    • 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
    • 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/0045Arrangements at the receiver end
    • 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/0071Use of interleaving
    • 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/0075Transmission of coding parameters to receiver
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0093Point-to-multipoint

Abstract

방송 및 통신 시스템에서 수신 패킷들을 복호하기 위한 방법 및 장치를 개시한다. 본 발명의 방법은, 방송 및 통신 시스템에서 수신된 패킷들을 복호하기 위한 방법에 있어서, 송신기로부터 수신된 소스 패킷들을 주어진 심볼 크기의 폭을 가지는 2차원 배열 상에 배치함으로서 소스 블록을 재구성하고, 재구성된 소스 블록 내에서 성공적으로 수신되지 못한 적어도 하나의 소스 패킷에 대응하는 적어도 하나의 소실된 세분화된 부호화 심볼 식별자(E-SESI)를 결정하는 과정과, 상기 적어도 하나의 E-SESI로부터, 상기 소스 블록 중 순방향에러정정(FEC) 복호를 위한 복수의 심볼 단위들 각각에 대해, 소실된 심볼 단위들의 개수들을 결정하는 과정과, 상기 소실된 심볼 단위들의 개수들에 따라 상기 복수의 심볼 단위들 중 FEC 복호를 위한 하나의 심볼 단위를 선택하는 과정과, 상기 선택된 심볼 단위에 따라 상기 재구성된 소스 블록에 대한 FEC 복호화를 수행하는 과정을 포함한다.

Description

방송 및 통신 시스템에서 수신 패킷들의 복호 방법 및 장치 {METHOD AND APPARATUS FOR DECODING RECEIVED PACKETS IN BROADCASTING AND COMMUNICATION SYSTEMS}
본 발명은 방송 혹은 통신 시스템에 관한 것으로서, 특히, 채널 또는 네트워크 상에서 데이터의 손실(loss)이 발생할 때 데이터를 효율적으로 복원하기 위한 방법 및 장치에 대한 것이다.
최근의 방송 및 통신 환경은 다양한 멀티미디어 컨텐츠(Contents) 증가뿐만 아니라 고품질(High Definition: HD) 컨텐츠 또는 초고품질(Ultra High Definition: UHD) 컨텐츠들과 같은 고용량 컨텐츠들의 증가로 네트워크 상에서 데이터 혼잡(Data Congestion)은 점점 더 심화되고 있다. 이러한 상황으로 인하여 전송기(Sender, 예컨대 Host A)가 보낸 컨텐츠들이 수신기(Receiver, 예컨대 Host B)에게 정상적으로 전달되지 않고, 컨텐츠의 일부가 경로(Route)상에서 손실되는 상황이 발생한다. 많은 경우에 데이터는 패킷 단위로 전송되기 때문에 데이터 손실은 패킷 단위로 발생하게 된다. 이와 같은 네트워크 상의 데이터 손실로 인해 수신기는 데이터 패킷을 수신할 수 없게 됨으로써, 상기 손실된 패킷 내의 데이터를 알 수 없다. 따라서 오디오(Audio)의 품질 저하, 비디오(Video)의 화질 열화나 화면 깨짐, 자막 누락, 파일의 손실 등과 같은 다양한 형태의 사용자의 불편이 초래될 수 있다. 이와 같이 이유로 네트워크 상에서 발생된 데이터 손실을 복구하기 위한 기술이 필요하다.
네트워크 상에서 데이터가 손실됐을 때 수신 단에서 손실된 데이터를 복구할 수 있도록 지원하는 기술 중의 하나는, 소스 패킷이라 불리는 다양한 길이를 가질 수 있는 일정 개수의 데이터 패킷들로 소스 블록을 구성하고, 순방향에러정정(Forward Error Correction: FEC) 부호화를 통해 패리티(Parity) 데이터 또는 복구 패킷(Repair packet)과 같은 복구 정보를 소스 블록에 부가하는 것이다. 수신기에서 손실된 데이터가 있을 경우, 상기 복구 정보를 이용하여 복호(decoding)를 수행할 수 있다.
이때 상기 복구 정보가 덧붙은 모든 각각의 소스 패킷의 길이가 원하는 값이 아닌 소스 패킷이 0 값으로 패딩(zero padding)될 수 있다. 즉 기존의 소스 블록 구성은 패킷의 길이에 따라 상당한 양의 제로 패딩을 포함할 가능성이 높다. 제로 패딩된 데이터는 송신기에서 전송하지 않는 무의미한 값이지만, 소스 블록을 구성하는 심볼의 개수의 증가에 영향을 주고, 패리티 데이터를 만드는데 관여함으로써, 실제로는 불필요한 정보에 대한 패리티를 생성하여 전송하는 것과 동일한 효과를 유발한다.
이러한 문제점을 줄이기 위해 소스 패킷의 원하는 길이를 줄임으로써 상대적으로 제로 패딩의 양이 줄어들게 할 수 있다. 하지만, 이 경우 소스 블록을 구성하는 심볼들의 개수가 크게 증가하게 되어 매우 긴 길이의 FEC 부호가 필요하게 된다. 시스템에서 사용할 수 있는 FEC 부호의 길이는 한정적일 뿐만 아니라 부호의 길이가 길어질수록 최대로그우도(maximum log-likelihood: ML) 복호를 진행할 때 복잡도가 크게 증가하게 되므로 복호 대기 시간(latency)이 길어질 우려가 있다.
따라서, 제로 패딩 데이터를 줄여 부호화 심볼 개수를 줄일 수 있으면서 오류정정 능력을 개선할 수 있는 보다 효율적인 소스 블록 구성 방법과 수신기에서 수신된 소스 패킷 및 복구 패킷을 통해 효율적으로 복원하는 기술이 필요하다.
본 발명은 방송 혹은 통신 시스템에서 패킷 데이터를 송수신하기 위한 방법 및 장치를 제공한다.
본 발명은 방송 혹은 통신 시스템에서 데이터 손실의 발생시 데이터를 효율적으로 복원하기 위한 방법 및 장치를 제공한다.
본 발명은 방송 혹은 통신 시스템에서 수신된 소스 패킷들 및 복구 패킷들을 통해 소실된 데이터 패킷을 효율적으로 복원할 수 있는 방법 및 장치를 제공한다.
본 발명의 바람직한 실시예에 따른 방법은; 방송 및 통신 시스템에서 수신 패킷들을 복호하기 위한 방법에 있어서, 송신기로부터 수신된 소스 패킷들을 주어진 심볼 크기의 폭을 가지는 2차원 배열 상에 배치함으로서 소스 블록을 재구성하고, 재구성된 소스 블록 내에서 성공적으로 수신되지 못한 적어도 하나의 소스 패킷에 대응하는 적어도 하나의 소실된 세분화된 부호화 심볼 식별자(E-SESI)를 결정하는 과정과, 상기 적어도 하나의 E-SESI로부터, 상기 소스 블록 중 순방향에러정정(FEC) 복호를 위한 복수의 심볼 단위들 각각에 대해, 소실된 심볼 단위들의 개수들을 결정하는 과정과, 상기 소실된 심볼 단위들의 개수들에 따라 상기 복수의 심볼 단위들 중 FEC 복호를 위한 하나의 심볼 단위를 선택하는 과정과, 상기 선택된 심볼 단위에 따라 상기 재구성된 소스 블록에 대한 FEC 복호화를 수행하는 과정을 포함한다.
본 발명의 일 실시예에 따른 장치는; 방송 및 통신 시스템에서 방송 및 통신 시스템에서 수신된 패킷들을 복호하기 위한 장치에 있어서, 송신기로부터 수신된 소스 패킷들을 주어진 심볼 크기의 폭을 가지는 2차원 배열 상에 배치함으로서 소스 블록을 재구성하고, 재구성된 소스 블록 내에서 성공적으로 수신되지 못한 적어도 하나의 소스 패킷에 대응하는 적어도 하나의 소실된 세분화된 부호화 심볼 식별자(E-SESI)를 결정하고, 상기 적어도 하나의 E-SESI로부터, 상기 소스 블록 중 순방향에러정정(FEC) 복호를 위한 복수의 심볼 단위들 각각에 대해, 소실된 심볼 단위들의 개수들을 결정하며, 상기 소실된 심볼 단위들의 개수들에 따라 상기 복수의 심볼 단위들 중 FEC 복호를 위한 하나의 심볼 단위를 선택하는 소스 블록 해석기와, 상기 선택된 심볼 단위에 따라 상기 재구성된 소스 블록에 대한 FEC 복호화를 수행하는 복호화기를 포함한다.
도 1a 및 도 1b는 본 발명의 일 실시예에 따른 송신기 및 수신기의 개략적인 구조를 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 소스 블록의 구성을 도시한 예이다.
도 3는 본 발명의 일 실시예에 따라 소스 패킷 및 복구 패킷에 부가되는 시그널링 정보의 예를 나타낸 것이다.
도 4는 본 발명의 일 실시예에 따라 소스 패킷에 부가되는 시그널링 정보의 예를 나타낸 것이다.
도 5는 소실된 패킷들을 포함하는 소스 블록의 예를 나타낸 것이다.
도 6은 본 발명의 일 실시예에 따른 소실된 부호화 심볼의 위치 및 개수 결정 동작의 흐름도를 나타낸 것이다.
도 7은 본 발명의 다른 실시예에 따른 소실된 부분 부호화 심볼의 위치 및 개수 결정 동작의 흐름도를 나타낸 것이다.
도 8은 본 발명의 또 다른 실시예에 따른 소실된 세분화된 부호화 심볼의 위치 및 개수 결정 동작의 흐름도를 나타낸 것이다.
도 9는 본 발명의 일 실시예에 따른 FEC 복호를 위한 심볼 단위 결정 동작의 흐름도를 나타낸 것이다.
도 10a 및 도 10b는 본 발명의 일 실시예에 따른 FEC 객체 전송 정보의 예를 나타낸 것이다.
도 11은 본 발명의 일 실시예에 따른 시그널링 정보에 대한 하나의 세트를 나타낸 것이다.
도 12 내지 도 14는 본 발명의 일 실시예에 따른 소스 블록 구성과 소실된 심볼 단위들에 대한 카운트 값들을 나타낸 것이다.
도 15 내지 도 17은 본 발명의 실시예들에 따른 서로 다른 심볼 단위들에 대한 FEC 복호화를 설명하기 위한 도면이다.
이하 본 발명의 바람직한 실시 예를 첨부된 도면을 참조하여 상세히 설명한다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략한다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
후술되는 본 발명의 실시예들은 네트워크를 통해 고품질(HD) 컨텐츠 또는 초고품질(UHD) 컨텐츠들과 같은 고용량 컨텐츠 뿐만 아니라, 영상 회의/통화 등과 같은 다양한 멀티미디어 서비스를 송수신 할 수 있는 휴대폰, TV, 컴퓨터, 전자 칠판, 태블릿, 전자책 등의 모든 전자 기기에서 데이터 패킷의 손실을 효율적으로 복구하는 방법을 제안한다. 특히 데이터 패킷들에 FEC를 적용할 때 소스 블록을 효율적으로 구성하여 복호 성능을 개선하거나 전송 효율 (transmission efficiency)을 높일 수 있는 방법을 제안한다. 본 명세서에서 구체적인 FEC 부호화 방법을 언급하고 있지는 않지만, 상기 FEC 부호화 방법은 RS(Reed-Solomon) 부호, LDPC(Low Density Parity Check) 부호, 터보(Turbo) 부호, 랩터(Raptor) 부호, 랩터Q(RaptorQ) 부호, XOR (Single Parity-Check Code), Pro-MPEG(Moving Picture Experts Group) FEC 부호 등 특정 FEC 방법으로 한정되지 않음에 유의하여야 한다.
도 1a 및 도 1b는 본 발명의 일 실시예에 따른 송신기 및 수신기의 개략적인 구조를 도시한 블록도이다.
도 1a를 참조하면, 송신기(100)는 소스 블록 구성기(102)와 FEC 부호화기(103)를 포함하여 구성된다. 소스 블록 구성기(102)는 소스 패킷(source packet)(101)이라 불리는 다양한 길이를 가질 수 있는 일정 개수의 데이터 패킷들로부터 소스 블록을 구성하며, FEC 부호화기(103)는 상기 소스 블록에 FEC를 적용하여 패리티 데이터 또는 복구 패킷과 같은 복구 정보(104)를 부가한 후 전송한다.
도 1b를 참조하면, 수신기(110)는 소스 블록 해석기(112)와 FEC 복호화기(113)로 구성된다. 소스 블록 해석기(112)는 소스 블록으로 구성된 수신 데이터(111)를 복구 블록이 부가된 소스 심볼들로 구분하며, FEC 복호화기(113)는 소스 심볼들에 대한 FEC 복호화를 수행하여 소스 패킷들(114)을 복구한다. 소스 블록 해석기(112)는 수신 데이터(111)와 함께 혹은 별도로 수신된 시그널링 정보(115)를 이용하여 손실된 데이터를 복구한다.
도 2는 본 발명의 일 실시예에 따른 소스 블록의 구성을 도시한 예이다.
도 2를 참조하면, 주어진 소스 패킷들은 일정한 폭(width) T를 가지는 2차원 배열(array)(207) 상에 순차적(sequentially)으로 배열(arrange)된다. 상기 배열(207)의 각 행을 심볼이라 부르고 T 값을 심볼 크기(symbol size)라 부른다. 심볼 크기는 통상적으로 바이트(byte) 또는 비트(bit) 단위로 표현되는데, 본 명세서에서 소스 패킷의 길이 정보는 특별한 언급이 없으면 통상적으로 바이트 단위 기준의 길이를 나타낸다.
도 3을 참조하면, 소스 블록 구성기(102)는 심볼 크기 T의 폭을 가지는 2차원 배열(207)을 T/m개의 열로 이루어진 m개의 영역(regions)으로 구분한다. 도 3은 m=4인 값을 가지는 경우의 예를 도시하였다. 만일 T가 m의 배수가 아닌 경우에 각 영역은 [T/m] + 1개의 열들로 이루어진 영역들과 [T/m]개의 열들로 이루어진 영역들로 나누어진다. [T/m] + 1개의 열들로 이루어진 영역과 [T/m]개의 열들로 이루어진 영역들은 송수신기 간에 정해진 약속에 의해 정의되거나 또는 각각의 영역에 대한 열의 개수를 나열하여 나타낼 수 있다. 정해진 약속이라 함은, 예를 들어 T를 m으로 나눈 나머지가 n(n<m)이라 했을 때 첫 번째 n개의 영역은 [T/m]+1개의 열로 나누어 지고 나머지 m-n개의 영역은 [T/m]개의 열로 나누어지는 것과 같이 정해질 수 있다. 또한 상기한 규칙적인 영역의 구분 외에도 각 영역을 이루는 열의 개수는 송/수신기의 약속에 따라 서로 다르게 임의로 설정할 수도 있다.
필요할 경우에 플로우 ID(일 예로서 UDP(User Datagram Protocol) 플로우 ID)와 같은 패킷의 특성 정보(201)와 패킷 길이를 나타내는 정보(202)가 일부 소스 패킷들에 덧붙여질 수 있다. 정보(201,202)가 부가된 소스 패킷들은 첫 번째 행(row)의 첫 번째 열부터 심볼 크기 T를 넘지 않게 순차적으로 배치된다.
이때 부가 정보가 덧붙은 소스 패킷이 배치된 마지막 행에서 해당 소스 패킷의 마지막 데이터가 할당되어 있는 영역 내의 나머지 부분은 항상 소정의(predetermined) 값으로 할당(혹은 설정)된다. 상기 소정의 값은 편의상 0 값으로 설정될 수 있지만 반드시 한정될 필요는 없다. 예를 들어 도 2에서 보호할 데이터의 크기가 40인 첫 번째 패킷의 마지막 데이터가 4개의 영역 중에서 2번째 영역에 할당되어 있으므로 2번째 영역의 나머지 부분(205)은 0값으로 패딩된다.
또한 부가 정보(201, 202)가 덧붙은 하나의 소스 패킷이 배치된 이후 그 다음으로 배치할 소스 패킷은 항상 이전 소스 패킷이 배치된 마지막 행에서 이전 소스 패킷의 마지막 데이터가 할당되어 있는 영역의 그 다음 영역의 시작점에서부터 배치된다. 다시 말해서 모든 소스 패킷은 어떤 영역의 시작점에서부터 배치되기 시작하여야 한다. 예를 들어 도 2에서 보호할 데이터의 길이가 68인 두 번째 소스 패킷은 제로 패딩된 데이터(205) 다음인 3번째 영역의 시작점에서부터 배치되기 시작한다. 만일 보호할 데이터의 크기가 115인 네 번째 소스 패킷의 제로 패딩 부분(206)과 같이 제로 패딩된 데이터가 마지막 영역에 할당되어 있을 경우, 다음 다섯 번째 소스 패킷은 다음 행의 첫 번째 영역에서 시작한다. 주어진 소스 패킷들에 대해 상기 과정들을 모두 마친 후 K개의 행들로 이루어진 배열(207)을 소스 블록이라 하며, 소스 블록 내에서 각 행들을 소스 심볼이라 한다.
상기 소스 블록(207)을 구성한 다음에는 도 1의 FEC 부호화기(103)를 통해 FEC 부호화를 수행함으로써 패리티 데이터(208)를 생성하게 된다. 이때 FEC 부호화기(103)는 각 소스 심볼의 단위로 FEC 부호화를 적용할 수도 있으며, 각 소스 심볼 내에서 각 영역을 기준으로 세분화(subdivide)된 소스 심볼의 일부를 세분화된 심볼(Subdivided symbol or Subdivided Encoding Symbol)로 정의할 때, 각 세분화된 심볼의 단위로 FEC 부호화를 적용할 수도 있다.
소스 심볼 단위의 FEC 적용의 예를 보이기 위해 도 2를 참조하면, 소스 블록(207) 내의 K개의 행들은 FEC 부호화를 적용하기 위한 K개의 소스 심볼들로 간주될 수 있고, K개의 소스 심볼에 FEC 부호화를 적용하여 복구(혹은 패리티) 심볼(208)을 생성하게 된다. 소스 심볼들과 복구 심볼들을 통칭하여 부호화 심볼들이라고 칭한다.
세분화된 소스 심볼 단위의 FEC 적용은 도 2에서 구분된 영역 별로 FEC를 적용할 경우를 의미한다. 즉 각 소스 심볼은 T/m개의 바이트들(혹은 비트들)로 각각 구성된 4개의 세분화된 소스 심볼들을 포함한다.
본 발명의 일 실시예에서 제안하는 소스 블록의 구성은 아래와 같이 정리된다.
주어진 심볼 크기 T의 2차원 배열은 T/m 크기를 가지는 m개의 영역으로 열 기준으로 구분된다. 만일 T가 m의 배수가 아닌 경우에 각 영역은 [T/m] + 1개의 열들로 이루어진 영역들과 [T/m]개의 열들로 이루어진다. 그 다음에 주어진 소스 패킷들은, 필요할 경우 부가 정보들이 덧붙여진 다음, 순차적으로 상기 심볼 크기를 넘지 않게 상기 2차원 배열 내에 배치된다. 다른 실시예로서 주어진 영역 m이 정해진 이후 m의 배수가 되게 T를 정의할 수도 있다.
각각의 소스 패킷은 항상 m개로 나누어진 영역이 시작되는 열에서부터 배치되기 시작하여야 하며, 여기서 부가 정보가 덧붙은 임의의 소스 패킷이 배치된 마지막 행에서 해당 소스 패킷의 마지막 데이터가 할당되어 있는 영역 내의 나머지 부분은 항상 0과 같은 소정의 값으로 할당한다.
시스템의 요구에 따라 배치된 소스 패킷들 사이에 T/m 바이트 이상의 제로 패딩이 적용되는 경우도 있을 수 있다. 하지만 통상적으로 제로 패딩의 비율을 최소화 하기 위하여 제로 패딩의 최대 길이는 T/m 보다 작게 설정된다. 따라서 부가 정보가 덧붙은 하나의 소스 패킷이 배치된 이후 그 다음으로 배치할 소스 패킷은 통상적으로 상기 소스 패킷이 배치된 마지막 행에서 마지막 데이터가 할당되어 있는 영역의 그 다음 영역의 시작점에서부터 배치될 수 있다. 만일 상기 마지막 데이터가 마지막 m번째 영역에 할당되어 있을 경우에는 다음 소스 패킷의 배열은 다음 행의 첫 번째 영역에서 시작된다.
3GPP(3rd Generation Partnership Project) SA4(Service Aspects 4) MBMS(Multimedia Broadcast and Multicast Service) 규격은 AL-FEC(Application Layer-Forward Error Correction)로 랩터 부호(Raptor code)를 적용하고 있는데, 랩터 부호의 처리 가능한 최대 소스 심볼 길이는 8192이다. 랩터 부호와 같이 주어진 소스 패킷들의 개수가 일정 기준 이상인 FEC 부호가 사용되는 경우, 소스 블록을 구성함에 있어서 패딩 바이트의 양을 줄이기 위해 T를 작게 하는 데 한계가 있다.
3GPP SA4 MBMS 규격에 본 발명의 소스 블록 구성을 적용할 경우 랩터 부호가 가지고 있는 대응 가능한 최대 소스 심볼 길이 8192 내에서 주어진 소스 패킷들에 대해 T를 m개로 나누어 소스 블록을 구성하면 패딩 바이트의 양을 줄여 부호화 심볼들의 수를 줄이고 오류정정능력을 개선할 수 있다.
구체적인 예를 들어 소스패킷 1000개가 있고 각 소스패킷의 길이는 512 바이트 ~ 1024 바이트 사이에서 랜덤하게 선택된다고 했을 때 소스 패킷의 그 평균적인 길이는 768 바이트이므로 전체 데이터 양은 대략 768000라 할 수 있다. T를 128 bytes로 설정한 경우 소스패킷당 평균 패딩의 양이 64 바이트이므로 총 패딩의 양은 64000이다. 이로 인하여 생성된 소스 블록의 전체 양은 832000이다. T가 128이므로 소스 심볼의 개수는 6500개이다.
여기에 본 발명을 적용해서 m=4라고 하면 세분화된 소스 심볼 크기 T/4 = 32이고 소스패킷당 16 bytes의 패딩이 발생하므로 전체 패딩의 양은 16000이다. 이로 인하여 소스 블록의 전체 양은 784000 바이트이다. T/4=32이므로 서브 소스 심볼의 개수는 24500, 이를 소스 심볼의 개수로 환산하면 6125개이다. 이로 인하여 기존 방법 대비 본 발명은 이 경우 6500 - 6125 = 375개의 소스 심볼 개수를 줄일 수 있다. 만일 m=8,16등으로 설정하면 더 많은 효과를 누릴 수 있다.
도 2의 소스 블록 구성에서 m=1인 경우에 비해 m>2인 경우에는 제로 패딩의 양을 효과적으로 줄일 수 있다. 특히 소스 패킷들의 길이가 가변적으로 변하는 경우에는 2차원 배열을 m개의 영역으로 나누었을 경우에 제로 패딩의 양이 평균적으로 1/m 만큼 줄어드는 효과를 기대할 수 있다. 이러한 결과로 m>2인 경우는 m = 1인 경우에 비해 FEC 부호화가 적용되는 소스 심볼의 개수가 줄어드는 효과를 기대할 수 있다.
만일 주어진 소스 패킷들과 심볼 크기 T로부터 m=1인 경우에 생성된 소스 심볼의 개수를 K1이라 하고, 상기 소스 심볼로부터 FEC를 적용하여 Np개의 복구 심볼을 생성했다고 하자. 또한 동일한 소스 패킷들과 심볼 크기 T로부터 m>2인 경우에 K2개의 소스 심볼이 생성되었고, 동일한 FEC를 적용하여 동일한 양의 Np개의 복구 심볼을 생성했다고 하자. 동일한 양의 소스 패킷들로부터 동일한 양의 복구 심볼이 생성되었기 때문에 두 경우에 모두 오버헤드(overhead)는 동일하다고 볼 수 있다. 하지만, 두 경우의 FEC 부호율 K1/(K1 + Np), K2/(K2 + Np)를 비교해보면, K1>K2이 자명하기 때문에 K1/(K1 + Np) > K2/(K2 + Np)이 성립하게 된다. 통상적으로 동일한 FEC 기법에서 동일한 패리티 정보양에 대해 부호율이 낮은 경우가 보다 더 강인한(robust) 보호(protection) 성능을 보임은 잘 알려져 있다.
따라서 본 발명의 개시된 실시예는 m을 증가시켜 제로 패딩의 양을 효율적으로 줄임으로써 추가적인 오버헤드가 거의 필요 없이 기존 방법에 비해 보다 좋은 오류정정 성능을 제공할 수 있다.
실제로 m=1인 소스 블록 구성에서는 하나의 소스 패킷이 손실될 경우 소스 블록 내의 해당 소스 패킷이 배치되었던 모든 행들, 즉, 모든 부호화 심볼들이 손실됐다고 판단하지만, 본 발명의 실시예는 소스 블록 내의 행들 또는 부호화 심볼들을 m개의 영역으로 구분함으로써 손실된 부분과 손실되지 않은 부분으로 구분할 수 있게 된다. 이로 인해 m개의 영역 내에서 손실되지 않은 부분을 복호에 활용할 수 있게 되어 복호 성능이 개선된다.
본 발명의 실시예에서 제안한 소스 블록 구성을 통해 FEC를 적용하기 위해 송신기는 소스 블록 내의 구분된 영역의 개수와 각각의 소스 패킷들이 몇 번째 영역에서 시작됐는지에 대한 정보를 수신기 측에 전달한다. 만일 상기 정보를 수신기 측에서 획득하지 못하면 손실된 소스 패킷이 소스 블록 내에서 어떤 위치에 배치되었던 패킷인지 알 수가 없기 때문에 FEC 복호를 수행하기 어려워진다.
심볼 크기 T와 구분된 영역의 개수 m에 대한 시그널링 정보는 각 소스 패킷에 부가되어 전송되거나 혹은 별도의 패킷을 통해 전송될 수 있다. 별도의 패킷을 통해 전송하기 위한 하나의 실시예로서, SDP(Session Description Protocol)와 같은 CDP(Content Delivery Protocol)를 사용하여 FEC 관련 정보들을 전송할 때 T와 m이 함께 전송될 수 있다. T가 m의 배수가 아닌 경우 미리 정해진 약속(예를 들어 상위 영역은 [T/m]+1개의 열을 가지고 하위 영역은 [T/m]개의 열을 가지도록)에 의해 수신기가 T와 m값을 보고 각 영역의 열의 개수를 알 수 있다.
다른 실시예로서, 수신기에서 수신된 소스 패킷이 소스 블록 내에서 배치된 형태를 파악할 수 있도록 하기 위해서는 각 소스 패킷의 배치가 시작되는 행의 위치, 즉 부호화 심볼의 순서와 해당 부호화 심볼 내에서 시작되는 영역의 위치를 나타내는 정보가 각 소스 패킷에 부가되어 전송될 수 있다.
도 3은 본 발명의 일 실시예에 따라 소스 패킷 및 복구 패킷에 부가되는 시그널링 정보의 예를 나타낸 것이다.
도 3을 참조하면, 소스 블록 번호(Source Block Number: SBN)(301)는 해당 소스 패킷이 대응되는 소스 블록을 지시하며, 부호화 심볼 식별자(Encoding Symbol ID: ESI)(302)는 소스 패킷이 시작되는 최초 부호화 심볼, 즉, 소스 블록 내의 행의 위치를 지시하며, 패킷 시작 위치(Packet Start Position: PSP)(303)는 소스 블록 내에서 소스 패킷이 배치되기 시작된 영역을 지시한다. 예를 들어 도 2에서 m=4라 할 때, 첫 번째 소스 패킷의 ESI 및 PSP의 값은 (0, 0)이 되며, 두 번째 소스 패킷의 ESI 및 PSP 값은 (2, 2)가 되며, 세 번째 소스 패킷의 ESI 및 PSP 값은 (4, 3)이 되며, 4 번째 소스 패킷의 ESI 및 PSP 값은 (7, 1) 등과 같이 나타낼 수 있다.
만일 소스 패킷이 하나라도 손실되어 그에 대응되는 소스 심볼의 일부가 손실되었을 경우에는 FEC 복호화를 통해 손실된 소스 심볼을 복구하기 위해서 적어도 하나 이상의 복구 심볼이 필요하다.
각 복구 심볼에는, 해당 복구 심볼이 어떠한 소스 블록으로부터 생성되었는지 나타내는 소스 블록 번호(Source Block Number: SBN)(304)와 복구 심볼 순서와 관련된 부호화 심볼 식별자(ESI)(305) 및 소스 블록의 크기를 정확히 파악하기 위한 소스 블록 길이(Source Block Length: SBL)(306)가 부가될 수 있다. 다른 실시예로서 상기 시그널링 필드들(304,305,306)은 별도의 수단을 통해 수신기에 전송될 수 있다.
상기한 예와 같이 하나 이상의 손실된 패킷을 복원하기 위해서는 소스 블록과 복구 심볼 사이의 연관성을 나타내는 SBN(304), FEC를 통해 복구 심볼이 생성된 순서와 관련 있는 ESI(305), 소스 심볼의 길이 T와 함께 소스 블록의 크기를 결정하기 위해 SBL(306)이 반드시 필요하다.
만일 소스 패킷이 하나도 손실되지 않았을 경우에는 복구 심볼에 대한 정보가 필요가 없기 때문에 SBN(304), ESI(305)가 필요 없을 뿐만 아니라 소스 블록의 구성 정보 또한 알 필요가 없기 때문에 SBL(306)도 필요가 없다.
각 시그널링 필드(301,302,303,304,305,306)의 크기는 시스템의 요구 사항에 따라 정해질 수 있다. 일 실시예로서 SBN(301)은 1 또는 2 바이트, ESI(302)는 2 또는 3 바이트, PSP(303)은 1 또는 2 바이트, SBL(306)은 2 또는 3 바이트가 될 수 있다.
수신기는 각각의 소스 패킷으로부터 SBN(301), ESI(302), PSP(303)을 획득한다. 만일 1개 이상의 소스 패킷의 손실이 발생하여 FEC 복호가 필요할 경우 수신기는 최소 1개 이상의 복구 패킷을 수신하고, 복구 패킷으로부터 SBL(306)를 획득한다. 여기서 추가적으로 별도의 패킷을 통해 전송되는 소스 블록 내의 영역의 개수에 대한 정보를 획득하면 해당 SBN(301)에 대응되는 소스 블록의 구성에 대해 완벽히 파악할 수 있게 된다. 또한 수신기는 각각의 복구 패킷으로부터 SBN(304)과 ESI(305)를 획득하고, 이들을 이용하여 해당 SBN의 소스 블록에 대한 FEC 복호 과정을 진행하여 손실된 소스 패킷을 복원할 수 있다.
도 4는 본 발명의 일 실시예에 따라 소스 패킷에 부가되는 시그널링 정보의 예를 나타낸 것이다. 도 4를 참조하면, 부호화 심볼 내에서 구분된 각각의 영역을 기준으로 각 부호화 심볼을 세분화(subdivide) 하여, 즉, 각 부호화된 심볼을 사전에 약속된 숫자와 길이만큼 세분화하여, 세분화된(Subdivided) 부호화 심볼로 정의하고, 세분화된 부호화 심볼들에 각각의 영역별로 심볼 순서를 부여함으로써, 도 3의 ESI(302), PSP(303)를 결합한 하나의 시그널링 정보, 즉 세분화된 부호화 심볼 식별자(Subdivided Encoding Symbol Index (or IDentifier): SESI)(402)가 구성될 수 있다. 여기서 구분된 영역의 개수가 m이라 하면, 세분화된 부호화 심볼의 개수는 총 부호화 심볼 개수의 m배가 되며, 크기는 평균적으로 1/m로 줄어듦은 자명하다.
예를 들어, 도 2에서 m=4라 할 때, 각 부호화 심볼들은 T/4 크기로 세분화 되어 기존 부호화 심볼의 개수보다 4배 증가한 세분화된 부호화 심볼로 정의될 수 있다. 따라서 도 2에서 살펴보면, 첫 번째 소스 패킷의 SESI 값은 0이 되며, 두 번째 소스 패킷의 SESI 값은 10이 되며, 가 되며, 세 번째 소스 패킷의 ESI 및 PSP 값은 19이 되며, 4 번째 소스 패킷의 ESI 및 PSP 값은 29 등과 같이 나타낼 수 있다.
상기 실시 예에서는 SESI = m*ESI + PSP의 관계를 적용하였으나 시스템의 설정에 따라 다양한 일대일 대응 형태로 나타낼 수 있다.
구분된 영역의 개수 m에 대한 시그널링 정보는 SDP와 같은 별도의 패킷을 통해 전송하는 것이 오버헤드 측면에서 효율적이나, 다른 실시예로서 소스 패킷 또는 복구 패킷에 부가하여 전송될 수도 있다.
이상에서와 같이 송신기에서는 주어진 소스 패킷들로부터 도 2와 같이 소스 심볼 크기 T를 가지며 m개의 영역으로 구분되어 있는 소스 블록을 통해 FEC를 적용하여 복구 패킷을 생성하여 소스 패킷과 복구 패킷을 전송한다. 만일 적어도 1개 이상의 소스 패킷이 전송 과정에서 소실되었다고 할 때 수신기에서 소스 패킷을 복원하기 위한 FEC 복호 과정에 대해서 설명한다.
수신기에서는 소실된 소스 패킷을 복원하기 위하여 최소한 1개 이상의 복구 패킷을 수신하게 되며, 사전에 약속된 방법에 따라 T값과 m 값을 알고 있다. 또한 FEC 복호에 필요한 SBN, SBL, SESI (또는 ESI와 PSP)를 미리 정해지는 시그널링 수단을 통해 획득한다. 상기 각 정보들은 시스템의 설정에 따라 다양한 방법을 통해 전송 및 수신될 수 있다.
도 5는 소실된 패킷들을 포함하는 소스 블록의 예를 도시한 것이다. 도시한 예는 도 2에 나타낸 바와 같이 구성되는 소스 블록(207)에서 3번째, 6번째 소스 패킷이 소실된 경우를 도시한 것이다. 도 5를 참조하면, SESI 19부터 SESI 28에 해당하는 데이터와 SESI 53부터 SESI 68에 해당하는 데이터들이 수신되지 않았음을 알 수 있다.
소실된 부호화 심볼 또는 세분화된 부호화 심볼을 복원하기 위해 FEC 복호를 진행하려면 수신기는 소실된 심볼들의 위치 및 개수를 파악해야 한다. FEC 복호 방식에 따라 소실된 심볼들의 위치 및 개수는 서로 다르게 정의될 수 있다. 도 5의 Erasure Counter-0, Erasure Counter-1(0,1), Erasure Counter-2(0,1,2,3)은 서로 다른 FEC 복호 방식, 즉 FEC 복호를 위한 서로 다른 심볼 단위들에 따른 소실된 심볼 단위들의 개수에 대한 카운트 값을 의미한다.
먼저 심볼 단위의 일 예로서, 부호화 심볼의 단위로 FEC 복호를 진행하는 경우에 대해 설명하면 하기와 같다.
수신기는 소실된 부호화 심볼들의 위치 및 개수를 파악해야 되는데 도 5에서는 Erasure Counter-0를 통해 파악된 소실된 부호화 심볼들은 8개, 즉 4, 5, 6, 7번째 부호화 심볼과 13, 14, 15, 16번째 부호화 심볼이다. (첫 번째 부호화 심볼의 인덱스는 0임) 따라서 부호화 심볼 단위의 부호화를 진행하기 위해서는 최소한 8개 이상의 복구 심볼(혹은 패리티 심볼)이 필요함을 알 수 있다.
소실된 부호화 심볼의 개수를 파악하는 구체적인 실시예는 다음과 같다.
수신기는, 최종적으로 수신된 소스 패킷들로부터 수신되지 않은 소스 패킷에 대응되는 SESI 값들을 분석한다. 소실된 세분화된 부호화 심볼의 SESI 값은 E-SESI (Erased SESI)라 칭한다. 도 5에서는 SESI 19부터 SESI 28까지의 값들과 SESI 53부터 SESI 64까지의 값들이 E-SESI (Erased SESI)가 된다. 수신기는 E-SESI 값들을 소스 블록 내 영역들의 개수 m으로 나누어 몫을 구한다. 도 5에서 m=4이며, 19부터 28까지의 값들과 53부터 64까지의 값들을 가지는 E-SESI들에 대해 m=4로 나눈 몫 [E-SESI / m]에 해당하는 값들은 4, 5, 6, 7, 13, 14, 15, 16이며, 이들은 소실된 부호화 심볼들의 위치(즉 인덱스)와 정확히 일치한다. 여기서 실수 x에 대해 [x]는 x 보다 크지 않은 최대 정수를 의미한다. 수신기는 소실된 부호화 심볼이 하나씩 결정될 때마다 소실된 부호화 심볼들의 counter에 해당하는 Erasure counter-0을 증가시킴으로써 소실된 부호화 심볼의 개수를 결정할 수 있다. 도 5의 예에서는 최종적으로 Erasure counter-0 = 8이 된다.
도 6은 본 발명의 일 실시예에 따른 소실된 부호화 심볼의 위치 및 개수 결정 동작을 나타낸 흐름도이다.
도 6을 참조하면, 과정 602에서 수신기는 수신된 소스 패킷들을 미리 정해지는 심볼 크기(즉 폭)를 가지는 2차원 배열 상에 배치함으로써 소스 블록을 재구성하고, 구성된 소스 블록 내에서 성공적으로 수신되지 못한 소스 패킷들을 파악하며, 수신되지 못한 소스 패킷들에 대응되는 E-SESI 값들을 획득한다. 일 예로서 수신기는 정해지는 통신 프로토콜, 일 예로서 UDP 등에 따라 수신된 소스 패킷들의 일련 번호를 파악하고 순서대로 배치함으로써, 연속되지 않은 소스 패킷들 사이의 미수신 소스 패킷(들)을 알 수 있다.
과정 604에서 수신기는 상기 획득한 각 E-SESI 값들을 미리 획득한 값 m으로 나누어 몫(0 혹은 양의 정수)을 계산한다. 과정 606에서 상기 계산된 몫과 동일한 값이 다른 E-SESI에 대해 이미 구해져 있다면, 과정 604로 복귀하여 다음 E-SESI 값에 대한 계산을 수행한다. 동일한 몫이 이미 얻어지지 않았다면, 과정 608에서 수신기는 상기 계산결과 얻어진 몫을 소실된 부호화 심볼의 위치(즉 인덱스)로 결정하고, 과정 610에서 소실된 부호화 심볼의 개수를 카운트하기 위한 Erasure Counter-0을 1만큼 증가시킨다.
도 5를 참조하여 소실된 부호화 심볼의 개수를 파악하기 위한 다른 실시예를 설명한다.
소정 개수의 세분화된 부호화 심볼들을 기준으로 FEC 복호를 진행하기 위해, 수신기는 소정 개수의 연속적인 세분화된 부호화 심볼들이 하나의 부분 부호화 심볼로 간주하고, 각 부분 부호화 심볼을 FEC 복호를 위한 심볼 단위로 사용할 수 있다. 일 예로서 2개의 연속적인 세분화된 부호화 심볼들이 하나의 부분 부호화 심볼이 된다. 그러면, 수신기는 도 5의 소스 블록 내에서 9, 10, 11, 12, 13, 14번째 부분 부호화 심볼들과 26, 27, 28, 29, 30, 31, 32번째 부분 부호화 심볼들이 소실되었음을 알 수 있다. (단, 첫 번째 부분 부호화 심볼의 인덱스는 0임) 부분 부호화 심볼들의 열들에 대응하는 Erasure Counter-1(0), Erasure Counter-1(1)를 이용하여 소실된 부분 부호화 심볼의 개수를 파악하면, 영역1(501)과 영역2(502)에 대응되는 소실된 부분 부호화 심볼의 개수는 7개, 영역3(503)과 영역4(503)에 대응되는 소실된 부분 부호화 심볼의 개수는 6개로 서로 다르다. 따라서 부분 부호화 심볼의 단위로 FEC 복호를 진행하기 위해서는 최소 7개의 복구 심볼 (혹은 패리티 심볼)이 필요하다.
본 실시예에서는 부분 부호화 심볼이 연속된 소정 개수, 일 예로서 2개의 세분화된 부호화 심볼로 구성되는 것으로 정의하였으나, 2개의 세분화된 부호화 심볼들이 연속적일 필요는 없다. 예를 들어 영역1(501)과 영역3(503)에 대응되는 세분화된 부호화 심볼이 하나의 부분 부호화 심볼로 정의되고, 또한 영역2(502)와 영역4(504)에 대응되는 세분화된 부호화 심볼이 또 다른 부분 부호화 심볼로 정의될 수 있다.
세분화된 부호화 심볼 2개로 부분 부호화 심볼을 정의할 때, 소실된 부분 부호화 심볼의 개수를 영역별로 파악하는 실시예 다음과 같다.
수신기는, 최종적으로 수신된 소스 패킷들로부터 수신되지 않은 소스 패킷에 대응되는 E-SESI 값들을 분석한다. 도 5에서는 SESI 19부터 SESI 28까지의 값들과 SESI 53부터 SESI 64까지의 값들이 E-SESI가 된다. 수신기는 E-SESI 값들을 소스 블록 내 영역들의 개수 m에 2를 나눈 값 m/2으로 나누어 몫을 구한다. 도 5에서 m/2=2이며, 19부터 28까지의 값들과 53부터 64까지의 값들을 가지는 E-SESI들에 대해 m/2=2로 나눈 몫 [E-SESI / (m/2)]에 해당하는 값들은 9, 10, …, 14, 26, 27, …, 32이며, 이들은 소실된 부분 부호화 심볼들의 위치(즉 인덱스)와 정확히 일치한다. 수신기는 상기와 같이 얻은 몫을 다시 m/2으로 나누어 나머지 I 값을 구한 다음, I 값이 구해질 때마다 소실된 부분 부호화 심볼들의 counter에 해당하는 Erasure Counter-1(I)을 증가시킨다. 도 5의 예에서 10, 12, 14, 26, 28, 30, 32번째 소실된 부분 부호화 심볼에 대해서 m/2=2로 나눈 나머지는 0이므로 Erasure Counter-1(0) = 7이 되며, 9, 11, 13, 27, 29, 31번째 소실된 부분 부호화 심볼에 대해서 m/2=2로 나눈 나머지는 1이므로 Erasure Counter-1(1)=6이 된다.
도 7은 본 발명의 다른 실시예에 따른 소실된 부분 부호화 심볼의 위치 및 개수 결정 동작을 나타낸 흐름도이다.
도 7을 참조하면, 과정 702에서 수신기는 수신된 소스 패킷들을 미리 정해지는 심볼 크기를 가지는 2차원 배열 상에 배치함으로써 소스 블록을 구성하고, 구성된 소스 블록 내에서 성공적으로 수신되지 못한 소스 패킷들을 파악하며, 수신되지 못은 소스 패킷들에 대응하는 E-SESI 값들을 획득한다. 과정 704에서 수신기는 상기 획득한 각 E-SESI에 대해, 미리 획득한 값 m에 대한 m/2로 나누어 몫을 계산한다. 과정 706에서 상기 계산된 몫과 동일한 값이 다른 E-SESI에 대해 이미 구해져 있다면, 과정 704로 복귀하여 다음 E-SESI 값에 대한 계산을 수행한다.
동일한 몫이 이미 얻어지지 않았다면, 과정 708에서 수신기는 상기 계산결과 얻어진 몫을 소실된 부분 부호화 심볼의 위치(즉 인덱스)로 결정한다. 또한 수신기는 과정 710에서 상기 구해진 몫을 m/2로 나누어 나머지 값 I를 구하고, 과정 712에서 소실된 부분 부호화 심볼의 개수를 카운트하기 위해 상기 나머지 값 I에 대응하는 Erasure Counter-1(I)를 1만큼 증가시킨다.
도 5를 참조하여 소실된 부호화 심볼의 개수를 파악하기 위한 또 다른 실시예를 설명한다.
본 실시예에서 수신기는 세분화된 부호화 심볼을 FEC 복호를 위한 심볼 단위로 사용한다. 도 5에서 세분화된 부호화 심볼을 기준으로 FEC 복호를 진행하기 위해 소실된 세분화된 부호화 심볼의 개수는 4개의 영역들에 대응하는 Erasure Counter-2(0,1,2,3)를 이용하여 카운트될 수 있다. 영역1(501)에 대응되는 소실된 세분화된 부호화 심볼의 개수는 6개, 영역2(502)에 대응되는 소실된 세분화된 부호화 심볼의 개수는 5개, 영역3(503)에 대응되는 소실된 세분화된 부호화 심볼의 개수는 5개, 영역4(504)에 대응되는 소실된 세분화된 부호화 심볼의 개수는 6개로, 이들은 서로 다르다. 따라서 세분화된 부호화 심볼의 단위로 FEC 복호를 진행하기 위해서는 최소 6개의 복구 심볼 (혹은 패리티 심볼)이 필요하다.
본 실시예는 소실된 세분화된 부호화 심볼의 개수를 영역별로 파악한다.
수신기는, 최종적으로 수신된 소스 패킷들로부터 수신되지 않은 소스 패킷에 대응되는 E-SESI 값들을 분석한다. 도 5에서는 SESI 19부터 SESI 28까지의 값들과 SESI 53부터 SESI 64까지의 값들이 E-SESI가 된다. 수신기는 E-SESI 값들을 소스 블록 내 영역들의 개수를 나타내는 m으로 나누어 나머지 I를 구한다. 도 5에서는 m=4이며, 19부터 28까지의 값들과 53부터 64까지의 값들을 가지는 E-SESI들에 대해, I 값이 구해질 때마다 각 영역별 세분화된 부호화 심볼들의 counter에 해당하는 Erasure Counter-2(I)가 1씩 증가된다. 도 5의 예에서 6개의 E-SESI들 20, 24, 28, 56, 60, 64는 m=4로 나눈 나머지 0을 가지므로 Erasure Counter-2(0) = 6이며, 5개의 E-SESI들 21, 25, 53, 57, 61는 m=4로 나눈 나머지 1을 가지므로 Erasure Counter-2(1)=5이며, 5개의 E-SESI들 22, 26, 54, 58, 62는 m=4로 나눈 나머지 2를 가지므로 Erasure Counter-2(2)=5이며, 6개의 E-SESI들 19, 23, 27, 55, 59, 63는 m=4로 나눈 나머지 3을 가지므로 , Erasure Counter-2(3)=6이다.
도 8은 본 발명의 또 다른 실시예에 따른 소실된 세분화된 부호화 심볼의 위치 및 개수 결정 동작을 나타낸 흐름도이다.
도 8을 참조하면, 과정 802에서 수신기는 수신된 소스 패킷들을 미리 정해지는 심볼 크기를 가지는 2차원 배열 상에 배치함으로써 소스 블록을 구성하고, 구성된 소스 블록 내에서 성공적으로 수신되지 못한 소스 패킷들을 파악하며, 수신되지 못한 소스 패킷들에 대응하는 E-SESI 값들을 획득한다. 과정 804에서 수신기는 상기 E-SESI 값들에 대응하는 소실된 세분화된 부호화 심볼들의 위치를 결정한다. 또한 과정 806에서 수신기는 상기 획득한 각 E-SESI에 대해, 미리 획득한 값 m으로 나누어 나머지 값 I를 계산하고, 과정 808에서 영역별로 소실된 세분화된 심볼의 개수를 카운트하기 위해 상기 나머지 값 I에 대응하는 Erasure Counter-2(I)를 1만큼 증가시킨다.
이상의 실시예들에서는 FEC 복호를 적용할 수 있는 최소의 단위가 세분화된 부호화 심볼이 되는 경우에 대하여 설명하였으나, 그렇지 않은 경우, 수신기는 E-SESI가 아닌 E-ESI 혹은 부호화 심볼의 일부로 구성되는 부분 부호화 심볼에 대한 부분 부호화 심볼 식별자를 이용하여 소실된 부호화 심볼들(혹은 부분 부호화 심볼)의 개수 및 위치를 계산할 수도 있다.
이상의 예들에서 보인 바와 같이 FEC 복호를 적용하는 기준 단위에 따라 소실된 부호화 심볼의 개수, 소실된 부분 부호화 심볼의 개수, 소실된 세분화된 부호화 심볼의 개수는 서로 다르다. 이는 FEC 복호를 적용하는 기준에 따라 필요한 복구 심볼 (혹은 패리티 심볼)의 개수가 서로 다르기 때문이다. 특히 FEC 복호의 적용 단위가 작을수록 소실된 심볼의 개수가 작아지기 때문에 필요한 복구 심볼(혹은 패리티 심볼)의 수가 적게 필요하다. 다시 말해서, FEC 복호를 위해 필요한 오버헤드가 보다 적게 필요하다.
반면에, FEC 복호의 적용 단위가 작을수록 서로 다른 오류 패턴에 대해서 여러 번의 FEC 복호를 수행해야 하므로 복호 복잡도는 증가한다. 예를 들어 도 5에서 부호화 심볼 단위로 FEC 복호를 적용할 경우(도 6의 실시예)에는 소실된 부호화 심볼의 개수가 8개여서 복구 심볼 (혹은 패리티 심볼)의 개수가 최소한 8개 이상 필요한 대신, 전체 소스 블록의 하나의 오류 패턴에 대해 FEC 복호가 수행될 수 있기 때문에 효율적인 복호는 가능하다. 하지만, 세분화된 부호화 심볼 단위로 FEC 복호를 적용할 경우(도 8의 실시예)에는 소실된 세분화된 부호화 심볼의 최대 개수가 6이 되어 필요한 복구 심볼(또는 패리티 심볼)의 개수가 줄어 들고 요구되는 오버헤드가 줄어드는 효과를 얻을 수는 있으나, 일반적으로 각 영역별로 서로 다른 오류 패턴에 대해서 FEC 복호가 수행되어야 하므로 복호 복잡도는 다소 증가하게 된다.
후술되는 실시예에서는 부호화 심볼 또는 부분 부호화 심볼 또는 세분화된 부호화 심볼과 같은 서로 다른 심볼 단위들 중 효율적인 하나의 심볼 단위를 선택하는 FEC 복호 방식을 제안한다. 구체적으로 수신기는 각 심볼 단위에 대하여 카운트된 소실된 심볼 단위들의 개수에 근거하여, FEC 복호화를 위해 적절한 하나의 심볼 단위를 선택할 수 있다. 이하 서로 다른 심볼 단위들의 예로서, 부호화 심볼 단위, 부분 부호화 심볼 단위, 세분화된 부호화 심볼 단위가 사용되는 경우의 동작을 설명할 것이나, 본 발명이 이러한 구체적인 심볼 단위들에 의해 한정되지 않음은 물론이다. 일 예로서 수신기는 부호화 심볼 단위, 부분 부호화 심볼 단위, 세분화된 부호화 심볼 단위 중 적어도 하나를 포함하는 서로 다른 심볼 단위들 중 하나를 선택할 수 있다.
설명의 편의상 소스 블록 내에서 구분된 영역의 개수 m을 2A로 정의한다.(A는 양의 정수) 소실된 부호화 심볼의 개수는 E-Counter-0로 카운트되고, m/2i개의 세분화된 부호화 심볼로 구성된 부분 부호화 심볼의 소실된 개수는 E-Counter-i로 카운트되며, 소실된 세분화된 부호화 심볼의 개수는 E-Counter-A로 카운트된다.
이하의 실시예에서는 이해의 편의를 위해 m을 2A로 제한하고, 부분 부호화 심볼의 크기를 m의 약수로 정의하였으나, 본 발명의 확장된 실시예에서 m은 제한될 필요가 없으며 부분 부호화 심볼의 크기 또한 항상 고정되거나 m의 약수일 필요는 없다.
전송된 소스 패킷이 소실되어 수신기에서 모든 소스 패킷들을 수신하지 못한 경우에, 소실된 패킷에 대응하는 소실된 심볼들의 개수 E-Counter들에 대해 다음과 같은 <수학식 1>의 관계가 항상 성립한다.
Figure 112012082011807-pat00001
다시 말해, 소실된 심볼의 개수는 심볼의 크기가 크게 정의될수록 같거나 크다. 소실된 심볼을 계산하는 단위에 따라 FEC 복호를 적용할 경우에 심볼의 크기가 크게 정의될수록 소스 심볼(또는 소스 패킷)을 복구하기 위해 필요한 복구 심볼(혹은 패리티 심볼)이 더 필요하기 때문에 오버 헤드가 증가한다.
하지만, 앞서 설명한 것처럼 작은 크기의 심볼에 대해 FEC 복호를 진행할 경우에는 일반적으로 서로 다른 오류 패턴에 대해 여러 번의 FEC 복호를 진행해야 되기 때문에 복호 복잡도가 증가한다. 따라서 수신기는 E-counter들에 따라 효율적인 복호 방식을 선택할 수 있다.
가장 간단한 예로서 아래 <수학식 2>와 같이 E-Counter들의 값이 모두 동일한 경우를 가정한다.
Figure 112012082011807-pat00002
<수학식 2>와 같은 경우, 소실된 심볼의 개수들이 모두 동일하면 필요한 복구 심볼(혹은 패리티 심볼)의 개수 또한 거의 동일하다. 즉 오버헤드는 거의 동일하기 때문에 수신기는 복호 복잡도가 가장 낮은 부호화 심볼 크기를 기준으로 FEC 복호를 수행할 것으로 결정할 수 있다.
다른 간단한 예로써 E-Counter들의 값들은 다음 <수학식 3>과 같다.
Figure 112012082011807-pat00003
E-Counter-0의 값이 E-Counter-1의 10배이므로, 부호화 심볼 단위로 FEC 복호를 진행할 경우에는 m/2개의 세분화된 부호화 심볼 단위로 FEC 복호를 적용할 경우에 비해 오버헤드가 10배가 된다. FEC 복호는 2개의 서로 다른 오류 패턴에 대해 적용되면 복호 복잡도는 증가하지만 오버헤드가 10배 증가하는 것보다는 효율적이다. 따라서 수신기는 m/2개의 세분화된 부호화 심볼 단위로 FEC 복호를 적용할 것으로 결정할 수 있다.
결론적으로, 소실된 소스 패킷이 있을 경우 상기 소실된 소스 패킷이 포함된 소스 블록을 복원하기 위하여 수신기는 다음과 같이 FEC 복호 방식을 결정한다. 수신기는, 수신된 소스 패킷들로부터 소스 블록을 구성하고 소실된 심볼의 개수를 서로 다른 심볼 크기들에 대응하는 E-Counter들을 통해 계산한다. 이후 수신기는 사전에 정의된 비교 방법을 통해 상기 계산된 E-Counter 값들을 비교하고, 비교 결과에 따라 FEC 적용을 위한 심볼 단위(즉 심볼 크기)를 결정한다. 수신기는 상기 정해진 심볼 단위에 따라 FEC 복호를 수행한다.
다음 <수학식 4>는 E-Counter 값들로부터 FEC 복호 방식을 결정하기 위한 일 실시예를 설명하기 위한 관계식이다.
Figure 112012082011807-pat00004
i = 1, 2, …, A
여기서 R_i는 인접한 E-Counter 값들, E-Counter-i와 E-Counter-(i-1) 사이의 비율을 의미하며, P_i는 상기 비율들의 누적된 값을 의미한다.
도 9는 본 발명의 일 실시예에 따른 FEC 복호를 위한 심볼 단위의 결정 동작을 나타낸 흐름도이다.
도 9를 참조하면, 수신기는 과정 902에서 도 6, 도 7, 도 8에서 나타낸 절차에 따라 서로 다른 심볼 단위(즉 심볼 크기들)에 대응하는 E-Counter 값들을 계산하고, 과정 904에서 초기화를 위해 a=0, i=1 을 설정한다. 과정 906에서 수신기는 상기 <수학식 4>에 따라 R_i 와 P_i 를 계산하고 과정 908에서 P_i 를 사전에 정해진 임계치 Th_i 와 비교한다. P_i 가 큰 경우, 과정 910에서 a의 값은 i의 값으로 치환된다. 반면 P_i 가 Th_i 보다 크지 않을 경우, a 값은 변경되지 않는다. 과정 912에서 수신기는 i가 A에 도달하였는지를 판단하여, 도달하지 않았으면 과정 916에서 i를 1만큼 증가시킨 후 과정 906으로 복귀한다.
상기의 과정 906 내지 910은 i = A가 될 때까지 A번 반복된다. i = A가 되면, 과정 914에서 수신기는 최종적으로 얻어진 a의 값에 따라, FEC 복호를 위한 심볼의 단위를 m/2a개의 세분화된 부호화 심볼로 결정한다.
다음 <수학식 5>는 E-Counter 값들로부터 FEC 복호 방식을 결정하기 위한 다른 실시예를 설명하기 위한 관계식이다.
Figure 112012082011807-pat00005
i = 1, 2, …, A
R_i는 인접한 E-Counter 값들, E-Counter-(i)와 E-Counter-(i-1) 사이의 차(difference)를 의미하며, P_i는 E-Counter 값들의 차들의 누적된 값을 의미한다.
도 9의 흐름도를 참조하면, 수신기는 과정 906에서 상기 <수학식 5>에 따라 R_i 와 P_i를 계산하며, 계산된 P_i를 해당하는 임계치 Th_i와 비교하여, FEC 복호를 위한 심볼의 단위를 결정한다.
도 1a의 송신기 구조를 참조하면, 송신기는, AL-FEC를 적용하는 경우, 주어진 소스 패킷들을 순서대로 소정 개수의 소스 패킷들로 나누고 나누어진 각각의 소정 개수의 소스 패킷을 소스 블록 구성기(102)에 입력한다. 소스 블록 구성기(102)는 각각의 소스패킷 선두에 UDP 플로우 ID와 소스패킷의 길이 정보를 삽입한 후 주어진 T와 m값에 의해 K개의 소스 심볼로 구성된 소스 블록을 구성한다. FEC 부호화기(103)는 소스 블록을 FEC 부호화하여 소정 개수의 복구 심볼들을 생성한다. 다른 실시예로서 UDP 플로우 ID와 길이 정보는 생략되거나 다른 시그널링 수단을 통해 전송될 수 있다.
송신기의 시그널링 정보 생성기(도시하지 않음)는, 도 3 혹은 도 4와 같은 방식에 의해 각각의 소스 패킷 후미에는 SBN와 SESI를 부여하고, 하나 또는 그 이상의 복구 심볼을 연결하여 적어도 하나의 복구 패킷을 만든 후 각 복구 패킷의 선두에 SBN, ESI, SBL를 부여한다 이 때 복구 패킷의 ESI에는 통상적으로 해당 패킷의 첫 번째 복구 심볼 ESI가 할당된다. 그리고 각 패킷의 선두에 UDP 헤더를 부가하는데, 소스 패킷과 복구 패킷은 UDP 포트 번호를 달리 설정함에 의해 서로 구분된 UDP 패킷들로 구성된다. 패킷들의 전송시 T, m을 포함한 FEC 관련 시그널링 정보는 SDP와 같은 미리 정해지는 시그널링 수단을 통해 미리 전송될 수 있다.
도 1b의 수신기 구조를 참조하면, 수신기의 소스 블록 해석기(112)는 각 수신된 패킷에 포함된 UDP 헤더의 포트 번호에 의해 상기 수신된 패킷이 소스 패킷과 복구 패킷인지 구분하여, 소스 패킷인 경우 소스 패킷의 후미에 저장된 SBN, SESI을 획득하고, 복구 패킷인 경우 복구 패킷의 선두에 부여된 SBN, ESI, SBL을 획득한다. 이후 소스 블록 해석기(112)는, 송신기로부터 미리 전송받은 T와 m을 바탕으로, 수신된 패킷들로부터 소스 블록과 복구 심볼들을 재구성한다. FEC 복호화기(113)는 도 9와 같은 동작을 통해 구해진 FEC 적용을 위한 심볼 단위에 따라 상기 재구성된 소스 블록의 심볼 단위들과 복구 심볼들에 대한 복호화를 수행한다.
본 발명의 또 다른 실시예에서는 심볼 크기 T와 구분된 영역의 개수 m에 대한 정보를 별도의 패킷 또는 경로를 통해 전송한다. 이해의 편의를 위해 3GPP TS 26.346에서 SDP에 의해 심볼 크기 T를 전송하는 FEC 객체 전송 정보(FEC Object Transmission Information: FEC OTI)를 설명하면 하기와 같다.
즉, FEC 객체 전송 정보는, 심볼 단위의 최대 소스 블록 길이(maximum source block length, in symbols) 및 바이트 단위의 심볼 크기(symbol size, in bytes)로 구성된다. 심볼 크기와 최대 소스 블록 길이는 4 옥텟 필드(4 octet field, Network Byte Order)로 부호화될 수 있다. 소스 블록 길이는 특정 스트림에 대한 FEC 객체 전송 정보에 의해 지시된 최대 소스 블록 길이를 초과하지 않는 특정 패킷의 복구 FEC 페이로드 식별자(Repair FEC payload ID) 내에서 시그널링된다. FEC 객체 전송 정보는 SDP를 통해 전송된다. 여기서 복구 FEC 페이로드 식별자는 소스 블록 구성을 나타내기 위해 복구 패킷에 부가되는 시그널링 정보를 의미한다.
소스 블록 내에서 구분된 영역의 개수 또는 하나의 부호화된 심볼 내에서 세분화된 심볼의 개수를 나타내는 값 m을 위해 소정의 크기를 가지는 시그널링 정보가 FEC OTI에 추가적으로 할당될 수 있다. 도 10a 및 도 10b는 본 발명의 일 실시예에 따른 FEC OTI의 예를 도시한 것이다.
도 10a를 살펴보면, 하나의 부호화된 심볼을 세분화하는 단위 m을 나타내는 세분화된 심볼 개수(Number of Subdivided Symbols: NSS)(1002)이, 심볼 크기 T (1001) 및 최대 소스 블록 길이(1003)와 함께 FEC OTI에 포함되어 있다.
도 10b는 도 10a의 NSS(1003)를 NOR(1004)로 대체하여 표현한 FEC OTI의 구성을 나타낸 것이다. 즉, NSS(1002)는 심볼을 기준으로 하나의 심볼을 세분화한 값을 의미하며, NOR(1004)는 소스 블록 내에서 구분된 영역의 개수를 의미하지만, 실제로 두 정보는 동일한 값을 가지고 동일한 역할을 할 수 있다.
NSS(1002) 또는 NOR(1004)은 특정한 제한 없이 시스템의 요구 조건에 따라 다양한 크기를 가질 수 있으며, 일 실시예로서 1 바이트 또는 2 바이트 크기를 가진다. 도 10a 및 도 10b에서 최대 소스 블록 크기(1003)은 시스템에 따라 전송될 수도 있고 전송되지 않을 수도 있다.
하나의 부호화된 심볼을 세분화 하였을 때 상기 심볼 크기 T와 NSS 또는 NOR 값에 해당하는 m과의 관계에 따라 각 세분화된 심볼의 크기를 결정하는 실시 예를 설명한다.
만일 T를 m으로 나눈 몫이 a, 나머지를 b라 할 때, 즉,
Figure 112012082011807-pat00006
인 관계가 성립할 때 처음 b개의 세분화된 각 심볼의 크기는 (a + 1), 나머지 (m - b)개의 각 세분화된 심볼의 크기는 a로 설정할 수 있다. (상기 크기가 (a+1) 및 a인 각각의 세분화된 심볼의 순서는 뒤바뀔 수 있음에 유의한다.) 만일 T가 m의 배수일 경우 각 세분화된 심볼의 크기는 a로 동일함을 알 수 있다.
하나의 부호화된 심볼을 세분화 하였을 때 상기 심볼 크기 T와 NSS 또는 NOR 값에 해당하는 m과의 관계에 따라 각 세분화된 심볼의 크기를 결정하는 또 다른 실시예를 설명한다.
만일 T를 m으로 나눈 몫이 a, 나머지를 b라 할 때, 즉,
Figure 112012082011807-pat00007
인 관계가 성립할 때 처음 1개의 세분화된 각 심볼의 크기는 (a + b), 나머지 (m - 1)개의 각 세분화된 심볼의 크기는 a로 설정될 수 있다. 크기가 (a+b) 및 a인 세분화된 심볼들의 순서는 뒤바뀔 수 있다.
상기 실시예들에서처럼 세분화된 심볼의 크기는 다양한 형태로 정의될 수 있다. 또한 상기 세분화된 심볼의 크기는 소스 블록 내에서 구분된 각각의 영역을 이루고 있는 열들의 개수로도 표현될 수 있다.
방송 또는 통신 시스템에서 패킷 손실을 복구하기 위한 방법으로서 소스 블록을 구성하고 FEC를 적용하는 과정을 사용할 때, 소스 블록 구성을 지시하기 위해 소스 패킷에 부가되는 시그널링 정보(즉 소스 패킷 부가 정보)인 소스 FEC 페이로드 식별자(Source FEC Payload ID)와 복구 패킷에 부가되는 시그널링 정보(즉 복구 패킷 부가 정보)인 복구 FEC 페이로드 식별자(Repair FEC Payload ID) 및 FEC OTI의 한 세트(suite 또는 set)에 대한 구체적인 예들을 도 11을 참조하여 설명한다.
도 11은 본 발명의 일 실시예에 따라 소스 블록 구성을 나타내기 위해 전송되는 시그널링 정보들의 일 예를 나타낸 것이다. 전송된 소스 패킷의 일부가 손실되어 FEC 복호화가 필요하게 되어 수신기에서 하나 이상의 복구 패킷을 이용하여 복호화를 진행할 때, 수신기는 FEC OTI(1102)로부터 심볼 크기 T (1001)와 NSS m(1002)을 획득하고, 소스 패킷 부가 정보(1104)로부터 SBN(401)와 SESI (402)를 획득하고, 복구 패킷 부가 정보(1106)로부터 SBL(306)을 획득하여 소스 블록 구성을 이해하고, 이들을 이용하여 수신된 소스 패킷들을 적절하게 배치하여 소스 블록을 재구성(reconstruct)한다. 여기서 SESI(402)은 수신된 각 소스 패킷이 소스 블록 내에서 세분화된 심볼 기준으로 어느 위치에서 시작되는지를 알려주기 때문에, 수신기는 상기 수신된 각 소스 패킷의 배치를 정확하게 할 수 있다. 손실된 소스 패킷에 해당되는 위치는 소실(erasure)로 처리된다.
또한 수신기는, 소스 패킷 부가 정보(1104)로부터 획득한 SBN (401)과 복구 패킷 부가 정보(1106)로부터 획득한 SBN(304) 및 ESI (305)로부터 소스 블록과 복구 패킷들 사이의 대응 관계를 인지하고, FEC 복호를 수행한다. 이때 FEC 복호기는, FEC OTI(1102)로부터 NSS, 즉 m 값을 획득하여 소스 블록을 m개의 영역으로 구분하여 복호를 수행한다. 다른 실시예로서 수신기는 소스 블록을 m개의 영역으로 구분하지 않고 심볼 크기 T 단위로 하나의 영역으로 간주하여 복호를 수행할 수도 있다. 여기서 심볼 크기 T 단위로 하나의 영역으로 간주하여 복호를 수행할 경우, 손실된 소스 패킷과 그 부가 정보의 데이터가 포함되어 있는 모든 행들은 소실로 처리된다.
도 11에 나타낸 시그널링 정보의 한 조(suite 또는 set)는 수신기에서 손실된 소스 패킷을 복구하기 위한 과정에 필요한 모든 정보를 포함하고 있다. 도 11에서 최대 소스 블록 길이(1003)는 시스템의 상황에 따라 전송될 수도 있고, 생략될 수도 있다.
도 12는 본 발명의 다른 실시예에 따른 소스 블록 구성을 도시한 것이며, 도 13은 소실된 소스 패킷들을 포함하는 소스 블록 구성을 도시한 것이다.
도 12를 참조하면, 소스 블록은 주어진 소스 패킷들을 소정 일측 길이를 가지는 2차원 배열 내에 순차적으로 배열함으로써 구성된다. 소스 블록은 4개의 영역들 Region-1, Region-2, Region-3, Region-4으로 구분되며, 각 소스 블록은 어느 한 영역의 시작점으로부터 배열되기 시작된다. 앞서 설명한 바와 같이 각 소스 블록과 다음 영역의 시작점 사이의 빈 공간은 패딩될 수 있다. 또한 적어도 일부의 소스 패킷은 적용된 프로토콜에 따른 플로우 ID 및 해당 소스 패킷의 길이 필드 중 적어도 하나와 같은 시그널링 정보를 추가적으로 포함할 수 있다.
도 13은, 도 12의 소스 블록 중 2번째와 5번째 소스 패킷들이 전송 도중 소실된 경우의 재구성된 소스 블록을 도시한 것이다. 도 14에 도시한 E-Counter들은 소실된 소스 패킷들에 대응하는 심볼 단위들을 카운트한다. 구체적으로 E-Counter-0은 각각 소스 블록의 한 열에 대응하는 부호화 심볼 단위에 대한 소실된 부호화 심볼들의 개수를 나타내며, E-Counter-2(0,1,2,3)은 각 영역에 대응하는 세분화된 부호화 심볼 단위에 따른 소실된 세분화된 부호화 심볼들의 개수를 나타내고, E-Counter-1(0,1)은 2개 이상의 세분화된 부호화 심볼 단위들로 이루어진 부분 부호화 심볼 단위에 따른 소실된 부분 부호화 심볼들의 개수를 나타낸다.
도 15 내지 도 17은 E-Counter들의 비교 결과에 따라 선택된 심볼 단위에 따른 FEC 복호화를 나타낸 것이다.
도 15를 참조하면, 2,5번째 소스 패킷들에 대응하는 2,3,4번째 및 10,11,12,13번째 부호화 심볼들이 소실된 것으로 간주되며, FEC 복호기는 수신된 소스 패킷들과 복구 패킷들(즉 패리티 페이로드들)에 대한 FEC 복호를 수행함으로써, 소실된 부호화 심볼들을 복구한다. 여기서 패리티 페이로드란, 복구 패킷(또는 패리티 패킷)을 구성하는 정보 단위를 의미한다. 복구 패킷(또는 패리티 패킷)은 1개 또는 그 이상의 FEC 패리티 페이로드와 시그널링 정보(또는 복구 패킷들에 대한 프로토콜 정보)를 포함하여 구성된다.
도 16을 참조하면, Region-1 및 Region-2를 포함하는 제1 부분 영역 내에서 2,5번째 소스 패킷들에 대응하는 3,4번째 및 9,10,11,12번째 부분 부호화 심볼들이 소실된 것으로 간주되며, FEC 복호기는 수신된 소스 패킷들과 복구 패킷들(즉 패리티 서브-페이로드들) 중 제1 부분 영역의 부분 부호화 심볼들에 대해 제1 FEC 복호화(Decoding-1)를 수행하여 상기 소실된 부분 부호화 심볼들을 복구한다. 여기서 패리티 서브-페이로드란, 소스 블록의 세분화된 부호화 심볼 크기에 맞게 FEC 패리티 페이로드를 세분화한 것을 의미하며, A-Sub-payload는 A개의 서브-페이로드들로 구성된 부분 FEC 패리티 페이로드를 의미한다.
마찬가지로 Region-3 및 Region-4를 포함하는 제2 부분 영역 내에서 2,5번째 소스 패킷들에 대응하는 2,3번째 및 9,10,11번째 부분 부호화 심볼들이 소실된 것으로 간주되며, FEC 복호기는 수신된 소스 패킷들과 복구 패킷들(즉 2개의 패리티 서브-페이로드들) 중 제2 부분 영역의 부분 부호화 심볼들에 대해 제2 FEC 복호화(Decoding-2)를 수행하여 상기 소실된 부분 부호화 심볼들을 복구한다.
도 17을 참조하면, Region-1 내에서 2,5번째 소스 패킷들에 대응하는 3,4번째 및 11,12,13번째 세분화된 부호화 심볼들이 소실된 것으로 간주되며, FEC 복호기는 수신된 소스 패킷들과 복구 패킷들 중 Region-1의 세분화된 부호화 심볼들에 대해 제1 FEC 복호화(Decoding-1)를 수행하여, 상기 소실된 세분화된 부호화 심볼들을 복구한다. 마찬가지로 Region-2 내에서 3번째 및 10,11,12번째 세분화된 부호화 심볼들이 FEC 복호화(Decoding-2)를 통해 복구되며, Region-3 내에서 2,3번째 및 10,11,12번째 세분화된 부호화 심볼들이 FEC 복호화(Decoding-3)를 통해 복구되고, Region-4 내에서 2,3번째 및 10,11,12번째 세분화된 부호화 심볼들이 FEC 복호화(Decoding-4)를 통해 복구된다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (16)

  1. 순방향 에러 정정(forward error correction, FEC) 부호화 방법에 있어서,
    복수의 제1 소스 패킷들과 하나의 소스 심볼에 포함되는 세분화된 소스 심볼의 개수(m)에 기초하여, 복수의 소스 심볼들을 포함하는 소스 심볼 블록을 생성하는 과정-상기 복수의 소스 심볼들 각각은 하나 이상의 세분화된 소스 심볼들을 포함하고-과;
    FEC 부호화를 사용하여, 상기 소스 심볼 블록에 기초하여 하나 이상의 제1 복구 심볼들을 생성하는 과정과;
    상기 복수의 제1 소스 패킷들 중 적어도 하나의 제2 소스 패킷에 기초하여, 제3 소스 패킷을 생성하는 과정과;
    상기 하나 이상의 제1 복구 심볼들 중 하나 이상의 제2 복구 심볼들에 기초하여, 복구 패킷을 생성하는 과정과;
    상기 제3 소스 패킷을 전송하는 과정과;
    상기 복구 패킷을 전송하는 과정을 포함하고,
    상기 소스 심볼 블록에 포함되는 상기 복수의 소스 심볼들은 동일한 크기를 가지는 FEC 부호화 방법.
  2. 제1항에 있어서,
    상기 제3 소스 패킷은 상기 적어도 하나의 제2 소스 패킷 및 세분화된 소스 심볼 인덱스를 포함하는 FEC 부호화 방법.
  3. 제2항에 있어서,
    상기 세분화된 소스 심볼 인덱스는 상기 적어도 하나의 제2 소스 패킷의 뒤에 위치하는 FEC 부호화 방법.
  4. 제3항에 있어서,
    상기 세분화된 소스 심볼 인덱스는 상기 소스 심볼 블록에서 상기 적어도 하나의 제2 소스 패킷의 시작 위치를 지시하는 FEC 부호화 방법.
  5. 제1항에 있어서,
    상기 소스 심볼 블록은 상기 복수의 제1 소스 패킷들 각각의 길이, 상기 복수의 제1 소스 패킷들 및 상기 복수의 제1 소스 패킷들에 대응하는 패딩 데이터를 포함하는 FEC 부호화 방법.
  6. 제1항에 있어서,
    상기 복구 패킷은,
    상기 하나 이상의 제2 복구 심볼들과, 상기 하나 이상의 제2 복구 심볼들에 대응되는 소스 심볼의 길이의 정보를 포함하는 FEC 부호화 방법.
  7. 제6항에 있어서,
    상기 하나 이상의 제2 복구 심볼들에 대응되는 소스 심볼의 길이의 정보는 상기 하나 이상의 제2 복구 심볼들 앞에 위치하는 FEC 부호화 방법.
  8. 제1항에 있어서,
    상기 m을 포함하는 시그널링 정보를 수신하는 과정을 더 포함하는 FEC 부호화 방법.
  9. 순방향 에러 정정(forward error correction, FEC) 부호화 장치에 있어서,
    적어도 하나의 프로세서와 연결된 메모리;
    상기 적어도 하나의 프로세서와 연결된 송수신기; 및
    상기 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    복수의 제1 소스 패킷들과 하나의 소스 심볼에 포함되는 세분화된 소스 심볼의 개수(m)에 기초하여, 복수의 소스 심볼들을 포함하는 소스 심볼 블록을 생성하고, 상기 복수의 소스 심볼들 각각은 하나 이상의 세분화된 소스 심볼들을 포함하고,
    FEC 부호화를 사용하여, 상기 소스 심볼 블록에 기초하여, 하나 이상의 제1 복구 심볼들을 생성하고,
    상기 복수의 제1 소스 패킷들 중 적어도 하나의 제2 소스 패킷에 기초하여, 제3 소스 패킷들을 생성하고,
    상기 하나 이상의 제1 복구 심볼들 중 하나 이상의 제2 복구 심볼들에 기초하여, 복구 패킷들을 생성하고,
    상기 제3 소스 패킷을 전송하고,
    상기 복구 패킷을 전송하고,
    상기 소스 심볼 블록에 포함되는 상기 복수의 소스 심볼들은 동일한 크기를 가지는 FEC 부호화 장치.
  10. 제9항에 있어서,
    상기 제3 소스 패킷은 상기 적어도 하나의 제2 소스 패킷 및 세분화된 소스 심볼 인덱스를 포함하는 FEC 부호화 장치.
  11. 제10항에 있어서,
    상기 세분화된 소스 심볼 인덱스는 상기 적어도 하나의 제2 소스 패킷의 뒤에 위치하는 FEC 부호화 장치.
  12. 제11항에 있어서,
    상기 세분화된 소스 심볼 인덱스는 상기 소스 심볼 블록에서 상기 적어도 하나의 제2 소스 패킷의 시작 위치를 지시하는 FEC 부호화 장치.
  13. 제9항에 있어서,
    상기 소스 심볼 블록은 상기 복수의 제1 소스 패킷들 각각의 길이, 상기 복수의 제1 소스 패킷들 및 상기 복수의 제1 소스 패킷들에 대응하는 패딩 데이터를 포함하는 FEC 부호화 장치.
  14. 제9항에 있어서,
    상기 복구 패킷은,
    상기 하나 이상의 제2 복구 심볼들과, 상기 하나 이상의 제2 복구 심볼들에 대응되는 소스 심볼의 길이의 정보를 포함하는 FEC 부호화 장치.
  15. 제14항에 있어서,
    상기 하나 이상의 제2 복구 심볼들에 대응되는 소스 심볼의 길이의 정보는 상기 하나 이상의 제2 복구 심볼들 앞에 위치하는 FEC 부호화 장치.
  16. 제9항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 m을 포함하는 시그널링 정보를 수신하도록 더 구성되는 FEC 부호화 장치.
KR1020120112070A 2012-10-09 2012-10-09 방송 및 통신 시스템에서 수신 패킷들의 복호 방법 및 장치 KR101951659B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020120112070A KR101951659B1 (ko) 2012-10-09 2012-10-09 방송 및 통신 시스템에서 수신 패킷들의 복호 방법 및 장치
PCT/KR2013/008863 WO2014058182A1 (en) 2012-10-09 2013-10-04 Method and apparatus for decoding received packets in broadcasting and communication system
EP18197812.3A EP3493442B1 (en) 2012-10-09 2013-10-04 Method and apparatus for coding received packets in a broadcasting and communication system
EP13844943.4A EP2907238A4 (en) 2012-10-09 2013-10-04 METHOD AND DEVICE FOR DECODING RECEIVED DATA PACKETS IN A BROADCASTING AND COMMUNICATION SYSTEM
US14/046,209 US9705640B2 (en) 2012-10-09 2013-10-04 Method and apparatus for decoding received packets in broadcasting and communication system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120112070A KR101951659B1 (ko) 2012-10-09 2012-10-09 방송 및 통신 시스템에서 수신 패킷들의 복호 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20140045828A KR20140045828A (ko) 2014-04-17
KR101951659B1 true KR101951659B1 (ko) 2019-02-25

Family

ID=50433749

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120112070A KR101951659B1 (ko) 2012-10-09 2012-10-09 방송 및 통신 시스템에서 수신 패킷들의 복호 방법 및 장치

Country Status (4)

Country Link
US (1) US9705640B2 (ko)
EP (2) EP3493442B1 (ko)
KR (1) KR101951659B1 (ko)
WO (1) WO2014058182A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150278022A1 (en) * 2012-10-26 2015-10-01 Telefonaktiebolaget L M Ericsson (Publ) METHODS AND ARRANGEMENTS FOR HANDLING FILE REPAIR DURING MBMS OR eMBMS DELIVERY
TWI523465B (zh) * 2013-12-24 2016-02-21 財團法人工業技術研究院 檔案傳輸系統和方法
WO2018204758A1 (en) * 2017-05-04 2018-11-08 Interdigital Patent Holdings, Inc. Low complexity encryption with fountain codes
US11271685B2 (en) 2017-12-29 2022-03-08 Limited Liability Company “Radio Gigabit” Method of hybrid automatic repeat request implementation for data transmission with multilevel coding
RU2674316C1 (ru) * 2017-12-29 2018-12-06 Общество с ограниченной ответственностью "Радио Гигабит" Способ реализации гибридного автоматического запроса на передачу при использовании многоуровневого кодирования данных

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732325B1 (en) 2000-11-08 2004-05-04 Digeo, Inc. Error-correction with limited working storage
US7660245B1 (en) 2004-09-16 2010-02-09 Qualcomm Incorporated FEC architecture for streaming services including symbol-based operations and packet tagging

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1323456C (en) * 1989-09-11 1993-10-19 Douglas James Millar Transmission error protection for tdma digital channels
US6004028A (en) * 1994-08-18 1999-12-21 Ericsson Ge Mobile Communications Inc. Device and method for receiving and reconstructing signals with improved perceived signal quality
US6697985B1 (en) * 2000-10-04 2004-02-24 Actelis Networks Inc. Predictive forward error correction redundancy
US7509563B2 (en) * 2002-05-06 2009-03-24 Actelis Networks (Israel) Ltd. Flexible forward error correction
US20060077890A1 (en) 2004-10-07 2006-04-13 Nokia Corporation Efficient source blocking algorithm for FEC for MBMS streaming
KR100877078B1 (ko) 2005-10-05 2009-01-07 한국전자통신연구원 Mbms 수신 시스템에 있어서의 에러 정정 방법 및 장치
US7634706B1 (en) * 2005-11-22 2009-12-15 Seagate Technology Llc Majority-detected erasure enhanced error correction
US8732558B1 (en) * 2007-04-25 2014-05-20 Samsung Electronics Co., Ltd. MPE-FEC system capable of selecting an FEC mode, a forward error correcting method performed in the MPE-FEC system, and an FEC mode selecting method performed in the MPE-FEC system
US8769374B2 (en) * 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732325B1 (en) 2000-11-08 2004-05-04 Digeo, Inc. Error-correction with limited working storage
US7660245B1 (en) 2004-09-16 2010-02-09 Qualcomm Incorporated FEC architecture for streaming services including symbol-based operations and packet tagging

Also Published As

Publication number Publication date
EP3493442B1 (en) 2021-08-04
EP2907238A4 (en) 2016-06-22
WO2014058182A1 (en) 2014-04-17
KR20140045828A (ko) 2014-04-17
EP2907238A1 (en) 2015-08-19
US9705640B2 (en) 2017-07-11
EP3493442A1 (en) 2019-06-05
US20140101521A1 (en) 2014-04-10

Similar Documents

Publication Publication Date Title
JP6689511B2 (ja) 順方向エラー訂正スキームを使用するパケット送受信装置及び方法
US10361810B2 (en) Data packet transmission/reception apparatus and method
KR101983032B1 (ko) 방송 및 통신 시스템에서 패킷 송수신 장치 및 방법
US9246630B2 (en) Method, device, and system for forward error correction
US9288011B2 (en) Encoding apparatus and encoding method in data communication system
KR101951659B1 (ko) 방송 및 통신 시스템에서 수신 패킷들의 복호 방법 및 장치
KR20120137198A (ko) 통신 시스템에서 패킷 송수신 장치 및 방법
Nazir et al. Expanding window random linear codes for data partitioned H. 264 video transmission over DVB-H network
US20150006991A1 (en) Graceful degradation-forward error correction method and apparatus for performing same
US9667384B2 (en) Apparatus and method for transmitting and receiving forward error correction packet
EP3125455B1 (en) Method and apparatus for generating and recovering packet in broadcasting and/or communication system
KR101259659B1 (ko) 중요도에 따라 손실 복원율을 차별화하는 비균일 랩터 코딩방법
KR20130126829A (ko) 통신 시스템에서 패킷 송수신 장치 및 방법
KR101953580B1 (ko) 영상회의 시스템에서 데이터 송수신 장치 및 방법
KR20150046700A (ko) 오류 정정 부호를 사용하는 통신 시스템에서 패킷 송수신 기법
KR20140027586A (ko) 방송 및 통신 시스템에서 패킷 송수신 장치 및 방법
KR20140011514A (ko) 통신 시스템에서 데이터 송수신 장치 및 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant