SFU (Selective Forwarding Unit) is a video conferencing architecture which features the following data transmission processes between the server and the endpoints:
1. The server receives incoming video streams from all endpoints.
2. The server sends several copies of uncompressed video streams of other participants to each endpoint.
3. The endpoints merge incoming video streams.
Thanks to this, the client does not need to send the same outgoing signal to each participant. Instead, the stream is sent to the server and is distributed among all users. As a result, the participant sends one outgoing signal and receives streams of other users from the server.
SFU architecture advantages
- Since there is only one outgoing stream, the client does not need a wide outgoing channel.
- The incoming connection is not established directly to each participant, but to the media server.
- SFU architecture is less demanding to the server resources as compared to other video conferencing architectures.
SFU architecture disadvantages
- The server sends the image of excessive quality to the layout. As a result, each participant receives a video stream larger than it was required.
- Since the server cannot adjust the outgoing stream, there is a weak link problem. If one of the participants fails to connect, the quality of all the others decreases (up to the temporary shutdown of the video stream).
- The server demands higher bandwidth as compared to other video conferencing systems, since it needs to contain all copies of video streams created by it.
- The client will decode a large number of incoming media streams, so it will require a more powerful CPU and a wider incoming channel compared to other architectures.
- By default, the SFU does not support server-side recording. Instead, it only proxies media data.
- It is impossible to reach SIP/H.323 devices without the gateway configuration.
- As multiple media streams are not mixed into one stream, live streaming is unavailable.
Comparison: 4 participants, on the endpoint
MCU | SFU | Simulcast | SVC | |
---|---|---|---|---|
Outgoing streams | 1 | 1 | 3 | 1 |
Incoming streams | 1 | 3 | 3 | 3 |
Out channel, Mb/s | 1,0 | 1,0 | 1,5 | 1,2 |
Incoming channel, Mb/s | 1,0 | 3,0 | 1,0 | 1,0 |
CPU load | 20% | 60% | 80% | 30% |
Comparison: 4 participants, on the server
MCU | SFU | Simulcast | SVC | |
---|---|---|---|---|
Outgoing streams | 4 | 12 | 12 | 12 |
Incoming streams | 1 | 4 | 12 | 4 |
Out channel, Mb/s | 4,0 | 12,0 | ~4,0 | ~4,0 |
Incoming channel, Mb/s | 4,0 | 4,0 | 6,0 | 4,8 |
CPU load | 100% | 0% | 0% | 0% |