tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Gloss.     Arch.     IMS     UICC    |    Misc.    |    search     info

RFC 7865

 
 
 

Session Initiation Protocol (SIP) Recording Metadata

Part 2 of 2, p. 22 to 34
Prev RFC Part

 


prevText      Top      ToC       Page 22 
7.  Recording Metadata Snapshot Request Format

   The SRS can explicitly request a metadata snapshot from the SRC.  To
   request a metadata snapshot, the SRS MUST send a SIP request message
   with an XML document having the namespace
   urn:ietf:params:xml:ns:recording:1.  The XML document has the
   following elements:

   o  A 'requestsnapshot' XML element MUST be present as the top-level
      element in the XML document.

   o  A 'requestreason' XML element that indicates the reason (as a
      string) for requesting the snapshot MAY be present as a child XML
      element of 'requestsnapshot'.

   The example below shows a metadata snapshot request from the SRS.

   <?xml version="1.0" encoding="UTF-8"?>
     <requestsnapshot xmlns='urn:ietf:params:xml:ns:recording:1'>
     <requestreason xml:lang="it">SRS internal error</requestreason>
   </requestsnapshot>

             Example Metadata Snapshot Request from SRS to SRC

Top      Up      ToC       Page 23 
8.  SIP Recording Metadata Examples

8.1.  Complete SIP Recording Metadata Example

   The following example provides all the tuples involved in the
   recording metadata XML body.

   <?xml version="1.0" encoding="UTF-8"?>
     <recording xmlns='urn:ietf:params:xml:ns:recording:1'>
     <datamode>complete</datamode>
     <group group_id="7+OTCyoxTmqmqyA/1weDAg==">
       <associate-time>2010-12-16T23:41:07Z</associate-time>
       <!-- Standardized extension -->
       <call-center xmlns='urn:ietf:params:xml:ns:callcenter'>
             <supervisor>sip:alice@atlanta.com</supervisor>
       </call-center>
       <mydata xmlns='http://example.com/my'>
             <structure>FOO!</structure>
             <whatever>bar</whatever>
       </mydata>
     </group>
     <session session_id="hVpd7YQgRW2nD22h7q60JQ==">
           <sipSessionID>ab30317f1a784dc48ff824d0d3715d86;
           remote=47755a9de7794ba387653f2099600ef2</sipSessionID>
           <group-ref>7+OTCyoxTmqmqyA/1weDAg==</group-ref>
           <!-- Standardized extension -->
       <mydata xmlns='http://example.com/my'>
             <structure>FOO!</structure>
              <whatever>bar</whatever>
           </mydata>
     </session>
     <participant participant_id="srfBElmCRp2QB23b7Mpk0w==">
           <nameID aor="sip:bob@biloxi.com">
              <name xml:lang="it">Bob</name>
           </nameID>
           <!-- Standardized extension -->
           <mydata xmlns='http://example.com/my'>
                   <structure>FOO!</structure>
                   <whatever>bar</whatever>
           </mydata>
     </participant>

Top      Up      ToC       Page 24 
     <participant participant_id="zSfPoSvdSDCmU3A3TRDxAw==">
           <nameID aor="sip:Paul@biloxi.com">
             <name xml:lang="it">Paul</name>
           </nameID>
           <!-- Standardized extension -->
           <mydata xmlns='http://example.com/my'>
              <structure>FOO!</structure>
              <whatever>bar</whatever>
           </mydata>
     </participant>
     <stream stream_id="UAAMm5GRQKSCMVvLyl4rFw=="
             session_id="hVpd7YQgRW2nD22h7q60JQ==">
           <label>96</label>
     </stream>
     <stream stream_id="i1Pz3to5hGk8fuXl+PbwCw=="
              session_id="hVpd7YQgRW2nD22h7q60JQ==">
            <label>97</label>
     </stream>
     <stream stream_id="8zc6e0lYTlWIINA6GR+3ag=="
              session_id="hVpd7YQgRW2nD22h7q60JQ==">
           <label>98</label>
     </stream>
     <stream stream_id="EiXGlc+4TruqqoDaNE76ag=="
              session_id="hVpd7YQgRW2nD22h7q60JQ==">
           <label>99</label>
     </stream>
     <sessionrecordingassoc session_id="hVpd7YQgRW2nD22h7q60JQ==">
                   <associate-time>2010-12-16T23:41:07Z</associate-time>
     </sessionrecordingassoc>
     <participantsessionassoc
          participant_id="srfBElmCRp2QB23b7Mpk0w=="
          session_id="hVpd7YQgRW2nD22h7q60JQ==">
           <associate-time>2010-12-16T23:41:07Z</associate-time>
     </participantsessionassoc>
     <participantsessionassoc
          participant_id="zSfPoSvdSDCmU3A3TRDxAw=="
          session_id="hVpd7YQgRW2nD22h7q60JQ==">
              <associate-time>2010-12-16T23:41:07Z</associate-time>
     </participantsessionassoc>

Top      Up      ToC       Page 25 
     <participantstreamassoc
          participant_id="srfBElmCRp2QB23b7Mpk0w==">
              <send>i1Pz3to5hGk8fuXl+PbwCw==</send>
              <send>UAAMm5GRQKSCMVvLyl4rFw==</send>
              <recv>8zc6e0lYTlWIINA6GR+3ag==</recv>
              <recv>EiXGlc+4TruqqoDaNE76ag==</recv>
     </participantstreamassoc>
     <participantstreamassoc
          participant_id="zSfPoSvdSDCmU3A3TRDxAw==">
              <send>8zc6e0lYTlWIINA6GR+3ag==</send>
              <send>EiXGlc+4TruqqoDaNE76ag==</send>
              <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv>
              <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv>
     </participantstreamassoc>
   </recording>

                 Example Metadata Snapshot from SRC to SRS

8.2.  Partial Update of Recording Metadata XML Body

   The following example provides a partial update in the recording
   metadata XML body for the above example.  The example has a snapshot
   that carries the disassociate-time for a participant from a session.

   <?xml version="1.0" encoding="UTF-8"?>
     <recording xmlns='urn:ietf:params:xml:ns:recording:1'>
       <datamode>partial</datamode>
         <participant
           participant_id="srfBElmCRp2QB23b7Mpk0w==">
           <nameID aor="sip:bob@biloxi.com">
                     <name xml:lang="it">Bob</name>
               </nameID>
         </participant>
         <participantsessionassoc
            participant_id="srfBElmCRp2QB23b7Mpk0w=="
            session_id="hVpd7YQgRW2nD22h7q60JQ==">
           <disassociate-time>2010-12-16T23:41:07Z</disassociate-time>
         </participantsessionassoc>
     </recording>

             Partial Update of SIP Recording Example XML Body

Top      Up      ToC       Page 26 
9.  XML Schema Definition for Recording Metadata

   This section defines the XML schema for the recording metadata
   document.

<?xml version="1.0" encoding="UTF-8"?>
   <xs:schema targetNamespace="urn:ietf:params:xml:ns:recording:1"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:tns="urn:ietf:params:xml:ns:recording:1"
      elementFormDefault="qualified"
      attributeFormDefault="unqualified">
    <!-- This import brings in the XML language attribute xml:lang -->
    <xs:import namespace="http://www.w3.org/XML/1998/namespace"
                 schemaLocation="https://www.w3.org/2001/xml.xsd"/>
    <xs:element name="recording" type="tns:recording"/>
    <xs:complexType name="recording">
        <xs:sequence>
            <xs:element name="datamode" type="tns:dataMode"
                  minOccurs="0"/>
            <xs:element name="group" type="tns:group"
                  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="session" type="tns:session"
                  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="participant" type="tns:participant"
                  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="stream" type="tns:stream"
                  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="sessionrecordingassoc"
                  type="tns:sessionrecordingassoc"
                  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="participantsessionassoc"
                  type="tns:participantsessionassoc"
                  minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="participantstreamassoc"
                  type="tns:participantstreamassoc"
                  minOccurs="0" maxOccurs="unbounded"/>
            <xs:any namespace='##other'
                     minOccurs='0'
                     maxOccurs='unbounded'
                     processContents='lax'/>
         </xs:sequence>
    </xs:complexType>

Top      Up      ToC       Page 27 
    <xs:complexType name="group">
        <xs:sequence>
           <xs:element name="associate-time" type="xs:dateTime"
              minOccurs="0"/>
           <xs:element name="disassociate-time" type="xs:dateTime"
              minOccurs="0"/>
          <xs:any namespace='##other'
                     minOccurs='0'
                     maxOccurs='unbounded'
                     processContents='lax'/>
        </xs:sequence>
        <xs:attribute name="group_id" type="xs:base64Binary"
              use="required"/>
    </xs:complexType>
    <xs:complexType name="session">
        <xs:sequence>
           <xs:element name="sipSessionID" type="xs:string"
                  minOccurs="0" maxOccurs="unbounded"/>
           <xs:element name="reason" type="tns:reason"
                  minOccurs="0" maxOccurs="unbounded"/>
           <xs:element name="group-ref" type="xs:base64Binary"
                  minOccurs="0" maxOccurs="1"/>
           <xs:element name="start-time" type="xs:dateTime"
                  minOccurs="0" maxOccurs="1"/>
           <xs:element name="stop-time" type="xs:dateTime"
                  minOccurs="0" maxOccurs="1"/>
              <xs:any namespace='##other'
                     minOccurs='0'
                     maxOccurs='unbounded'
                     processContents='lax'/>
        </xs:sequence>
        <xs:attribute name="session_id" type="xs:base64Binary"
              use="required"/>
    </xs:complexType>
    <xs:complexType name="sessionrecordingassoc">
        <xs:sequence>
           <xs:element name="associate-time" type="xs:dateTime"
                  minOccurs="0"/>
           <xs:element name="disassociate-time" type="xs:dateTime"
                  minOccurs="0"/>
           <xs:any namespace='##other'
                     minOccurs='0'
                     maxOccurs='unbounded'
                     processContents='lax'/>
        </xs:sequence>
        <xs:attribute name="session_id" type="xs:base64Binary"
              use="required"/>
    </xs:complexType>

Top      Up      ToC       Page 28 
    <xs:complexType name="participant">
        <xs:sequence>
             <xs:element name="nameID" type="tns:nameID"
                     maxOccurs='unbounded'/>
        <xs:any namespace='##other'
                     minOccurs='0'
                     maxOccurs='unbounded'
                     processContents='lax'/>
        </xs:sequence>
        <xs:attribute name="participant_id" type="xs:base64Binary"
              use="required"/>
    </xs:complexType>
    <xs:complexType name="participantsessionassoc">
        <xs:sequence>
        <xs:element name="associate-time" type="xs:dateTime"
                  minOccurs="0"/>
        <xs:element name="disassociate-time" type="xs:dateTime"
                  minOccurs="0"/>
        <xs:element name="param" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
                <xs:attribute name="pname" type="xs:string"
                  use="required"/>
                <xs:attribute name="pval" type="xs:string"
                  use="required"/>
            </xs:complexType>
        </xs:element>
        <xs:any namespace='##other'
                minOccurs='0'
                maxOccurs='unbounded'
                processContents='lax'/>
        </xs:sequence>
        <xs:attribute name="participant_id" type="xs:base64Binary"
              use="required"/>
        <xs:attribute name="session_id" type="xs:base64Binary"
              use="required"/>
    </xs:complexType>

Top      Up      ToC       Page 29 
    <xs:complexType name="participantstreamassoc">
        <xs:sequence>
            <xs:element name="send" type="xs:base64Binary"
               minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="recv" type="xs:base64Binary"
               minOccurs="0" maxOccurs="unbounded"/>
               <xs:element name="associate-time" type="xs:dateTime"
                  minOccurs="0"/>
            <xs:element name="disassociate-time" type="xs:dateTime"
                  minOccurs="0"/>
               <xs:any namespace='##other'
                     minOccurs='0'
                     maxOccurs='unbounded'
                     processContents='lax'/>
        </xs:sequence>
        <xs:attribute name="participant_id" type="xs:base64Binary"
              use="required"/>
    </xs:complexType>
    <xs:complexType name="stream">
        <xs:sequence>
           <xs:element name="label" type="xs:string"
               minOccurs="0" maxOccurs="1"/>
            <xs:any namespace='##other'
                     minOccurs='0'
                     maxOccurs='unbounded'
                     processContents='lax'/>
        </xs:sequence>
        <xs:attribute name="stream_id" type="xs:base64Binary"
              use="required"/>
        <xs:attribute name="session_id" type="xs:base64Binary"/>
    </xs:complexType>
    <xs:simpleType name="dataMode">
        <xs:restriction base="xs:string">
            <xs:enumeration value="complete"/>
                <xs:enumeration value="partial"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="nameID">
      <xs:sequence>
        <xs:element name="name" type ="tns:name" minOccurs="0"
                            maxOccurs="1"/>
      </xs:sequence>
      <xs:attribute name="aor" type="xs:anyURI" use="required"/>
    </xs:complexType>

Top      Up      ToC       Page 30 
   <xs:complexType name="name">
    <xs:simpleContent>
        <xs:extension base="xs:string">
           <xs:attribute ref="xml:lang" use="optional"/>
        </xs:extension>
    </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="reason">
      <xs:simpleContent>
       <xs:extension base="xs:string">
          <xs:attribute type="xs:short" name="cause" use="required"/>
          <xs:attribute type="xs:string" name="protocol" default="SIP"/>
       </xs:extension>
      </xs:simpleContent>
   </xs:complexType>
   <xs:element name="requestsnapshot" type="tns:requestsnapshot"/>
    <xs:complexType name="requestsnapshot">
       <xs:sequence>
          <xs:element name="requestreason" type="tns:name"
            minOccurs="0"/>
          <xs:any namespace='##other'
            minOccurs='0'
            maxOccurs='unbounded'
            processContents='lax'/>
       </xs:sequence>
    </xs:complexType>
</xs:schema>

10.  Security Considerations

   This document describes an extensive set of metadata that may be
   recorded by the SRS.  Most of the metadata could be considered
   private data.  The procedures mentioned in the Security
   Considerations section of [RFC7866] MUST be followed by the SRC and
   the SRS for mutual authentication and to protect the content of the
   metadata in the RS.

   An SRC MAY, by policy, choose to limit the parts of the metadata sent
   to the SRS for recording.  Also, the policy of the SRS might not
   require recording all the metadata it receives.  For the sake of data
   minimization, the SRS MUST NOT record additional metadata that is not
   explicitly required by local policy.  Metadata in storage needs to be
   provided with a level of security that is comparable to that of the
   recording session.

Top      Up      ToC       Page 31 
11.  IANA Considerations

   This specification registers a new XML namespace and a new XML
   schema.

11.1.  SIP Recording Metadata Schema Registration

   URI: urn:ietf:params:xml:ns:recording:1

   Registrant Contact:  IETF SIPREC working group, Ram Mohan R
      (rmohanr@cisco.com)

   XML: The registered XML schema is contained in Section 9.

   Its first line is <?xml version="1.0" encoding="UTF-8"?>, and its
   last line is </xs:schema>.

12.  References

12.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC3261]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
              A., Peterson, J., Sparks, R., Handley, M., and E.
              Schooler, "SIP: Session Initiation Protocol", RFC 3261,
              DOI 10.17487/RFC3261, June 2002,
              <http://www.rfc-editor.org/info/rfc3261>.

   [RFC3339]  Klyne, G. and C. Newman, "Date and Time on the Internet:
              Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
              <http://www.rfc-editor.org/info/rfc3339>.

   [RFC3840]  Rosenberg, J., Schulzrinne, H., and P. Kyzivat,
              "Indicating User Agent Capabilities in the Session
              Initiation Protocol (SIP)", RFC 3840,
              DOI 10.17487/RFC3840, August 2004,
              <http://www.rfc-editor.org/info/rfc3840>.

   [RFC4122]  Leach, P., Mealling, M., and R. Salz, "A Universally
              Unique IDentifier (UUID) URN Namespace", RFC 4122,
              DOI 10.17487/RFC4122, July 2005,
              <http://www.rfc-editor.org/info/rfc4122>.

Top      Up      ToC       Page 32 
   [RFC4566]  Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
              Description Protocol", RFC 4566, DOI 10.17487/RFC4566,
              July 2006, <http://www.rfc-editor.org/info/rfc4566>.

   [RFC4574]  Levin, O. and G. Camarillo, "The Session Description
              Protocol (SDP) Label Attribute", RFC 4574,
              DOI 10.17487/RFC4574, August 2006,
              <http://www.rfc-editor.org/info/rfc4574>.

   [RFC4648]  Josefsson, S., "The Base16, Base32, and Base64 Data
              Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
              <http://www.rfc-editor.org/info/rfc4648>.

   [RFC4796]  Hautakorpi, J. and G. Camarillo, "The Session Description
              Protocol (SDP) Content Attribute", RFC 4796,
              DOI 10.17487/RFC4796, February 2007,
              <http://www.rfc-editor.org/info/rfc4796>.

   [RFC7866]  Portman, L., Lum, H., Ed., Eckel, C., Johnston, A., and A.
              Hutton, "Session Recording Protocol", RFC 7866,
              DOI 10.17487/RFC7866, May 2016,
              <http://www.rfc-editor.org/info/rfc7866>.

12.2.  Informative References

   [RFC3325]  Jennings, C., Peterson, J., and M. Watson, "Private
              Extensions to the Session Initiation Protocol (SIP) for
              Asserted Identity within Trusted Networks", RFC 3325,
              DOI 10.17487/RFC3325, November 2002,
              <http://www.rfc-editor.org/info/rfc3325>.

   [RFC3326]  Schulzrinne, H., Oran, D., and G. Camarillo, "The Reason
              Header Field for the Session Initiation Protocol (SIP)",
              RFC 3326, DOI 10.17487/RFC3326, December 2002,
              <http://www.rfc-editor.org/info/rfc3326>.

   [RFC3966]  Schulzrinne, H., "The tel URI for Telephone Numbers",
              RFC 3966, DOI 10.17487/RFC3966, December 2004,
              <http://www.rfc-editor.org/info/rfc3966>.

   [RFC4235]  Rosenberg, J., Schulzrinne, H., and R. Mahy, Ed., "An
              INVITE-Initiated Dialog Event Package for the Session
              Initiation Protocol (SIP)", RFC 4235,
              DOI 10.17487/RFC4235, November 2005,
              <http://www.rfc-editor.org/info/rfc4235>.

Top      Up      ToC       Page 33 
   [RFC6341]  Rehor, K., Ed., Portman, L., Ed., Hutton, A., and R. Jain,
              "Use Cases and Requirements for SIP-Based Media Recording
              (SIPREC)", RFC 6341, DOI 10.17487/RFC6341, August 2011,
              <http://www.rfc-editor.org/info/rfc6341>.

   [RFC7245]  Hutton, A., Ed., Portman, L., Ed., Jain, R., and K. Rehor,
              "An Architecture for Media Recording Using the Session
              Initiation Protocol", RFC 7245, DOI 10.17487/RFC7245,
              May 2014, <http://www.rfc-editor.org/info/rfc7245>.

   [SessionID]
              Jones, P., Salgueiro, G., Pearce, C., and P. Giralt,
              "End-to-End Session Identification in IP-Based Multimedia
              Communication Networks", Work in Progress,
              draft-ietf-insipid-session-id-22, April 2016.

   [UML]      Object Management Group, "OMG Unified Modeling Language
              (UML)", 2011, <http://www.omg.org/spec/UML/2.4/>.

Top      Up      ToC       Page 34 
Acknowledgements

   Thanks to John Elwell, Henry Lum, Leon Portman, De Villiers de Wet,
   Andrew Hutton, Deepanshu Gautam, Charles Eckel, Muthu Arul Mozhi
   Perumal, Michael Benenson, Hadriel Kaplan, Brian Rosen, Scott Orton,
   Ofir Roth, Mary Barnes, Ken Rehor, Gonzalo Salgueiro, Yaron Pdut,
   Alissa Cooper, Stephen Farrell, and Ben Campbell for their valuable
   comments and inputs.

   Thanks to Joe Hildebrand, Peter Saint-Andre, and Matt Miller for
   helping in writing the XML schema, and to Martin Thomson for
   validating the XML schema and providing comments on the same.

Authors' Addresses

   Ram Mohan Ravindranath
   Cisco Systems
   Cessna Business Park
   Bangalore, Karnataka
   India

   Email: rmohanr@cisco.com


   Parthasarathi Ravindran
   Nokia Networks
   Bangalore, Karnataka
   India

   Email: partha@parthasarathi.co.in


   Paul Kyzivat
   Huawei
   Hudson, MA
   United States

   Email: pkyzivat@alum.mit.edu