RFC 3550(RTP)のJava実装を行っていますが、小さな問題が発生しました。
第11章の第2段落では、次のように述べています。
(...)参加者は、着信RTPまたはRTCPパケットの送信元ポートが発信RTPまたはRTCPパケットの宛先ポートとして使用できると想定してはなりません(MUSTNOT)。RTPデータパケットが双方向に送信される場合、各参加者のRTCP SRパケットは、他の参加者がRTCPの受信用に指定したポートに送信する必要があります。(...)
RTPには、これらのアドレスとポート(SDPまたはその他のセットアッププロトコルまで)を通知するメカニズムがないため、この段落を「不明なソースからデータを受信している場合は、破棄するだけ」と理解できます。 。
ただし、セクション6.3.3では、基本的に、RTPまたは非BYE RTCPパケットが不明なSSRCで受信された場合、新しい参加者をテーブルに追加する必要があると述べています。
要約すると:
- 不明なSSRCを受信した場合は、新しい参加者を追加する必要があります。
- パケットの送信元IP/ポートをその参加者のパケットの宛先として使用することはできません。
- SDPは、各RTP参加者が使用するSSRCを定義していません。
- RTP参加者を手動で追加できます(他の方法で検出されます)が、SSRCがどうなるかはわかりません。
つまり、百万ドルの問題は、予期しないSSRCをどのように処理するのかということです。