srt icon indicating copy to clipboard operation
srt copied to clipboard

How to have separate control path?

Open lhh31 opened this issue 3 years ago • 5 comments

Is it possible to have a separate control path to the main media path? I.e. the main path is a high bandwidth lossly link, but the control path is a low bandwidth link that is used to indicate which packets to be retransmitted?

lhh31 avatar Jul 05 '22 15:07 lhh31

You need to realize what exactly packets are being sent between parties during the normal stream transmission:

  • Sender to Receiver: DATA packets, ACKACK packets
  • Receiver to Sender: ACK packets, LOSSREPORT packets

Of course, if you have a bidirectional communication, then all these types of packets are being sent in all directions. Just note this: ACK and ACKACK packets must be sent on the same link that is used to send the data because they are being used in the important link statistics measurements - the flight window and RTT. Effectively the only thing you could leverage to the other link as control packet would be LOSSREPORT. But:

  1. In some modes, LOSSREPORT is also being used for statistics. This is the situation of the file mode where the link quality must be constantly measured and the available top speed estimated; LOSSREPORT plays a vital role in it and therefore the sender must know which link the loss concerns.
  2. In live mode, the losses must be small and only occasional, hence LOSSREPORTs should be rare and short, otherwise you won't have a clear signal. This means the link capacity taken by LOSSREPORTs is so negligible that it doesn't even make any sense to use a separate link for it (especially in a single direction transmission as they will be sent in the opposite direction than the data). This low bandwidth link would be much better used if some percentage of the data packets are sent over it.

You might think about sending the retransmitted data packets over the low bandwidth link, but this solves no problem either - retransmissions are completely unpredictable and may be both big and small, as well as if you want to be sure that the link isn't suddenly broken and can't handle these retransmissions, you have to send KEEPALIVE packets while no retransmission is being sent, which wouldn't be sent at all in an active link used for regular data.

ethouris avatar Jul 06 '22 07:07 ethouris

Ok I think that is clear. It is not possible, nor advisable, to implement such a system where only the low bandwidth link is bi-directional and the high bandwidth link is unidirectional.

lhh31 avatar Jul 06 '22 08:07 lhh31

SRT cannot be used on unidirectional links at all. Not only because it needs the ACKs back, but also that without them you can't measure anything.

ethouris avatar Jul 06 '22 08:07 ethouris

This would be using a unidirectional link + bidirectional link. The RTT time would be a measure of the downlink on the bidirectional link + uplink on unidirectional link. But it appears this is not possible.

lhh31 avatar Jul 06 '22 09:07 lhh31

That's not an RTT, if the measurement is by having a packet travel forwards on link 1 and return on link 2. That's not impossible, but useless. And RTT is an extremely important measurement for adjusting the network latency penalty and drift.

ethouris avatar Jul 06 '22 12:07 ethouris