[[smscb]] == SMSCB (Cell Broadcast) OsmoBSC supports SMS Cell Broadcast (SMSCB) services (CBS). This includes the CBSP protocol to interact with a CBC (Cell Broadcast Centre) such as OsmoCBC, as well as the scheduling of SMSCB messages on both the BASIC and EXTENDED CBCH and transmission of related RSL messages to the attached BTS. More high-level information can be found at https://en.wikipedia.org/wiki/Cell_Broadcast and the related specification is <<3gpp-ts-23-041>>. In order to use SMSCB with OsmoBSC, you will need to * Configure OsmoBSC as either CBSP server or client * Use a channel combination including a CBCH on the BTSs === Enabling a CBCH channel combination On the Um interface, SMSCB are transmitted via the CBCH (Cell Broadcast Channel). The CBCH is a separate downlink-only logical channel which must be activated on any of the BTSs requiring CBSP support. The channel combination is configured in the `timeslot` node of each TRX. The two `phys_chan_config` supporting CBCH are `CCCH+SDCCH4+CBCH` and `SDCCH/8+CBCH`. Please note that the CBCH steals one of the SDCCH, so a SDCCH/4 will only have three remaining SDCCH, and a SDCCH/8 will have only seven remaining SDCCH. === Configuring the CBSP connection CBSP is the protocol between BSC and CBC. It operates over TCP. According to 3GPP TS 48.049, a BSC typically operates as a TCP server, and the CBC connects as TCP client. This would require the CBC to have out-of-band knowledge of all the BSCs in the network (and their IP addresses). In order to comply with the specifications, OsmoBSC supports this mode of operation as CBSP TCP server. However, to make network operation and configuration more simple, it also can operate in TCP client mode, connecting to the CBC. This way the BSCs need to know the CBC IP address, but not vice-versa. The BSC can operate in either CBSP TCP server mode or CBSP TCP client mode. The CBC related configuration of OsmoBSC can be found in the `cbc` configuration node of the VTY interface. The default port number for the CBSP server is 48049, according to the CBSP specification. Hence it normally suffices to configure only the IP addresses for the remote CBC server or the local CBSP server: .Example: Configure CBSP TCP client to connect to CBC at 1.2.3.4:48049 in osmo-bsc.cfg ---- cbc mode client client remote-ip 1.2.3.4 ---- In server mode, the default configuration is 127.0.0.1:48049, so it suffices to set `mode server` to accept CBSP connections from localhost: ---- cbc mode server ---- To also listen for inbound CBSP connections on all interfaces, both IPv4 and IPv6: .Example: Configure CBSP TCP server to listen on all interfaces in osmo-bsc.cfg ---- cbc mode server server local-ip :: ---- Should non-standard port numbers be required, these can be configured with the `client` / `local-port` or the `server` / `remote-port` settings. The `client` config also supports an explicit local bind for connecting to the remote CBC, using `client` / `local-ip` and `local-port`. IP addresses for client and server can remain configured at the same time, and the `mode` command can be used to switch between client and server operation. The `mode` command takes immediate effect, no restart of OsmoBSC is required. After changing `cbc` IP addresses in the telnet VTY, it is required to switch `mode` to `disabled` and back to `client` or `server` to take effect. .Example: Disable the CBSP link in the telnet VTY ---- OsmoBSC> enable OsmoBSC# configure terminal OsmoBSC(config)# cbc OsmoBSC(config-cbc)# mode disabled OsmoBSC(config-cbc)# end ---- For more details on the available configuration commands, please check the OsmoBSC VTY Reference. === Counters OsmoBSC has two Cell Broadcast related rate counter groups for each BTS: * the basic CBCH ("cell broadcast channel 0") * the extended CBCH ("cell broadcast channel 1") See below example for a situation where no CBS messages were received yet from the CBC, and hence only NULL messages have been sent on both basic and extended CBCH: .Example: CBCH related rate counters on a BTS that didn't receive any CBS messages ---- cell broadcast channel 1: cbch:rcvd_queued: 0 (0/s 0/m 0/h 0/d) Received + queued CBCH messages (Abis) cbch:rcvd_dropped: 0 (0/s 0/m 0/h 0/d) Received + dropped CBCH messages (Abis) cbch:sent_single: 0 (0/s 0/m 0/h 0/d) Sent single CBCH messages (Um) cbch:sent_default: 0 (0/s 0/m 0/h 0/d) Sent default CBCH messages (Um) cbch:sent_null: 31366 (0/s 45/m 2677/h 30588/d) Sent NULL CBCH messages (Um) cell broadcast channel 0: cbch:rcvd_queued: 0 (0/s 0/m 0/h 0/d) Received + queued CBCH messages (Abis) cbch:rcvd_dropped: 0 (0/s 0/m 0/h 0/d) Received + dropped CBCH messages (Abis) cbch:sent_single: 0 (0/s 0/m 0/h 0/d) Sent single CBCH messages (Um) cbch:sent_default: 0 (0/s 0/m 0/h 0/d) Sent default CBCH messages (Um) cbch:sent_null: 31366 (1/s 46/m 2676/h 30588/d) Sent NULL CBCH messages (Um) ----