Ferramenta gratuita
Gerador de diagrama de chamada SIP.
Escreva o fluxo, uma mensagem por linha, e veja o diagrama em escada na hora. Comece por um dos modelos prontos e baixe em SVG ou PNG.
Uma instrução por linha:
A -> B: INVITEseta cheiaB --> A: 180 Ringingtracejada (provisória)A <-> B: RTPmídia nos dois sentidosnota A: textoounota A, B: textoseparador: Encerramento,titulo: …,ativar B/desativar B
Até 12 participantes e 200 linhas. Linhas com # são comentários.
Diagrama em escada com 3 participantes (Alice, Proxy, Bob) e 14 mensagens.
Diagrama
- Requisição
- Resposta provisória (1xx)
- Sucesso (2xx)
- Redirecionamento (3xx)
- Erro (4xx, 5xx, 6xx)
- Mídia (RTP)
Fluxo em texto (18 itens)
- Fase: Estabelecimento
- Alice para Proxy: INVITE (SDP oferta)
- Proxy para Alice: 100 Trying
- Proxy para Bob: INVITE (SDP oferta)
- Bob para Proxy: 180 Ringing
- Proxy para Alice: 180 Ringing
- Bob para Proxy: 200 OK (SDP resposta)
- Proxy para Alice: 200 OK (SDP resposta)
- Alice para Proxy: ACK
- Proxy para Bob: ACK
- Nota sobre Proxy: com Record-Route, ACK e BYE passam pelo proxy
- Fase: Conversa
- Alice e Bob, nos dois sentidos: RTP (mídia direta)
- Fase: Encerramento
- Bob para Proxy: BYE
- Proxy para Alice: BYE
- Alice para Proxy: 200 OK (BYE)
- Proxy para Bob: 200 OK (BYE)
Como escrever
A sintaxe, linha por linha.
Uma instrução por linha. Erros mostram o número da linha, e as linhas válidas continuam desenhadas.
participantes: Alice, Proxy, Bob- Ordem das colunas, da esquerda para a direita. Opcional: quem aparece numa mensagem sem ter sido declarado vira participante automaticamente.
Alice -> Proxy: INVITE- Seta cheia: requisições e respostas finais. O texto depois dos dois-pontos é o rótulo.
Proxy --> Alice: 100 Trying- Seta tracejada: respostas provisórias (1xx).
Alice <-> Bob: RTP- Seta nos dois sentidos, para mídia. <--> é a versão tracejada.
Bob -> Bob: timer- Mensagem para si mesmo (um laço na linha de vida).
nota Proxy: texto- Anotação sobre um participante; nota Alice, Bob: texto ocupa o espaço entre os dois.
separador: Encerramento- Linha horizontal que divide o fluxo em fases.
titulo: Chamada básica- Título no topo do diagrama (sai também no SVG e no PNG).
ativar Bob / desativar Bob- Barra de ativação na linha de vida, entre as duas linhas.
# comentário- Linhas que começam com # ou // são ignoradas.
Como ler
Como ler um diagrama SIP.
O diagrama em escada (ladder diagram) é a forma padrão de mostrar uma chamada SIP, nos RFCs e nos traces.
Cada participante (telefone, proxy, registrar, gateway) é uma coluna, com uma linha de vidavertical. O tempo corre de cima para baixo: cada seta é uma mensagem, desenhada da coluna de quem envia para a de quem recebe. A distância vertical não indica tempo real, só a ordem.
Uma seta com nome de método (INVITE, ACK, BYE, CANCEL, REGISTER) é uma requisição; uma seta com código de 3 dígitos é uma resposta, e volta pelo mesmo caminho da requisição (o Via). Uma requisição e as respostas a ela formam uma transação; o conjunto de transações entre dois agentes, do INVITE aceito até o BYE, é o diálogo, identificado pelo Call-ID e pelos tags do From e do To.
A mídia (RTP) não é SIP: ela segue direto entre os endereços negociados no SDP e por isso costuma pular o proxy no desenho. Quando a voz não chega mas o SIP está certo, o problema está nesses endereços, não nas setas de sinalização.
Passo a passo
O fluxo básico, mensagem por mensagem.
O modelo “Chamada básica” da ferramenta: Alice liga para Bob através de um proxy que faz Record-Route.
1
INVITE (SDP oferta)Alice → ProxyAlice oferece a sessão: o INVITE leva no corpo um SDP com o IP, a porta e os codecs em que ela quer receber áudio.
2
100 TryingProxy → AliceO proxy avisa que recebeu e está trabalhando. O 100 Trying vale só para este salto: ele não é repassado adiante e faz Alice parar de retransmitir o INVITE.
3
INVITE (SDP oferta)Proxy → BobO proxy descobre onde Bob está registrado e repassa o INVITE, acrescentando o seu Via (e o Record-Route, para continuar no caminho).
4
180 RingingBob → ProxyO telefone de Bob está tocando. O 180 é repassado até Alice, que gera o tom de chamada localmente.
5
180 RingingProxy → Alice6
200 OK (SDP resposta)Bob → ProxyBob atende. O 200 OK traz o SDP de resposta, com os codecs escolhidos: a partir daqui a sessão está negociada.
7
200 OK (SDP resposta)Proxy → Alice8
ACKAlice → ProxyAlice confirma o 200 com ACK. O ACK de uma resposta 2xx é uma transação nova, fim a fim; sem ele, Bob retransmite o 200 por até 32 segundos e encerra a chamada.
9
ACKProxy → Bob10
RTP (mídia direta)Alice ⇄ BobA voz vai em RTP direto entre os telefones, nos endereços dos SDPs. O proxy não vê a mídia.
11
BYEBob → ProxyBob desliga. O BYE segue a rota do diálogo (o Record-Route), por isso passa pelo proxy.
12
BYEProxy → Alice13
200 OK (BYE)Alice → ProxyAlice confirma o BYE com 200 OK e o diálogo termina.
14
200 OK (BYE)Proxy → Bob
Respostas
Provisórias e finais: a diferença que importa.
Respostas provisórias (1xx) dizem que a requisição está em andamento: 100 Trying,180 Ringing, 183 Session Progress. Elas não encerram a transação, podem vir várias e, por padrão, não são confirmadas nem retransmitidas: se uma se perder, ninguém fica sabendo. O 100 Trying vale só para um salto; as outras 1xx atravessam os proxies até quem chamou.
Quando a 1xx precisa chegar com certeza, por exemplo um 183 com SDP de early media, usa-se a extensão100rel (RFC 3262): a resposta leva Require: 100rel e RSeq, e quem chamou confirma comPRACK, que tem o seu próprio 200 OK. Veja o modelo “Early media”.
Respostas finais (2xx a 6xx) encerram a transação, e cada uma tem exatamente uma. Num INVITE, toda resposta final é confirmada com ACK: depois de um 2xx o ACK é fim a fim e abre uma transação nova; depois de 3xx, 4xx, 5xx ou 6xx o ACK é salto a salto e faz parte da transação do INVITE. Um CANCEL só tem efeito enquanto não houve resposta final; ele recebe o próprio 200 OK, e o INVITE cancelado termina com 487 Request Terminated.
Para o significado de cada código, consulte a tabela de códigos de resposta SIP. Para ver o fluxo de uma chamada real, cole as mensagens no analisador de mensagens SIP.
Dúvidas
Perguntas frequentes.
O texto que eu escrevo é enviado para algum lugar?
Não. O diagrama é montado em JavaScript no seu navegador, e os arquivos SVG e PNG também são gerados aí. O texto não vai para servidor, não entra na URL e não é guardado no navegador. A página só registra, de forma anônima, quantos participantes e mensagens o diagrama tem e qual formato foi baixado, nunca o conteúdo.
Posso usar o diagrama em documentação, apostila ou chamado de suporte?
Pode. O SVG é vetorial: abre no navegador, amplia sem perder nitidez e pode ser editado em programas de desenho vetorial como o Inkscape. O PNG sai com o dobro da resolução da tela (ou menos, em diagramas muito grandes) e cola direto em e-mail, wiki ou ticket. Guarde também o texto do fluxo, pelo botão Copiar texto, para alterar o diagrama depois.
Por que algumas setas são tracejadas?
É uma convenção desta ferramenta e de muitos livros: respostas provisórias (1xx) não encerram a transação e não são confirmadas, então aparecem tracejadas para destacar as respostas finais. Os diagramas dos RFCs usam setas iguais para tudo; você escolhe a seta em cada linha.
Por que o modelo de chamada rejeitada tem dois ACK?
Porque o ACK de uma resposta final de erro (3xx a 6xx) é salto a salto: o proxy confirma o 486 para o Bob e repassa o 486 para a Alice, que confirma para o proxy. Já o ACK de um 200 OK é fim a fim, uma transação nova que segue a rota do diálogo, como no modelo de chamada básica (RFC 3261, seções 13.2.2.4 e 17.1.1.3).
Dá para gerar o diagrama a partir de um log ou de uma captura?
Esta ferramenta desenha o fluxo que você descreve, o que é útil para documentar, ensinar ou planejar. Para ver o fluxo real de uma chamada, cole as mensagens no analisador de mensagens SIP da EDCA, que monta o diagrama em escada a partir do Call-ID, ou use o sngrep ou a opção VoIP Calls › Flow Sequence do Wireshark.
Qual o tamanho máximo do diagrama?
Até 12 participantes e 200 linhas de texto. Com muitos participantes, o diagrama rola para os lados dentro da própria caixa, inclusive no celular, e os arquivos exportados saem com o tamanho completo.
Continue
Para ir além.
- Analisador de mensagens SIP: cabeçalhos, SDP e diagrama a partir de um log
- Códigos de resposta SIP: todos os códigos e métodos, com causas comuns
- Calculadora de banda VoIP: quanto cada chamada consome por codec
- Calculadora de sub-redes IPv4 e conversor CIDR
- Códigos de resposta SIP na prática: o que cada erro quer dizer e como resolver (artigo)
- MP 1.396: o que muda para quem opera PBX e SIP trunk com a autenticação de chamadas (artigo)
- Estrutura do Protocolo SIP e SIP URI (artigo)
- Blog da EDCA
Fontes: RFC 3261 (SIP), RFC 3262(PRACK), RFC 3264 (oferta e resposta), RFC 3515(REFER) e os exemplos de fluxo do RFC 3665.
Quer dominar o SIP?
Introdução ao SIP e Wireshark básico para VoIP
Do INVITE ao BYE, com NAT, SDP e autenticação na prática. Veja também os outros cursos da EDCA.
Newsletter da EDCA
Ferramenta nova? A gente avisa.
Um resumo por semana, só quando sai coisa nova: ferramentas, artigos e cursos de VoIP, redes e programação.