SIPREC Call Flows
This section provides examples of call flow scenarios that can occur in a SIPREC environment. SIP recording call flow examples include:
For Selective Recording:
- Normal Call (recording required)
- Normal Call (recording not required)
- Early Media Call (recording not required)
- REFER Pass-Through Call (REFER handled by User Agent)
- REFER Call (REFER handled by the Oracle® Enterprise Session Border Controller )
- SRS Indicates Busy in Call (recording not required)
- Call Transfer scenario
Note:
REFER is a SIP method indicating that the recipient (identified by the Request-URI) should contact a third party using the contact information provided in the request.
SIPREC Re-INVITE Collision and Back-off Support
The Oracle SBC acts a back-to-back User Agent (B2BUA) in all call scenarios. With SIPREC, the Oracle SBC acts as a User Agent Client (UAC) when connected with a Session Recording Server (SRS). Therefore, SIP requests can originate from the Oracle SBC.
When the SRS establishes a recording dialog during a recording session, the Oracle SBC and the SRS may send Re-INVITES to each other with updated information. When the Oracle SBC receives an INVITE, while it is still waiting for the response to a previous INVITE it sent out, this produces an INVITE collision.
To avoid an INVITE collision, the Oracle SBC sends a 491 Request Pending response back to the SRS and then waits for a random amount of time before re-trying the INVITE. The SBC also acknowledges (ACK) any 491 response received from the other side. RFC 3261 and RFC 6141 describe the way the User Agent (UA) resolves the INVITE collision. The random wait time is chosen based on the following guidelines from RFC 3261:
- If the UAC is the owner of the Call-ID of the dialog ID (it generated the value), T (the wait time) is a randomly chosen value between 2.1 and 4 seconds in units of 10 milliseconds.
- If the UAC is not the owner of the Call-ID of the dialog ID (it did not generate the value), T (the wait time) is a randomly chosen value between 0 and 2 seconds in units of 10 milliseconds.
The following call flow diagram shows the Oracle SBC’s feature to avoid INVITE collision.
Selective Recording
Normal Call (recording required)
The following illustration shows a normal call using selective recording with recording required. For SDP and Metadata information in Notes 1 and 2 , see Sample SDP and Metadata.
I
- UA-A sends INVITE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards INVITE with SDP and metadata to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends INVITE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends re-INVITE with SDP and metadata changes to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards OK response to UA-A.
- RTP stream initiated between UA-A and Oracle® Enterprise Session Border Controller.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-B.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and SRS.
- UA-A sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-A.
- Oracle® Enterprise Session Border Controller sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-A.
- Oracle® Enterprise Session Border Controller sends BYE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends BYE to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
Sample SDP and Metadata
The following sample SDP and Metadata pertain to Notes 1 and 2 in the previous Call Flow diagram.
--[Note 1]------------------------------
Content-Type: application/sdp
v=0
o=- 171 213 IN IP4 10.0.0.2
s=-
c=IN IP4 10.0.0.1
t=0 0
m=audio 6000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=label:1
Content-Type: application/rs-metadata+xml
Content-Disposition: recording-session
<?xml version='1.0' encoding='UTF-8'?>
<recording xmlns='urn:ietf:params:xml:ns:recording'>
<dataMode>complete</dataMode>
<session id="urn:uuid:79b2fcd8-5c7f-455c-783f-db334e5d57d0">
<start-time>2011-06-27T17:03:57</start-time>
</session>
<participant id="urn:uuid:10ac9063-76b7-40bb-4587-08ba290d7327" session="urn:uuid:79b2fcd8-5c7f-455c-783f-db334e5d57d0">
<aor>sip:sipp@168.192.24.40</aor>
<name>sipp </name>
<send>urn:uuid:07868c77-ef8e-4d6f-6dd5-a02ff53a1329</send>
<start-time>2011-06-27T17:03:57</start-time>
</participant>
<participant id="urn:uuid:797c45f5-e765-4b12-52b0-d9be31138529" session="urn:uuid:79b2fcd8-5c7f-455c-783f-db334e5d57d0">
<aor>sip:service@168.192.24.60</aor>
<name>sut </name>
</participant>
<stream id="urn:uuid:4a72a1ed-abb2-4d7c-5f4d-6d4c36e2d4ec" session="urn:uuid:79b2fcd8-5c7f-455c-783f-db334e5d57d0">
<mode>separate</mode>
<start-time>2011-06-27T17:03:57</start-time>
<label>1</label>
</stream>
</recording>
--[Note 2]------------------------------
Content-Type: application/sdp
v=0
o=- 171 213 IN IP4 10.0.0.2
s=-
c=IN IP4 10.0.0.1
t=0 0
m=audio 6000 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=label:1
m=audio 6002 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=label:2
Content-Type: application/rs-metadata+xml
Content-Disposition: recording-session
<?xml version='1.0' encoding='UTF-8'?>
<recording xmlns='urn:ietf:params:xml:ns:recording'>
<dataMode>partial</dataMode>
<session id="urn:uuid:79b2fcd8-5c7f-455c-783f-db334e5d57d0">
<start-time>2011-06-27T17:03:57</start-time>
</session>
<participant id="urn:uuid:797c45f5-e765-4b12-52b0-d9be31138529" session="urn:uuid:79b2fcd8-5c7f-455c-783f-db334e5d57d0">
<aor>sip:service@168.192.24.60</aor>
<name>sut </name>
<send>urn:uuid:4a72a1ed-abb2-4d7c-5f4d-6d4c36e2d4ec</send>
<start-time>2011-06-27T17:03:58</start-time>
</participant>
<stream id="urn:uuid:07868c77-ef8e-4d6f-6dd5-a02ff53a1329" session="urn:uuid:79b2fcd8-5c7f-455c-783f-db334e5d57d0">
<mode>separate</mode>
<start-time>2011-06-27T17:03:58</start-time>
<label>2</label>
</stream>
</recording>
Normal Call (recording not required)
The following illustration shows a normal call using selective recording with recording optional.
- UA-A sends INVITE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards INVITE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards OK response to UA-A.
- Oracle® Enterprise Session Border Controller sends INVITE with SDP and metadata to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- RTP stream initiated between UA-A, Oracle® Enterprise Session Border Controller, and UA-B.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and SRS.
- UA-A sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-A.
- Oracle® Enterprise Session Border Controller sends BYE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends BYE to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
Early Media Call (recording not required)
The following illustration shows an early media call using selective recording with recording optional.
- UA-A sends INVITE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards INVITE to UA-B.
- UA-B sends 180 and SDP to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends INVITE with SDP and metadata to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends 180 with SDP to UA-A.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-A.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-B.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and SRS.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards OK to UA-A.
- Oracle® Enterprise Session Border Controller sends re-INVITE with SDP and metadata changes to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- UA-A sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-A.
- Oracle® Enterprise Session Border Controller sends BYE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends BYE to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
REFER Pass-Through Call (REFER handled by User Agent)
The following illustration shows a REFER pass-through call using selective recording and the User Agent (UA) handling the REFER on the call. Recording is required in this call flow.
- UA-A sends INVITE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards INVITE with SDP Offer and metadata to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends INVITE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends re-INVITE with SDP and metadata changes to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards OK response to UA-A.
- RTP stream initiated between UA-A and Oracle® Enterprise Session Border Controller.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-B.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and SRS.
- UA-A sends REFER-TO: C to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards REFER-TO: C to UA-B.
- UA-B responds with 202 ACCEPTED to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards 202 ACCEPTED to UA-A.
- UA-B sends INVITE TO: C to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends INVITE to UA-C.
- UA-C responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards OK response to UA-B.
- Oracle® Enterprise Session Border Controller sends NOTIFY with OK reponse to UA-A.
- Oracle® Enterprise Session Border Controller sends re-INVITE to SRS with new SDP and metadata, adds participant C, stops participant A .
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- UA-A sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-A.
- Oracle® Enterprise Session Border Controller responds with OK to UA-A.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-B.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-C.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and SRS.
- UA-C sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-C.
- Oracle® Enterprise Session Border Controller sends BYE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends BYE to SRS
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
REFER Call (REFER handled by Oracle® Enterprise Session Border Controller)
The following illustration shows a call using selective recording and the Session Border Controller (Oracle® Enterprise Session Border Controller) handling the REFER on the call. Recording is required in this call flow.
- UA-A sends INVITE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards INVITE with SDP Offer and metadata to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends INVITE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends re-INVITE with SDP and metadata changes to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards OK response to UA-A.
- RTP stream initiated between UA-A and Oracle® Enterprise Session Border Controller.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-B.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and SRS.
- UA-A sends REFER-TO: C to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border ControllerOracle® Enterprise Session Border Controller responds with 202 ACCEPTED to UA-A.
- Oracle® Enterprise Session Border Controller sends INVITE to UA-C.
- UA-C responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends NOTIFY with OK response to UA-A.
- UA-A sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-A.
- Oracle® Enterprise Session Border Controller sends re-INVITE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends re-INVITE to SRS with new SDP and metadata.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-B.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-C.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and SRS.
- UA-C sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-C.
- Oracle® Enterprise Session Border Controller sends BYE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends BYE to SRS.
- SRS responds with OK to Oracle® Enterprise Session Border Controller.
SRS Indicates Busy in Call (recording not required)
The following illustration shows the Session Recording Server (SRS) is BUSY for a call session. Recording is not required in this call flow.
- UA-A sends INVITE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards INVITE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller forwards OK response to UA-A.
- Oracle® Enterprise Session Border Controller sends INVITE to SRS1 with SDP and metadata.
- SRS1 responds to Oracle® Enterprise Session Border Controller with 436 BUSY HERE.
- RTP stream initiated between UA-A andOracle® Enterprise Session Border Controller.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and UA-B.
- Oracle® Enterprise Session Border Controller sends INVITE to SRS2 with SDP and metadata.
- SRS2 responds with OK to Oracle® Enterprise Session Border Controller.
- RTP stream initiated between Oracle® Enterprise Session Border Controller and SRS2.
- UA-A sends BYE to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller responds with OK to UA-A.
- Oracle® Enterprise Session Border Controller sends BYE to UA-B.
- UA-B responds with OK to Oracle® Enterprise Session Border Controller.
- Oracle® Enterprise Session Border Controller sends BYE to SRS2.
- SRS2 responds with OK to Oracle® Enterprise Session Border Controller.