miércoles, diciembre 16, 2015

Utilizar modulos SFP de terceros en swtiches Cisco

 
 
 
 
Aunque SFP no es un estándar, si se construye en base a un multi-source agreement (MSA) el cual permite que los módulos SFP sean compatibles entre múltiples fabricantes. 



Esto permite que uno pueda instalar módulos de distintas marcas en equipamiento Huawei, Cisco SMB, Juniper, etc. Pero en los switches Cisco de la linea Catalyst esto no es posible por que al instalar un modulo el switch arroga el siguiente error:


%GBIC_SECURITY_CRYPT-4-VN_DATA_CRC_ERROR: GBIC in port 65586 has bad crc
%PM-4-ERR_DISABLE: gbic-invalid error detected on Gi1/0/50, putting Gi1/0/50 in err-disable state

Lo cual bloquea la puerta y no la permite utilizar. Pero esto tiene solucion con los siguientes comandos:

service unsupported-transceiver
no errdisable detect cause gbic-invalid

El primer comando permite agregar módulos SFP de terceros o no soportados, y el segundo deshabilita el error por modulo invalido. Despues esto es necesario es reiniciar la puerta del switch que quedo con error para que esta funcione.


sábado, septiembre 19, 2015

Proxy SIP Repro

Repro es un proxy SIP simple de implementar y de configurar. Este proxy esta incluido en los repositorios de Debian 8.

Instalación


La instalacion es simple, solo debemos instalar como cualquier paquete con aptitude:

sudo aptitude install repro

Y lo iniciamos:

sudo /etc/init.d/repro start

la administracion es el siguiente:

http://127.0.0.1:5080/index.html

Los datos para ingresar son Usuario: admin y pass: admin


Configurar dominio


 Ingresamos a la pagina DOMAINS y agregamos la IP de computador con repro:


En este caso agregamos la IP 192.168.0.111 y el puerto 5060

Al agregar un nuevo dominio es necesario reiniciar Repro:

sudo /etc/init.d/repro restart

Configurar usuarios (extensiones)



Ahora de agregamos los usuarios para esto ingresamos a ADD USER



Agregamos los usuarios en el dominio 192.168.0.111 con los siguientes datos:

Usuario1
User Name: 100
Password: 100

Usuario2
User Name: 101
Password: 101




Configurar clientes


Primero configuraremos Linphone en nuestro escritorio Linux:

Opciones -> Preferencias ->  Gestionar Cuentas SIP -> Añadir




Ahora configuraremos linphone es nuestro android


Ahora podemos realizar llamadas entre el teléfono y el computador

domingo, septiembre 13, 2015

Calculo de enlaces inalambricos

El calculo de enlace se base en los siguientes datos y formulas, aquí se simplifico los cálculos dando por supuesto que hay linea vista, la zona de fresnel esta despegada y no se calcula la interferencia. El margen de potencia de requiere que al menos sea de 15db para que el enlace sea realizable
Nota: En enlace de menos de 7GHz de frecuencias, factores como lluvia, nieve, neblina no afectan significativamente los cálculos de los enlaces.


d = Distancia en Km

f = Frecuencia en Mhz

P_tx_tx = Potencia de transmisión del transmisor

At_cab_tx =Atenuación del cable de transmisor

Ga_An_tx = Ganancia antena de transmisor

At_cab_rx = Atenuación del cable de receptor

Ga_An_rx = Ganancia antena de receptor

Sen_rx  = Sensibilidad de receptor en data rate definido
 
 

Formulas

Atenuación_espacio_libre = 32,45 + 20log(d)+20log(f)  
Potencia = Pot_trans_tx – Aten_cab_tx – Aten_cab_rx + Gan_ant_tx + Gan_ant_tx  
Potencia_recepción = Potencia – Atenuación_espacio_libre

Margen de potencia de recepción

Margen = Potencia_recepción – Sensibilidad_del_receptor

Ejemplo de Calculo

El enlace sera de 1,9 Km de distancia, Para la implementación se utilizaran los equipos Ubiquiti PBE-M5-300 en la frecuencia de 5.8GHz, de estos equipos se obtienen los siguientes datos:


d = 1,9 Km
f = 5800 MHz
P_tx_tx = 21 db                  nota: obtenido en datasheet de equipo
At_cab_tx =0 db                  nota: No se utilizan cables la antena esta integrada
Ga_An_tx = 22 db                 nota: obtenido en datasheet de equipo 
At_cab_rx = 0db                  nota: No se utilizan cables la antena esta integrada
Ga_An_tx = 22db                  nota: obtenido en datasheet de equipo
Sen_rx = -73db                   nota: sensibilidad obtenida para data rate MCS15


Atenuación_espacio_libre = 32,45 + 20log(1,9)+20log(5800) = 32,45 + 5,58  +  75,3 = 113,3

Potencia = Pot_trans_tx – Aten_cab_tx – Aten_cab_rx + Gan_ant_tx + Gan_ant_tx = 21 - 0 -0 + 22 + 22 = 65

Potencia_recepción = Potencia – Atenuación_espacio_libre' = 65 - 113,3 = -49 db

Margen de potencia de recepción


Margen = Potencia_recepción – Sensibilidad_del_receptor = -49 - (-73) =  24 
 
El resultado nos da un margen mayor al margen requerido de 15, asi que el enlace es factible.
 
 

VRRP en Vyos/UBNT EdgeRouter

VRRP (Virtual Router Redundancy Protocol) es un protocolo de redundancia a nivel IP definido en el RFC3768. Fue diseña para permitir alta disponibilidad en la puerta de enlace por defecto en una subred, aunque se puede utilizar tambien para permitir alta disponibilidad de servicios (servidores web, Telefonía, etc). 
En este ejemplo revisaremos la funcionalidad original, alta disponibilidad de la puerta de enlace. Se presupone que ambos Vyos ya tienen acceso a internet, tienen configuradas interfaces, rutas, regla de NAT y de filtrado. El diagrama es el siguiente:


Los datos relevantes son:

Subred: 10.0.0./24
IP virtual: 10.0.0.10
IP router1: 10.0.0.11
IP router2: 10.0.0.12

El router1 sera el principal, tendrá mayor prioridad, y ademas tendra configurado el comando preempt que le permitira recuperar la IP virtual luego de una caida o reinicio.

Router1

set interfaces ethernet eth0 vrrp vrrp‐group 10
set interfaces ethernet eth0 vrrp vrrp‐group 10 virtual‐address 10.0.0.10/24
set interfaces ethernet eth0 vrrp vrrp‐group 10 preempt true
set interfaces ethernet eth0 vrrp vrrp‐group 10 priority 150
commit
save
#
show interfaces ethernet eth0 vrrp 
vrrp‐group 10 {
  preempt true
  priority 150
  virtual‐address 10.0.0.10/24
}
 

Router2


set interfaces ethernet eth0 vrrp vrrp‐group 10
set interfaces ethernet eth0 vrrp vrrp‐group 10 virtual‐address 10.0.0.10/24
set interfaces ethernet eth0 vrrp vrrp‐group 10 priority 100
commit
save
#
show interfaces ethernet eth0 vrrp 
vrrp‐group 10 {
  priority 100
  virtual‐address 10.0.0.10/24
}


Con esta configuración ya tendremos corriendo VRRP entre nuestro routers. Router1 en modo normal recibirá el trafico desde la subred, ante una caida de este Router2 obtendrá la IP virtual y permitira que el flujo de trafico a internet no se interrumpa.

Las opciones del comando VRRP en Vyos son las siguientes:

interfaces ethernet eth0 vrrp 
   vrrp-group <1-255> #VRRP group number
      advertise-interval <1-255> #Advertise interval (default 1)
      authentication
      description  #Description
      disable  #VRRP group disabled
      hello-source-address  #Source address for vrrp hello packets (optional)
      preempt  #Preempt mode
      preempt-delay <0-1000> #Preempt Delay in seconds
      priority <1-255> #Priority
      rfc3768-compatibility
      run-transition-scripts  #Scripts for VRRP state-transitions
      sync-group  #Add this vrrp group to a sync group
      virtual-address  #Virtual IP address (up to 20 per group)


sábado, agosto 01, 2015

Migracion de APs Cisco de controlados a autonomos

Para migrar un AP desde una IOS controlada a una IOS autonoma requerimos
una imagen de tipo autonomo como ejemplo ap1g2-k9w7-tar.152-4.JB5.tar, un TFTP y un servidor DHCP, se recomienda TFTPd32

Nota: tipo de IOS

k9w7 – IOS autonoma
k9w8 – IOS lightweight completa(this is what is bundled in the WLC .aes image, and is factory
 installed on “mesh” APs)
rcvk9w8 – lightweight recovery image – this is factory installed on lightweight APs, unless 
a “mesh” image is specified; it lacks radio firmware

Activamos el servidor DHCP y el TFTP en el computador, entonces obtenemos que la ip de la computadora es la 10.42.0.1, via consola ingresamos al AP controlado y realizamos los siguiente pasos:

!Verificamos que tenga una IP del DHCP
show ip int brief
!probamos IP al computador
ping 10.42.0.1
!Ingresamos el comando para poder realizar configuraciones en el AP
debug capwap console cli
! y descargamos la IOS autonomo 
archive download-sw /force-reload /overwrite tftp://10.42.0.1/ap1g2-k9w7-tar.152-4.JB5.tar 
 
Luego de esto el AP reinicio y verificamos que ya este con la nueva IOS
 
ap#sh version 
Cisco IOS Software, C1600 Software (AP1G2-K9W7-M), Version 15.2(4)JB5, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2014 by Cisco Systems, Inc.
Compiled Thu 01-May-14 20:43 by prod_rel_team

L2TPV3 con Vyos/UBNT EdgeRouter/Vyatta



L2TPV3 es un estándar creado por la IETF que permite encapsular trafico de capa 2 y llevarlo sobre redes IP, la definición de Wikipedia es la siguiente:

"Layer 2 Tunneling Protocol Version 3 is an IETF standard related to L2TP that can be used as an alternative protocol to Multiprotocol Label Switching (MPLS) for encapsulation of multiprotocol Layer 2 communications traffic over IP networks. Like L2TP, L2TPv3 provides a pseudo-wire service, but scaled to fit carrier requirements."


Esta tecnologia se puede utilizar para compartir un segmento LAN entre dos sitios a traves de redes IP, Internet o una WAN privada.

Un ejemplo se ve en este diagrama:





 Aquí se uniran dos data center con virtualizacion, L2TPv3 permitirá migrar maquinas virtuales de un sitio a otro manteniendo la configuración de red de la misma.
  

La configuración es la siguiente:

Data Center Sitio 1

#Parámetros básicos de bridge 
set interfaces bridge br0 aging '300' 
set interfaces bridge br0 hello-time '2'
set interfaces bridge br0 max-age '20'
set interfaces bridge br0 priority '0'
set interfaces bridge br0 stp 'false'
# interface que conectara el Tunel 
set interfaces ethernet eth0 address 'x.x.x.x/24'
# Agregar interface de la LAN al bridge 
set interfaces ethernet eth1 bridge-group bridge 'br0'
# Configuración interface L2TPv3  
set interfaces l2tpv3 l2tpeth0 bridge-group bridge 'br0'
set interfaces l2tpv3 l2tpeth0 destination-port '10000'
set interfaces l2tpv3 l2tpeth0 encapsulation 'udp'
set interfaces l2tpv3 l2tpeth0 local-ip 'x.x.x.x'
set interfaces l2tpv3 l2tpeth0 peer-session-id '1'
set interfaces l2tpv3 l2tpeth0 peer-tunnel-id '1'
set interfaces l2tpv3 l2tpeth0 remote-ip 'y.y.y.y'
set interfaces l2tpv3 l2tpeth0 session-id '1'
set interfaces l2tpv3 l2tpeth0 source-port '10000'
set interfaces l2tpv3 l2tpeth0 tunnel-id '1' 
 
 
Data Center Sitio 2
 
#Parámetros básicos de bridge 
set interfaces bridge br0 aging '300'
set interfaces bridge br0 hello-time '2'
set interfaces bridge br0 max-age '20'
set interfaces bridge br0 priority '0'
set interfaces bridge br0 stp 'false'
# interface que conectara el Tunel 
set interfaces ethernet eth0 address 'y.y.y.y/24'
# Agregar interface de la LAN al bridge 
set interfaces ethernet eth1 bridge-group bridge 'br0' 
# Configuración interface L2TPv3  
set interfaces l2tpv3 l2tpeth0 bridge-group bridge 'br0'
set interfaces l2tpv3 l2tpeth0 destination-port '10000'
set interfaces l2tpv3 l2tpeth0 encapsulation 'udp'
set interfaces l2tpv3 l2tpeth0 local-ip 'y.y.y.y'
set interfaces l2tpv3 l2tpeth0 peer-session-id '1'
set interfaces l2tpv3 l2tpeth0 peer-tunnel-id '1'
set interfaces l2tpv3 l2tpeth0 remote-ip 'x.x.x.x'
set interfaces l2tpv3 l2tpeth0 session-id '1'
set interfaces l2tpv3 l2tpeth0 source-port '10000'
set interfaces l2tpv3 l2tpeth0 tunnel-id '1'

Sincronización con Unison

 

Vamos a hacer uso de la herramienta Unison para sincronizar datos entre dos computadores, como por ejemplo dos servidores de FreeSWITCH:
Instalamos unison en ambas computadoras (debe ser exactamente el mismo número de versión en ambas máquinas):

apt-get install unison
 
 
Luego en el directorio home del usuario que vamos a usar para sincronizar creamos el directorio .unison:

mkdir /root/.unison

Ahora creamos un archivo con extensión /root/.unison/default.prf que indica las carpetas que deseamos sincronizar y las carpetas o archivos que deseemos ignorar, debe ser algo similar a:
 
# computadora A
root = /home
  
# computadora B
root = ssh://ip_computadora_B//home 
# sincronizar 
path = miusuario/Documentos
# ignorar 
ignore = Path miusuario/Instaladores
ignore = Name .*

Y llevamos a cabo la sincronización con el comando:
 
unison default

(debe ejecutarse a nombre del usuario miusuario y desde la carpeta /root).

Ejemplo de sincronizacion de carpeta de directory entre dos FreeSWITCH
 
auto = true
# disminuir el debug
batch = true
# archivos locales y remota
root = ssh://192.168.80.2//usr/local/freeswitch/conf/directory/default
root = /usr/local/freeswitch/conf/directory/default
perms = 0
#Ante un conflicto le da preferencia este directorio
prefer = /usr/local/freeswitch/conf/directory/default
ignore = Path */Olds
ignore = Name {olds,*~,tmp,temp,.*}

 

domingo, enero 25, 2015

Codec g729 en FreeSWITCH

G729 es el codec bajo consumo de ancho de banda mas utilizado en los teléfonos IP físicos, para poder utilizarlo en FreeSWITCH se puedo utilizar en modo passthrough, utilizando el modulo mod_com_g729, de manera gratuita, pero si necesitamos transcoding o buzon de voz con g729 necesitaremos utilizar el modulo mod_g729 por el cual hay que pagar 10 dolares por canal, esto debido a que el codec g729 esta patentado y hay que pagar royalty por uso. 
Pero ahora existe otro modulo que no esta en los repositorios oficiales de FreeSWITCH, que utiliza g729 con la implementacion open source de Belledonne Communications, los creadores de nuestro querido Linphone, el cual nos permite utilizar g729 para transcoding y otras aplicaciones sin pagar. 


Instalación


 cd /u sr/src/freeswitch/src/mod/codecs/ 
git clone https://github.com/xadhoom/mod_bcg729.git 
cd mod_bcg729 

Modificamos el archivo Makefile

FS_INCLUDES=/usr/local/freeswitch/include

FS_MODULES=/usr/local/freeswitch/mod

Despues compilamos e instalamos

make & make install

Entramos a FreeSWITCH y cargamos el nuevo modulo

unload mod_g729

load mod_bcg729

Ahora ya tenemos corriendo g729 en FreeSWITCH


===============ACTUALIZACIÓN====================

Para FreeSWITCH 1.6 se debe modificar las variables de Makefile asi:

FS_INCLUDES=/usr/local/freeswitch/include/freeswitch

FS_MODULES=/usr/local/freeswitch/mod