Cisco 1750/1751(serie 1700) com 4 FXO fazendo SIP Trunk com Asterisk

Documentacao completa, por isso extensa. Aborda tudo de forma completa. NUNCA achei na internet algo assim. Fiquei no troubleshooting 10 dias praticamente 5 horas por dia para ter esse alinhamento.
Vou abordar desde conceitos basicos CISCO ate a parte final que eh a configuracao toda ja feita para colar no seu roteador.

0 – Ter um servidor TFTP funcionando na intranet para envio da atualizacao (Usei no windao: Win agents TFTP Server Manager 4.1)

1 – BAIXAR O PUTTY E CONECTAR USANDO COM1 COM O CABO SERIAL NO ROUTER (nao vejo outra maneira inicial de ter acesso uma vez que para criar o acesso telnet precisa configurar o router primeiro).

2 – Alguns comandos bacanas para ter em mente:


# ver o ip atual e nome das interfaces
show interfaces
show voice port
show voice port 1/0 #entre outas portas 1/1, 2/0 e 2/1
show interfaces fastEthernet 0 #tenho somente uma porta fast ethernet
how interfaces summary
show diag
show dial-peer voice sum
show voice dsp
show run  # mostra as configuracoes do router
test voice tone BR show  # mostra as cadencias do ton Brasileiro (netei que o disconnect tone estava errado e tive que manipular isso na configuracao)
show users #mostrara usuarios conectados telnet
show run # mostrar as configuracoes atuais
show sip-ua calls
show sip-ua calls dtmf-relay sip-info

Importante para debugar o sip:
* Se estiver no modo telnet lembrar de ativar a visualizacao do log com o comando:
# logging monitor     //command to enable logging on VTY lines
# terminal monitor //unless you issue this command, you cannot see logs on your SSH or Telnet
Para desativar:
# no terminal monitor
debug ccsip all
# para desativar todos debugs:
no debug all

# salvar as configuracoes na NVRAM (para nao perder apos reinicio do router)
Router# copy running-config startup-config

#backup configuracao
Router#copy startup-config tftp:
Address or name of remote host []? 192.168.254.69
Destination filename [router-confg]? configcisco.txt

#backup IOS bin
Router#copy flash: tftp
Source filename []? c1700-sv3y7-mz.122-2.t.bin
Address or name of remote host []? 192.168.254.69
Destination filename [c1700-sv3y7-mz.122-2.t.bin]?

Tenha em mente que, quando esta no primeiro modo:

route> en
nao ha privilegios aos comandos, ha de digitar en:
route#
Nessa secao voce pode executar os comandos de debug e show, para configuracaoes temos que entrar no modod e configuracao:
route# configure terminal
fxo(config)#

#Atualizacao
Bem, em router mais novos como 3640, não é um problema preencher IOS pelo menos a versão 12.4..
Se for assustador, você pode apenas adicionar na configuração a linha e então na inicialização haverá uma tentativa de inicializar a partir do tftp, e se não houver memória suficiente, por exemplo, ele inicializará a versão que está no flash.


Old version: c1700-sv3y7-mz.122-2.t.bin
New version: c1700-sv3y-mz.122-4.T.bin

Router#copy tftp://192.168.254.69/c1700-sv3y-mz.122-4.T.bin nvram:startup-conf
Destination filename [startup-config]?
Accessing tftp://192.168.254.69/c1700-sv3y-mz.122-4.T.bin...
Loading c1700-sv3y-mz.122-4.T.bin from 192.168.254.69 (via FastEthernet0): !
%Error copying tftp://192.168.254.69/c1700-sv3y-mz.122-4.T.bin (Not enough space on device)

E aqui comeca um pesadelo… Digo isso pois atualizei para a versao 122-4.T.bin que contemplava sip como dizia nos artigos mas 5 dias de troubleshooting para depois entender que os RTP 2833 nao funcionavam nela. O grande problema eh que o Cisco 1750 nao tem mais de 8mb de flash e nao tem mais de 32mb de rom. Entao foi um outro pesadelo achar uma versao disponivel que contemplasse o RTP2833 e, por fim tivesse o tamanho correto.
Em resumo, a unica versao que eu conseguia colocar funcionando era essa 122-4.T.bin, na qual no final fui ver que nao satisfazia. O problema era que nenhuma versao superior cabia na ROM, poderia ate dar certo no tamanho da flash porem depois de compilada nao cabia na ROM. Depois de muito googlear eu achei um artigo com um massete que eu precisva, a versao que eu tinha em mente em instalar depois de ler diversos artigos referente as versoes e features eu fiquei por alguns kbytes de conseguir compilar na ROM. Mas esse milagrosso artigo falava que eu poderia tirar as WICs (placas FXO) compilar a versao e depois voltar com as placas, e assim fiz e foi supimpa.

A VERSAO IDEAL PARA FUNCIONAMENTO COM O ASTERISK EH Version 12.2(8)T4.
Ha varias nomenclaturas para o firmare, e tamanhos diferentes. Isso se da ao fato desse roteador poder operar como ipbx, router, firewall, IDS, modem adsl, etc. Nosso objetivo eh a menor e somente com servicos que precisamos por isso achei a SV3Y que contempla somente IP + Voice.

Essa outra versao de Bootstrap eh uma especie de BIOS que existe nos routes da CISCO e que nao precisa preocupar para esse caso em especifico.

Testei algumas versoes alem dessa que corportava no router mas nao contemplava o RTP2833. Enfim, a chave para solucao de muitos problemas foi ter achado essa unica versao.

Cisco# show version
02:00:45: %SYS-5-CONFIG_I: Configured from console by console
Cisco Internetwork Operating System Software
IOS (tm) C1700 Software (C1700-SV3Y-M), Version 12.2(8)T4,  RELEASE SOFTWARE (fc1)
TAC Support: http://www.cisco.com/tac
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Fri 03-May-02 23:20 by ccai
Image text-base: 0x80008108, data-base: 0x80CD3538

ROM: System Bootstrap, Version 12.0(3)T, RELEASE SOFTWARE (fc1)

fxo uptime is 2 hours, 0 minutes
System returned to ROM by reload at 17:11:08 GMT Tue Nov 16 2021
System restarted at 17:12:40 GMT Tue Nov 16 2021
System image file is "flash:c1700-sv3y-mz.122-8.T4.bin"

cisco 1750 (MPC860T) processor (revision 0x601) with 27853K/4915K bytes of memory.
Processor board ID JAD05030BL0 (1789504335), with hardware revision 3097
MPC860T processor: part number 0, mask 32
Bridging software.
X.25 software, Version 3.0.0.
1 FastEthernet/IEEE 802.3 interface(s)
4 Voice FXO interface(s)
32K bytes of non-volatile configuration memory.
8192K bytes of processor board System flash (Read/Write)

Continuando na luta de espaco, nao ha como colocar essa versao sem apagar a anterior da FLASH.

#VAMOS APAGAR O EXISTENTE
Router#dir flash:
Directory of flash:/
1  -rw-     7286044              <no date="">  c1700-sv3y7-mz.122-2.t.bin</no>
8388608 bytes total (1102500 bytes free)

#DELETING

Router#delete flash:c1700-sv3y7-mz.122-2.t.bin
Delete filename [c1700-sv3y7-mz.122-2.t.bin]?
Delete flash:c1700-sv3y7-mz.122-2.t.bin? [confirm]
Router#
Router#dir flash:
Directory of flash:/

No files in directory

8388608 bytes total (1102500 bytes free)

Como pode ver, a dor de cabeca nao parava.. Mesmo apagando nao liberou espaco. A solucao eh fazer o reload e
posteriormente no modo rommon fazer o TFTP e atualizar:


delete flash:c1700-y-mz.124-8a.bin
Router# reload

# After reload we lost the flash and we used the rommon to write again:
# Set the confidirg below for your network get the tftp server archive

rommon 34 >
rommon 35 >IP_ADDRESS=192.168.254.166
rommon 36 >IP_SUBNET_MASK=255.255.255.0
rommon 37 >DEFAULT_GATEWAY=192.168.254.254
rommon 38 >TFTP_SERVER=192.168.254.69  # ip do meu servidor tftp
rommon 39 >TFTP_FILE=c1700-sv3y-mz.122-8.T4.bin
rommon 40 >tftpdnld

IP_ADDRESS: 192.168.254.166
IP_SUBNET_MASK: 255.255.255.0
DEFAULT_GATEWAY: 192.168.254.254
TFTP_SERVER: 192.168.254.69
TFTP_FILE: c1700-sv3y-mz.122-4.T.bin

Invoke this command for disaster recovery only.
WARNING: all existing data in all partitions on flash will be lost!
Do you wish to continue? y/n:  [n]:  y

Receiving c1700-sv3y-mz.122-4.T.bin from 192.168.254.69 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
File reception completed.
Copying file c1700-sv3y-mz.122-4.T.bin to flash.
Erasing flash at 0x607f0000
Programming location 606e0000

File reception completed.
Copying file c1700-sv3y-mz.122-4.T.bin to flash.
Erasing flash at 0x607f0000
Programming location 606e0000

rommon 41 > boot flash:
rommon 42 > boot flash:cc1700-y-mz.124-8a.bin

Se corromper voce pode comecar tudo novmaente com o comando: reset
# Restart/shutdown/reboot –> “reload”

Algo util no meio do nosso caminho para ter em mente:

# RESET DAS CONFIGURACOES EXISTENTES NO ROTEADOR

Check the configuration register on the router by issuing the show version command.

The configuration register setting is displayed in the last line of the show version command output and should be set to 0x2102. If this is not the case, enter the config-register 0x2102 command once in global configuration mode.

router#configure terminal
router(config)#config-register 0x2101
router(config)#end
router#
If the show version command is issued again, the same line in the command output will have '(will be 0x2102 at next reload)' appended to the current register setting.

Erase the current start-up configuration on the router with the

router# write erase

Reload the router with the reload command. When prompted to save the configuration, DO NOT save.

router#reload

ATENCAO AQUI:

System configuration has been modified. Save? [yes/no]: no
Proceed with reload? [confirm]
Once the router reloads, the System Configuration Dialog appears.

--- System Configuration Dialog ---
Would you like to enter the initial configuration dialog? [yes/no]:
The router is now reset to the original factory defaults.

Depois de bootar com a versao correta, vou postar a configuracao que esta 100% funcional. Eu fiz 4 peers e 4 rotas pois muitas das vezes preciso sair por linha especifica ou mesmo tratar a entrada das linhas de forma diferente cada uma. Caso nao tenha necessidade disso voce pode explorar a realizacao de um trunk group.


en  # entrar no modo de execucao
configure terminal # entrar no modo de configuracao
interface FastEthernet0 # setando ip na interface de rede
ip address 192.168.254.166 255.255.255.0
no shutdown
ip route 0.0.0.0 0.0.0.0 192.168.254.254 # setando o gateway
ip domain-name cisco.fxo # setando o dominio

#criando uma classe de codec, nao usei mas deixei para o futuro
voice class codec 1
codec preference 1 g711ulaw
codec preference 2 g711alaw

#atualizando o relogio
clock timezone GMT -3
ntp server 200.160.0.8
ntp server 200.189.40.8

ip name-server 8.8.8.8 # setando o DNS padrao

no service config # removendo as conf automatica de busca em tftp

# ativando o telnet com senhas
hostname fxo
ip domain-name abratel.com.br
username root password senhadoroor
username root privilege 15
username monitor password senhadomonitor
enable password 280786  # SENHA DO ROTEADOR cabo COM1
#habilitando o telnet para  a tty e banco de usuarios local
ssh version 2
line vty 0 4
transport input telnet
login local

#criando um tratamento para os tons do Brasil, o encontrado disponivel na CISCO nao estava totalmetne correto.

voice class custom-cptone BRcustom
dualtone busy
frequency 425 425
cadence 250 250
dualtone ringback
frequency 425 425
cadence 1000 4000
dualtone reorder
frequency 425 425
cadence 1000 1000
dualtone out-of-service
frequency 425 425
cadence 250 250
dualtone number-unobtainable
frequency 425 425
cadence 250 250
dualtone disconnect
frequency 425 425
cadence 250 250

# configurando a primeira porta de voz e depois as demais.
voice-port 1/0
connection plar opx 501 # como se fosse um hotline para o dialpeer 501. DEVE manter o OPX para funcionamento correto do tom de disconnect
station-id number 501
supervisory disconnect dualtone mid-call # tratamento do tom
supervisory custom-cptone BRcustom # tratamento do tom
cptone BR # tom do brasil disponivel na cisco
timeouts call-disconnect 3 # tempo de desconexao se ouvir o tom  de desconectado
timeouts wait-release 6 # tempo inicial para nao desconectar, se for menor teremos falso positivo e as chamads irao cair logo no inicio
timing hookflash-out 250

voice-port 1/1
connection plar opx 502
station-id number 502
supervisory disconnect dualtone mid-call
supervisory custom-cptone MYTONE
timeouts call-disconnect 2
timeouts wait-release 6
timing hookflash-out 250
cptone BR

voice-port 2/0
connection plar opx 503
station-id number 503
supervisory disconnect dualtone mid-call
supervisory custom-cptone MYTONE
timeouts call-disconnect 2
timeouts wait-release 6
timing hookflash-out 250
cptone BR

voice-port 2/1
connection plar opx 504
station-id number 504
supervisory disconnect dualtone mid-call
supervisory custom-cptone MYTONE
timeouts call-disconnect 2
timeouts wait-release 6
timing hookflash-out 250
cptone BR

# Aqui sao o plano de discagem quando ENTRAR uma chamada na porta FXO, o que tem que fazer.  No nosso caso chamei de um numero qualquer (501) e toda a chamada deve ser encaminhada ao asterisk
dial-peer voice 501 voip
preference 1
destination-pattern .T   # qualquer digito encaminha ao asterisk
session protocol sipv2
session target ipv4:192.168.254.254:5061
session transport udp
dtmf-relay rtp-nte #IMPORTANTISSIMO, sem isso nada funciona e foi minha briga total com os firmwares, NAO funcionar se setar o dtmf-relay cisco-nte
codec g711ulaw
no vad

dial-peer voice 502 voip
preference 1
destination-pattern .T
session protocol sipv2
session target ipv4:192.168.254.254:5062
session transport udp
dtmf-relay rtp-nte
codec g711ulaw
no vad

dial-peer voice 503 voip
preference 1
destination-pattern .T
session protocol sipv2
session target ipv4:192.168.254.254:5063
session transport udp
dtmf-relay rtp-nte
codec g711ulaw
no vad

dial-peer voice 504 voip
preference 1
destination-pattern .T
session protocol sipv2
session target ipv4:192.168.254.254:5064
session transport udp
dtmf-relay rtp-nte
codec g711ulaw
no vad

# Essa configuracao eha oposta, sao as chamadas SAINTES, vinda do asterisk e indo para FXO. Defini um numero aleatorio 511 e no destination eu mantenho o 511 pois o asterisk envia esse prefixo, e ae entao eu sei que eh para a linha numero 1, fazendo posterior a retirada do 511 e envio para PSTN.

dial-peer voice 511 pots
description test
destination-pattern 511.T
port 1/0

dial-peer voice 512 pots
description test
destination-pattern 512.T
port 1/1

dial-peer voice 513 pots
description test
destination-pattern 513.T
port 2/0

dial-peer voice 514 pots
description test
destination-pattern 514.T
port 2/1

sip-ua
retry invite 3
retry response 3
retry bye 3
retry cancel 3
timers trying 1000
sip-server ipv4:192.168.254.254:5060

exit
# para salvar permanentemetne
copy running-config startup-config

Configuracao do asterisk irei abordar o basido.. Voce pode explorar mais com grupos de linhas, etc


sip.conf

#; IP DO CISCO: 192.168.254.166

[501]
type=friend
qualify=yes
nat=no
canreinvite=no
context=recebe-cisco
host=192.168.254.166
disallow=all
allow=ulaw
dtmfmode=rfc2833
port=5061

[502]
type=friend
qualify=yes
nat=no
canreinvite=no
context=recebe-cisco
host=192.168.254.166
disallow=all
allow=ulaw
dtmfmode=rfc2833
port=5062

[503]
type=friend
qualify=yes
nat=no
canreinvite=no
context=recebe-cisco
host=192.168.254.166
disallow=all
allow=ulaw
dtmfmode=rfc2833
port=5063

[504]
type=friend
qualify=yes
nat=no
canreinvite=no
context=recebe-cisco
host=192.168.254.166
disallow=all
allow=ulaw
dtmfmode=rfc2833
port=5064

========================

[recebe-cisco]
# para criar entradas diferente pode setar no sip de cada extensao (500, 501,etc) um contexto diretente. Ou entao modificar a entrada desse para tratar as 4.
exten => _X.,1,Dial(IAX2/928,50)
same => n,hangup()

[realiza-cisco]
# criar um ramal sip por exemplo e por  nesse contexto
# para sair pela linha 1
exten => _X.,1,Dial(sip/501/511${EXTEN},50)
same => n,hangup()
# para sair pela linha 1
exten => _X.,1,Dial(sip/502/512${EXTEN},50) # para sair pela linha 1
same => n,hangup()
etc ...

Achei em um artigo uma solucao para arrumar a questao do TOM, nota-se que esses nao sao os corretos mas conseguindo os corretos voce pode usar essa solucao. NAO tive necessidade disso para o Brasil. Eu usei somente o primeiro Step dele que era colocar OPX nos dial-peers e ja solucionei o problema.

# OUTRA SOLUCAO APLICADA QUE ARRUMOU O TOM DE DESCONEXAO

# UMA OBSERVACAO EH QUE quando seto o OPX no cisco
#o ring do softphone eh padrao US. Porem se nao seto o OPX
# o ring muda para padrao BR como esta na conf de tone

OPX int the plar command

and

freq-max-deviation 20
cadence-variation 50
int the voice class attached to the fxo port....
voice class dualtone-detect-params 1
freq-max-deviation 20
cadence-variation 50
!
!
voice class custom-cptone TEST
dualtone disconnect
frequency 425
cadence 250 250
!
!
voice-port 1/1/0
supervisory disconnect dualtone mid-call
supervisory custom-cptone TEST
supervisory dualtone-detect-params 1
cptone AU
timeouts call-disconnect 5
timeouts wait-release 5

connection plar opx 1000
impedance complex1
!
!
dial-peer voice 4000 pots
destination-pattern 4000
port 1/0/0

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Configuracao com o dial livre no qual nao precisa passar parametro (destination-pattern .T).
Nesse exemplo abaixo o asterisk nao precisa passar nenhum prefixo no numero para chamar.
Nota-se que a porta 1/1 e 2/0 serao as duas que esperam fazer as chamadas quando nao se passa o prefixo, assim setei nela ordens de “preference”, onde a menor preference eh a qual ira ser usada mais (porta 2/0). Em caso de ocupado, passa-se a segunda preference (porta 1/1)

dial-peer voice 511 pots
description test
destination-pattern 511.T #somente usara essa se passar o prefixo 511
port 1/0
!
dial-peer voice 512 pots
description test
preference 3 #maior preferencia, usa-se menos
destination-pattern .T  # se nao passar nenhum prefixo, essa sera a rota secundaria
port 1/1
!
dial-peer voice 513 pots
description test
preference 1  #menor preferencia, usa-se mais
destination-pattern .T # se nao passar nenhum prefixo, essa sera a rota primaria
port 2/0
!
dial-peer voice 514 pots
description test
destination-pattern 514.T #somente usara essa se passar o prefixo 511
port 2/1
!

Dial plan Asterisk:


exten => _X.,1,Dial(SIP/501/${EXTEN},50,Ttr)

Obs: 1 – Ate o presente momento nao consegui fazer o Bina funcionar. Aparentemente minha WIC nao da suporte a isso. The VIC-2FXO voice interface card does not support Caller ID. In order to support that, you will need battery reversal support (in the US, VIC-2FXO-M1; in Europe, VIC-2FXO-M2, etc.). More on Cisco FXO interfaces: http://cisco.com/en/US/products/hw/routers/ps274/products_tech_note09186a00800b53c7.shtml
2 – nao usei o comando caller-id enable nas voice pois minha placa FXO (VIC-2FXO) nao suporta. O calleid eh suportado nessas placas abaixo.
VIC-2FXO-M1, VIC-2FXO-M2, VIC-4FXO-M1, VIC2-2FXO, VIC2-4FXO, or MRP3-8FXOM1

Debug para binagem:

* Se estiver no modo telnet lembrar de ativar a visualizacao do log com o comando:
# logging monitor     //command to enable logging on VTY lines
# terminal monitor //unless you issue this command, you cannot see logs on your SSH or Telnet
Para desativar:
# no terminal monitor

# debug vpm signal
# debug vpm vtsp

Ache a linha que fale: get_fxo_caller_id:

LOG/DEBUG

0 Emergencies System shutting down due to missing fan tray
1 Alerts Temperature limit exceeded
2 Critical Memory allocation failures
3 Errors Interface Up/Down messages
4 Warnings Configuration file written to server, via SNMP request
5 Notifications Line protocol Up/Down
6 Information Access-list violation logging
7 Debugging Debug messages

The default logging level for Console and VTY lines is Debugging. hence there were no log level mentioned in the above commands. If you would like to keep only Information logs, then issue commands as
# logging monitor information
# logging console information
In this case, Debugging logs will not be shown.

*******************************************************************************
Artigos interessantes:

# local de binarios, uma vez que na Cisco eh pago.
https://tfr.org/cisco-ios/17xx/

https://www.3amsystems.com/World_Tone_Database?q=Brazil,Busy_tone

https://github.com/chan-sccp/chan-sccp/wiki/What-is-chan-sccp-b

#manual
http://dh1407h.cleansite.biz/1325-939797.html

# compatibilidade das placas fxo
https://www.cisco.com/web/ANZ/cpp/refguide/hview/router/1700.html#vic2-4fxo

https://www.networkworld.com/article/2297182/chapter-10–digit-manipulation.html

https://community.cisco.com/t5/ip-telephony-and-phones/fxo-disconnect-problem/td-p/1342590/page/2

How to fix Cisco FXO Voice Card Disconnect issue

Deixe um comentário