rfc9429v6.txt | rfc9429.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) J. Uberti | Internet Engineering Task Force (IETF) J. Uberti | |||
Request for Comments: 9429 | Request for Comments: 9429 | |||
Obsoletes: 8829 C. Jennings | Obsoletes: 8829 C. Jennings | |||
Category: Standards Track Cisco | Category: Standards Track Cisco | |||
ISSN: 2070-1721 E. Rescorla, Ed. | ISSN: 2070-1721 E. Rescorla, Ed. | |||
Mozilla | Windy Hill Systems, LLC | |||
February 2024 | April 2024 | |||
JavaScript Session Establishment Protocol (JSEP) | JavaScript Session Establishment Protocol (JSEP) | |||
Abstract | Abstract | |||
This document describes the mechanisms for allowing a JavaScript | This document describes the mechanisms for allowing a JavaScript | |||
application to control the signaling plane of a multimedia session | application to control the signaling plane of a multimedia session | |||
via the interface specified in the W3C RTCPeerConnection API and | via the interface specified in the W3C RTCPeerConnection API and | |||
discusses how this relates to existing signaling protocols. | discusses how this relates to existing signaling protocols. | |||
skipping to change at line 1785 ¶ | skipping to change at line 1785 ¶ | |||
The first step in generating an initial offer is to generate session- | The first step in generating an initial offer is to generate session- | |||
level attributes, as specified in [RFC4566], Section 5. | level attributes, as specified in [RFC4566], Section 5. | |||
Specifically: | Specifically: | |||
* The first SDP line MUST be "v=0" as defined in [RFC4566], | * The first SDP line MUST be "v=0" as defined in [RFC4566], | |||
Section 5.1. | Section 5.1. | |||
* The second SDP line MUST be an "o=" line as defined in [RFC4566], | * The second SDP line MUST be an "o=" line as defined in [RFC4566], | |||
Section 5.2. The value of the <username> field SHOULD be "-". | Section 5.2. The value of the <username> field SHOULD be "-". | |||
The <sess-id> MUST be representable by a 64-bit signed integer, | The <sess-id> MUST be representable by a 64-bit signed integer, | |||
and the value MUST be less than 2^63-1. This is to ensure that | and the value MUST be less than (2^63)-1. This is to ensure that | |||
the <sess-id> value, when expressed as a string, is always a non- | the <sess-id> value, when expressed as a string, is always a non- | |||
negative integer, as some SDP parsers may fail to parse a negative | negative integer, as some SDP parsers may fail to parse a negative | |||
<sess-id>. It is RECOMMENDED that the <sess-id> be constructed by | <sess-id>. It is RECOMMENDED that the <sess-id> be constructed by | |||
generating a 64-bit quantity with the highest bit set to zero and | generating a 64-bit quantity with the highest bit set to zero and | |||
the remaining 63 bits being cryptographically random. The value | the remaining 63 bits being cryptographically random. The value | |||
of the <nettype> <addrtype> <unicast-address> tuple SHOULD be set | of the <nettype> <addrtype> <unicast-address> tuple SHOULD be set | |||
to a non-meaningful address, such as IN IP4 0.0.0.0, to prevent | to a non-meaningful address, such as IN IP4 0.0.0.0, to prevent | |||
leaking a local IP address in this field; this problem is | leaking a local IP address in this field; this problem is | |||
discussed in [RFC8828]. As mentioned in [RFC4566], the entire | discussed in [RFC8828]. As mentioned in [RFC4566], the entire | |||
"o=" line needs to be unique, but selecting a random number for | "o=" line needs to be unique, but selecting a random number for | |||
skipping to change at line 4484 ¶ | skipping to change at line 4484 ¶ | |||
JSEP implementation MUST be prepared for the JavaScript to pass in | JSEP implementation MUST be prepared for the JavaScript to pass in | |||
bogus data instead. | bogus data instead. | |||
Conversely, the application programmer needs to be aware that the | Conversely, the application programmer needs to be aware that the | |||
JavaScript does not have complete control of endpoint behavior. One | JavaScript does not have complete control of endpoint behavior. One | |||
case that bears particular mention is that editing ICE candidates out | case that bears particular mention is that editing ICE candidates out | |||
of the SDP or suppressing trickled candidates does not have the | of the SDP or suppressing trickled candidates does not have the | |||
expected behavior: implementations will still perform checks from | expected behavior: implementations will still perform checks from | |||
those candidates even if they are not sent to the other side. Thus, | those candidates even if they are not sent to the other side. Thus, | |||
for instance, it is not possible to prevent the remote peer from | for instance, it is not possible to prevent the remote peer from | |||
learning an application's public IP address by removing server- | learning an endpoint's public IP address by removing server-reflexive | |||
reflexive candidates. Applications that wish to conceal their public | candidates. Endpoints that wish to conceal their public IP address | |||
IP address MUST instead configure the ICE agent to use only relay | MUST instead configure the ICE agent to use only relay candidates. | |||
candidates. | ||||
9. IANA Considerations | 9. IANA Considerations | |||
This document has no IANA actions. | This document has no IANA actions. | |||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
skipping to change at line 4813 ¶ | skipping to change at line 4812 ¶ | |||
Nandakumar, S. and C. F. Jennings, "Annotated Example SDP | Nandakumar, S. and C. F. Jennings, "Annotated Example SDP | |||
for WebRTC", Work in Progress, Internet-Draft, draft-ietf- | for WebRTC", Work in Progress, Internet-Draft, draft-ietf- | |||
rtcweb-sdp-14, 17 December 2020, | rtcweb-sdp-14, 17 December 2020, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-rtcweb- | <https://datatracker.ietf.org/doc/html/draft-ietf-rtcweb- | |||
sdp-14>. | sdp-14>. | |||
[TS26.114] 3GPP, "3rd Generation Partnership Project; Technical | [TS26.114] 3GPP, "3rd Generation Partnership Project; Technical | |||
Specification Group Services and System Aspects; IP | Specification Group Services and System Aspects; IP | |||
Multimedia Subsystem (IMS); Multimedia Telephony; Media | Multimedia Subsystem (IMS); Multimedia Telephony; Media | |||
handling and interaction (Release 18)", 3GPP TS 26.114 | handling and interaction (Release 18)", 3GPP TS 26.114 | |||
V18.4.0, September 2023, | V18.6.0, March 2024, | |||
<https://www.3gpp.org/DynaReport/26114.htm>. | <https://www.3gpp.org/DynaReport/26114.htm>. | |||
[W3C.webrtc] | [W3C.webrtc] | |||
Jennings, C., Ed., Castelli, F., Ed., Boström, H., Ed., | Jennings, C., Ed., Castelli, F., Ed., Boström, H., Ed., | |||
and J-I. Bruaroey, Ed., "WebRTC: Real-time Communication | and J-I. Bruaroey, Ed., "WebRTC: Real-time Communication | |||
Between Browsers", W3C Recommendation, March 2023, | Between Browsers", W3C Recommendation, March 2023, | |||
<https://www.w3.org/TR/2023/REC-webrtc-20230306/>. | <https://www.w3.org/TR/2023/REC-webrtc-20230306/>. | |||
Appendix A. SDP ABNF Syntax | Appendix A. SDP ABNF Syntax | |||
skipping to change at line 4912 ¶ | skipping to change at line 4911 ¶ | |||
Email: justin@uberti.name | Email: justin@uberti.name | |||
Cullen Jennings | Cullen Jennings | |||
Cisco | Cisco | |||
400 3rd Avenue SW | 400 3rd Avenue SW | |||
Calgary AB T2P 4H2 | Calgary AB T2P 4H2 | |||
Canada | Canada | |||
Email: fluffy@iii.ca | Email: fluffy@iii.ca | |||
Eric Rescorla (editor) | Eric Rescorla (editor) | |||
Mozilla | Windy Hill Systems, LLC | |||
Email: ekr@rtfm.com | Email: ekr@rtfm.com | |||
End of changes. 5 change blocks. | ||||
9 lines changed or deleted | 8 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |