Estrategia "linear" en Asterisk 1.4

88 views
Skip to first unread message

Manuel Rubio

unread,
Dec 1, 2008, 9:24:36 AM12/1/08
to aster...@googlegroups.com
Hola,

de últimas, he necesitado usar una estrategia como "linear", pero no tenía
intenciones (aún) de pasarme a la rama 1.6 de asterisk, por lo que he
realizado un pequeño "backport" para dar esta estrategia a asterisk 1.4.

Comparto el patch con todos, por si queréis usarlo.

La aplicación es, desde el directorio:

patch -p1 < linear.app_queue.c.diff

Un saludo.

--
Manuel A. Rubio "Bombadil"
Usuario de GNU/Linux #323628 acorde a http://counter.li.org/
Técnico en Admin. Sistemas Informáticos

linear.app_queue.c.diff

Elio Rojano

unread,
Dec 1, 2008, 12:27:37 PM12/1/08
to aster...@googlegroups.com
Igual me equivoco, pero la estrategia "linear" en 1.6 no es la conocida como "rrmemory" en 1.4?
--
http://www.sinologic.net/

Saúl Ibarra

unread,
Dec 2, 2008, 1:25:59 AM12/2/08
to aster...@googlegroups.com
2008/12/1 Elio Rojano <hel...@gmail.com>:

> Igual me equivoco, pero la estrategia "linear" en 1.6 no es la conocida como
> "rrmemory" en 1.4?
>

Creo que no, en la 1.6 desaparece la roundrobin,pero rrmemory se queda, no?

Muy buena Manuel! Lo has comentado en la lista de delopers de
Asterisk? Igual podrian dejar el parche por ahi, como el de devstate y
tal... ;)


--
Saúl -- "Nunca subestimes el ancho de banda de un camión lleno de disketes."
----------------------------------------------------------------
http://www.saghul.net/

Elio Rojano

unread,
Dec 2, 2008, 3:15:50 AM12/2/08
to aster...@googlegroups.com
Cierto, cierto... fue escribir ayer en la lista y darme cuenta del cambio, aunque aún no llego a entender la diferencia entre Linear y roundrobin

RoundRobin: A -> B -> C -> D -> A -> B -> C -> D -> ...
Linear: ???

2008/12/2 Saúl Ibarra <sag...@gmail.com>



--
http://www.sinologic.net/

Saúl Ibarra

unread,
Dec 2, 2008, 3:29:14 AM12/2/08
to aster...@googlegroups.com
On Tue, Dec 2, 2008 at 9:15 AM, Elio Rojano <hel...@gmail.com> wrote:
> Cierto, cierto... fue escribir ayer en la lista y darme cuenta del cambio,
> aunque aún no llego a entender la diferencia entre Linear y roundrobin
>
> RoundRobin: A -> B -> C -> D -> A -> B -> C -> D -> ...
> Linear: ???

Pero el RRmemory no se 'acordaba' cuando un agente no coge y salta al siguiente?

Manuel Rubio

unread,
Dec 2, 2008, 3:29:39 AM12/2/08
to aster...@googlegroups.com
Hola Elio,

El Tuesday 02 December 2008 09:15:50 escribió:
> Cierto, cierto... fue escribir ayer en la lista y darme cuenta del cambio,
> aunque aún no llego a entender la diferencia entre Linear y roundrobin
>
> RoundRobin: A -> B -> C -> D -> A -> B -> C -> D -> ...
> Linear: ???

según el código, RoundRobin se aplica indiferentemente de la llamada entrante.
Por ejemplo, si mezclamos las llamadas de una campaña, las llamadas entrantes
las ponemos como 1, 2 y 3, y los agentes como "a", "b" y "c".

RoundRobin:

1-a
1-b
2-c
2-a
2-b
3-c

Como puedes ver, RoundRobin balancea la salida a los agentes, da igual la
entrada. En cambio:

Linear:

1-a
1-b
2-a
2-b
2-c
3-a

Este se comporta de forma que siempre, siempre, comienza por el miembro 1,
después el 2, el 3... Es lo mismo que se consigue usando el penalty y
cualquier otra estrategia, de modo que solo salta a los demás agentes (b y c)
en caso de que "a" no pueda cogerlo.

Manuel Rubio

unread,
Dec 2, 2008, 5:29:10 AM12/2/08
to aster...@googlegroups.com
Hola Elio,

El Tuesday 02 December 2008 07:25:59 escribió:
> 2008/12/1 Elio Rojano <hel...@gmail.com>:
> > Igual me equivoco, pero la estrategia "linear" en 1.6 no es la conocida
> > como "rrmemory" en 1.4?
>
> Creo que no, en la 1.6 desaparece la roundrobin,pero rrmemory se queda, no?
>
> Muy buena Manuel! Lo has comentado en la lista de delopers de
> Asterisk? Igual podrian dejar el parche por ahi, como el de devstate y
> tal... ;)

Puf!, la verdad es que estuve en esa lista, pero me daba pereza leer tanto
mensaje en inglés, al igual que tener que escribirlos, nunca sé si me estoy
expresando correctamente... tengo mi inglés algo oxidado :-P

Elio Rojano

unread,
Dec 2, 2008, 7:45:51 AM12/2/08
to aster...@googlegroups.com
El rrmemory justamente era el que se acordaba, era el roundrobin el que no recordaba y volvía a saltar al primero de la cola...

Por el comentario de Manuel Rubio, el rrmemory ha pasado a llamarse roundrobin y el linear es el antiguo roundrobin.

Poniendo el caso de número de llamadas recibidas:

1.4 roundrobin : A > B > C > D  (A recibirá más llamadas que B y este más llamadas que C y este ...)
1.4 rrmemory : A = B = C = D (A recibirá las mismas llamadas que B y este las mismas que C ... y siempre se buscará que todas tengan el mismo numero de llamadas)

1.6 roundrobin : A = B = C = D (A recibirá las mismas llamadas que B y este las mismas que C ... y siempre se buscará que todas tengan el mismo numero de llamadas)
1.6 linear : A > B > C > D (A recibirá más llamadas que B y este más llamadas que C y este ...)

¿No?

2008/12/2 Saúl Ibarra <sag...@gmail.com>



--
http://www.sinologic.net/

Manuel Rubio

unread,
Dec 3, 2008, 4:06:56 AM12/3/08
to aster...@googlegroups.com
Hola Elio,

El Tuesday 02 December 2008 13:45:51 escribió:
> Por el comentario de Manuel Rubio, el rrmemory ha pasado a llamarse
> roundrobin y el linear es el antiguo roundrobin.
>

> ¿No?

no exactamente. El roundrobin (sin memoria) balancea la llamada, en cambio el
linear no... si el roundrobin sin memoria fuese igual al linear... el patch
sería una tontería :-P ... casi sería mejor haber hecho el patch quitando el
nombre de roundrobin por el de linear :-D

Elio Rojano

unread,
Dec 3, 2008, 4:26:17 AM12/3/08
to aster...@googlegroups.com
Tenía entendido que el roundrobin (sin memoria) de la 1.4 no balancea las llamadas... sería similar a algo como:

exten=>_XXX,1,Dial(SIP/A,15,m)
exten=>_XXX,2,Dial(SIP/B,15,m)
exten=>_XXX,3,Dial(SIP/C,15,m)

En cambio el rrmemory sí que balancea entre estos pero siguiendo el orden establecido de manera que en el caso que tengamos 3 members, si reciben 6 llamadas, cada member ha recibido 2 llamadas.
--
http://www.sinologic.net/

Saúl Ibarra

unread,
Jan 26, 2009, 6:40:32 AM1/26/09
to aster...@googlegroups.com
Refloto esto para comentar un tema:

Echando un vistazo a tu parche. Manuel, parece incompleto: has creado
parámetros adicionales que luego no se han utilizado...

Yo en su día necesité la estrategia linear, pero como no tenía mucha
idea del tema hice el cambio en la línea del container (poner 1 en
lugar de 37, que me comentaron en la lista de developers) y la cosa
funcionó. El tema es que ese cambio (poner ese 1 siendo la estatégia
RRMemory) lo que provoca es que el orden de los agentes sea
secuencial, es decir, que si primero entra el agente 1, luego agente2
y luego agente3 el orden sea agente1->agente2->agente3.

Buscando este parche en google me he encontrado con el backport de
digium (http://bugs.digium.com/file_download.php?file_id=16039&type=bug)
en el bug de la inclusión de linear
(http://bugs.digium.com/view.php?id=7279) y veo que tiene bastantes
más cosas.

Viendo las diferencias entre ambos, parece que el que subiste le falta
un trozo. ¿Es así? ¿Qué opinas del que hay en el bugtracker de digium?


Thanks!

Reply all
Reply to author
Forward
0 new messages