- SyR Consultoría
- 31 mayo 2022
- 10:00
Entendiendo el Least Cost Routing
En telefonía (aunque también aplica para el tránsito SMS), el Least Cost Routing (LCR) es el proceso de selección de la ruta más económica para cada llamada procesada.
De manera simple, ese proceso para por lo siguiente:
- Todas las tarifas de proveedores se cargan en un sistema de enrutamiento (un softswitch en nuestro caso)
- El software normaliza (convierte al mismo formato) todas esas tarifas
- Cuando una llamada llega al sistema, se manda una consulta al motor de enrutamiento para saber cómo proceder
- El motor de enrutamiento analiza el número marcado, consulta el prefijo en las tablas cargadas y elige el proveedor que da el coste más bajo para dicho prefijo (esto pasa en milisegundos)
- La llamada se envía por dicho proveedor y si da error, el motor de enrutamiento vuelve a elegir el siguiente proveedor más barato
En más detalle...
Normalización de prefijos
Los prefijos telefónicos se basan en un estándar pero no se desglosan al mismo nivel entre proveedores. Una región determinada puede tener más o menos prefijos o con más o menos detalle según el proveedor.
Esa diferencia de detalle es la que hace necesario superponer todas las listas para manejar una definición interna que englobe todos los casos de los proveedores.
Prefijo | Destino | Precio | |
---|---|---|---|
Carrier A | 34 | España | 0,006 |
Carrier B | 34 | España | 0,007 |
Carrier B | 346 | España móvil | 0,02 |
De acuerdo a la tabla de arriba, al recibir una llamada a un móvil español el sistema encontrará dos precios de dos carriers (la primera y última línea de la tabla). En base a esos valores, enrutará la llamada en primer lugar por el carrier A.
Best match
La selección de prefijo se basa en el «best match», que significa la mejor correspondencia. Si un móvil español, el 34686XXXXXX se compara con los prefijos cargados de la lista de arriba, encontraremos que 346 es el prefijo con mejor correspondencia, seguido del 34.
Veámoslo mejor en el siguiente ejemplo:
Prefijo | Destino |
---|---|
34 | España |
346 | España móvil |
34686 | España móvil Movistar |
El número 34686XXXXXX que comentábamos arriba se enrutará en base a la línea España móvil Movistar. El hecho es que hace match con las tres líneas de la tabla pero 34686 es el prefijo mayor con el que hace best match.
Una llamada al 34607XXXXXX, por ejemplo, hará match con el 346 como best match, aunque también habría hecho match con el 34.
Enrutamiento por precio
Cada destino tiene su propio precio. Añadamos la columna de precio al ejemplo de arriba y un nuevo destino:
Prefijo | Destino | Precio |
---|---|---|
34 | España | 0,0024 |
346 | España móvil | 0,0895 |
34686 | España móvil Movistar | 0,0895 |
39 | Italia | 0,0018 |
393 | Italia móvil | 0,1150 |
39373 | Italia móvil H3G | 0,1150 |
Más de una opción para un destino
Lo normal es tener más de un proveedor para cada destino y con diferentes precios. Vamos a añadirlos a la tabla de ejemplo:
Prefijo | Destino | Carrier 1 | Carrier 2 | Carrier 3 |
---|---|---|---|---|
34 | España | 0,0024 | 0,0027 | |
346 | España móvil | 0,0895 | 0,0891 | 0,0885 |
34686 | España móvil Movistar | 0,0895 | 0,0891 | 0,0880 |
39 | Italia | 0,0018 | 0,0020 | 0,0021 |
393 | Italia móvil | 0,1150 | 0,1170 | |
39373 | Italia móvil H3G | 0,1150 | 0,1170 |
Podemos ver tres rutas diferentes para España e Italia. No todos los carriers dan precio para todos los destinos. En función de los números marcados el sistema hará una búsqueda entre una cierta combinación de precios para prefijos. Buscará, entonces, la mejor correspondencia de prefijo que tenga precio y, de esos precios, seleccionará en primer lugar el más bajo.
Ese ejemplo tan sencillo de arriba se puede complicar enormemente cuando trabajamos con múltiples listas de precios de carriers. Podemos juntar más de 100.000 líneas en una tabla que el switch tenga que consultar constantemente para cada llamada a cursar. A pesar de todo, estos sistemas cuentan con algoritmos de búsqueda que les permiten hallar resultados en unos 20 milisegundos.
En resumen
El LCR es el modelo más usado para seleccionar rutas. Para que funcione correctamente es necesario:
- Tener actualizadas las tarifas
- Ser rápido
- Normalizar los distintos prefijos y generar una tabla de enrutamiento
- Usar el prefijo más largo al elegir enrutamiento
- Devolver una opción de enrutamiento en secuencia de precio creciente
Los desafíos del LCR
Tamaño de la tabla de enrutamiento
El tamaño de la tabla de enrutamiento puede ser un problema en caso de que dichas tablas se creen de manera estática. Si es el caso, grandes tablas con muchísimos datos requieren de mucha RAM para estar disponibles en cada consulta a realizar.
Cosa diferente es si las tablas se crean de manera dinámica, porque esa composición se ajustará el número buscado y no requerirá apenas de memoria RAM.
Calidad de servicio
Lo barato sale caro. Supongo que podría terminar la sección con esa frase y se entendería todo lo que quiero decir. Los precios bajos de algunos carriers conllevan niveles de calidad con los que podemos no estar conformes. Esto es algo a tener en cuenta porque el switch mandará las llamadas prioritariamente por esos carriers.
Portabilidad
La portabilidad numérica móvil (MNP) determina que no todo el tráfico que enrutamos en base a un prefijo pertenece, realmente, a ese operador móvil. Por lo tanto, nuestro carrier puede cobrarnos las llamadas a números portados con un precio muy diferente y eso puede afectar a nuestra rentabilidad.
¿Cómo controlarlo?, manteniendo una tabla de números portados para que se trate con mayor prioridad que la tabla de enrutamiento como tal. Esta tabla de portabilidad será la que diga a qué operador pertenece, realmente, el número marcado.
Capacidad del carrier
¿Qué pasa cuando, por precio, mucho de nuestro tráfico debe de ir a un carrier y éste no soporta más de X llamadas simultáneas? Lo mejor que puede pasar (en serio) es que nos las rechace y podamos reenrutarlas. Lo peor que puede pasar es que el carrier las desborde por rutas de peor calidad y paguemos paletilla a precio de jamón ibérico (los españoles me entenderán).
Y cuidado...
Lo siguiente es algo que en cada país tendrá su propio nombre y todos habremos sabido de alguien a quien se lo han hecho.
¿Qué pasa cuando en tu lista de precios de venta te falta algún prefijo de línea móvil y, técnicamente, estás tarificando ese destino como fijo? Si alguien sin escrúpulos te detecta esa «vulnerabilidad», te va a enviar un montón de tráfico a ese prefijo que venderás como fijo y, a lo peor, estarás comprando como móvil.
Es decir, la tabla de enrutamiento tiene que estar muy bien hecha para garantizar que no hay fisuras y que, en ella, todos los prefijos están bien asignados al proveedor y precio adecuado.