Background
WebRTC implements the abs-send-time RTP header extension [1]. It reflects the actual transmission time when the RTP packet was put onto the network. It is negotiated on the SDP level and has traditionally been used for receiver-side bandwidth estimation. With the introduction of sender-side bandwidth estimation and the transport-wide congestion control (TWCC) extensions [2] WebRTC started filtering out and not sending the abs-send-time header extension despite it being offered and negotiated on the SDP level, if the TWCC extensions were also negotiated. This was done to eliminate the traffic overhead of 4 bytes per RTP packet that the abs-send-time extension requires.
Problem Statement
There are several problems with the WebRTC-internal suppression of the abs-send-time extension. Firstly, abs-send-time is useful beyond pure bandwidth estimation since it enables generating statistics about network delay variations by observing traffic on the receiver’s end only. Secondly, there is currently no possibility for the application to enable both abs-send-time and TWCC extensions in parallel. And thirdly, it is unexpected behaviour that a negotiated extension is not actually sent.
Change
We introduced a change to WebRTC [4] that makes abs-send-time not being filtered out even when the TWCC extensions were also negotiated. The consequence is that with the default SDP offerings, the sent RTP packets will contain both the transport-wide sequence number and abs-send-time header extensions.
This should not cause any problems for a correctly implemented receiver since the new behaviour is RTP-standard-compliant and the receiver offered both extensions in its SDP. Withholding bugs, no actions should be needed. If the 4-byte per RTP packet overhead is a concern in a particular application, we advice to remove abs-send-time from the SDP offer if TWCC is used.
Rollout
The change is enabled by the FieldTrial “WebRTC-KeepAbsSendTimeExtension” [5] and is expected to be gradually rolled out in Chrome M73. The change can be force-enabled for testing purposes by specifying “--force-fieldtrials=WebRTC-KeepAbsSendTimeExtension/Enabled/” as a command line option when starting Chrome.