O protocolo MMTP (MPEG Media Transport Protocol) ´e um protocolo de camada de aplica¸c˜ao projetado para entrega confi´avel e eficiente de pacotes de m´ıdia, os cha-mados Packages. Ele foi desenhado para suportar tr´afegos de m´ıdias temporizadas e n˜ao-temporizadas, com multiplexa¸c˜ao de fluxos, c´alculo de jitter de rede baseado em amostras temporais (timestamps) e indica¸c˜ao de requerimentos de QoS, caracter´ısticas estas essenciais para transporte e entrega dos v´arios tipos de m´ıdias.
O MMTP pode ser transportado sobre protocolos existentes, tais como UDP (User Datagram Protocol) e IP nas camadas inferiores de rede, com cada pacote MMTP podendo transportar um ´unico payload MMT. A fragmenta¸c˜ao e agrega¸c˜ao de payloads s˜ao meca-nismos providos apenas atrav´es dos formatos de cabe¸calhos dos pr´oprios payloads, e por-tanto n˜ao s˜ao especificados no MMTP. O padr˜ao MMT tamb´em n˜ao especifica o suporte ao controle de congestionamento do tr´afego, que ´e delegado aos aplicativos/protocolos de camadas de rede da entidade de transmiss˜ao. Por´em, o protocolo MMTP suporta a multiplexa¸c˜ao dos dados de m´ıdia e mensagens de sinaliza¸c˜ao no mesmo fluxo de pacotes MMTP.
O protocolo prevˆe ainda suporte `a prioriza¸c˜ao de tr´afego, nas camadas inferiores e nos elementos intermedi´arios de rede, atrav´es do mapeamento das informa¸c˜oes dos cam-pos de prioridade do cabe¸calho MMTP, tais como: type of bitrate, sensitivity, tranmis-sion priority e flow label. Por exemplo, com uso de DiffServ (Differentiated Services -IETF RFC 2474) pode ser realizado o mapeamento dos 6bits de valores DSCP (Differen-tiated Services Code Point) – campo DS do cabe¸calho IP, para a informa¸c˜ao de prioriza¸c˜ao definida no cabe¸calho do protocolo MMTP.
S˜ao tamb´em oferecidos meios para c´alculo e remo¸c˜ao dojitter introduzido pelas cama-das inferiores de rede, de forma que possa ser alcan¸cado umdelay constante fim-a-fim na entrega dos pacotes. Atrav´es da introdu¸c˜ao do campo detimestampno cabe¸calho MMTP, ojitter pode ser facilmente calculado, sem a necessidade de protocolos e informa¸c˜oes adi-cionais de sinaliza¸c˜ao.
Para empacotamento de uma MPU que contenha dados de m´ıdia temporizada, o padr˜ao MMT definiu no cabe¸calho MMTP, o campo tipo que relaciona diretamente a
modo de formata¸c˜ao espec´ıfica do payload, e um campo de 2bits (V) que indica o n´umero de vers˜ao do protocolo. Este ´ultimo campo deve ser preenchido com o valor ”00”para compatibilidade com a norma ISO/IEC 23008-1 (2017), ou com o valor ”01”para suporte de QoS (Quality of Service). Nas Figuras 12 e 13, se encontram as estruturas do pacote MMTP(incluindo cabe¸calho, payload e complemento) respectivamente para V=0 e V=1.
Figura 12: Estrutura do pacote MMTP (V=0).
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Fonte: Padr˜ao MMT (ISO/IEC 23008-1, 2017).
Figura 13: Estrutura do pacote MMTP (V=1).
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
V=1 C FEC X R Q F E B I type packet id
timestamp
packet sequence number packet counter
r TB DS TP flow label extension header
payload data source FEC payload ID
Fonte: Padr˜ao MMT (ISO/IEC 23008-1, 2017).
A sintaxe dos campos do protocolo MMT, para a vers˜ao 01, s˜ao listadas a seguir:
V (VERSION NUMBER OF PROTOCOL): 00, 01 suporte a QoS;
C (PACKET COUNTER FLAG): 1-habilitado;
FEC (FEC TYPE): 0-Sem FEC, 1- pacote com identifica¸c˜ao do payload FEC na origem – source FEC payload ID, 2- pacote de reparo FEC Modo 0, 3- pacote de reparo FEC Modo 1;
X (EXTENSION FLAG): 1- campo Header extension – extens˜ao de cabe¸calho est´a presente;
R (RAP FLAG): 1-Payload cont´em um RAP(Random Access Point);
Q (QOS CLASSIFIER FLAG): 1-informa¸c˜ao de QoS ´e utilizada;
F (FLOW IDENTIFIER FLAG): 1-indica a presen¸ca do identificador de fluxo no pacote;
E (FLOW EXTENSION FLAG): 1-Mais do que 127 fluxos individuais + 1 byte no extension header;
B (COMPRESSION FLAG): 0- header de tamanho m´aximo, 1- header de tamanho reduzido;
I (INDICATOR FLAG): 1- indica que o header total deve ser usado como uma refe-rencia;
TYPE (TYPE OF PAYLOAD): 0x00- MPU, 0x01- generic object, 0x02- mensagem de sinaliza¸c˜ao, 0x03- s´ımbolo de reparo, 0x04-3F - reservado;
PACKET ID: valor inteiro utilizado para distinguir um Asset;
TIMESTAMP: instante de entrega do pacote MMTP basedo no hor´ario UTC – NTP vers˜ao 4;
PACKET SEQUENCE NUMBER: valor inteiro de 32-bits usado para distinguir pa-cotes com o mesmo packet id;
PACKET COUNTER: valor inteiro de 32-bits para contagem de pacotes MMTP;
RESERVED: reservado;
TYPE OF BITRATE: 00- taxa constante de bits, 01- taxa vari´avel de bits, 1011 -reservado;
DELAY SENSITIVITY: 111- conversacional, 110- fluxo ao vivo, 101- sens´ıvel a atraso,
100- interativo, 011- fluxo streaming, 010- servi¸co non-real-time, 000-001 - reservado;
TRANSMISSION PRIORITY: prioridade de transmiss˜ao para pacote de m´ıdia, quando reliability flag = 0;
FLOW LABEL: identificador de fluxo – mapeado por opera¸c˜ao de QoS na aplica¸c˜ao ou atrav´es do ADC - varia de 0 a 127;
EXTENSION HEADER: informa¸c˜ao definida pelo usu´ario;
PAYLOAD DATA: carga ´util de dados;
SOURCE FEC PAYLOAD ID: campo de 32-bits usado somente com tipo de FEC = 1 para prote¸c˜ao AL-FEC em FEC Payload ID modo 0.
E nas Tabelas 1 e 2, se apresentam os tipos de dados e respectivas unidades de dados, tamb´em para campos de vers˜ao igual a ”0”e ”1”.
Tabela 1: Tipos de dados e defini¸c˜ao das unidades de dados (V=0).
Valor Tipo de dados Defini¸c˜ao da unidade de dados
0x00 MPU um fragmento formato-m´ıdia de MPU
0x01 objeto gen´erico um objeto gen´erico, por exemplo uma MPU completa, ou um objeto de qualquer outro tipo
0x02 mensagem de sinaliza¸c˜ao uma ou mais mensagens de sinaliza¸c˜ao, ou um fragmento de uma mensagem de sina-liza¸c˜ao
0x03 s´ımbolo de reparo um s´ımbolo de reparo completo 0x04∼ 0x1F reservado para uso ISO para uso ISO
0x20∼ 0x3F reservado para uso privado para uso privado Fonte: Padr˜ao MMT (ISO/IEC 23008-1, 2017).
Tabela 2: Tipos de dados e defini¸c˜ao das unidades de dados (V=1).
Valor Tipo de dados Defini¸c˜ao da unidade de dados
0x0 MPU um fragmento formato-m´ıdia de MPU
0x1 objeto gen´erico um objeto gen´erico, por exemplo uma MPU completa, ou um objeto de qualquer outro tipo
0x2 mensagem de sinaliza¸c˜ao uma ou mais mensagens de sinaliza¸c˜ao, ou um fragmento de uma mensagem de sina-liza¸c˜ao
0x3 s´ımbolo de reparo um s´ımbolo de reparo completo 0x4 ∼ 0x9 reservado para uso ISO para uso ISO
0xA ∼0xF reservado para uso privado para uso privado Fonte: Padr˜ao MMT (ISO/IEC 23008-1, 2017).