Resumo

  • A RFC 3326 permitiu que uma solicitação SIP carregasse o motivo de seu envio, usando uma causa SIP ou Q.850 de uma interconexão telefônica.
  • O cabeçalho não altera o processamento SIP. CANCEL continua cancelando; Reason pode informar que outro ramo já completou a chamada.

Um ramo atendeu; os outros ainda precisavam parar

Um proxy envia um INVITE por vários ramos. Um destino responde 200 OK, mas os outros telefones talvez continuem tocando. O proxy envia CANCEL a esses ramos. O que interrompe o toque é o método SIP CANCEL, não um cabeçalho que descreve o ocorrido.

Publicada em dezembro de 2002, a RFC 3326 deu ao proxy uma forma de anexar a explicação: Reason: SIP;cause=200;text="Call completed elsewhere". O serviço que recebe o pedido pode distinguir uma chamada atendida em outro ramo de uma chamada abandonada antes da resposta. Isso pode afetar o registro de chamadas perdidas ou a interface, embora a ação protocolar imediata seja idêntica.

Essa separação é a escolha central do projeto. O SIP já tinha códigos de estado para respostas. Mas a mesma solicitação pode ser emitida por motivos diferentes, e normalmente não carrega a resposta que a motivou. Reason associa a causa à solicitação que age sobre ela. É metadado explicativo, não um segundo canal de comandos.

A causa tinha um sistema de origem

A RFC 3326 qualifica os valores pelo protocolo. SIP indica que o parâmetro cause contém um código de estado SIP; Q.850 identifica um valor decimal de causa do sistema de sinalização telefônica da ITU-T. Assim, um gateway pode preservar uma causa de liberação da rede telefônica em uma mensagem SIP. O número, sozinho, não basta: o nome do protocolo identifica o sistema de numeração de origem.

O parâmetro text ajuda pessoas, mas não tem autoridade sobre o processamento. A causa pertence ao vocabulário do protocolo indicado; o método, o estado e o contexto da transação continuam no próprio pacote SIP. Interpretar cause=200 como uma resposta ou um valor Q.850 como estado SIP confundiria superfícies de controle distintas.

Também não há garantia de compreensão universal. A RFC 3326 permite que implementações ignorem valores desconhecidos e diz expressamente que Reason não afeta o processamento protocolar. A solicitação continua seguindo o SIP mesmo que o terminal descarte a explicação. A extensão pode ajudar serviços sem se tornar uma condição oculta para o estado básico da chamada.

Uma resposta que a bifurcação pode ocultar

A especificação também relacionou Reason ao problema de respostas de erro heterogêneas em chamadas bifurcadas. Um INVITE pode receber falhas finais diferentes em cada ramo. Como o proxy geralmente espera os resultados antes de decidir o que enviar ao solicitante, um erro relevante pode ficar oculto enquanto outro ramo continua pendente. A RFC 3326 apontou como uso possível encapsular um estado final em uma resposta provisória.

O texto é deliberado: trata-se de um mecanismo candidato, não de uma garantia de que cada bifurcação exponha todos os erros nem de uma prova de que um serviço implantado resolveu o problema. O cabeçalho oferece um recipiente para uma causa; não define uma política universal de prioridade para falhas nem substitui o tratamento de respostas SIP.

A evolução manteve a fronteira

A RFC 8606 acrescentou posteriormente um parâmetro de localização ISUP às causas Q.850, permitindo preservar a origem da liberação quando esse dado estivesse disponível. A RFC 9366 flexibilizou a regra original de um valor por protocolo somente quando o protocolo registrado define o significado de valores múltiplos. Em ambos os casos, a estrutura torna a procedência mais precisa; não transforma Reason na operação.

A distinção também ajuda a ler a história do protocolo. A RFC 3087 explorou o Request-URI como contexto local de seleção de serviço; a RFC 3326 anexou a causa a uma ação SIP já escolhida. Uma selecionava o destino da solicitação; a outra explicava por que ela foi enviada. Nenhuma delas prova autenticação, autorização, todo o histórico da chamada ou um resultado posterior.

Fontes

  1. https://www.rfc-editor.org/rfc/rfc3326.html
  2. https://www.rfc-editor.org/info/rfc3326/
  3. https://www.rfc-editor.org/rfc/rfc3261.html
  4. https://www.rfc-editor.org/rfc/rfc9366.html
  5. https://www.rfc-editor.org/rfc/rfc8606.html
  6. https://www.rfc-editor.org/rfc/rfc5411.html
  7. https://www.rfc-editor.org/rfc/rfc4411.html