Hi all!

We implement a SIP User Agent, and have a problem.
When we try to send REGISTER or INVITE message to FWD (fwdnat.pulver.com:5082),
the server reponds with a message that doesn't contain branch parameter in Via field,
while we had one in our request. So, we cannot map the response to the sent request.

Is this correct behaviour, and if yes, what's the reason for that?
Or if it's not quite correct, please let us know how can we avoid this situation.

By the way, we have no such problem with fwd.pulver.com:5060.

Here are the excerpts from new and old SIP RFCs about this issue and message logs.

Thanks in advance.

Simon.

***************************************************************************

RFC2543

10 Behavior of SIP Clients and Servers
     10.1.2 Responses
           ......
           Responses are mapped to requests by the matching To, From, Call-ID,
           CSeq headers and the branch parameter of the first Via header.
           Responses terminate request retransmissions even if they have Via
           headers that cause them to be delivered to an upstream client.
           .......

***************************************************************************

RFC3261

8.1 UAC Behavior
        8.1.1 Generating the Request
                8.1.1.7 Via
                When the UAC creates a request, it MUST insert a Via into that
                request.  The protocol name and protocol version in the header field
                MUST be SIP and 2.0, respectively.  The Via header field value MUST
                contain a branch parameter.  This parameter is used to identify the
                transaction created by that request.  This parameter is used by both
                the client and the server.

                The branch parameter value MUST be unique across space and time for
                all requests sent by the UA.  The exceptions to this rule are CANCEL
                and ACK for non-2xx responses.  As discussed below, a CANCEL request
                will have the same value of the branch parameter as the request it
                cancels.  As discussed in Section 17.1.1.3, an ACK for a non-2xx
                response will also have the same branch ID as the INVITE whose
                response it acknowledges.

                        The uniqueness property of the branch ID parameter, to 
facilitate
                        its use as a transaction ID, was not part of RFC 2543.

                The branch ID inserted by an element compliant with this
                specification MUST always begin with the characters "z9hG4bK".  These
                7 characters are used as a magic cookie (7 is deemed sufficient to
                ensure that an older RFC 2543 implementation would not pick such a
                value), so that servers receiving the request can determine that the
                branch ID was constructed in the fashion described by this
                specification (that is, globally unique).  Beyond this requirement,
                the precise format of the branch token is implementation-defined.


17 Transactions
        17.1 Client Transaction
                17.1.3 Matching Responses to Client Transactions

                   When the transport layer in the client receives a response, it has 
to
                   determine which client transaction will handle the response, so that
                   the processing of Sections 17.1.1 and 17.1.2 can take place.  The
                   branch parameter in the top Via header field is used for this
                   purpose.  A response matches a client transaction under two
                   conditions:

                          1.  If the response has the same value of the branch 
parameter in
                                  the top Via header field as the branch parameter in 
the top
                                  Via header field of the request that created the 
transaction.

                          2.  If the method parameter in the CSeq header field matches 
the
                                  method of the request that created the transaction.  
The
                                  method is needed since a CANCEL request constitutes a
                                  different transaction, but shares the same value of 
the branch
                                  parameter.

***************************************************************************

REGISTER sip:fwd.pulver.com:5060 SIP/2.0
Via: SIP/2.0/UDP 
212.126.211.246:5076;branch=z9hG4bKEPSVBUS7aeffbbf2-97d9da-8c19-0cfa0a01e3
To: <sip:[EMAIL PROTECTED]>
From: <sip:[EMAIL PROTECTED]>;tag=760b9a5c3-bed9ca-c822-bac9cb38d7
CSeq: 1 REGISTER
Call-ID: [EMAIL PROTECTED]
Contact: <sip:[EMAIL PROTECTED]:5076>;expires=3600
User-Agent: EPYGI QUADRO SIP-UA/1.1
Max-Forwards: 70
Content-Length: 0

SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 212.126.211.246:5076
To: <sip:[EMAIL PROTECTED]>;tag=b27e1a1d33761e85846fc98f5f3a7e58.65e2
From: <sip:[EMAIL PROTECTED]>;tag=760b9a5c3-bed9ca-c822-bac9cb38d7
CSeq: 1 REGISTER
Call-ID: [EMAIL PROTECTED]
WWW-Authenticate: Digest realm="fwd.pulver.com", 
nonce="3f8aa02ef11a70b1a98d58023703a623077d1710"
Server: Free World Dialup (0.8.11rc3 (i386/linux))
Content-Length: 0

***************************************************************************************************

INVITE sip:[EMAIL PROTECTED]:5060 SIP/2.0
Via: SIP/2.0/UDP 
212.126.211.246:5076;branch=z9hG4bKEPSVBUS00973059f-c5b328-245b-1131b808e8
To: <sip:[EMAIL PROTECTED]>
From: <sip:[EMAIL PROTECTED]>;tag=fb495a33e-bb199e-9854-2044ca4984
CSeq: 384 INVITE
Call-ID: [EMAIL PROTECTED]
Accept: application/sdp
Allow: INVITE, ACK, CANCEL, BYE, OPTIONS
Contact: <sip:[EMAIL PROTECTED]:5076>
Content-Type: application/sdp
User-Agent: EPYGI QUADRO SIP-UA/1.1
Max-Forwards: 70
Content-Length: 256

v=0
o=17184 846930886422355 1846930886422355 IN IP4 212.126.211.246
s=EPYGI FIAD User Agent/1.0
c=IN IP4 212.126.211.246
t=0 0
m=audio 6080 RTP/AVP 0 8 2 18
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:2 G726-32/8000
a=rtpmap:18 G729a/8000

SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP 212.126.211.246:5076
t: <sip:[EMAIL PROTECTED]>;tag=b27e1a1d33761e85846fc98f5f3a7e58.65e2
f: <sip:[EMAIL PROTECTED]>;tag=fb495a33e-bb199e-9854-2044ca4984
CSeq: 384 INVITE
i: [EMAIL PROTECTED]
Proxy-Authenticate: Digest realm="fwd.pulver.com", 
nonce="3f8aa0bfa811a1c29a5e6a251b6eb0465863ff57"
Server: Free World Dialup (0.8.11rc3 (i386/linux))
Content-Length: 0

***************************************************************************************************

_______________________________________________
Sip-implementors mailing list
[EMAIL PROTECTED]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to