Skip to content

Commit f2494bb

Browse files
authored
Add topology rules documentation (#399)
Signed-off-by: Konstantin Ilichev <[email protected]>
1 parent c61e9c9 commit f2494bb

File tree

2 files changed

+128
-0
lines changed

2 files changed

+128
-0
lines changed

docs/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,10 @@ Follow the [Setup Guide](SetupGuide.md) to navigate through the setup, build, an
324324

325325
For guidance on running Media Communication Mesh, see [Runbook](Runbook.md).
326326

327+
## Data Plane topology
328+
329+
Media Communications Mesh applies specific logic rules to establish the topology. See [Topology](Topology.md) for details.
330+
327331
## Performance
328332
See [Performance Notes](PerformanceNotes.md) to learn how to tune the connection configuration for the best performance.
329333

docs/Topology.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# Topology — Media Communications Mesh
2+
3+
The following rules are applied in Media Communications Mesh to establish the topology.
4+
5+
## 1. General rules
6+
7+
* Allow the following connection configurations
8+
* User app receives an SMPTE ST 2110 media stream from an external source.
9+
* User app sends an SMPTE ST 2110 media stream to an external destination.
10+
* User app sends a media stream to a multipoint group within the Mesh.
11+
* User app receives a media stream from a multipoint group within the Mesh.
12+
13+
* Apply the star interconnection topology to pass a media stream between Media Proxies within the same multipoint group via RDMA.
14+
15+
> Note: The following configurations are not supported
16+
> * Send or receive an external media stream via RDMA.
17+
> * Send an SMPTE ST 2110 media stream between user apps within the same Mesh.
18+
19+
## 2. Receive SMPTE ST 2110 media stream from external source
20+
21+
* When the user creates an ST 2110 Rx connection, an ST 2110 ingress bridge is created in Media Proxy, which the user app is connected to via SDK API.
22+
23+
* When the user creates another ST 2110 Rx connection in the same Media Proxy to receive the stream from the same source, the traffic received by the existing ST 2110 bridge starts passing to the user app via the multipoint group. It means that no more ST 2110 ingress bridges are created.
24+
25+
* When the user creates another ST 2110 Rx connection in another Media Proxy (i.e., another node) to receive the stream from the same source, an RDMA bridge connection is established between Media Proxies to pass the traffic to the user app.
26+
27+
```mermaid
28+
flowchart LR
29+
subgraph Node C
30+
rxC1((Rx App 5))
31+
rxC2((Rx App 6))
32+
proxy3(Media Proxy C)
33+
end
34+
subgraph Node B
35+
rxB1((Rx App 3))
36+
rxB2((Rx App 4))
37+
proxy2(Media Proxy B)
38+
end
39+
subgraph Node A
40+
rxA1((Rx App 1))
41+
rxA2((Rx App 2))
42+
proxy1(Media Proxy A)
43+
end
44+
dev("Source
45+
ST 2110")
46+
dev -- ST 2110 --> proxy1
47+
proxy1 --> rxA1
48+
proxy1 --> rxA2
49+
proxy1 -- RDMA ----> proxy2
50+
proxy1 -- RDMA ----> proxy3
51+
proxy2 --> rxB1
52+
proxy2 --> rxB2
53+
proxy3 --> rxC1
54+
proxy3 --> rxC2
55+
```
56+
57+
## 3. Send SMPTE ST 2110 media stream to external destination
58+
59+
* When the user creates an ST 2110 Tx connection, an ST 2110 egress bridge is created in Media Proxy, which the user app is connected to via SDK API. Other Tx connections cannot be created to send a stream to the same destination.
60+
61+
* When the user creates an ST 2110 Rx connection in the same Media Proxy to receive the stream being sent by the Tx connection, the traffic starts passing to the user app via the multipoint group. It means that an ST 2110 ingress bridge is not created.
62+
63+
* When the user creates another ST 2110 Rx connection in another Media Proxy (i.e., another node) to receive the stream being sent by the same Tx connection, an RDMA bridge connection is established between Media Proxies to pass the traffic to the user app.
64+
65+
```mermaid
66+
flowchart LR
67+
subgraph Node B
68+
rxB1((Rx App 3))
69+
rxB2((Rx App 4))
70+
proxy2(Media Proxy B)
71+
end
72+
subgraph Node A
73+
tx((Tx App))
74+
rxA1((Rx App 1))
75+
rxA2((Rx App 2))
76+
proxy1(Media Proxy A)
77+
end
78+
dev("ST 2110
79+
Destination")
80+
tx --> proxy1
81+
proxy1 --> rxA1
82+
proxy1 --> rxA2
83+
proxy1 -- ST 2110 ----> dev
84+
proxy1 -- RDMA ----> proxy2
85+
proxy2 --> rxB1
86+
proxy2 --> rxB2
87+
```
88+
89+
## 4. Send media stream between user apps within the Mesh
90+
91+
* When the user creates a multipoint group Tx connection, no bridges are created to pass the traffic to other nodes. The Mesh is waiting for receivers to appear in the multipoint group.
92+
93+
* When the user creates a multipoint group Rx connection in the same Media Proxy to receive the stream being sent by the Tx connection, the traffic starts passing to the user app via the multipoint group.
94+
95+
* When the user creates another multipoint group Rx connection in another Media Proxy (i.e., another node) to receive the stream being sent by the same Tx connection, an RDMA bridge connection is established between Media Proxies to pass the traffic to the user app.
96+
97+
```mermaid
98+
flowchart LR
99+
subgraph Node C
100+
rxC1((Rx App 5))
101+
rxC2((Rx App 6))
102+
proxy3(Media Proxy C)
103+
end
104+
subgraph Node B
105+
rxB1((Rx App 3))
106+
rxB2((Rx App 4))
107+
proxy2(Media Proxy B)
108+
end
109+
subgraph Node A
110+
tx((Tx App))
111+
rxA1((Rx App 1))
112+
rxA2((Rx App 2))
113+
proxy1(Media Proxy A)
114+
end
115+
tx --> proxy1
116+
proxy1 --> rxA1
117+
proxy1 --> rxA2
118+
proxy1 -- RDMA ----> proxy2
119+
proxy1 -- RDMA ----> proxy3
120+
proxy2 --> rxB1
121+
proxy2 --> rxB2
122+
proxy3 --> rxC1
123+
proxy3 --> rxC2
124+
```

0 commit comments

Comments
 (0)