1xBTS 1xBTS

Management Plane

gRPC is the operator and inter-component transport. It carries diagnostics, operator actions, the web dashboard, the HLR/SMSC/packet service boundaries, and the MSC-controlled voice gateway streams. Standards interfaces such as Abis, A1, A2p, A8/A9, and A10/A11 do not ride on gRPC.

Management plane diagram

Service Layout

The MSC is the management entry point for the whole network. It serves one endpoint at 127.0.0.1:17017, and the web dashboard and operator tooling call only that. Behind it, each base station (a BSC) serves its own management endpoint that the MSC enrolls with, and each cell (a BTS) serves one that its BSC enrolls with. The HRPD access network runs inside every EV-DO cell and serves its own session API.

ServiceHosted byRole
mgmt.v1.NetworkManagementServiceMSC :17017The single management interface. Forwards per-base-station and per-cell calls to the right BSC, BTS or HRPD access network, and aggregates network-wide views.
msc_management.v1.MscManagementServiceMSC :17017Base station list, call initiation and listing, SMS submission, OTASP event stream
base_station.v1.BaseStationServiceBSC :17016Enrollment: the MSC learns the base station’s id, A1 address and served cells here before dialing A1
bsc_management.v1.BscManagementServiceBSC :17016Mobiles, channels, access/paging/traffic event streams, BSC status
bts_management.v1.BtsManagementServiceBTS :17024, proxied per cell by the BSCCell enrollment, status and config, radio metrics, IQ capture, reverse power control
an.v1.AnServiceBTS :17030 (EV-DO cells only)HRPD sessions, UATI allocation and session events
hlr.v1.HlrServiceHLR :17019Subscribers, identities, registrations, PRLs, OTASP sessions
smsc.v1.SmscServiceSMSC :17020SMS submission and delivery persistence
packet.v1.PacketServicePDSN :17021Packet sessions
events.v1.EventServiceEvent bus :17023Aggregated network event stream across all components
voice_gateway.v1.VoiceGatewayVoice gateway :17015Call control and media streams driven by the MSC

Enrollment

Management follows the same tree as the radio network:

  1. The BSC enrolls each cell listed in its bts_peers through the cell’s management endpoint, then brings up Abis to it.
  2. The MSC enrolls each base station listed in its base_stations through the BSC’s management endpoint, learns its A1 address and cells, then connects A1.
  3. The web asks the MSC, and the MSC forwards to whichever base station or cell the request names.

A base station or cell that comes up later, or restarts, is re-enrolled automatically.

Aggregated Event Bus

events.v1.EventService exposes a single subscribable stream of network events from across the stack — BTS, BSC, MSC, PCF, PDSN, HLR, and SMSC. Connect once with ListenEvents and you receive everything the network is doing.

Each event carries a timestamp, the originating component (EventSource), a monotonically increasing sequence number, and a typed body specific to that component. You can filter the stream by source to receive only the components you care about.

See gRPC API → EventService for the full message schema.

Management Ownership

FeatureWhere it lives
Base station list, calls, SMS submission, OTASP eventsMSC
Mobile list, channel list, access/paging/traffic streamsBSC, reached through the MSC
Radio metrics, IQ capture, reverse power controlBTS, reached through the MSC and its BSC
EV-DO / HRPD sessionsHRPD access network inside the EV-DO cell, reached through the MSC
Packet sessions and packet trace capturePDSN, reached through the MSC
Subscribers, PRLs, OTASP session historyHLR, which the web reaches directly
SMS historySMSC, which the web reaches directly

Dashboard Integration

1xbts-web talks to the MSC from Next.js API routes. Browser clients receive SSE streams from the web server and do not open raw gRPC connections.

Browser -> 1xbts-web (:3000) -> MSC network management (:17017) -> base stations, cells, HRPD, PDSN
\-> HLR (:17019) for subscribers and PRLs
\-> SMSC (:17020) for SMS history
\-> event bus (:17023) for live events
<- SSE metrics/events

Set MSC_GRPC_ADDRESS to point the web at the MSC. HLR_GRPC_ADDRESS and SMSC_GRPC_ADDRESS default to the MSC’s host on ports 17019 and 17020, and EVENTS_GRPC_ADDRESS to 127.0.0.1:17023. All four are set in docker-compose.yml.

Common grpcurl Calls

Terminal window
grpcurl -plaintext localhost:17017 msc_management.v1.MscManagementService/ListBaseStations
grpcurl -plaintext localhost:17017 msc_management.v1.MscManagementService/ListCalls
grpcurl -plaintext localhost:17017 mgmt.v1.NetworkManagementService/ListAllMobiles
grpcurl -plaintext -d '{"selector":{"base_station":"bts-1"}}' \
localhost:17017 mgmt.v1.NetworkManagementService/GetBscStatus
grpcurl -plaintext localhost:17019 hlr.v1.HlrService/ListSubscribers
grpcurl -plaintext localhost:17020 smsc.v1.SmscService/ListSmsSubmissions
Esc