1xBTS 1xBTS

System Overview

System architecture diagram

1xBTS is now organized as explicit network nodes. The default cdma-nib binary can still run the stack together for development, but the architecture treats BTS, BSC, MSC, PCF, PDSN, HLR, SMSC, and the voice gateway as separate ownership domains.

Standards Interfaces

InterfaceNodesTransportPurpose
Abis signalingBTS ↔ BSCTCP 5604 with F634 framingBTS/BSC control messages
Abis bearerBTS ↔ BSCUDP — BTS-side 17014, BSC-side 17022traffic frames and timing metadata
A1BSC ↔ MSCTCP 17013 in the current runtimeIOS call-control seam
A2pBSC ↔ MSCper-circuit RTP/UDPEVRC voice bearer with circuit-specific RTP sessions
A8/A9BSC ↔ PCFGRE/IP + UDP/IP targetpacket-data radio edge
A10/A11PCF ↔ PDSNGRE/IP + UDP/IP targetpacket-data core anchor

gRPC is not used for these standards interfaces. It is used for management, diagnostics, web UI, local HLR/SMSC/packet service boundaries, and SIP voice gateway integration.

Current packet-core status: cdma-nib reaches packet data through the packet gRPC service on 127.0.0.1:17021 instead of direct in-process packet service wiring. PCF/PDSN-owned session state and A8/A10 bearer models exist, and cdma-a8 / cdma-a10 include GRE codecs and bearer tables, but there is not yet a UDP socket driver for A8 or A10 and A9/A11 do not cross a standards network boundary.

Node Responsibilities

NodeOwns
BTSPHY, local MAC/LAC execution, forward/reverse channel processing, paging transmission, RX measurements, radio diagnostics
BSCradio access state, paging policy, traffic assignment, existing-traffic-channel service negotiation, Abis peer state, A1/A2p/A9 edge behavior, power-control policy
MSCvoice/circuit call policy, A1 state, per-circuit A2p RTP bearer setup, MT/MO call orchestration, preemption, call list management, voice gateway control and media routing, SMS coordination via A1 ADDS
PCFpacket-data radio-edge session state, packet setup timers, A8/A9-facing control behind the PcfClient boundary; currently reaches packet service gRPC
PDSNpacket session anchor, PPP/IPCP, mobile IP allocation, TUN/FOU/FOU-TCP transport, A10/A11-facing state, packet gRPC service
HLRsubscriber records, registration bindings, mobiles_seen ledger, and HLR gRPC service backed by PostgreSQL
SMSCSMS submissions, delivery attempts, welcome SMS requests, and SMSC gRPC service backed by PostgreSQL
Voice GatewayMSC-controlled SIP/RTP interop and EVRC↔G.711 media conversion

Current Deployment

cdma-nib loads per-node configs from config/ and starts the integrated runtime. The checked-in configs wire the BTS and BSC together over localhost Abis TCP/UDP addresses:

cargo run --release -p cdma-nib -- --config-dir config

For split BTS/BSC operation, point bts.json: abis.bind_addr, bsc.json: abis.remote_addr, and the paired bearer addresses at the appropriate hosts.

Unlike BTS/BSC Abis and BSC/MSC A1/A2p, the packet-core split is not a standards network boundary yet. pcf.json points the BSC-side PCF client at the packet gRPC endpoint, while pdsn.json configures the packet gRPC listener and packet transport settings. Real A8/A9/A10/A11 transports remain planned work.

Management Plane

EndpointDefaultPurpose
Management facade127.0.0.1:17016facade plus node-scoped BTS/BSC/PCF/PDSN APIs and HLR/SMSC/packet compatibility routes
MSC management127.0.0.1:17017MSC-owned call actions, call listing, and SMS submission
HLR service127.0.0.1:17019subscriber and registration storage API
SMSC service127.0.0.1:17020SMS submission and delivery storage API
Packet service127.0.0.1:17021packet session service used by PCF/PDSN-facing runtime paths
Voice gateway127.0.0.1:17015MSC-controlled SIP gateway control/media service
1xbts-webhttp://localhost:3000Next.js UI, API routes, SSE streams

The management and service APIs are being split by node. Today the primary facade still serves compatibility APIs for the web UI, while MSC, HLR, SMSC, and packet runtime paths use local gRPC boundaries.