Using the SIP Center SIP Application Server to Test User Agents
The SIP Center Server can be used for testing call set-up and tear down functionality with a user agent including REGISTRATION and INVITE requests as well as features such as clearing registrations for a SIP url and retrieving registrations for a SIP url.
1. Testing registration functionality with a user agent
The REGISTER function within SIP is fundamental to any SIP proxy solution as the registration server element provides the mechanics for locating individual users.
The SIP message flow for registering using a SIP user agent and the SIP Center Network Server is as follows (diagram 1)
Diagram 1

The user agent should produce a REGISTER that is then sent to the SIP Network Server in a similar format to that illustrated in diagram 2.
Diagram 2
REGISTER sip:10.20.30.40 SIP/2.0
To: < sip:chris@sipcenter.com >
From: < sip:chris@sipcenter.com >
Call-ID: -634285878904643305@140.150.160.70
CSeq: 1 REGISTER
Via: SIP/2.0/UDP 140.150.160.70:5060
Contact: < sip:chris@140.150.160.70 >
Expires: 3600
Content-Length: 0
The SIP Network Server will then produce the following 200 OK response back to the SIP user agent (diagram 3).
Diagram 3
SIP/2.0 200 OK
To: < sip:chris@sipcenter.com >;tag=C1C334F113C4000000E4D0D1F6F1
From: < sip:chris@sipcenter.com >
CSeq: 1 REGISTER
Call-ID: -634285878904643305@140.150.160.70
Via: SIP/2.0/UDP 140.150.160.70:5060
Contact: < sip:chris@140.150.160.70 >;action=proxy;expires=3599
Expires: Wed, 21 Feb 2001 13:57:13 GMT
Content-Length: 0
To test the functionality of cancelling registrations, a registration message as in diagram 2 should be sent for the specified SIP URL but with an "Expires" field value of 0 in the message body. Any contact associated will be cancelled. If a * is present in the contact field, all associated contacts with the specified SIP URL will be cancelled. Interrogating the SIP Network Server to identify contacts associated to a SIP URL can be achieved by sending a registration similar to diagram 2 but with no "Expires" or "Contact" header fields. The SIP Network Server will then return a 200 OK response listing all currently available contacts.
2. Testing basic call set-up functionality with the Network Server
The SIP Network Server can be used to test basic call set-up between a user agent client and a user agent server. Two instances of the user agent must be configured to connect to the SIP Network Server. Ensure that at least one of the clients is registered. One of the clients must then attempt to make a call to the registered SIP url. The message flow should look similar to that in diagram 4.
Diagram 4

Diagram 4 demonstrates exactly what user agent 1 and user agent 2 will be receiving from the SIP Network Sever. The message flow constructed should look similar to that listed in diagram 5.
Diagram 5
User Agent 1 > Network Server
INVITE sip:chris@sipcenter.com SIP/2.0
CSeq: 1 INVITE
To: sip:chris@sipcenter.com
From: fred< sip:fred@10.20.30.40 >
Call-ID: 6523028591790691760@10.20.30.40
Via: SIP/2.0/UDP 10.20.30.40
Contact: < sip:fred@10.20.30.40 >
Subject: no subject
Content-Type: application/sdp
Content-Length: 123
v=0
o=- 982769551076 982769551076 IN IP4 10.20.30.40
s=-
c=IN IP4 10.20.30.40
t=0 0
m=audio 5004 RTP/AVP 8 3 0
Network Server > User Agent 1
SIP/2.0 100 Trying
To: sip:chris@sipcenter.com
From: fred< sip:fred@10.20.30.40 >
CSeq: 1 INVITE
Call-ID: 6523028591790691760@10.20.30.40
Via: SIP/2.0/UDP 10.20.30.40
Content-Length: 0
Network Server > User Agent 2
INVITE sip:chris@10.20.30.60 SIP/2.0
CSeq: 1 INVITE
To: sip:chris@sipcenter.com
From: fred< sip:fred@10.20.30.40 >
Call-ID: 6523028591790691760@10.20.30.40
Via: SIP/2.0/UDP
10.20.30.50:5060;branch=C1C334F113C40000...
00E4D1911E77*4*0*0
Via: SIP/2.0/UDP 10.20.30.40
Contact: < sip:fred@10.20.30.40 >
Subject: no subject
Content-Type: application/sdp
Content-Length: 123
v=0
o=- 982769551076 982769551076 IN IP4 10.20.30.40
s=-
c=IN IP4 10.20.30.40
t=0 0
m=audio 5004 RTP/AVP 8 3 0
User Agent 2 > Network Server
SIP/2.0 180 Ringing
To: sip:chris@sipcenter.com
From: fred< sip:fred@10.20.30.40 >
CSeq: 1 INVITE
Call-ID: 6523028591790691760@10.20.30.40
Via: SIP/2.0/UDP
10.20.30.50:5060;branch=C1C334F113C40000...
00E4D1911E77*4*0*0
Via: SIP/2.0/UDP 10.20.30.40
Content-Length: 0
Network Sever > User Agent 1
SIP/2.0 180 Ringing
To: sip:chris@sipcenter.com
From: fred< sip:fred@10.20.30.40 >
CSeq: 1 INVITE
Call-ID: 6523028591790691760@10.20.30.40
Via: SIP/2.0/UDP
10.20.30.50:5060;branch=C1C334F113C400...
0000E4D1911E77*4*0*0
Via: SIP/2.0/UDP 10.20.30.40
Content-Length: 0
User Agent 2 > Network Server
SIP/2.0 200 OK
To: sip:chris@sipcenter.com;tag=-994822506
From: fred< sip:fred@10.20.30.40 >
CSeq: 1 INVITE
Call-ID: 6523028591790691760@10.20.30.40
Via: SIP/2.0/UDP
10.20.30.50:5060;branch=C1C334F113C40...
00000E4D1911E77*4*0*0
Via: SIP/2.0/UDP 10.20.30.40
Contact: < sip:chris@10.20.30.60 >
Content-Type: application/sdp
Content-Length: 101
v=0
o=- 0 0 IN IP4 10.20.30.60
s=-
c=IN IP4 10.20.30.60
t=0 0
m=audio 5004 RTP/AVP 8 3 0
Network Sever > User Agent 1
SIP/2.0 200 OK
To: sip:chris@sipcenter.com;tag=-994822506
From: fred< sip:fred@10.20.30.40 >
CSeq: 1 INVITE
Call-ID: 6523028591790691760@10.20.30.40
Via: SIP/2.0/UDP
10.20.30.50:5060;branch=C1C334F113C400...
0000E4D1911E77*4*0*0
Via: SIP/2.0/UDP 10.20.30.40
Contact: < sip:chris@10.20.30.60 >
Content-Type: application/sdp
Content-Length: 101
v=0
o=- 0 0 IN IP4 10.20.30.60
s=-
c=IN IP4 10.20.30.60
t=0 0
m=audio 5004 RTP/AVP 8 3 0
User Agent 1 > User Agent 2
ACK sip:chris@10.20.30.60 SIP/2.0
CSeq: 1 ACK
To: sip:chris@sipcenter.com;tag=-994822506
From: fred< sip:fred@10.20.30.40 >
Call-ID: 6523028591790691760@10.20.30.40
Via: SIP/2.0/UDP 10.20.30.40
Content-Length: 0
The user agent sends the ACK method directly to User Agent 2. However, for compatibility purposes, a SIP proxy server is expected to handle the ACK method and proxy on to the required destination. The exact same can be applied to the "tear down" of a call. Once a call is set up it is common practice for user agents, such as the one available on the SIP Center to send the BYE method directly between clients. Should a SIP proxy server receive a BYE request from a user agent it should route the request to the correct destination. Unfortunately this feature is out of the scope of this document unless the testing party has implemented the "Record-Route" feature.