构建安装及运行 OpenBTS

该文档描述使用单无线电平台将一个单 OpenBTS 安装在一个单一计算机上的过程。这也是 OpenBTS 的缺省配置,新手的合适着手处。对于多基站(multi-BTS)请参阅 多基站配置multiBTS)部分 。

如果仅是涉及 OpenBTS 升级,请参阅 升级指导UpdateOpenBTS)。

一个完整的 OpenBTS P2.8 安装包含下面步骤:

  • OpenBTS 本身 。它是基于 TDMA 的 L1 到 L3 及 L3/L4 界限部分构架上构建的 GSM。其 SIP 接口一般使用端口 5062。其位置处于 openbts/trunk 。
  • 收发部分(Transceiver)。它是一个软件构建的无线调制解调器,基于 TDMA 的 L1 的底层构架构建而成。OpenBTS 自动启动的收发部分。其位置处于 openbts/trunk/Transceiver* 。
  • SIP PBX 或 软交换(Asterisk、FeeeSWITCH 等)。该部件功用是连接语音呼叫。其 SIP 接口通常使用端口 5060。该部分通常通常并不同 OpenBTS 打包在一起。
  • Sipauthserver 。这是 SIP 注册及鉴权服务器。它被用来进行处理来自 OpenBTS 的区域更新请求并基于此对订购用户注册数据库进行更新。它通常运行在端口 5064 上。
    其位置处于 subscriberRegistry/trunk
  • Smqueue 。这是一款存储并转发文本信息的服务器。它需要单独被启动。其 SIP 接口通常处于端口 5063 上。构建系统时没有明确需要支持文本信息功能时便不会被安装。
    其位置处于 smqueue/trunk 。
  • Rrlpserver。这是一款 RRLP 援助服务器,它以 CGI 脚本形式运行于 WEB 服务器上。它在构建系统没有明确需要支持 RRLP 时便不会被安装。其位置处于 RRLP/trunk 。

硬件

OpenBTS 可以在种类繁多的硬件平台上运行。这也是第一重要性便是明确将要使用的硬件平台。(有关这方面的最新进展情况,请咨询 微嵌软件)。通常它包含下面三大类型的硬件平台:

  • Range 设备(诸如:RAD1)
  • 同 Ettus Research 相兼的 USRP1 并对外部时钟进行修改及收发子板(版本 V3 之前的 WBX,RFX 等)
  • 兼用 Ettus Research UHD 的设备(诸如:USRP2, N200 Series, B100 等)

所需库及工具 - Required Libraries/Utilities

为使 OpenBTS 的众多部分得以能够被成功地编辑,下面是必备的软件包:

autoconf
libtool
libosip2
libortp
libusb-1.0
g++
sqlite3
libsqlite3-dev (sipauthserve only)
libboost-all-dev
libreadline6-dev

使用下面的命令便可将上面这些(在 Debian 关联发行包上)安装成功:

sudo apt-get install autoconf libtool libosip2-dev libortp-dev libusb-1.0-0-dev g++ sqlite3 libsqlite3-dev erlang

系统原理图 - System Diagram

在下图上,黑色线条表示网络联系(SIP)。红色线条是文件系统的联系(sqlite3 数据库查询)。蓝色是 ODBC(网络/本地数据库 DB 查询)



构建及安装 OpenBTS 及 收发部分

构建 OpenBTS

OpenBTS 理应,理论上讲,能够被构建并运行在任何 Unix 类的操作系统上。但现状是大多数的开发是基于 Ubuntu 10 上,这也是它的最佳支持系统。

对 Range 设备而言,其构建相对十分的简单。原因是它没有外部关联性。仅仅运行下面命令便可:

autoreconf -i
./configure
make

如若“自立更生”地使用同 Ettus 兼用的 USRP 硬件,首先必须安装相应的软件。所需的驱动同具体的 USRP 相关联。对 USRP1 而言,GNURadio 便充当该驱动。如若是早期的基于 USRP 的 Range 开发平台,GNU Radio 已经包含在内。如果是 基于 RAD1 的 Range 开发平台,GNU Radio 便不是必须软件包。

想了解更多的 GNU Radio 的安装咨询,请参阅 Ubuntu 上构建 GNU Radio。 请确保其版本是在 3.3.0 之后 3.5.0 (该版本便开始不支持 USRP1)之前。这些安装稳妥之后,便可运行下面的 'auto-foo'命令。

标准双子板配置(A 端发射 Tx, B 端接收 Rx):

autoreconf -i
./configure --with-usrp1
make

单板配置(发射 Tx 及 接收 Rx 皆处于 A 端口). B 端口没有使用。

autoreconf -i
./configure --with-usrp1 --with-singledb
make

对于兼用 Ettus 的其它硬件(USRP2、B100、N 及 E 系列)便需使用 UHD (universal hardware device) 库。这些库的下载请参阅 UHD 中文维客 安装请参阅 UHD - 构建指导

注意:OpenBTS 下面的配置选项取决于设备类型。

USRP2 及 N200 系列需要基于宿主机器重复采样的支持(host-based resampling support):

autoreconf -i
./configure --with-uhd --with-resamp
make

B100 及 E100 系列:

autoreconf -i
./configure --with-uhd
make

还有就 UHD 设备构建的时间选项包括支持外部 10 MHz 的参考时钟。以此为例,使用 N210 前面板参考时钟输入的情况,其配置选项如下:

autoreconf -i
./configure --with-uhd --with-resamp --with-extref
make

构建问题解决后,便需构建及链接其硬件相关联的收发单元。对于 USRP/UHD 类的安装:

#(from OpenBTS root)
cd Transceiver52M
make
cd ../apps
ln -s ../Transceiver52M/transceiver .

#and for the USRP1, install std_inband.rbf
sudo mkdir -p /usr/local/share/usrp/rev4/
sudo cp ../Transceiver52M/std_inband.rbf /usr/local/share/usrp/rev4/

如若使用 Range Network 基站单元需要下面这些链接

(from OpenBTS root)
cd TransceiverRAD1
make
ln -s transceiver ../apps/transceiver
ln -s ezusb.ihx ../apps/ezusb.ihx
ln -s fpga.rbf ../apps/fpga.rbf

GNU Radio 不是必须的。

配置 OpenBTS

就构建 OpenBTS 而言,目的是使其能够被配置并被运行。为达到此目的,必须构建下面两个关键文件

1) /etc/OpenBTS/OpenBTS.db

OpenBTS.db 是一个用来存储所有的 OpenBTS 配置的数据库。它需安装在 /etc/OpenBTS,它极有可能并不存在。这样的话,必须如下来构架它:

(from the OpenBTS directory)
sudo mkdir /etc/OpenBTS
sudo sqlite3 -init ./apps/OpenBTS.example.sql /etc/OpenBTS/OpenBTS.db ".quit"

这会产生多项配置选项。在页面 openBTSConfig 会看到这些配置。这些选项中的大多数在配置环境高于简单的台式环境境况下略加调整便可。当然也有下面这些关联基本操作(需要针对性配置):

  • GSM.Radio.Band - 调整该参数使得 GSM 频段与平台硬件相对应。
  • GSM.Radio.C0 - 这是其对应 ARFCN. 调整其与平台频段对应。
  • Control.LUR.OpenRegistration - 通过正则表达式匹配测试手机的 IMSI。其功用是让 OpenBTS 在注册服务还没有工作之前不要拒绝被测试的手机。这是对系统诊断及初始化很有用的工具。

下面这些参数可以基于 OpenBTSCLI 通过配置命令来修改,诸如下面的示例,

config GSM.Radio.Band 900
config GSM.Radio.C0 1
config Control.LUR.OpenRegistration *

上面便配置 BTS 为 GSM900、ARFCN 1。注意:该配置使得手机没有注册限制。这样如果系统配置天线的情况下,附近的任何手机便可使用该网络,谨慎在居民点使用。:-)

编辑数据库的有效工具诸如 sqliteman。使用下面命令便可将其安装并运行成功:

sudo apt-get install sqliteman
sudo sqliteman
2) /etc/XXXX

构建安装用户注册表和 SIP 鉴权 - Subscriber Registry and Sipauthserve

OpenBTS 依赖 SIP 鉴权服务器(Sipauthserver)的安装。它在 OpenBTS 能够被运行之前必须被构建并安装成功。

用户注册表 - Subscriber Registry

在 SVN 数据仓库中有一个 sql 文件可用来构建用户注册表。它位于:public/subscriberRegistry/trunk/configFiles/subscriberRegistryInit.sql 

运行下面命令便可构建用户注册表:

(from svn root)
cd subscriberRegistry/trunk/configFiles/
sudo mkdir -p /var/lib/asterisk/sqlite3dir
sudo sqlite3 -init subscriberRegistryInit.sql /var/lib/asterisk/sqlite3dir/sqlite3.db ".quit"

SIP 鉴权 - Sipauthserve

Sipauthserve 一款被美妙的命名的 Unix 幽灵程序用来提供 SIP 鉴权服务。OpenBTS 的 SIP.Proxy.Registration 的配置参数应当指向其宿主名称及端口。构建 Sipauthserve 理应在构建 OpenBTS 成功之后。这也是 makefile 可被攻击的薄弱点,希望在将来能被修复。

如下便可构建 Sipauthserve:

(from svn root)
cd subscriberRegistry/trunk
make

这样便可得到一个可运行的 SIP 鉴权服务(sipauthserve)文件。 

对于 OpenBTS 而言,对 SIP 鉴权服务(sipauthserve)的配置是必须的。这样假定 /etc/OpenBTS/ 已经存在(是能够进行配置的前提)。

(from subscriberRegistry root)
sudo sqlite3 -init sipauthserve.example.sql /etc/OpenBTS/sipauthserve.db ".quit"

运行 OpenBTS

SIP 鉴权服务(sipauthserve)一旦安装成功,便可运行 OpenBTS。为此需打开三个独立的终端窗口(或模式对话框)并分别键入下面三组命令:

(from subscriberRegistry root)
sudo ./sipauthserve

(from the OpenBTS directory) cd apps sudo ./OpenBTS

(from the OpenBTS directory) cd apps sudo ./OpenBTSCLI

在 OpenBTSCLI 终端窗口的启动画面上便有对该项目的描述,然后进入命令行(a command-line interface)状态:

OpenBTS>

如若遭遇故障,请参阅通用故障(common errors)。

构建安装 Smqueue

Smqueue 是 OpenBTS 打包的信息存储转发服务。它的构建和运行同构建 OpenBTS 的过程十分类似。

构建 Smqueue

在 smqueue/trunk 目录下,运行下面命令即可:

autoreconf -i
./configure
make

到此在 smqueue/trunk/smqueue 目录下理应有一个可运行的 smqueue 文件。

配置 Smqueue

同 OpenBTS 相类似,Smqueue 也是密切依赖配置文件,它位于 /etc/OpenBTS/smqueue.db 。如果 Smqueue 没有被构建,该 db 文件便是一个空白,没有功用的文件。空白文件毫无用处。相应地,如果配置 OpenBTS 相似,运行如下命令:

(from the smqueue directory)
sudo sqlite3 -init smqueue/smqueue.example.sql /etc/OpenBTS/smqueue.db ".quit"

这便会对 /etc/OpenBTS/smqueue.db 以缺省数值进行初始赋值。无需更改这些配置参数便会发生功用,请参阅 清单详情

运行 Smqueue

下面命令便可运行 Smqueue:

(from the smqueue directory)
cd smqueue
sudo ./smqueue

Smqueue 不提供命令行界面,相应地只是读取配置参数并处理信息。在此提请注意,任何对配置参数的修改是必须在对 Smqueue 重启后才会启作用的。

选择并配置 PBX

有两款主要的 PBX 软交换可供选择:它们便是 AsteriskFreeSwitch。它们之间的区别及优缺点不是本文探讨的范围。在此值得强调的是这两款被 OpenBTS 社区都广泛使用并被有效的支持。

Asterisk 是 OpenBTS PBX 的标准版并被打包在商业发行版 C 版中。它具有简易可配置型、丰富的文档及最简洁的选项。有关安装及配置 Asterisk 同 OpenBTS 的协同工作请参阅 Asterisk 配置指导

FreeSwitch 是当下最流行的 Asterisk 的竞争者。它同 OpenBTS 的协作方面的支持主要来自 Berkeley 的一个研究小组。 它提供了一个可编程的语音及文本路由功能,以及一个更灵活的针对语音及短信(SMS)的编程环境。它适于更多预算、更复杂的配置环境及更小得到支持的场合。有关安装及配置 FreeSwitch 同 OpenBTS 的协同工作请参阅 FreeSwitch 配置指导。

Yate 也是一款正在发展的 SIP 软交换。其有关 Yate 同 OpenBTS 的协同工作请参阅 Yate 配置指导

RRLP Server

RRLP 有点不尽人意。大概源于普遍观点认为,RRLP 也是可有可无的服务。尽管如此,如若还是执着于探知用户的位置,不妨到 RRLP 浏览一下。

构建安装 CGIs

全线启动

使用启动脚本startup scripts)之一或者逐一在单个终端窗口运行下面一个运行命令:

smqueue/trunk/smqueue/smqueue
subscriberRegistry/trunk/sipauthserve
openbts/trunk/apps/OpenBTS
openbts/trunk/apps/OpenBTSCLI

开启一个带有 GSM SIM 卡的手机。最好的选择是该 SIM 非当地运营商归属;这样一来,该机便不会出现立刻被当地运营商的塔站所强迫注册。对大多数情况而言,对于多数的手机,便会出现让用户选择运营商的机会。对于该基础安装的情况而言,其网络宣称为:001 01。 选择连接该网络。该站点便对连接请求回复,并允许其连接。如果该过程被拒绝,请确认 OpenBTS.db 配置中的 Control.LUR.OpenRegistration 参数。

该上两步通过后,便可测试该连接。拨打 600 (FreeSwitch 拨打 9196)进行自动回音测试。如若测试成功,哪,祝贺您!

OpenBTS 升级

请参阅 UpdateOpenBTS.


OpenBTS 是 Range Networks, Inc. 的注册商标。







注:Building, Installing and Running OpenBTS(原文出处,翻译整理仅供参考!)