2019/20/21 updated version of 'running osmocom gsm'
This commit is contained in:
parent
e04fbfa698
commit
68b4a1cb8c
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 723 KiB |
|
@ -0,0 +1,33 @@
|
|||
graph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS",shape=box]
|
||||
MS1 [label="MS",shape=box]
|
||||
MS2 [label="MS",shape=box]
|
||||
|
||||
MS0--PHY [label="Um"]
|
||||
MS1--PHY [label="Um"]
|
||||
MS2--PHY [label="Um"]
|
||||
|
||||
subgraph cluster_0 {
|
||||
label = "sysmoBTS (all-in-one)"
|
||||
OsmoBTS
|
||||
OsmoPCU [style="dashed"]
|
||||
PHY -- OsmoBTS [label="shmem msgq"]
|
||||
PHY -- OsmoPCU [label="shmem msgq"]
|
||||
OsmoPCU -- OsmoBTS [label="pcu_sock"]
|
||||
{ rank=same; OsmoBTS OsmoPCU }
|
||||
|
||||
OsmoBSC
|
||||
OsmoMSC
|
||||
OsmoHLR
|
||||
OsmoSGSN [style="dashed"]
|
||||
OsmoGGSN [style="dashed"]
|
||||
OsmoBTS -- OsmoBSC [label="Abis/IP\n(lo)"]
|
||||
OsmoPCU -- OsmoSGSN [label="Gb/IP\n(lo)"]
|
||||
OsmoSGSN -- OsmoGGSN [label="Gn/IP\n(lo)"]
|
||||
OsmoBSC -- OsmoMSC [label="A/IP\n(lo)"]
|
||||
OsmoMSC -- OsmoHLR [label="GSUP/IP\n(lo)"]
|
||||
|
||||
{ rank=same; OsmoMSC OsmoSGSN }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
graph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS",shape=box]
|
||||
MS1 [label="MS",shape=box]
|
||||
MS2 [label="MS",shape=box]
|
||||
|
||||
MS0--PHY [label="Um"]
|
||||
MS1--PHY [label="Um"]
|
||||
MS2--PHY [label="Um"]
|
||||
|
||||
subgraph cluster_0 {
|
||||
label = "sysmoBTS"
|
||||
OsmoBTS
|
||||
OsmoPCU [style="dashed"]
|
||||
PHY -- OsmoBTS [label="shmem msgq"]
|
||||
PHY -- OsmoPCU [label="shmem msgq"]
|
||||
OsmoPCU -- OsmoBTS [label="pcu_sock"]
|
||||
{ rank=same; OsmoBTS OsmoPCU }
|
||||
}
|
||||
|
||||
subgraph cluster_1 {
|
||||
label = "Linux PC"
|
||||
OsmoBSC
|
||||
OsmoMSC
|
||||
OsmoHLR
|
||||
OsmoSGSN [style="dashed"]
|
||||
OsmoGGSN [style="dashed"]
|
||||
OsmoBTS -- OsmoBSC [label="Abis/IP"]
|
||||
OsmoBSC -- OsmoMSC [label="A/IP"]
|
||||
OsmoMSC -- OsmoHLR [label="GSUP/IP"]
|
||||
OsmoPCU -- OsmoSGSN [label="Gb/IP"]
|
||||
OsmoSGSN -- OsmoGGSN [label="Gn/IP"]
|
||||
|
||||
{ rank=same; OsmoMSC OsmoSGSN }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
graph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS",shape=box]
|
||||
MS1 [label="MS",shape=box]
|
||||
MS2 [label="MS",shape=box]
|
||||
|
||||
USRP [label="USRP Bxxx",shape=box]
|
||||
USRP -- OsmoTRX [label="USB"]
|
||||
|
||||
MS0--USRP [label="Um"]
|
||||
MS1--USRP [label="Um"]
|
||||
MS2--USRP [label="Um"]
|
||||
|
||||
subgraph cluster_0 {
|
||||
label = "Linux PC (all-in-one)"
|
||||
OsmoTRX
|
||||
OsmoBTS
|
||||
OsmoPCU [style="dashed"]
|
||||
OsmoPCU -- OsmoBTS [label="pcu_sock"]
|
||||
OsmoTRX -- OsmoBTS [label="UDP"]
|
||||
{ rank=same; OsmoBTS OsmoPCU }
|
||||
|
||||
OsmoBSC
|
||||
OsmoMSC
|
||||
OsmoHLR
|
||||
OsmoSGSN [style="dashed"]
|
||||
OsmoGGSN [style="dashed"]
|
||||
OsmoBTS -- OsmoBSC [label="Abis/IP\n(lo)"]
|
||||
OsmoBSC -- OsmoMSC [label="A/IP\n(lo)"]
|
||||
OsmoMSC -- OsmoHLR [label="GSUP/IP\n(lo)"]
|
||||
OsmoPCU -- OsmoSGSN [label="Gb/IP\n(lo)"]
|
||||
OsmoSGSN -- OsmoGGSN [label="Gn/IP\n(lo)"]
|
||||
|
||||
{ rank=same; OsmoMSC OsmoSGSN }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
graph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS",shape=box]
|
||||
MS1 [label="MS",shape=box]
|
||||
MS2 [label="MS",shape=box]
|
||||
|
||||
USRP [label="USRP Bxxx",shape=box]
|
||||
USRP --OsmoTRX [label="USB"]
|
||||
|
||||
MS0--USRP [label="Um"]
|
||||
MS1--USRP [label="Um"]
|
||||
MS2--USRP [label="Um"]
|
||||
|
||||
subgraph cluster_0 {
|
||||
label = "Linux PC (BTS)"
|
||||
OsmoTRX
|
||||
OsmoBTS
|
||||
OsmoPCU [style="dashed"]
|
||||
OsmoPCU -- OsmoBTS [label="pcu_sock"]
|
||||
OsmoTRX -- OsmoBTS
|
||||
{ rank=same; OsmoBTS OsmoPCU }
|
||||
}
|
||||
|
||||
subgraph cluster_1 {
|
||||
label = "Linux PC (Core)"
|
||||
OsmoBSC
|
||||
OsmoMSC
|
||||
OsmoHLR
|
||||
OsmoSGSN [style="dashed"]
|
||||
OsmoGGSN [style="dashed"]
|
||||
OsmoBTS -- OsmoBSC [label="Abis/IP"]
|
||||
OsmoBSC -- OsmoMSC [label="A/IP"]
|
||||
OsmoMSC -- OsmoHLR [label="GSUP/IP"]
|
||||
OsmoPCU -- OsmoSGSN [label="Gb/IP"]
|
||||
OsmoSGSN -- OsmoGGSN [label="Gn/IP"]
|
||||
{ rank=same; OsmoMSC OsmoSGSN }
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 52 KiB |
|
@ -0,0 +1,342 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="85.403748mm"
|
||||
height="60.830627mm"
|
||||
viewBox="0 0 302.6117 215.54159"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="osmo-bts.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4690"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
id="path4692"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4644"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="matrix(0.8,0,0,0.8,10,0)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
id="path4646"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.3800511"
|
||||
inkscape:cx="151.30585"
|
||||
inkscape:cy="107.7708"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:snap-global="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="false"
|
||||
inkscape:snap-to-guides="false"
|
||||
inkscape:snap-others="false"
|
||||
inkscape:bbox-nodes="false"
|
||||
inkscape:snap-bbox-edge-midpoints="false"
|
||||
inkscape:snap-bbox-midpoints="false"
|
||||
inkscape:object-paths="false"
|
||||
inkscape:object-nodes="true"
|
||||
showguides="false"
|
||||
inkscape:window-width="1022"
|
||||
inkscape:window-height="730"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1200"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3336"
|
||||
originx="-282.74929"
|
||||
originy="-52.481486" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-282.74928,-784.33912)">
|
||||
<g
|
||||
id="g5461"
|
||||
transform="translate(203.46457,-1.324757e-5)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4636"
|
||||
d="m 230.31496,786.61417 0,53.14961"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644);marker-end:url(#marker4690)" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text5151"
|
||||
y="816.18896"
|
||||
x="239.52753"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="816.18896"
|
||||
x="239.52753"
|
||||
id="tspan5153"
|
||||
sodipodi:role="line">Abis/IP</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g7653"
|
||||
transform="translate(194.88189,-1.0472595e-5)">
|
||||
<g
|
||||
id="g4252">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="122.30629"
|
||||
y="985.66003"
|
||||
id="text4144"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4146"
|
||||
x="122.30629"
|
||||
y="985.66003">SDR Hardware</tspan></text>
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4172"
|
||||
width="141.73228"
|
||||
height="35.433071"
|
||||
x="88.58268"
|
||||
y="963.77948" />
|
||||
</g>
|
||||
<g
|
||||
id="g4247">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="97.314629"
|
||||
y="950.22699"
|
||||
id="text4148"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="97.314629"
|
||||
y="950.22699"
|
||||
id="tspan4152">OsmoTRX</tspan></text>
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4160"
|
||||
width="70.866142"
|
||||
height="35.433071"
|
||||
x="88.58268"
|
||||
y="928.34644" />
|
||||
</g>
|
||||
<g
|
||||
id="g4242">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="166.59451"
|
||||
y="950.125"
|
||||
id="text4156"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4158"
|
||||
x="166.59451"
|
||||
y="950.125">Transceiver</tspan></text>
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4162"
|
||||
width="70.866142"
|
||||
height="35.433071"
|
||||
x="159.44882"
|
||||
y="928.34644" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g4227"
|
||||
transform="translate(194.88189,-1.0472595e-5)">
|
||||
<rect
|
||||
y="839.76373"
|
||||
x="88.58268"
|
||||
height="17.716536"
|
||||
width="35.433071"
|
||||
id="rect4225"
|
||||
style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g10050">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="94.139557"
|
||||
y="852.78601"
|
||||
id="text4217"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="translate(194.88189,-1e-5)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4219"
|
||||
x="94.139557"
|
||||
y="852.78601">VTY</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4178"
|
||||
y="881.67499"
|
||||
x="384.82532"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="881.67499"
|
||||
x="384.82532"
|
||||
id="tspan4180"
|
||||
sodipodi:role="line">OsmoBTS</tspan></text>
|
||||
<g
|
||||
transform="translate(194.88189,-1.0472595e-5)"
|
||||
id="g4232">
|
||||
<rect
|
||||
style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4198"
|
||||
width="141.73228"
|
||||
height="17.716536"
|
||||
x="88.58268"
|
||||
y="910.62988" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="127.64554"
|
||||
y="923.58612"
|
||||
id="text4182"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="127.64554"
|
||||
y="923.58612"
|
||||
id="tspan4186">osmo-bts-trx</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(194.88189,-1.0472595e-5)"
|
||||
id="g5364">
|
||||
<rect
|
||||
style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4198-7"
|
||||
width="141.73227"
|
||||
height="17.716536"
|
||||
x="248.03149"
|
||||
y="910.62994" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="279.13019"
|
||||
y="922.42224"
|
||||
id="text4190"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
x="279.13019"
|
||||
y="922.42224"
|
||||
id="tspan4194">osmo-bts-sysmo</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(212.59843,1.6540969e-5)"
|
||||
id="g4259">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect4257"
|
||||
width="35.433071"
|
||||
height="17.716536"
|
||||
x="336.61417"
|
||||
y="839.76373" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="339.13992"
|
||||
y="852.79199"
|
||||
id="text4221"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4223"
|
||||
x="339.13992"
|
||||
y="852.79199">CTRL</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
y="839.76373"
|
||||
x="283.46457"
|
||||
height="88.58268"
|
||||
width="301.18112"
|
||||
id="rect4176"
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.43057334;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g7667"
|
||||
transform="translate(194.88189,-1.0472595e-5)">
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4166"
|
||||
y="959.34552"
|
||||
x="318.90579"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="959.34552"
|
||||
x="318.90579"
|
||||
id="tspan4168"
|
||||
sodipodi:role="line">sysmoBTS PHY</tspan><tspan
|
||||
id="tspan4170"
|
||||
y="974.34552"
|
||||
x="318.90579"
|
||||
sodipodi:role="line">sysmoBTS Hardware</tspan></text>
|
||||
<rect
|
||||
y="928.34644"
|
||||
x="248.03149"
|
||||
height="70.866142"
|
||||
width="141.73228"
|
||||
id="rect5359"
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.33630621;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect7782"
|
||||
width="0"
|
||||
height="0"
|
||||
x="0"
|
||||
y="0"
|
||||
transform="translate(0,308.26772)" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
After Width: | Height: | Size: 78 KiB |
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 47 KiB |
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 82 KiB |
|
@ -0,0 +1,418 @@
|
|||
Running a basic Osmocom GSM network
|
||||
===================================
|
||||
:author: Harald Welte <laforge@gnumonks.org>
|
||||
:copyright: sysmocom - s.f.m.c. GmbH (License: CC-BY-SA)
|
||||
:backend: slidy
|
||||
:max-width: 45em
|
||||
//:data-uri:
|
||||
//:icons:
|
||||
|
||||
|
||||
== What this talk is about
|
||||
|
||||
[role="incremental"]
|
||||
* Implementing GSM/GPRS network elements as FOSS
|
||||
* Applied Protocol Archaeology
|
||||
* Doing all of that on top of Linux (in userspace)
|
||||
|
||||
|
||||
== Running your own Internet-style network
|
||||
|
||||
* use off-the-shelf hardware (x86, Ethernet card)
|
||||
* use any random Linux distribution
|
||||
* configure Linux kernel TCP/IP network stack
|
||||
** enjoy fancy features like netfilter/iproute2/tc
|
||||
* use apache/lighttpd/nginx on the server
|
||||
* use Firefox/chromium/konqueor/lynx on the client
|
||||
* do whatever modification/optimization on any part of the stack
|
||||
|
||||
|
||||
== Running your own GSM network
|
||||
|
||||
Until 2009 the situation looked like this:
|
||||
|
||||
* go to Ericsson/Huawei/ZTE/Nokia/Alcatel/...
|
||||
* spend lots of time convincing them that you're an eligible customer
|
||||
* spend a six-digit figure for even the most basic full network
|
||||
* end up with black boxes you can neither study nor improve
|
||||
|
||||
[role="incremental"]
|
||||
- WTF?
|
||||
- I've grown up with FOSS and the Internet. I know a better world.
|
||||
|
||||
|
||||
== Why no cellular FOSS?
|
||||
|
||||
- both cellular (2G/3G/4G) and TCP/IP/HTTP protocol specs are publicly
|
||||
available for decades. Can you believe it?
|
||||
- Internet protocol stacks have lots of FOSS implementations
|
||||
- cellular protocol stacks have no FOSS implementations for the
|
||||
first almost 20 years of their existence?
|
||||
[role="incremental"]
|
||||
- it's the classic conflict
|
||||
* classic circuit-switched telco vs. the BBS community
|
||||
* ITU-T/OSI/ISO vs. Arpanet and TCP/IP
|
||||
|
||||
|
||||
== Enter Osmocom
|
||||
|
||||
In 2008, some people (most present in this room) started to write FOSS
|
||||
for GSM
|
||||
|
||||
- to boldly go where no FOSS hacker has gone before
|
||||
[role="incremental"]
|
||||
** where protocol stacks are deep
|
||||
** and acronyms are plentiful
|
||||
** we went from `bs11-abis` to `bsc_hack` to 'OpenBSC'
|
||||
** many other related projects were created
|
||||
** finally leading to the 'Osmocom' umbrella project
|
||||
|
||||
|
||||
== Classic GSM network architecture
|
||||
|
||||
image::Gsm_structures.svg[width=850]
|
||||
|
||||
|
||||
== GSM Acronyms, Radio Access Network
|
||||
|
||||
MS::
|
||||
Mobile Station (your phone)
|
||||
BTS::
|
||||
Base Transceiver Station, consists of 1..n TRX
|
||||
TRX::
|
||||
Transceiver for one radio channel, serves 8 TS
|
||||
TS::
|
||||
Timeslots in the GSM radio interface; each runs a specific combination of logical channels
|
||||
BSC::
|
||||
Base Station Controller
|
||||
|
||||
|
||||
== GSM Acronyms, Core Network
|
||||
|
||||
MSC::
|
||||
Mobile Switching Center; Terminates MM + CC Sub-layers
|
||||
|
||||
HLR::
|
||||
Home Location Register; Subscriber Database
|
||||
|
||||
SMSC::
|
||||
SMS Service Center
|
||||
|
||||
|
||||
== GSM Acronyms, Layer 2 + 3
|
||||
|
||||
LAPDm::
|
||||
Link Access Protocol, D-Channel. Like LAPD in ISDN
|
||||
RR::
|
||||
Radio Resource (establish/release dedicated channels)
|
||||
MM::
|
||||
Mobility Management (registration, location, authentication)
|
||||
CC::
|
||||
Call Control (voice, circuit switched data, fax)
|
||||
CM::
|
||||
Connection Management
|
||||
|
||||
|
||||
== Osmocom GSM components
|
||||
|
||||
image::osmocom-cni.png[width=850]
|
||||
|
||||
|
||||
== Classic GSM network as digraph
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
digraph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS"]
|
||||
MS1 [label="MS"]
|
||||
MS2 [label="MS"]
|
||||
MS3 [label="MS"]
|
||||
BTS0 [label="BTS"]
|
||||
BTS1 [label="BTS"]
|
||||
MSC [label="MSC/VLR"]
|
||||
HLR [label="HLR/AUC"]
|
||||
MS0->BTS0 [label="Um"]
|
||||
MS1->BTS0 [label="Um"]
|
||||
MS2->BTS1 [label="Um"]
|
||||
MS3->BTS1 [label="Um"]
|
||||
BTS0->BSC [label="Abis"]
|
||||
BTS1->BSC [label="Abis"]
|
||||
BSC->MSC [label="A"]
|
||||
MSC->HLR [label="C"]
|
||||
MSC->EIR [label="F"]
|
||||
MSC->SMSC
|
||||
}
|
||||
----
|
||||
|
||||
== Osmocom GSM network
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
digraph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS"]
|
||||
MS1 [label="MS"]
|
||||
MS2 [label="MS"]
|
||||
MS3 [label="MS"]
|
||||
BTS0 [label="OsmoBTS"]
|
||||
BTS1 [label="OsmoBTS"]
|
||||
MS0->BTS0 [label="Um"]
|
||||
MS1->BTS0 [label="Um"]
|
||||
MS2->BTS1 [label="Um"]
|
||||
MS3->BTS1 [label="Um"]
|
||||
BTS0->BSC [label="Abis"]
|
||||
BTS1->BSC [label="Abis"]
|
||||
subgraph cluster_cni {
|
||||
label = "Osmocom CNI";
|
||||
BSC [label="OsmoBSC"]
|
||||
MSC [label="OsmoMSC (SMSC inside)"]
|
||||
HLR [label="OsmoHLR"]
|
||||
BSC->MSC [label="AoIP"]
|
||||
MSC->HLR [label="GSUP"]
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
== Which BTS to use?
|
||||
|
||||
* Proprietary BTS of classic vendor
|
||||
** Siemens BS-11 is what we started with
|
||||
** Nokia, Ericsson, and others available 2nd hand
|
||||
* 'OsmoBTS' software implementation, running with
|
||||
** Proprietary HW + PHY (DSP): 'sysmoBTS', or
|
||||
** General purpose SDR (like USRP) + 'OsmoTRX'
|
||||
|
||||
We assume a sysmoBTS in the following tutorial
|
||||
|
||||
|
||||
== OsmoBTS Overview
|
||||
|
||||
image::osmo-bts.svg[]
|
||||
|
||||
* Implementation of GSM BTS
|
||||
* supports variety of hardware/PHY options
|
||||
** `osmo-bts-sysmo`: BTS family by sysmocom
|
||||
** `osmo-bts-trx`: Used with 'OsmoTRX' + general-purpose SDR
|
||||
** `osmo-bts-octphy`: Octasic OCTBTS hardware / OCTSDR-2G PHY
|
||||
** `osmo-bts-litecell15`: Nutaq Litecell 1.5 hardware/PHY
|
||||
|
||||
See separate talk about BTS hardware options later today.
|
||||
|
||||
== BTS Hardware vs. BTS software
|
||||
|
||||
* A classic GSM BTS is hardware + software
|
||||
* It has two interfaces
|
||||
** Um to the radio side, towards phones
|
||||
** Abis to the wired back-haul side, towards BSC
|
||||
* with today's flexible architecture, this is not always true
|
||||
** the hardware might just be a network-connected SDR and BTS software
|
||||
runs o a different CPU/computer, _or_
|
||||
** the BTS and BSC, or even the NITB may run on the same board
|
||||
|
||||
|
||||
== Physical vs. Logical Arch (sysmoBTS)
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
include::arch-sysmobts.dot[]
|
||||
----
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
include::arch-sysmobts-allinone.dot[]
|
||||
----
|
||||
|
||||
== Physical vs. Logical Arch (SDR e.g. USRP B2xx)
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
include::arch-usrp.dot[]
|
||||
----
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
include::arch-usrp-allinone.dot[]
|
||||
----
|
||||
|
||||
== IP layer traffic
|
||||
|
||||
* Abis/IP signaling runs inside IPA multiplex inside TCP
|
||||
** Port 3002 and 3003 betewen BTS and BSC
|
||||
** Connections initiated from BTS to BSC
|
||||
* Voice data is carried in RTP/UDP on dynamic ports
|
||||
|
||||
=> Make sure you permit the above communication in your
|
||||
network/firewall config
|
||||
|
||||
== Configuring Osmocom software
|
||||
|
||||
* all _native_ Osmo* GSM infrastructure programs share common architecture, as
|
||||
defined by various libraries 'libosmo{core,gsm,vty,abis,netif,...}'
|
||||
* part of this is configuration handling
|
||||
** interactive configuration via command line interface (*vty*), similar
|
||||
to Cisco routers
|
||||
** based on a fork of the VTY code from Zebra/Quagga, now 'libosmovty'
|
||||
* you can manually edit the config file,
|
||||
* or use `configure terminal` and interactively change it
|
||||
|
||||
|
||||
== Configuring OsmoBTS
|
||||
|
||||
* 'OsmoBTS' in our example scenario runs on the embedded ARM/Linux system
|
||||
inside the 'sysmoBTS'
|
||||
* we access the 'sysmoBTS' via serial console or ssh
|
||||
* we then edit the configuration file `/etc/osmocom/osmo-bts.cfg` as
|
||||
described in the following slide
|
||||
|
||||
|
||||
== Configuring OsmoBTS
|
||||
|
||||
----
|
||||
bts 0
|
||||
band DCS1800 <1>
|
||||
ipa unit-id 1801 0 <2>
|
||||
oml remote-ip 192.168.100.11 <3>
|
||||
----
|
||||
<1> the GSM frequency band in which the BTS operates
|
||||
<2> the unit-id by which this BTS identifies itself to the BSC
|
||||
<3> the IP address of the BSC (to establish the OML connection towards it)
|
||||
|
||||
NOTE: All other configuration is downloaded by the BSC via OML. So most
|
||||
BTS settings are configured in the BSC/NITB configuration file.
|
||||
|
||||
|
||||
== Purpose of Unit ID
|
||||
|
||||
* Unit IDs consist of three parts:
|
||||
** Site Number, BTS Number, TRX Number
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
graph G {
|
||||
rankdir=LR;
|
||||
BTS0 [label="BTS\nUnit 5/0[/0]"]
|
||||
BTS1 [label="BTS\nUnit 23/0[/0]"]
|
||||
BTS2 [label="BTS\nUnit 42/0[/0]"]
|
||||
NAT
|
||||
BSC [label="BSC/NITB"]
|
||||
|
||||
BTS0 -- NAT [label="10.9.23.5"]
|
||||
BTS1 -- NAT [label="10.9.23.23"]
|
||||
BTS2 -- NAT [label="10.9.23.42"]
|
||||
NAT -- BSC [label="172.16.23.42"]
|
||||
}
|
||||
----
|
||||
|
||||
* source IP of all BTSs would be identical
|
||||
|
||||
=> BSC identifies BTS on Unit ID, not on Source IP!
|
||||
|
||||
|
||||
== Configuring Osmocom CNI
|
||||
|
||||
* 'Osmocom CNI' is the collection of all the non-BTS Osmocom projects for 3GPP network operation, of which
|
||||
the minimally required are osmo-bsc, osmo-msc and osmo-hlr. You also will need osmo-stp for SIGTRAN and osmo-mgw for user plane.
|
||||
** just your usual `git clone && autoreconf -fi && ./configure && make install`
|
||||
** (in reality, the `libosmo*` dependencies are required first...)
|
||||
** nightly packages for Debian 9-11, buntu 19.x/20.x/21.x available
|
||||
* runs on any Linux system, like your speakers' laptop
|
||||
** you can actually also run it on the ARM/Linux of the 'sysmoBTS' itself,
|
||||
having a literal 'Network In The Box' with power as only external
|
||||
dependency
|
||||
|
||||
|
||||
== Configuring Osmocom CNI
|
||||
|
||||
* each program has a config file
|
||||
* simple example given in `doc/examples/osmo-*.cfg` of each git repo
|
||||
* each program has a user manual and a VTY command reference manual
|
||||
** asciidoc is part of the source
|
||||
** PDF renderings at https://downloads.osmocom.org/docs/latest/
|
||||
|
||||
|
||||
== What a GSM phone does after power-up
|
||||
|
||||
* Check SIM card for last cell before switch-off
|
||||
** if that cell is found again, use that
|
||||
** if not, perform a network scan
|
||||
*** try to find strong carriers, check if they contain BCCH
|
||||
*** create a list of available cells + networks
|
||||
*** if one of the networks MCC+MNC matches first digits of 'IMSI', this is
|
||||
the home network, which has preference over others
|
||||
* perform 'LOCATION UPDATE' (TYPE=IMSI ATTACH) procedure to network
|
||||
* when network sends 'LOCATION UPDATE ACCEPT', *camp* on that cell
|
||||
|
||||
-> let's check if we can perform 'LOCATION UPDATE' on our own network
|
||||
|
||||
|
||||
== Verifying our network
|
||||
|
||||
* look at log output of Osmocom programs
|
||||
** 'OsmoBTS' will terminate if Abis cannot be set-up, expected to be re-spawned by init / systemd
|
||||
* use MS to search for networks, try manual registration
|
||||
* observe registration attempts `logging level mm info`
|
||||
|
||||
-> should show 'LOCATION UPDATE' request / reject / accept
|
||||
|
||||
* use the VTY to explore system state (`show *`)
|
||||
* use the VTY to change subscriber parameters like extension number
|
||||
|
||||
|
||||
== Exploring your GSM networks services
|
||||
|
||||
* use `*#100#` from any registered MS to obtain own number
|
||||
* voice calls from mobile to mobile
|
||||
* SMS from mobile to mobile
|
||||
* SMS to/from external applications (via SMPP)
|
||||
* voice to/from external PBX (via MNCC)
|
||||
* explore the VTY interfaces of all network elements
|
||||
** send SMS from the command line
|
||||
** experiment with 'silent call' feature
|
||||
** experiment with logging levels
|
||||
* use wireshark to investigate GSM protocols
|
||||
|
||||
|
||||
== Using the VTY
|
||||
|
||||
* The VTY can be used not only to configure, but also to interactively
|
||||
explore the system status (`show` commands)
|
||||
* Every Osmo* program has its own telnet port
|
||||
|===
|
||||
|Program|Telnet Port
|
||||
|OsmoBTS|4241
|
||||
|OsmoBSC|4242
|
||||
|OsmoMSC|4254
|
||||
|OsmoHLR|4258
|
||||
|===
|
||||
* https://osmocom.org/projects/cellular-infrastructure/wiki/Port_Numbers
|
||||
* ports are bound to 127.0.0.1 by default
|
||||
** can be bound to other IPs or ANY via config file
|
||||
* try tab-completion, `?` and `list` commands
|
||||
|
||||
== Using the VTY (continued)
|
||||
|
||||
* context-sensitive command line interface like Cisco and many others
|
||||
* `show` commands to introspect
|
||||
** try `show bts`, `show trx`, `show lchan`, `show statistics`, ...
|
||||
* `enable` + `configure terminal` for configuration mode
|
||||
* interactive reference, tab-completion
|
||||
* `logging enable` adds log target to VTY session
|
||||
|
||||
== Further Reading
|
||||
|
||||
User Manuals::
|
||||
See http://ftp.osmocom.org/docs/latest/
|
||||
Wiki::
|
||||
See https://osmocom.org/projects/cellular-infrastructure/wiki
|
||||
|
||||
== The End
|
||||
|
||||
* so long, and thanks for all the fish
|
||||
* I hope you have questions!
|
||||
|
||||
[role="incremental"]
|
||||
* have fun exploring mobile technologies using Osmocom
|
||||
* interested in working with more acronyms? Come join the project!
|
||||
|
||||
* Check out https://osmocom.org/ and openbsc@lists.osmocom.org
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue