Escolar Documentos
Profissional Documentos
Cultura Documentos
à colaboração digital
Introdução à Voz sobre
IP e Asterisk
Mídias de Suporte à Colaboração Digital
Autor
Jacir L. Bordim
Revisão técnica
Alex Galhano Robertson
Antônio Tadeu Azevedo Gomes
Colaboradores
Bruno Correa
Sérgio Francisco
Supervisão técnica
Renato Duarte
Coordenação acadêmica
Derlinéa P. M. Miranda
Editor
Pedro Sangirardi
Design
Tecnodesign
Coordenação geral
Luiz Coelho
Versão
1.1.0
Este material didático foi elaborado com fins educacionais. Solicitamos que qualquer erro encontrado ou dúvida com relação ao
material ou seu uso seja enviado para a equipe de elaboração de conteúdo da Escola Superior de Redes, no e-mail info@esr.rnp.br.
A Rede Nacional de Ensino e Pesquisa e os autores não assumem qualquer responsabilidade por eventuais danos ou perdas, a pessoas
ou bens, originados do uso deste material. As marcas registradas mencionadas neste material pertencem aos respectivos titulares.
Escola Superior de Redes
A Escola Superior de Redes (ESR) é a unidade de serviço da Rede Nacional de
Ensino e Pesquisa (RNP) voltada à formação de competências em Tecnologias da
Informação e Comunicação (TIC). Sua missão é a disseminação do conhecimento,
com o oferecimento de cursos práticos intensivos com carga horária de até 40 horas
de duração, voltados ao mercado de trabalho.
Apoiados por material didático exclusivo, elaborado por especialistas, os cursos são
distribuídos por cinco áreas temáticas: Administração e Projeto de Redes;
Administração de Sistemas; Segurança; Mídias de Suporte à Colaboração Digital e
Governança de TI.
Fazendo parte deste time, você está absorvendo a experiência acumulada de quem
trouxe a internet para o Brasil e continua inovando em pesquisa e desenvolvimento
na área de redes.
iii
MID1
Administração de
Videoconferência
40h
ADS1
Introdução
ao Linux
u
esto QUI 40h
ADR4
A MID2 Interconexão
Introdução à de Redes de SEG1
Voz sobre IP Computadores Introdução
e Asterisk 40h à Segurança
40h ADS2 de Redes
Administração 40h
de Sistemas
Linux ADR1
40h Arquitetura e
Protocolos de ADR6
Rede TCP-IP Tecnologias SEG2
ADS3 de Redes
40h
Adm. Sistemas Sem Fio Segurança
Linux: Redes de Redes
40h e Sistemas
e Segurança
40h
40h ADS5
Grade curricular da
Escola Superior de Redes
esr.rnp.br
GTI10
Planejamento
e Projeto de
Infraestrutura
para Datacenter
40h
GTI6
Gerenciamento
i co
Bás de Projetos de TI
GTI2
24h
Fundamentos
de Governança
GTI1 de TI
Planejamento 16h GTI3
GTI8
e Gestão
Gestão da
segurança da
Segurança
Estratégica de TI
di ário Gerenciamento
rme de Serviços de TI
informação
Informação 24h
Inte GTI4
27001,eNBR27002
NBR 27001 NBR 27002
24h
40h Governança
de TI
GTI9
24h
Gestão de
SEG4 Riscos de TI
NBR 27005
SEG3 Tratamento nç ado GTI7
de Incidentes
40h
Ava ITIL
Análise de Segurança Information Technology
Forense Infrastructure Library
40h GTI5
40h COBIT 16h
Control Objectives
for Information and
Related Technology
16h
SEG8
Engenharia
Reversa de
Código
Malicioso
40h
Áreas temáticas
Mídias de suporte à colaboração digital
Administração de sistemas
Conhecimento Segurança
Todos os cursos da ESR prévio recomendado
requerem inglês para leitura e Curso Governança de TI v
noções de informática e Internet.
Mídias de Suporte à Colaboração Digital
A interação através da internet é uma realidade entre as pessoas e organizações.
Aplicações como videoconferência, webconferência e VoIP suprem as necessidades
colaborativas de organizações e usuários domésticos, produzindo economia de
tempo e recursos. A capacitação na configuração, administração e operação das
mídias de suporte a reuniões, distribuição de áudio e vídeo, troca de arquivos e
compartilhamento de informações entre equipes e pessoas é de importância vital
nesse contexto. A Escola Superior de Redes oferece cursos preparatórios para o
domínio destas ferramentas essenciais no ambiente de qualquer organização.
A quem se destina?
\\Profissionaisque desejam aprender a utilizar e administrar recursos de
colaboração digital, para os mais diversos fins.
Convenções utilizadas
\\Texto puro
Usado no texto, opções de menu e auxiliares de teclado (Alt e Ctrl).
\\Itálico
Quando em títulos e parágrafos de texto, indica estrangeirismos, comandos e suas
opções, nomes de arquivos e referências a outras seções ou bibliografias. Quando em
largura constante, denota os parâmetros que serão indicados pelo usuário.
\\Texto em azul
Indica URLs acessíveis na internet ou no ambiente do laboratório. Podem ser
endereços de páginas, locais de rede ou endereços eletrônicos.
\\Texto em laranja
Sempre que constar nos parágrafos de texto indica uma entrada de glossário,
cuja definição deve ser vista na lateral do texto, próxima ao termo.
\\Largura constante
Indica comandos e suas opções, variáveis e atributos, conteúdo de arquivos e
resultado da saída de comandos. Quando utilizados para indicar comandos que
serão digitados pelo usuário são grifados em negrito e possuem o prefixo do
ambiente em uso (no Linux é normalmente # ou $, enquanto no Windows é C:\).
vi
\\ Parágrafo de texto com fundo laranja e ícone.
Representa notas e informações complementares como dicas, sugestões de
leitura adicional ou mesmo uma observação.
Comentários e perguntas
Para enviar comentários e perguntas sobre esta publicação:
Escola Superior de Redes RNP
Endereço: Av. Lauro Müller 116 sala 1103 – Botafogo
Rio de Janeiro – RJ – 22290-906
E-mail: info@esr.rnp.br
vii
viii
u Sumário
Capítulo 1
Histórico e conceitos básicos. . . . . . . . . . . . . . . . . . . 1
Capítulo 2
Protocolo SIP. . . . . . . . . . . . . . . . . . . . . . . . 49
Capítulo 3
Recomendação H.323. . . . . . . . . . . . . . . . . . . . . 93
Capítulo 4
Asterisk. . . . . . . . . . . . . . . . . . . . . . . . . . 125
Capítulo 5
Arquitetura do Asterisk . . . . . . . . . . . . . . . . . . . . 151
Capítulo 6
Plano de discagem. . . . . . . . . . . . . . . . . . . . . . 175
Capítulo 7
Serviços complementares. . . . . . . . . . . . . . . . . . . . 193
Capítulo 8
Distribuição de chamadas. . . . . . . . . . . . . . . . . . . 205
Capítulo 9
Unidade de Resposta Audível (URA). . . . . . . . . . . . . . . . 213
Capítulo 10
Qualidade de Serviço em VoIP. . . . . . . . . . . . . . . . . . 223
Bibliografia. . . . . . . . . . . . . . . . . . . . . . . . . 257
ix
x
1
Histórico e conceitos básicos
►► Sumário
Conceitos básicos de rede. . . . . . . . . . . . . . . . . . . . 3
Arquitetura TCP/IP . . . . . . . . . . . . . . . . . . . . . . . 3
Camadas da arquitetura TCP/IP . . . . . . . . . . . . . . . . . . 4
Endereçamento IP . . . . . . . . . . . . . . . . . . . . . . . 7
Classes de endereçamento . . . . . . . . . . . . . . . . . . . . 8
Endereços especiais . . . . . . . . . . . . . . . . . . . . . . 9
Roteamento. . . . . . . . . . . . . . . . . . . . . . . . . 10
Comunicação VoIP . . . . . . . . . . . . . . . . . . . . . . 12
Evolução do VoIP. . . . . . . . . . . . . . . . . . . . . . . 12
VoIP ≠ ToIP . . . . . . . . . . . . . . . . . . . . . . . . . 13
Vantagens e desvantagens do VoIP . . . . . . . . . . . . . . . . . 13
Benefícios do VoIP . . . . . . . . . . . . . . . . . . . . . . 14
Existem três formas de comunicação via VoIP . . . . . . . . . . . . . 17
Padronização. . . . . . . . . . . . . . . . . . . . . . . . 20
Princípios de codificação de áudio . . . . . . . . . . . . . . . . . 21
Codificação da mídia de voz. . . . . . . . . . . . . . . . . . . 24
Codec . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Codificação de forma de onda . . . . . . . . . . . . . . . . . . 25
Codificação paramétrica . . . . . . . . . . . . . . . . . . . . 26
Codificação híbrida. . . . . . . . . . . . . . . . . . . . . . 26
Padrões de codificação de voz . . . . . . . . . . . . . . . . . . 27
G.711 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
G.729 . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
G.723.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 29
iLBC. . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Arquitetura VoIP. . . . . . . . . . . . . . . . . . . . . . . 30
Projetos VoIP no Brasil . . . . . . . . . . . . . . . . . . . . . 31
1
Roteiro de Atividades . . . . . . . . . . . . . . . . . . . . . 33
Introdução à Voz sobre IP e Asterisk
2
Conceitos básicos de rede
\\Protocolo de transporte.
Arquitetura TCP/IP
\\Conjunto pioneiro de protocolos;
\\Arquitetura universal.
3
O Transmission Control Protocol (TCP) é o protocolo de transporte responsável pela
Introdução à Voz sobre IP e Asterisk
entrega confiável dos dados no destino. Na RFC 793 que o define, ele é chamado
de Host to Host Protocol, porque é um protocolo residente somente nos hosts e não
nos gateways.
TCP
Host to Host
Internet
IP
Figura 1.1
Os dados são enviados de nó a nó, cada um deles decidindo qual é o próximo (next
hop). O responsável pelo roteamento na rede é o Internet Protocol (IP).
\\Transporte;
\\Rede;
\\Enlace de dados.
3. Rede – nesta camada temos o IP, que é um protocolo de rede sem conexão
(serviço datagrama) e os protocolos Internet Control Message Protocol (ICMP),
que envia mensagens de erro, e Internet Group Management Protocol (IGMP)
para endereçamento multicast.
4
Capítulo 1 – Histórico e conceitos básicos
Telnet & NFS & Aplicação
Rlogin FTP HTTP SMTP DNS TFTP SNMP RPC
Hardware Enlace
Figura 1.2 ARP Interface RARP
de dados
O TCP monta a sua PDU (segmento TCP) e passa para o protocolo IP, que fica com
a tarefa de entregar o segmento TCP através de uma rede IP. Para isso, o protocolo
IP coloca o seu cabeçalho (header), criando assim a sua PDU, chamada de
datagrama IP ou simplesmente de pacote IP.
Nesse momento, o protocolo IP precisa se comunicar com a subrede, seja ela qual
for, para enviar o pacote IP devidamente encapsulado dentro do quadro da camada
de enlace de dados.
5
encaminhará para o próximo nó, mudando o endereço físico para o endereço do
Introdução à Voz sobre IP e Asterisk
Origem
Pacote
Pacote
Roteador2
Pacote
Figura 1.3
Destino
6
Endereçamento IP
No caso do envio de uma mensagem para uma estação situada em outra rede, a
estação de origem obtém o endereço físico do gateway para a rede de destino. Vale
ressaltar que a rede de destino não necessariamente está conectada à rede local.
Neste caso, a mensagem é transportada por várias redes intermediárias, de
gateway a gateway, preservando o endereço IP de destino, que é utilizado na
obtenção dos endereços intermediários dos gateways presentes na rota. Assim, o
encaminhamento IP é uma sequência de ciclos repetidos: análise do endereço IP,
obtenção do endereço físico da estação (se a rede de destino foi atingida) ou do
gateway de saída (se a estação pertence a uma rede remota) e envio do datagrama
para o endereço físico obtido.
Endereço IP, com seus 32 bits, torna-se demasiado grande para a notação decimal.
Por isso é utilizada a notação decimal pontuada. Os 32 bits são divididos em quatro
grupos de 8 bits cada.
7
Classes de endereçamento
Introdução à Voz sobre IP e Asterisk
Classe A N H H H
Classe B N N H H
Classe C N N N H
Figura 1.4
\\Número de rede;
\\Número de host.
Cada bit no octeto tem um peso conforme sua posição, como (128, ..., 4, 2, 1).
O valor mínimo para um octeto é 0; ele tem todos os bits 0. O valor máximo para
um octeto é 255; ele tem todos os bits 1. Portanto, todos os endereços IP no
intervalo de 0.0.0.0 a 255.255.255.255 são endereços válidos.
8
\\Classe B – utiliza somente os dois primeiros octetos para identificar a rede. Os
Endereços classe A
\\Faixa dos números das redes: 1.0.0.0 até 126.0.0.0;
Endereços classe B
\\Faixa dos números das redes: 128.1.0.0 até 191.254.0.0;
Endereços classe C
\\Faixa dos números das redes: 192.0.1.0 até 223.255.254.0;
Endereços especiais
\\RFC 1918 – Endereços privados:
\\Empresas que usam endereços IP privados terão que usar servidor proxy para
traduzir endereços privados para públicos.
A RFC 1918 (Address Allocation for Private Internets) define as faixas de endereços
que somente podem ser usados em redes privadas, os ditos endereços privados.
Esses endereços não podem ser roteados na internet. Os endereços que podem ser
9 9
roteados são os demais endereços das classes A, B e C, denominados endereços
Introdução à Voz sobre IP e Asterisk
globais ou endereços públicos, que não podem ser repetidos dentro da internet. A
utilização dos endereços públicos é controlada pelo InterNIC.
Os endereços privados, como são usados no âmbito de uma organização, não precisam
ser únicos na internet, podendo ser repetidos de uma organização para outra. Assim,
cada organização tem liberdade para usar como quiser as faixas acima definidas,
sem a necessidade de obter permissão do InterNIC para isso. Por outro lado, esses
endereços não poderão ser usados para acesso à internet, sendo necessário fazer
uma tradução desses endereços privados para públicos através de um servidor
chamado Proxy Server, que faz a função Network Address Translation (NAT).
Os bits que restam para hosts em cada bloco são denominados respectivamente de
“bloco de 24 bits”, “bloco de 20 bits” e “bloco de 16 bits”.
Roteamento
\\Roteamento é a transferência de informação da origem até o destino através de
uma rede.
10
na camada 2 (enlace de dados) do modelo OSI, enquanto que os roteadores operam
Origem Destino
Figura 1.5
Protocolos de transporte
\\Dois protocolos de comunicação fim-a-fim são definidos:
\\UDP – User Datagram Protocol;
\\TCP – Transmission Control Protocol.
Ambos são responsáveis pela utilização de múltiplas aplicações de redes entre duas
máquinas. A aplicação determina o protocolo que vai ser utilizado.
11
Comunicação VoIP
Introdução à Voz sobre IP e Asterisk
Como o UDP não é numerado, não tem controle de sequência, como a aplicação vai
reconstituir a informação de voz no destino? Neste caso é necessário um protocolo
auxiliar que numere os pacotes para que os mesmos possam ser reconstituídos
corretamente no destino. Esta nova ferramenta é o Protocolo de Tempo Real (RTP),
que será visto adiante.
Evolução do VoIP
\\1995:
\\1998:
\\Criados por:
\\Internet Engineering Task Force (IETF);
\\União Internacional de Telecomunicações (ITU).
\\Hoje:
Nos anos 90, a voz era digitalizada e comprimida para então ser transmitida pela
rede. A qualidade era ruim e só era possível a transmissão entre dois computadores.
12
Em 1996 surge o primeiro protocolo de sinalização para estabelecimento de
VoIP ≠ ToIP
\\VoIP (Voz sobre IP) versus ToIP (Telefonia sobre IP);
\\VoIP:
\\Telefonia IP:
\\Refere-se à aplicação das tecnologias VoIP na transmissão e na sinalização,
com o oferecimento de um serviço similar ao serviço convencional de telefonia.
\\Infraestrutura simplificada;
\\Portabilidade;
\\Funcionalidades acrescidas.
13
Desvantagens:
Introdução à Voz sobre IP e Asterisk
Benefícios do VoIP
\\Custos reduzidos nas comunicações;
\\Infraestrutura simplificada;
\\Portabilidade;
\\Funcionalidades acrescidas;
\\Segurança*;
Infraestrutura simplificada
Todos os serviços de comunicação (telefone, fax e internet) estão centralizados numa
única infraestrutura. A voz correrá na infraestrutura de dados, ou seja, na rede IP.
14
Portabilidade
Funcionalidades acrescidas
Por ser praticamente baseada em software, VoIP possibilita a implementação de
funcionalidades que seriam difíceis ou impossíveis em redes tradicionais de telefone:
\\Agentes de call center que utilizam telefones VoIP podem trabalhar de qualquer
local que tenha uma boa conexão com a internet.
Em relação à mão de obra qualificada, as novas gerações cada vez mais estão
conectadas com o conhecimento de computadores e redes, facilitando o aprendizado
da telefonia IP, o que é diferente da telefonia convencional, que nunca teve seu
conhecimento divulgado e massificado.
15
A limitação da rede está rapidamente sendo ultrapassada, tendo em vista que
Introdução à Voz sobre IP e Asterisk
Segurança
Hoje em dia, é uma das questões mais discutidas na comunidade VoIP. Alguns
ataques específicos no contexto da tecnologia VoIP:
\\ H.323;
Pode-se utilizar o Asterisk como um gateway, para que redes VoIP com comunicação
distinta possam se entender.
16
Existem três formas de comunicação via VoIP
Skype, MSN, Paltalk e ICQ são exemplos de softwares que utilizam VoIP e permitem
a comunicação por voz sobre a internet.
Não é uma solução trivial, como nos telefones analógicos ou digitais, para os quais
bastava a conexão na tomada telefônica do tipo RJ-11. Algumas soluções de
aprovisionamento já permitem que os telefones equipados com estes recursos sejam
capazes de receber da rede toda a sua configuração, bastando ligá-lo na rede; para
isso, a informação de cada telefone deve estar previamente armazenada em algum
servidor da rede.
17
Telefonia tradicional X telefonia IP
Introdução à Voz sobre IP e Asterisk
\\Telefonia tradicional:
\\PSTN: rede hierárquica;
\\Baseada em grandes centrais telefônicas ligadas entre si de forma
hierárquica;
\\Os terminais não possuem inteligência;
\\O endereçamento depende da região de abrangência da rede;
\\O codec utilizado nas redes digitais era o G.711;
\\Atrasos são muito controlados, com cerca de 40 ms.
\\Telefonia IP:
\\Rede não hierárquica (sob a óptica do serviço de voz);
\\Os terminais são diferentes dos usados na telefonia fixa;
\\O telefone IP pode ser um software executando em um computador ou
hardware dedicado.
A rede ToIP não é hierárquica. Além disso, o número de telefone não está associado
a uma localização geográfica. Os terminais IP para voz são inteligentes e o usuário
pode ser localizado em qualquer tempo e em qualquer lugar, com custos cada vez
mais baixos. Os terminais podem ser implementados em hardware ou em software,
fazendo com que o seu computador funcione como um telefone.
18
Capítulo 1 – Histórico e conceitos básicos
roteador
Voz analógica
sobre par trançado
PBX
voz pacotizada
assinante
Telefone IP
Rede comutada
Internet Internet
(Multiplexação TDM)
PBX
Voz analógica
sobre par trançado voz pacotizada
assinante
roteador
Telefone IP
Figura 1.6
Na telefonia TDM, cada canal ou circuito fica alocado para uma chamada, com uma
velocidade máxima de 64 Kbits/seg. Caso ocorra uma ociosidade do canal durante a
chamada, ele não poderá ser compartilhado com outra chamada. Na telefonia VoIP,
não existem os conceito de canal e circuito de transporte de pacote.
Sua velocidade não está limitada a 64 Kibts/seg, onde a velocidade permitida pela
tecnologia pode chegar a 10 Gbits/seg se for uma rede Ethernet.
Imagine uma reunião: para que haja uma comunicação efetiva entre os
participantes, é necessário que os participantes se façam entender, dominando um
mesmo idioma e vocabulário. Sem o estabelecimento de uma linguagem comum,
não haverá entendimento entre os participantes da conversa. Imaginemos agora a
mesma situação, só que com computadores distribuídos em rede, em vez de
pessoas. Nesse caso, além da infraestrutura de redes, é necessária uma linguagem
padronizada para que haja uma comunicação efetiva entre os computadores.
19
diversas organizações que trabalham em sua manutenção e desenvolvimento.
Introdução à Voz sobre IP e Asterisk
Padronização
\\Organizações que estabelecem normas e protocolos:
\\Telecomunication Standardization Sector do International Telecommunications
Union – ITU-T;
\\Internet Engineering Task Force – IETF.
\\Há padrões opcionais que também podem ser utilizados nos sistemas
de videoconferência;
\\Além disso, cada fabricante pode adicionar padrões proprietários às suas soluções:
\\Conjunto mínimo + padrões opcionais + padrões proprietários.
20
Padrões de videoconferência
O primeiro passo para a codificação de áudio consiste na captura dos sinais sonoros
(ondas sonoras) e transformação destes em sinais digitais. Como é feita a conversão
de sinais analógicos para sinais digitais?
21
A imagem abaixo mostra um exemplo de um sinal de áudio analógico que será
Introdução à Voz sobre IP e Asterisk
Figura 1.7
O próximo gráfico mostra o resultado da aplicação do PCM sobre a primeira parte da onda:
111
110
101
100
011
010
001
Figura 1.8
000
011
100
011
011
101
110
111
O eixo y mostra uma escala com um número para cada linha horizontal. Este
número está representado em binário (com 3 bits para facilitar o entendimento) e
corresponde ao símbolo que será utilizado pelo PCM para representar cada uma das
oito linhas horizontais. A cada instante de tempo (linhas verticais) o PCM verifica a
magnitude da onda e encontra a linha horizontal que mais se aproxima deste valor.
Ele usa então o símbolo associado a esta linha para representar a magnitude da
onda nesse instante. Esse processo vai se repetindo em instantes de tempo
uniformes, gerando os símbolos que representam a onda. Esses símbolos estão
exibidos no gráfico ao longo do eixo x (000, 011, 100 etc.). A linha vermelha
mostra o formato que a onda passa a ser representada após ser convertida para o
formato digital pelo PCM.
22
Cada valor obtido pelo PCM ao longo do tempo é chamado de uma amostra do sinal,
\\Compansão do sinal;
\\Voz pode variar 10.000 vezes, pois o ser humano pode falar baixinho ou
gritando e o outro lado deve ouvir perfeitamente. Como lidar com isso?
23
No processo de compansão, os sinais mais fracos são elevados e os mais fortes são
Introdução à Voz sobre IP e Asterisk
reduzidos, e assim todos podem ser representados por um número fixo de bits, pois o
sinal analógico da voz é “homogeneizado”. Dessa forma, se a pessoa fala baixo, sua
voz é amplificada antes da digitalização, e se fala alto, não é amplificada. Assim,
todos os sinais podem ser representados com os 8 bits, economizando na taxa de
transmissão via rede. As duas formas mais utilizadas de compansão são chamadas
de “lei A” (mais usada na Europa) e “lei μ” (mais usada nos Estados Unidos e Japão).
Vs
Ve Figura 1.9
Mais informações:
\\Híbrida.
\\Vocoders:
\\ Codificadores híbridos:
\\Boa taxa de bits, boa qualidade, atraso e jitter razoáveis.
24
Codec
25
Modulation (ADPCM). Os codificadores de forma de onda são os que propiciam voz
Introdução à Voz sobre IP e Asterisk
de melhor qualidade, mas são os que despendem a maior taxa de bits, em geral
com taxas superiores a 30 kbps.
Codificação paramétrica
\\Também denominados vocoders (voice coders):
\\ A classe de vocoders mais utilizada é a dos vocoders LPC (Linear
Predictive Coding);
\\Utilizam, no decodificador, um modelo de produção da voz, onde os
parâmetros são estimados e transmitidos pelo codificador em intervalos de
tempo entre 10 e 30 ms.
A natureza do sinal (voz) é essencial para obter máxima compressão, embora com
sensível perda de qualidade. Os codificadores paramétricos, também denominados
vocoders (voice coders), utilizam no decodificador um modelo de produção de voz,
cujos parâmetros são estimados e transmitidos pelo codificador a intervalos curtos
de tempo (10 a 30 ms).
Codificação híbrida
\\Combinam características dos codificadores de forma de onda e dos vocoders;
26
Em uma rede de pacote, onde os pacotes de voz podem sofrer grandes delays, a
\\G.729;
\\G.723.1;
\\iLBC.
ILBC 300 Hz – 3.4 kHz 13,33 ou 15,20 kbit/s 30 – 20 Boa Tabela 1.1
O padrão G.711 é um dos melhores oferecidos pelo mercado, com delay próximo de
zero, embora sua taxa de transmissão de bits seja muito alta (64 Kbits/seg),
consumindo muita banda em comparação com os demais codecs. Seu grande
diferencial é que está livre de licença, sendo um fator a considerar para projetos
com disponibilidade de banda. Outro fator a considerar é que este codec não
comprime, sendo utilizado em transmissão de fax.
27
O padrão G.729 possui taxa de 8 Kbits/seg e é muito utilizado no mercado. É um
Introdução à Voz sobre IP e Asterisk
O padrão G 723.1 possui taxas menores que o G.729, é um codec ITU e também
necessita de pagamento de licença. Possui taxas de 6,3 ou 5,3 Kbits/seg e seu
atraso é da ordem de 37,5 mseg.
O codec iLBC tem fonte aberta, sem exigência de pagamento de licença, sendo uma
boa opção de solução de fonte aberta. Sua taxa é da ordem de 13,3 Kbits/seg.
G.711
\\Codificador padrão ITU-T de larga aplicação;
Dois algoritmos foram definidos no padrão ITU-T G.711: U (ulaw) e A (alaw); o primeiro
é utilizado na América do Norte e no Japão, o segundo, na Europa e no resto do mundo.
G.729
\\Padrão ITU-T para codificação de sinais de voz a uma taxa de 8 kbps, com
quadros de 2 ou 8 bytes a cada 10 ms;
O codificador G.729 codifica sinais de voz a uma taxa de 8 kbps usando o modelo
CS-ACELP (Conjugate Structure Algebraic Code Excited Linear Prediction), que é
baseado no modelo de codificação CELP. Ele é projetado para operar com o sinal de
28
voz de entrada já convertido para o formato PCM uniforme, com 16 bits/amostra e
G.723.1
\\Padrão ITU-T para taxas de bits muito baixas (5,3 ou 6,3 kbps), desenvolvido
para uso em telefonia por redes de pacotes;
\\Para taxas de 5,3 kbps, usa o algoritmo ACELP (Algebraic Code Excited
Linear Prediction);
O codificador G.723.1 tem duas taxas de bits associadas a ele, de 5,3 e 6,3 kbps.
Ele codifica sinais de voz quadro a quadro usando codificação preditiva linear
baseada em análise por síntese (CPLbAS). A codificação em taxa alta (6,3 kbps) usa
um modelo MP-MLQ (Multipulse Maximum Likelihood Quantization) para gerar o
sinal de excitação, enquanto a codificação em taxa baixa (5,3 kbps) usa um modelo
ACELP (Algebraic Code Excited Linear Prediction). O tamanho dos quadros é de 30
ms (ou 240 amostras).
O codificador G.723.1 é projetado para operar com o sinal de voz de entrada já convertido
para o formato PCM uniforme, 16 bits/amostra e taxa de amostragem de 8 kHz.
iLBC
\\Internet Low Bit Rate Codec (iLBC) se encontra em caráter experimental, a ser
padronizado pela IETF;
29
Introdução à Voz sobre IP e Asterisk
\\Opera a taxas de 13,33 kbps (399 bits em quadros de 30 ms) ou 15,20 kbps
(303 bits em quadros de 20 ms).
Arquitetura VoIP
Zona 1 GK GK
Zona 2
TM MCU MCU TM
GC GC
Tel IP Tel IP
Rede IP
GW GW
...
...
... ...
Figura 1.10
Visão geral dos diversos elementos que podem interagir dentro da arquitetura VoIP:
30
\\Private Branch eXchange (PBX) – centro de distribuição telefônica pertencente a
\\fone@RNP.
Voip4All
Este projeto criou meios para que instituições federais, universidades, centros de
educação tecnológica e unidades de pesquisa possam implantar uma infraestrutura
de suporte a VoIP.
Fone@RNP
Serviço VoIP da RNP que evoluiu do projeto VoIP4All. Oferece comunicação por voz
utilizando a rede Ipê para pessoas em diversas instituições brasileiras de ensino e
pesquisa, usando:
\\Servidores;
\\ Computadores;
\\ Telefones IP;
31
A ilustração abaixo é referente à estrutura básica de uma instituição participante
Introdução à Voz sobre IP e Asterisk
do fone@RNP.
Terminal H.323
Ambiente H.323
Postgre SQL
GnuGK
Au
Consulta
ten
Gatekeeper H.323
+
tic
Apache para
aç
VQCDR Server
ão
para coleta de CDR disponibilização
de c formaç nto
e
ade
de estatísticas
bilid es
co
e
õ
de i zenam
+
nta
VQOpenPhone
Nagios para
bil
Suporte ao envio de
onta
ida
gerência do serviço
a
CDR com informação
Arm
n
de
de qualidade Asterisk
Gateway SIP/H.323
Gateway VOIP/PSTN
Consulta
PSTN LDAP
FreeRadius
Diretório para identificação
a de e autenticação e usuários
lid
Autenticação e contabilidade
abi
nt
Cliente SIP co
e
o
a çã
Ambiente SIP ic
ent
Aut Usuário que estabelece
sua conexão atrás
de um firewall
SER
Proxy SIP
VPN Server
Cliente SIP
Firewall
Figura 1.11
\\ GnuGK;
\\ OpenSER;
\\ FreeRADIUS;
\\ PostgreSQL;
\\ Apache;
\\ Nagios;
\\ LDAP;
\\ Clientes SIP/H.323.
32
1
Roteiro de Atividades
Tópicos e conceitos
\\Instalação e configuração dos clientes VoIP X-Lite, Telefone IP e ATA;
Preparando o ambiente
Antes do início das atividades, o instrutor irá iniciar a máquina virtual que contém o
software Asterisk e efetuar dois passos importantes para estabelecer usuário e senha
de acesso para a máquina virtual:
\\Usuário = root;
\\Senha = voip.
# ifconfig
33
A linha bindaddr=0.0.0.0 deverá ser alterada para:
Introdução à Voz sobre IP e Asterisk
bindaddr=ip_da_máquina_ virtual
Figura 1.12
Feito isso, agora selecione a opção SIP Account Settings..., como indicado na
próxima imagem.
34
Caso seja a primeira vez que você esteja configurando, este passo não é necessário.
Figura 1.14
35
Se a configuração da conta foi efetuada corretamente, a mensagem Ready será
Introdução à Voz sobre IP e Asterisk
Figura 1.15
Figura 1.16
Figura 1.17
36
Passo 2: clique no link Lines. Nesta página devemos configurar as contas SIP que
Figura 1.18
A Linha 1 será utilizada configurando apenas alguns dos campos existentes nas
sessões Identification e Server 1. Na sessão Identification os campos Display Name,
Address, Auth User ID, Auth Password e Label são configurados. Somente os
campos Address e Port são configurados na sessão Server 1. Substitua o XX pelo
número da sua estação.
Passo 3: para finalizar , clique no botão Submit e aguarde o telefone ser reiniciado.
Em seguida, o telefone está pronto para ser utilizado.
37
Passo 3: no canto superior direito da página abaixo clique em Admin Login:
Introdução à Voz sobre IP e Asterisk
Figura 1.19
Passo 4: na página seguinte clique em Line 1:
Figura 1.20
Passo 5: na página mostrada na próxima figura configure apenas os parâmetros abaixo:
\\Password: voip;
A figura abaixo apresenta como deve ficar a configuração do seu adaptador: Figura 1.21
38
Passo 6: clique no botão Save Settings.
Passo 1: efetue chamadas entre os três clientes. Lembrando que o X-Lite deve estar
configurado com o ramal 10XX, o Telefone IP com o ramal 20XX e o ATA com o
ramal 30XX.
Este passo deverá ser realizado em dupla, onde os integrantes da dupla efetuarão
chamadas entre si.
Esta atividade tem como finalidade a observação da importância dos codecs nos clientes.
X-Lite:
Passo 1: clique com o botão direito no cliente e acesse a opção Options; na guia
lateral selecione a opção Advanced, desative e ative os codecs de áudio e efetue
chamadas com codecs desabilitados, anotando as suas observações.
Telefone IP:
Figura 1.22
39
Na página abaixo, clique em Audio Processing:
Introdução à Voz sobre IP e Asterisk
Figura 1.23
40
Em seguida troque a ordem dos codecs de áudio apresentados na página abaixo,
Figura 1.24
ATA
Figura 1.25
41
Passo 2: na parte de baixo da página troque os codecs, efetue chamadas com todos
Introdução à Voz sobre IP e Asterisk
Figura 1.26
42
Atividade 7 – Conhecendo o Wireshark
Figura 1.27
Passo 2: escolha a interface de rede com a qual iniciaremos a captura; para isso,
selecione o botão List the available capture interfaces. A interface com a qual
trabalharemos deverá apresentar uma contagem crescente de pacotes, conforme
destacado na imagem a seguir.
Figura 1.28
43
Introdução à Voz sobre IP e Asterisk
Figura 1.29
Figura 1.30
Inicie a captura de pacotes com a interface em modo promíscuo, e logo depois inicie
sem ativar o modo promíscuo. Descreva suas observações.
44
Com a interface em modo promíscuo, inicie a captura de pacotes e observe o campo
Figura 1.31
Figura 1.32
Source Destination
Tabela 1.2
45
Com os dados obtidos, podemos observar algumas diferenças entre os pacotes TCP
Introdução à Voz sobre IP e Asterisk
Figura 1.33
Quadro capturado
em rede local
Ethernet
46
Na janela inferior temos o conteúdo total do pacote, representado na forma
\\Camada física;
\\Camada de rede;
\\Camada de transporte.
Cada camada, quando selecionada, faz com que os bytes correspondentes fiquem
destacados na janela inferior.
Usando o Wireshark:
47
Introdução à Voz sobre IP e Asterisk
48
2
Protocolo SIP
►► Sumário
Protocolo de iniciação de sessão – SIP . . . . . . . . . . . . . . . 51
Objetivos básicos do protocolo SIP. . . . . . . . . . . . . . . . . 51
Extensões ao protocolo SIP . . . . . . . . . . . . . . . . . . . 52
Características do protocolo SIP . . . . . . . . . . . . . . . . . . 53
Elementos de uma rede SIP. . . . . . . . . . . . . . . . . . . 54
Servidor Proxy . . . . . . . . . . . . . . . . . . . . . . . . 56
Servidor Stateful . . . . . . . . . . . . . . . . . . . . . . . 57
Servidor Stateless . . . . . . . . . . . . . . . . . . . . . . . 57
Utilização do servidor proxy . . . . . . . . . . . . . . . . . . . 58
Servidor de redirecionamento (Redirect Server) . . . . . . . . . . . . 58
Servidor de registro (Register Server). . . . . . . . . . . . . . . . 59
SIP URI. . . . . . . . . . . . . . . . . . . . . . . . . . 60
Mensagens SIP . . . . . . . . . . . . . . . . . . . . . . . . 61
Exemplo de SIP Request. . . . . . . . . . . . . . . . . . . . 64
Mensagem de resposta (SIP Response). . . . . . . . . . . . . . . 64
Exemplo de SIP Response. . . . . . . . . . . . . . . . . . . . 67
Protocolo SDP . . . . . . . . . . . . . . . . . . . . . . . . 71
Sessões SDP . . . . . . . . . . . . . . . . . . . . . . . . 72
Exemplo de Sessão SDP . . . . . . . . . . . . . . . . . . . . 75
Modos de comunicação SIP. . . . . . . . . . . . . . . . . . . 75
Comunicação peer-to-peer . . . . . . . . . . . . . . . . . . . . 76
Comunicação via proxy. . . . . . . . . . . . . . . . . . . . . 77
Transações e diálogos SIP . . . . . . . . . . . . . . . . . . . . 78
Cenários SIP. . . . . . . . . . . . . . . . . . . . . . . . . 79
SIP Registration . . . . . . . . . . . . . . . . . . . . . . . 80
Session Invitation. . . . . . . . . . . . . . . . . . . . . . . 81
Session Termination . . . . . . . . . . . . . . . . . . . . . . 82
Instant Messages (IM). . . . . . . . . . . . . . . . . . . . . 83
49
Roteiro de Atividades . . . . . . . . . . . . . . . . . . . . . 85
Introdução à Voz sobre IP e Asterisk
50
Protocolo de iniciação de sessão – SIP
\\Voz;
\\Bate-papo.
Em uma sessão SIP, um servidor e um cliente terão total controle sobre a sessão,
podendo ser de transmissão de voz, vídeo ou bate-papo.
Padronizado pelo IETF na RFC 1889, o Real Time Transport Protocol (RTP) foi
projetado para permitir que os receptores compensem o jitter e a perda de pacotes
introduzidos pelas redes IP. Sua última versão é o Secure RTP, publicada na RFC
3711. Inclui as seguintes informações:
51
\\Timestamps;
Introdução à Voz sobre IP e Asterisk
\\SIMPLE – grupo que foca seu trabalho nas aplicações relacionadas ao protocolo
SIP, conhecidas como instant messages e presence;
\\IPTEL – grupo com serviços focados nos problemas que dizem respeito à
resolução de nomes (URI) e ao roteamento para os protocolos de voz sobre IP;
52
\\PINT – grupo designado para estudar a arquitetura e os protocolos necessários
\\Baseado em texto;
\\Sinalização ponto-a-ponto:
\\Toda lógica está armazenada nos clientes, exceto mensagens de roteamento.
\\Baseado em texto;
53
O SIP não é um protocolo milagroso desenvolvido para solucionar todos os
Introdução à Voz sobre IP e Asterisk
\\Stateful;
\\Stateless.
\\Redirect server;
\\Registrar.
54
Arquitetura do SIP
\\UAC (User Agent Client) – o Usuário Agente Cliente executa a função de cliente
da aplicação e é responsável por iniciar uma chamada SIP;
\\UAS (User Agent Server) – o Usuário Agente Servidor é a parte com função de
servidor e permanece “ouvindo” a rede, aguardando requisições.
Registar server é a entidade lógica responsável por manter os registros dos usuários.
Ela extrai informação sobre sua localização atual, armazena-a em um banco de
dados e mapeia nomes e números em endereços IP.
Um user agent chamador atua como UAC quando envia uma mensagem de
requisição INVITE e recebe resposta das requisições feitas. Um user agent chamado
se comporta como um UAS quando este recebe a requisição INVITE e retorna uma
resposta. Esta situação muda quando a pessoa chamada decide enviar um BYE e
terminar a sessão. Neste caso, o user agent chamado (que envia BYE) se comporta
como um UAC e o user agent chamador atua como um UAS.
55
Callee A
Introdução à Voz sobre IP e Asterisk
UAC
UAS
UAS
Bye
Esta figura mostra três dispositivos SIP e um stateful forking proxy. Cada user agent
contém um UAC e um UAS. A parte do proxy que recebe a requisição INVITE do
chamador atua como um UAS. Quando repassa a requisição, cria dois UACs, cada
um responsável por um dispositivo chamado.
Servidor Proxy
\\Entidade intermediária que atua como servidor e cliente;
\\Stateless.
56
Servidor Stateful
Servidor Stateless
\\Entidade lógica que não mantêm o estado das transações feitas pelo cliente ou
pelo servidor;
\\Mais rápido do que o servidor stateful, entre outras funções podendo servir de:
\\Tradutor de mensagens;
\\Roteador.
\\Tradutor de mensagens;
\\Roteador;
\\Balanceador de carga.
57
Utilização do servidor proxy
Introdução à Voz sobre IP e Asterisk
DNS Server
2. SIP SRV
for b.com 3. proxy.b.com
Company A Company B
Joe proxy.a.com proxy.b.com
1. Invite 4. Invite
5. In
vite
Bob
5.6.7.8
6. Bye
1.2.3.4
Figura 2.2
O usuário Joe utiliza o endereço “sip:bob@b.com” para fazer uma ligação para o
usuário Bob. O user agent de Joe não sabe a localização de Bob, mas está configurado
para enviar todo o tráfego para o servidor SIP “proxy.a.com” de sua companhia.
O convite chega até “proxy.b.com”, que sabe que Bob tem condições de atender a
chamada em seu telefone. Então o proxy envia o convite para o endereço do telefone
IP de Bob, 1.2.3.4.
58
Um servidor de redirecionamento (redirect server) mapeia um endereço em zero ou
Redirect Server
ite
rily
nv
ra
I
1.
po
m
Te
ov 02
ed
3
2.
M
3. Invite
\\Username.
\\Caso o registro ocorra com sucesso, uma mensagem do tipo 200 OK será retornada.
59
sobre os locais onde uma parte pode ser encontrada, trabalhando em conjunto com
Introdução à Voz sobre IP e Asterisk
User sip:jan@iptel.org is
reachable at sip:jan@1.2.3.4:5060 CDRs
Location
UA Registrar Database
2. Store Register
sip:jan@iptel.org
1. Register Store
Location
200 OK
3. 200 OK Registrar
1.2.3.4:5060
Figura 2.4
SIP URI
\\As entidades SIP são identificadas utilizando SIP URI (Uniform Resource Identifier);
\\Exemplo:
\\SIP: joao@rnp.br
Entidades SIP são identificadas com SIP URI (Uniform Resource Identifier), tendo a
sintaxe “sip:username@domain”. O SIP URI consiste de uma parte com o nome do
usuário e uma parte com o nome do domínio, delimitados por @ (at / arroba). Os
SIP URI são similares aos endereços de e-mail, de modo que é possível utilizar seu
endereço de e-mail como um SIP URI, facilitando a memorização.
60
Mensagens SIP
\\SIP Requests:
\\Uma mensagem SIP enviada do cliente ao servidor com o propósito de invocar
uma operação em particular.
\\SIP Responses:
\\Quando um User Agent ou um servidor proxy recebe uma requisição e envia
uma resposta.
\\Endereço:
\\SIP/2.0.
\\Cabeçalho da mensagem;
\\[corpo da mensagem];
SIP Requests são mensagens enviadas por um Usuário Agente Cliente (UAC)
solicitando uma sessão a um Usuário Agente Servidor (UAS).
SIP Responses são respostas à solicitação do UAC, podendo ser enviados por
servidor proxy ou pelo UAS final.
61
Nas sinalizações telefônicas CAS e CCS era possível identificar a causa da desconexão
Introdução à Voz sobre IP e Asterisk
Para mais informações, consulte a RFC 3398 da IETF e a recomendação Q.850 do ITU.
Método Funcionalidade
OPTIONS Faz consulta ao servidor para saber suas capacidades. Tabela 2.1
62
\\CANCEL – corresponde à mensagem notify no DSS-1/Q.sig/H.323;
Tabela 2.2 UPDATE 3311 Permite a atualização dos parâmetros de uma sessão.
A definição dos métodos nas RFCs não impede que muitos pontos continuem vagos,
permitindo que fornecedores implementem soluções proprietárias ou até versões
diferentes, ainda que a RFC seja atendida. É uma diferença importante entre as RFCs da
IETF e as recomendações do ITU, que são extremamente detalhadas, deixando poucas
opções para soluções proprietárias distintas, no caso de atendimento da recomendação.
63
Exemplo de SIP Request
Introdução à Voz sobre IP e Asterisk
A primeira linha indica que a mensagem INVITE é usada para estabelecer uma
sessão. A URI da primeira linha SIP “7170@rnp.br SIP/2.0” é chamada de Request
URI e contém a URI da pessoa chamada.
Um SIP request pode conter um ou mais cabeçalhos Via, que são usados para
guardar o endereço dos servidores por onde passa a requisição. Eles são utilizados
para o roteamento de SIP Responses (respostas SIP). Esta mensagem INVITE
contém apenas um cabeçalho Via criado pelo user agent que enviou a requisição.
Sobre o campo Via podemos dizer que o user agent está executando no endereço
195.37.77.100, na porta 5060.
64
Capítulo 2 – Protocolo SIP
\\Existem seis classes do tipo SIP Responses:
\\1xx – Resposta informativa;
\\2xx – Respostas de sucesso;
\\3xx – Respostas de redirecionamento;
\\4xx – Respostas de falha de requisição;
\\5xx – Respostas de falha em servidor;
\\6xx – Respostas de falha global.
Exemplos:
\\SIP 2.0 – 486 – busy here ou destino ocupado; neste caso é uma resposta final,
já que o destino não está disponível;
\\SIP 2.0 – 180 – ringing ou chamando; neste caso não é uma resposta final,
apenas um aviso para a origem de que a chamada está em processo de
recebimento pelo destino.
1xx
Respostas provisórias, que dizem ao receptor que a requisição feita foi recebida,
mas o resultado ainda está em processo.
2xx
Respostas finais de sucesso, que o originador da requisição sempre receberá.
Também terminam transações.
65
3xx
Introdução à Voz sobre IP e Asterisk
4xx
Resposta de falha de requisição, utilizada para indicar que houve erro da parte de quem
enviou a requisição, erro na sintaxe ou devido ao mau preenchimento pelo servidor.
5xx
Resposta de falha no servidor, utilizada para indicar erro da parte do servidor.
6xx
Resposta de falha global, indicando que a resposta não pode ser completada em
nenhum servidor.
Exemplo:
Figura 2.5
Server Failure Global Failure
\\3xx – Rrdirecionamento, ação adicional deve ser tomada para completar a sessão;
\\4xx – erro de cliente, sintaxe inválida ou por algum motivo a sessão não pode
prosseguir (os motivos são listados);
66
Exemplo de SIP Response
\\Cabeçalho da mensagem:
\\Sequência estruturada de campos de cabeçalho (header fields) após a linha
de início;
\\Semelhantes aos campos do cabeçalho das mensagens HTTP;
\\Podem ser incluídos em mensagens de:
\\Requisição;
\\Resposta.
\\Opcionais;
\\Não aplicáveis.
\\Valor do parâmetro
\\Exemplo:
\\Contact: <sip:renato.duarte@rnp.br>;expires=3600
Este exemplo de SIP Response mostra que as respostas são bem similares às
requisições, exceto na primeira linha, que contém a versão do protocolo (SIP/2.0), o
código da resposta e a frase textual. Os códigos têm a intenção de serem
67
processados pelas máquinas, não sendo muito amigáveis aos humanos, mas
Introdução à Voz sobre IP e Asterisk
facilitando para que as máquinas façam o parse deles. Já a frase textual é legível
aos humanos, descrevendo o resultado do processo.
\\As mensagens SIP são codificadas usando a sintaxe HTTP v1 (RFC 2068);
Caso o tempo definido por ‘expires’ não seja suficiente, um proxy pode rejeitar a
mensagem, informando o seu tempo, e o UAC enviará uma nova mensagem com a nova
temporização. Caso isso não ocorra, a mensagem ficaria presa no proxy aguardando
tratamento, e a sessão seria encerrada por estouro de temporização (session expires).
Via Contact
To Max-Forwards
From Content-Type
Call-ID Content-Length
Obs.: Descrição completa dos campos que compõem o cabeçalho na RFC 3261,
sessão 20. Tabela 2.3
\\Via – indica o endereço para o qual a requisição deve seguir e o endereço que as
respostas devem tomar no momento da volta no roteamento das mensagens;
68
\\Contact – provê uma URI em que o significado depende do tipo de requisição ou
Encryption Response-Key
From
MIME-Version
Organization
Record-Route
Reply-To
Require
Supported
69
Introdução à Voz sobre IP e Asterisk
User-Agent
Via
ACK F12
Sessão de mídia
Bye F13
200 OK F14 Figura 2.6
Neste exemplo, o proxy server recebe uma requisição INVITE e envia uma resposta
100 (trying) para o softphone da Alice. A resposta 100 (trying) indica que a
requisição INVITE foi recebida e que o proxy está trabalhando por ela para rotear a
mensagem INVITE para seu destino. Respostas no SIP usam código com 3 dígitos
seguidos de uma frase descritiva. Esta resposta contém os mesmos campos To,
From, Call-ID, CSeq e Via, que permitem que o softphone da Alice correlacione a
resposta com a mensagem INVITE enviada. O servidor proxy “atlanta.com” localiza
o proxy no servidor “biloxi.com”, possivelmente executando um tipo de procura no
70
servidor de DNS para encontrar o servidor SIP que serve ao domínio “biloxi.com”.
Quando Bob atende à ligação, o seu telefone SIP envia uma mensagem 200 (OK)
para indicar que a ligação foi atendida. A mensagem 200 (OK) contém o corpo da
mensagem juntamente com a descrição de mídia SDP (Session Description Protocol)
do tipo de sessão que Bob está esperando estabelecer com Alice. Se Bob não
atendesse à chamada, uma mensagem de erro seria retornada em vez da mensagem
200 (OK), e a sessão de mídia não existiria.
Protocolo SDP
\\Session Description Protocol (SDP):
\\Definido pela RFC 2327;
\\Utilizado para descrever sessões;
\\Especifica apenas o formato para a descrição das informações trocadas
entre entidades SIP.
71
Introdução à Voz sobre IP e Asterisk
\\SAP;
\\RTSP;
No campo mídia, o SDP usa um código para listar os codecs que poderão ser
utilizados na sessão. Os códigos correspondentes aos codecs para os diversos tipos
de mídia são detalhados na RFC 3551.
Neste caso a mídia é áudio, utiliza a porta UDP 3456, perfil “áudio e vídeo” e aceita
os codecs 0, 3, 4 e 5. Para identificar os codecs é necessário consultar a RFC 3551.
As mensagens SDP podem ser utilizadas para conexões ponto a ponto ou ponto-
multiponto (multicast). O SDP não é utilizado apenas pelo SIP. Também pode ser
utilizado pelo protocolo de anúncio de sessão (Session Announcement Protocol –
SAP), pelo protocolo de fluxo de tempo real (Real Time Streaming Protocol – RTSP)
para aplicações baseadas em streaming, pelo correio eletrônico com aplicações
MIME (Multipurpose Internet Mail Extensions), descritas nas RFCs 2045 e 2046, e
ainda pelo protocolo HTTP, entre outros.
Sessões SDP
\\A descrição das informações de uma sessão SDP é inteiramente representada
de forma textual:
\\Facilita a portabilidade;
\\Permite uma variedade de formas de transporte;
\\Possibilita que ferramentas baseadas em texto possam gerar e processar as
descrições das sessões:
\\Codificação UTF-8;
72
Capítulo 2 – Protocolo SIP
\\Nomes dos campos e atributos restritos ao subconjunto
US-ASCII do UTF-8;
\\Campos textuais e valores dos atributos podem utilizar todo o conjunto
de caracteres do UTF-8.
\\Uma mensagem SDP é composta por uma série de linhas denominadas campos:
\\Os nomes são abreviados por uma só letra;
\\A formatação das linhas de texto está descrita da seguinte forma:
\\Tipo do campo = valor do campo.
73
Tipo do Valor do campo Presença
Introdução à Voz sobre IP e Asterisk
campo obrigatória
O SDP é um protocolo que permite fácil leitura. Portanto, em uma missão crítica é
necessária a criptografia e a autenticação de suas informações. O processo de
proteção para o protocolo SDP é definido no cabeçalho SIP, no campo Encryption. O
SDP utiliza caracteres ASCII e pode utilizar textos livres como informativos. A chave
de criptografia utilizada neste protocolo para os canais de mídia é definida na RFC
2327. O processo de criptografia e autenticação poderá ser UAC-UAS ou Proxy-UAS.
Um servidor SIP que receber um campo SDP criptografado deve enviar suas
respostas obrigatoriamente criptografadas.
Para maior detalhamento dos valores do campo de mídia RTP e codecs, consulte a
RFC 3551.
74
Exemplo de Sessão SDP
\\V – versão;
\\t – tempo que a sessão está ativa (tempo de início e tempo de parada, em segundos);
\\a – outros atributos sobre mídia, tais como modulação, portas UDP e codec.
75
\\Modo indireto – quando é necessário um servidor que conheça o endereço IP do
Introdução à Voz sobre IP e Asterisk
Comunicação peer-to-peer
(Protocolo SDP)
Agente A Agente B
1. Invite
2. 180 Ringing
3. 200 OK
4. ACK
5. Voz ( RTP )
6. Bye
7. 200 OK
Figura 2.7
Comunicação peer-to-peer
4. ACK – resposta a uma mensagem final, que só existe para a mensagem 200 OK,
confirmando as mídias;
5. Mudança de mídia pode ser realizada por “re-invites”, ou seja, novos invites na sessão;
76
Comunicação via proxy
\\Via – campo que marca o trajeto da mensagem e para onde a resposta ser
enviada. O objetivo é indicar o caminha de volta. Facilita o controle da chamada,
evita loops e auxilia a bilhetagem;
Note que o campo Route da mensagem ACK é construído com base no campo
Record-Route da mensagem TRYING. Veja os detalhes na RFC 3261.
77
Transações e diálogos SIP
Introdução à Voz sobre IP e Asterisk
\\SIP Transactions:
\\Sequência de mensagens trocada entre os elementos de uma rede SIP;
\\Inclui zero ou mais respostas provisórias e uma ou mais respostas finais;
\\Consiste de:
\\Uma requisição;
\\Várias respostas para a requisição feita.
\\SIP Dialogs:
\\Sequência de transações;
\\Representa uma relação SIP P2P (peer-to-peer) entre dois user agents;
\\Facilitao sequenciamento e o roteamento das mensagens entre os
terminais SIP;
\\São identificados por Call-ID, From tag, To tag;
\\Possuem esses campos com o mesmo valor quando pertencem ao mesmo
diálogo.
Um diálogo representa uma relação SIP peer-to-peer entre dois user agents. Tem
certo tempo de duração e é um conceito muito importante para os user agents. Os
diálogos facilitam o próprio sequênciamento e roteamento das mensagens entre os
terminais SIP. São identificados pelos campos Call-ID, From e To. Mensagens que
pertencem ao mesmo diálogo precisam ter esses campos iguais. O campo CSeq é
usado para ordenar mensagens dentro de um diálogo, contendo número que precisa
ser incrementado para cada mensagem enviada dentro de um diálogo. De outro modo,
o terminal iria manipular as requisições e retransmissões fora de ordem. O número
CSeq identifica a transação (requisição e respostas) dentro do diálogo. Isso significa
que apenas uma transação em cada direção pode estar ativa dentro de um diálogo.
78
Exemplo:
100 Trying
200 OK
ACK
Bye
200 OK
Segunda transação
Figura 2.8 Cliente Servidor
2. 100 Trying – chamada em progresso (na ISUP seria a mensagem Call Progress);
Cenários SIP
\\Alguns cenários SIP:
\\Registration;
\\Session Invitation;
\\Session Termination;
\\Instant Messages.
79
\\Session Invitation – usuário Agente Cliente (UAC) solicita o estabelecimento de
Introdução à Voz sobre IP e Asterisk
\\Instant Messages – durante uma sessão, UAC e UAS podem enviar mensagens
sem encerrar a sessão.
SIP Registration
\\Tem a finalidade de registrar um user agent;
\\Se não houver registro, usuários com intenção de se comunicar não poderão se
comunicar;
O registro de um cliente SIP é feito em um servidor de registro. Sua função é saber como
encontrar os usuários caso haja uma ligação para eles. O registro e autenticação no SIP já
pode ser feito com texto plano, mas devido a questões de segurança este método não é
mais utilizado. Recomenda-se a utilização de um desafio utilizando um número aleatório
enviado pelo servidor de registro. O cliente SIP faz algumas contas com o realm (domínio a
que ele pertence), com o número aleatório e com uma senha simétrica, portanto de
conhecimento do cliente e do servidor. Estes dados servem de parâmetros para um cálculo
também conhecido por ambos. O resultado deste cálculo é enviado ao servidor, que
autentica (ou não) o usuário. Desta forma, a senha não trafega pela rede, aumentando
significativamente a segurança na comunicação e mantendo o sigilo da senha.
80
Exemplo:
4. Neste exemplo, o registro foi aceito e confirmado pela mensagem 200 OK.
Session Invitation
\\Consiste em uma requisição INVITE, geralmente enviada ao proxy;
\\O proxy imediatamente envia uma resposta com a mensagem 100 Trying;
O convite (Invitation) talvez seja a mensagem mais comum no SIP, e deve ser
respondido imediatamente com um “100 Trying” para indicar ao chamador que o
convite foi recebido e está sendo tratado.
2. 100 Trying
3. Invite
4. 100 Trying
5. 180 Ringing
6. 180 Ringing
7. 200 OK
8. 200 OK
9. ACK
RTP Streams
Figura 2.10
81
1. Como o chamador geralmente não tem a informação do endereço de destino,
Introdução à Voz sobre IP e Asterisk
8. O proxy envia para o chamador a resposta 200 OK, para que retire o tom de
controle e abra os canais de áudio RTP/RTCP;
Session Termination
\\Tem a finalidade de terminar uma sessão;
\\Envia uma requisição BYE para o outro UA envolvido, e este responde com
uma mensagem 200 OK.
\\Via proxy.
Assim como o INVITE, a terminação da chamada pode ser realizada de forma direta ou
indireta, ou seja, a mensagem utilizada para desconexão da chamada (BYE) pode ser
enviada diretamente para o usuário na outra ponta da chamada ou através do proxy.
Em ambientes em que é necessário ter controle total das chamadas, por exemplo
para fins de bilhetagem (cobrança das chamadas), é imprescindível que o BYE seja
enviado para o proxy, para que este possa registrar o final das chamadas.
82
Exemplo:
1. BYE
1. Bye
2. Bye
Figura 2.11 Forma indireta 3. 200 OK
4. 200 OK
A figura ilustra duas situações de como pode ocorrer o término de uma sessão. A
primeira mostra a forma direta, na qual os dois users agents negociam o término da
sessão diretamente. A segunda mostra a forma indireta, onde um SIP proxy está no
meio da comunicação entre os dois clientes, roteando as mensagens.
1. Message
2. Message
3. 200 OK
4. 200 OK
5. Message
6. Message
Segundo a figura, UA1 envia mensagem para o proxy, pois não possui o endereço de
UA2 ou por programação da rede, para que o proxy tenha o controle da chamada.
83
Introdução à Voz sobre IP e Asterisk
84
2
Roteiro de Atividades
Tópicos e conceitos
\\Instalação do servidor OpenSER.
Preparando o ambiente
Passo 1: inicie a máquina virtual com sistema operacional Debian no diretório OpenSER.
85
Se for apresentada a tela abaixo, selecione a opção I copied it.
Introdução à Voz sobre IP e Asterisk
Figura 2.13
Passo 2: efetue login com o usuário root e senha rnpesr e em seguida verifique se a
máquina virtual obteve a configuração correta da rede, efetuando o comando ifconfig.
Passo 3: execute o comando apt-get update; não ocorrendo erro instale o pacote
openser com o comando apt-get install openser. Aguarde o fim da instalação.
# openserctl start
# openserctl stop
# openserctl monitor
86
Atividade 2 – Captura e identificação da troca de mensagens entre os clientes
# openserctl ul show
87
3. Detalhe o Status-Line do protocolo SIP e informe a sua versão.
Introdução à Voz sobre IP e Asterisk
Figura 2.14
88
Atividade 3 – Captura e identificação da troca de mensagens entre os clientes SIP
Passo 1: inicie o Wireshark com modo promíscuo desabilitado, insira um filtro para
o protocolo SIP e em seguida inicie os clientes X-Lite, Telefone IP e ATA. Efetue uma
chamada entre os clientes, mantenha um diálogo entre eles, finalize a captura e
salve como ligando.pcap.
89
Atividade 4 – Decodificando os pacotes capturados para escutar a conversa
Introdução à Voz sobre IP e Asterisk
entre os clientes
Figura 2.15
Na tela a seguir você poderá selecionar o canal que escutará ou ambos os canais.
Figura 2.16
90
Capítulo 2 – Protocolo SIP
2. Existem mensagens provisórias antes de 200 OK?
91
92
3
Recomendação H.323
►► Sumário
Introdução à recomendação H.323 . . . . . . . . . . . . . . . . . 94
Componentes da arquitetura H.323 . . . . . . . . . . . . . . . . 96
Pilha de protocolos H.323 . . . . . . . . . . . . . . . . . . . . 98
Fluxos de controle e sinalização. . . . . . . . . . . . . . . . . . 99
Recomendação H.225.0. . . . . . . . . . . . . . . . . . . . 99
Mensagens RAS. . . . . . . . . . . . . . . . . . . . . . . 101
Controle de mídia . . . . . . . . . . . . . . . . . . . . . . 103
Modos de operação . . . . . . . . . . . . . . . . . . . . . 105
Estabelecimento de chamadas . . . . . . . . . . . . . . . . . 106
Chamada direta entre pontos finais. . . . . . . . . . . . . . . . 107
Chamada entre pontos finais registrados no mesmo gatekeeper . . . . . . 108
Chamada entre pontos finais em que somente um é registrado em gatekeeper . 110
Chamada entre pontos finais registrados em gatekeepers distintos . . . . . 113
Estabelecimento de canal de controle H.245. . . . . . . . . . . . . 115
Uso dos serviços da chamada . . . . . . . . . . . . . . . . . . 116
Recomendações H.235 . . . . . . . . . . . . . . . . . . . . 117
Recomendação H.460. . . . . . . . . . . . . . . . . . . . . 118
93
Introdução à recomendação H.323
Introdução à Voz sobre IP e Asterisk
94
\\V.6 – as versões anteriores só permitiam codec ITU que necessitavam de licença.
\\Registro de usuários;
\\Estatísticas;
\\Negociação de algoritmos;
\\Chaves de autenticação;
\\Autenticação de mensagens.
95
\\450.4 (Call Hold) – retenção de chamada;
Introdução à Voz sobre IP e Asterisk
\\Gateways:
\\Gatekeeper (GK):
\\Normalmente utilizado para controlar acesso às redes de comunicação.
Intranet/Intranet
ISDN
H.320
H.323
Terminal
H.323 PSTN
Gatekeeper H.324
H.323
MCU
H.323
ATM
Gateway H.310. H.321
H.323
Terminal
Internet/Intranet
SIP Figura 3.1
\\Resolução de nomes;
96
\\Realização de controle de chamadas;
Zona Todos os usuários de uma zona devem ser registrados no GK que a controla.
Uma zona é uma
região H.323
No caso de necessidade de controle da chamada, o GK pode solicitar, durante o
formada pelo
processo RAS, que todas as mensagens Q.931 e H.245 utilizadas para o
conjunto de
terminais, estabelecimento da chamada sejam feitas através dele. Tal processo é realizado com
gateways e MCUs o GK enviando para o telefone ou gateway de origem o seu próprio endereço e porta,
controlados por com destino. A mensagem recebida é encaminhada pelo GK para o destino, que
um único pode ser outro GK ou o telefone de destino, a depender da negociação durante o
gatekeeper.
processo RAS (Registro, Admissão e Status). O controle de admissão de chamadas é
Uma zona pode
abranger redes
feito através do protocolo H.225 RAS. A gerência da banda é feita através das
distintas. mensagens H.225, Q.931 e H.245 UDP.
97
A MCU é formada por dois elementos básicos:
Introdução à Voz sobre IP e Asterisk
\\O Processador Multiponto (MP), parte opcional da MCU, trata os fluxos de áudio,
vídeo e dados de uma conferência. Os fluxos de mídia não passam pelo MC.
Padrões Descrição
\\Áudio e vídeo:
\\Protocolos RTP e RTCP.
98
Descrito na RFC 3550, o protocolo RTP é utilizado para transporte de áudio e vídeo.
O protocolo RTP utiliza UDP para transportar a mídia, em uma porta negociada
durante o estabelecimento da chamada. O RTCP utiliza uma porta acima do RTP.
Tais protocolos são utilizados também pelo SIP para transporte de mídia.
\\H.225.0 RAS;
\\H.245.
\\O protocolo H.245, por sua vez, é utilizado para controlar a comunicação entre
os dispositivos.
\\O padrão H.225.0 RAS utiliza a porta TCP 1718 para conexões multicast e a
porta TCP 1719 para conexões unicast.
Recomendação H.225.0
\\Sinalização de chamadas:
\\H.323 utiliza o protocolo H.225.0 para a sinalização das chamadas;
\\O protocolo H.225.0 utiliza um subconjunto das mensagens definidas
nas recomendações:
\\Q.931;
\\Q.932.
\\CallProceeding;
\\Alerting;
\\Progress;
99
\\Connect.
Introdução à Voz sobre IP e Asterisk
\\Encerramento de chamadas:
\\ReleaseComplete.
\\Outros:
\\Status/StatusEnquiry;
\\Facility.
\\Call proceding (O) – mensagem enviada pelo destino informando que todos os dados
relativos à chamada foram recebidos e nenhuma informação adicional será aceita;
\\Connect (M) – mensagem enviada pelo destino informando que a chamada foi
aceita pelo usuário chamado;
\\Status (M) – mensagem enviada em ambas as direções para relatar condições de erro;
Tipos de mensagens:
\\M (mandatório);
\\O (Opcional);
100
\\Retrieve (Ack/Rej) – facilidade de recuperação;
Mensagens RAS
\\Registro, Admissão e Status;
\\GRQ (GatekeeperReQuest);
\\GCF (GatekeeperConFirm);
\\GRJ (GatekeeperReJect).
\\Registro:
\\RRQ (RegistrationReQuest);
\\RCF (RegistrationConfirm);
\\RRJ (RegistrationReJect);
\\URQ (UnRegistrationReQuest);
\\UCF (UnRegistrationConfirm);
\\URJ (UnRegistrationReJect).
\\LRQ (LocationReQuest);
\\LCF (LocationConFirm);
\\LRJ (LocationReJect).
\\Controle de admissão:
\\ARQ (AdmissionReQuest);
\\ACF (AdmissionConfirm);
\\ARJ (AdmissionReject).
\\Alteração de banda:
\\BRQ (BandwidthReQuest);
\\BCF (BandwidthConfirm);
\\BRJ (BandwidthReject).
101
\\Mensagens H.225.0 RAS;
Introdução à Voz sobre IP e Asterisk
\\Informação de estado:
\\IRQ (InfoReQuest);
\\IRR (InfoReQuestResponse);
\\IACK (InfoReQuestAck);
\\INAK (InfoReQuestNak).
\\Desengajamento:
\\DRQ (DisengageReQuest);
\\DCF (DisengageConfirm);
\\DRJ (DisengageReject).
\\Call Admission (Admissão de uma chamada) – deve ser executado para cada
chamada que for realizar. Um terminal solicita permissão ao GK para encaminhar
uma chamada através da mensagem ARQ (AdmissionRequest), informando o
tipo de comunicação, endereço, banda e tipo de codec. O GK responderá com a
mensagem ACF, definindo banda, endereço de destino e obrigatoriamente
determinando se a chamada feita diretamente (entre os gateways ou terminais)
ou se será via GK. A alteração de banda é realizada de maneira similar: uma
alteração de banda poderá ser solicitada por qualquer uma das partes, através
da mensagem BRQ (BandwidthRequest). O terminal remoto só realizará a
mudança de banda após enviar uma mensagem BRQ ao seu GK de controle e
receber uma BCF. Por exemplo, um terminal poderá solicitar largura de banda
adicional para abrir canal de vídeo através da mensagem BRQ.
102
Mensagens de status com informações de estado são trocadas periodicamente entre
Controle de mídia
\\Sistemas H.323 usam mensagens de controle de mídia definidas na
recomendação H.245;
\\MasterSlaveDeterminationAck;
\\MasterSlaveDeterminationReject;
\\MasterSlaveDeterminationRelease.
\\Troca de capacidades:
\\TerminalCapabilitySet;
\\TerminalCapabilitySetAck;
\\TerminalCapabilitySetReject;
\\TerminalCapabilitySetRelease.
\\Comando:
\\EndSessionCommand.
\\OpenLogicalChannelAck;
\\OpenLogicalChannelReject;
\\OpenLogicalChannelConfirm;
\\CloseLogicalChannelAck;
\\RequestChannelClose;
\\RequestChannelCloseAck;
103
\\RequestChannelCloseReject;
Introdução à Voz sobre IP e Asterisk
\\RequestChannelCloseRelease.
Em relação à troca de capacidades, os pontos finais informam uns aos outros suas
capacidades de transmissão e recepção em termos de: codecs, tipos de mídia
aceitos e taxa de bits toleráveis.
\\Problemas de comunicação;
\\Determinação de retardo.
Fast Start
Considerando o tempo de ida e volta de cada mensagem gasto durante o processo
de admissão (ARQ/ACF), descrito basicamente nas mensagens abaixo:
Tunelamento
O processo chamado tunelamento (tunneling) é similar ao anterior. O tunelamento
das mensagens H.245 ocorre nos elementos US-US (H.245 tunneling) das
mensagens Q.931, Call Proceding, Alerting ou Connect. Na mensagem Setup, o
parâmetro tunneling é configurado em 1 (verdade), para que a origem solicite a
facilidade de tunelamento H.245; o restante é similar ao processo Fast Connect.
104
Se necessário, negociações de banda ou codec, entre outras, poderão ser realizadas
Modos de operação
\\A comunicação entre pontos finais H.323 é dividida em 5 fases:
\\Início da chamada
\\Controle do canal H.245
\\Estabelecimento da conexão entre os canais lógicos
\\Utilização dos serviços da chamada
\\Encerramento da chamada
105
Introdução à Voz sobre IP e Asterisk
Encerramento da chamada
As mensagens a seguir encerram a chamada:
Estabelecimento de chamadas
\\Chamada entre pontos finais em que somente um é registrado em gatekeeper
Terminal 1 GK Terminal 2
Setup
Cellproceeding
ARQ
ACF/ARJ
Alerting
Connect
Figura 3.2
106
7. Informações dos campos Fast Start ou Tunneling: porta UDP para mídia, tipo de
Terminal 1 Terminal 2
Setup
Callproceeding
Alerting
Connect
107
Chamada entre pontos finais registrados no mesmo
Introdução à Voz sobre IP e Asterisk
gatekeeper
\\Sinalização direta
Terminal 1 GK Terminal 2
ARQ
ACF/ARJ
Setup
Cellproceeding
ARQ
ACF/ARJ
Alerting
Connect
108
Capítulo 3 – Recomendação H.323
\\Sinalização roteada pelo gatekeeper
Terminal 1 GK Terminal 2
ARQ
ACF/ARJ
Setup
Setup
Cellproceeding
Cellproceeding
ARQ
ACF/ARJ
Alerting
Alerting
Connect
Connect
109
Chamada entre pontos finais em que somente um é registrado
Introdução à Voz sobre IP e Asterisk
em gatekeeper
\\Sinalização direta com ponto final chamador registrado
Terminal 1 GK Terminal 2
ARQ
ACF/ARJ
Setup
Cellproceeding
Alerting
Connect
Figura 3.6
110
\\Sinalização roteada pelo gatekeeper com ponto final chamador registrado
ARQ
ACF/ARJ
Setup
Setup
Cellproceeding
Cellproceeding
Alerting Alerting
Connect
Connect
Figura 3.7
111
Introdução à Voz sobre IP e Asterisk
Terminal 1 GK Terminal 2
Setup
Cellproceeding
ARQ
ARJ
Facility
Release Complete
Setup
Setup
Cellproceeding
Cellproceeding
ARQ
ACF/ARJ
Alerting
Alerting
Cellproceeding
Connect
6. Terminal 1 envia novo Setup, desta vez para o GK, após atender a solicitação
contida na mensagem Facility. O GK repassa a informação para o terminal 2;
112
Chamada entre pontos finais registrados em gatekeepers
Terminal 1 GK GK Terminal 2
ARQ
ACF/ARJ
Setup
Callproceeding
ARQ
ARJ
Facility
ReleaseComplete
ARQ
DRQ
DCF
ACF/ARJ
Setup
Callproceeding
Setup
Callproceeding
ARQ
ACF/ARJ
Alerting
Alerting
Connect
Connect
113
6. Terminal 1 envia a mensagem DRQ (Disengage Request) ao seu GK, e a seguir
Introdução à Voz sobre IP e Asterisk
Terminal 1 GK GK Terminal 2
ARQ
ARQ
ACF LCF
Setup
Setup
Callproceeding Setup
Callproceeding
Callproceeding
ARQ
ACF
Alerting
Alerting
Alerting Connect
Connect
Connect
2. GK 1 verifica que o terminal 2 não pertence à sua zona e envia uma mensagem
LRQ (Location Request) em nuvem crescente, buscando o GK que controla o
terminal 2;
114
4. O GK envia ao terminal 1 mensagem ACF, informando o seu endereço para
5. Terminal 1 envia mensagem Setup para o seu GK, que a repassa para o GK que
controla o terminal 2, que por sua vez envia a mensagem ao terminal 2;
Terminal A Terminal B
Sinalização H.225.0
TerminalCapabilitySet(A))
TerminalCapabilitySetAck(A)
TerminalCapabilitySet(B)
TerminalCapabilitySetAck(B)
MasterSlaveDetermination
MasterSlaveDeterminationAck(slave)
MasterSlaveDeterminationAck(master)
(ponto final A é o mestre da chamada)
OpenLogicalChannel (canal de voz A =>B)
OpenLogicalChannelAck
OpenLogicalChannel (canal de voz B =>A)
OpenLogicalChannelAck
Chamada em uso
Figura 3.11
115
3. Terminal B informa através da mensagem TerminalCapabilySet(B) de suas
Introdução à Voz sobre IP e Asterisk
próprias capacidades;
4. Terminal A confirma o recebimento das informações;
5. Terminal A envia mensagem MasterSlaveDetermination para definição Mestre-
Escravo;
6. Terminal B responde aceitando a condição de Escravo;
7. Terminal A responde confirmando sua condição de Mestre;
8. Terminal A envia mensagem de abertura de canal de mídia (OpenLogicalChannel)
informando codec e porta, entre outras informações;
9. Terminal B confirma o recebimento da mensagem com OpenLogicalChannelAck,
podendo, se for o caso, solicitar negociação de codec ou porta, entre outros.
Estabeleceu-se neste momento o 1º canal de mídia no sentido A para B;
10. Terminal B envia sua mensagem de abertura de canal de mídia
OpenLogicalChannel com informações sobre codec, porta e codificação;
11. Terminal A confirma o recebimento, concordando com os parâmetros.
Estabeleceu-se neste momento o 2º canal de mídia, no sentido de B para A;
12. Abertura dos canais de mídia e transporte RTP/RTCP.
H.450.2 Transferência
H.450.3 Redirecionamento
H.450.4 Retenção
H.450.5 Atendimento
116
O H.323 possui um número limitado de serviços suplementares, conforme a
Além disso, ainda existem os casos de algumas empresas que forçam a utilização
de seus equipamentos, como estratégia de mercado. Assim como os telefones
digitais só funcionam com PABX de mesmo fabricante, algumas empresas fabricam
telefones IP que funcionam apenas com seus PABX (que normalmente incorporam
as funções de gatekeeper e gateway). Ou seja, nem mesmo uma simples ligação é
realizada quando mais de um fabricante é utilizado.
Recomendações H.235
\\Definidas com o propósito de prover um arcabouço para serviços de segurança
em sistemas que usam protocolos de controle:
É necessário dar atenção especial a este item, porque muitas soluções de segurança
são desenvolvimentos proprietários que podem sofrer os mesmo problemas
relatados anteriormente.
117
As recomendações H.235.0 e H.235.1 do ITU definem os perfis básicos de
Introdução à Voz sobre IP e Asterisk
segurança, para as mensagens RAS, H.225, Q.931, Q.932 e H.245, ou seja, nos
canais de controle das chamadas.
O uso de criptografia nos canais de mídia (voz e vídeo) é definido no protocolo RTP,
cuja última recomendação é a RFC 3550. O uso de criptografia aumenta o consumo
de banda em pelo menos 10%.
Recomendação H.460
\\Define um arcabouço que permite a negociação de várias facilidades entre
pontos finais, por meio de mensagens de sinalização:
\\H.225.0;
\\Mensagens RAS.
H.460 é um padrão ITU que define uma extensão opcional do H.323. Entre outras
funções, é utilizado para resolver problemas com NAT e firewalls.
118
3
Roteiro de Atividades
Tópicos e conceitos
\\A atividade prática tem como objetivo instalar o servidor GnuGK e analisar o
protocolo H.323.
Requisitos
\\Esta prática envolve atividades individuais e em grupo.
Preparando o ambiente
Passo 1: inicie a máquina virtual com sistema operacional Debian no diretório GnuGK.
119
Se for apresentada a tela abaixo selecione a opção I copied it.
Introdução à Voz sobre IP e Asterisk
Passo 2: efetue login com o usuário root e senha rnpesr e em seguida verifique se a
máquina virtual obteve a configuração correta da rede, efetuando o comando ifconfig.
Passo 3: execute o comando # apt-get update; não ocorrendo erro, instale o pacote
gnugk com o comando # apt-get install gnugk. Aguarde o fim da instalação.
Crie o arquivo gnugk.ini com o comando vim /etc/gnugk.ini. Inclua as linhas abaixo:
[Gatekeeper::Main]
120
### Permite que o gatekeeper aceite chamadas dos seus vizinhos;
### Especifica uma faixa de portas TCP dos canais de sinalização Q.931;
Q931PortRange=30000-39999
[GKStatus::Auth]
# /etc/init.d/gnugk restart
Figura 3.13
121
\\Para que você fique sabendo se tem alguém te ligando, clique em Browser e
Introdução à Voz sobre IP e Asterisk
Figura 3.14
Clique em OK.
Figura 3.15
122
\\Marque as opções Use Gatekeeper e Require Gatekeeper. Verifique se a opção
Figura 3.16
Clique em OK.
Seu registro está feito. Observe que na janela do OpenPhone está escrito que você
está registrado no gatekeeper.
Figura 3.17
123
Atividade 2 – Analisando a captura feita pelo Wireshark
Introdução à Voz sobre IP e Asterisk
124
4
Asterisk
►► Sumário
Apresentação do Asterisk. . . . . . . . . . . . . . . . . . . . 126
Projeto Zapata . . . . . . . . . . . . . . . . . . . . . . . 126
Asterisk. . . . . . . . . . . . . . . . . . . . . . . . . . 128
Asterisk e Linux . . . . . . . . . . . . . . . . . . . . . . . 129
Asterisk e a GNU General Public License . . . . . . . . . . . . . . 131
Asterisk versus PABX . . . . . . . . . . . . . . . . . . . . . 131
O que o Asterisk não é e não faz . . . . . . . . . . . . . . . . . 134
Hardware e interfaces para Asterisk . . . . . . . . . . . . . . . . 136
Zaptel Pseudo TDM interfaces. . . . . . . . . . . . . . . . . . 136
Non-Zaptel hardware interfaces . . . . . . . . . . . . . . . . . 137
Packet voice protocol. . . . . . . . . . . . . . . . . . . . . 138
Protocolos usados pelo Asterisk . . . . . . . . . . . . . . . . . 140
125
Apresentação do Asterisk
Introdução à Voz sobre IP e Asterisk
\\Digium:
Projeto Zapata
\\Projeto de hardware aberto (OpenSource);
\\Digium;
\\Sangoma;
\\Varion.
O projeto Zapata foi conduzido por Jim Dixon, o responsável pelo desenvolvimento
de hardware da Digium. O hardware também é aberto e pode ser produzido por
qualquer empresa. Hoje, as placas com E1/T1 (circuitos de telefonia digital) são
produzidas por empresas como Digium, Sangoma e Varion, entre outras.
126
telefonia. Em vez de ter componentes caros no cartão, o Sistema Digital de
Capítulo 4 – Asterisk
Processamento (DSP) seria manipulado na CPU por software. Mesmo que isso
impusesse uma tremenda carga à CPU, Dixon estava certo de que o baixo custo das
CPUs em relação ao seu desempenho fazia delas muito mais atraentes que DSPs
caros e, o que era mais importante, a sua relação custo/desempenho deveria
continuar a melhorar à medida que as CPUs aumentassem seu poder de
processamento. Depois de alguns anos, ele observou que, além de ninguém ter
criado esses cartões, nada indicava que isso seria feito. Nesse momento, ele
percebeu que, se queria uma revolução, ele mesmo deveria iniciá-la. E assim nasceu
o projeto Zapata.
127
Pessoalmente, nunca havia visto o Linux rodar antes, mas fui correndo ao Fry’s
Introdução à Voz sobre IP e Asterisk
(uma loja enorme de produtos eletrônicos, famosa nos EUA) e comprei uma cópia
do Linux Red Hat 6.0. Dei uma olhada nos drivers e usei o Vídeo Spigot como base
para traduzir o driver de BSD para Linux.
De qualquer forma, minha experiência com Linux não era grande e comecei a ter
problemas para desenvolver o módulo do kernel na forma de módulos carregáveis.
Ainda assim, liberei-o na web sabendo que algum guru em Linux iria rir dele e talvez
me ajudasse a reformá-lo em “linuquês” apropriado. Em 48 horas, recebi um e-mail
de um cara do Alabama (Mark Spencer), que se ofereceu para fazer exatamente isto.
Ele disse que tinha algo que seria perfeito para a coisa toda (o Asterisk).
Mark era brilhante em VoIP e em redes na parte interna do sistema, com grande
interesse por telefonia, mas sua experiência com o funcionamento de sistemas de
telefonia era limitada, particularmente na área de interfaces de hardware. Desde o
início eu estava e sempre estive lá para ajudá-lo nessas áreas, fornecendo
informações e implementando códigos nos drivers e no switch (PABX). Nós, e mais
recentemente outros, fazemos um bom time trabalhando no objetivo comum de
levar o melhor da tecnologia de telecomunicações ao público por um custo realista.
A partir do cartão ISA, desenhei o “Tormenta 2 PCI Quad T1/E1”, que Mark vende
como Digium T400P e E400P, e que agora a Varion está vendendo como V400P
(ambos T1 e E1). Todos os arquivos do projeto (incluindo fotos e arquivos de
plotagem) estão disponíveis em zaptelephony.org (www.zaptelephony.org) para uso
público. Como qualquer um pode ver, com o trabalho dedicado de Mark (assim
como o meu e o de outras pessoas) nos drivers da Saptel e no software do Asterisk,
as tecnologias crescem e melhoram a cada dia”.
Asterisk
\\É um PABX (Private Automatic Branch eXchange) implementado em software;
128
especializado e, principalmente, em hardware de telefonia de baixo custo, também
Capítulo 4 – Asterisk
aberto, que funciona com o Asterisk.
Asterisk e Linux
\\Por que utilizar o Linux?
\\Ambos são soluções Open Source (Asterisk e Linux);
\\Hardware para acesso a PSTN; toda a implementação do Asterisk é voltada
para a plataforma Linux;
\\Licenciamento duplo:
\\GPL;
\\LGPL.
Foi desenvolvido sobre o sistema operacional Linux e, por isso mesmo, este é o sistema
operacional de suporte nativo do Asterisk. Também funciona em OpenBSD, FreeBSD
e MAC OS X. Portar o Asterisk para outros sistemas baseados no Unix deve ser uma
tarefa relativamente fácil para pessoas com tempo e habilidade com estes sistemas.
GNU General Public License (Licença Pública Geral), GNU GPL ou simplesmente
GPL, é a designação da licença para software livre idealizada por Richard Stallman
no final da década de 90, no âmbito do projeto GNU da Free Software Foundation.
129
A GPL é a licença com maior utilização por parte de projetos de software livre, em
Introdução à Voz sobre IP e Asterisk
grande parte devido à sua adoção para o Linux. Em termos gerais, a GPL se baseia
em 4 liberdades:
A GNU Lesser General Public License (antes conhecida como GNU Library General
Public License) é uma licença de software livre aprovada pela FSF e escrita com o
intuito de ser um meio-termo entre a GPL e as licenças mais permissivas, como a
BSD e a MIT. Foi escrita em 1991 (e atualizada em 1999) por Richard Stallman e
Eben Moglen.
A principal diferença entre a GPL e a LGPL é que a última permite ser ligada com
programas que não sejam GPL ou LGPL (software livre ou proprietário). Outra
diferença é que trabalhos derivados (que não sejam GPL) devem ser bibliotecas de
software. A LGPL coloca restrições de copyleft no próprio programa, mas não aplica
essas restrições a outro software que apenas se liga com o programa. Há, contudo,
outras restrições nesse software. Essencialmente, deve ser possível ao software ser
ligado a uma versão mais nova do programa sob LGPL. O método mais usado para
fazer isso é por meio de um mecanismo de biblioteca compartilhada para ligação.
Alternativamente, a ligação estática é permitida se o código-fonte ou os arquivos do
objeto a ser ligado forem disponibilizados.
130
Asterisk e a GNU General Public License
Capítulo 4 – Asterisk
\\Existem algumas formas para se contribuir com a evolução do Asterisk:
\\Desenvolvimento de código;
\\Conserto de bugs;
\\Relato de melhorias;
\\Novas aplicações;
\\Documentação;
131
\\Ambiente de desenvolvimento fácil e rápido;
Introdução à Voz sobre IP e Asterisk
\\Funções básicas:
\\Voice mail (mensagem de voz por e-mail);
\\Música em espera (mp3);
\\Salas de conferência;
\\Parking (estacionamento de chamadas);
\\Caller ID;
\\Siga-me;
\\Transferência de chamadas.
A definição do Asterisk na página oficial do programa diz que ele é um software livre e
de código aberto, que transforma um computador comum em um rico servidor de
comunicações de voz. O Asterisk é uma plataforma de desenvolvimento de aplicações
de voz. Assim, é possível criar quase qualquer tipo de serviço envolvendo aplicações
de voz sem os altos custos das licenças cobradas pelos fabricantes tradicionais de
PABX e desenvolvedores de soluções de telefonia.
O modelo de negócios adotado há muitos anos pela indústria da telefonia torna sua
implementação proibitiva em muitos casos, principalmente para pequenas empresas.
Para cada novo serviço, era preciso realizar upgrade no sistema com a aquisição de novo
hardware, com a necessidade de comprar mais uma licença. Mesmo quando o PABX já
estava preparado para o crescimento, não sendo necessário adquirir novo hardware, para
cada novo canal de voz era preciso comprar uma nova licença. O Asterisk e a filosofia de
código aberto vêm democratizar a utilização de aplicações de voz, pois cada novo serviço
no Asterisk é implementado por software normalmente aberto e livre de licenças.
Ter controle do seu próprio sistema de telefonia é um dos benefícios que o Asterisk
oferece. Ao invés de esperar e pagar para alguém configurar seu PABX proprietário
(a maioria não fornece nem a senha para o cliente final), o Asterisk dá toda a
liberdade de configurá-lo e programá-lo. Em relação à adição de novas
funcionalidades, com Asterisk basta adicionar os programas adequados. Já com
soluções convencionais é muito provável que seja necessário adquirir novas licenças
e novo hardware.
Além de tudo, o Asterisk suporta protocolos de Voz sobre IP, isto é, possibilita a fácil
integração das redes de voz e dados. Na verdade, o Asterisk pode ser entendido
como um sistema de voz sobre IP que pode ser interligado ao sistema de telefonia
132
convencional com a instalação de placas especiais. Assim, já traz embutidas as
Capítulo 4 – Asterisk
vantagens das soluções de telefonia IP, como a possibilidade de aproveitar a
infraestrutura de dados para o tráfego de voz e mobilidade dos ramais, entre outras
vantagens. O Asterisk não é apenas um PABX, porque faz muito mais que unir um
conjunto de ramais e ligá-los à rede de telefonia pública.
Funções do Asterisk
Algumas funções e serviços complementares suportados pelo Asterisk:
\\Identificador de chamada;
\\Siga-me;
\\Pêndulo;
\\Conferência;
\\Estacionamento de chamadas;
\\Funções avançadas:
\\Call pickup.
Reconhecimento de voz
É possível instalar um módulo (software) para reconhecimento de voz. Assim,
quando utilizado em conjunto com o IVR, possibilita a navegação simplesmente
enunciando as opções do menu, aumentando-as consideravelmente, pois o limite do
teclado deixa de existir.
133
Text-to-Speech (TTS)
Introdução à Voz sobre IP e Asterisk
É possível obter informações estatísticas das chamadas nas filas, como tempo
médio de espera de uma chamada em determinada fila e taxa de desistência.
Gateway Fax-Email
É possível utilizar o Asterisk para receber e enviar fax utilizando o sistema de e-mail.
Um usuário da rede envia um e-mail para um endereço específico; o sistema recebe o
e-mail e transforma o corpo da mensagem ou o anexo (pdf, ps, doc, txt) e o encaminha
via fax pela rede de telefonia. No sentido inverso, o sistema recebe um fax,
transforma-o em PDF e o encaminha por e-mail para o usuário do sistema. Dessa
forma, cada usuário que tiver um ramal próprio, pode ter também o seu fax pessoal.
\\SIP Proxy:
\\OpenSER.
\\Gatekeeper H.323:
\\GnuGK.
134
\\O Asterisk possui como principal característica a flexibilidade:
Capítulo 4 – Asterisk
\\Todos os seus arquivos são configuráveis.
O Asterisk não é um SIP Proxy, mas um Back-to-Back User Agent (B2BUA). Isto
significa que se trata de um User Agent (dispositivo SIP), que em uma conversa
entre dois telefones SIP simula um SIP Proxy. Na verdade, é visto como um telefone
SIP para cada perna da chamada. Na prática, é visto como um SIP Proxy. Da
mesma forma, utilizando o protocolo H.323, o Asterisk não é um gatekeeper, mas
simula ser um gatekeeper, uma espécie de B2BUA. Essa característica faz com que
o Asterisk não seja a melhor ferramenta para lidar com grande quantidade de
telefones IP. Dois exemplos de softwares de código aberto para grande instalações
VoIP são OpenSIPS, que funciona como SIP Proxy, e GnuGK, que funciona como
gatekeeper. Em grandes redes, o Asterisk deve trabalhar em conjunto com outras
ferramentas mais apropriadas para esta finalidade, exercendo o papel de gateway
(traduzindo protocolos ou interfaceando com sistema de telefonia convencional) ou
de servidor de aplicações de voz.
Existe um arquivo de configuração para cada parte do sistema: SIP, H.323, filas,
música em espera, interface com banco de dados, CDR (Call Detail Record) etc.
Cada módulo possui um arquivo separado e de fácil entendimento. Além disso,
utilizando AGI (Asterisk Gateway Interface) ainda é possível criar novos programas
em qualquer linguagem de programação para interação com a rede de dados. Por
exemplo, é possível construir uma aplicação que, ao receber uma chamada, o
sistema peça para digitar um número de matrícula. Após o recebimento do número,
o sistema procura o status do cliente em um banco de dados e, dependendo da
informação retornada, decide a ação a ser executada.
135
Hardware e interfaces para Asterisk
Introdução à Voz sobre IP e Asterisk
\\Tecnologias suportadas:
\\O Asterisk foi desenvolvido para permitir a adição de novas tecnologias e
interfaces com facilidade;
\\Seu objetivo é suportar todo tipo possível de tecnologia de telefonia;
\\Em geral, as interfaces podem ser divididas em três:
\\Zaptel hardware;
\\Non-Zaptel hardware;
\\Packet voice.
\\PSTN, POTS;
\\T1, E1;
\\PRI, PRA:
136
Zaptel Pseudo TDM interfaces proveem integração com interfaces telefônicas
Capítulo 4 – Asterisk
analógicas e digitais, tradicionais e legadas, incluindo conexão ao sistema de
telefonia pública.
TDM400P é uma placa base de 4 entradas que permite a inserção de até 4 cartões
irmãos, que admitem portas FXO (módulo vermelho) e FXS (módulo verde), sendo os
módulos FXO e FXS intercambiáveis para criação de várias combinações de interface.
Figura 4.3
Zaptel TDM400P
137
Atualmente existem outras placas para telefonia analógica que possibilitam uma
Introdução à Voz sobre IP e Asterisk
Protocolos de
Telefonia IP
MGCP Placas de E1
comunicação
H323 T1
BRI
...
PC / Servidor
Linhas
Analógicas Figura 4.4
Esta figura mostra um esquema conceitual do Asterisk utilizando uma placa de rede
(Ethernet) para sua comunicação com a rede IP, uma placa digital e uma analógica
para comunicação com a rede de telefonia. Neste exemplo, o Asterisk pode
funcionar como um gateway entre as redes de telefonia IP e a tradicional (TDM).
\\EAGI;
\\Dead AGI;
\\Fast AGI.
\\Os scripts são utilizados em lógica avançada.
138
\\PostgreSQL;
Capítulo 4 – Asterisk
\\MySQL:
\\PHP;
\\Python.
Packet Voice Protocol são protocolos para comunicação em redes comutadas por
pacotes, como IP e Frame Relay. As interfaces de “packet voice”, ou numa tradução
livre, de pacotes de voz, não requerem placas específicas. Elas utilizam a
infraestrutura de rede disponível com o servidor.
É possível montar uma rede de telefonia totalmente baseada em “packet voice”. Assim
não seria necessário possuir nenhuma interface para telefonia no servidor. Por outro lado,
os telefones tradicionais devem ser trocados por telefones IP, que são bem mais caros.
AGI (Asterisk Gateway Interface) é uma interface muito similar ao Common Gateway
Interface (CGI) para o HTML. Ela oferece uma interface padrão pela qual programas
externos podem controlar o plano de discagem do Asterisk. Utilizar AGI é uma
maneira elegante de estender a capacidade do Asterisk. É possível criar programas
em qualquer linguagem (shell script, C, php, perl, java, pascal, python), que podem
controlar o plano de discagem do Asterisk e também podem interagir com o sistema
e a rede de dados, conforme a vontade e necessidade do programador.
\\Dead AGI – permite acesso ao canal morto após um hangup*, tendo sido
descontinuado após o Asterisk 1.6;
\\Fast AGI – permite que o script AGI seja chamado pela rede, para que múltiplos
servidores Asterisk possam chamar scripts AGI de um local centralizado.
* Neste caso, mesmo que a ligação tenha sido desligada e um comando hangup
tenha sido executado, o canal continuará no estado UP até que o programa
termine, criando um canal morto. Isto pode gerar inconsistências diversas na
aplicação, por exemplo no CDR que continuará contabilizando a chamada até o
canal ser fechado propriamente.
139
controle do plano de discagem para um script AGI externo permite que o Asterisk
Introdução à Voz sobre IP e Asterisk
O AGI funciona fazendo com que o programa se comunique com o Asterisk por meio
do standard input (em um programa normal seria o teclado, no AGI é o Asterisk que
envia estes dados) e do standard output (em um programa normal seria a tela do
computador, no AGI o programa envia comandos como se estivesse escrevendo na tela).
Base de Dados
d)
ecor CDRs
il R
eta
ll D
Ca
R(
CD
Dia
lpla
Asterisk nC
ont
rol
Programa C / C++
externo Java / .Net
Python
Figura 4.5
Bash Exemplos de uso
[ ... ] AGI
\\IAX e o Asterisk:
\\Protocolo aberto;
\\Histórico:
140
\\Utiliza porta UDP (4569):
Capítulo 4 – Asterisk
\\Canais de sinalização;
\\Tansporte de mídia.
\\Facilidades do IAX:
\\Fornece controle e transmissão de voz sobre redes IP;
\\Utiliza qualquer tipo de mídia, como:
\\Voz;
\\Vídeo.
\\Características do IAX:
\\Derivado da experiência dos protocolos:
\\SIP;
\\MGCP.
Essas ações fazem parte de um protocolo de comunicação pessoal. Nada foi declarado,
escrito ou documentado para fazer desses gestos e frases um protocolo formal, mas
a prática aprendida no cotidiano faz este conjunto de ações definirem o início da
conversação (bom-dia), o acompanhamento (“uhum”) e o término (tchau) da conversa.
141
Note que, mesmo quando a informação é perdida, quando no início da conversa
Introdução à Voz sobre IP e Asterisk
você não recebe a resposta do seu interlocutor, existe uma “regra” que o faz tentar
novamente o estabelecimento da conversa. Esta regra diz: caso não haja resposta
em um tempo adequado, repita o “bom-dia”.
A mesma coisa pode-se dizer das comunicações de dados. A forma como uma
página da internet é solicitada e transferida faz parte de protocolos como HTTP, TCP,
UDP, RTP, IP, FTP, exemplos de protocolos para transferência de informação.
Em VoIP não é diferente; H.323, SIP, MCGP e IAX são protocolos de Voz sobre IP
suportados pelo Asterisk, e todos eles possuem uma forma de estabelecer, controlar
e finalizar chamadas, além de uma forma de lidar com a perda de mensagens
importantes. Mesmo na telefonia tradicional, digital ou analógica, existem meios de
estabelecer, controlar e finalizar chamadas.
Protocolo IAX
O IAX (Inter Asterisk eXchange) foi desenvolvido pela Digium com o propósito de
comunicação eficiente com outros servidores Asterisk. A versão 2 do protocolo
(IAX2) está definida na RFC 5456. É um protocolo aberto, isto é, qualquer pessoa
pode baixá-lo da internet e aprimorá-lo. De acordo com o texto da RFC, ele não é
um padrão do IETF e deve ser utilizado com cautela.
O Asterisk utiliza apenas uma porta UDP conhecida e fixa (4569), para tráfego de
sinalização e mídia. Esta estratégia cria uma boa vantagem sobre os outros
protocolos de VoIP, pois não sofre com implementações de NAT. Além disso, também
facilita o tratamento dos pacotes em firewalls, sem a necessidade da instalação de
módulos específicos para VoIP.
\\MD5 Message-Digest (conforme a RFC 1321) – neste caso, a senha não trafega
pela rede, mas sim a resposta a um desafio calculado, utilizando uma
combinação com o domínio e um número aleatório. Forma utilizada pelo SIP,
com base na autenticação www.
\\RSA (de acordo com a RFC 3447) – utiliza par de chaves pública e privada. A
chave pública deve ser criptografada como algoritmo 3DES, descrito na RFC 1851.
142
Como já sabemos, o IAX utiliza apenas a porta UDP 4569 tanto para a sinalização
Capítulo 4 – Asterisk
das chamadas quanto para o transporte da voz. Além disso, diferentemente do SIP e
do H.323, o IAX não utiliza o RTP para transporte de mídia, mas implementa seu
próprio mecanismo para transporte e controle do canal de mídia, seja de voz ou vídeo.
O IAX foi desenvolvido para prover controle e transmissão de voz e vídeo por meio
de servidores Asterisk. Também é utilizado para conexões entre clientes e servidores
que o suportam.
Ele aproveita ideias do SIP, do H323 e de outros protocolos. Por exemplo, evita
fortemente o envio de informação redundante e já conhecida, que não seria
aproveitada. Também utiliza códigos ao invés de descrever textualmente a
informação. Estas características tornam o IAX um protocolo mais rápido e eficiente
para tratamento de chamadas.
Esta alocação dinâmica dos canais de mídia representa um problema adicional para
os firewalls que, da mesma forma que no NAT, não conseguem saber que portas
devem ser abertas para as ligações estabelecidas.
O protocolo IAX resolve facilmente estes problemas, porque utiliza apenas a porta
UDP 4569 para controle e transmissão de todas as chamadas entre os dois
servidores. Outra vantagem do protocolo IAX é o modo trunk (tronco) para
transmissão das chamadas entre servidores. Quando configurados para operar neste
modo, dois servidores Asterisk são capazes de otimizar o consumo de banda quando
houver mais de uma chamada em curso entre eles. O IAX consegue utilizar o mesmo
cabeçalho IP e UDP para transmitir várias ligações simultaneamente em um só
pacote, aumentando apenas 4 bytes de cabeçalho para cada chamada no “tronco”.
Por exemplo, para 30 chamadas utilizando SIP ou H.323 com codec G.729, para cada
pacote de voz seria necessário um cabeçalho IP+UDP+RTP. Como cada cabeçalho
143
possui 40 bytes e cada payload (carga útil do pacote de voz) também possui 40 bytes,
Introdução à Voz sobre IP e Asterisk
teremos 30 x (40+ 40) bytes trafegando na rede 50 vezes por segundo. O resultado da
conta revela um consumo de banda de aproximadamente 960 kbps.
Por outro lado, se for utilizado o IAX2 em modo tronco com as mesmas 30 ligações
e codec G.729, teremos um cabeçalho IP + UDP de 28 bytes mais 30 vezes 4
bytes, mais 30 vezes o payload de 40 bytes: 28 + 30 x (4 + 40). O resultado
desta conta indica um consumo de banda de 539,2 kbps, pouco mais que a metade
dos protocolos consagrados.
As mensagens IAX são chamadas de frames. Existem vários tipos de frames. Um bit
F é usado para indicar se o frame é completo (full) ou não. O valor 0 indica que é
completo. Um número de chamada de 15 bits é usado para identificar o ponto final
do fluxo de mídia. Valor 0 indica que o ponto final não é conhecido. Uma chamada
tem dois números de chamada associados a ele em qualquer uma das direções. O
horário (timestamp) pode ser um campo de 32 ou 16 bits. De qualquer forma, o
campo ocupa 32 bits.
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
F Número originador da chamada R Número de destino da chamada
Timestamp
Figura 4.6
Frame completo
OSeqno ISeqno Frame Type C Subclasse
do IAX
Um frame completo pode ser usado para enviar sinalização, áudio e vídeo de forma
confiável. O frame completo é o único tipo de frame transmitido de maneira
confiável. Isso significa que após o recebimento o receptor deve retornar algum tipo
de mensagem ao emissor.
144
Capítulo 4 – Asterisk
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
F Número originador da chamada Timestamp
Figura 4.7
Dados
Miniframe do IAX
Uma descrição completa do protocolo IAX pode ser encontrada na RFC 5456 ou em:
\\www.cornfed.com/iax.pdf
Campo Descrição
145
Introdução à Voz sobre IP e Asterisk
Campo Descrição
Resumo
\\IAX – protocolo eficiente, que procura economizar ao máximo os recursos da
rede, reduzindo o consumo de banda da rede, o consumo de processamento em
roteadores e, por ser bem simples, também reduz o consumo de recursos para o
processamento das chamadas no PABX.
\\SIP – protocolo da vez na internet, é o mais utilizado para chamadas VoIP, talvez
sendo o mais adequado para uma implementação em larga escala. Mais flexível
que o H.323, porém menos eficiente que o IAX.
146
4
Roteiro de Atividades
Tópicos e conceitos
\\A atividade tem por objetivo instalar e configurar o Asterisk.
Requisitos
\\Esta prática envolve atividades individuais.
Preparando o ambiente
Descompacte a máquina virtual para o desktop e troque o nome do diretório para Asterisk.
Passo 1: inicie a máquina virtual com sistema operacional Debian no diretório Asterisk.
147
Se for apresentada a tela abaixo selecione a opção I copied it.
Introdução à Voz sobre IP e Asterisk
Figura 4.8
\\asterisk.conf;
\\extensions.conf;
\\sip.conf;
\\voicemail.conf.
Passo 4: o arquivo sip.conf será o primeiro arquivo a ser editado. Abra o arquivo:
# vi /etc/asterisk/sip.conf
148
No fim do arquivo, adicione os novos ramais:
Capítulo 4 – Asterisk
;RAMAL PARA O X-LITE
[10XX]
type=friend
secret=voip
Host=dynamic
Canreinvite=no
[20XX]
type=friend
secret=voip
Host=dynamic
Canreinvite=no
[30XX]
type=friend
secret=voip
Host=dynamic
Canreinvite=no
# /etc/init.d/asterisk restart
X-Lite
Passo 1: configure o cliente X-Lite para o registro em seu servidor Asterisk. Observe
se a mensagem Ready será exibida no display do cliente.
149
Telefone IP
Introdução à Voz sobre IP e Asterisk
Line 1
Display Name: 20XX
Address: 20XX
Auth User ID: 20XX
Auth Password: voip
Server 1
Address: <IP do servidor Asterisk>
Port: 5060
Transport: DNSnaptr
ATA
Passo 2: teste os clientes e o servidor efetuando uma chamada para o ramal 1000
do X-Lite, do Telefone IP e do ATA.
“Congratulations. You have successfully installed and executed the Asterisk open
source PBX. You have also installed a set of sample sounds and configuration files
that should help you to get started. Like a normal PBX, you will navigate this
demonstration by dialing digits. If you are using a console channel driver instead of a
real phone you can use the dial, answer, and hang up commands to simulate the
actions of a standard telephone.”
Opções
150
5
Arquitetura do Asterisk
►► Sumário
Arquitetura do Asterisk . . . . . . . . . . . . . . . . . . . . 152
Introdução a canais analógicos e digitais . . . . . . . . . . . . . . 156
Dual Tone Multi Frequency (DTMF). . . . . . . . . . . . . . . . 159
Gateway de voz sobre IP. . . . . . . . . . . . . . . . . . . . 160
Loop start . . . . . . . . . . . . . . . . . . . . . . . . . 162
Ground start. . . . . . . . . . . . . . . . . . . . . . . . 163
Kewl start . . . . . . . . . . . . . . . . . . . . . . . . . 163
Estrutura dos arquivos de configuração . . . . . . . . . . . . . . 165
Organização dos arquivos de configuração . . . . . . . . . . . . . 167
Introdução às aplicações . . . . . . . . . . . . . . . . . . . 168
151
Arquitetura do Asterisk
Introdução à Voz sobre IP e Asterisk
\\O Asterisk possui uma arquitetura simples, diferente da maioria dos produtos
de telefonia;
\\SIP;
\\H.323.
Asterisk
\\Aplicações da telefonia:
\\Conferência de voz;
\\Secretária eletrônica; Figura 5.1
Internet e Telephony technologies
\\Estacionamento de chamadas.
\\Canais do Asterisk:
\\Conexões lógicas para a trajetória das sinalizações e transmissões;
\\As conexões podem ser:
\\Físicas;
\\Baseadas em software.
\\As regras para os canais são definidas no plano de discagem.
\\Local;
152
Em essência, o Asterisk atua como um mediador, conectando as tecnologias de
Codec
Translator
PBX Switching
Core
Dinamic
Module
Loader
\\Codecs;
\\Aplicações.
153
Núcleo de comutação PBX (PBX switching core)
Introdução à Voz sobre IP e Asterisk
Para o Asterisk, canais são conexões lógicas para a trajetória das várias sinalizações e
transmissões que podem ser utilizadas para criar e conectar chamadas. Podem ser físicas
(porta analógica FXO ou FXS) ou baseadas em software (canal IAX). No plano de discagem
são definidas as regras que o Asterisk deve seguir para conectar canais. Por exemplo, se uma
chamada é recebida pela rede de telefonia tradicional por um tronco E1 e deve chamar um
ramal SIP, o plano de discagem deve possuir regras para ligação dos canais digitais TDM ao
canal digital (por software) SIP correspondente ao telefone de destino. A forma como o
Asterisk trata os canais de comunicação simplifica bastante sua configuração, pois no plano
de discagem todos são tratados da mesma forma, praticamente com a mesma sintaxe.
154
\\SIP (Session Initiation Protocol) – protocolo utilizado na telefonia IP;
\\TDMoE – canal especial do Asterisk que simula conexões TDM (Time Division
Multiplexing) na camada de enlace da rede local, útil para interligar dois ou mais
servidores Asterisk na mesma LAN (Local Area Network).
Canais Detalhe
Console Cliente de console do Linux, driver para placas de som (OSS ou ALSA).
155
\\VPB – canais de voz das placas Voicetronix;
Introdução à Voz sobre IP e Asterisk
\\ZAP – canais de voz das placas baseadas no projeto Zapata (placas digitais
da Digium).
Conforme mais empresas desenvolvem soluções para Asterisk, esta lista cresce. Os
parâmetros de configuração dos canais dependem de cada fabricante. Portanto, não
há uma regra única para configurar os diversos canais do Asterisk.
\\Ring.
\\Loop fechado:
\\Telefone recebe o tom de discagem da central telefônica:
156
De forma muito resumida pode-se dizer que:
\\Tom de discagem;
\\Sinal de ocupado;
\\Congestionamento (congestion);
\\Número inválido;
\\Tom de confirmação.
PBX Telefone
TIP
ON-Hook
RING
Bateria
Figura 5.3
IDLE State Detector de corrente
A figura ilustra a sinalização loop start. A sinalização ground start não é usada com
frequência.
157
Off-hook (fora do gancho)
Introdução à Voz sobre IP e Asterisk
PBX Telefone
TIP
corrente
elétrica OFF-Hook
RING
Bateria
Figura 5.4
Telefone inicia
Detector de corrente chamada
O usuário que deseja fazer uma chamada telefônica deve passar para o estado off-
hook, retirando o telefone do gancho. Este estado fecha o circuito elétrico, que
indica ao PABX que o usuário deseja fazer uma chamada telefônica. Após receber
essa indicação, o PABX gera o tom de discagem, indicando ao usuário que está
pronto para receber o endereço de destino (número do telefone).
158
Dual Tone Multi Frequency (DTMF)
697 1 2 3 A
770 4 5 6 B
852 7 8 9 C
Figura 5.5
941
* 0 # D
Os usuários que têm um teclado para discagem possuem, associado a cada botão,
um conjunto de frequências de tons altos e baixos. A combinação destes dois tons
indica para a central os dígitos selecionados. Este mecanismo é conhecido como
DTMF (Dual Tone Multi Frequency).
\\Tom de discagem – normalmente um tom contínuo, que indica que a linha está
disponível;
\\Tom de retorno;
\\Número inválido;
\\Tom de confirmação.
159
Os padrões utilizados no Brasil estão descritos na prática Telebras para telefonia, e
Introdução à Voz sobre IP e Asterisk
Resumo
Um canal da central da operadora é ligado em uma porta FXO (linha telefônica
tradicional).
Um telefone analógico convencional é ligado em uma porta FXS.
Então, é possível ligar uma porta FXO em uma porta FXS, assim como é possível
ligar um telefone à linha da operadora.
Dito de outra forma, um telefone analógico possui uma porta FXO, e um tronco
na operadora telefônica é uma porta FXS.
Tom de discagem
\\Rede pública.
As interfaces FXO são normalmente utilizadas para ligação com a central da operadora
telefônica ou com a posição de ramal de um PABX comum. Esta porta espera receber
o tom de discagem ou de linha (dialtone) e a indicação de que está chamando o
destino (ringing). A porta FXO deve prover indicadores de chamadas em progresso.
160
É muito comum ligar, no lugar de um telefone, uma interface FXO de um gateway
\\Modem;
\\Fax.
\\Deve prover:
\\Voltagem;
\\Gerar “ringing”;
\\Detectar “off-hook”;
\\Indicar chamadas em processo.
O termo E&M é proveniente de “Ear and Mouth” (Ouvido e Boca) e indica a analogia
de uma orelha para receber sinais e de uma boca para transmitir sinais. Interfaces
E&M também são interfaces analógicas, usadas principalmente nas ligações entre
PABXs ou entre Net-Net Switches.
\\Interfaces E&M:
\\Interfaces analógicas;
\\E&M “Ear (receive) and Mouth (transmit)”;
\\Usadas em ligações entre PABXs ou entre Net-Net Switches;
\\Não estão disponíveis para o Asterisk;
\\Conhecidas no mercado como tie-lines analógicas;
\\Permitem comunicação bidirecional.
161
As placas E&M são conhecidas no mercado de telefonia como “tie-lines” analógicas,
Introdução à Voz sobre IP e Asterisk
e não estão disponíveis para Asterisk. A maioria das centrais não vem com este tipo
de interface, muito embora as centrais de marcas conhecidas possuam E&M como
um componente opcional. As placas E&M permitem uma comunicação bidirecional,
podendo dar ou receber tom. Se você precisar usar uma interface E&M com o Asterisk,
a melhor opção é a integração com um gateway de voz. A Cisco possui interfaces
E&M para a maioria de seus roteadores de voz, que podem ser integradas ao Asterisk.
Kewl start é o mesmo que loop start, exceto por ter uma inteligência maior e por isso
maior capacidade para detectar desconexões remotas. Desta forma, recomenda-se a
utilização da sinalização kewl start com interfaces analógicas no Asterisk.
Loop start
\\Usado por praticamente todas as linhas analógicas;
\\Off-hook.
\\No ring.
162
Usado por praticamente todas as linhas analógicas, é o sistema que você tem em
Nesta sinalização, o switch da central fornece 48 volts a um dos fios da linha, mas
o circuito permanece aberto pelo telefone ou PABX do cliente, indicando a posição
(on-hook). Quando o telefone é retirado do gancho, o circuito é fechado, indicando a
posição off-hook. Este é o sinal enviado para a interface da central para que ela
forneça o tom de linha, de forma que o usuário possa discar o número de destino.
Ground start
\\Semelhante ao loop start;
Kewl start
\\Monitora o que o outro lado está fazendo;
PRI
Channel B
163
Com a evolução tecnológica surgiram as linhas digitais, interfaces capazes de carregar
Introdução à Voz sobre IP e Asterisk
mais informação de modo mais confiável. Assim, quando a demanda por troncos de
voz é relativamente alta (mais que 8 canais simultâneos), utilizar canais digitais é
uma opção mais vantajosa. A tecnologia utilizada nos enlaces digitais da telefonia
divide o meio de transporte em fatias de tempo, também conhecidas como time
slots. Cada fatia é um canal de transmissão de dados. Esta tecnologia é conhecida
como TDM (Time Division Multiplexing – Multiplexação por Divisão do Tempo). No
Brasil, assim como na Europa, a interface digital mais utilizada é a E1, composta
por 32 canais de 64 kbps, comumente chamado de canal ou link de 2 Mbps. Nos
Estados Unidos é utilizado o padrão T1, composto por 24 canais de 64 kbps.
A Telebrás estipulou que o protocolo digital padrão para comunicação dos PABX dos
assinantes com as operadoras deveria ser E&M pulsada, E&M contínua ou R2D/
MFC-5C. O protocolo R2 é o mais utilizado, e juntamente com a interface E1, pode
endereçar até 30 canais de voz; já as sinalizações E&M caíram em desuso. Junto com o
protocolo de sinalização de linha, é utilizada a sinalização de registro Multifrequencial
Compelida, que significa que cada sinal só pode ser enviado após a resposta do sinal
anterior ter sido recebida. O Brasil utiliza os tipos de sinalização de registro MFC 5C
terrestre (compelida), e MFC 5S (não compelida), embora mantenha a sigla MFC.
Existe ainda outro protocolo para telefonia digital, conhecido como Rede Digital de Serviços
Integrados (RDSI), do inglês Integrated Services Digital Network (ISDN), que possui algumas
vantagens sobre o R2. As principais são sua maior rapidez e o fato de prover um serviço
flexível, possibilitando inclusive uso simultâneo de dados e voz. O ISDN utilizado com
interfaces E1 é conhecido como PRI (Primary Rate Interface), e tem capacidade para
endereçar 30 canais de voz, mais um canal para controle das ligações, ou seja, para
sinalização. Também é conhecido como 30B+D. Nos Estados Unidos, utilizado com o
padrão T1, tem sua capacidade reduzida para 23 canais de voz e um para sinalização.
\\MFC/R2:
164
MFC/R2 é uma sinalização definida pela ITU (Q.421/Q.441), usada principalmente
Sintaxe
Os arquivos de configuração são divididos em seções designadas pelo nome entre
[colchetes]. O ponto e vírgula (;) é o caractere de comentário.
Dentro de cada seção, seguem os atributos e seus valores, separados por um sinal
de igual (=) ou por um sinal de igual seguido de maior (=>). Uma forma de
distinguir a utilização dos sinais de atribuição pode ser adotada como no exemplo,
onde é usado o sinal ‘=’ para atribuição de valores a variáreis e o sinal ‘=>’ para
instanciação de objetos, muito embora possam ser utilizados indistintamente.
Exemplo:
;
; A primeira linha sem ser comentário deve ser um título de sessão.
[sessao1]
chave = valor ; Designação de variável
[sessao2]
objeto => valor ; Declaração de objeto
165
Grupo simples
Introdução à Voz sobre IP e Asterisk
Formato mais básico, usado por arquivos de configuração em que os objetos são
declarados com todas as opções na mesma linha. Os arquivos extensions.conf,
meetme.conf e voice.conf seguem este formato. No exemplo a seguir, o objeto1 é
criado com as opções op1, op2 e op3, enquanto o objeto2 é criado com as opções
op1b, op2b e op3b.
[sessao]
objeto1 => op1, op2, op3
objeto2 => op1b, op2b, op3b
Entidades individuais
Sintaxe usada por arquivos de configuração em que objetos são declarados com
muitas opções, raramente compartilhadas com outros objetos, de modo que uma
seção é associada a cada objeto. Existe normalmente uma seção [general] para as
configurações globais.
No exemplo seguinte, a seção geral define duas variáveis globais. Em seguida, dois
objetos são criados: [objeto1] e [objeto2].
[general]
globalop1=valorglobal1
globalop2=valorglobal2
[objeto1]
op1=valor1
op2=valor2
[objeto2]
op1=valor3
op2=valor4
[sessao]
op1 = bas
op2 = adv
objeto => 1
op1 = int
objeto => 2
As duas primeiras linhas configuram o valor das opções op1 e op2 para “bas” e
“adv”, respectivamente. Quando o objeto1 é instalado, é criado com sua opção1
como “bas” e sua opção2 sendo “adv”. Após declarar o objeto1, mudamos o valor
166
da opção1 para “int”. O objeto2 é criado com sua opção1 como “int” e sua opção2
[entidade1]
op1=valor1
op2=valor2
[entidade2]
op1=valor3
op2=valor4
A entidade [entidade1] tem valores valor1 e valor2 para as opções op1 e op2,
respectivamente. A entidade [entidade2] tem valores valor3 e valor4 para as
opções op1 e op2.
\\Executáveis e scripts:
\\/usr/sbin/asterisk astman astgenkey safe_asterisk
\\Bibliotecas e módulos:
\\/usr/lib/asterisk/modules
\\Arquivos de configuração:
\\/etc/asterisk
167
\\Executáveis e scripts:
Introdução à Voz sobre IP e Asterisk
\\/usr/sbin/asterisk
\\/usr/sbin/astman
\\/usr/sbin/astgenkey
\\/usr/sbin/safe_asterisk
\\Bibliotecas e módulos:
\\/usr/lib/asterisk
\\/usr/lib/asterisk/modules
\\/usr/include/asterisk
\\PID do processo:
\\/var/run/asterisk
\\/var/spool/asterisk
\\Área de dados:
\\/var/lib/asterisk
\\/var/lib/asterisk/agi-bin
\\Banco de dados:
\\/var/lib/asterisk/astdb
Introdução às aplicações
\\Partes fundamentais do Asterisk;
168
Aplicações
Exemplos de aplicações:
Aplicações Descrição
Exemplo:
[incoming]
Exten=>s,1,Answer
Exten=>s,2,Background(enter-ext-of-person)
Exten=>1,1,Playback(digits/1)
Exten=>1,2,Goto(incoming,s,1)
Exten=>2,1,Playback(digits/2)
Exten=>2,2,Goto(incoming,s,1)
Neste exemplo, as ligações que chegam no contexto incoming são recebidas pela
primeira linha, a extensão especial ‘s’. A primeira aplicação associada, ou seja, o
primeiro comando executado, é o Answer, que responde a chamada e prepara o
169
ambiente para tratá-la. Em seguida, a chamada é colocada em segundo plano, pela
Introdução à Voz sobre IP e Asterisk
Exemplo:
Aplicação echo()
Atende a chamada.
170
5
Roteiro de Atividades
Tópicos e conceitos
\\A atividade tem por objetivo compreender e analisar os arquivos de
configurações do Asterisk.
Requisitos
\\Esta prática envolve atividades individuais e em dupla.
Passo 1: inicie a máquina virtual localizada no diretório Asterisk, e efetue login com
usuário root e a senha rnpesr.
# vim /etc/asterisk/sip.conf
171
Passo 3: no fim do arquivo adicione o ramal incluindo as linhas conforme o exemplo
Introdução à Voz sobre IP e Asterisk
172
Passo 5: neste passo iremos configurar o arquivo extensions.conf.
[general]
writeprotect=yes
static=yes
[default]
exten=>_10XX,1,Dial(SIP/${EXTEN},20,r)
exten=>_10XX,2,Hangup()
exten=>_20XX,1,Dial(SIP/${EXTEN},20,r)
exten=>_20XX,2,Hangup()
exten=>_30XX,1,Dial(SIP/${EXTEN},20,r)
exten=>_30XX,2,Hangup()
173
174
6
Plano de discagem
►► Sumário
O plano de discagem. . . . . . . . . . . . . . . . . . . . . 176
Contextos . . . . . . . . . . . . . . . . . . . . . . . . . 176
Extensões. . . . . . . . . . . . . . . . . . . . . . . . . 178
Prioridades. . . . . . . . . . . . . . . . . . . . . . . . . 179
Aplicações. . . . . . . . . . . . . . . . . . . . . . . . . 179
extensions.conf . . . . . . . . . . . . . . . . . . . . . . . 180
Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . 181
Variáveis predefinidas . . . . . . . . . . . . . . . . . . . . . 183
Expressões. . . . . . . . . . . . . . . . . . . . . . . . . 183
Operadores. . . . . . . . . . . . . . . . . . . . . . . . . 184
Padrões de extensão. . . . . . . . . . . . . . . . . . . . . 185
Aplicação Background() . . . . . . . . . . . . . . . . . . . . 186
Aplicação Goto(). . . . . . . . . . . . . . . . . . . . . . . 186
Aplicação Dial() . . . . . . . . . . . . . . . . . . . . . . . 187
175
O plano de discagem
Introdução à Voz sobre IP e Asterisk
\\Extensões;
\\Prioridades;
\\Aplicações.
\\Auto-atendimento;
Contextos
\\Os planos de discagem são divididos em seções chamadas contextos.
\\[meu_contexto]
\\Exemplo:
\\[gerente] e [funcionário]
\\Dois contextos com permissões diferentes.
176
Capítulo 6 – Plano de discagem
\\Usamos contextos para implementar um número importante de recursos, como:
\\Autenticação: solicitar senha para certas extensões;
\\Segurança: podemos evitar que determinados usuários tenham acesso a
certas funções que são vetadas a outros;
\\Privacidade: bloquear certas pessoas, por exemplo.
Com a utilização de contextos é possível fazer com que o mesmo código se comporte
de forma diferente, dependendo do perfil associado ao contexto. Por exemplo, dentro
do contexto [gerente], quando o dígito 0 é discado, ouve-se o tom de discagem da
rede pública. Dentro do contexto [funcionário], quando o dígito 0 é discado, é
recebida uma gravação “ligação não autorizada”.
[primeiro_contexto]
instrução01
instrução02
[segundo contexto]
instrução01
instrução02
177
Extensões
Introdução à Voz sobre IP e Asterisk
\\Uma extensão é uma instrução que o Asterisk segue, acionada por uma
chamada de entrada ou por dígitos discados em um canal;
\\Aplicação.
178
\\T – extensão chamada após o AbsoluteTimeout();
Fonte: www.voip-info.org/wiki/view/Asterisk+standard+extensions
Prioridades
\\As extensões podem ter vários passos;
Cada extensão normalmente possui mais de um comando (ou aplicação). Por isso
foi definido o número de prioridade, que designa a ordem em que as aplicações
devem ser executadas.
Aplicações
\\As aplicações executam ações específicas nos canais;
\\Exemplos de aplicações:
\\Answer();
\\Playback()
\\Hangup()
As aplicações são como os comandos das extensões. Elas indicam as ações a serem
executadas durante o fluxo da chamada no plano de discagem, como emitir sons,
aceitar entradas ou desligar chamadas.
179
Answer()
Introdução à Voz sobre IP e Asterisk
A aplicação Answer() é utilizada para responder a um canal que está tocando. Ela
faz a configuração inicial para que o canal receba uma ligação. É uma das
aplicações mais importantes, pois boa parte das outras aplicações necessita que o
canal tenha sido configurado por Answer() para operar corretamente, por exemplo
para executar um arquivo de som no canal. Esta aplicação não recebe argumentos.
Playback()
Utilizada para reproduzir um arquivo de som sobre o canal. Recebe o nome do
arquivo de som como argumento. Para facilitar o uso desta aplicação, existe um
diretório padrão, var/lib/asterisk/sounds/, onde todos os sons do Asterisk se
encontram. Assim não precisamos especificar o caminho completo ao utilizar a
aplicação. Este caminho pode ser modificado no arquivo asterisk.conf.
Hangup()
Simplesmente desliga um canal ativo e desaloca os recursos computacionais que
estavam sendo utilizados na chamada. Não recebe argumentos.
extensions.conf
\\Os dois primeiros cabeçalhos que encontramos no arquivo extensions.conf —
[general] e [globals] — são especiais e chamados de seções;
\\[globals]
[general]
São declaradas opções gerais sobre o plano de discagem.
Por enquanto, duas opções importantes são static e writeprotect, que especificam se
o arquivo extensions.conf pode ser modificado pelo plano de discagem
dinamicamente no Asterisk. É uma boa escolha trocar o parâmetro para
writeprotect=yes, que evita que o plano de discagem seja modificado pelo comando
save dialplan, na linha de comando do Asterisk.
[globals]
Na seção [globals] podemos definir e iniciar as variáveis globais com seus
respectivos valores. Da mesma forma que em programas de computadores,
normalmente as variáveis globais são utilizadas para simplificar mudanças na
configuração do sistema. Na prática, estas variáveis são utilizadas como constantes.
180
Variáveis
\\De ambiente;
\\Associadas a um canal.
\\Variáveis globais:
\\São configuradas na classe [globals] ou utilizando o comando SetGlobalVar;
\\Uma vez definidas, podem ser referenciadas a qualquer momento.
\\Variáveis de ambiente:
\\Servem para acessar as variáveis de ambiente do sistema operacional;
\\Podemos fazer referência às variáveis de ambiente da seguinte forma:
\\${ENV(nomedavariavel)}
\\Variáveis de canal:
\\Configuradas com o comando Set(), antigo SetVar;
\\Têm um escopo local restrito ao canal em que foram criadas. São destruídas
quando o canal é encerrado, para liberar memória;
\\Algumas variáveis de canal são predefinidas e podem ser referenciadas no
plano de discagem.
RINGTIME=>3
Define quanto tempo (em segundos) vai tocar antes de executar a próxima
aplicação.
VMANNOUCE=>mysounds/my-vm-annouce
RAMAL01=>Zap/2
Define o canal associado à extensão. As variáveis globais não são “case sensitive”. A
utilização de caixa-alta é mera convenção.
${VARIÁVEL}
181
Exemplo:
Introdução à Voz sobre IP e Asterisk
Também é possível declarar uma variável global durante o fluxo de uma chamada,
utilizando a aplicação SetGlobalVar() no plano de discagem. Por exemplo:
[contexto1]
exten => 123,1, Answer()
exten => 123,n, SetGlobalVar(saidaPadrao=Zap/2)
exten => 123,n,GoTo(contexto2,456,1)
[contexto2]
exten => 456,1, Dial(${saidaPadrao})
exten => 456,n, hangup()
O Asterisk pode usar uma série de variáveis como argumentos das aplicações ou
comandos. Podem ser do tipo Global, Compartilhada, De canal ou De ambiente.
Cada canal no Asterisk possui seu próprio espaço para variáveis. Elas podem ser
definidas dinamicamente através do plano de discagem, pelo comando Set() —
antigo SetVar. Variáveis de canal são destruídas e seu espaço na memória é
desalocado quando a chamada termina, quando o comando Hangup() é executado.
Algumas variáveis de canal predefinidas no Asterisk podem ser utilizadas pelo plano
de discagem, como veremos a seguir.
182
Variáveis predefinidas
Expressões
\\As expressões utilizam variáveis, valores e operadores para retornar resultados
que são utilizados no plano de discagem;
O Asterisk suporta que sejam realizados cálculos durante a execução do plano de discagem.
183
Por exemplo, a linha
Introdução à Voz sobre IP e Asterisk
No exemplo abaixo temos uma variável referenciada com seu valor somado ao valor 200.
$[${nomedavariavel}+200]
Operadores
\\Existem basicamente três tipos de operadores que podem ser utilizados nas
expressões:
\\Matemáticos:
\\+
\\-
\\/
\\%
\\Lógicos:
\\&
\\|
184
Padrões de extensão
Para indicar que um número de extensão é uma expressão regular, deve começar
com o caractere “_” (underline).
Exemplos:
\\Código de área não inicia com 0 nem com 1, e o segundo dígito é diferente de
zero;
\\É passado para o tronco SIP apenas o número, sem o zero inicial:
185
Aplicação Background()
Introdução à Voz sobre IP e Asterisk
Aplicação Goto()
\\Útilpara direcionar a ligação para diferentes extensões, prioridades e até
mesmo contextos;
A aplicação GoTo() é muito útil para produzir desvios no fluxo da chamada, ou seja,
no caminho que a chamada percorre pelos comandos do plano de discagem. Um
desvio incondicional é implementado de acordo com a sintaxe GoTo (contexto,
extensão, prioridade), mas extensão e contexto são opcionais.
Gotoif(EXPRESSÃO?LABEL_SE_VERDADE:LABEL_SE_FALSO)
Onde:
186
Mais informações:
\\www.voip-info.org/wiki/view/Asterisk+cmd+GotoIf
Aplicação Dial()
\\Utilizada literalmente para discar para algum destino:
\\A aplicação Dial() é útil, pois permite que usuários que estejam usando
métodos de comunicação distintos possam se comunicar.
\\Timeout;
\\Opções;
\\Exemplo:
\\Outro exemplo:
\\exten => 123,1,Dial(SIP/1001,20,t);
\\Disca para o ramal SIP 1001;
\\Espera 20 segundos;
\\Permite transferência de chamadas com a opção “t”.
\\Mais um exemplo:
\\exten => 123,1,Dial(SIP/1001,,rt);
\\Disca para o ramal SIP 1001;
\\Não foi especificado o tempo de espera;
\\Dá o tom de chamada para quem está discando pela opção “r”;
\\Não foi especificado nenhum URL.
187
De forma simplificada, pode ser utilizada de acordo com a sintaxe Dial (tipo/
identificador, timeout, opções, URL), onde:
\\Timeout – tempo durante o qual o canal deve ser chamado até desistir;
\\URL– envia este URL para o dispositivo destino quando ele suporta, mas
raramente é utilizado;
\\http://www.voip-info.org/wiki/view/Asterisk+cmd+dial
Deve-se notar que os argumentos da aplicação Dial() não são obrigatórios, podendo
ser passadas várias opções como argumento.
188
6
Roteiro de Atividades
Tópicos e conceitos
\\A atividade tem por objetivo compreender e analisar os arquivos de configurações
do Asterisk.
Requisitos
\\Esta prática envolve atividades individuais
Preparando o ambiente
A sintaxe para uma extensão é a palavra exten, seguida por uma seta formada por
um sinal de igual (=) e um sinal de maior (>).
2. Prioridade;
189
Os três componentes são separados por vírgulas.
Introdução à Voz sobre IP e Asterisk
Exemplo:
Exemplo:
A versão 1.2 do Asterisk introduziu o uso da prioridade “n” (next). O parâmetro “n”
adiciona 1 ao valor anterior.
Exemplo:
A extensão especial start (representada pela letra “s”) é utilizada quando uma
ligação entra em um contexto sem estar destinada a uma extensão específica.
Dicas
Inicie a máquina virtual localizada no diretório Asterisk, e efetue login com usuário
root e a senha rnpesr.
190
Anote as linhas inseridas:
[cursovoip]
exten => 9,1,Answer()
exten => 9,2,Background(vm-enter-num-to-call)
exten => 1001,1,Dial(SIP/1001,10,r)
exten => 1001,2,Hangup()
exten => 1002,1,Dial(SIP/1002,10,r)
exten => 1002,2,Hangup()
191
1. Acrescente um tratamento de erro para um canal ocupado.
Introdução à Voz sobre IP e Asterisk
[globals]
[cursovoip]
192
7
Serviços complementares
►► Sumário
Transferência de chamadas . . . . . . . . . . . . . . . . . . . 194
Estacionamento de chamadas . . . . . . . . . . . . . . . . . . 194
Captura de chamadas. . . . . . . . . . . . . . . . . . . . . 196
Música em espera. . . . . . . . . . . . . . . . . . . . . . 196
Correio de voz (voicemail). . . . . . . . . . . . . . . . . . . 197
193
Transferência de chamadas
Introdução à Voz sobre IP e Asterisk
Permite que chamadas sejam encaminhadas para outros ramais. Quando um usuário
recebe uma ligação e decide transferi-la para outra pessoa, pode fazê-lo de duas formas:
Estacionamento de chamadas
\\Funcionalidade muito útil e conhecida dos usuários de PABX convencionais;
\\Parâmetros de configuração:
\\parkext;
\\parkpos;
\\context;
\\parkingtime.
194
Parâmetros de configuração
parkext
Extensão utilizada para colocar a chamada em estacionamento. Ao transferir a
chamada para esta extensão, o sistema informa a posição de estacionamento em
que a chamada foi colocada. Por padrão é a extensão 700.
parkpos
Esta opção define o número de posições de estacionamento. Por padrão, temos o
intervalo 701-720 (20 extensões).
context
Nome do contexto de estacionamento. Para estacionar chamadas, precisamos incluir
este contexto no plano de discagem (include =>parkedcalls).
parkingtime
Permite que uma chamada em andamento não precise ser desligada quando um dos
usuários tiver que se deslocar para outro ramal. Quando configurada, esta opção
controla o tempo (em segundos) que uma chamada pode ficar estacionada. Se não for
recuperada no tempo fornecido, a extensão que estacionou a chamada voltará a tocar.
include=>parkedcalls
Figura 7.1
195
A chamada fica estacionada até que o lado que a colocou em espera se conecte
Introdução à Voz sobre IP e Asterisk
novamente.
Exemplo: em chamada entre os ramais 101 e 102, o usuário que está falando no
ramal 101 deseja ir até a sala em que se encontra o ramal 103 e continuar a
ligação de lá. Ao digitar #700, ele recebe do Asterisk um número associado à
chamada estacionada. Ao discar para esse número a chamada é capturada.
Captura de chamadas
\\A captura de chamadas (call pickup) permite que o usuário atenda a chamadas
direcionadas a outros usuários que estejam em um mesmo grupo;
\\Evita que tenhamos que levantar para atender ao telefone de outro colega.
Permite que um usuário capture a chamada de outro ramal que ainda não tenha
sido atendida.
No Asterisk, o código padrão para captura de ligações é *8. Este código pode ser
modificado no arquivo features.conf pelo parâmetro pickupexten. Além disso, para
habilitar a captura, devemos configurar grupos de chamadas nos arquivos que
correspondem a cada tecnologia utilizada:
\\sip.conf;
\\iax.conf;
\\zapata.conf / chan_dahdi.conf.
O usuário do ramal 101 está ligando para o usuário do ramal 103. O usuário do
ramal 102, ao escutar o ramal 103 tocando na sala ao lado, sem que ninguém
atenda, disca *8 em seu próprio telefone e captura a chamada, sem precisar se
levantar e ir até a sala ao lado onde o ramal está tocando.
Música em espera
\\A música em espera é utilizada em diversas situações, como estacionamento
de chamadas, filas e transferências;
Permite que um usuário em espera escute uma música de fundo. É possível utilizar
quase qualquer tipo de mídia como música de espera do Asterisk, de arquivos wav
até streams mms://.
196
A escolha mais segura é a utilização de arquivos locais wav ou mp3. Para tocar
Exemplo: existe uma chamada entre os ramais 101 e 102, e o usuário do ramal
103 faz uma chamada para o ramal 102. Ao receber a notificação de uma nova
chamada, o usuário do ramal 102 avisa ao ramal 101 que vai deixá-lo em espera,
sendo disponibilizada uma música de fundo para o usuário do ramal 101.
Além disso, também é possível enviar e-mails avisando sobre a chegada de recados na
caixa postal de voz. O texto do e-mail é configurável e pode informar a data e a hora
em que a ligação foi recebida e o número de origem, entre outras opções. Além disso,
ainda é possível anexar a esta mensagem o próprio recado, gravado em mp3 ou wav.
197
198
7
Roteiro de Atividades
Tópicos e conceitos
\\A atividade tem por objetivo explorar as funcionalidades do Asterisk.
Requisitos
\\Esta prática envolve atividades em dupla ou mais alunos.
Nesta atividade iremos criar uma configuração para que seja possível efetuar
transferência de chamadas.
Passo 1: abra o arquivo sip.conf e verifique se todos os clientes estão com a opção
canreinvite=no habilitada.
199
Passo 4: reinicie o serviço Asterisk:
Introdução à Voz sobre IP e Asterisk
# /etc/init.d/asterisk restart
Passo 5: abra o cliente X-Lite, e efetue uma chamada para um ramal; após atender,
transfira a chamada para outro ramal utilizando a tecla #.
Anotações:
Nesta atividade executaremos uma configuração para que seja possível efetuar o
estacionamento das chamadas.
Passo 2: localize a linha que possui a variável parkpos=>, e altere seu valor para
501-503.
# /etc/init.d/asterisk restart
200
Anotações:
# /etc/init.d/asterisk restart
Anotações:
201
Atividade 4 – Música em espera
Introdução à Voz sobre IP e Asterisk
Nesta atividade efetuaremos uma configuração para que seja possível ouvir a música
de espera.
# /etc/init.d/asterisk restart
Nesta atividade efetuaremos uma configuração para que seja possível ouvir a música
de espera.
1001=>1111,Aluno1 Voip,root@localhost
1002=>1111,Aluno2 Voip,root@localhost
202
Passo 2: edite o arquivo extensions.conf para tratar o voicemail. Coloque a
exten=>9,1,Answer()
exten=>9,2,Background(vm-enter-num-to-call)
exten=>_10XX,1,Playback(transfer)
exten=>_10XX,2,Dial(SIP/${EXTEN},5,r)
exten=>_10XX,3, VoiceMail(u${EXTEN}@default)
exten=>_10XX,4,Hangup()
exten=>_10XX,103, VoiceMail(b${EXTEN}@default)
exten=>_10XX,104, Hangup()
exten=>i,1,Playback(pbx-invalid)
exten=>i,2,Goto(cursovoip,9,1)
exten=>t,1,Playback(vm-goodbye)
exten=>t,2,Hangup()
Passo 3: acrescente uma extensão para que o usuário possa acessar sua caixa de
correio.
exten=>500,1,VoiceMailMain()
203
204
8
Distribuição de chamadas
►► Sumário
Discagem por diretório . . . . . . . . . . . . . . . . . . . . 206
Distribuição automática de chamadas . . . . . . . . . . . . . . . 207
205
Discagem por diretório
Introdução à Voz sobre IP e Asterisk
\\O correio de voz fornece suporte para outra funcionalidade: a discagem por
diretório;
\\Sintaxe:
\\Directory(vm-context[|dial-context[|options]])
\\Anuncia ao usuário uma lista de ramais que podem ser selecionados pelo
nome:
\\Esta característica é conhecida com “discagem por nome” (dial by name)
nos sistemas tradicionais.
Fluxo:
\\O arquivo de introdução toca a mensagem Please enter the first three letters of
the persons last name...;
\\Se mais de um nome for encontrado, é possível escolher entre os nomes encontrados;
206
Capítulo 8 – Distribuição de chamadas
Distribuição automática de chamadas
\\A distribuição automática de chamadas é possibilitada pelo uso de filas, e
funciona da seguinte forma:
\\As chamadas entram e são colocadas em fila;
\\Clientes autenticados como agentes atendem as chamadas;
\\Uma estratégia é usada para distribuir as chamadas.
\\Agentes são atendentes com ramais definidos no arquivo agents.conf, onde são
definidas as filas de atendentes;
Esta função permite que as chamadas sejam atendidas assim que chegam e
inteligentemente direcionadas aos agentes disponíveis, como em um call center. A
distribuição automática de chamadas também auxilia a gerenciar redirecionamentos
de transbordo, redirecionamento de chamadas baseado em estatísticas de fila,
recuperação de chamadas abandonadas e encaminhamento de chamadas entre
múltiplas localidades. O encaminhamento baseado nas habilidades dos agentes
(skills-based routing) define o agente mais apropriado para atender cada chamada;
o encaminhamento baseado em regras aplica um único conjunto de regras de
negócio para todos os canais de contato; e a funcionalidade Specific Agent Recall
direciona clientes que estejam retornando chamadas para o mesmo agente que fez
o contato original.
207
208
8
Roteiro de Atividades
Tópicos e conceitos
\\A atividade tem por objetivo explorar as funcionalidades do Asterisk.
exten=>7,1,Directory(default,cursovoip,f)
exten=>7,2,Directory(default,cursovoip,f)
# /etc/init.d/asterisk restart
Anotações:
209
Atividade 2 – Distribuição automática de chamadas
Introdução à Voz sobre IP e Asterisk
Passo 1: edite o arquivo agents.conf e adicione uma nova seção [fila], que definirá
a nossa fila.
[general]
persistentagents=yes
[agents]
autologoff=15
musiconhold => default
group=1
agent => 300,300, atendente 1
agent => 301,301, atendente 2
Passo 2: edite o arquivo queues.conf e adicione uma nova seção [fila]. Esta seção
definirá a nossa fila.
[fila]
music = default ;classe da "music on hold"
strategy= ringall ;estratégia para distribuir as chamadas
maxlen = 0 ;Comprimento máximo da fila (0 = infinito)
member => Agent/300 ;Inclusão de um agente
member => Agent/301 ;Inclusão de outro agente
Passo 4: disque do X-Lite para uma das extensões de login (6001 ou 6000) e siga
as instruções.
210
Passo 5: utilizando outro softphone, disque para a fila 0800.
211
212
9
Unidade de Resposta Audível
(URA)
►► Sumário
Hora do sistema. . . . . . . . . . . . . . . . . . . . . . . 214
Unidade de Resposta Audível (URA). . . . . . . . . . . . . . . . 215
213
Hora do sistema
Introdução à Voz sobre IP e Asterisk
\\Format – formato em que data e hora são reproduzidos. Os formatos abreviados são:
\\Y – ano;
\\M – minuto;
\\P ou p – AM ou PM;
214
Capítulo 9 – Unidade de Resposta Audível (URA)
\\Serviço adicional – Data e Hora:
; Hora
exten => 102,1,Ringing
exten => 102,2,Wait(1)
exten => 102,3,SayUnixTime(,America/Sao_Paulo,IMp)
exten => 102,4,Hangup
; Data
exten => 103,1,Ringing
exten => 103,2,SayUnixTime(,America/Sao_Paulo, ABdY)
exten => 103,3,Hangup
\\Data – ABdY: dia da semana, nome do mês, dia do mês numérico, ano.
215
Introdução à Voz sobre IP e Asterisk
\\[opcao-2]
[opcao-1]
exten => s,1,Dial(SIP/6331@openser)
exten => s,2,Hangup()
[opcao-2]
exten => s,1,Dial(SIP/7531@openser)
exten => s,2,Hangup()
216
Gravando mensagens de áudio
Para esse propósito, você poderá adicionar uma extensão no extension.conf para
gravar a mensagem. Neste exemplo, você pode discar 100 e depois do beep
começar a gravação e terminar com #.
É possível também na IVR chamar os ramais que estão no OpenSER; para isso
poderia ser implementada uma extensão conforme abaixo:
exten: _XXXX,1,Dial(SIP/${EXTEN}@openser)
exten: _XXXX,2,Hangup()
217
Introdução à Voz sobre IP e Asterisk
218
9
Roteiro de Atividades
Tópicos e conceitos
\\A atividade tem por objetivo explorar as funcionalidades do Asterisk.
Nesta atividade iremos gerar mensagens para serem utilizadas como atendimento.
Opções
219
1. Descreva um plano de discagem que permita a gravação das mensagens, onde os
Introdução à Voz sobre IP e Asterisk
3. Crie uma mensagem para suporte, uma para o departamento financeiro e outra
para vendas, onde em cada contexto vamos tocar uma gravação como Você foi
redirecionado para o departamento xxxx.
220
Anote o plano de discagem do grupo:
221
222
10
Qualidade de Serviço em VoIP
►► Sumário
Situação atual . . . . . . . . . . . . . . . . . . . . . . . 224
Provisão de QoS . . . . . . . . . . . . . . . . . . . . . . 225
Estabelecimento de contratos de serviços . . . . . . . . . . . . . . 226
Service Level Agreement (SLA). . . . . . . . . . . . . . . . . . 227
Provisão centralizada. . . . . . . . . . . . . . . . . . . . . 228
Provisão distribuída. . . . . . . . . . . . . . . . . . . . . . 229
Manutenção . . . . . . . . . . . . . . . . . . . . . . . . 230
Término do contrato. . . . . . . . . . . . . . . . . . . . . 231
Modelos de QoS . . . . . . . . . . . . . . . . . . . . . . 231
Protocolo de sinalização – RSVP . . . . . . . . . . . . . . . . . 233
Rotina de controle de admissão . . . . . . . . . . . . . . . . . 234
Classificador . . . . . . . . . . . . . . . . . . . . . . . . 235
Escalonador de pacotes . . . . . . . . . . . . . . . . . . . . 235
Escalonador FIFO (First In First Out) . . . . . . . . . . . . . . . 235
Escalonador WFQ (Weighted Fair Queuing) . . . . . . . . . . . . . 236
Escalonador PQ (Priority Queying) . . . . . . . . . . . . . . . . 237
IntServ . . . . . . . . . . . . . . . . . . . . . . . . . . 237
DiffServ . . . . . . . . . . . . . . . . . . . . . . . . . 238
DiffServ no pacote IP . . . . . . . . . . . . . . . . . . . . . 239
DiffServ – DSCP. . . . . . . . . . . . . . . . . . . . . . . 240
Considerações sobre DiffServ . . . . . . . . . . . . . . . . . . 240
Encaminhamento . . . . . . . . . . . . . . . . . . . . . . 241
Serviços Integrados sobre Diferenciados . . . . . . . . . . . . . . 241
Multi-Protocol Label Switching – MPLS . . . . . . . . . . . . . . 242
Modelo básico de rede MPLS . . . . . . . . . . . . . . . . . . 243
Real-time Transport Protocol – RTP . . . . . . . . . . . . . . . . 244
Real-time Transport Control Protocol – RTCP . . . . . . . . . . . . 247
223
Situação atual
Introdução à Voz sobre IP e Asterisk
A internet faz “o melhor possível” para entregar os pacotes, mas sem garantia
alguma. Pacotes podem ser perdidos, atrasados ou entregues fora de ordem.
\\Aplicações de voz demandam pouca banda, mas não toleram alto atraso ou jitter.
\\Aplicações de imagem podem exigir grande banda e não toleram alto atraso ou
jitter, embora tolerem alguma perda.
\\Voz e dados nas redes de circuitos exigiam taxas de erro distintas e, em última
instância, parâmetros de qualidade diferentes.
224
Provisão de QoS
\\Mecanismos estáticos:
\\Ex.: solicitação ao administrador de rede.
\\Mecanismos dinâmicos:
\\Ex.: uso de protocolos de sinalização.
225
7. Ao término do contrato, após a liberação dos recursos, é importante fazer uma
Introdução à Voz sobre IP e Asterisk
\\Disponibilidade do serviço;
\\Medição de atrasos;
226
Esse tráfego fora da caracterização poderá ter pacotes perdidos ou atrasados, sem
13. Como as futuras divergências serão dirimidas (em casos sob judice)?
227
Introdução à Voz sobre IP e Asterisk
\\Dinâmica:
\\Centralizada;
\\Descentralizada ou distribuída.
Provisão centralizada
\\Bandwidth Broker (BB) ou negociador de recursos é o responsável pela
reversão e configuração dos recursos.
\\O BB disponibiliza:
\\Interface de solicitação e configuração de serviços;
\\Comunicação das decisões.
228
Capítulo 10 – Qualidade de Serviço em VoIP
\\Exemplos de BB:
\\Common Open Policy Server (COPS) – RFC 2748;
\\Diameter (RFC 3588).
Common Open Policy Server (COPS), especificado na RFC 2748, é um modelo cliente/
servidor para efetivar o controle e o policiamento da QoS para determinada aplicação.
Provisão distribuída
\\Estações e roteadores na rede são dotados de um negociador próprio;
\\Exemplo:
A alocação do recurso é feita para todo o período em que a aplicação será utilizada,
não podendo o recurso ser compartilhado com outras aplicações. Ao término da
aplicação, os recursos deverão ser liberados para que outras aplicações possam
utilizá-los. O RSVP é o protocolo utilizado no modelo de QoS, conhecido como
IntServ ou Integrated Services (Serviços Integrados).
Antes do estabelecimento da comunicação entre dois pontos, cada roteador por onde
o fluxo de dados irá passar deve alocar os recursos necessários para garantir a
qualidade da comunicação. Se qualquer roteador negar a solicitação, o fluxo em
questão não poderá trafegar pela rede.
229
Manutenção
Introdução à Voz sobre IP e Asterisk
\\Necessidade de policiamento:
\\A rede deve reagir prontamente a degradações ocasionais.
\\Renegociação do SLA:
\\Tentativa de manter o novo SLA contratado.
230
Renegociação do SLA
Término do contrato
\\A aplicação informa à rede a intenção de finalizar o contrato;
Modelos de QoS
\\Existem diferentes tipos de modelos propostos pelo Internet Engineering Task
Force (IETF);
231
Introdução à Voz sobre IP e Asterisk
\\IntServ:
\\Escalonador de pacotes.
O modelo IntServ está descrito na RFC 1633. A sinalização deste modelo de QoS é
provida pelo protocolo de reserva de recursos, o RSVP (Resource Reservation
Protocol), descrito na RFC 2205.
232
De forma simplificada, um fluxo é identificado na arquitetura IntServ pelo IP e a
Uma rede que implemente o modelo IntServ precisa garantir que seus roteadores
sejam capazes de executar as seguintes tarefas:
233
no trânsito dos dados não tiver disponível o recurso solicitado, a transmissão dos
Introdução à Voz sobre IP e Asterisk
dados não ocorre. Para alocar recursos, as mensagens PATH e RESV são trocadas
entre o receptor e o transmissor.
Nuvem RSVP
Figura 10.1
RESV(6) RESV(5) RESV(4)
Origem solicita reserva de recursos tais como banda, delay e jitter, para determinada
aplicação através da mensagem PATH, que pode ser unicast ou multicast. Cada roteador
consultado que atender à solicitação passa ao estado de “reserva dos recursos”, e
encaminha a mensagem até o destino, que retorna a mensagem RES pelos mesmos
roteadores, confirmando a reserva do caminho. Desta maneira é estabelecido um
caminho prévio, semelhante ao conceito dos recursos solicitados ao longo circuito.
\\Este componente é requisitado de forma que sua decisão não interfira nos
fluxos previamente aceitos pelo roteador.
234
Classificador
\\O fluxo é atendido de acordo com sua prioridade na fila dentro do roteador;
\\As prioridades da fila são tratadas pelo escalonador, que implementa algoritmos
que selecionam os pacotes.
Escalonador de pacotes
\\Estabelece políticas de enfileiramento e prevenção de congestionamento;
FIow 1 5
FIow 2 2
FIow 3 4
FIFO Queue
FIow 4 6 Multiplexer
6 5 4 3 2 1 Port
FIow 5
FIow 6
FIow 7 3
FIow 8 1
Figura 10.2
235
É a política mais simples, normalmente utilizada para aplicações que não
Introdução à Voz sobre IP e Asterisk
necessitam de QoS.
Transmit Outgoing
Incoming packets queue packets
Classify
Configurable
number of queues
236
Escalonador PQ (Priority Queying)
High
Low
Length defined
by queue limit
IntServ
\\Escalabilidade:
\\Complexidade:
O IntServ é pouco escalável, uma vez que trata de cada fluxo individualmente. Em
uma grande rede, armazenar informações e tratar individualmente de cada fluxo
pode comprometer o espaço de armazenamento e o processamento dos nós
intermediários, assim como o esforço de gerenciamento. Os roteadores devem
237
obrigatoriamente implementar funções mais sofisticadas, trazendo maior necessidade de
Introdução à Voz sobre IP e Asterisk
DiffServ
\\Differentiated Service:
\\Introduzido pelo Internet Engineering Task Force (IETF) para resolver os
problemas encontrados com a implantação do IntServ;
\\Neste modelo, os pacotes são previamente marcados de acordo com os
tipos de serviços desejados;
\\O DiffServ possibilita a criação de classes de serviços dentro de um domínio:
\\Ex.: ISP, Teleco.
\\Quando o cliente contrata um “serviço diferenciado”, o campo TOS (Type Of
Service) é marcado com a classe correspondente.
238
DiffServ no pacote IP
0 4 8 16 19 31
Version HLen Type of service Total lenght
Identification Flags Fragment offset
Time to live Protocol Header checksun
Source IP address
Destination IP address
Options Padding
Data
Figura 10.5
A RFC 3260 redefine o campo TOS, modificando o significado de alguns bits. Agora,
este octeto é conhecido como DS (Differentiated Services). São utilizados 6 bits para
a marcação dos pacotes, e os outros dois estão reservados e não são utilizados. Na
prática, os pacotes são marcados com valores que definem a classe de serviço a que
pertencem, fornecendo uma indicação aos roteadores da prioridade com que esses
fluxos devem ser tratados.
239
DiffServ – DSCP
Introdução à Voz sobre IP e Asterisk
\\Valores DSCP
Default 000000 0
Expedited 101110 – EF 5
Forwarding
Tabela 10.1
Pacotes com prioridade EF (Expedit Forwarding) são imediatamente enviados para a
rede. A classe EF está descrita na RFC 2598.
240
descrito. Cada roteador decide como o pacote deve ser encaminhado. Por isso a
Encaminhamento
\\Expresso (EF – Express Forward):
\\Objetivo é diminuir o tempo de permanência nas filas dos pacotes em trânsito;
\\Garante prioridade nos pacotes com esta marcação em relação a qualquer outro;
\\Garante tempos de atraso e perdas de pacotes máximos aceitáveis.
\\Vantagens da integração:
\\Possibilidade de se implementar serviços de policiamento por fluxo e
autenticação de usuários individuais;
\\Melhor uso de recursos e custo, obtidos com a reserva por fluxo.
241
elas são mais adequadas: IntServ no acesso (próximo ao usuário), onde há uma
Introdução à Voz sobre IP e Asterisk
NE (Host)
NE (Router)
DiffServ Transit
Network
NE (Virtual Link)
Fonte: ARMITAGE, Greenville. Quality of Service in IP Networks. New Riders Publishing, 2000.
Figura 10.6
Uma ou mais redes IntServ podem ser construídas em volta de uma rede DiffServ.
Podemos conseguir isso tratando a borda da rede (NE – Network Edge) DiffServ
como uma ponta de um link virtual.
\\Vantagens do MPLS:
\\Permite prover QoS;
\\Reduz a carga nos roteadores.
242
O IP foi desenhado para encaminhar pacotes de um ponto a outro da rede, sem
Costumer 2 Costumer 3
La
Costumer 1 17 Costumer 1
be
l=
l=
e
Lab
20
0
Costumer 3 Costumer 2
Label = 17
MPLS MPLS
Edge Edge
Fonte: ARMITAGE, Greenville. Quality of Service in IP Networks. New Riders Publishing, 2000.
243
Real-time Transport Protocol – RTP
Introdução à Voz sobre IP e Asterisk
UDP
RTP
Performance
TCP
Reliability
Fonte: Analog Devices: Analog Dialogue: Blackfin Voip; Acessado em 22/02/07. Figura 10.8
244
Funcionando sobre o UDP, soma-se a este algumas informações de sequenciamento
0 8 16 24 32
V P X #CS M PT Sequence
Timestamp
Syncronization Source (SSRC)
Countributing Source (CSRS)
Header Extention
Payload (áudio, vídeo etc)
Figura 10.9
\\V (Version);
\\P (Padding);
\\X (Extention);
\\CC (CSRC Counter);
\\M (Marker Bit);
\\PT (Payload Type);
\\Sequence Number;
\\Timestamp;
245
\\M (Marker Bit) – delimita um conjunto de dados relacionados, o início de uma
Introdução à Voz sobre IP e Asterisk
\\PT (payload type) – tipo de aplicação (codec), definido na RFC 1890 e 3551
(PT=200/RTCP);
\\m (marker) – depende do PT (igual a 1), por exemplo quando houver supressão
de silêncio;
UDP UDP
Figura 10.10
IP IP
Sessão RTP
Sessão RTP
246
Quando pacotes RTP relativos a um fluxo chegam ao seu destino, o número de
\\Desempenha 4 funções:
\\Prover informação a respeito da qualidade da distribuição dos dados de
um fluxo;
\\Transportar um identificador de nível de transporte persistente para um
transmissor em uma sessão RTP:
\\Nome canônico (canonical name ou CNAME);
\\As funções anteriores requerem que todos os participantes enviem
pacotes periodicamente;
\\Transportar informações mínimas de controle de sessão.
\\APP.
247
A frequência de transmissão de pacotes de controle pode variar com a quantidade
Introdução à Voz sobre IP e Asterisk
de participantes em uma sessão, uma vez que, em caso de uma quantidade muito
alta, o fluxo de dados de controle pode comprometer os fluxos de dados.
O identificador CNAME é utilizado para associar múltiplos streammings, como voz e vídeo.
V P IC PT Length
Format-specific information
Padding if P = 1
V = Version number
P = padding
IC = item count Figura 10.11
PT = packet type
Estrutura do
Fonte: PERKINS, Colin. RTP: Audio and Video for the Internet. Boston: Addison Wesley, 2003. RTCP.
248
Há 5 tipos de pacotes RTPC definidos na especificação do RTP, um para cada
O cabeçalho dos pacotes RTCP tem em comum 5 campos que ocupam 32 bits:
2. Padding (P) – indica que o pacote foi preenchido com bits além do seu tamanho
natural. Este tipo de expediente é necessário quando são utilizados alguns
algoritmos de criptografia que necessitam de blocos com tamanho constante;
V P RC PT=201 Length
Reporter SSRC
Reportee SSRC
Interarrival jitter
Figura 10.12
Next receiver report block
Pacote RR
(Receiver Report)
249
\\Reportee SSRC (Reportee Synchronization Source) – identifica o participante e
Introdução à Voz sobre IP e Asterisk
\\Delay since last sender report received (DLSR) – é o delay entre o recebimento
do último pacote SR e o envio do RR.
V P RC PT=200 Length
Reporter SSRC
NTP timestamp
RTP timestamp
250
Capítulo 10 – Qualidade de Serviço em VoIP
V P RC PT=202 Length
SSRC / CSRC 1
SSRC / CSRC 2
Figura 10.15
Pacote SDES Type Length Value (not null-terminated)
- Item
O pacote de descrição de fontes é composto basicamente de uma lista de itens
separados pela identificação de fontes individuais de sincronização. É identificado
pelo tipo de pacote 202.
As entradas são armazenadas nos pacotes de uma maneira contínua, sem separação
ou padding. O fim da lista é indicado por um item de tipo zero.
V P SC = 1 PT = 202 Length = 10
SSRC
p @ 1 0
. 7 . 4
2 . 1 6
o l i n
P e r
Figura 10.16 k i n s
Exemplo de
Type = 0 i 0 0
SDES
251
\\Type 3 – e-mail do participante;
\\Type 8 (PRIV items) – utilizado para especificar extensões privadas e para criar
extensões experimentais ou específicas para determinadas aplicações.
V P RC PR = 203 Lenght
SSRC 1
SSRC 2
...
SSRC n
Figura 10.17
Optional length Optional reason for leaving
Pacote BYE
V = Version number
P = padding
RC = number of SSRC headers
PT = packet type
SSRC
Application-defined data
Figura 10.18
Pacote BYE
\\O BYE é identificado pelo tipo de pacote 203, e mostra que os participantes
indicados deixaram a transmissão.
A última classe de pacotes RTCP permite extensões específicas para aplicações, sendo
útil para utilizar extensões RTCP fora dos padrões ou para testar novas funcionalidades.
252
10
Roteiro de Atividades
Tópicos e conceitos
\\Conceitos sobre QoS.
253
3. Na figura a seguir, o usuário do PC1 da empresa 2 quer estabelecer uma
Introdução à Voz sobre IP e Asterisk
Figura 10.19
254
7. Qual o objetivo do Multi Protocol Label Switching (MPLS)?
10. Analisando o pacote RTP, observamos o campo Payload Type (PT), que indica o
formato da carga do pacote e como será sua interpretação pela aplicação.
Quantos são os valores para este campo, quais são e o que representam?
255
256
Bibliografia
\\DEMPSTER, Barrie; GARRISON, Kerry. TrixBox Made Easy. Packt Publishing, 2006.
\\MADSEN, Leif; SMITH, Jarred; MEGGELEN, Jim Van. Asterisk: The Future of
Telephony. O’Reilly, 2005. Disponível em: http://www.asteriskdocs.org/modules/
tinycontent/index.php?id=11. Acessado em 16/08/2006.
\\PERKINS, Colin. RTP: Audio and Video for the Internet. Boston: Addison Wesley, 2003.
\\RFC – 3261
257
\\www.voip.nce.ufrj.br. Acessado em 22/11/2006, com informações retiradas
Introdução à Voz sobre IP e Asterisk
\\www.voip.nce.ufrj.br/courses/rnp/Interconexao_Gateways_parte_1_3tr.pdf.
Acessado em 03/05/2007.
\\www.digium.com
\\www.voip.nce.ufrj.br/courses/rnp/Interconexao_Gateways_parte_1_3tr.pdf.
Utilizado como fonte de fotos.
\\www.voip-info.org
258
\\www.packetizer.com
Bibliografia
\\www.asterisk.org
\\www.networksocerty.com/enp/protocol/sip.htm
259
260
Aprenda na prática
a configurar uma rede VoIP
com Asterisk, telefones IP e ATA
esr.rnp.br