0
votes

I have been reading across multiple sources and I have a few concerns which I'm not sure is correct?

Consider a simple call flow as below of Alice ([email protected]) <-> Bob([email protected])

enter image description here

Given Alice has registered with 3 devices and bob has registered with 2 devices

Alice devices

 1. [email protected]
 2. [email protected]:43085
 3. [email protected]:5060

Bob Devices

 1. [email protected]
 2. [email protected]:5060

Now coming to the call flow. Alice(from [email protected] decides to call BOB.

  1. when the call (from Alice to Bob) is made(in the first leg) would the Request - URI would be that of proxy or bob. [Ref] (https://www.quora.com/What-is-the-difference-between-request-URI-and-to-tag-in-SIP-request-messages)

  2. Alice called from its device [email protected] so we assume that contact header to be present in the SIP request. But when BOB enters its contact HEADER i.e [email protected] in 200 OK response. Why does the route have to be directed to Proxy (ref picture)

why can't it be sent directly to the ALICE since the BOB knows about ALICE's location? since the request had the Alice Contact header.

3

3 Answers

2
votes

My answers:

  1. The Request-URI's value depends on the type of routing used: loose routing or strict routing. Since SipV2 SIP supports loose routing and this is the preferred way. This means the Request-URI in the first leg will contain Bob's AOR, in this case [email protected].
  2. A SIP response must travel the same path (in opposite direction) as the SIP request (using Via headers). This means the 200 OK response has to be sent to proxy. Proxy will send a separate 200 OK response to Alice (this can be the same message).

When the dialog has become confirmed and (if) Alice and Bob know each other's contact address they can from there on, in that dialog, send new SIP requests directly to each other.

I hope that helps.

1
votes

Why can't the 200 OK response be sent directly to the ALICE since the BOB knows about ALICE's location? Since the request had the Alice Contact header.

Actually, what you name the BOB is a registered device of user Bob into SIP registrar for domain anc.com. If Bob-device sends directly the answer to Alice-device (i.e. contact-address), the inbound-proxy will not be able to CANCEL pending SIP INVITE to the other Bob devices because the 200 ok response is a trigger for the inbound proxy.

when the call (from Alice to Bob) is made(in the first leg) would the Request - URI would be that of proxy or bob?

With loose-routing that define routing the “right” way, the request-uri must be the target address like the user address (i.e.addres-of-record) or a user device (i.e. contact-address) or a tel:e164 compatible address or a user GRUU (not sure if this is all).

In your case, it must be bob user address ([email protected]) and NOT the proxy!

0
votes

Proxy could be of any type i.w. stateless/statefull/B2BUA. Proxy can maintain Invite transaction and to clear that transaction 200OK must traverse through that Proxy.

When proxy wants to receive response as well it will add it's own ip in VIA header. 200OK response from Bob will use VIA header to traverse same path as INVITE for response.

So, in you case Bob received INVITE with Via header something like(via: proxy; alice), so 200Ok will be sent to Proxy. Then proxy will remove it's own via and it will forward this to next via i.e. of Alice in this case.

And as Bucq mentioned, further requests can traverse directly for ex from ACK onwards.