sexta-feira, 4 de maio de 2012

CUBE - Parte 2 (Configuração)

Agora que já estamos manjando tudo dos conceitos de CUBE (ô!), veremos que a configuração não é nenhum bicho de 7 cabeças. Vamos implementar o exemplo do post anterior. Ou seja, um CUCM, um CME e ambos registrados num Gatekeeper com função de CUBE. O CUCM tem a faixa de ramal 1XXX e o CME 2XXX.

Os endereçamentos IPs do exemplo serão:
CUCM: 172.16.10.10
CME: 192.168.20.10 (loopback 0)
GK: 172.16.10.230

1. CUCM
No CUCM precisaremos primeiramente declarar um Gatekeeper em Device > Gatekeeper. Utilizaremos o IP 172.16.10.230.
Feito isso, criaremos um Inter-Cluster Trunk (Gatekeeper Controlled) chamado gk-trunk (esse é o nome que vai aparecer no gatekeeper identificando o CUCM). Configuramos o Significant Digits em 4, e definimos a CSS apropriada para que as chamadas entrem corretamente. Amarramos o Gatekeeper criado acima, usando como Zone o nome CUCM, e tech-prefix 1#. Para este exemplo, não mexeremos muito com os tech-prefix... isso fica para assunto num próximo post.
Bom, agora é só criarmos uma Route Pattern 2XXX apontando para o gk-trunk.

2. CME
No CME precisaremos configurar a interface para que ela se registre no Gatekeeper. Então vamos aplicar os comandos abaixo:
interface loopback 0
 ip address 192.168.20.10 255.255.255.0
 h323-gateway voip interface
 h323-gateway voip id CME ipaddr 172.16.10.230 1719
 h323-gateway voip h323-id CME
 h323-gateway voip tech-prefix 1#


Pronto, agora que o CME está configurado para se registrar no GK, temos que criar as dial-peers. Bem, precisamos de uma dial-peer de entrada (para as chamadas que chegam do GK) e uma de saída (para as chamadas que vão para o CUCM através do GK). Poderíamos criar 2 dial-peers separadas, para por exemplo, manipular os codecs diferentemente em uma situação e outra. Aqui no exemplo vamos usar tudo G.711 para evitar o uso de transcodes, portanto vou criar tudo em uma única dial-peer:

dial-peer voice 1 voip 
 incoming called-number . ! -- Entrada
 destination-pattern 1... ! -- Saída
 session target ras       ! -- Aponta a saída para o GK
 codec g711ulaw           ! -- Lembre-se que o default é G.729
 no vad                   ! -- "vad is bad"

Certo! O nosso CME já está configurado. Depois que subirmos o Gatekeeper, só não podemos esquecer de voltar aqui e dar o comando gateway, para que ele se registre com o GK. Ah, não se esqueça também de colocar um no-reg nos ephone-dn, para que os ramais do CME não se registrem no GK!

3. CUBE/Gatekeeper
E agora o mais importante: o GK. Primeiramente vamos configurar a interface FastEthernet dele para que o CUBE se registre no Gatekeeper. Sim, ele vai se registrar nele mesmo, mas lembre-se de que devemos encarar os dois como entidades separadas.

interface FastEthernet1/0
 ip address 172.16.10.230 255.255.255.0
 h323-gateway voip interface
 h323-gateway voip id CUBE ipaddr 172.16.10.230 1719
 h323-gateway voip h323-id CUBE

Feito isso, vamos configurar o gatekeeper em si:

gatekeeper
 zone local CUBE ngk.com                   
 zone local CME ngk.com outvia CUBE      ! -- Depois explico o
 zone local CUCM ngk.com outvia CUBE     ! -- invia e outvia
 zone prefix CUCM 1...
 zone prefix CME 2...
 gw-type-prefix 1#* default-technology
 no shutdown

Agora as dial-peers de entrada e saída, que mais uma vez juntei em uma só. Obs: Se você não criar a dial-peer, o CUBE não registra.

dial-peer voice 1 voip
 destination-pattern [12]...
 session target ras
 incoming called-number .
 codec g711ulaw


Bom, agora é só dar comando gateway que você vai ver tudo registrado no gatekeeper:

CUBE#sh gatekeeper endpoints
                    GATEKEEPER ENDPOINT REGISTRATION
                    ================================
CallSignalAddr  Port  RASSignalAddr   Port  Zone Name         Type    Flags
--------------- ----- --------------- ----- ---------         ----    -----
172.16.10.10    1720  172.16.10.10    32793 CUCM              VOIP-GW
    H323-ID: gk-trunk_1
    Voice Capacity Max.=  Avail.=  Current.= 0
192.168.20.10   1720  192.168.20.10   61476 CME               H323-GW
    H323-ID: CME
    Voice Capacity Max.=  Avail.=  Current.= 0
172.16.10.230   1720  172.16.10.230   57128 CUBE              H323-GW
    H323-ID: CUBE
    Voice Capacity Max.=  Avail.=  Current.= 0
Total number of active registrations = 3


Antes de fazermos os testes, recomendo colocarmos esses comandos no CME e no GK:
voice service voip
 allow-connections h323 to h323
 allow-connections h323 to sip
 allow-connections sip to h323
 allow-connections sip to sip
O h323 to h323 é fundamental! Os demais é só se você tiver algum telefone SIP registrado.

Agora sim, hora de testar!
Do jeito que configuramos, tanto no sentido CUCM >> CME quanto no sentido CME >> CUCM, o CUBE será utilizado. Isso por causa daqueles comandos outvia que colocamos ao declarar as Zones. Daqui a pouco vou explicar melhor sobre esse comando. Mas veja que quando fizermos uma chamada do CUCM para o CME, o seguinte output será mostrado:

CUBE#sh gatekeeper calls
Total number of active calls = 2.
                         GATEKEEPER CALL INFO
                         ====================
LocalCallID                        Age(secs)   BW
33-44                              10          128(Kbps)
 Endpt(s): Alias                 E.164Addr
   src EP: gk-trunk_1            1001
           CallSignalAddr  Port  RASSignalAddr   Port
           172.16.10.10    1720  172.16.10.10    32793
 Endpt(s): Alias                 E.164Addr
   dst EP: CUBE                  2002
           CallSignalAddr  Port  RASSignalAddr   Port
           172.16.10.230   1720  172.16.10.230   57128
LocalCallID                        Age(secs)   BW
34-44                              10          128(Kbps)
 Endpt(s): Alias                 E.164Addr
   src EP: CUBE                  1001
           CallSignalAddr  Port  RASSignalAddr   Port
           172.16.10.230   1720  172.16.10.230   57128
 Endpt(s): Alias                 E.164Addr
   dst EP: CME                   2002
           CallSignalAddr  Port  RASSignalAddr   Port
           192.168.20.10   1720  192.168.20.10   61476

Repare que essa é apenas 1 chamada, porém o CUBE exibe como se fosse duas! Uma do CUCM (gk-trunk) para o CUBE e outra do CUBE para o CME. Se fizessemos a chamada do CME para o CUCM, o output seria similar.

Legal, mas por que isso? É que quando declaramos as zones, colocamos o comando outvia CUBE na frente. O que esse comando faz é instruir o GK a enviar a chamada para a zone CUBE quando ela sair do GK. Existe duas formas de configurarmos isso, uma é dessa forma com o comando outvia e outra é com o comando invia.
O outvia, como eu disse, é quando a chamada sai do GK. E o invia, por sua vez, é quando a chamada entra no GK. Poderiamos ter sido orientados a utilizar o CUBE apenas nas chamadas do CUCM para o CME, por exemplo. Nesse caso, o fluxo seria assim: CUCM >> GK >> CME, certo? Então, poderíamos configurar isso aplicando o invia CUBE na zone CUCM ou aplicando o outvia CUBE na zone CME. Funcionaria das duas formas... só que o invia CUBE no CUCM forçaria o uso do CUBE para tooodas as chamadas que chegassem no GK pela zone CUCM, assim como o comando outvia CUBE na zone CME aplicaria o CUBE para tooodas as chamadas que saíssem para o CME.

Se aplicassemos uma dessas configurações, o nosso gatekeeper ficaria assim, por exemplo:
gatekeeper
 zone local CUBE ngk.com
 zone local CME ngk.com
 zone local CUCM ngk.com invia CUBE
 zone prefix CUCM 1...
 zone prefix CME 2...
 gw-type-prefix 1#* default-technology
 no shutdown

Portanto nessa situação, o CUBE seria utilizado apenas nas chamadas que entrassem no GK pelo CUCM. Logo, apenas nas chamadas CUCM >> GK >> CME. Se tivessemos uma outra zone CME2, por exemplo, as chamadas para ela também utilizariam o CUBE. O output do show gatekeeper calls seria o mesmo que o mostrado acima.
Agora, nessa situação, quando fizermos uma chamada do CME para o CUCM, o CUBE não será chamado, e a ligação vai passar direto, veja:

CUBE#sh gatekeeper calls
Total number of active calls = 1.
                         GATEKEEPER CALL INFO
                         ====================
LocalCallID                        Age(secs)   BW
37-46133                           4           128(Kbps)
 Endpt(s): Alias                 E.164Addr
   src EP: CME                   2002
           CallSignalAddr  Port  RASSignalAddr   Port
           192.168.20.10   1720  192.168.20.10   61476
 Endpt(s): Alias                 E.164Addr
   dst EP: gk-trunk_1            1001
           CallSignalAddr  Port  RASSignalAddr   Port
           172.16.10.10    1720  172.16.10.10    32793

E com isso termino a explicação sobre CUBE. Recomendo fortemente que faça isso em um lab, que o entendimento fica bem mais fácil! :)
E recomendo também esse artigo! O cara é foda... e explica só um pouquinho melhor que eu! hauhauhua!



Nenhum comentário:

Postar um comentário