Resumo

  • RFC 5393 mostrou como menos de dez mensagens SIP válidas podiam preparar uma árvore potencial de 2^71; com vários AORs, o volume ultrapassa N! antes que caminhos distintos repitam uma identidade.
  • Max-Breadth limita ramos concorrentes, mas o crédito retorna após a resposta final. O RFC afirma que o mecanismo espalha o tráfego por mais tempo e não reduz o agregado.
  • Grafo de registros, Via, loop ou espiral, pico ativo, ramos acumulados e história preservada em gateways/B2BUAs formam recibos diferentes.

O crédito saiu de uma chamada e entrou na seguinte

Em cada contexto de resposta, o proxy recebe Incoming Max-Breadth e calcula Outgoing Max-Breadth como a soma alocada a solicitações ainda sem resposta final. A soma nunca pode ultrapassar o orçamento de entrada.

Com oito destinos e orçamento quatro, quatro transações começam. A primeira falha e deixa de contar; o crédito liberado abre o quinto destino. A sequência pode visitar todos os oito sem registrar cinco ramos ativos. O painel de simultaneidade está certo e, isolado, induz a conclusão errada.

O desenho sem reaproveitamento foi discutido. Ele limitaria o total a um múltiplo constante, mas reduziria a capacidade legítima de alcançar contatos e poderia quebrar ambientes existentes. RFC 5393 preferiu preservar o fork sequencial e dar ao operador tempo para detectar o abuso.

Por isso, qualquer afirmação de “limite quatro” precisa dizer quatro o quê. O padrão limita trabalho em andamento; não promete quatro tentativas por vida, quatro saltos ou quatro contatos.

O multiplicador estava no catálogo de contatos

Dois serviços proxy/registrar podiam manter quatro AORs. Cada endereço de P1 registrava os dois de P2 como contatos, e vice-versa. Um INVITE virava dois, quatro, oito. Mensagens e contas podiam ser válidas; o perigo vinha da composição das autorizações.

A árvore avançava até Max-Forwards chegar a zero. Partindo do valor recomendado 70, haveria 2^71 - 1 solicitações. Se o processamento durasse mais do que Timer C, respostas 408 e CANCELs acrescentariam tráfego e estado.

O RFC relata uma execução no SIPit com Max-Forwards 20 e mais de dois proxies. Eles se bombardearam por horas; a conclusão de um INVITE foi extrapolada para pouco menos de dez dias. Equipamentos que reiniciaram voltaram ao ataque quando conservaram os registros.

Reiniciar a máquina não revoga o grafo. É a diferença entre saúde de processo e remoção da causa. A continuidade operacional precisa identificar qual estado durável continua autorizando novas ramificações.

A repetição foi resolvida antes da combinatória

No caso simples, detectar o loop reduz drasticamente o trabalho: o texto calcula 14 mensagens no primeiro cenário e 10 na variação de um servidor. Assim, um proxy que encaminha a mais de um local precisa garantir que não está participando de uma volta idêntica.

O segundo componente de branch no Via depende de Request-URI, Route e todos os dados usados pela lógica de localização. Se o proxy reencontra sua marca e recalcula o mesmo valor, devolve 482. Se os dados mudaram, trata o percurso como espiral legítima.

Essa comparação só funciona se o passado chegar intacto. Remover ou alterar o Via destrói a capacidade de outro nó reconhecer a própria passagem. Dois intermediários que escondem história podem criar uma volta invisível para ambos.

Com N AORs apontando para todo o conjunto, o problema aparece antes de qualquer repetição. Todas as permutações das outras N-1 identidades podem ser percorridas; o último fork gera N! solicitações. A tabela vai de 64 para quatro AORs a 1.956 para seis, 109.600 para oito e 9.864.100 para dez.

Não é previsão de tráfego comum. É a prova de que deduplicar histórico repetido não limita a quantidade de históricos novos. Unicidade local e custo global são políticas diferentes.

Profundidade, largura e total não são sinônimos

Max-Forwards limita saltos. Max-Breadth limita ramos ativos. O RFC proíbe diminuir a largura a cada salto para fazê-la controlar distância. O acumulado de ramos é um terceiro eixo.

Uma resposta 440 significa que o plano paralelo não cabe e o proxy não quer serializar nem redirecionar. Não significa que o trabalho futuro acabou. Com valor um, o fork sequencial continua permitido.

A seção de segurança é direta: Max-Breadth não reduz o tráfego agregado, apenas o distribui ao longo do tempo. Várias raízes podem encher gradualmente o sistema. A vantagem é manter recursos disponíveis para observar transações pendentes, identificar AORs e intervir.

Sem essa intervenção, o ataque apenas fica mais lento. Monitorar pico sem acumulado transforma uma defesa de sobrevivência em narrativa de prevenção.

O B2BUA escolhe se a história atravessa a fronteira

Um B2BUA termina uma perna SIP e cria outra. Ao ocultar topologia, pode omitir o material que mantém Max-Forwards, Via e Max-Breadth ligados à mesma jornada. RFC 5393 alerta que dois limites assim podem derrotar mutuamente suas próprias tentativas de detecção.

RFC 7332 passou a exigir cópia e decremento de Max-Forwards e transferência/aplicação de Max-Breadth entre UAS e UAC; também recomenda a detecção de loop de RFC 5393. O documento reconhece a tensão entre ofuscação e visibilidade defensiva.

O padrão publicado não comprova a configuração viva. A primazia do código exige uma chamada de teste atravessando o B2BUA real, com captura dos campos, da partilha do orçamento e da decisão 482.

Limite da evidência

As fontes sustentam os cálculos, o relato SIPit e as regras normativas. Não sustentam adoção atual, fabricante específico, frequência de exploração ou causa de incidente. 2^71, N! e 9.864.100 permanecem presos aos cenários declarados.

O ensinamento operacional é menos espetacular e mais útil: concorrência é estoque instantâneo; ramos completados são fluxo acumulado. Ambos precisam de dono, medida e limite.