Sure. I'll share what I can share without giving too much of the business away.
For the most part, we use SER's modules from the 0.9.x set. However, we do use the
alias_db module from OpenSER as it's FAR easier to securely code a web-based system
that only accesses the database than it is to have to rely on ANY access to the command
line (using SER, because it places its aliases into memory, it would require us to add
them via serctl or it wouldn't pick them up (or manually add them with fifo commands
ourselves, which is out of the question. First rule of web security: thou shalt avoid ever
writing to the filesystem from the web)). The alias_db module allows us to just add
aliases during runtime to the DB. We take a tiny performance hit from that, but
considering the other DB calls that have to be made for checks and what not for every
incoming call, an extra call to check the alias is really insignificant.
One of our programmers also backported the AVP functionality from the 0.1.x OpenSER uac
module. We use this to modify the SIP comment portion of the From: header (which is
allowed under the RFC) dynamically to ensure no spoofing.
As for why we modified the db model... well... it just wasn't right for our setup. We
don't user SERWeb for anything. I'm sure it's a lovely product for basic
administration, but we have our own site code, and we use a strict OO model for coding, so
the use of any SERWeb code was out of the question.
We modified speeddial for our own purposes, so the speed_dial table had to be modified. We
use the subscriber table for the website, which started off as a way to unify information,
but then we switched to radius authentication and use the subscriber table strictly for
the web (and for referencing other tables). Of course, that meant we needed to add things
to it such as a signup IP address to keep track of user signups for statistics, we
modified some of the fields here and there for our own use. We also added a lot of tables
we need for other things, such as a call blocking table and a call return table.
We went down the road of dynamic timers, so we needed a timer table for the users'
timers. We completely redid the phonebook information, so we keep user phonebooks in a
rather complex scheme.
Of course, we have our pricing tables and what not.
And that's just the SER side. It's constantly trading information back and forth
with Asterisk, which has its own tables to handle our own billing code and proper billing
for call forwards and such, as well as information about the expirations for users'
DIDs and Voicemail.
We also have SEMS in the mix for basic voicemail and conference rooms, but we made some
modifications here and there to handle our userbase.
We use SER primarily for SIP, but we've tied it in very closely with our web
applications, so we've tied the DB all together. I'm not sure we're a normal
case in that sense, but who's to say. We may well be.
And you, Greger, I KNOW, would absolutely CRINGE at our ser.cfg. It's a massive, 40k
file of madness. Amusingly, however, it's pretty well optimised. It just has to take
a LOT of different situations into account.
N.
On Mon, 04 Dec 2006 21:45:35 +0100, Greger V. Teigre wrote
I'm trying to figure out how people use SER in
order to get a pictureof what the needs really are. My goal is to be able to group
varioususage patterns and create "best practice" areas at
iptel.org, wherepeople
also can add comments and describe their experiences.
Would you mind sharing a bit about the "mixture of SER and OpenSERmodules" you
are using, as well as why you opted to change the databasemodel?
g-)
sip wrote: Indeed. No fears there. We've already got a dedicated server on order to
testit with. Won't likely be here until the beginning of the year, but we
won'thave time to muck with it before then anyway with the usual end-of-yearmadness
going on. Very much looking forward to testing Ottendorf and trying to figure out thebest
way to migrate. As is, it will be slightly complex as we've spent a goodportion of
time redoing the SER database to our particular specifications andneeds... and many of the
tables we use have been removed or redone forOttendorf, and many of the features we rely
upon have been completely doneaway with. Also, since we use a mixture of SER and OpenSER
modules in our code, as wellas in-house modules to handle several things, migrating to
Ottendorf is goingto be an exercise in frustration and pain. :) I'm not eager to start
evenlooking at that until after the holidays. N.On Mon, 04 Dec 2006 10:39:25 +0100, Jiri
Kuthan wrote Just to make it clear, it!
is pretty much only possible with
Ottendorf if you are having a reasonably big setup. The previous timer system was not
accurate (you might have noticed, that retransmission timer fired in a range of +/- 1 sec
which is kind of unexact given the timer length 0.5 sec), variable (all timers were pretty
much supposed to be of the same length), high-resolution (it used to be 1 second).I concur
that migration is alway a painful exercise, but I can only recommendfolks to make
themselves busy with it earlier than too late.-jiriAt 23:05 01/12/2006, sip wrote:
Well... the TM bug may not be earth-shattering, but it's most decidedlyimportant. One
of the functions we have that our users LOVE is the ability toset their own timeout values
for voicemail. We had had a default value that wethought would make everyone happy, but
soon discovered that many wouldcomplain that it was too long, and many would complain that
it was too short.Having had many users who came along from asterisk-base!
d services, wheresetting individual timeout values is rather straightf
orward and easy.One of the things we've been struggling with has been the timing
values. Whileit may not be important in the scheme that it's not
ACTUALLYservice-affecting, I can assure you, if you offer a service, and it
doesn'twork as prescribed, the consequences can be deadly. You shake user-confidence--
and that sort of thing travels VERY quickly by word of mouth. It's so veryhard to gain
users, and so very easy to lose them to a competitor -- even ifthat competitor doesn't
offer the same options. For what good are options thatonly work sometimes?SO... in
short... yeah... I'm really happy that the timer stuff has been fixedin Ottendorf. Of
course, it'll be a LONG time before we can migrate theproduction systems to it, but it
gives me something to look forward to.N.On Thu, 30 Nov 2006 12:19:03 +0100, Andrei
Pelinescu-Onciul wrote On Nov 29, 2006 at 14:05, Kim Il <kim_il_s(a)yahoo.com>
wrote: this is getting more and more confusing. The one side says this is a bug, th!
e other says it is a feature. I will try to summarize my understanding till now: I
believe we better stop this line of discussion at least for now and instead concentrate on
fixing the technical problems that were revealedon both sides. I wouldn't want it to
hinder possible futurecollaboration. * openser claims that they improved something and
the ser guys say this fix is useless. Daniel, Bogdan could you plesase explain what is
reallybehind this improvement (Sorry Weiter, but your explanation is far from
beingsufficient). I don't know exactly what are you referring to
("something"?), but I don't remember claiming that an openser fix was
useless (at least I haven't, I might have implied that something, IMHO was not as
important as claimed, but not that was useless). * The ser guys show that openser is
inferior to ser but Bogdan replies this is on purpose (because otherwise a strange race
situation can occur whichAndrei tells us is negligable). Actually,!
the claim was along the lines that tm (the statefull part of the sip
stack in ser) and/or the core performance was inferior.The bug that Bogdan discovered is
not negligible. I wanted to point outthat it was not as important as suggested.This
probably deserves a better explanation, so that people withoutser-internals knowledge can
understand.First of all variable timers in this context mean the possibility toset
different values for the fr_timer and fr_inv_timer at runtime(e.g. in function of some
user preferences/avps or some special script logic) as oppossed to having some fixed (but
configurable) values.What really matters here is the fr_inv_timer. The fr_inv_timer is
thetime that ser waits for a final response on an INVITE transaction_after_ a provisional
response was received (e.g. 180 Ringing). This roughly corresponds to the Timer C from
the sip rfc (rfc3261). According to the sip rfc both fr_tiemr and fr_inv_timer should be
fixedand _not_ configurable. However in practice it makes sense to change them(especially
the fr_inv_timer), to !
implement services such as redirect to voicemail after x seconds. The most common use of
the variable timers is user (or group) configurable voicemail redirection. This means that
the user is somehow able to configure the "ringing" interval after which a
caller will be redirected to his voicemail. If variable timers are not used, the voicemail
config option would include only on or off (the ringing time before voicemail redirection
wouldn't be configurable, it would be the same for all the users). Now what the bug
did, was that it could cause the extension of fr_inv_timer to the fr_inv_timer of another
transaction, if _different_ variable timers were used and some race occured (note that the
probability of hitting the race is quite high if lots of variable fr_inv_timers with
different values are used and the system is very busy). This IMHO is not such a big
problem since in the case when you are hit by it, it really doesn't break anything
important (I don't see sometimes re!
directing later to voicemail as such a big problem, OTOH people might
use it for other stuff). * I will not get into the history discussion -which I have
already touched in previous mails, let alone those mails about respect and the other
stuff Icould not really see how they relate to this discussion. I would really
appreciate if these points were clarified -I have the impression the ball is now with
Daniel and Bogdan. So plesse Bogdan do nothold to your one mail policy and help clarifying
this and provide a bit moreof details on the improvements of openser to core and tm. I
believe Andrei has made a good suggestion that it is in the interest of the entire
community to cooperate and divide the areas of interest. Bycombining the great work the
openser guys have done in the area ofdocumentation and featutres with the work of ser in
the area of core we willall get an even better ser/openser. In fact even if we can't
reach an agreement in dividing areas, smallcooperation like on fixing/improving code that
is the same in bothvers!
ions would still be good.I would say that even a friendly competing approach would be
better thennothing (with comparisons, benchmarks a.s.o), it points out problems in both
versions and serves as a motivation to
improve.Andrei[...]_______________________________________________Serusers mailing
listSerusers@lists.iptel.orghttp://lists.iptel.org/mailman/listinfo/serusers
_______________________________________________Serusers mailing
listSerusers@lists.iptel.orghttp://lists.iptel.org/mailman/listinfo/serusers --Jiri
Kuthan
http://iptel.org/~jiri/ _______________________________________________Serusers
mailing listSerusers@lists.iptel.orghttp://lists.iptel.org/mailman/listinfo/serusers