Subject: Call legs and Cseq

From: "Liberati, Ernest" <[email-masked]>
Date: Wed, 02 Feb 2000 05:45:50 -0800

Hi,

For a SIP call that involves phone with UAC, host with UAS, and Proxy Server
components, shown below, I need some help to clear my confusion on call legs
and Cseq.

1. Do call legs exist between all adjacent components (e.g., A - B, B - C,
...)?

2. Does a call leg include the requests in both directions (e.g., B - C and
C - B)?

3. The most recent definition of a call leg, that I have found, is a
combination of local- and remote-addresses (including tags) and the Call-ID.
How do the Request URI, To, and From address relate to local- and
remote-addresses?

4. Within a call leg, is the Cseq incremented for each transaction in each
direction?

Thanks in advance,
Ernest Liberati
General Dynamics Electronic Systems
301 310-0344
[email-masked]

---

From: Anders Kristensen <[email-masked]>
Date: Wed, 02 Feb 2000 14:15:23 +0000

Ernest,

Your confusion is quite understandable.

A SIP call leg denotes the (abstract) notion of an end-to-end
connection, regardless of whether any proxies are on the signaling path.
This means that (in SIP terminology) there are no A-B and B-C legs but
only an A-C leg. Obviously a (forking) proxy needs to know about those
other "leg segments" but they are not considered legs as such. This is
different from the PSTN switch notion of legs.

As for the CSeq number, the UAs involved in a leg choose CSeq numbers in
increasing order for different transactions but independent of each
other. The fact that they can initiate transactions at overlapping
points in time implies that the CSeq number spaces are separate in the
two directions, i.e. the transaction {i,A,C,42} is *not* the same
transaction as {i,C,A,42} even though the legs {i,A,C} is the same as
the leg {i,C,A} where i is the Call-ID and 42 is the CSeq.

-- 
Anders Kristensen <[email-masked]>,
http://www-uk.hpl.hp.com/people/ak/
Hewlett-Packard Labs, Bristol, UK

---

From: Jonathan Rosenberg <[email-masked]>
Date: Wed, 02 Feb 2000 10:06:19 -0500

Anders has it right. Some additional clarifications:

> > 2. Does a call leg include the requests in both directions (e.g., B - C and

As Anders has pointed out, call legs really refer to end to end
connections. So, B and C are user agents. Given that, the call leg just
refers to the relationship between them. Within a call leg, there are
numerous transactions in both directions. 

> > How do the Request URI, To, and From address relate to local- and

The request URI does not used in call leg identification.

The To and From field relate to local and remote in the following way.
WHen I send a request on a call leg, the From field contains the local
address, and the To field the remote address. When a request is
received, the To field is matched to the local address, and the From
field to the remote address.

> > 4. Within a call leg, is the Cseq incremented for each transaction in each

As Anders has pointed out, the CSeq space in the two directions are
independent. Within a single direction (A to B), they do increment for
each transaction.

-Jonathan R.

-- 
Jonathan D. Rosenberg                       200 Executive Drive
Chief Scientist                             Suite 120 
dynamicsoft                                 West Orange, NJ 07052
[email-masked]                     FAX:   (732) 741-4778
http://www.cs.columbia.edu/~jdrosen         PHONE: (732) 741-7244
http://www.dynamicsoft.com