Re-transmitted RTP packets from pre-rollover are sent using new rollover?

49 views
Skip to first unread message

Anton Venema

unread,
Apr 25, 2017, 2:23:23 AM4/25/17
to discuss-webrtc
Hey all,

We noticed some odd behaviour in Chrome. If a NACK is sent to Chrome for a packet in the upper range of RTP sequence numbers, and Chrome's SRTP sender has rolled over into the lower range of RTP sequence numbers, the old RTP packet will be retransmitted using the new rollover counter instead of the one that was used originally to encrypt the packet.

Expected Behaviour:

1) Chrome's RTP encryption ROC == 0, sends packet with RTP sequence number 65535, encrypted using ROC == 0.
2) Chrome's RTP encryption ROC == 1, sends packet with RTP sequence number 0, encrypted using ROC == 1.
3) Chrome receives a NACK for RTP sequence number 65535.
4) Chrome resends packet with RTP sequence number 65535, encrypted using ROC == 0.

Actual Behaviour:

1) Chrome's RTP encryption ROC == 0, sends packet with RTP sequence number 65535, encrypted using ROC == 0.
2) Chrome's RTP encryption ROC == 1, sends packet with RTP sequence number 0, encrypted using ROC == 1.
3) Chrome receives a NACK for RTP sequence number 65535.
4) Chrome resends packet with RTP sequence number 65535, encrypted using ROC == 1.

Albeit time consuming, the issue is easy to reproduce using a network link conditioner with modest packet loss to trigger a consistent stream of NACKs. The issue will show up around the rollover boundary with fairly high probability.

In general, unless the extended RTP header is being modified, I would expect that the retransmitted packets would not be modified from their original form. If encryption is being performed again for retransmitted packets, I would think that the encryption layer should be looking at the delta between the current RTP sequence number and the highest transmitted RTP index to determine which ROC value should be used so as to be consistent for retransmissions.

Related to this:


...?

Sergio Garcia Murillo

unread,
Apr 25, 2017, 3:12:45 AM4/25/17
to discuss...@googlegroups.com
I assume that you are not using RTX, right? 

Best regards
Sergio

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrtc+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/discuss-webrtc/9c0661ae-4749-40ed-be05-c24d87b84af9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages