[OpenSER-Devel] Question about presence service and OpenSer Presence Module

Anca Vamanu anca at voice-system.ro
Mon Jun 9 16:10:10 CEST 2008


Hi Luca,

Great to know that there is research on how to improve OpenSer presence 
server.
I prefer you send me these e-mails on the devel list. They are quite 
technical, but they might do good to someone else looking into extending 
presence server.

Luca Foschini wrote:
> Dear Anca,
>     I'm a post-doc at the University of Bologna, and I'm
> actually working on IMS and presence
> Sorry for contacting you directly and not through the mailing
> list, but as you see the question is on a specific technical
> choice rather than on the module itself.
>
>
> I'm taking advantage of your excellent work on Openser
> presence module, and I'm using it to do some experiments
> on a multidomain IMS environment.
> In particular, I'm exploring the possibility to limit inter-domain
> NOTIFY traffic. The idea is to aggregate NOTIFY messages
> due to a publish of a presentity subscribed and publishing in
> domain B (to presence server B), to subscribed watchers in
> domain A.
> The idea is that the presence server in domain B relays this
> aggregated NOTIFY message to presence server A.
> Hence, I was wondering which is the best way to achieve this
> with your presence server implementation. In particular, I've
> already modified the notify.c file to gather watchers' contacts,
> but I found it difficult to pass this information from presence
> server B to presence server A and to (re-)generate NOTIFY
> messages on presence server A (since watchers are actually
> subscribed on presence server B). For instance, is it possible
> to generate a NOTIFY message for a watcher that is actually
> not subscribed to the presence server? Otherwise, are there
> other possibilities to realize this? For example, is it possible to
> subscribe presence server A to presence server B and to keep
> it updated with watcher list changes?
>
>
> Thanks in advance for your time.
>
> Best Regards,
>     Luca Foschini
>
Let me explain the how presence server works now. Consider we have userA 
from domain A and and userB from domain B  publishing their presence 
state subscribing to each other. Then , the normal message flow will be 
like this:
userA  --------->  presence server A
             Publish

user B ----------> presence server B
             Publish

userA ----------> presence server B
          Subscribe
           userB

userB ----------> presence server A
          Subscribe
           userA


The subscribe from userA to userB will be forwarded by the proxy server 
in domain A to the  proxy and then the presence server of domain B, 
because R-URI (meaning the final destination) will point to domainB.

So, what you want is to have the proxy direct all Subscribe messages to 
the local presence server. Ok.
Now , having the presence servers exchange information in an efficient way.
There are 2 issues to consider here.
2. Respecting the privacy rules. (If you have 5 users subscribing to the 
same contact in a remote domain, it is possible to receive different 
Notifies.)
3. Minimize the the traffic

I see two ways of doing this.
I. Sending one Subscribe for each remote domain Subscribe received. So 
if there are 3 users from domain A subscribing to one user from domain 
B,  3 Subscribe messages , from behalf of all the users will be sent to 
domain B.
This is enough to solve point 1. At presence server B, the presence 
server will do the handling and decide the subscription state. However, 
it should not send one notify each since it will break 3.
When a Publish comes for a presentity, only one notify should be sent 
for the entire list of watchers from a certain domain. Here you need to 
decide upon a format of the body and not forget to include the 
authorization state also. You can choose any of the active dialogs to 
send this Notify.
And about how you should do this aggregation, I must insist on not 
changing the current presence server files but as little as possible. 
This should be designed as a configurable option or better as a module 
coming on top of presence module to monitor the lists and stop Notifies 
and aggregate.
And of course, at domain A there should be a way to interpret and devise 
this Notify. Here again I suggest a module on top, probably the same , 
to handle in coming Subscribes and sending aggregate Notifies to remote 
domain. In fact you will have the presence server of the local domain 
know nothing about the Subscribes to remote domain, as it happens now, 
and have only this module on top, store the dialogs and then send the 
notifies.
A good example on how to do this can be found in the RLS module. What 
this module does, is to receive Subscribe messages directed to a list, 
and then send a Subscribe message to the presence server of each contact 
in the list. It then captures and processes the received Notifies. This 
is sort of like what you need.

II. The second option requires more additions but less traffic.
Sending one Subscribe for a list of watchers. Here you need to decide 
upon a body for the subscribe - to hold the uri s for the watchers and 
means to signal an update of the list.
Again the best way to implement this is with a module on top. Capture 
subscribes to remote domain and transform them, and the send one 
Subscribe to the remote domain. The improvement here is that when 
refreshing Subscriptions, only one is sent, while in the first scenario 
one for each watcher.
There should be an application knowing how to process this Subscribes at 
the remote domain. One option is again to transform them in one 
Subscribe for each contact and to send them locally to the local 
presence Server and then capture the Notifies as in the first scenario. 
Most probably the easiest way. The second is to find authorization 
status for each watcher inside that application and monitor Publish 
messages. But the authorization part is quite complicated(with Notifies 
for presence.winfo).

There other ways to do this. You can choose any other. There are just 
some issues that you must keep in mind, make this an optional feature 
and be careful at presence authorization rules.
I hope my explications will help you.


regards,
Anca Vamanu


> -- 
> _________________________________________
>
> Luca Foschini, Ph.D.
> DEIS-LIA - Università degli Studi di Bologna
> Viale Risorgimento, 2 - 40136 Bologna (ITALY)
> Ph.: (+39) 051 20 93541 Fax: (+39) 051 20 93073
> E-mail: lfoschini at deis.unibo.it
> Web: http://lia.deis.unibo.it/Staff/LucaFoschini/
> _________________________________________




More information about the Devel mailing list