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.
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.
| Service | Hosted by | Role |
|---|---|---|
mgmt.v1.NetworkManagementService | MSC :17017 | The 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.MscManagementService | MSC :17017 | Base station list, call initiation and listing, SMS submission, OTASP event stream |
base_station.v1.BaseStationService | BSC :17016 | Enrollment: the MSC learns the base station’s id, A1 address and served cells here before dialing A1 |
bsc_management.v1.BscManagementService | BSC :17016 | Mobiles, channels, access/paging/traffic event streams, BSC status |
bts_management.v1.BtsManagementService | BTS :17024, proxied per cell by the BSC | Cell enrollment, status and config, radio metrics, IQ capture, reverse power control |
an.v1.AnService | BTS :17030 (EV-DO cells only) | HRPD sessions, UATI allocation and session events |
hlr.v1.HlrService | HLR :17019 | Subscribers, identities, registrations, PRLs, OTASP sessions |
smsc.v1.SmscService | SMSC :17020 | SMS submission and delivery persistence |
packet.v1.PacketService | PDSN :17021 | Packet sessions |
events.v1.EventService | Event bus :17023 | Aggregated network event stream across all components |
voice_gateway.v1.VoiceGateway | Voice gateway :17015 | Call control and media streams driven by the MSC |
Enrollment
Management follows the same tree as the radio network:
- The BSC enrolls each cell listed in its
bts_peersthrough the cell’s management endpoint, then brings up Abis to it. - The MSC enrolls each base station listed in its
base_stationsthrough the BSC’s management endpoint, learns its A1 address and cells, then connects A1. - 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
| Feature | Where it lives |
|---|---|
| Base station list, calls, SMS submission, OTASP events | MSC |
| Mobile list, channel list, access/paging/traffic streams | BSC, reached through the MSC |
| Radio metrics, IQ capture, reverse power control | BTS, reached through the MSC and its BSC |
| EV-DO / HRPD sessions | HRPD access network inside the EV-DO cell, reached through the MSC |
| Packet sessions and packet trace capture | PDSN, reached through the MSC |
| Subscribers, PRLs, OTASP session history | HLR, which the web reaches directly |
| SMS history | SMSC, 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/eventsSet 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
grpcurl -plaintext localhost:17017 msc_management.v1.MscManagementService/ListBaseStationsgrpcurl -plaintext localhost:17017 msc_management.v1.MscManagementService/ListCallsgrpcurl -plaintext localhost:17017 mgmt.v1.NetworkManagementService/ListAllMobilesgrpcurl -plaintext -d '{"selector":{"base_station":"bts-1"}}' \ localhost:17017 mgmt.v1.NetworkManagementService/GetBscStatusgrpcurl -plaintext localhost:17019 hlr.v1.HlrService/ListSubscribersgrpcurl -plaintext localhost:17020 smsc.v1.SmscService/ListSmsSubmissions