Skip to content

Commit

Permalink
[docs] Added Connection Bonding Quick Start documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
mbakholdina authored and maxsharabayko committed Jun 13, 2022
1 parent ccb47af commit e8b713e
Show file tree
Hide file tree
Showing 8 changed files with 153 additions and 18 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ SRT is applied to contribution and distribution endpoints as part of a video str

In live streaming configurations, the SRT protocol maintains a constant end-to-end latency. This allows the live stream’s signal characteristics to be recreated on the receiver side, reducing the need for buffering. As packets are streamed from source to destination, SRT detects and adapts to real-time network conditions between the two endpoints. It helps compensate for jitter and bandwidth fluctuations due to congestion over noisy networks.

[SRT implements AES encryption](https://datatracker.ietf.org/doc/html/draft-sharabayko-srt-01#section-6) to protect the payload of the media streams, and offers various error recovery mechanisms for minimizing the packet loss that is typical of Internet connections, of which Automatic Repeat reQuest (ARQ) is the primary method. With ARQ, when a receiver detects that a packet is missing it sends an alert to the sender requesting retransmission of this missing packet. [Forward Error Correction (FEC)](./docs/features/packet-filtering-and-fec.md) and [Connection Bonding](./docs/features/bonding-intro.md), which adds seamless stream protection and hitless failover, are also supported by the protocol.
[SRT implements AES encryption](https://datatracker.ietf.org/doc/html/draft-sharabayko-srt-01#section-6) to protect the payload of the media streams, and offers various error recovery mechanisms for minimizing the packet loss that is typical of Internet connections, of which Automatic Repeat reQuest (ARQ) is the primary method. With ARQ, when a receiver detects that a packet is missing it sends an alert to the sender requesting retransmission of this missing packet. [Forward Error Correction (FEC)](./docs/features/packet-filtering-and-fec.md) and [Connection Bonding](./docs/features/bonding-quick-start.md), which adds seamless stream protection and hitless failover, are also supported by the protocol.

<p align="right"><em>To learn more about the protocol subscribe to the <a href="https://medium.com/innovation-labs-blog/tagged/secure-reliable-transport">Innovation Labs Blog</a> on &nbsp;<img alt="slack logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Medium_%28website%29_logo.svg/500px-Medium_%28website%29_logo.svg.png" width="80"></em></p>

Expand Down Expand Up @@ -108,7 +108,7 @@ In live streaming configurations, the SRT protocol maintains a constant end-to-e
</details>

<details>
<summary><a href="./docs/features/bonding-intro.md">Connection Bonding</a></summary>
<summary><a href="./docs/features/bonding-quick-start.md">Connection Bonding</a></summary>

<p>

Expand Down
4 changes: 2 additions & 2 deletions docs/API/API-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -1751,8 +1751,8 @@ call [`srt_sendmsg2`](#srt_sendmsg) or [`srt_recvmsg2`](#srt_recvmsg2) function
for a group, you should pass an array here so that you can retrieve the status of
particular member sockets. If you pass an array that is too small, your `grpdata_size`
field will be rewritten with the current number of members, but without filling in
the array. For details, see the [SRT Connection Bonding](../features/bonding-intro.md) and
[SRT Socket Groups](../features/socket-groups.md) documents.
the array. For details, see the [SRT Connection Bonding: Quick Start](../features/bonding-intro.md) and
[SRT Connection Bonding: Socket Groups](../features/socket-groups.md) documents.

**Helpers for [`SRT_MSGCTRL`](#SRT_MSGCTRL):**

Expand Down
9 changes: 2 additions & 7 deletions docs/API/statistics.md
Original file line number Diff line number Diff line change
Expand Up @@ -716,14 +716,9 @@ that is received late.

## SRT Group Statistics

SRT group statistics are implemented for SRT Connection Bonding feature and available since SRT v1.5.0. Check the following documentation and code examples for details:
SRT group statistics are implemented for [SRT Connection Bonding](../features/bonding-quick-start.md) feature and available since SRT v1.5.0.

- Introduction in [SRT Connection Bonding](../features/bonding-intro.md),
- The concept of [SRT Socket Groups](../features/socket-groups.md). Here you will also find the information regarding the `srt-test-live` application for testing Connection Bonding,
- Check also [SRT API](API.md) and [SRT API Functions](API-functions.md) documentation for Connection Bonding related updates,
- Code examples: simple [client](https://github.com/Haivision/srt/blob/master/examples/test-c-client-bonding.c) and [server](https://github.com/Haivision/srt/blob/master/examples/test-c-server-bonding.c) implementation.

`srt_bistats(SRTSOCKET u, ...)` function can be used with a socket group ID as a first argument to get statistics for a group. Most values of the `SRT_TRACEBSTATS` will be filled with zeros except for the fields listed in [Summary Table](#group-summary-table) below. Refer to the documentation of the [SRT API Functions](API-functions.md) for usage instructions.
The `srt_bistats(SRTSOCKET u, ...)` function can be used with a socket group ID as the first argument to get statistics for a group. `SRT_TRACEBSTATS` values will mostly be zeros, except for the fields listed in the [Summary Table](#group-summary-table) below. Refer to the [SRT API Functions](../API/API-functions.md#socket-group-management) documentation for usage instructions.

### Summary Table <a name="group-summary-table"></a>

Expand Down
7 changes: 4 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@
| Document Title | Folder | File Name | Description |
| :----------------------------------------------------------- | :---------------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- |
| [SRT Access Control<br /> (Stream ID) Guidelines](features/access-control.md) | [features](features/) | [access-control.md](features/access-control.md) | Access Control (Stream ID) guidelines. |
| [SRT Connection Bonding](features/bonding-intro.md) | [features](features/) | [bonding-intro.md](features/bonding-intro.md) | Introduction to Connection Bonding. Description<br />of group (bonded) connections. |
| [SRT Socket Groups](features/socket-groups.md) | [features](features/) | [socket-groups.md](features/socket-groups.md) | Description of socket groups in SRT (Connection<br />Bonding). Here you will also find the information<br />regarding the `srt-test-live` application for testing<br />Connection Bonding. |
| [SRT Connection Bonding: Main/Backup][main-backup] | [features](features/) | [bonding-main-backup.md][main-backup] | SRT Main/Backup Connection Bonding. |
| [SRT Connection Bonding: Quick Start](features/bonding-quick-start.md) | [features](features/) | [bonding-quick-start.md](features/bonding-quick-start.md) | SRT Connection Bonding Quick Start. |
| [SRT Connection Bonding: Introduction](features/bonding-intro.md) | [features](features/) | [bonding-intro.md](features/bonding-intro.md) | Introduction to Connection Bonding. Description<br />of group (bonded) connections. |
| [SRT Connection Bonding: Socket Groups](features/socket-groups.md) | [features](features/) | [socket-groups.md](features/socket-groups.md) | Description of socket groups in SRT (Connection<br />Bonding). Here you will also find information<br />regarding the `srt-test-live` application for testing<br />Connection Bonding. |
| [SRT Connection Bonding: Main/Backup][main-backup] | [features](features/) | [bonding-main-backup.md][main-backup] | Main/Backup mode description. |
| [SRT Encryption](features/encryption.md) | [features](features/) | [encryption.md](features/encryption.md) | Description of SRT encryption mechanism. This<br />document might be outdated, please consult<br />[Section 6. Encryption][srt-internet-draft-sec-6] of the [Internet Draft][srt-internet-draft] additionally. |
| [SRT Handshake](features/handshake.md) | [features](features/) | [handshake.md](features/handshake.md) | Description of SRT handshake mechanism. This<br />document might be outdated, please consult<br />[Section 3.2.1 Handshake][srt-internet-draft-sec-3-2-1] and<br />[Section 4.3 Handshake Messages](https://datatracker.ietf.org/doc/html/draft-sharabayko-srt-01#section-4.3) of the<br />[Internet Draft][srt-internet-draft] additionally. |
| [Live Streaming <br /> Guidelines](features/live-streaming.md) | [features](features/) | [live-streaming.md](features/live-streaming.md) | Guidelines for live streaming with SRT. See also<br />best practices and configuration tips in<br />[Section 7.1 Live Streaming](https://datatracker.ietf.org/doc/html/draft-sharabayko-srt-01#section-7.1) of the [Internet Draft][srt-internet-draft]. |
Expand Down
4 changes: 2 additions & 2 deletions docs/build/build-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Option details are given further below.
| [`CMAKE_INSTALL_PREFIX`](#cmake_install_prefix) | 1.3.0 | `STRING` | OFF | Standard CMake variable that establishes the root directory for installation, inside of which a GNU/POSIX compatible directory layout will be used. |
| [`CYGWIN_USE_POSIX`](#cygwin_use_posix) | 1.2.0 | `BOOL` | OFF | Determines when to compile on Cygwin using POSIX API. |
| [`ENABLE_APPS`](#enable_apps) | 1.3.3 | `BOOL` | ON | Enables compiling sample applications (srt-live-trasnmit, etc.). |
| [`ENABLE_BONDING`](#enable_bonding) | 1.5.0 | `BOOL` | OFF | Enables the [Connection Bonding](../features/bonding-intro.md) feature. |
| [`ENABLE_BONDING`](#enable_bonding) | 1.5.0 | `BOOL` | OFF | Enables the [Connection Bonding](../features/bonding-quick-start.md) feature. |
| [`ENABLE_CXX_DEPS`](#enable_cxx_deps) | 1.3.2 | `BOOL` | OFF | The `pkg-confg` file (`srt.pc`) will be generated with the `libstdc++` library as a dependency. |
| [`ENABLE_CXX11`](#enable_cxx11) | 1.2.0 | `BOOL` | ON | Enable compiling in C++11 mode for those parts that may require it. Default: ON except for GCC<4.7 |
| [`ENABLE_CODE_COVERAGE`](#enable_code_coverage) | 1.4.0 | `BOOL` | OFF | Enables instrumentation for code coverage. |
Expand Down Expand Up @@ -188,7 +188,7 @@ Enables compiling user applications.
#### ENABLE_BONDING
**`--enable-bonding`** (default: OFF)

Enables the [Connection Bonding](../features/bonding-intro.md) feature.
Enables the [Connection Bonding](../features/bonding-quick-start.md) feature.

Similar to SMPTE-2022-7 over managed networks, Connection Bonding adds seamless stream protection and hitless failover to the SRT protocol. This technology relies on more than one IP network path to prevent disruption to live video streams in the event of network congestion or outages, maintaining continuity of service.

Expand Down
2 changes: 1 addition & 1 deletion docs/features/bonding-intro.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Introduction to Connection Bonding
# SRT Connection Bonding: Introduction

## What are Groups ?

Expand Down
Loading

0 comments on commit e8b713e

Please sign in to comment.