Local breakout allows mobile stations to receive data services using their LabKit/SatSite internet connection. In this setup YateBTS is using GPRS protocol to transmit IP packets to the phones and uses local GGSN and SGSN components.
- Gateway GPRS Support Node (GGSN) manages the IP addresses to GPRS sessions
- Serving GPRS Support Node (SGSN) manages the sessions between the mobile station and the network
More details about how devices support GRPS, upload and download speed can be found on GSM Concepts page.
Yate settings
Yate will create a tunnel named sgsntun in ybts.conf file, if there is a [ggsn] section, containing the following
[ggsn]
Firewall.Enable=1
IP.MaxPacketSize=1520
IP.ReuseTimeout=180
IP.TossDuplicatePackets=off
Logfile.Name=ggsn.log
MS.IP.Base=192.168.99.1
MS.IP.MaxCount=254
TunName=sgsntun
MS.IP.Base and MS.IP.MaxCount settings define a range of IP addresses (192.168.99.1 – 192.168.99.254) from which GGSN will assign IP addresses on each of your mobile station.
Using NAT, iptables will forward the data coming from your phones to the Internet.
Operating system settings
Please be aware that all commands must be executed logged as root.
Allow IP Forwarding
By default, IP Forwarding is disabled on any modern Linux distro (file /proc/sys/net/ipv4/ip_forward contains a 0)
To tell your kernel that IP forwarding is allowed on your system, change the 0 (false) to 1 (true) by typing:
echo 1 > /proc/sys/net/ipv4/ip_forward
- To preserve these changes after reboot edit the line that says net.ipv4.ip_forward = 0 to net.ipv4.ip_forward = 1 from /etc/sysctl.conf file.
- To see if forwarding is enabled or not, you can query the sysctl kernel value net.ipv4.ip_forward
> sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Add iptables rules
- Install iptables
urpmi iptables
- Start iptables service
systemctl start iptables.service
- Tell iptables to forward packets from your internal network
iptables -A POSTROUTING -t nat -s 192.168.99.0/24 ! -d 192.168.99.0/24 -j MASQUERADE
- Preserve iptables rules after reboot
iptables-save > /etc/sysconfig/iptables
Phone settings
Add new Access Point Name named internet with APN as internet. Depending on your phone you can find in different places Access Point Names settings
Examples:
- Settings -> Mobile Networks -> Access Point Names -> Add new APN
- Settings -> Mobile Data -> Mobile Data Options -> Mobile Data Network
- Settings -> More Networks -> Mobile Networks -> Access Point Names
- Settings -> Connections -> More Networks -> Mobile Networks -> Access Point Names
Troubleshooting
If the mobile station, although connected to the radio network, still does not have internet access, it’s a good idea to make another test starting from scratch. Follow this steps:
- Stop ybts
Log in to Yate rmanager console and stop ybts with ybts stop command.
> telnet 0 5037
Trying 0.0.0.0…
Connected to 0.
Escape character is ‘^]’.
YateSDR (backend YATE 5.5.1-priv1) ready on node ybts-UNCONFIG.
ybts stop
2017-04-13_07:42:15.001726 Stopping transceiver: received STOP command
2017-04-13_07:42:15.001802 State changed PowerOn -> Idle [0x7ff250017a20]
2017-04-13_07:42:15.001966 TRXManager.cpp:216:clockHandler: TRX clock ‘EXITING’ indication
2017-04-13_07:42:15.007059 ARFCN[0]: Radio power off. RX: bursts=100838020 passed=6161303 (6.11%) dropped=94676717 (93.89%) (LowSNR=84083033 LowPeakMin=8997924 LowPower=1595760) ellapsed=59498sec avg=1694.81 bursts/sec [0x7ff250023f40]
2017-04-13_07:42:15.008721 <bladerf/3:NOTE> Powered OFF the radio [0x7ff250013490]
- Delete sgsntun network interface
As described in #GGSN_Settings, a tunnel named sgsntun was created. Deleting it will force ybts to recreate it.
To delete it you must exit Yate rmanager console and type the following command as root from your terminal.
ip link delete sgsntun
- Start ybts
Log in to Yate rmanager and start ybts
telnet 0 5037
Trying 0.0.0.0…
Connected to 0.
Escape character is ‘^]’.
YateSDR (backend YATE 5.5.1-priv1) ready on node ybts-UNCONFIG.
ybts start
2017-04-13_07:42:27.657491 State changed Idle -> Starting restart counter 1/10
2017-04-13_07:42:27.658328 State changed Starting -> WaitHandshake
MBTS connected to YBTS
Yate-BTS MBTS Component
Starting MBTS…
2017-04-13_07:42:27.664090 State changed WaitHandshake -> Running
2017-04-13_07:42:27.947419 State changed Invalid -> Idle [0x7ff250032840]
2017-04-13_07:42:27.947550 State changed Idle -> PowerOff [0x7ff250032840]
2017-04-13_07:42:27.964752 <bladerf/4:NOTE> Powered ON the radio [0x7ff2500193d0]
2017-04-13_07:42:27.967991 State changed PowerOff -> PowerOn [0x7ff250032840]
2017-04-13_07:42:28.725630 State changed Running -> RadioUp
2017-04-13_07:42:33.003176 BTS is running