Resumo
- O RFC 5285, substituído pelo RFC 8285, define o número dentro do elemento RTP como identificador local. A URI define formato e significado, e
extmapregistra o vínculo no escopo negociado. - Preservar o pacote não basta: gravação, failover e observabilidade precisam manter a época de oferta/resposta, o grupo BUNDLE, a direção e a versão do decodificador. Receber, interpretar, agir e comprovar resultado são recibos separados.
O problema apareceu durante um failover. O gravador secundário recebeu os mesmos fluxos, com sequência contínua e extensões intactas. Ainda assim, o índice de “atividade de fala” mudou abruptamente. A nova instância tinha os pacotes, mas não a oferta e a resposta que ligavam o ID 3 à extensão usada naquela chamada. Aplicou um valor padrão aprendido em outro ambiente.
A redundância preservou o transporte e perdeu o contrato.
O RFC 5285 nasceu para tornar viável carregar vários metadados pequenos no espaço de extensão do cabeçalho RTP. Repetir uma URI longa em cada pacote seria caro. Reservar um código mundial para cada experimento seria rígido. A solução foi usar um número curto como índice local e manter o nome estável — uma URI absoluta — na sinalização. Em SDP, a=extmap:<valor> <URI> materializa essa relação.
O RFC 8285 substituiu o documento de 2008. Ele atualizou o uso das formas de um e dois bytes e as regras para BUNDLE, mas manteve o limite de autoridade do número: não existe alocação estática dos IDs locais.
Um número econômico depende de um contexto caro de perder
Na forma de um byte, há catorze IDs utilizáveis. A forma de dois bytes amplia o espaço. Essa economia é adequada para informações repetidas em alta frequência, como nível de áudio, deslocamento temporal, MID, RID ou marcação de quadro.
O registro IANA cataloga as URIs dessas extensões e os documentos que lhes dão significado. Ele não diz que o número 3 terá a mesma função em todas as chamadas. Duas sessões podem usar 3 para coisas distintas sem violar a norma.
Por isso, uma tabela global 3 → audio-level é um erro arquitetural, mesmo que funcione por meses. O dado completo inclui o escopo da declaração extmap, a seção de mídia, o grupo BUNDLE quando houver, a direção, os atributos da extensão e a época de negociação em vigor.
Se a sinalização não foi capturada, o sistema deve registrar uma ausência específica: mapeamento_não_resolvido. Ainda é possível medir chegada, atraso, perda e ordenação. Também é possível preservar os bytes para uma interpretação posterior. O que não é legítimo é chamar uma suposição frequente de evidência.
O parser conhece a moldura; a URI conhece o conteúdo
O campo de perfil na extensão RTP permite reconhecer se aquele pacote usa a forma de um ou dois bytes. O parser lê ID, comprimento, valor e preenchimento. Quando tudo fecha, há um recibo de formato.
Depois, o ID precisa encontrar uma URI na configuração aplicável. Um decodificador específico dessa URI precisa aceitar o valor. Só então existe um recibo semântico. Um painel que mostra apenas “extensão processada” apaga o ponto exato em que uma interpretação errada pode entrar.
O modo misto é um bom teste. O RFC 5285 proibia alternar formas no mesmo fluxo. O RFC 8285 permite a alternância quando todos os receptores têm capacidade conhecida, em geral negociada por extmap-allow-mixed. Cada pacote continua usando uma única forma indicada; a permissão vale para a sequência de pacotes do fluxo.
Ver um pacote de dois bytes não prova que o receptor aceitou o modo misto. Ver a proposta no offer não prova que o answer concordou. O sistema de evidência precisa guardar proposta, aceitação e execução como fatos diferentes.
Atualizar a sessão não autoriza trocar o dicionário
IDs válidos precisam ser únicos no escopo aplicável. Uma atualização pode adicionar ou remover extensões e mudar a direção. Ela não pode remapear um ID válido para outra URI. Essa estabilidade impede que mídia em trânsito seja interpretada por dois vocabulários.
Para um gravador, a consequência é temporal. Não basta anexar o SDP mais recente ao arquivo final. Cada mudança cria uma época, e os pacotes anteriores continuam pertencendo à época anterior. A correlação exige relógio, ordenação e um ponto de vigência verificável.
Valores entre 4096 e 4351 existem para oferecer alternativas mutuamente exclusivas ou candidatos além do espaço válido. O respondente pode escolher um e remapeá-lo para um ID livre que possa ir no fio. O número alto é uma possibilidade de negociação, não uma extensão já ativa.
Também é possível declarar uma extensão como inactive. Isso preserva uma opção futura, não confirma envio. SDP responde “o que foi configurado ou permitido”; RTP responde “o que apareceu no fio”. Nenhum dos dois documentos substitui o outro.
BUNDLE muda a unidade de consistência
BUNDLE permite que várias descrições de mídia compartilhem um transporte. Isso reduz a superfície de conectividade, mas obriga o receptor a descobrir a qual seção m= um fluxo pertence. O MID carregado em extensão RTP ajuda a realizar essa associação; o RFC 9143 o exige nas descrições RTP do grupo.
Dentro do grupo BUNDLE, o RFC 8285 considera as seções parte do mesmo espaço local de IDs. A mesma URI e configuração deve usar o mesmo número em todas as seções onde aparece. Ao mesmo tempo, cada seção pode ter um conjunto diferente de extensões.
Um sistema que guarda um mapa por servidor é amplo demais. Um sistema que isola totalmente cada seção é estreito demais. A representação precisa preservar grupo, membros, configurações e época. Em um SFU, é preciso registrar ainda se IDs e valores foram mantidos, removidos ou reescritos entre cada perna.
O RtpStreamId mostra outra camada. Segundo o RFC 8852, seu valor é delimitado por fonte e sessão, e por MID quando há BUNDLE. Primeiro o ID compacto encontra a URI de RID; depois o valor RID seleciona um fluxo no próprio escopo. Chamar ambos de “identificador” não torna um substituto do outro.
Criptografia retira observação, não existência
Algumas extensões carregam metadados sensíveis. O RFC 6904 definiu proteção seletiva de valores. O RFC 9335 observou que até IDs e comprimentos podem identificar aplicação ou terminal e definiu Cryptex para proteger mais da estrutura.
Após a mudança, uma sonda intermediária pode parar de enxergar o que antes extraía. Isso não é um recibo de que a origem deixou de enviar a extensão. É um recibo de que o ponto de observação não tem mais visibilidade em claro. No endpoint autorizado, a decriptação devolve bytes, mas ainda não fornece o extmap correto por si só.
Uma cadeia auditável separa: pacote recebido; forma analisada; mapeamento recuperado; valor decodificado; uso autorizado; efeito observado. O seletor de falante pode receber um nível correto e tomar uma decisão ruim. Pode tomar uma decisão correta e o usuário ainda sofrer por congestionamento. A última etapa precisa de seu próprio sensor.
O princípio operacional é não promover uma camada a substituta das outras. Guarde a evidência bruta, a configuração que a torna legível, a decisão que a utiliza e a observação do resultado. Assim, corrigir um parser ou trocar um fornecedor não exige reescrever o passado.
Briefing para membros
Contexto aprofundado do perfil
Faça login com o nível de assinatura correto para desbloquear o briefing completo e as notas das fontes.
Apenas para Strategic Circle
Strategic Circle
Aberto a todos os leitores. Desbloqueie Briefings de perfil após se inscrever e fazer login.
Junte-se ao Strategic CircleSomente para Leadership Alliance
Leadership Alliance
Para proprietários e gestores qualificados de ativos de PI; faça login para desbloquear os briefings da Leadership Alliance.
Junte-se ao Leadership Alliance
