System Overview
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
| Interface | Nodes | Transport | Purpose |
|---|---|---|---|
| Abis signaling | BTS ↔ BSC | TCP 5604 with F634 framing | BTS/BSC control messages |
| Abis bearer | BTS ↔ BSC | UDP — BTS-side 17014, BSC-side 17022 | traffic frames and timing metadata |
| A1 | BSC ↔ MSC | TCP 17013 in the current runtime | IOS call-control seam |
| A2p | BSC ↔ MSC | per-circuit RTP/UDP | EVRC voice bearer with circuit-specific RTP sessions |
| A8/A9 | BSC ↔ PCF | GRE/IP + UDP/IP target | packet-data radio edge |
| A10/A11 | PCF ↔ PDSN | GRE/IP + UDP/IP target | packet-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
| Node | Owns |
|---|---|
| BTS | PHY, local MAC/LAC execution, forward/reverse channel processing, paging transmission, RX measurements, radio diagnostics |
| BSC | radio access state, paging policy, traffic assignment, existing-traffic-channel service negotiation, Abis peer state, A1/A2p/A9 edge behavior, power-control policy |
| MSC | voice/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 |
| PCF | packet-data radio-edge session state, packet setup timers, A8/A9-facing control behind the PcfClient boundary; currently reaches packet service gRPC |
| PDSN | packet session anchor, PPP/IPCP, mobile IP allocation, TUN/FOU/FOU-TCP transport, A10/A11-facing state, packet gRPC service |
| HLR | subscriber records, registration bindings, mobiles_seen ledger, and HLR gRPC service backed by PostgreSQL |
| SMSC | SMS submissions, delivery attempts, welcome SMS requests, and SMSC gRPC service backed by PostgreSQL |
| Voice Gateway | MSC-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
| Endpoint | Default | Purpose |
|---|---|---|
| Management facade | 127.0.0.1:17016 | facade plus node-scoped BTS/BSC/PCF/PDSN APIs and HLR/SMSC/packet compatibility routes |
| MSC management | 127.0.0.1:17017 | MSC-owned call actions, call listing, and SMS submission |
| HLR service | 127.0.0.1:17019 | subscriber and registration storage API |
| SMSC service | 127.0.0.1:17020 | SMS submission and delivery storage API |
| Packet service | 127.0.0.1:17021 | packet session service used by PCF/PDSN-facing runtime paths |
| Voice gateway | 127.0.0.1:17015 | MSC-controlled SIP gateway control/media service |
| 1xbts-web | http://localhost:3000 | Next.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.