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:

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.

This illustration shows a ladder diagram in which the SBC and the Session Recording Server exchange invites. The SBC sends a 491 Request Pending response to the SRS, while waitng for a response. The diagram shows where in the invite exchange the SBC waits a random amounti of time before re-sending the Invite.

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.

The selective recording normal call call flow is described in the following list.

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.

The normal call without required recording call flow is described in the following list.
  • 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.

The early media call without required recording call flow is described below.
  • 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.

The REFER pass-through call handled by the UA call flow is described below.
  • 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.

The REFER call handled by the SBC call flow is described below.
  • 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.

The SRS indicates busy without recording required call flow is described below.
  • 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.