Call Flow
An example call flow between a SIP endpoint, the Oracle® Enterprise Session Border Controller, acting as a P-CSCF, and a SIP Registrar (S-CSCF) illustrates the Subscription/Notification process.
| REGISTER | REGISTER | | ----------------> | ----------------> | | 200 OK | 200 OK | | <---------------- | <--------------- | | | SUBSCRIBE | | | Event:reg | | | ----------------> | | | 200 OK | | | <---------------- | | | NOTIFY | | | <---------------- | | | 200 OK | | | ----------------> | | | | NOTIFY | | | ----------------> | | | 200 OK | | | <-----------------|
The first two messages (the REGISTER request and the 200 REGISTER response) accomplish the successful registration of the SIP endpoint.
REGISTER sip:example.com SIP/2.0 Via: SIP/2.0/UDP pc34.example.com;branch=z9hG4bKnaaff From: sip:joe@example.com;tag=99a8s To: sip:joe@example.com Call-ID: 88askjda9@pc34.example.com CSeq: 9976 REGISTER Contact: sip:joe@pc34.example.com
Immediately after processing the initial 200 OK from the SIP Registrar, the Oracle® Enterprise Session Border Controller sends a SUBSCRIBE Request to the S-CSCF.
SUBSCRIBE sip:joe@example.com SIP/2.0 Via: SIP/2.0/UDP app.example.com;branch=z9hG4bKnashds7 From: sip:sd.example.com;tag=123aa9 To: sip:joe@example.com Call-ID: 9987@app.example.com CSeq: 9887 SUBSCRIBE Contact: sip:joe@pc34.example.com P-Asserted-Identity: <sip:sd@example.com> Event: reg Max-Forwards: 70 Accept: application/reginfo+xml
The Request URI and To header contain the address-of-record (sip:joe@example.com) of the subscription subject. This value was previously contained in the From and To headers of the of the original REGISTER request. These fields are always identical in REGISTER requests, except in the case of third-party registration.
The From and P-Asserted-Identity headers contain the identity of the subscription requester.
The Contact header contains an IP address or FQDN at which the subscription subject can be reached. This field duplicates the value of the Contact header in the original REGISTER request. Multiple contacts can be registered for a single address-of-record.
The Event header contains the required value, reg, which identifies the requested Event Package subscription. reg specifies the SIP Event Package for Registrations.
The Accept header contains the required, default value, application/reginfo+xml, indicating syntactical support for Registration notifications and attached XML notification bodies.
Assuming the S-CSCF accepts the subscription, it responds with a 200 SUBSCRIBE response.
SIP/2.0 200 OK Via: SIP/2.0/UDP app.example.com;branch=z9hG4bKnashds7 ;received=192.0.2.1 From: sip:sd.example.com;tag=123aa9 To: sip:joe@example.com;tag=xyzygg Call-ID: 9987@app.example.com CSeq: 9987 SUBSCRIBE Contact: sip: joe@pc34.example.com Expires: 3600
The From header contains the identity of the subscription requester.
The To header contains the address-of-record of the subscription subject.
The Contact header contains an IP address or FQDN at which the subscription subject can be reached.
The Expires header contains the subscription duration in seconds. Upon receipt of a 2xx response to the SUBSCRIBE request, the Oracle® Enterprise Session Border Controller stores the information for the established dialog and the expiration time. If continued subscription is required, the Oracle® Enterprise Session Border Controller automatically refreshes the subscription to the SIP Event Package for Registrations, either 600 seconds before the expiration time if the initial subscription was for greater than 1200 seconds, or when half of the time has expired if the initial subscription was for 1200 seconds or less.
Following the 200 SUBSCRIBE response, the S-CSCF generates an initial notification, with Event Package state information contained in an XML body.
NOTIFY sip:app.example.com SIP/2.0 Via: SIP/2.0/UDP server19.example.com;branch=z9hG4bKnasaij From: sip:app@example.com;tag=xyzygg To: sip:sd.example.com;tag=123aa9 Call-ID: 9987@app.example.com CSeq: 1289 NOTIFY Contact: sip:server19.example.com Event: reg Max-Forwards: 70 Content-Type: application/reginfo+xml Content-Length: ... <?xml version="1.0"?> <reginfo xmlns="urn:ietf:params:xml:ns:reginfo" version="1" state="partial"> <registration aor="sip:joe@example.com" id="a7" state="active"> <contact id="76" state="init" event="registered" duration-registered="0"> <uri>sip:joe@pc34.example.com</uri> </contact> </registration> </reginfo>