Javascript Roaming

To use YateBTS you can either use the Roaming mode or the NIB mode. Both modes are represented by a Javascript application, namely roaming.js and nib.js.

When using Roaming mode, the registrations, SMSs and calls from GSM subscribers are forwarded to an IMS server(Ex: our OpenVoLTE solution) or to a SIP server.

Note: You can only use a single mode at a time. You cannot have both NIB and Roaming activated.

ybts.conf
Configure javascript.conf to use the roaming script.

[ybts] mode=roaming

'''Make sure you don't have nib.js loaded from javascript.conf before enabling roaming.js. The two modes can't be used in the same time.'''

javascript.conf
Disable welcome.js routing script that is used in NIB mode.

[general] ;routing=welcome.js

ysipchan.conf
Configure the SIP module by editing ysipchan.conf

[general] lazy100=yes transfer=no privacy=yes generate=yes rtp_start=yes auth_foreign=yes autochangeparty=yes update_target=yes body_encoding=hex async_generic=yes sip_req_trans_count=5 useragent=YateBTS/4.0.1 [codecs] default=disable gsm=enable [message] enable=yes auth_required=false [options] enable=no [methods] options=no info=no

Configuring the Roaming Script
Starting with svn rev. 387 the configuration for using YateBTS in Roaming mode were moved to [roaming] section in ybts.conf.

[roaming] ; This section configures parameters used by roaming.js when connecting ; YateBTS to a core network. ; expires: int: Expire time for registrations ;expires=3600 ; reg_sip: string: ip:port where SIP requests are sent ; It is REQUIRED to set reg_sip or nodes_sip ; Example: reg_sip=192.168.1.245:5058 ;reg_sip= ; nodes_sip: json object: node => ip:port of each openvolte server ; node is computed based on the tmsi received from the handset. ; This ensures that registrations are always sent to the same openvolte server ; It is REQUIRED to set reg_sip or nodes_sip ; Example: nodes_sip={"123":"192.168.1.245:5058","101":"192.168.1.176:5059"} ;nodes_sip= ; nnsf_bits: int: Number of bits to use for ; Non Access Stratum (NAS) Node Selection Function (NNSF) ;nnsf_bits=8 ; my_sip: string: ip:port for local SIP listener ; Unless otherwise configured this is the IP of the machine ; where yatebts is installed. ; Example: my_sip=198.168.1.168 ;my_sip= ; gstn_location: string: unique number that identies the cell in the national database ; associated to each base station by the network operator. ; REQUIRED! ;gstn_location= Before svn rev. 387 this settings were read from roamingconf.js.

See the roamingconf.js from /usr/local/etc/yate or /etc/yate depending on how your YateBTS was installed.

The minimum configuration is my_sip – your local ip address – and reg_sip – the ip:port where the calls/SMSs/registration requests will be sent. // Expire time for registrations expires = 3600; // ip:port where SIP requests are sent reg_sip = "sip.core.yatebts.com:5058"; // openvolte servers // node => ip:port of each server // node is computed based on the tmsi received from the handset. // This ensures that registrations are always sent to the same openvolte server //nodes_sip = { //     "123":"192.168.1.2:5000", //      "170":"192.168.1.3:5001" //}; //nnsf_bits = 8; // ip:port for local SIP listener // Unless otherwise configured this is the ip of the machine where yatebts is installed // my_sip = "192.168.1.168"; my_sip = "192.168.168.168"; gstn_location = "40740123456";

Handover Configuration
Handover is enabled by default. To configure it you need to set the neighbours for each base stations. You can do this in the handover section of ybts.conf.

[handover] ; This section configures handover parameters used by roaming.js ; enable: boolean: Globally enable handover functions ; Default is enabled ;enable=yes ; neighbors: string: Comma separated list of neighbor SIP addresses ; Each neighbor will be periodically queried for target handover availability ; Example: neighbors=10.0.0.1, 10.0.0.2, 10.0.0.3:5065 ; Default is empty ;neighbors= ; reason: string: Text to place in the Reason SIP header ; An empty or boolean false value disables the Reason header ; Default: GSM;text="Handover" ;reason=GSM;text="Handover"

Roaming Mode Commands
Use Yate's telnet interface to interact with the roaming.js and handover.js scripts. Yate's default rmanager port is 5038 (port on which it accepts telnet connections).

From the console. type: telnet 127.0.0.1 5038

You can:

Reload configurations
reload roaming

List neighbors
roaming neighbors

Example output

Band ARFCN BSIC Cell ID       Address               Status - -- - ---                                192.168.168.208       Offline 850  130   2   0019003e9000b --- Local YateBTS --- Online