[pjsip] REGISTER in IMS and special Headers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Benny,

As promised, here are small piece of information to some IMS-specific
details for SIP.

First let me thank you for adding the AKAv1-MD5 and AKAv2-MD5 support,
and the Service-Route support as well. Without them making an IMS client
would be very hard :)

There's a small document presenting the IMS-specific SIP features
http://project.swissgeek.org/IMS_Overview.pdf

There might be three very important features that could be added to
pjsip to make it almost 100% IMS-Compliant

1. Support for private/public address.

In IMS, an IMS Subscription (IMSU) is created, then we attach to it a
Private Address (IMPI). This is what identify the user to the operator.
In this IMPI you specify which authentication scheme might be used,
which Registrar should handle this user ect. The IMPI is also used as
the "username" for the authentication process during the REGISTER.

To this IMPI you add several Public Address (IMPU). Which means, for one
user, you can have several public sip Address the user might be
contacted through. A public address might as well be shared between
several private address (like sip:support at mycompany.com might point to
the 6 engineers providing the support)

I'm still looking at how the registration of multiple public address for
the same device should be handled (either one REGISTER with all the IMPU
or multiple REGISTER).

2. Support for Authorization in IMS

As described before, a user is identified by its private address. This
information is needed by the I-CSCF to redirect a REGISTER message to
the correct S-CSCF (registrar).

If you look at a standard REGISTER, there's only the sip contact address
in the from/to headers. This can't be used to "guess" the private user
identity.

That's why in IMS network the initial REGISTER message contains already
the "Authorization" field, with only the following fields :
 - username = private address
 - realm = IMS domain
 - uri = IMS domain

here's a capture of a REGISTER sent by an IMS client

REGISTER sip:glam-oims.net SIP/2.0
Call-ID: f0f9c6d1bf2075b698a440114e5842d5 at 10.8.0.6
CSeq: 1 REGISTER
From: "bota" <sip:bota@xxxxxxxxxxxxx>;tag=9523050
To: "bota" <sip:bota at glam-oims.net>
Via: SIP/2.0/UDP
10.8.0.6:5060;branch=z9hG4bK6a5cea8e23abe690ef759704cd83fcc6
Max-Forwards: 70
Expires: 3600
P-Access-Network-Info: IEEE-802.11
Authorization: Digest
username="bota-private at glam-oims.net",realm="glam-oims.net",nonce="",uri="glam-oims.net",response=""
User-Agent: IMS-Communicator 070605
Supported: path
Contact: <sip:bota at 10.8.0.6:5060>
Content-Length: 0

As you can see, there's already the Authorization field, but without a
valid response. This will allow the network to identify the user with
it's private address and route the REGISTER to the correct Registrar.

A flag in the pjsua_acc_config telling to send the initial register with
this field would be very helpfull :)

3. Support for P-Access-Network-Info

It would be nice to have in the pjsua_acc_config a field where we can
specify the network access method. If this field is not empty, pjsip
would then put this header in every request sent from this account.

This information is often used by SIP A/S and MediaServer to determine
the capability of the access method and offer media stream adapted to it.

A streaming server would send a 12mbit/s Video to a user using IEE-802.3
(ethernet) while sending ? 300kb/s video to a user with a
P-Access-Network-Info of 3GPP-UMTS.

That's it. Sorry for this long mail. If anyone comfortable with IMS see
any mistake/errors in the information provided here, I would gladly
accept your corrections.

Have a nice day.

Olivier B.

-- 

 Olivier Beytrison
 Telecommunication Engineer
 Mobile: +41 (0)78 619 73 53
 Mail: olivier at heliosnet.org
 GPG: 0x4FB83528 http://pgp.mit.edu/



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux