Multiple Base Stations
One MSC can serve several base stations. A base station is a BSC together with the cells it controls — the element the MSC reaches over A1. List each base station the MSC should serve, and the MSC enrolls it, connects A1, and routes calls, SMS, and management to the right one.
This is the level above Multiple Cells: a base station serves many cells, and an MSC serves many base stations.
Add a base station
Each base station is one entry in the MSC’s base_stations list in config/msc.json. Give each the address of that base station’s management endpoint (its BSC’s management gRPC):
{ "base_stations": [ { "id": "bts-1", "management_endpoint": "http://127.0.0.1:17016" }, { "id": "bts-2", "management_endpoint": "http://127.0.0.1:27016" } ]}Run one BSC for each entry, each with its own config/bsc.json. In that BSC config, set a1_bind_addr to the address the BSC accepts the MSC on, and list its cells under bts_peers (see Multiple Cells). On one host, give each base station its own ports. Across hosts, point each management_endpoint at the right machine.
The optional id is a stable name the web UI and management API address the base station by. Without it, the base station is addressed by its management_endpoint. Ids and endpoints must be unique.
How the MSC connects
The MSC dials each base station’s management endpoint to learn its identity, its A1 address, and the cells it serves, then connects A1 to it. Identity travels only over the management connection — A1 itself stays standard IOS. A base station that is not up yet is retried in the background, so start order does not matter and a base station can join at any time.
The MSC now reaches out to base stations, not the reverse. In each
config/bsc.json, seta1_bind_addr(the address the BSC listens for the MSC on) in place of the oldmsc_a1_addr. Inconfig/msc.json, dropa1_listen_addranda1_peers— the MSC learns each base station’s A1 address when it enrolls.
Packet data across base stations
One PDSN serves every base station. Each base station can run its own PCF, and the PDSN accepts A10/A11 from all of them at once, so packet data from every cell ends up on the same PPP/IP gateway, address pool, and DNS. Point each PCF’s a11.peer_addr and a10_bearer.udp_peer_addr at the PDSN, use the same A11 security association on every PCF, and give each PCF its own bind addresses. The PDSN learns each PCF’s bearer address from its A11 registration, so a10_bearer.udp_peer_addr in config/pdsn.json can be left out.
Watch them
The Base Stations page in the web UI lists every base station the MSC is configured with. A base station that has not enrolled, or one that has gone away, shows as offline rather than disappearing. Open a base station to see its cells. Open a cell for its radio metrics, IQ capture, and configuration.