Es áltamente recomendable separar físicamente las redes de VoIP y las redes de datos para evitar la saturación de tráfico que puede provocar cortes en el audio o algún ruido extraño de manera aleatoria al intentar completar el trozo de audio que falta entre dos tramas RTP.

No siempre esto es posible, y debemos recurir a una técnica conocida aunque no siempre muy bien dominada por muchos administradores de redes llamado QoS (Calidad de Servicio).

Este QoS permite establecer colas de paquetes en cuanto llegan y permitir acelerar aquellos paquetes que tengan más prioridad lo que se establece generalmente por una “etiqueta”.

Los terminales IP permiten, por lo general, establecer dicha etiqueta para que los paquetes que salgan del teléfono la lleven adosada y pueda ser priorizada nada más salir, pero una vez que llega al switch o al router, éste lo procesa como un paquete más a no ser que tengamos priorizado dicho paquete. Cada switch o router tiene su propio interfaz de administración de QoS, por lo que tendremos que aprender a utilizarlo si queremos poder utilizar QoS en nuestra red.

Una vez que llegan al servidor Asterisk, si este servidor tiene más servicios configurados, recibirá todos los paquetes por igual, a no ser que configuremos el QoS en nuestro Asterisk.

Para hacer esto, utilizaremos la herramienta ‘traffic control’ también conocida como ‘tc’.

Para poder crear las colas de prioridades, lo primero es saber qué tipos de prioridades podemos configurar. Hay 16 tipos diferentes:

1: 0x00: no QoS is set -> to 3rd queue (2)

2: 0x02: Mimimize Monetary Cost (MMC) (2)

3: 0x04: Maximize Reliability (MR) (2)

4: 0x06: MMC + MR (2)

5: 0x08: Maximize Throughput (MT) (2)

6: 0x0a: MT + MMC (2)

7: 0x0c: MT + MR (2)

8: 0x0e: MT + MR + MMC (2)

9: 0x10: Minimize Delay (MD) (1)

10: 0x12: MD + MMC (1)

11: 0x14: MD + MR (1)

12: 0x16: MD + MMC + MR (1)

13: 0x18: MD + MT (1)

14: 0x1a: MD + MT + MMC (1)

15: 0x1c: MD + MT + MR (1)

16: 0x1e: MD + MT + MR + MMC (0)

De todas estas, las señaladas en negrita son las que suelen implementar los terminales IP, por lo que tendremos que configurarlas en las colas que vamos a crear:

tc qdisc add dev eth1 parent 1:1 handle 10: sfq limit 3000
tc qdisc add dev eth1 parent 1:2 handle 20: sfq
tc qdisc add dev eth1 parent 1:3 handle 30: sfq

Con esta configuración, crearemos una cola para unos 3000 paquetes como máximo y la mayoría de los paquetes irán por la cola número 3.

Si queremos que los paquetes IAX vayan por la primera cola, deberemos decirle que, todos los paquetes que provengan del puerto 4569, vayan por la cola número 1:

tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip dport 4569 0xffff flowid 1:1
tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip sport 4569 0xffff flowid 1:1
tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip tos 0x10 0xff flowid 1:2

Y con esto, tendremos el protocolo IAX priorizado al máximo mientras todos los demás van por la cola menos prioritaria. Con el protocolo SIP y el RTP, pasaría lo mismo pero habría que cambiar de puertos a los definidos en sip.conf (por defecto al 5060) y en rtp.conf (por defecto entre el 10.000 y el 20.000).

Para poder ver unas estadísticas del tráfico, tan solo tenemos que ejecutar:

tc -s qdisc ls dev eth1

Si después de hacer estos cambios queremos dejarlo todo como estaba, (sin colas configuradas) únicamente tendremos que limpiarlas:

tc qdisc del dev eth1 root

Espero que esto os ayude cuando no podais separar las redes de VoIP y las de datos.

Enlace: http://www.tweako.com/qos_and_traffic_shaping_for_voip_users_using_iproute2_and_asterisk

5 Comentarios

  • Usando la gestión de colas en nuestro linux, como explicas, ¿seguiría haciendo falta configurar el Qos en el switch y los teléfonos?

  • Buenas Jose Miguel,

    Pues está claro que si quieres QoS dentro de la red, tendrás que configurarlo desde los teléfonos y de nada serviría si en el switch no lo tienes priorizado.
    En el terminal etiquetas el paquete y en el switch le das prioridad.

    No obstante, el artículo es para el caso en que tuvieras toda la red montada con switches (o una red paralela e independiente) y utilizas Asterisk también como gateway de salida a Internet para otras conexiones además de para la VoIP, entonces la salida de paquetes de VoIP irán priorizadas.

  • Yo quiero aplicar Qos en la siguiente situación:

    Una misma red física, donde hay tráfico de datos de y de Voip, sin VLAN´s. El Asterisk ni realiza, ni recibe llamadas desde internet. Las llamadas con el exterior son a través de primarios.

    En la red local, me gustaría dar mayor prioridad a los paquetes de voip que a los de tráfico de datos. Entiendo entonces, que únicamente tendría que configurar el QoS en los teléfonos y los switches, no haciendo falta configurar en el servidor de asterisk, lo que se explica en el articulo(tc), ¿verdad?.

  • Claro, eso siempre y cuando te encuentres con alguna estructura de red que realmente tenga un cuello de botella, porque de estar todos los switches al mismo nivel conectados entre sí por enlaces Gigabit o 10Gigabit, no sería necesario QoS ya que no habría colisión de paquetes.

  • Hola Elio, buenas tardes

    Me puedes explicar que hace el terminal ip cuando habilitas la qos. Marca el paquete? Cuando haces esto ¿ya no necesitas VLAN?

    Necesito separar el trafico de voz y data, pero estoy usando softphone y no veo como hacerlo pues mis switches hacen vlan por puerto (seria el mismo para el PC y el Softphone) o por el feature voice VLAN (reconoce por la MAC del telefono, lo cual no tengo porque uso softphone)

Archivos

© 2014 Sinologic, inc. All rights reserved.

Menú

Redes sociales