graph G { nanoBTS [label="ip.access\nnanoBTS", shape=box]; OsmoBTS; sysmoBTS [label="sysmocom sysmoBTS\n(many models)", shape=box]; LC15 [label="Nuran\nLitecell 1.5", shape=box]; OCT [label="Octasic\nOCTBTS", shape=box]; TRX [label="OsmoTRX"]; OtherSDR [label="Other SDR HW", shape=box, style=dashed]; OtherPHY [label="Other GSM PHY", shape=box, style=dashed]; UmTRX [label="Fairwaves\nUmTRX", shape=box]; USRP [label="Ettus USRP\nFamily", shape=box]; BSC -- nanoBTS [label="Abis/IP"]; BSC -- OsmoBTS [label="Abis/IP"]; BSC -- BS11 [label="Siemens\nAbis/E1"]; BSC -- RBS2K [label="Ericsson\nAbis/E1"]; BSC -- Nokia [label="Nokia\nAbis/E1"]; subgraph cluster_2 { BSC [label="BSC\n(OsmoBSC, OsmoNITB, 3rd party)"]; color=white } subgraph cluster_0 { BS11 [label="Siemens BS-11", shape=box]; SIU [label="Ericsson SIU"]; RBS2K [label="Ericsson RBS 2000\n(many models)", shape=box]; Nokia [label="Nokia InSite, MetroSite", shape=box]; BSC -- L2TPD [label="Unix Socket"]; L2TPD -- SIU [label="Ericsson\nL2TP/IP"]; SIU -- RBS2K [label="Ericsson\nAbis/E1"]; { rank=same; BS11 RBS2K Nokia } label = "Classic E1/T1"; } subgraph cluster_1 { OsmoBTS -- sysmoBTS [label="osmo-bts-sysmo"]; OsmoBTS -- LC15 [label="osmo-bts-lc15"]; OsmoBTS -- OCT [label="osmo-bts-octphy"]; OsmoBTS -- TRX [label="osmo-bts-trx"]; OsmoBTS -- OtherPHY [style=dashed]; TRX -- USRP; TRX -- UmTRX; TRX -- OtherSDR [style=dashed]; { rank=same; nanoBTS sysmoBTS LC15 OCT UmTRX } label = "IP/Ethernet based"; } }