As your network matures, you may want to connect more than one concurrent OpenBTS system. This is easy to do. Basically, each OpenBTS node runs on a separate machine, then connected to centralized sipauthserve, PBX, and smqueue processes (which may or may not be running on the same machine.) Here, we document the configuration required for such a setup.
Secondly, you'll need to move each configuration file (e.g., OpenBTS.db) to the machine that will be running the associated process. Remember that there will now be multiple, different OpenBTS.db files, one for each BTS location. Also remember that ALL processes (except the PBX) expect their configurations in /etc/OpenBTS.
You'll need to change the default configuration databases to point at the new machines running each server. In this example:
- PBX (Asterisk)- 192.168.1.0:5060
- smqueue - 192.168.1.0:5063
- sipauthserve - 192.168.1.0: 5064
- OpenBTS (1st BTS) - 192.168.1.1:5062
- OpenBTS (2nd BTS) -192.168.1.2:5062
- Asterisk: Fortunately, Asterisk does not need to be reconfigured unless it is accessing the subscriber registry over the network.
- FreeSWITCH: The FreeSWITCH install needs to know the location of smqueue in order to forward SIP MESSAGEs. To do this, change (FS ROOT)/conf/vars.xml to the network location of smqueue:
<X-PRE-PROCESS cmd="set" data="smqueue_port=5063"/> <X-PRE-PROCESS cmd="set" data="smqueue_host=192.168.1.0"/>
/etc/OpenBTS/smqueue.db has numerous variables that need to be set to the new network locations of each service
- Asterisk.address -> 192.168.1.0 The network location of the PBX
- SIP.myIP -> 192.168.1.0
- SIP.myIP2 -> 192.168.1.0 The external-facing IP address of smqueue
- SIP.Proxy.Registration -> 192.168.1.0:5064 The location of sipauthserve
Fortunately, sipauthserve is a passive engine that does not need to know where any other services are located.
Running multiple BTS's concurrently is a difficult task. Each BTS must not only be configured to know the location of the network services, but also configured to not interfere with their nearby BTS neighbors.
Every OpenBTS install must be configured (at /etc/OpenBTS/OpenBTS.db) to the smqueue, sipauthserve, and PBX services. This can be done either with the SQLite3 ODBC client or via the OpenBTS command-line interface.
- SIP.Local.IP -> 192.168.1.1 (or .2) The external IP of the OpenBTS install.
- SIP.Proxy.Registration -> 192.168.1.0:5064 The IP/Port of sipauthserve
- SIP.Proxy.SMS -> 192.168.1.0:5063 The IP/Port of smqueue (or FreeSWITCH)
- SIP.Proxy.Speech -> 192.168.1.0:5060 The IP/Port of the PBX
There are two types of BTS configurations needed to put together a network. First, a number of variables must be THE SAME for all BTSs on a network:
- GSM.Identity.MCC The mobile country code
- GSM.Identity.MNC The mobile network code
- GSM.Identity.BSIC.NCC The network color code, must be unique from all other networks around you.
- GSM.CellSelection.NCCsPermitted The NCCs permitted by your BTS. Should include the above.
The following have to be DIFFERENT for each BTS.
- GSM.CellSelection.BSIC.BCC The BTS color code. Each BTS should have a different color code.
- GSM.Identity.LAC The Location area code. Have to be unique for each BTS
- GSM.Identity.CID Cell ID, again unique per BTS.
It's pretty easy to get these wrong. For network configuration, use a tool like wireshark to trace the traffic.