Zum Hauptinhalt springen

5.1.2. Profile Names and Interoperability (Profilnamen und Interoperabilität)

5.1.2. Profile Names and Interoperability (Profilnamen und Interoperabilität)

Für Medien-"m="-Abschnitte MÜSSEN JSEP-Implementierungen das in [RFC5764] spezifizierte Profil "UDP/TLS/RTP/SAVPF" sowie das in [RFC7850] spezifizierte Profil "TCP/DTLS/RTP/SAVPF" unterstützen und MÜSSEN eines dieser Profile für jede Medien-"m="-Zeile angeben, die sie in einem Angebot erzeugen. Für Daten-"m="-Abschnitte MÜSSEN Implementierungen das Profil "UDP/DTLS/SCTP" sowie das Profil "TCP/DTLS/SCTP" unterstützen und MÜSSEN eines dieser Profile für jede Daten-"m="-Zeile angeben, die sie in einem Angebot erzeugen. Das zu verwendende genaue Profil wird durch das Protokoll bestimmt, das dem aktuellen Standard- oder ausgewählten ICE-Kandidaten zugeordnet ist, wie in [RFC8839], Abschnitt 4.2.1.2 beschrieben.

Leider erzeugen einige Endpunkte im Versuch der Kompatibilität andere Profilzeichenfolgen, selbst wenn sie beabsichtigen, eines dieser Profile zu unterstützen. Beispielsweise könnte ein Endpunkt "RTP/AVP" generieren, aber "a=fingerprint"- und "a=rtcp-fb"-Attribute bereitstellen, was seine Bereitschaft anzeigt, "UDP/TLS/RTP/SAVPF" oder "TCP/DTLS/RTP/SAVPF" zu unterstützen. Um die Kompatibilität mit solchen Endpunkten zu vereinfachen, MÜSSEN JSEP-Implementierungen die folgenden Regeln befolgen, wenn sie die Medien-"m="-Abschnitte in einem empfangenen Angebot verarbeiten:

  • Jedes Profil im Angebot, das mit einem der folgenden übereinstimmt, MUSS akzeptiert werden:

    • "RTP/AVP" (definiert in [RFC4566], Abschnitt 8.2.2)
    • "RTP/AVPF" (definiert in [RFC4585], Abschnitt 9)
    • "RTP/SAVP" (definiert in [RFC3711], Abschnitt 12)
    • "RTP/SAVPF" (definiert in [RFC5124], Abschnitt 6)
    • "TCP/DTLS/RTP/SAVP" (definiert in [RFC7850], Abschnitt 3.4)
    • "TCP/DTLS/RTP/SAVPF" (definiert in [RFC7850], Abschnitt 3.5)
    • "UDP/TLS/RTP/SAVP" (definiert in [RFC5764], Abschnitt 9)
    • "UDP/TLS/RTP/SAVPF" (definiert in [RFC5764], Abschnitt 9)
  • Das Profil in jeder "m="-Zeile in jeder generierten Antwort MUSS genau mit dem im Angebot bereitgestellten Profil übereinstimmen.

  • Da DTLS-SRTP ERFORDERLICH ist, hat die Wahl von SAVP oder AVP keine Auswirkung; die Unterstützung für DTLS-SRTP wird durch das Vorhandensein eines oder mehrerer "a=fingerprint"-Attribute bestimmt. Beachten Sie, dass das Fehlen eines "a=fingerprint"-Attributs zu einem Verhandlungsfehler führt.

  • Die Verwendung von AVPF oder AVP steuert lediglich die Zeitregeln, die für RTCP-Feedback verwendet werden. Wenn AVPF bereitgestellt wird oder ein "a=rtcp-fb"-Attribut vorhanden ist, nehmen Sie AVPF-Timing an, d.h. einen Standardwert von "trr-int=0". Andernfalls nehmen Sie an, dass AVPF in einem AVP-kompatiblen Modus verwendet wird, und verwenden Sie einen Wert von "trr-int=4000".

  • Für Daten-"m="-Abschnitte MÜSSEN Implementierungen den Empfang der Profile "UDP/DTLS/SCTP", "TCP/DTLS/SCTP" oder "DTLS/SCTP" (für Rückwärtskompatibilität) unterstützen.

Beachten Sie, dass Neuangebote von JSEP-Implementierungen die korrekten Profilzeichenfolgen verwenden MÜSSEN, selbst wenn der anfängliche Angebots-/Antwortaustausch eine (falsche) ältere Profilzeichenfolge verwendete. Dies vereinfacht das JSEP-Verhalten mit minimalem Nachteil, da jeder entfernte Endpunkt, der ein solches Neuangebot nicht verarbeiten kann, auch das anfängliche Angebot eines JSEP-Endpunkts nicht verarbeiten kann.