Considering again how History-Info handles 3xx responses, let me
construct this example of multi-stage translation:

Let us assume that sip:[EMAIL PROTECTED] routes to proxy 1.  Proxy 1
knows that (one) target of this URI is Alice's AOR,
sip:[EMAIL PROTECTED], which then routes to proxy 2.  Proxy 2 knows the
phone address for sip:[EMAIL PROTECTED], which is sip:[EMAIL PROTECTED]

As the request reaches the UA at 10.1.1.1, the History-Info looks like
this:

    History-Info: <sip:[EMAIL PROTECTED]>;index=1,
            <sip:[EMAIL PROTECTED]>;index=1.1,
            <sip:[EMAIL PROTECTED]>;index=1.1.1

This clearly gives the logical derivation of the destination address
from the original request-URI (which is presumably also the To:
value):

        sip:[EMAIL PROTECTED] ->
                sip:[EMAIL PROTECTED] ->
                        sip:[EMAIL PROTECTED]

Now let us modify the scenario by changing proxy 2 not to route the
request itself, but rather to send a 302 response back to proxy 1.
Within SIP, any agent that potentially routes a request can choose to
send a 3xx response instead; in theory, all forking can be forced back
onto the originating UA if downstream agents always send 3xx responses
rather than routing.

With the 302 response, the History-Info looks like this (taking
liberties with the escaping):

    History-Info: <sip:[EMAIL PROTECTED]>;index=1,
            <sip:[EMAIL PROTECTED];cause=302>;index=1.1,
            <sip:[EMAIL PROTECTED]>;index=1.2

And this is the forking structure of the request.  But it looses the
logical structure of the translation; the UA at 10.1.1.1 does not see
that it received the request "through" its AOR, sip:[EMAIL PROTECTED]
The apparent derivation of the destination address is:

        sip:[EMAIL PROTECTED] ->
                sip:[EMAIL PROTECTED]

(Although in practice the UA could guess from the "cause=302" on its
".1 sibling" that its fork was derived from the index=1.1 fork.)

And in the extreme case of a complex forking and retargeting
structure, if all other agents used 3xx responses to implement it, the
UAS would receive a History-Info whose indexes were all single
integers, obscuring completely how its address was derived.

As I proposed earlier, I think getting around this problem will
require adding an additional field-parameter to show how the address
derivations are performed.  In this example:

    History-Info: <sip:[EMAIL PROTECTED]>;index=1,
            <sip:[EMAIL PROTECTED];cause=302>;index=1.1,
            <sip:[EMAIL PROTECTED]>;index=1.2;redir=1.1

For diagnostic purposes, it would also be convenient if any other
field-parameters on the Contacts of a 3xx response were copied into
the derived History-Info elements.  Only the "q" parameter seems to be
useful information.  A typical "serial fork" would then look like this
when the request reached the second contact:

    History-Info: <sip:[EMAIL PROTECTED]>;index=1,
            <sip:[EMAIL PROTECTED];cause=302>;index=1.1,
            <sip:[EMAIL PROTECTED];cause=486>;q=1.0;index=1.2;redir=1.1
            <sip:[EMAIL PROTECTED]>;q=0.9;index=1.3;redir=1.1

As an elaboration, if we suppose UA sip:[EMAIL PROTECTED] redirected the
request to sip:[EMAIL PROTECTED], we could get:

    History-Info: <sip:[EMAIL PROTECTED]>;index=1,
            <sip:[EMAIL PROTECTED];cause=302>;index=1.1,
            <sip:[EMAIL PROTECTED];cause=486>;q=1.0;index=1.2;redir=1.1
            <sip:[EMAIL PROTECTED];cause=302>;q=0.9;index=1.3;redir=1.1
            <sip:[EMAIL PROTECTED]>;index=1.4;redir=1.3

This illustrates that the forking structure is flat (arranging the
entries by their indexes):

        sip:[EMAIL PROTECTED]
                sip:[EMAIL PROTECTED]
                sip:[EMAIL PROTECTED]
                sip:[EMAIL PROTECTED]
                sip:[EMAIL PROTECTED]

whereas the address derivation is more complex (placing each entry
under the entry referenced by its 'redir' parameter):

        sip:[EMAIL PROTECTED]
                sip:[EMAIL PROTECTED]
                        sip:[EMAIL PROTECTED]
                        sip:[EMAIL PROTECTED]
                                sip:[EMAIL PROTECTED]

The latter is more useful for attacking the "UA loose route" problem.

We still need to investigate what History-Info looks like if some of
the participating proxies do not support it.

Dale
_______________________________________________
Sip mailing list  https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip

Reply via email to