VoIP RTP y SIP
VoIP
oIPlopodemosdefinirsimplementecomoeltransportedelavozutilizandoelprotocolode
V
internet IP. Es importante nota que VoIP no implica de forma directa la voz en paquetes IP
como intuitivamente lo podemos pensar.
Internetesunaredderedesinterconectadas,todasutilizandoIP.laconexiónentreestasredes
es utilizada por unrango amplio de aplicaciones noúnicamente Voz.
aratransportarlavozpodemosdividirloendosprotocolos.SIPqueesdeseñalizaciónyRTP
P
que es para el transporte de la voz. Másadelanteveremosladiferencia;peroambosutilizan
UDP como protocolo de transporte.El resto lo típico,IP y el enlace que corresponda.
Por qué UDP?, como vimos anteriormente UDP realiza una función simple, envía los
¿
segmentos de datos de una aplicación sobre IP. Pero a diferencia de TCP, UDP notiene
ACK de datos, por lo que UDP es poco confiable. Entonces, ¿por que utilizar UDPparael
transporte de voz?
arespuestaestáenquemuchasaplicacionesrequierenunarespuestarápida.POrejemploel
L
protocoloDNS,dondeunclienteenvíaunnombrededominioaunservidor,ylarespuestaes
simplemente una dirección IP.
or lo que el overhead del handshake y control de TCP para el envío de un segmento
P
simple es demasiado. Pero ¿cuáles son las consecuenciasde esto?:
1. E ficiencia: UDP es un protocolo de transporte ligero en comparación con TCP
(TransmissionControlProtocol).Estopermitequelospaquetesdevozsetransmitande
manera más eficiente, ya que no hay necesidad de esperar la confirmación de
recepción de cada paquete.
2. L atencia baja: En las comunicaciones en tiempo real, como las llamadas de voz, la
latencia (retraso) es un factor crítico. UDP tiene una menor sobrecarga en
comparación con TCP, lo que significa que hay menos tiempo de procesamiento y
menospaquetesadicionalesparalagestióndelaconexión.Estoreducelalatencia
y proporciona una experiencia de voz más fluida.
3. M enorconsumodeanchodebanda:Latransmisióndevozrequiereunanchode
bandaconstanteyunflujodedatoscontinuo.UDPnotienelasobrecargaadicional
de TCP.
1
4. F lexibilidad en la gestión de errores: Los sistemas de VoIP pueden implementar
sus propios mecanismos de detección y corrección de errores adaptados a sus
necesidades específicas, lo que puede ser más eficiente en términos de recursos de
red.
Pérdida de paquetes en VoIP
a pérdidadeunpaquetedevozsignificaqueseproduceunabrechaenelflujodeaudio.
L
Esto puede resultar en una interrupción o distorsión temporal del sonido.
apérdidadeunsolopaquetegeneralmentenotieneunefectosignificativoenlacalidad
L
delallamada,yaquelosprotocolosdeVoIPsuelenutilizartécnicascomoelusodebuffersyla
interpolación de paquetes para suavizar las variaciones. Sin embargo, si la pérdida de
paquetes es frecuente o consecutiva, puede llevar a unadegradaciónperceptibleenla
calidad de la voz.
n caso de pérdida de paquetes, los sistemas de VoIP pueden implementarmecanismosde
E
recuperación para minimizar el impacto. ESto no es nativo del protocolo RTP sino que es
implementado por oro protocolo denominadoRTCP.Algunasde las técnicas utilizadas incluyen:
1. R eenvío de paquetes: El remitente puede detectar la pérdida de un paquete y
reenviarlo.
2. C orrección de errores: Los códecs de voz utilizados en VoIP a menudo incluyen
técnicasdecorreccióndeerroresparapermitirlareconstruccióndepaquetesperdidoso
dañados.
3. Interpolación de paquetes: El receptor estima el contenido del paquete perdido
basándose en los paquetes adyacentes.
4. C ontroldecalidadadaptativo:LossistemasdeVoIPpuedenajustardinámicamentela
calidad de la llamada en función de las condiciones de la red.
2
Sampling de la voz
ara crear una representación digital de las ondas (como es la voz), primero es necesario
P
tomar un número discreto de muestras de la onda y luego representar cada muestra en
números de bits.
laroquerequeriríaunnúmeroinfinitosdemuestraspararecreardeformacompletalaseñal
C
original.Paraesto,loquehacemosestomarunnúmerosuficientedemuestrasquepodremos
usar para recrear la señaloriginal.Esteteoremabásicamentedicequeunaseñalpuedeser
recontruída si se toman muestras como mínimo al doble de su frecuencia. Esto se lo
conoce como elteorema de Nyquist.
ntonces, si la frecuencia es de 4000Hz, deberemos tomar 8000 muestras por
E
segundo.Entonces, si la voz humana se encuentra en la frecuencia de 300 a 3800Hz,
ausmiremosunafrecuenciade4000Hz(cualquiersonidoqueseintroduzcaporarribaodebajo
de dicha frecuencia podremos limitarlo con un filtro pasabanda).
esdeyadecimosqueestosirveparalaconversaciónhumana,noparacaptaraLuciano
D
Pavarotti cantando.
Quantización
ampleandoa8Khzdebemosresolvercomorepresentardigitalmenteloqueobtenemosde
S
forma analógica. En otras palabras, ¿cuantos bits son utilizados para representar cada
muestra?
uandotomamosunamuestratenemosunnúmerodebitslimitadopararepresentarelvalorde
C
cada muestra. Utilizando un número limitadopararepresentarcadamuestra,loquehacemos
se lo conoce comoquatizar la señal.
Entonces, si utilizamos4 bits solo podremos cuantizar16 señales diferentes:
3
ntonces,siunsampleodevuelveunvalor,5.3tendremosúnicamentedosopciones.O5o6.
E
A esto se lo conoce comoerror de quantización.Enel caso de 3 bits:
aformamásrápidadereducirelefectodelaquantizaciónesagregarmásbitsydeesaforma
L
agrega más granularidad.
Codecs
escribeunaespecificacióndesarrolladaensoftware,hardwareounacombinacióndeambos,
D
capazdetransformarunarchivoconunflujodedatos(stream)ounaseñal.Loscódecspueden
codificar el flujo o la señal (a menudo para la transmisión, el almacenaje o el cifrado) y
recuperarloodescifrarlodelmismomodoparalareproducciónolamanipulaciónenunformato
más apropiado para estas operaciones. Los códecs son usados a menudo en
videoconferencias y emisiones de medios de comunicación.
G.711
selmáscomún.Tieneunsampleode8KhZy12bitsporsampleLlevándoloaunbitratede
E
96Kbs
8KMuestras/s*12bits = 8KM * 12 /s = 96 kbps
G.723.1 Algebraic Code-Excited Linear Prediction (ACELP)
suncodecquepuedeoperartantoa6.3kbpscomoa5.3kbps.Logravelocidadestanbajas
E
ya que tiene técnicas de compresión como Modified Differential Pulse Code Modulation -
MDPCMdonde solo envía las modificaciones entre dosmuestras y no la muestra entera.
4
Arquitectura VoIP
Arquitectura SIP
IP es un protocolo de capa de aplicación de señalización que maneja la configuración,
S
modificación y finalización de sesión MULTIMEDIA atendiendo en el puerto 5060 por
defecto.EstosignificaqueSIPlovamosapodervernosóloenvozsinoenotrotráficode
media. Nos referimos a que es un protocolodeseñalizaciónyesagnósticodeltipodedato
que administra.
or lo que es un protocolo completamente separado del que lleva la media el cual es
P
conocido comoRTP que es el protocolo de transporte.
sta separación es importante porque la señalización puede pasar mediante uno o más
E
proxy de redirección pero la media lleva una conexión directa. Esto significa que
lógicamente es una conexión peer-to-peer. Más adelante lo analizaremos cuando veamos
STUN.
5
Pero… ¿qué es un protocolo de señalización?
n protocolo de señalización es un conjunto de reglas y procedimientos que se utilizan
U
paraestablecer,modificaryfinalizarlasllamadastelefónicasatravésdeunaredIP.Estos
protocolos permiten que los dispositivos de comunicación intercambien informaciónde
control y señalizaciónnecesaria para establecer ygestionar las llamadas VoIP.
demás de SIP, existen otros protocolos de señalización utilizados enlaVoIP,comoH.323y
A
TCP.Estosprotocolostambiénproporcionanfuncionalidadessimilaresdeseñalizaciónycontrol
de llamadas.
CP no es utilizado enelcontextodecomunicacionesentiemporeal.Paraeltransporte
T
utilizaremos UDP.
Listado de mensajes SIP
Existen básicamente dos tipos de mensajes:
1. M ensajes de requerimiento (Requests), enviados utilizando alguno de los métodos SIP
listados abajo.
○ ACK – Es utilizado para responder a un mensaje de estado de SIP en el rango
200-699 mientras se encuentra dentro de un diálogo SIP INVITE.
○ BYE – Es utilizado para finalizar una sesión previamente establecida, como una
llamada iniciada con un mensaje SIP INVITE.
○ CANCEL – Es utilizado para cancelar un requerimiento (como un INVITE o inicio de
llamada que aún se encuentra en progreso pero que no ha sido atendida).
○ INVITE – Es utilizado para iniciar un diálogo de sesión – típicamente para establecer
una llamada telefónica.
○ OPTIONS – Es utilizado por un cliente SIP para consultar a otro cliente SIP o proxy
(como el servidor de 3CX Phone System) sobre sus capacidades y descubrir los
métodos soportados, tipos de contenido, extensiones, codecs, y demás, antes de,
por ejemplo, establecer una llamada utilizando el método SIP INVITE.
○ REGISTER – Utilizado para registrar o des-registrar un cliente SIP en un SIP
Registrar. Un teléfono no registrado no puede recibir requerimientos SIP INVITE, por
lo que no puede recibir llamadas entrantes.
○
2. Mensajes de estado, emitidos con un indicador de estado numérico.
○ 100-199– Utilizado para indicar un estado temporal,como “100 Trying” (intentando)
“180 Ringing” (teléfono sonando).
○ 200-299– Utilizado para indicar un estado final exitoso,como “200 OK”
○ 300-399– Utilizado para indicar un estado final defalla, pero con información sobre
la nueva ubicación del usuario, o sobre servicios alternativos que podrían contestar
la llamada.
6
○ 4 00-499– Utilizadas para indicar un estado final de error, pero local al SIP Proxy
que generó este mensaje
○ 500-599– Utilizado para indicar queel servidor dela central telefónica ha
encontrado un error interno. Ejemplos son “500 ServerInternal Error” y “501 Not
Implemented”.
RTP
l Protocolo RTP es un protocolo utilizado en aplicaciones de comunicación en tiempo
E
real, como la transmisión de voz y video a través de redes IP. Su principal función es
proporcionarunaentregaeficienteyconfiablededatosmultimedia,altiempoquegarantiza
lasincronización y la calidad adecuadapara la reproducciónen tiempo real.
l protocolo RTP se basa en el protocolo de transporte subyacente, generalmente UDP.
E
UDPproporcionaunaentregarápidaperonogarantizalaentregaconfiable.Paracompensar
esto, RTP incorpora mecanismos de control de calidad de servicio (QoS), como la
numeración de secuencia de lospaquetes,lamarcadetiempoyladetecciónycorrecciónde
errores.
7
Encabezado RTP
l encabezado del Protocolo de Transporte en Tiempo Real (RTP) contiene información
E
importante para el envío y la recepción de datos multimedia en tiempo real. A
continuación se muestra la información típica que se encuentra en el encabezado RTP:
● N úmero de versión: Indica la versión del protocolo RTP utilizado, generalmente se
establece en 2.
● M arcador(Marker):Seutilizaparaseñalarunpaquetededatosespecialdentrodeuna
secuencia de paquetes. Su interpretación depende de la aplicación y puede variar.
● T ipo decargaútil(PayloadType):Identificaeltipodedatosmultimediatransportados
en el paquete RTP, como audio, video u otros tipos de datos.
● N úmero de secuencia (Sequence Number): Asigna un número desecuenciaúnicoa
cada paquete RTP enviado. Se utiliza para detectar la pérdida de paquetes y para
mantener el orden de reproducción.
● M arcadetiempo(Timestamp):Indicaelinstantedetiempoalqueserefierenlosdatos
multimedia en el paquete RTP. Permite la sincronización entre los paquetes y la
reproducción en tiempo real.
● Identificación de origen (Synchronization Source Identifier, SSRC): Identifica de
manera única la fuente que origina el flujo de datos RTP. Permite distinguir entre
diferentes fuentes de datos en una misma sesión.
demás de estos campos principales, el encabezado RTP también puede contener otros
A
campos opcionales, como extensiones de encabezado (Header Extensions) para incluir
información adicional y campos de contribución (ContributingSource)paraindicarlasfuentes
que contribuyen a un flujo de datos.
s importante destacarqueelencabezadoRTPseencuentradentrodeunpaqueteUDPo
E
TCP, dependiendo del protocolo de transporte subyacenteutilizado. Esto es
8
Establecimiento de una llamada SIP
uedenverestoenmayordetalledentrodelacapturadepaquetes.Estediálogosedaentreel
P
teléfono VoIP o cliente VoIP y el servidor SIP al cual dicho cliente se encuentra logueado.
orloque,debemosdetenerunusuarioypassworddentrodenuestroproveedordeVoz
P
sobre IP
Invite SDP g722
a siguientecapturasedaentredosservidoresVoIP.Paraestopodemosverlainformación
L
del encabezadoSIP:
9
De aquí se deduce que:
. E
1 stá llamando atestque se encuentra en el servidorVoIP[Link].
2. El origen es[Link]
3. El c
liente que origina la llamada es sipp pero el caller ID en el destino lo verácomo
G722/8000.
4. El códec a utilizar esG722
100 Trying |
indicar queel servidor ha recibido la solicitud deinicio de sesión y está procesando la
petición. Es una respuesta temprana y provisionalque informa al cliente que la solicitud se
está procesando y que puede esperar una respuesta final en breve.
a respuesta "100 Trying"no implica que la solicitudse haya completado o haya tenido
L
éxito.Es simplemente una confirmación de que el servidorha recibido la solicitud y está en
proceso de manejarla.
200 OK |
l código de estado "200 OK" es una respuesta exitosa en el Protocolo de Inicio de Sesión
E
(SIP) que indica quela solicitud ha sido procesadacorrectamente.Es la respuesta final que
confirma el éxito de la operación solicitada.
10
ACK
uando un cliente SIP recibe una respuesta exitosa, como "200 OK", a una solicitud previa,
C
debe enviar un mensaje "ACK" al servidor SIP para confirmar la recepción de la
respuesta. El mensaje "ACK" se utiliza para completarel proceso de establecimiento de una
sesión o transacción SIP.
l mensaje "ACK" generalmente no lleva información adicional en su cuerpo, ya que su función
E
principal es confirmar la recepción de la respuesta exitosa
Aunque el objetivo es el mismo,no tiene nada quever con el ACK de TCP.
RTP
e da la transacción de media. Observen queel puertodonde recibe la media es 6000 y el
S
puerto de origen es 17472.Este es el puerto del servidorSIP de destino y origen
respectivamente..
Y el Códec se ve que esG722
11
BYE
l mensaje "BYE" esuna solicitud que indica la intenciónde terminar la sesión o la
E
llamada actual. Al recibir el mensaje "BYE", eldestinatariopuede enviar una respuesta
"200 OK" para confirmar la terminación de la sesión.Después de recibir la respuesta "200
OK", ambas partes pueden liberar los recursos y finalizar la conexión.
En este caso la terminación es socicitada porEl servidorSIP de destino, usuario sipp.
200 OK
l mensaje "200 OK" en SIP se utiliza como respuesta exitosa después de recibir un
E
mensaje "BYE" para confirmar la aceptación de la solicitud de terminación y finalizar
correctamente la sesión. Tanto BYE como200OKsemuevenporelprotocoloSIPnoporel
protocolo RTP
12
ocker run -d --name freepbx -p 8080:80/tcp \
d
-p 8443:443/tcp \
-p 4445:4445/tcp \
-p 4569:4569/tcp \
-p 5060:5060/udp \
-p 5061:5061/tcp \
-p 5161:5161/tcp \
-p 8001:8001/tcp \
-p 8003:8003/tcp \
-p 8008-8009/tcp \
-p 8025/tcp \
-p 5160/udp \
-p 10050/tcp \
-p 18000-18005/udp tiredofit/freepbx
13
Referencias
1. Carrier Grade Voice over IP - Daniel Collins - Mc Graw - Hill
14