Mr. Watson -- come here -- I want to see you.
Those were the very first words transmitted by electrical means. This was in 1876 when the telephone was invented. Today, almost 135 years later, we\'re facing a higher level of abstraction for voice communications. VoIP has evolved since its inception, in 1995, to be almost 50% of the total voice traffic around the world according to several estimates.
Now, in a world thinking about the Cloud as the ultimate way to provide services, the VoIP one shouldn\'t be left apart. In this paper we will explore how to put VoIP on the cloud using several virtualization techniques to give a proper VoIP experience to the final users. We will cover features, limitations, risks and best practices to implement those kind of solutions.
Andres Mujica is the CEO of SEAQ Servicios, a Colombian Red Hat Partner. Andres is a RHCE, RHCVA and DCAP certified engineer.
3. VIRTUALIZACIÓN VOIP
OBJETIVOS
■ Conocer algunas de las diferentes tecnologías
de virtualización disponibles
■ Identificar las limitaciones y posibilidades de
la virtualización de VoIP
■ Determinar las mejores prácticas para
virtualizar VoIP
4. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ Historia de la virtualización
■ Historia de la telefonía
■ Por qué virtualizar VoIP?
■ Tipos de virtualización
- Emulation
- OS-Level Virtualization
- Para-Virtualization
- Full/Native Virtualization
5. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ VIRTUALIZANDO VoIP
Consideraciones
Criterios de virtualización
OpenVZ / Vmware / Hyper-V / Xen / KVM
Análisis de desempeño
■ CONCLUSIONES
■ Demo Real en AWS / KVM (limitado a
disponibilidad de tiempo)
6. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ Historia de la virtualización
■ Historia de la telefonía
■ Por qué virtualizar VoIP?
■ Tipos de virtualización
- Emulation
- OS-Level Virtualization
- Para-Virtualization
- Full/Native Virtualization
7. HISTORIA DE LA VIRTUALIZACIÓN
The Real Deal
■ Otoño de 1964
■ GE le gana a IBM el
contrato MULTICS
■ TSS: Time Sharing
System
■ CP-40 Project
Robert Creasy
8. HISTORIA DE LA VIRTUALIZACIÓN
The Real Deal
■ CP/40 : Definio la arquitectura VM
■ Proyecto CP-67 parte de CP/CMS para el
IBM/System360-67
■ CP-370-CMS base para el VM/370
■ CP/CMS era OPEN SOURCE !!!
9. HISTORIA DE LA VIRTUALIZACIÓN
The Real Deal
■ IBM System-370 > VM/370
10. HISTORIA DE LA VIRTUALIZACIÓN
S/360-67 – 1966
■ Virtual Memory
■ Microcode
■ Hardware asistido
■ Direccionamiento
24/32 bits
■ Full Virtualization
(oops)
11. HISTORIA DE LA VIRTUALIZACIÓN
VM/370 – 1972
■ Primer VM Platform
■ Soporta múltiples OS
CMS
DOS/VS
OS/MFT/MVT/VS1
SVS
MVS Teddy Bear – 1983
VM/370 Mascota Oficial IBM VMs
Algunas versiones de IBM/AIX
12. HISTORIA DE LA VIRTUALIZACIÓN
CP/CMS
■ Control Program :
Implementación de VM simulando un S/360
(hypervisor)
■ Cambridge Monitor System :
Sistema operativo mono-usuario
13. HISTORIA DE LA VIRTUALIZACIÓN
CP/CMS
■ Aislamiento de usuarios entre sí. (reliabilidad
y seguridad)
■ Simulación de un computador completo
permitiendo correr cualquier SW S/360 en un
TSS. (sin rediseñar aplicaciones para TSS)
■ Un CMS ligero como interfaz principal permite
un buen desempeño para el usuario
14. HISTORIA DE LA VIRTUALIZACIÓN
■ Nació por accidente
■ Con el S360/CP-67 se
creo el VM/370
■ VM/370: Muchos
colores surgen de un
solo haz de luz
15. HISTORIA DE LA VIRTUALIZACIÓN
DARK AGES
■ La burocracia interna de IBM ignoró la VM
durante mas de un lustro ( '73 al '79)
■ La comunidad de usuarios e IBMers se
autosoporto y apoyo mutuamente
➔ VMSHARE
➔ VNET
■ Antecedentes del "Open Source”
16. HISTORIA DE LA VIRTUALIZACIÓN
DARK AGES
■ 1972: Lanzamiento del VM/370
■ 1974: Computerworld blast. IBM has no further
plans for VM
IBM tenía una proyección de máximo 500
clientes para VM
■ 1976: 300 clientes de VM
■ 1978: 1000 clientes con VM
17. HISTORIA DE LA VIRTUALIZACIÓN
DARK AGES
■ 1980: IBM.. compromiso con VM
■ 1980: IBM VM/SP1 (buggy as hell)
■ 1981: IBM VM/SP1 (por fin estable!)
■ 1982: IBM declara la tecnología VM estratégica
■ 1983: IBM inicia política OCO (acabo con el
"open source")
18. HISTORIA DE LA VIRTUALIZACIÓN
DARK AGES
■ 1983: 10.000 instalaciones de VM
■ 1985: "We hope that IBM will decide not to kill the
goose that lays the golden eggs”
■ 1987: Usuarios, desarrolladores e IBMers
insatisfechos con la migración a OCO
➔ Lentitud en bugfixes
➔ Demora en nuevas funcionalidades
■ 1987: Merge/386 primera aproximación en x86
19. HISTORIA DE LA VIRTUALIZACIÓN
GOLDEN (?) AGES
■ 1987: SoftPC Primer emulador de software
■ 1989: IBM 20.000 instalaciones de VM (a pesar
de!?)
■ 1990: Lanzamiento de IBM System/390
■ 1991: Aparece la primera versión del Linux
Kernel
■ 1997: Virtual PC de Connectix para Mac
20. HISTORIA DE LA VIRTUALIZACIÓN
GOLDEN (?) AGES
■ 1998: Vmware en modo stealth
■ 1998: Vmware patenta sus técnicas de
virtualization U.S. Patent 6,397,242
■ 1999: Vmware sale a la luz pública en la DEMO
Conference
■ 1999: IBM implementa hypervisores en
plataforma POWER
21. HISTORIA DE LA VIRTUALIZACIÓN
GOLDEN (?) AGES
■ 1999: Mark Spencer inicia el desarrollo de
Asterisk
■ 1999: Vmware lanza su producto Vmware
Workstation
■ 2000: IBM lanza Z/VM
■ 2000: Jim Dixon inicia el desarrollo de Open
Telephony Hardware (Zapata)
22. HISTORIA DE LA VIRTUALIZACIÓN
GOLDEN (?) AGES
■ 2001: Vmware lanza su primer producto para
servidores
■ 2003: Primer hypervisor Open Source Xen
■ 2003: Primer emulador Open Source QEMU
■ 2005: OpenVZ es liberado por Virtuozzo
■ 2006: Microsoft inicia el desarrollo de Hyper-V
basado en tecnología XEN
23. HISTORIA DE LA VIRTUALIZACIÓN
GOLDEN (?) AGES
■ 2007: Citrix compra XEN
■ 2007: KVM se incorpora al kernel de Linux
■ 2007: Innotek lanza VirtualBox
■ 2008: Red Hat compra Qumranet (KVM)
■ 2009: Oracle compra SUN (heredando 3
tecnologías de virtualización)
24. HISTORIA DE LA VIRTUALIZACIÓN
NOW THE FUTURE
■ 2009: Eastern Mngmnt Group: 2.9 millones de
“endpoints” vendidos en PBX Open Source,
equivalente al 18% del mercado en USA
➔ Crecimiento anual del 40%
■ 2009: Gartner: 18% de las workloads
corporativas sobre x86 corren virtualizadas.
➔ Para el 2012 se estima tener el 50% (58M)
25. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ Historia de la virtualización
■ Historia de la telefonía
■ Por qué virtualizar VoIP?
■ Tipos de virtualización
- Emulation
- OS-Level Virtualization
- Para-Virtualization
- Full/Native Virtualization
27. HISTORIA DE LA TELEFONÍA
"Mr. Watson -- come here -- I want to see you."
-- Alexander Graham Bell
28. HISTORIA DE LA TELEFONÍA
El teléfono fue inventado en 1876.
• Originalmente:
• Transmisión sobre un hilo de hierro/cobre
• Circuitos sin marcación (ring down).
• Comunicación punto a punto.
29. HISTORIA DE LA TELEFONÍA
■ PSTN (Public Switched Telephone Network)
30. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ Historia de la virtualización
■ Historia de la telefonía
■ Por qué virtualizar VoIP?
■ Tipos de virtualización
- Emulation
- OS-Level Virtualization
- Para-Virtualization
- Full/Native Virtualization
42. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ Historia de la virtualización
■ Historia de la telefonía
■ Por qué virtualizar VoIP?
■ Tipos de virtualización
- Emulation
- OS-Level Virtualization
- Para-Virtualization
- Full/Native Virtualization
43. TIPOS DE VIRTUALIZACIÓN
■ Virtualización
La posibilidad de correr múltiples
computadores dentro de un solo
computador físico
- Consumo de energía
- Espacio
- Subutilización de
recursos
- Administración
44. TIPOS DE VIRTUALIZACIÓN
■ Para que usarla?
Ambientes de pruebas y/o producción
Reducción de costos
Consolidación
46. TIPOS DE VIRTUALIZACIÓN
■ Aislamiento (Isolation)
➔ Mantener los guest y el host aislados entre sí
es muy importante pero afecta el desempeño
■ Desempeño
➔ Es el elemento más importante a considerar
47. TIPOS DE VIRTUALIZACIÓN
Emulation
■ Simulación completa del hardware
■ Los guests no requieren modificación
■ Diferentes arquitecturas emuladas (desde arm
hasta s390)
■ Bajo desempeño
49. TIPOS DE VIRTUALIZACIÓN
Full/Native Virtualization
■ Algunas instrucciones corren directo en el hw de
manera asistida (Intel VT o AMD V)
■ Parecido a la emulation
■ Sistemas operativos Guest corren sin modificación
■ Sistemas operativos Guest deben ser de la misma
arquitectura
■ Normalmente usada en vez de la
paravirtualización cuando el SO Guest se
distribuye en binario (Windows)
■ Mejor desempeño que la emulación
■ Se puede mezclar con la para-virtualización
50. TIPOS DE VIRTUALIZACIÓN
Para-Virtualization
■ Las aplicaciones corren sin modificaciones
■ Pero el Sistema operativo invitado (Guest)
requiere modificación para acceder al hardware
real
■ Mejor desempeño que la Full/Native Virtualization
■ Sistemas operativos Guest deben ser de la misma
arquitectura
■ Utilizado por la Full/Native virtualization para I/O
52. TIPOS DE VIRTUALIZACIÓN
OS-Level Virtualization (contextos)
■ Mismo kernel para todas las “VM”
■ Guest comparte recursos con el sistema host
■ Aislamiento débil
■ Desempeño del host supeditado al consumo de
los guest
■ Guest no son sistemas completos realmente
■ Mejor I/O existente
55. TIPOS DE VIRTUALIZACIÓN
Virtualization technologies
partial emulation no emulation
IO
BT
KQEMU
VirtualBox KVM OpenVZ Xen (Linux) Linux-VServer
VMware
56. TIPOS DE VIRTUALIZACIÓN
Tipos de hypervisor
Hypervisors type I: KVM, Xen, Vmware
Hypervisors type II: VirtualBox, KQEMU,
Vmware Workstation
57. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ VIRTUALIZANDO VoIP
Consideraciones
Criterios de diseño
Análisis de desempeño
■ CONCLUSIONES
■ Demo Real en AWS / KVM (limitado a
disponibilidad de tiempo)
58. VIRTUALIZANDO VoIP
Virtualizando VoIP
■ Se deben tener en cuenta factores como
Protocolos afectados
Arquitectura de asterisk
Problemas normales de VoIP
Criterios de virtualización
Pruebas de carga
64. PROBLEMAS NORMALES DE VoIP
Problemas que no existían o estaban
solucionados con la telefonía tradicional y que
afectan la calidad del servicio (QoS).
● Requerimiento de ancho de banda.
● Latencia o retardo (>300 ms es impracticable).
● Jitter: variación de latencia.
Principal problema:
No hay dedicación exclusiva para la
transmisión de la Voz
65. PROBLEMAS NORMALES DE VoIP
● Las redes IP generalmente no permiten
garantizar un tiempo mínimo para atravesarlas.
● Las redes IP están diseñadas para descartar
paquetes en caso de congestión y
retransmitirlos en caso de error. Esto no es
adecuado para la voz.
● Los retardos de cientos de ms, comunes en
redes de datos, son inaceptables en una
conversación telefónica.
66. RETO AL VIRTUALIZAR
● Todos los problemas anteriores existentes, con
un nuevo ingrediente:
Otros Guest luchando por los
recursos de hardware de la máquina
- CPU
- I/O
- TIME DRIFT
67. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ VIRTUALIZANDO VoIP
Consideraciones
Criterios de virtualización
OpenVZ / Vmware / Hyper-V / Xen / KVM
Algunas pruebas
■ CONCLUSIONES
■ Demo Real en AWS / KVM (limitado a
disponibilidad de tiempo)
68. CRITERIOS DE VIRTUALIZACION
■ Numero máximo de conexiones concurrentes
■ Porcentaje de trafico que requiere DSP (G.729,
GSM, G.711, etc.)
■ ¿Conferencias soportadas?, ¿Que tan activas?
■ ¿Cancelación de eco por software/hardware?
(PSTN)
■ ¿Scripts externos invocados por Asterisk?
69. CRITERIOS DE VIRTUALIZACION
■ Grabación de llamadas
■ Troncales análogas/digitales o IP
■ IVR transaccional
■ Plataforma de virtualización
■ Necesidad de consolidación o flexibilidad
70. CRITERIOS DE VIRTUALIZACION
■ Codecs comprimidos/descomprimidos
■ Network
- ¿Trafico de otras aplicaciones?
- ¿Aislar el trafico de voz?
- QoS
■ CPU
- Codecs
- IRQ
- TransCoding (CLI> show translation)
71. CRITERIOS DE VIRTUALIZACION
■ Transcoding
■ ¿Codecs comprimidos/descomprimidos?
(CPU/Network)
■ ¿Otros guest en la misma maquina física?
■ ¿Compilar el núcleo de Linux?
■ Latencia de IRQ (dispositivos innecesarios)
73. CRITERIOS DE VIRTUALIZACION
NYQUIST
■ La frecuencia de muestreo debe ser mayor que
el doble del ancho de banda de la señal de
entrada, para poderla reconstruir desde la
muestra.
■ La red telefonica transporta frecuencias entre los
300 Hz. y los 4000 Hz
■ 8000 muestras/segundo son suficientes para
reconstruir. (8000 Hz.)
74. CRITERIOS DE VIRTUALIZACION
■ 1 kbit/s = 1 kbps
■ 8 kbit/s – Calidad de telefono
■ 32 kbit/s – Calidad MW
■ 96 kbit/s – Calidad FM
■ 192 kbit/s – Sonido MP3
■ 1,411 kbit/s – CD de audio (muestras de 16 bit ×
44.1 kHz × 2 canales)
79. CRITERIOS DE VIRTUALIZACION
LINEAMIENTOS PARA DIMENSIONAMIENTO DE
SERVIDOR FÍSICO
– 100 Simultaneous calls per GHz of CPU capacity
– GHz capacity = Number of CPU * Clock Speed
– p.e., Quad Core 2.4 GHz CPU tiene 4 cores * 2.4
GHz = 9.6 GHz capacity
Total máx de llamadas: 960
80. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ VIRTUALIZANDO VoIP
Consideraciones
Criterios de virtualización
Análisis de desempeño
■ CONCLUSIONES
■ Demo Real en AWS / KVM (limitado a
disponibilidad de tiempo)
81. PRUEBAS DESEMPEÑO
Resultados de algunas pruebas de desempeño:
■ RevolutionLinux 2008 comparando tecnologías de
virtualización Open Source
■ Vmware vs XEN by Vmware (2007)
Pruebas XEN vs Vmware by XENSOURCE
(hoy Citrix) (2007)
■ SPECVirt 2010 pruebas neutrales de la industria
(2007)
■ Análisis de virtualización VoIP por Saúl Ibarra
82. PRUEBAS DESEMPEÑO
Compilation of the Linux kernel
1
0,9
Linux-VServer
Xen
0,8 OpenVZ
KVM
VirtualBox (-hwvirtex off)
KQEMU
0,7 VirtualBox (-hwvirtex on)
QEMU
0,6
0,5
Nomalized time
(kernel vanilla)
0,4
0,3
0,2
0,1
0
Análisis realizado por
RevolutionLinux
http://www.revolutionlinux.com
91. PRUEBAS DE CARGA
PACKET CREATION & FLOODING
■ Algunas desarrolladas por HP
➔ SIPNess: SIP testing tool que prueba
aplicaciones SIP
➔ SIPp: generador de tráfico y pruebass para
SIP (muy utilizada)
➔ SIPsak: SIP swiss army knife
94. HERRAMIENTAS UTILIZADAS
PACKET CREATION & FLOODING
■ SIPp
Run sipp with embedded server (uas)
scenario:
./sipp -sn uas
On the same host, run sipp with embedded
client (uac) scenario:
./sipp -sn uac 127.0.0.1
95. PRUEBAS DE CARGA
■ Software used:
Asterisk ;)
SIPp (stress-testing)
Tcpdump (sniffing RTP for use with SIPp)
sar (CPU usage, HD, IO stats)
sadf (extract sar's data)
■ Limits:
ulimit -s unlimited # stack size
ulimit -n 65536 # open files
ulimit -u unlimited # user process num.
99. VIRTUALIZACIÓN VOIP
PLAN DE TRABAJO
■ VIRTUALIZANDO VoIP
Consideraciones
Criterios de virtualización
Análisis de desempeño
Recomendaciones
■ CONCLUSIONES
■ Demo Real en AWS / KVM (limitado a
disponibilidad de tiempo)
100. ALGUNAS RECOMENDACIONES
Teniendo en cuenta todo lo anterior, podemos
plantear una serie de recomendaciones puntuales
de acuerdo al hypervisor seleccionado
101. ALGUNAS RECOMENDACIONES
Vmware se apalanca en binary
translation para virtualizar, esto
genera overhead para cierto tipo
de aplicaciones
VMWARE ESXi
- overhead
- time drift
- I/O
VMWARE ESX
102. ALGUNAS RECOMENDACIONES
XEN maneja
paravirtualización por medio
de su hypervisor, sin
embargo esto implica
implementar dos veces todos
los features a nivel de kernel
y para soporte de hardware
103. ALGUNAS RECOMENDACIONES
KVM maneja full
virtualization e incluye
paravirtualización para el
I/O.
La ventaja es que aprovecha
todas las funcionalidades del
kernel de linux sin
intermediación
105. ALGUNAS RECOMENDACIONES
Parametros kernel
RED HAT 5.3 hacia abajo
clocksource=acpi_pm
divider=10
RED HAT 4.9 hacia abajo / SLES 10
clock=pmtmr
hpet=disable
RED HAT 5.3 / 4.9 x86_64
notsc
nohpet
107. ALGUNAS RECOMENDACIONES
USB passthrough (para USB timer)
PCI passthrough (para presentar HW)
ethtool -K eth0 tx off
Kernel config CONFIG_HZ = 1000
Conferencias con funcionalidad limitada o usar
app_conference
108. ALGUNAS RECOMENDACIONES
No Grabar
No transcoding
SIP Puro
Desagregación de la DB (independizar I/O)
Ojo con Colas
Mover la media aparte de la plataforma virtual
(en escenarios con carga pesada)
109. ALGUNAS RECOMENDACIONES
■ La selección entre OpenVZ/ Xen / VMware o
KVM depende del perfil de uso que vaya a
tener el sistema.
■ APLIQUE LAS MEJORES PRÁCTICAS DE
IMPLEMENTACIÓN DE VoIP
110. CONCLUSIONES
■ SI se puede usar asterisk virtualizado (y 3CX)
■ Tener en cuenta desempeño
Disco
Red
Procesador
■ Técnicamente soporta 400-600 llamadas
simultaneas
Analizar el tipo de carga para decidir
■ Solución de failover
112. CONCLUSIONES
Tiempo total:
50 horas
“En Febrero del 2009, para las elecciones en
Israel se usaron 34 instancias de asterisk sobre
Costo total por
AWS como dialers, llegando a 3500 llamadas
simultáneas y 350 intentos de llamada en horario
infraestructura: pico.”
Amocon 2009 USD 900
Greenfield Tech, Israel
113. CONCLUSIONES
“En Febrero del 2009, para las elecciones en
Israel se usaron 34 instancias de asterisk sobre
AWS como dialers, llegando a 3500 llamadas
simultáneas y 350 intentos de llamada en horario
pico.”
Greenfield Tech, Israel
Amocon 2009
114. OTRAS CONFERENCIAS
1.- Virtualización de Escritorios, de vuelta al
mainframe. Pero mejor!!!
2.- Implementando Cloud Privados. De la
propaganda a la acción.
3.- Por qué el Open Source es la alternativa
ideal para el desarrollo tecnológico de
Colombia y Latinoamerica
4.- Hacking y asegurando Asterisk