diff options
Diffstat (limited to '2018/osmodevcon2018-reintroducing_e1/osmodevcon2018-reintroducing_e1.adoc')
-rw-r--r-- | 2018/osmodevcon2018-reintroducing_e1/osmodevcon2018-reintroducing_e1.adoc | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/2018/osmodevcon2018-reintroducing_e1/osmodevcon2018-reintroducing_e1.adoc b/2018/osmodevcon2018-reintroducing_e1/osmodevcon2018-reintroducing_e1.adoc new file mode 100644 index 0000000..2e5bd74 --- /dev/null +++ b/2018/osmodevcon2018-reintroducing_e1/osmodevcon2018-reintroducing_e1.adoc @@ -0,0 +1,121 @@ +Re-introducing E1 in OsmoBSC +============================ +:author: Harald Welte <laforge@gnumonks.org> +:copyright: 2018 by Harald Welte (License: CC-BY-SA) +:backend: slidy +:max-width: 45em + +== Intro + +* OpenBSC (later OsmoNITB) started with E1 BTS +* until NITB Split, E1 support remained present +* even old OsmoBSC (sccplite) never had E1 BTS suport +* new OsmoBSC also has no E1 BTS support +* let's change that! + +== Classic OsmoNITB with E1-BTS + ext MNCC + +image::osmo-userplane1_e1_mncc.svg[width="100%"] + +* Abis/E1 with 16k sub-slots in 64k slots +* E1 device offers 64k timeslots only +** 16k sub-channel mux/demux done in software +* TRAU frames in 16k sub-slots decoded (to FR/EFR codec frames) +* passed next to MNCC signaling over MNCC socket + +== Classic OsmoNITB with E1-BTS + ext MNCC + RTP + +image::osmo-userplane2-e1_rtp.svg[width="100%"] + +* just like previous example, but we generate RTP from TRAU frames +* MNCC interface is signaling only +* user voice frames handled via RTP + +== Classic OsmoNITB with IP-BTS + ext MNCC + RTP proxy + +image::osmo-userplane3-rtp_proxy.svg[width="100%"] + +* Abis/IP BTS use RTP transport for speech frames +* OsmoNITB is asked to provide RTP proxy functionality + +== Classic OsmoNITB with IP-BTS + ext MNCC + direct RTP + +image::osmo-userplane4-rtp_direct.svg[width="100%"] + +* Abis/IP BTS use RTP transport for speech frames +* OsmoNITB rtp_proxy is disabled +* RTP data passes directly from BTS to external PBX and vice-versa + +== IP-BTS User Plane in post-NITB + +When using IP-based BTS like OsmoBTS, this looks like this: + +[graphviz] +---- +digraph G { + rankdir=LR; + + BSC [label="OsmoBSC"]; + MSC [label="OsmoMSC"]; + MGWb [label="OsmoMGW\n(BSC)"]; + MGWm [label="OsmoMGW\n(MSC)"]; + + { rank=same; BSC; MGWb; }; + { rank=same; MSC; MGWm; }; + + BTS -> BSC [label="A-bis/IP (RSL+OML)"]; + BSC -> MSC [label="A (BSSAP)"]; + BTS -> MGWb [label="RTP"]; + MGWb -> MGWm [label="RTP"]; + MSC -> PBX [label="MNCC"]; + MGWm -> PBX [label="RTP"]; + + BSC -> MGWb [label="MGCP"]; + MSC -> MGWm [label="MGCP"]; +} +---- + +* RTP to/from the BTS is handled by the BSC-colocated OsmoMGW + + +== E1-BTS User Plane in post-NITB + +When using E1-based BTS, it should look like this: + +[graphviz] +---- +digraph G { + rankdir=LR; + + BSC [label="OsmoBSC"]; + MSC [label="OsmoMSC"]; + MGWb [label="OsmoMGW\n(BSC)"]; + MGWm [label="OsmoMGW\n(MSC)"]; + + { rank=same; BSC; MGWb; }; + { rank=same; MSC; MGWm; }; + + BTS -> BSC [label="A-bis/E1 (RSL+OML)"]; + BSC -> MSC [label="A (BSSAP)"]; + BTS -> MGWb [label="TRAU-Frames\nover E1"]; + MGWb -> MGWm [label="RTP"]; + MSC -> PBX [label="MNCC"]; + MGWm -> PBX [label="RTP"]; + + BSC -> MGWb [label="MGCP"]; + MSC -> MGWm [label="MGCP"]; +} +---- + +* TRAU frames in 16k E1 sub-slots to/from the BTS are handled by the BSC-colocated OsmoMGW +* OsmoMGW needs real media gateway functionality from E1 sub-slots to RTP +* E1 driver needs to support single E1 span (line) that +** opens RSL/OML LAPDm signaling on one TS from OsmoBSC +** opens TRAU on other TS from OsmoMGW +* `osmo-bsc.cfg` states which Um TS maps to which E1 TS/SS +* `osmo-bsc` uses MGCP EP naming scheme like `E1/Line1/TS4/SS2@mgw` + + +== EOF + +End of File |