MediaPlane » History » Version 2
daniel, 03/20/2018 03:55 PM
fix typos
1 | 1 | laforge | {{>toc}} |
---|---|---|---|
2 | |||
3 | h1. MediaPlane |
||
4 | |||
5 | One of the goals of the new architecture is the efficient use of [satellite] back-haul. |
||
6 | |||
7 | Osmocom already has the existing OSMUX protocol implemented in osmo-bsc-sccplite and osmo-bsc_nat, which avoids protocol overhead by: |
||
8 | * putting codec frames of multiple concurrent calls in one UDP packet [avoiding RTP/UDP overhead for each one] |
||
9 | * avoiding the large RTP header by using a custom header |
||
10 | 2 | daniel | * optionally batching codec frames of each single call by introducing buffering, so one packet is only sent every 40/60/80/100ms instead of every 20ms |
11 | 1 | laforge | |
12 | This protocol, however, is not yet available in a more generic way outside the scope of SCCPlite conncetions between BSC and BSC-NAT. |
||
13 | |||
14 | h2. Generalization of Osmux |
||
15 | |||
16 | There are plenty of issues already about this: |
||
17 | * #2554 (documentation of the old osmux) |
||
18 | * #2909 (documentation of a new generalized osmux) |
||
19 | * #2551 (generalization of OSMUX in OsmoMGW) |
||
20 | * #2552 (OsmoBSC support for OSMUX on A, not needed here but test case for #2551) |
||
21 | * #2553 (OsmoMSC support for OSMUX on A, not needed here but test case for #2551) |
||
22 | |||
23 | All those items should have been implemented by now, but are unfortunately delayed already for several months due to other tasks. |
||
24 | |||
25 | h2. Use outside of the Osmocom network elements |
||
26 | |||
27 | Osmux in this Distributed GSM architecture would actually not be used by GSM-network-internal interfaces (such as the A interface between BSC and MSC), but it would be used to interconnect the individual networks with each other, i.e. the _roaming interface_ of classic GSM networks. |
||
28 | |||
29 | So the media flow between two networks would look like this: |
||
30 | |||
31 | {{graphviz_link() |
||
32 | digraph G { |
||
33 | rankdir = LR; |
||
34 | btsa [label="BTS\nVillage A"]; |
||
35 | mgwa [label="MGW\nVillage A"]; |
||
36 | mgwb [label="MGW\nVillage B"]; |
||
37 | btsb [label="BTS\nVillage B"]; |
||
38 | btsa -> mgwa [label="RTP",dir="both",color="red"]; |
||
39 | mgwa -> mgwb [label="OSMUX",dir="both",color="red"]; |
||
40 | mgwb -> btsb [label="RTP",dir="both",color="red"]; |
||
41 | |||
42 | bmsca [label="BSC/MSC/SIP\nVillage A"]; |
||
43 | bmscb [label="BSC/MSC/SIP\nVillage B"]; |
||
44 | bmsca -> mgwa [label="MGCP"]; |
||
45 | bmscb -> mgwb [label="MGCP"]; |
||
46 | bmsca -> bmscb [label="SIP", dir="both"]; |
||
47 | btsa -> bmsca [label="Abis/IP", dir="both"]; |
||
48 | btsb -> bmscb [label="Abis/IP", dir="both"]; |
||
49 | |||
50 | { rank = same; mgwa; bmsca; } |
||
51 | { rank = same; mgwb; bmscb; } |
||
52 | } |
||
53 | }} |
||
54 | |||
55 | h3. What's needed to implement this |
||
56 | |||
57 | 2 | daniel | # OsmoMSC must have codec preference for one fixed AMR bitrate e.g. AMR 5.9 and allocate older codecs only to phones that don't have related bearer capabilities |
58 | 1 | laforge | #* should already be possible with existing code, needs [automatic] testing/verification |
59 | # transcoding in OsmoMGW to ensure that FR/EFR/HR from non-AMR capable phones is transcoded to a fixed AMR rate suitable for osmux |
||
60 | #* we do have transcoding in OsmoMGW inherited from its predecessor osmo-bsc_mgcp, but it might have been broken and needs re-testing/fixing |
||
61 | # MNCC syntax by which osmo-sip-connector can request the MSC to instruct the MGW to use OSMUX on the external media side |
||
62 | # MGCP syntax by which the call agent in the MSC can instruct the MGW to have an endpoint that has RTP on local side but OSMUX on remote side |
||
63 | # SIP/SDP syntax by which two osmo-sip-connector instances can discover they both support OSMUX as transport |
||
64 | #* probably similar to existing handshake of codecs on SIP/SDP. So Osmux would look like a different codec |
||
65 | #* might not be as simple, as there's no separate IP/Port per stream anymore |