eMBMS Application note¶
enhanced Multimedia Broadcast Multicast Services (eMBMS) is the broadcast mode of LTE. Using eMBMS, an eNodeB can efficiently broadcast the same data to all users attached to the cell. srsLTE supports eMBMS in the end-to-end system including srsUE, srsENB and srsEPC. In addition to these, a new application is introduced - srsMBMS. srsMBMS is the SRS MBMS gateway, an additional network component which receives multicast data on a TUN virtual network interface and provides it to the eMBMS bearer in the eNodeB.
To run an end-to-end srsLTE system with eMBMS, some additional configuration of the srsENB and srsUE applications are required. In the sample configurations provided, it is assumed that srsmbms, srsepc and srsenb run on the same physical machine.
At the eNodeB, additional configuration is required in order to support eMBMS transmission. First, instead of using the default
sib.conf.example, the alternative
sib.conf.mbsfn.example should be used. This version of the sib configuration adds eMBMS
parameters to SIB2 and includes SIB 13 which is specific to eMBMS. These SIB modifications define the following key eMBMS network
- eMBMS Subframe Allocation
- MCCH Scheduling Period
- MCCH Modulation Order
- Non-eMBMS Subframe Region Length
- eMBMS Area Id
- MCCH Subframe Allocation
- MCCH Repetition Period
In addition to using the eMBMS SIB configuration file, a number of further configurations must be changed in the
[enb_files] sib_config = sib.conf.mbsfn [embms] enable = true [scheduler] min_nof_ctrl_symbols = 2 max_nof_ctrl_symbols = 2 [expert] nof_phy_threads = 2
Once these setting adjustments have been made, the eNodeB should be ready to run in eMBMS mode.
For the UE, the presence of an eMBMS transmission will be automatically detected from the SIBs and the MCCH present in the downlink signal. To receive an active eMBMS service, the following parameter must be set in
[rrc] mbms_service_id = 0
Note this service id must match the service id in use by the network.
In addition, we recommend the following settings for best performance with eMBMS:
[phy] interpolate_subframe_enabled = true snr_estim_alg = empty nof_phy_threads = 2
Once these configurations have been made, your UE should be ready to run eMBMS.
First, run srsMBMS (the MBMS gateway), srsEPC and srsENB on the same machine:
sudo ./srsmbms ~/.config/srslte/mbms.conf
sudo ./srsepc ~/.config/srslte/epc.conf
sudo ./srsenb ~/.config/srslte/enb.conf
The MBMS gateway will create a TUN interface to which all traffic intended for multicast should be written. It will then forward this traffic to the eNodeB via a seperate GTPU tunnel that is dedicated to eMBMS traffic.
To test eMBMS with srsMBMS, srsEPC and srsENB, we can use Iperf. At the MBMS gateway, create a route and start downlink traffic:
sudo route add -net 126.96.36.199 netmask 255.255.255.0 dev sgi_mb
iperf -u -c 188.8.131.52 -b 10M -T 64 -t 60
Next, we can run srsUE on a separate machine to receive the eMBMS data:
sudo ./srsue ~/.config/srslte/ue.conf
Upon running srsUE with an eMBMS enabled eNodeB you should see the following output at the terminal of the UE:Searching cell in DL EARFCN=3400, f_dl=2685.0 MHz, f_ul=2565.0 MHz Found Cell: Mode=FDD, PCI=1, PRB=50, Ports=1, CFO=-0.0 KHz Found PLMN: Id=00101, TAC=7 Random Access Transmission: seq=20, ra-rnti=0x2 Random Access Complete. c-rnti=0x46, ta=1 RRC Connected MBMS service started. Service id:0, port: 4321 Network attach successful. IP: 172.16.0.2 Software Radio Systems LTE (srsLTE)
the MBMS service started. Service id:0, port: 4321 indicates the eMBMS service has successfully started.
To receive the multicast iperf data, add a route to the UE and start an iperf server:
sudo route add -net 184.108.40.206 netmask 255.255.255.0 dev tun_srsue
iperf -s -u -B 220.127.116.11 -i 1