Re-introducing E1 in OsmoBSC ============================ :author: Harald Welte :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