osmodevcon2019: cell broadcast slides

This commit is contained in:
Harald Welte 2019-04-25 12:17:43 +02:00
parent abdb51f63b
commit 3120341481
5 changed files with 321 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,265 @@
Cell Broadcast for Osmocom
==========================
:author: Harald Welte <laforge@gnumonks.org>
:copyright: 2019 by Harald Welte (License: CC-BY-SA)
:backend: slidy
:max-width: 45em
== Cell Broadcast
* classic GSM (and other 3GPP) are point-to-point
** limited radio resources means limited concurrent communication
* exotic options for point-to-multipoint
** VGCS/VBS (voice group/broadcast calls) exist only in GSM-R
** MBMS (never deployed in 2G/3G) adds multicast packet service
* this leaves cell broadcast as the *only* fast way to send informations to many subscribers at once
** main use case: emergency / disaster warning
== Message Structure
* Message has maximum 15 pages
* Each page is 82 bytes of data, resulting in 93 characters in GSM 7-bit default alphabet
* Messges are broadcast on logical channels (more like an address)
* Subscribers can activate/deactivate selective addresses
* 3GPP TS 03.41 / 23.041
== Cell Broadcast in GSM
[graphviz]
----
digraph G {
BTS0 [label="BTS"];
BTS1 [label="BTS"];
BTS10 [label="BTS"];
BTS11 [label="BTS"];
BSC1 [label="BSC"];
User -> CBC [label="proprietaty"];
CBC -> BSC [label="CBSP"];
CBC -> BSC1 [label="CBSP"];
BSC -> BTS0 [label="RSL"];
BSC -> BTS1 [label="RSL"];
BSC1 -> BTS10 [label="RSL"];
BSC1 -> BTS11 [label="RSL"];
BTS0 -> MS [label="CBCH"];
}
----
== Cell Broadcast in GSM
[mscgen]
----
include::smscb-2g.msc[]
----
== Cell Broadcast in Osmocom today
image::osmocom-cbs.png[]
== Cell Broadcast in Osmocom soon (TM)
* publicly funded project to complete Cell Broadcast support
** Prototype Fund
* to be completed within Q3/2019
* covers at least the full support for 2G + 3G
** if time permits, 4G support will be added
== Functionality in the BTS
* replace one SDCCH in SDCCH/4 or SDCCH/8 with CBCH
* advertise CBCH presence in BCCH (SYSTEM INFORMATION)
* receive `RSL SMS BROADCAST CMD` from BSC
** segment that message into four blocks
** transmit blocks in `04.12 SMS BROADCAST REQ` on CBCH
* generate `CBCH LOAD INDICATION` and send them via RSL to BSC
== Functionality in the BSC
* receive SMSCB via CBSP from CBC
* distribute them to the respective BTSs in the target area
* schedule the bandwidth between different concurrently active SMSCB
* process RSL `CBCH LOAD INDICATION` and compute load averages
* perform flow control based on `RSL CBCH LOAD IND` from each BTS
* respond to load status enquiries from CBC
== Functionality in the CBC
* receive SMSCB from external users (emergency services)
** each SMSCB has geographic scope and validity period
** no standard interface specified in 3GPP
* manage distribution of SMSCB for each connected BSC
** send SMSCB only to those BSC within geographic scope
** remove messages from BSCs after time expires
** handle BSC restart situations where state is lost
== RSL SMS BROADCAST CMD
* transmits entire SMSCB message (88 octets)
* can also be used to set a _default SMSCB message_
** this message is transmitted whenever no other non-default message is pending
** works similar to _SACCH filling_ or _BCCH information_
== CBSP (3GPP TS 48.049)
* spoken on the unnamed interface between CBC and BSC
* no formal syntax, good old "human readable tables in specs" style
* transported over TCP port 48049
* key procedures
** Write-Replace Procedure
** Kill Procedure
** Load Status Enquiry Procedure
** Message Status Query Procedure
** Set DRX Procedure (optional)
** Reset Procedure
== Cell Broadcast in UMTS
Is actually called *Service Area Broadcast*
[graphviz]
----
digraph G {
BTS0 [label="NodeB"];
BTS1 [label="NodeB"];
BTS10 [label="NodeB"];
BTS11 [label="NodeB"];
BSC [label="RNC"];
BSC1 [label="RNC"];
User -> CBC [label="proprietaty"];
CBC -> BSC [label="SABP"];
CBC -> BSC1 [label="SABP"];
BSC -> BTS0 [label="Iub"];
BSC -> BTS1 [label="Iub"];
BSC1 -> BTS10 [label="Iub"];
BSC1 -> BTS11 [label="Iub"];
BTS0 -> UE [label="BMC/CTCH"];
}
----
== Cell Broadcast in UMTS
[mscgen]
----
include::smscb-3g.msc[]
----
== Functionality in the NodeB
* completely transparent
* relay the BMC protocol between UE (via Uu) and RNC (via Iub)
== Functionality in the RNC
* pretty much analogous to that of BSC
* schedule transmission of CBS messages on CTCH (Common Traffic Channel)
== Functionality in the CBC
* identical functionality like for 2G
* additional protocol required: SABP
== SABP Protocol (3GPP TS 25.419)
* spoken on Iu-BC interface between CBC and RNC
* specified in ASN.1 using BASIC-PER
* transported over ALCAP/SAAL/AAL5/ATM (yikes!)
** later specified over TCP port 3452
** some hints that use over UDP and SCTP also exists
** typiclaly established in CBC -> RNC direction
* key procedures
** Write-Replace Procedure
** Kill Procedure
** Load Status Query Procedure
** Reset Procedure
== Functionality in the HNBGW
* hNodeBs include the RNC functionality, but they don't connect directly to CBC
* HNBGW handle the IuBC connection to the CBC
* relay / multiplex IuBC between hNodeBs and CBC
== Cell Broadcast in LTE
* Generic Cell Broadcast was removed; only Emergency Warnings in 4G
[graphviz]
----
digraph G {
BTS0 [label="eNodeB"];
BTS1 [label="eNodeB"];
BTS10 [label="eNodeB"];
BTS11 [label="eNodeB"];
BSC [label="MME"];
BSC1 [label="MME"];
User -> CBC [label="proprietaty"];
CBC -> BSC [label="SBc-AP"];
CBC -> BSC1 [label="SBc-AP"];
BSC -> BTS0 [label="S1-AP"];
BSC -> BTS1 [label="S1-AP"];
BSC1 -> BTS10 [label="S1-AP"];
BSC1 -> BTS11 [label="S1-AP"];
BTS0 -> UE [label="FIXME"];
}
----
== Cell Broadcast in LTE
[mscgen]
----
include::smscb-4g.msc[]
----
== Functionality in the eNodeB
* handling of S1-AP "Write-Replace Warning" procedure
* scheduling of SMSCB
* transmission of SMSCB in SIB
== Functionality in the MME
* pretty much analogous to that of BSC/RNC
* less work to do, as all scheduling is done inside eNodeB
* basically purely a distribution/routing function
== Functionality in the CBC
* identical functionality like for 2G/3G
* additional protocol required: SBc-AP
== SBc-AP Protocol (3GPP TS 29.168)
* spoken on SBc interface between CBC and MME
* ASN.1 specified
* operated over SCTP port 29168
* key procedures
** Write-Replace Warning Procedure
** Stop Warning Procedure
** Error Indication Procedure
== Wireshark support for Cell Broadcast
* `gsm_cbs` dissector for TS 04.12 format of SMSCB messages
* SABP dissector in mainline for more than a decade
* SBc-AP dissector present in mainline since 2011
* CBSP dissector missing
** written by Harald Welte in 2018, but untested and not yet mainline
** see `laforge/cbsp` branch of `git://git.osmocom.org/wireshark.git`
== Further Reading
* https://osmocom.org/projects/cellular-infrastructure/wiki/Cell_Broadcast[Cell Broadcast in Osmocom.org wiki]
* https://www.etsi.org/deliver/etsi_ts/123000_123099/123041/15.02.00_60/ts_123041v150200p.pdf[3GPP TS 23.041 GSM: Technical realization of Cell Broadcast Service (CBS)]
* https://www.etsi.org/deliver/etsi_ts/148000_148099/148049/15.00.00_60/ts_148049v150000p.pdf[3GPP TS 48.049 GSM: Baste Station Controller - Cell Broadcast Centre (BSC-CBC) interface specification; Cell Broadcast Service Protocol]
* http://www.etsi.org/deliver/etsi_ts/122200_122299/122268/14.00.00_60/ts_122268v140000p.pdf[3GPP TS 22.268 PWS: Public Warning System (PWS) requirements]
* https://www.etsi.org/deliver/etsi_ts/144000_144099/144012/15.00.00_60/ts_144012v150000p.pdf[3GPP TS 44.012 GSM: Short Message Service Cell Broadcast (SMSCB) support on the mobile radio interface]
* https://www.one2many.eu/assets/files/19_displaying-cb-messages.pdf[Whitepaper on Displaying Cell Broadcast]
== EOF
End of File

View File

@ -0,0 +1,23 @@
msc {
hscale="2";
ms [label="MS"], bts [label="BTS"], bsc [label="BSC"], cbc [label="CBC"], cbe [label="CBE"];
cbc <= cbe [label="New message (duration, geographic scope)"];
cbc box cbc [label="Determine list of BSCs in scope"];
bsc <= cbc [label="CBSP WRITE-REPLACE"];
bsc => cbc [label="CBSP WRITE-REPLACE ACK"];
bsc box bsc [label="Determine list of BTSs in scope"];
bsc box bsc [label="Schedule with any other SMSCB for give BTSs"];
bts <= bsc [label="RSL SMSCB COMMAND"];
ms <= bts [label="CBCH SMSCB block (1/4)"];
ms <= bts [label="CBCH SMSCB block (2/4)"];
ms <= bts [label="CBCH SMSCB block (3/4)"];
ms <= bts [label="CBCH SMSCB block (4/4)"];
bts box bts [label="BTS doesn't retransmit unless type=default"];
bts => bsc [label="RSL CBCH LOAD IND"];
bsc box bsc [label="flow control; scheduling"];
}

View File

@ -0,0 +1,17 @@
msc {
hscale="2";
ue [label="UE"], nodeb [label="NodeB"], rnc [label="RNC"], cbc [label="CBC"], cbe [label="CBE"];
cbc <= cbe [label="New message (duration, geographic scope)"];
cbc box cbc [label="Determine list of RNCs in scope"];
rnc <= cbc [label="SABP WRITE-REPLACE"];
rnc => cbc [label="SABP WRITE-REPLACE ACK"];
rnc box rnc [label="Determine list of NodeBs in scope"];
rnc box rnc [label="Schedule with any other SMSCB for give NodeBs"];
nodeb <= rnc [label="CTCH RRC CBS"];
ue <= nodeb [label="CTCH RRC CBS"];
rnc box rnc [label="flow control; scheduling"];
}

View File

@ -0,0 +1,16 @@
msc {
hscale="2";
ue [label="eUE"], nodeb [label="eNodeB"], mme [label="MME"], cbc [label="CBC"], cbe [label="CBE"];
cbc <= cbe [label="New message (duration, geographic scope)"];
cbc box cbc [label="Determine list of MMEs in scope"];
mme <= cbc [label="SBc-AP WRITE-REPLACE WARNING MSG"];
mme box mme [label="Determine list of eNodeBs in scope"];
nodeb <= mme [label="S1-AP Write-Replace Warning Req"];
nodeb => mme [label="S1-AP Write-Replace Warning Resp"];
mme => cbc [label="SBc-AP Write-Replace Warning Ind"];
ue <= nodeb [label="SIB Warning"];
}