# Multiprotocol Encapsulation – Forward Error Correction

MPE-FEC (Multiprotocol Encapsulation – Forward Error Correction) es el protocolo de corrección de errores usado por el estándar DVB-H, puesto que las interfaces de entrada y salida son IP.

## Objetivo

La combinación del protocolo de corrección de errores junto con su capacidad de entrelazado, proporciona un robusto mecanismo para mejorar notablemente la relación portadora a ruido (C/N) y el Efecto Doppler. Mediante la utilización de MPE-FEC cada datagrama IP, procedente de la ráfaga generada por el time-slicing, es protegido aplicando el código Reed-Solomon RS (255,191). Este tipo de código se encuentra dentro de la categoría FEC (Forward Error Correction), es decir permite la corrección de errores en recepción sin necesidad de retransmisiones.

## Entramado MPE-FEC

Debido al mecanismo de time-slicing que utiliza el estándar DVB-H se hace necesario el uso de una memoria, que será aprovechada además para llevar a cabo el entrelazado temporal y añadir un método de corrección de errores. Dichas necesidades nos llevan a la creación de la trama MPE-FEC. Dicha trama está formada por una matriz de 255 columnas y un número de filas que pueden tomar los valores 256, 512, 768 y 1024, donde cada posición corresponde a un byte.
La trama se compone de dos tablas:
    1. ADT (Aplication Data Table), corresponde a las 191 primeras columnas, y cuyo cometido es albergar los datagramas IP.
    2. RS Data Table (Reed Solomon), correspondiente a las 64 últimas columnas, y cuyo objetivo es albergar la información de paridad del datagrama IP.

### Mecanismo de relleno de la trama

Los datagramas IP son introducidos en la ADT verticalmente columna por columna, comenzando por la esquina superior izquierda. Si un datagrama IP no finaliza exactamente al final de una columna, los bits sobrantes continúan al comienzo de la siguiente columna. Por otro lado, si los datagramas IP no llenan por completo la ADT las posiciones sobrantes son rellenadas con ceros, también llamado padding.
Una vez completada la ADT se completan los 64 bytes de cada una de las filas de la RS Data Table calculando horizontalmente la paridad de las filas de la ADT (191 bytes de datgrama IP), lo que proporciona una gran capacidad de entrelazado temporal, ya las palabras código se calculan por filas (horizontalmente) mientras que los paquetes IP se introducen en la trama verticalmente. De esta manera, los bits de paridad de la tabla RS quedan esparcidos a lo largo del eje temporal.
El relleno de ceros del ADT o padding es solo utilizado para el cálculo del RS Data Table, y no para la transmisión.
De la misma manera que hemos realizado el padding, es posible reducir el número de columnas de la tabla RS aplicando la técnica del puncturing, en la cual se descartan algunas columnas reduciendo el nivel de protección. Es por ello que, cuanto más larga sea la trama, mayor será la profundidad de entrelazado, y consecuentemente mayor la robustez frente a la transmisión en un medio hostil como es el aire.

## Decodificación de la trama en recepción

Gracias al mecanismo de detección de errores (CRC-32) proporcionado por el protocolo IP, solo llegaran al descodificador MPE-FEC las secciones del datagrama IP recibidas correctamente.
El descodificador coloca columna a columna en su trama MPE-FEC destino los datagramas y las RS que han llegado correctamente. Esta trama contendrá huecos correspondientes a las secciones que se han perdido.
Una vez completada la trama destino, y debido a la robustez de descodifación del protocolo RS(255 191), es posible completar los huecos hasta un total de 64 bytes por fila.
Esta potente capacidad de corrección de errores, junto con el entrelazado temporal, posibilitan una gran reducción en la relación portadora a ruido (C/N) requerida. Algunos estudios muestran como la mejora introducida en la relación C/N es similar a la que se alcanzaría utilizando técnicas de diversidad de antena.