Discussion:
[SR-Users] Call Group versus MAX_BRANCHES limit
João Vitor Arruda
2014-09-29 20:47:28 UTC
Permalink
Hi folks,

I have a question related with the limited number of branches being 12 in
config.h
#define MAX_BRANCHES 12 /*!< maximum number of branches per
transaction */

I am trying to implement a Call Group that consists in trying each member
of the group (that can result in a parallel forking when lookup() is used)
in sequence (similar to serial forking).

Currently I have written code that is similar to the one described here:


http://www.kamailio.org/dokuwiki/dokuphp/tutorials:avpops#serial_forking

The only difference is that for each member I call lookup() and then in the
failure_route(), I pull the next member from the stack and call lookup()
again. The code works fine when used for groups with less than 12
members. However, call groups with 12 or more members fails as I can never
reach remaining extensions once MAX_BRANCHES limit is reached.

I've tried another approach using the functions described here:


http://kamailio.org/docs/modules/4.1.x/modules/tm.html#tm.serial_forking

but it too uses a new branch for every group member until the 12 limit is
reached out.

I also tried to use the functions "remove_branch(index)" and
"clear_branches()" (both of which are poorly documented. In fact the only
reference I ever found for these functions was here:
http://www.kamailio.org/wiki/features/new-in-3.2.x#functions).
Unfortunately, I wasn't able to prevent the MAX_BRANCHES limit from being
reached.

Ultimately, my goal is to have a limitless Call Group. Do you have any
suggestions? (other than increasing the hard coded MAX_BRANCHES limit)

Thank you,
Joao Arruda
Daniel-Constantin Mierla
2014-09-30 10:28:00 UTC
Permalink
Hello,
Post by João Vitor Arruda
Hi folks,
I have a question related with the limited number of branches being 12
in config.h
#define MAX_BRANCHES 12 /*!< maximum number of
branches per transaction */
I am trying to implement a Call Group that consists in trying each
member of the group (that can result in a parallel forking when
lookup() is used) in sequence (similar to serial forking).
http://www.kamailio.org/dokuwiki/dokuphp/tutorials:avpops#serial_forking
The only difference is that for each member I call lookup() and then
in the failure_route(), I pull the next member from the stack and call
lookup() again. The code works fine when used for groups with less
than 12 members. However, call groups with 12 or more members fails
as I can never reach remaining extensions once MAX_BRANCHES limit is
reached.
http://kamailio.org/docs/modules/4.1.x/modules/tm.html#tm.serial_forking
but it too uses a new branch for every group member until the 12 limit
is reached out.
I also tried to use the functions "remove_branch(index)" and
"clear_branches()" (both of which are poorly documented. In fact the
http://www.kamailio.org/wiki/features/new-in-3.2.x#functions).
Unfortunately, I wasn't able to prevent the MAX_BRANCHES limit from
being reached.
Ultimately, my goal is to have a limitless Call Group. Do you have
any suggestions? (other than increasing the hard coded MAX_BRANCHES limit)
the easiest is probably recompiling with more branches. There was
someone saying that he is going to submit a patch on making the number
of branches more dynamic, but I haven't seen it back.

From routing point of view, you can try a workaround with:
- append 11 branches to the same sip address (see append_branch()
function) and relay
- be sure you allow traffic from server itself
- now you get 12 INVITE coming back to kamailio, so you get 12 INVITE
requests and you can set 12 different destinations for each, ending up
with 144 over-all branches in the group call
- if you need more, you can loop back again one or more of those INVITE
requests with branches pointing to same SIP address

Cheers,
Daniel
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Carlos Ruiz Díaz
2014-09-30 13:05:37 UTC
Permalink
Hi Daniel,

would it be inappropriate to increase the branch number to the maximum
possible, by default?

Regards,
Carlos
Post by Daniel-Constantin Mierla
Hello,
Hi folks,
I have a question related with the limited number of branches being 12
in config.h
#define MAX_BRANCHES 12 /*!< maximum number of branches
per transaction */
I am trying to implement a Call Group that consists in trying each
member of the group (that can result in a parallel forking when lookup() is
used) in sequence (similar to serial forking).
http://www.kamailio.org/dokuwiki/dokuphp/tutorials:avpops#serial_forking
The only difference is that for each member I call lookup() and then in
the failure_route(), I pull the next member from the stack and call
lookup() again. The code works fine when used for groups with less than 12
members. However, call groups with 12 or more members fails as I can never
reach remaining extensions once MAX_BRANCHES limit is reached.
http://kamailio.org/docs/modules/4.1.x/modules/tm.html#tm.serial_forking
but it too uses a new branch for every group member until the 12 limit
is reached out.
I also tried to use the functions "remove_branch(index)" and
"clear_branches()" (both of which are poorly documented. In fact the only
http://www.kamailio.org/wiki/features/new-in-3.2.x#functions).
Unfortunately, I wasn't able to prevent the MAX_BRANCHES limit from being
reached.
Ultimately, my goal is to have a limitless Call Group. Do you have any
suggestions? (other than increasing the hard coded MAX_BRANCHES limit)
the easiest is probably recompiling with more branches. There was someone
saying that he is going to submit a patch on making the number of branches
more dynamic, but I haven't seen it back.
- append 11 branches to the same sip address (see append_branch()
function) and relay
- be sure you allow traffic from server itself
- now you get 12 INVITE coming back to kamailio, so you get 12 INVITE
requests and you can set 12 different destinations for each, ending up with
144 over-all branches in the group call
- if you need more, you can loop back again one or more of those INVITE
requests with branches pointing to same SIP address
Cheers,
Daniel
--
Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Carlos
http://caruizdiaz.com
Loading...