SERVIDOR ASTERISK
TRABALHO INTERDISCIPLINAR
FUNDAMENTOS DE TELECOMUNICAÇÕES
SEGMENTOS DE REDES DE COMPUTADORES
COMPUTAÇÃO DISTRIBUàDA
LEGISLAÇÃO E ÉTICA EM TELECOMUNICAÇÕES
Docentes:
Prof. Vladimir Romanelli
Prof. Luiz A. Pagani
Prof. Glauber Soares Pereira
Discentes (3 º peràodo):
Bruno Schissatti
Fabiano Fernandes
Marcos Roberto
Rogério Rui
Saulo Bolete
Escopo do trabalho:
a) A máquina dos servidores.
b) As placas de adaptação dos ramais analógicos e entroncamentos.
c) Detalhar a programação e categorização de cada terminal do arquivo digivoice.conf
d) Efetuar o levantamento de alternativas para aumentar a disponibilidade e desempenho do sistema e indicar, justificando, qual a melhor opção.
Conteàºdo
A. Especificação de hardware para os servidores 1
1. O Hardware escolhido 1
i) Especificação 1
2. Sistema Operacional 2
3. Versão do Asterisk 2
B. Estrutura de conexà£o Tronco x Ramais 3
2. Por que escolhemos o Astribank? 3
3. Modularidade 3
4. Interface USB 3
5. Funcionamento 4
B. Configuração do sistema 7
1. etc/zaptel.conf 7
2. etc/asterisk/extensions.conf 7
3. etc/asterisk/zapata.conf 8
4. etc/asterisk/sip.conf 8
C. Disponibilidade e desempenho 9
1. Cluster Asterisk utilizando o DNS Round-Robin e DUNDi 9
i) DNS Round-Robin 9
ii) DUNDi 9
2. Cluster Asterisk utilizando Heartbeat 11
i) Como o Heartbeat trabalha? 11
ii) csync2 Configuration 12
iii) Versionamento do Heartbeat 13
3. Qual solução a ser utilizada? 13
Bibliografia 14
A. Especificação de hardware para os servidores
Para que o ambiente tenha alta disponibilidade com excelente desempenho, e ter ainda um end-life mais longo que demais ambientes optamos por trabalhar com servidores de maior porte.
1. O Hardware escolhido
Foi escolhido para esta implementação o servidor IBM® System x3550 (Figura 1), jà¡ que estamos aplicando uma solução onde poderà¡ ocorrer expansà£o. Todas as caracteràsticas citadas tornam o x3550 o Hardware ideal para aqueles servià§os que buscam desempenho e disponibilidade, oferece alta tecnologia com superior desempenho a baixos custos. O servidor x3550 permite a utilização de até dois discos SATA ou SAS com a mesma controladora onboard, mas nà£o simultaneamente. As duas opà§àµes sà£o hot-swap, ou seja, permitem a troca dos discos com a mà¡quina ligada pela parte frontal do servidor. O que facilita a manutenção preventiva.

Figura 1
i) Especificação
Caracteràsticas principais:
- Processador: Intel Quad-Core Xeon E5420 (2.5GHz/1333)
- Cache Processador L2: 12MB
- Quantidade de Processador Suportado: 2
- Memória Padrà£o: 2x1GB
- Memória Mà¡xima: 32GB
- Interface Memória: PC2-5300 ECC DDR2 FBDIMM 667MHz
- Disco Padrà£o: Opcional
- Disco Mà¡ximo: 1500GB SATA / 600GB SAS
- Interface Disco: SATA / SAS Hot-Swap LFF
- Controladora: SAS
- Placa de Rede: Dual Gigabit integrada
- Màdia Óptica: CDRW/DVD ROM Combo Drive (48/32/48/16 X )
- Drive de 1.44MB: Opcional
- Fonte de Alimentação: Suporta 2 ª Fonte (Redundante)
- Placa de Vàdeo: 16MB
- Porta USB: 4
- Porta Paralela: Nà£o
- Slot PCI-X: 1 (Vide Observação Abaixo )
- Slot PCI Express (PCI-E): 2
- Gabinete: Rack / 1U
- Controladora SAS Integrada suporta RAID-0, 1, 3 e 5
Recursos comuns
- Reduz a energia com barramento frontal mais rà¡pido no processador e na memória.
- Gerenciamento de energia otimizado com novas ferramentas integradas.
- Melhor desempenho do aplicativo com filtros snoop.
2. Sistema Operacional
Embora o Asterisk funcione também na plataforma Windows, recomendamos a utilização de sistemas operacionais baseados na plataforma UNIX como o FreeBSD (onde originalmente foi concebida a rede Zapata) ou distribuià§àµes Linux como o CentOS que é a distribuição oficial para testes pelo Asterisk ou o Red Hat Enterprise que é similar ao CentOS mas que possui contrato de suporte.
3. Versà£o do Asterisk
O Asterisk é produzido sob licenà§a GPL, a versà£o mais recente disponàvel para download no site www.asterisk.org é a 1.6.0.3-rc1
B. Estrutura de conexà£o Tronco x Ramais
Para a configuração proposta, a melhor opção encontrada foi o Astribank XORCOM, equipamento USB que substitui o uso de placas internas.
2. Por que escolhemos o Astribank?
Astribank se demonstrou a melhor opção para conectar um servidor Asterisk ao mundo da telefonia tradicional por ser um channel bank inteligente para o Asterisk PBX. Conecta-se ao servidor Asterisk através de um conector USB-2. O Astribank tem uma arquitetura que foi projetada para facilitar a integração. Quando utilizado com a distribuição do Xorcom Rapid ou Xorcom TS-1 é praticamente “Plug & Play”, nà£o como outras soluà§àµes do mercado.
3. Modularidade
O Astribank funciona de forma modular de fà¡cil instalação, tendo padrà£o de 19” para uso em rack’s e também em bandejas, diferente das placas que necessitam do barramento PCI, dos servidores sendo limitado pela quantidade de barramento. O Astribank facilita no processo de manutenção, como as ligaà§àµes dos equipamentos sà£o feitas através de cabo USB, podem ser desligados sem a necessidade de para o funcionamento do servidor, o mesmo nà£o acontece com as placas, qualquer tipo de manutenção a ser feita deverà¡ ser feito o desligamento. Màºltiplas unidades de Astribank podem ser conectadas a um àºnico servidor Asterisk usando diferentes portas USB, hubs USB ou placas PCI USB. Como as conexàµes do Astribank sà£o tipo RJ, a implementação em uma rede de cabeamento estruturado fica fà¡cil e prà¡tica, usando apenas cabos do tipo patch Cord RJ/RJ. O Astribank é a solução ideal na migração de centrais de telefonia com ramais analógicos para o Asterisk.
4. Interface USB
A relação do USB 2.0 fornece uma velocidade teórica de 480.000.000 bits por segundo. Uso descomprimido tàpicos de uma conversa telefà´nica aproximadamente 64.000 bits por segundo em um sentido, mais algumas despesas gerais; no total menos de 200.000 bits por segundo, a chamada de telefone é usada. Assim, o nàºmero simultà¢neo teórico de conversaà§àµes que a relação do USB 2.0 pode segurar é 480.000.000 bits divididos por 200.000 bits: aproximadamente 2.400 chamadas para um àºnico ponto do USB 2.0. Este é um nàºmero teórico, naturalmente, e o processador de anfitrià£o tàpico nà£o poderà¡ segurar esta quantidade de chamadas simultà¢neas, mas dà¡ uma resposta desobstruàda à pergunta: “Pode o ponto do USB suportar o trà¡fego pesado da telefonia com Astribanks màºltiplos?” Que conecta Astribank unidades màºltiplas a um àºnico ponto do USB 2.0 é fà¡cil: usa simplesmente um cabo do USB 2.0 para conectar muitas unidades de Astribank.
5. Funcionamento
A linha XR0000 do Astribank oferece uma vasta combinação de portas FXS, FXO, BRI ISDN e de entrada e saàda. Astribank é solução làder em sistemas Asterisk de alta densidade, como os usados em hotéis, condomànios, etc. Hoje Astribank é testado com versàµes Linux Debian, CentOS 5 e Trixbox (CentOS 4).
O driver do Xorcom para o Astribank agora é oficialmente parte do Zaptel. Digium anunciou a versà£o do Zaptel 1.2.4 para o Asterisk na metade do màªs de fevereiro, fazendo integração do Astribank com sistemas Asterisk. Dentre as modificaà§àµes e implementaà§àµes, eles listaram o novo driver para o Astribank-8 (o primeiro membro da famàlia Astribank) e para os futuros modelos do Astribank.
Para a configuração do Xorcom é necessà¡rio instalar os pacotes: fxload e libusb-deb, para isso serà¡ utilizado o gerenciador de pacotes APT.
Astribank-8 – 8 FXO (Foreign eXchange Office) (Figura 2) é um banco de canais com 8 portas FXO analógica onde serà¡ feito a conexà£o dos troncos da concessionà¡ria de telefonia.
Figura 2
Astribank 32-32 FXS (Foreign eXchange Station) (Figura 3) é um banco de canais com 32 portas FXS analógicas onde serà¡ feito a conexà£o dos ramais internos.
Figura 3
Para demonstrar a modularidade da solução proposta, expressamos na figura 4 a estrutura lógica de funcionamento de uma rede de telefonia baseada no Asterisk e Astribank.

Figura 4
Um exemplo de como os equipamentos podem ser instalados em rack encontra-se na figura 5.

Figura 5
B. Configuração do sistema
A configuração do Astribank Xorcom requer o uso dos arquivos zaptel.conf, extensions.conf e zapata.conf, estes arquivo sà£o responsà¡veis por indicar ao Asterisk como funcionarà¡ cada uma das portas dos equipamentos (FXO e FXS), permitindo ao software gerenciar as configuraà§àµes de telefonia escolhidas. Jà¡ a configuração dos ramais digitais é feita no arquivo sip.conf.
Abaixo està¡ um exemplo de como configurar cada um destes arquivos para atender à proposta do trabalho.
1. /etc/zaptel.conf
fxosks=1-3 ; Configura o Astribank FXO para 3 linhas analógicas.
fxsks=9-38 ; Configura o Astribank FXS para os 30 ramais analógicos.
loadzone=br ; Carrega a zona brasileira para tons multifrequenciais de sinalização
defaultzone=br ; Define a zona brasileira de tons como padrà£o
2. /etc/asterisk/extensions.conf
“phones-zap”
exten => _6XXX,1,Dial(ZAP/${EXTEN:1}) ; Define o nàºmero dos ramais analógicos para 6001 em diante e informa que para usar este ramal, serà¡ suprimido o primeiro nàºmero “6” para que a ligação và¡ para o ramal (Ex.: 6015 serà¡ 15).
“phones-sip”
exten => _7XXX,1,Dial(SIP/${EXTEN}) ; Define o nàºmero dos ramais digitais para 7001 em diante e informa que para usar este ramal, o nàºmero serà¡ inteiro (Ex.: 7015 serà¡ 7015).
“trunk”
exten => _0.,1,Dial(Zap/g0/${EXTEN:1}) ; Define que para efetuar ligaà§àµes externas os usuà¡rios deverà£o discar o 0, este serà¡ suprimido ao ser enviado para a concessionà¡ria de telefonia.
“from-internal”
include => phones-zap ; Define os ramais analógicos no contexto from-internal do extensions.conf
include => phones-sip ; Define os ramais digitais no contexto from-internal do extensions.conf
include => trunk ; Define os as ligaà§àµes externas no contexto from-internal do extensions.conf
“from-pstn”
exten => s,1,Dial(Zap/9) ; Define que as ligaà§àµes recebidas da rede pàºblica serà£o direcionadas para o primeiro ramal analógico.
3. /etc/asterisk/zapata.conf
“channels”
;Configuração para 32-FXS/8-FXO
echocancel=yes ; Configura o cancelamento de eco para as linhas
;FXS
signalling=fxo_ks ; Define a sinalização da porta
context=from-internal ; Define o contexto pré-definido no arquivo extensions.conf
channel => 9-38 ; determina que a partir do canal 9 até o 38 haverà¡ 30 ramais analógicos
;FXO
signalling=fxs_ks ; Define a sinalização da porta
context=from-pstn ; Define o contexto pré-definido no arquivo extensions.conf
channel => 1-3 ; Determina que a partir do canal 1 até o 3 haverà¡ 3 linhas analógicas
4. /etc/asterisk/sip.conf
“general”
context=from-internal ; Define o uso do contexto pré-definido no arquivo extensions.conf
allowguest=no ; Nà£o permite ligaà§àµes nà£o autenticadas
allow=all ; Permite o uso de qualquer codec
“7001”
secret=senha ; Define a senha do ramal
host=dynamic ; Permite que o endereà§o IP do guest seja dinà¢mico
“7002” … “7019” ; As configuraà§àµes devem ser repetidas em todos os ramais
secret=senha
host=dynamic
“7020”
secret=senha ; Define a senha do ramal
host=dynamic ; Permite que o endereà§o IP do guest seja dinà¢mico
C. Disponibilidade e desempenho
1. Cluster Asterisk utilizando o DNS Round-Robin e DUNDi
i) DNS Round-Robin
O DNS Round-Robin é a capacidade que o servidor DNS tem de atribuir dois ou mais endereà§os IP para um mesmo nome. Com isso pode-se realizar um balanceamento de carga simples.
Seu funcionamento consiste em dividir as conexàµes entre os servidores. Essa divisà£o é feita a partir do primeiro endereà§o cadastrado no arquivo até o ultimo.
Algo importante sobre o DNS Round-Robin é que ele nà£o é uma solução de redundà¢ncia. Se um dos servidores parar de funcionar, o DNS Round-Robin continuarà¡ mandando requisià§àµes para esse servidor.
ii) DUNDi
O DUNDi é um sistema que foi feito pelo próprio criador do Asterisk. DUNDi é um sistema peer-to-peer para localização de gateways Internet para servià§os de telefonia em um Cluster Asterisk. Diferente dos servià§os centralizados tradicionais (como o padrà£o ENUM consideravelmente simples e conciso), o DUNDi é completamente distribuàdo sem nenhuma hierarquia centralizada.
Com o DUNDi é possàvel localizar uma extensão em qualquer um dos servidores do Cluster. Para isso pode-se usar um servidor de consultas, que serà¡ responsà¡vel por fazer todas as consultas, ou ligar os servidores do Cluster diretamente. O servidor de consultas serà¡ responsà¡vel por procurar a extensà£o nos servidores de registro. Se um dos servidores de registro falhar, ele continuarà¡ procurando em outros servidores pela extensão.
O DUNDi também pode ser integrado ao Asterisk Realtime. Este é um sistema que permite ter a configuração do Asterisk num Banco de dados SQL. Com isso é possàvel realizar alteraà§àµes no plano de discagem sem ter de reiniciar o Asterisk (e perder as chamadas correntes). Outra utilidade é que se um dos servidores do Cluster DUNDi parar de funcionar, o Asterisk Realtime pode localizar e ligar essa extensão mesmo que ela nà£o esteja registrada (se ela for um ramal ou servià§o que apenas se registrava no servidor).
Existe também a Rede DUNDi, ao qual participam algumas empresas do Brasil e do mundo. O seu objetivo facilitar a interligação dos sistemas Asterisk, além de facilitar a interconexà£o com a PSTN.

Figura 6
Nesse caso, o DNS Round-Robin atua como se fosse um servidor proxy. Ele receberá a requisição dos ramais para registro e enviarà¡ para um dos PABX, balanceando as requisià§àµes dos mesmos. O DUNDi permitirá a esses ramais se localizarem como se estivessem todos na mesma central.
Supondo que o usuário do ramal 9901, que está registrado no PABX1 deseja falar com o usuário do ramal 2010, que está no PABX2, o usuário do ramal 9901 discarà¡: 2010.
O PABX1 verificarà¡ se o ramal 2010 està¡ registrado nele para realizar a chamada. Ao verificar que ele nà£o se encontra registrado, farà¡ uma consulta DUNDi ao PABX2 para saber se o ramal està¡ registrado nele. Nesse caso receberà¡ uma resposta afirmativa do PABX2. A partir desse ponto os dois PABX estabelecem um canal IAX para a chamada. Entà£o ela transcorre no PABX2 normalmente.
2. Cluster Asterisk utilizando Heartbeat
O Heartbeat é uma parte de software que foi escrito para o projeto Linux-HA. A sua função é detectar a morte-do-nó, prover comunicaà§àµes e a geràªncia do cluster em um processo. O programa do Heartbeat é um dos componentes do nàºcleo do Linux-HA (High-Availability Linux). O Heartbeat é altamente portátil e funciona na plataforma Linux, FreeBSD e Solaris. A compatibilidade com outros sistemas operacionais esta em desenvolvimento.
i) Como o Heartbeat trabalha?

Figura 7
- Os servidores sà£o padronizados com a configuração active/standby.
- Todos os recursos (os endereà§os IP) sà£o configurados pelo Heartbeat que sà£o utilizados por clientes, neste caso seria 10.0.10.10.
- A aplicação Heartbeat em ambos os servidores comunica-se um com o outro enviando pacotes broadcast ou unicast através do Ethernet.
Quando o nó ativo falhar:

Figura 8
- O Server 2 Standby identifica que o nó ativo falhou porque para de receber pacotes heartbeats do Server 1
- Todos os recursos, incluindo o IP address, sà£o ativados no Server 2 e todos os servià§os sà£o inicializados.
- Dentro de segundos todos os servià§os està£o funcionando corretamente no Server 2.
Quando o Active Server (Server1) retorna:

Figura 9
- Dependendo da configuração, o Server 1 pode agora assumir o papel de Standby
- Se desejado, o cluster pode ser configurado para que, quando o Server 1 retornar, todos os servià§os sejam transferidos em background.
O que é preciso para termos essa solução?
- No mànimo 2 servidores Linux (de preferàªncia com hardware idàªnticos)
- Aplicação Heartbeat
- Configuração csync2 para a replicação do cluster
- Servidor Asterisk
ii) csync2 Configuration
- A fim assegurar para que a replicação dos dados e a configuração seja feita corretamente, um arquivo chamado HBmaster é criado no Active Server
- O job abaixo é configurado em ambos servidores
- /5 * * * * “-f /tmp/.HB-master” && /usr/local/sbin/csync2 -xv >/dev/null 2>/dev/null
- A replicação ocorrerà¡ somente quando o arquivo HBmaster existir
iii) Versionamento do Heartbeat
O Heartbeat versà£o 1 é utilizada para configuração de um simples cluster de Asterisk, para um ambiente mais complexo devemos utilizar o Heartbeat versà£o 2.
O que hà¡ de diferente na versà£o 2?
- Melhorias no nàºcleo de infra-estrurua:
- Reconhecimento de mensagens e controle de fluxo de mensagens
- Logon assàncrono
- Versàµes 1.x (2-node) clusters suportados inteiramente
- Multi-nó suportados (até 16 conjuntos do nó testados)
- Suporte para agentes OCF (Open Cluster Framework)
- Suporte para recursos complexos (grupos e clones)
- Suporte a localização de recursos e ordem de restrição de recursos
- Ferramenta de conversà£o para arquivos haresources (arquivos indispensà¡veis para o Heartbeat) existentes.
- Suporte a requisià§àµes de monitoramento de recursos
- Modo de manutenção de recursos
- Ferramenta de monitoramento de configuração e de status para cluster simples
3. Qual solução a ser utilizada?
O Heartbeat monitora 2 ou mais nós em um ambiente e, em caso de detecção de falha, redireciona o servià§o para outro servidor de forma transparente para o servià§o Asterisk. Esta flexibilidade de alternar as funà§àµes Active e Standby entre os servidores do cluster em Heartbeat, permite rodàzio de servidores garantindo o funcionamento do cluster de forma simples o que, conseqà¼entemente, melhor se identifica com o conceito de alta disponibilidade.
Bibliografia
- http://www.xorcom.com/images/stories/techdocs/XR1000-Manual.pdf
- http://www.digium.com/asterisk_handbook/zapata.conf.pdf
- http://docs.tzafrir.org.il/README.Astribank.html
- https://www.voip-info.org
- http://voip-info.capatres.com
- http://www.disc-os.org/e107/request.php?13
- http://200.152.208.135/ipcommunications2007/media/pub/08.11.2007/08.11%20Sala8%20Alexandre%20Keller%2012h00.pdf
- http://www.linux-ha.org/Heartbeat