[Freeswitch-dev] multicast presence, mwi and some registrations thoughts

Matteo mbrancaleoni at voismart.it
Wed Dec 9 02:23:52 PST 2009

Hi all,

as promised, I've created a small patch to handle PRESENCE_IN
and MWI events over multicast (using mod event multicast).

When used along registrations sharing with multicast, you
can send presence info over the mcast-bus :) and deliver
the information to the phones, even if the call is not
handled on the same switch the phone sent the subscription to.
To make it work, the sip domain must be the all for all the machines
and on the phones, otherwise the phones will ignore them.

This allows distributed BLF and MWI notifications :)

BUT doing that I noticed a issue that must be addressed imho,
which arises when you handle NAT.

"distributed blf" works behind nat right now, since
the event will get sent to all switches, but delivered
only to the phone were fs knows about the subscription.
Which is the one where the phone registers to.

"distributed mwi" results into sending N copies of
same MWI notifications , where N is the number of switches.
Behind NAT the phone will receive only the one sent
by the switch where it's registered to.

We can avoid sending multiple event if we're able to know
which is the "original" server where the phone registered to.

This is also needed to call the phone:
think about a distributed registration cluster.
if Alice (reg'ed on FS1) calls Bob on (reg'ed on FS2), right now
the call is routed from FS1 to Bob, since FS1 knows where Bob is.
This works ok without NAT.

But with NAT FS1 cannot contact Bob, because Bob is on FS2 "really"
and can receive calls from FS2 (nat pinhole).

The solution is to check where Bob is (looking to registration table),
get the "real" server and route the call from FS1 to FS2 then to Bob.

But right now, sofia registration does not have a field holding
the "original" server.
If we want to leverage on distributed registration using multicast,
I think knowing the original server is "a must".

the patch is pretty trivial, but we must add a field onto the db.

Doing that, we can also filter MWI notification, and send them
only if the phone is "really" registered on the server which receives
the MWI event over the mcast-bus .

What do you think about it?


P.S. this is my first patch to FS, so please be kind on my mistakes :)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: sofia.c.diff
Type: text/x-patch
Size: 3702 bytes
Desc: not available
Url : http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20091209/6b750999/attachment.bin 

More information about the FreeSWITCH-dev mailing list