[Devel] Re: [Users] Call-specific AVP DBS storage for OpenSER
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Thu Jan 19 12:34:31 CET 2006
Hi Joachim,
Joachim Fabini wrote:
>Hi Bogdan,
>
>
>
>>First we have to make a clear distinction between whom the
>>AVP belong to (an identification in order to find it 0
>>this is more an abstract aspect) and where the AVP is kept:
>>
>>
>
>
>
>> - identification: there are currently two ways of
>>identifying an avp
>>- either as belonging to a user (user and domain), either via an uid
>>(unique ID). What is the meaning of the uid, it's a matter of
>>interpretation for the user - it may be a domain ID, a dialog ID
>>...whatever... I thing this identification mechanism gives
>>full liberty.
>>Actually identifying ans AVP based on user at domain is a
>>special case of a UID, where the UID is the a sip uri (this
>>just an simplification for one of the most used case).
>>
>>
>
>The unique ID is the first requirement, so far everything OK.
>
>
there is this feature - you can load or store an AVP based on uid
instead of user/domain.
>
>
>> - where the AVP id kept - currently they are kept into
>>transactions.
>>So they are accessible only their transaction is currently is
>>progress and their lifetime is the same as the transaction's
>>one.
>>
>>
>
>I see. Unfortunately, there are many cases when it is required
>to have AVPs available for the duration of a dialog or, even
>more severe, for the duration of a user registration.
>
>The only way how we can store and retrieve this information
>right now is to store the corresponding AVPs into the DBS
>table.
>And here is the REAL problem: We can not use call-dependent
>data (e.g., the call-id) as a NAME to store and retrieve
>data. I.e., with the current avp_db_load and avp_db_store
>interfaces we are not able to retrieve call-dependent information
>from the DBS.
>
>
I guess the problem is that in script you have only static avp name and
you need dynamic name, right?
>
>
>>Now...about improvements.....For identifications....I would say it
>>covers all cases..no idea what can be added - any suggestions
>>are welcome.
>>
>>
>
>You're right, as long as the AVP is required only during the
>transaction.
>
>
>
>>regarding the AVP location..this is a different story - I was
>>thinkings about adding new support: AVP per script (the AVP
>>belong to the script - kind of script variables and may be used
>>for temporary ops)
>>and global AVP ( present in all the time, in all places - no
>>restrictions; may be used to control the overall behaviour of
>>the proxy).
>>
>>
>
>The global AVP seems interesting (e.g. for storing Registration-
>lifetime AVPs), I do not see the immediate use for script-scoped
>variables but might miss something.
>
>
per script AVP may be used as temporary AVPs to perform some script
processing.
>
>
>>And maybe
>>(again...maybe) in the future AVP per dialog (they belong to
>>a dialog).
>>
>>
>
>THIS is exactly what can solve our problem. Our call-id-based
>name for the persistently-stored AVP is just a work-around for
>not having dialog-scoped AVPs available.
>
>So, thinking about a short-term solution for globally-scoped
>AVPs one question: is there a specific reason why the AVP module
>disallows/does not implement the use of transaction-specific
>AVP _VALUES_ as key/name of the database-stored AVP?
>Like written in my initial mail, I'd like to be able to do
>something like:
>
>avp_db_store("s:myTmpHeaderName","s:myTmpHeaderValue");
>or
>avp_db_store("$hdr(call-id)","s:myTmpHeaderValue");
>
>Afai understand your writing, the AVP concept allows
>any unique identifier to be used as name for database-
>stored AVPs.
>I'm considering here just avp_db_load and avp_db_store!
>Is there any specific reason why the above-mentioned
>usage for AVP names is not implemented?
>
>To summarize: Our extensions and our use of OpenSER might
>be slightly proprietary and different from what other users
>do, but we realized the need to have AVPs at other scope
>than transaction, too.
>Specifically, the following lifetimes are currently needed
>for our AVPs (I guess, there are other developers, too,
>that will come into the same situation):
>
>1. AVP lifetime dialog
>2. AVP lifetime registration (or per-contact, or global
> scope with ability to use
> call variables as name)
>
>
ok - so having dynamic AVP names will be a first step....sounds
reasonable and useful.
>
>
>>Hope I manage to bring some light ;)
>>
>>
>
>Definitely, but it raised again some new questions.
>
>
At least we have some progress ;)
regards,
bogdan
>Thanks again for your help,
>regards
>--Joachim
>
>
>
More information about the Devel
mailing list