Ok, so rfc3263 defines what the user agent should do when a 503 reply, or no reply is received.
What about the rest of the possible SIP replies?
We use several different ITSP's. I just checked the logs for our last 50,000 calls from all of them and there was a total of 19 different replies received.
They are:
200,400,401,403,404,408,410,480,484,486,487,488,500,501,502,503,504,603
Some of these can occur under normal conditions, 486 is busy for example, or 487 is generated by a CANCEL.
What about the rest? Most of the rest can be classified as error conditions. Are you saying that if another error condition besides 503 is received that you don't do failover? Why?
Douglas.
----- Original Message ----
From: Bogdan-Andrei Iancu <bogdan(a)voice-system.ro>
To: Douglas Garstang <dougmig33(a)yahoo.com>; users openser.org <users(a)openser.org>
Sent: Friday, February 15, 2008 5:56:45 AM
Subject: Re: [OpenSER-Users] Failover using NAPTR/SRV
Of course it is.....by IETF - see RFC3263.
4.3 Details of RFC 2782 Process
Regards,
Bogdan
Douglas Garstang wrote:
> Well that's weird. What do you mean by 'fail'? I thought dns_blacklist
> was used when a 503 response was received? What if the connection
> times out? What if another negative reply is received? Is this stuff
> documented anywhere?
>
> ----- Original Message ----
> From: Bogdan-Andrei Iancu <bogdan(a)voice-system.ro>
> To: Tobias Lindgren <tobias.lindgren(a)ip-only.se>
> Cc: users(a)openser.org
> Sent: Thursday, February 14, 2008 3:25:33 AM
> Subject: Re: [OpenSER-Users] Failover using NAPTR/SRV
>
> Hi Tobias,
>
> if you have "dns_backlist=yes" in your config, if one of the destination
> server fails (according to SIP definition), it's IP will be added to a
> temporary blacklist (for 4 minutes) and not used. So, openser should do
> dns-based failover and use the next entry provided by NAPTR/SRV/A lookup.
>
> Regards,
> Bogdan
>
> Tobias Lindgren wrote:
> > Hi all,
> >
> > I've been trying to find this information but I cannot find any exact
> > specifications on how it really works.
> >
> > >From what I know using NAPTR/SRV records with OpenSER will allow
> it to
> > find and use servers behind those DNS-records. This works just fine.
> >
> > However, what I'm not sure about is what actually will happen in
> OpenSER
> > when one of two servers in this scenario would fail.
> >
> > For example, I have two servers as SRV where one is primary and one is
> > secondary for SIP/UDP. What will happend in OpenSER when the primary
> > server is down? Will OpenSER continue to send all request first towards
> > that server or will it learn that one server is down and always send
> > requests to the second server for a period of time and try the primary
> > one just occassionally?
> >
> > Please direct me to any page where this is explained in detail, if such
> > page exists.
> >
> > Br,
> > /Tobias
> >
> > _______________________________________________
> > Users mailing list
> > Users(a)lists.openser.org <mailto:Users@lists.openser.org>
> > http://lists.openser.org/cgi-bin/mailman/listinfo/users
> >
> >
>
>
> _______________________________________________
> Users mailing list
> Users(a)lists.openser.org <mailto:Users@lists.openser.org>
> http://lists.openser.org/cgi-bin/mailman/listinfo/users
>
>
> ------------------------------------------------------------------------
> Never miss a thing. Make Yahoo your homepage.
> <http://us.rd.yahoo.com/evt=51438/*http://www.yahoo.com/r/hs>
Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now.
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
Thanks for the comments, I?aki and Robert.
I have a tech support ticket open with the SIP Trunk provider. I'll let you
know what we figure out. Their engineers won't be in for another 12 hours,
so it might have to wait until then.
Eric
Hi, if I send a un-SUBSCRIBE:
------------------------------------------------------------------
SUBSCRIBE sip:OPENSER_IP SIP/2.0
To: <sip:piru@domain.org>;tag=10.30692.1202986670.2
From: <sip:angel@domain.org>;tag=utxpu
Accept: application/pidf+xml
Event: presence
Expires: 0
------------------------------------------------------------------
then OpenSer replies with a 202 OK:
------------------------------------------------------------------
SIP/2.0 202 OK
Expires: 0
------------------------------------------------------------------
and later OpenSer sends me a NOTIFY:
------------------------------------------------------------------
NOTIFY sip:angel_aliax_net@212.121.235.18:5060 SIP/2.0
To: sip:angel@domain.org;tag=utxpu
From: sip:piru@domain.org;tag=10.30692.1202986670.2
Event: presence
Subscription-State: terminated;reason=timeout
Content-Type: application/pidf+xml
<?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:piru@domain.org">
<tuple id="mzlben">
<status>
<basic>open</basic>
</status>
</tuple>
</presence>
------------------------------------------------------------------
My question is: why OpenSer sends the pidf+xml body in the NOTIFY? it's
obvious that the user has no interest in the presence status of that contact.
Maybe it's RFC mandatory?
--
Iñaki Baz Castillo
ibc(a)in.ilimit.es
Hi, CDRTool can calculate the price of a call involving various spans (rates).
But it does it wrongly since the start time for each span is set to the start
time of the call, so the price is much higher than the correct one.
An example: This is a call of more than 3 days of duration. Note that in spans
2, 3 and 4 the "StartTime" is 2008-02-16 15:57:05 in all (the start time of
the call), and note also that the "Duration" of spans 2, 3 and 4 are the sum
of each span and its previous spans:
--
Span: 1
Duration: 28975 s
StartTime: 2008-02-16 15:57:05 (Europe/Madrid)
ProfileId: 01 Festivo for weekend
RateId: Reducida for 0-24h
Rate: 0.0100 / 60 s
Price: 4.8292
--
Span: 2
Duration: 115375 s <---- WRONG !!!
StartTime: 2008-02-16 15:57:05 (Europe/Madrid) <---- WRONG !!!
ProfileId: 01 Festivo for weekend
RateId: Reducida for 0-24h
Rate: 0.0100 / 60 s
Price: 19.2292
--
Span: 3
Duration: 144175 s <---- WRONG !!!
StartTime: 2008-02-16 15:57:05 (Europe/Madrid) <---- WRONG !!!
ProfileId: 01 Laboral for weekday
RateId: Reducida for 0-8h
Rate: 0.0100 / 60 s
Price: 24.0292
--
Span: 4
Duration: 229878 s <---- WRONG !!!
StartTime: 2008-02-16 15:57:05 (Europe/Madrid) <---- WRONG !!!
ProfileId: 01 Laboral for weekday
RateId: Normal for 8-22h
Rate: 0.0300 / 60 s
Price: 114.9390
--
Total: 163.0765
--
Iñaki Baz Castillo
Oups, I seemed to have my maillist-subscription disabled so I never
got the answers....
I seems like we dont agree on the interpretation of the txn handling
for invite. Sure, there is a timer for handling retransmitted responses,
but thats in earlier states than Terminated.
Sure, there is nothing that says that the inner workings of your
transactions
must exactly behave as the statemachine diagrams in the rfc as long as the
external behavior stays the same, but still, I think that the ACK for 2xx
should not match the INVITE txn.
(It probably boils down to how rfc-isch you want to be.)
>The end-to-end ACK establish a separate transaction (RFC 3261) and these
>ACKs are not match as part of the INVITE transactions, but correlated
>with them.
[TQ]
Where does it say that ACKs establish a separate transaction?
There is no defined ACK transaction, only INVITE/nonInvite, server and
client.
The ACK is either a part of the INVITE txn, or its a separate request,
but I would
never call it a standalone transaction.
The real purpose of txn's (in my view), is to enable/simplify forking,
and to
handle retransmissions. Retransmissions of ACK and 2xx, are done by the
UAC/UAS,
so there is no need for a ack-txn.
>but even describe the wait timer. So, there is no contradiction.
[TQ]
I'd say there is. Where does it describe that this wait-timer should be
used for all responses, or for matching ALL acks?
My two main reasons for saying that ACKs for 2xx should not be matched,
come from the following two texts. (17.1.1.2, and 17.2.1)
17.1.1.2 (client invite txn)
The client transaction MUST be destroyed the instant it enters the
> "Terminated" state. This is actually necessary to guarantee correct
operation. The reason is that 2xx responses to an INVITE are treated
differently; each one is forwarded by proxies, and the ACK handling
in a UAC is different. Thus, each 2xx needs to be passed to a proxy
core (so that it can be forwarded) and to a UAC core (so it can be
acknowledged). No transaction layer processing takes place.
Whenever a response is received by the transport, if the transport
layer finds no matching client transaction (using the rules of
Section 17.1.3), the response is passed directly to the core. Since
the matching client transaction is destroyed by the first 2xx,
> subsequent 2xx will find no match and therefore be passed to the
core.
[TQ]
It even says "actually nessesary to guarantee...."
Since the txn's are there to (among other things) absorb retransmissions,
the receiving the 2xx MUST destroy the txn, so that when the next
retransmission
of 2xx is received, it is not consumed by the txn layer.
This is what your txn-layer does for 3++ right? Any additional 3++
received on
a txn while waiting for Timer D to expire, will just be consumed, and
the proxy
core will never have to process it.
17.2.1. (server invite txn)
The purpose of the "Confirmed" state is to absorb any additional ACK
messages that arrive, triggered from retransmissions of the final
response.
..snip...
Once the transaction is in the "Terminated" state, it MUST be destroyed
immediately.
[TQ]
The Confirmed state is there to absorb retransmissions, not the terminated.
When receiving 2xx you go directly to terminated bypassing confirmed.
Also, in 18.2.1 the text explicitly says:
.. Note that when a UAS core sends a 2xx response to INVITE,
the server transaction is destroyed. This means that when the ACK
arrives,
there will be no matching server transaction, and based on this rule,
the ACK is passed to the UAS core, where it is processed.
Thats faily clear right? :-)
The think that puzzles my a little bit though, is that you must have added
"extra" code for this matching...?
I mean, you're using the ;branch=z9xxxx for transaction matching right, if
its there? And the ACK for 2xx doesnt have the same branch, indicating a
"new txn".
So matching ALL ACKs would imply that for any ACK that doesnt match a txn,
your really checking up Call-Id's, tags and stuff, just to be able to match
this ACK to the 2xx?
Or are you checking callid's, cseq's, tags, and stuff, for ALL requests
in your
txn matching?
Now, I been working on a sip-stack the last few years myself, and I
naturally
know that there is often a need to match the ACK, and the stack I've
build has
similar functions, it just doesnt do it on the txn layer, where we try
to be as
RFC-isch as possible.
What I would like, is simply have some function-parameters to the
t_check_trans(<param>),
or even better in my little mind, a "modparam("tm", "ack_2xx_matching", 1)".
I am looking forward to hearing your reply, and in the mean time,
thanks to all of you developers for an extraordinary software :-)
Regards
Taisto Qvist
> Hi guys,
>
> Just to bring some clarifications on the TM module.
>
> once a transaction is completed (negative or 2xx reply), it is put on
> wait (wait timer - see RFC3261) for catching any potential
> retransmissions of replies.
> So, the transaction is completed, but not removed from memory - RFC does
> not say that you need to trash immediately all the transaction
> information, but even describe the wait timer. So, there is no
> contradiction.
>
> The ACK (for 2xx)catching is done based on the completed INVITE
> transaction (from wait timer) - nothing else.
>
>
> Inaki, could you please detail what you mean by:
>
> <quote>
> In my opinion OpenSer does a special treatment for ACK in tm mode,
even if
> they are for failed transaction (hop-by-hop ACK's) or succesfull INVITE
> (end-to-end ACK's).
>
> </quote>
>
> Maybe I can explain you more if I understand you question....
>
> Regards,
> Bogdan
Hello All!
Right now OpenSER generates Acc-Session-Start when "200 OK" message
arrives. I need to generate Acc-Session-Start exactly in that moment
when INVITE received (I can't need to wait for answer from other
side).
So how can I do it?
--
With best regards!
Of course it is.....by IETF - see RFC3263.
4.3 Details of RFC 2782 Process
Regards,
Bogdan
Douglas Garstang wrote:
> Well that's weird. What do you mean by 'fail'? I thought dns_blacklist
> was used when a 503 response was received? What if the connection
> times out? What if another negative reply is received? Is this stuff
> documented anywhere?
>
> ----- Original Message ----
> From: Bogdan-Andrei Iancu <bogdan(a)voice-system.ro>
> To: Tobias Lindgren <tobias.lindgren(a)ip-only.se>
> Cc: users(a)openser.org
> Sent: Thursday, February 14, 2008 3:25:33 AM
> Subject: Re: [OpenSER-Users] Failover using NAPTR/SRV
>
> Hi Tobias,
>
> if you have "dns_backlist=yes" in your config, if one of the destination
> server fails (according to SIP definition), it's IP will be added to a
> temporary blacklist (for 4 minutes) and not used. So, openser should do
> dns-based failover and use the next entry provided by NAPTR/SRV/A lookup.
>
> Regards,
> Bogdan
>
> Tobias Lindgren wrote:
> > Hi all,
> >
> > I've been trying to find this information but I cannot find any exact
> > specifications on how it really works.
> >
> > >From what I know using NAPTR/SRV records with OpenSER will allow
> it to
> > find and use servers behind those DNS-records. This works just fine.
> >
> > However, what I'm not sure about is what actually will happen in
> OpenSER
> > when one of two servers in this scenario would fail.
> >
> > For example, I have two servers as SRV where one is primary and one is
> > secondary for SIP/UDP. What will happend in OpenSER when the primary
> > server is down? Will OpenSER continue to send all request first towards
> > that server or will it learn that one server is down and always send
> > requests to the second server for a period of time and try the primary
> > one just occassionally?
> >
> > Please direct me to any page where this is explained in detail, if such
> > page exists.
> >
> > Br,
> > /Tobias
> >
> > _______________________________________________
> > Users mailing list
> > Users(a)lists.openser.org <mailto:Users@lists.openser.org>
> > http://lists.openser.org/cgi-bin/mailman/listinfo/users
> >
> >
>
>
> _______________________________________________
> Users mailing list
> Users(a)lists.openser.org <mailto:Users@lists.openser.org>
> http://lists.openser.org/cgi-bin/mailman/listinfo/users
>
>
> ------------------------------------------------------------------------
> Never miss a thing. Make Yahoo your homepage.
> <http://us.rd.yahoo.com/evt=51438/*http://www.yahoo.com/r/hs>
>modparam("acc", "radius_config", "/usr/local/etc/radiusclient/
>radiusclient.conf");
I think you dont need the ";" as this isnt the last param you set for acc,
other than that
in theory this should be fine, i have had similar config working, it does
need to be a
single line of text of course and I dont know if its just the way it apears
on the list but
there seems to be white space between radiusclient/ and radiusclient.conf
Also I´ve had issues with non-printable characters being in my config file
from copying
and pasting from web pages srewing up what looks like a properly formated
cfg, maybe
check this...??
cheers Andy.
________________________________________________
Message sent using UK Grid Webmail 2.7.9
Hello,
i installed OSER 1.3-SVN and openxcap-0.9.9 (does not work with OSER 1.2 :) )
XCAP Server is running, also openser, but i can´t see any presence status, clients sends publish but
no notifys are sent out.
i´m using latest eyebeam clients, i can also see that privacy rules are updated in the xcap
database, but subscribtion status is always pending.
i can see that xcap doc is loaded through a query, but status is pending.
Had a long time presence running mit "force_active = 1", but now i want to introduce also xcap
functionality.
Where can i start to debug ?
r,
Andreas M.
presence config:
## presence module
modparam("presence", "db_url","mysql://xx:xx@127.0.0.1/presence")
modparam("presence", "presentity_table", "presentity")
modparam("presence", "active_watchers_table", "active_watchers")
modparam("presence", "watchers_table", "watchers")
modparam("presence", "clean_period", 100)
modparam("presence", "to_tag_pref", 'mango')
modparam("presence", "expires_offset", 10)
modparam("presence", "max_expires", 3600)
modparam("presence", "server_address", "sip:10.0.0.1:5065")
modparam("presence", "fallback2db", 1)
modparam("presence_xml", "db_url","mysql://xxx:xxx@127.0.0.1/presence")
modparam("presence_xml", "xcap_table", "xcap")
modparam("presence_xml", "force_active", 0)
modparam("presence_xml", "pidf_manipulation", 0)
modparam("presence_xml", "integrated_xcap_server", 1)
also i can see following query in my sql log, that does not work (field does not exists)
select id from watchers where inserted_time<1202992297 AND subs_status='pending'
source:
CREATE TABLE `watchers` (
`id` int(10) unsigned NOT NULL auto_increment,
`presentity_uri` varchar(128) NOT NULL,
`watcher_username` varchar(64) NOT NULL,
`watcher_domain` varchar(64) NOT NULL,
`event` varchar(64) NOT NULL default 'presence',
`status` int(11) NOT NULL,
`reason` varchar(64) default NULL,
`inserted_time` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `watcher_idx` (`presentity_uri`,`watcher_username`,`watcher_domain`,`event`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
--
g,
Andreas M.