osmocon slides update
This commit is contained in:
parent
37304ea8d7
commit
cec90c7792
File diff suppressed because it is too large
Load Diff
|
@ -698,4 +698,4 @@ LTE cells, similar to 3.5G strategy
|
|||
* the entire Osmocom team for what they have achieved
|
||||
** notably Dieter Spaar, Holger Freyther, Andreas Eversberg, Sylvain Munaut
|
||||
* last but not least: CEPT for making the GSM specs English
|
||||
** (who'd want to read French specs anyway?)
|
||||
** (who'd want to read French specs here?)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 723 KiB |
|
@ -0,0 +1,27 @@
|
|||
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 }
|
||||
|
||||
OsmoNITB
|
||||
OsmoSGSN [style="dashed"]
|
||||
OsmoBTS -- OsmoNITB [label="Abis/IP\n(lo)"]
|
||||
OsmoPCU -- OsmoSGSN [label="Gb/IP\n(lo)"]
|
||||
|
||||
{ rank=same; OsmoNITB OsmoSGSN }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
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"
|
||||
OsmoNITB
|
||||
OsmoSGSN [style="dashed"]
|
||||
OsmoBTS -- OsmoNITB [label="Abis/IP"]
|
||||
OsmoPCU -- OsmoSGSN [label="Gb/IP"]
|
||||
|
||||
{ rank=same; OsmoNITB OsmoSGSN }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
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 }
|
||||
|
||||
OsmoNITB
|
||||
OsmoSGSN [style="dashed"]
|
||||
OsmoBTS -- OsmoNITB [label="Abis/IP\n(lo)"]
|
||||
OsmoPCU -- OsmoSGSN [label="Gb/IP\n(lo)"]
|
||||
|
||||
{ rank=same; OsmoNITB OsmoSGSN }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
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)"
|
||||
OsmoNITB
|
||||
OsmoSGSN [style="dashed"]
|
||||
OsmoBTS -- OsmoNITB [label="Abis/IP"]
|
||||
OsmoPCU -- OsmoSGSN [label="Gb/IP"]
|
||||
}
|
||||
}
|
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 |
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,495 @@
|
|||
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-gsm.svg[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
|
||||
}
|
||||
----
|
||||
|
||||
== Simplified OsmoNITB GSM network
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
digraph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS"]
|
||||
MS1 [label="MS"]
|
||||
MS2 [label="MS"]
|
||||
MS3 [label="MS"]
|
||||
BTS0 [label="BTS"]
|
||||
BTS1 [label="BTS"]
|
||||
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_nitb {
|
||||
label = "OsmoNITB";
|
||||
BSC
|
||||
MSC [label="MSC/VLR"]
|
||||
HLR [label="HLR/AUC"]
|
||||
BSC->MSC [label="A"]
|
||||
MSC->HLR [label="C"]
|
||||
MSC->EIR [label="F"]
|
||||
MSC->SMSC;
|
||||
}
|
||||
}
|
||||
----
|
||||
|
||||
which further reduces to the following minimal setup:
|
||||
|
||||
[graphviz]
|
||||
----
|
||||
digraph G {
|
||||
rankdir=LR;
|
||||
MS0 [label="MS"]
|
||||
BTS0 [label="BTS"]
|
||||
MS0->BTS0 [label="Um"]
|
||||
BTS0->BSC [label="Abis"]
|
||||
BSC [label="OsmoNITB"];
|
||||
}
|
||||
----
|
||||
|
||||
So our minimal setup is a 'Phone', a 'BTS' and 'OsmoNITB'.
|
||||
|
||||
== 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 OsmoNITB
|
||||
|
||||
* 'OsmoNITB' is the `osmo-nitb` executable built from the `openbsc`
|
||||
source tree / git repository
|
||||
** just your usual `git clone && autoreconf -fi && ./configure && make install`
|
||||
** (in reality, the `libosmo*` dependencies are required first...)
|
||||
** nightly packages for Debian 8, Ubuntu 16.04 and 16.10 available
|
||||
* 'OsmoNITB' 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 OsmoNITB
|
||||
|
||||
----
|
||||
network
|
||||
network country code 1 <1>
|
||||
mobile network code 1 <2>
|
||||
short name Osmocom <3>
|
||||
long name Osmocom
|
||||
auth policy closed <4>
|
||||
encryption a5 0 <5>
|
||||
----
|
||||
<1> MCC (Country Code) e.g. 262 for Germany; 1 == Test
|
||||
<2> MNC (Network Code) e.g. mcc=262, mnc=02 == Vodafone; 1 == Test
|
||||
<3> Operator name to be sent to the phone *after* registration
|
||||
<4> Only accept subscribers (SIM cards) explicitly authorized in HLR
|
||||
<5> Use A5/0 (== no encryption)
|
||||
|
||||
|
||||
== Configuring BTS in OsmoNITB (BTS)
|
||||
|
||||
----
|
||||
network
|
||||
bts 0
|
||||
type sysmobts <1>
|
||||
band DCS1800 <2>
|
||||
ms max power 33 <3>
|
||||
periodic location update 6 <4>
|
||||
ip.access unit_id 1801 0 <5>
|
||||
codec-support fr hr efr amr <6>
|
||||
----
|
||||
<1> type of the BTS that we use (must match BTS)
|
||||
<2> frequency band of the BTS (must match BTS)
|
||||
<3> maximum transmit power phones are permitted (33 dBm == 2W)
|
||||
<4> interval at which phones should send periodic location update (6 minutes)
|
||||
<5> Unit ID of the BTS (must match BTS)
|
||||
<6> Voice codecs supported by the BTS
|
||||
|
||||
|
||||
== Configuring BTS in OsmoNITB (TRX)
|
||||
|
||||
----
|
||||
network
|
||||
bts 0
|
||||
trx 0
|
||||
arfcn 871 <1>
|
||||
max_power_red 0 <2>
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4 <3>
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F <4>
|
||||
...
|
||||
timeslot 7
|
||||
phys_chan_config PDCH <5>
|
||||
----
|
||||
<1> The RF channel number used by this TRX
|
||||
<2> The maximum power *reduction* in dBm. 0 = no reduction
|
||||
<3> Every BTS needs need one timeslot with a CCCH
|
||||
<4> We configure TS1 to TS6 as TCH/F for voice
|
||||
<5> We configure TS6 as PDCH for GPRS
|
||||
|
||||
|
||||
== 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 stderr of 'OsmoBTS' and 'OsmoNITB'
|
||||
** '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
|
||||
|OsmoPCU|4240
|
||||
|OsmoBTS|4241
|
||||
|OsmoNITB|4242
|
||||
|OsmoSGSN|4245
|
||||
|===
|
||||
* ports are bound to 127.0.0.1 by default
|
||||
* try tab-completion, `?` and `list` commands
|
||||
|
||||
== Using the VTY (continued)
|
||||
|
||||
* e.g. `show subsciber` to display data about subscriber:
|
||||
----
|
||||
OpenBSC> show subscriber imsi 901700000003804
|
||||
ID: 12, Authorized: 1
|
||||
Extension: 3804
|
||||
LAC: 0/0x0
|
||||
IMSI: 901700000003804
|
||||
TMSI: F2D4FA0A
|
||||
Expiration Time: Mon, 07 Dec 2015 09:45:16 +0100
|
||||
Paging: not paging Requests: 0
|
||||
Use count: 1
|
||||
----
|
||||
|
||||
* try `show bts`, `show trx`, `show lchan`, `show statistics`, ...
|
||||
|
||||
== Further Reading
|
||||
|
||||
User Manuals::
|
||||
See http://ftp.osmocom.org/docs/latest/
|
||||
Wiki::
|
||||
See http://osmocom.org/projects/openbsc
|
||||
|
||||
== 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
|
@ -12,6 +12,7 @@ image:images/osmocon.png[width="90%"]
|
|||
|
||||
== A diverse audience
|
||||
|
||||
[role="incremental"]
|
||||
* Osmocom developers
|
||||
* Commercial cellular Operators
|
||||
* Community Wireless Network Operators
|
||||
|
@ -22,11 +23,14 @@ image:images/osmocon.png[width="90%"]
|
|||
|
||||
== Thanks to..
|
||||
|
||||
[role="incremental"]
|
||||
* Heike for organization, backoffice, registration
|
||||
* Maike for ticket sales, registration
|
||||
* our hosts here at JGH Berlin
|
||||
* our Speakers
|
||||
* the anonymous Sponsor of the travel grants
|
||||
* the anonymous sponsor of the travel grants
|
||||
* C3VOC of Chaos Computer Club for video recordings
|
||||
* Everyone who ever contributed code to Osmocom!
|
||||
|
||||
== Schedule
|
||||
|
||||
|
@ -103,7 +107,7 @@ Date: Tue Dec 23 20:25:15 2008 +0000
|
|||
* organizes this event as Osmocom is no legal entity
|
||||
* unfortunately is doing >= 80% of commits in Osmocom cellular
|
||||
infrastructure projects.
|
||||
** Osmocom must not depend on sysmocom
|
||||
** Osmocom should not depend on sysmocom
|
||||
** we need more commitment and contributions from all users and beneficiaries
|
||||
|
||||
== EOF
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue