[OpenSER-Users] No answers whatssoever??

Taisto Qvist (WM) taisto.qvist at IP-Solutions.se
Tue Feb 26 16:41:06 CET 2008


Hi, and sorry if I am getting repetitious but since I am not getting any
replies on what I thought was an important question(rfc-complicance)
I need to ask the question again...(at least indicate why you disagree
with me?)

I was hoping someone could comment on what I thought was some fairly clear
rfc-references, that indicate that an ACK for 2xx should NOT match the
INVITE transaction, since it should be terminated at reception/sending
of 2xx.

I hope I dont offend in any way, I would just like to get some
clarification on this.

I hope you can clarify your standpoint, especially if you disagree with
me, which I get the feeling you do.

Kind Regards
Taisto Qvist


Taisto Qvist wrote:
> 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(<DEFANGED_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
>




----
Taisto Qvist, IP-Solutions
Mobile: +46-708-88 02 63
"We are Pentium of Borg. Division is futile, You will be approximated"





More information about the Users mailing list