Table of Contents
- Author
- Description
- FeMBMS usage in OAI
- 1. Working FeMBMS configuration files
- 2. Build Run and Test
- 3. Use precompiled Docker images
- eNB/UE/MCE centos.7.6.1810 with UHD v1.15.0
- eNB/UE/MCE ubuntu.16.04 with UHD v1.15.0
- eNB/UE/MCE ubuntu.18.04 with UHD v1.15.0
- Docker: Run eMBMS mixed UC/MC with RFSIM
- Docker: Run FeMBMS eNB dedicated BC with USRP Band7
- Known issues
|
FeMBMS |
Author
Javier Morgade (javier.morgade@ieee.org)
Description
The Further evolved multimedia broadcast multicast service (FeMBMS) is the LTE broadcast only mode standardized in 3GPP Rel.14 where several modifications were made to enhance the system architecture and media formats flexibility for content providers, broadcasters and mobile network operators.
The key 3GPP eMBMS radio interface enhancements were introduced in 3GPP TS 36.211, TS 36.212 and TS 36.213. Rel-14 also contains enhancements of the 3GPP eMBMS system architecture and media formats.
The code is being harmonized in fembms-enb-ue. There is an ongoing merge request into develop !860`
FeMBMS usage in OAI
1. Working FeMBMS configuration files
Look into the CI configuration folder:
eMBMS Mixed BC/UC FDD files for RFSIM: for example eMBMS-BC/UC-FDD-5MHz-RFSIM
FeMBMS dedicated BC files for RFSIM: for example FeMBMS-BC-5MHz-RFSIM
eMBMS Mixed BC/UC FDD files for USRP: for example eMBMS-BC/UC-FDD-5MHz-USRP
FeMBMS dedicated BC files for USRP: take example FeMBMS-BC-5MHz-USRP as reference and ENABLE the mbms_dedicated_serving_cell flag
Adapt the eNBs MCEs and MMEs config objects to your system needs.
eNBs section
////////// MCE parameters:
target_mce_m2_ip_address = ( { ipv4 = "127.0.0.7";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
///M2
enable_enb_m2 = "yes";
mbms_configuration_data_list = (
{
mbsfn_sync_area = 0x0001;
mbms_service_area_list=(
{
mbms_service_area=0x0001;
}
);
}
);
NETWORK_INTERFACES :
{
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR";
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR";
ENB_PORT_FOR_S1U = 2152; # Spec 2152
ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR";
ENB_PORT_FOR_X2C = 36422; # Spec 36422
ENB_IPV4_ADDRESS_FOR_M2C = "127.0.0.2/24";
ENB_PORT_FOR_M2C = 36443; # Spec 36443
};
MCEs section
MCEs = (
{
MCE_ID = 0xe00;
MCE_name = "MCE-LTE";
//M2
enable_mce_m2 = "yes";
//M3
enable_mce_m3 = "yes";
target_mme_m3_ip_address = ( { ipv4 = "127.0.0.18";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{
MCE_INTERFACE_NAME_FOR_M2_ENB = "lo";
MCE_IPV4_ADDRESS_FOR_M2C = "127.0.0.7/24";
MCE_PORT_FOR_M2C = 36443; # Spec 36443
MCE_INTERFACE_NAME_FOR_M3_MME = "lo";
MCE_IPV4_ADDRESS_FOR_M3C = "127.0.0.3/24";
MCE_PORT_FOR_M3C = 36444; # Spec 36444
};
plnm:
{
mcc = 208;
mnc = 93;
mnc_length = 2;
};
mbms_sched_info :
{
mcch_update_time = 10;
mbms_area_config_list = (
{
common_sf_allocation_period = 1; #rf4(0) rf8(1) rf16(2) rf32(3) rf64(4) rf128(5) rf256(6)
mbms_area_id = 0;
pmch_config_list = (
{
allocated_sf_end=512;
data_mcs=15;
mch_scheduling_period = 0; #rf8(0) rf16(1) rf32(2) rf64(3) rf128(4) rf256(5) rf512(6) rf1024(7)
mbms_session_list = (
{
#plnm + service_id ->tmgi
plnm:
{
mcc = 208;
mnc = 93;
mnc_length = 2;
}
service_id=0; #keep this allways as 0 (workaround for TUN if)
lcid=5; #this must be properly defined lcid:6+service:0 -> rab_id:5 //with new RLC set lcid either 4 or 5
}
);
}
);
mbms_sf_config_list = (
{
radioframe_allocation_period=0; #n1(0) n2(1) n4(2) n8(3) n16(4) n32(5)
radioframe_alloocation_offset=0;
num_frame="oneFrame";
subframe_allocation=57; #xx111001
//num_frame="fourFrame";
//subframe_allocation=14548987; #
}
);
}
);
};
mcch_config_per_mbsfn_area = (
{
mbsfn_area = 0;
pdcch_length = 1; #s1(0), s2(1)
repetition_period = 0; #rf32(0), rf64(1), rf128(2), rf256(3)
offset = 0;
modification_period = 0; #rf512(0; rf1024(1)
subframe_allocation_info = 32; #BITSTRING (6bits -> one frame) xx100000
mcs = 0; #n2(0), n7(1), n13(2), n19(3)
}
);
}
);
MMEs section
MMEs = (
{
MME_ID = 0xe00;
MME_name = "MME-MBMS-LTE";
//M3
enable_mme_m3 = "yes";
NETWORK_INTERFACES :
{
MME_INTERFACE_NAME_FOR_M3_MCE = "lo";
MME_IPV4_ADDRESS_FOR_M3C = "127.0.0.18/24";
MME_PORT_FOR_M3C = 36444; # Spec 36444
};
}
);
2. Build Run and Test
Build using the build_oai script as usual. When MBMS is enable (FeMBMS/eMBMS) The lte-softmodem is used to trigger two additional tasks (MCE-MBMS-Task and MME-MBMS-Task). This two tasks handle both M3AP and M2AP application interfaces.
Build
$ git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
$ cd openairinterface5g
$ git checkout develop
$ cd cmake_targets
$ ./build_oai -I -w USRP #Dependencies install (USRP flag can be avoided if only RFSIM will be used)
$ ./build_oai --UE --eNB -w USRP #USRP flag can be avoided if only RFSIM will be used
Run eMBMS mixed UC/MC with RFSIM
Run following targets.
Be aware that two additional TUN interfaces will be created: oaitun_enm1 and oaitun_uem1
Take care you configure the suitable IP addres in flag.
eNB
$ cd cmake_targets
$ sudo RFSIMULATOR=enb ran_build/build/lte-softmodem -O ../ci-scripts/conf_files/lte-fdd-mbms-basic-sim.conf --noS1 --nokrnmod 1 --rfsim
UE
$ cd cmake_targets
$ sudo RFSIMULATOR=<enb-ip> ran_build/build/lte-uesoftmodem -C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 1 --noS1 --rfsim
Run FeMBMS eNB dedicated BC with RFSIM
Run following targets.
Be aware that two additional TUN interfaces will be created: oaitun_enm1 and oaitun_uem1
Take care you configure the suitable IP addres in flag.
eNB
$ cd cmake_targets
$ sudo RFSIMULATOR=enb ran_build/build/lte-softmodem -O ../ci-scripts/conf_files/lte-fdd-mbms-basic-sim.conf --rfsim --noS1 --nokrnmod 1 --eNBs.[0].component_carriers.[0].mbms_dedicated_serving_cell DISABLE --MCEs.[0].mbms_sched_info.mbms_area_config_list.[0].pmch_config_list.[0].allocated_sf_end 1024
UE
$ cd cmake_targets
$ sudo RFSIMULATOR=<enb-ip> ran_build/build/lte-uesoftmodem -C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 1 --noS1 --rfsim
Run eMBMS mixed UC/MC with USRP in Band7
Run following targets.
Be aware that two additional TUN interfaces will be created: oaitun_enm1 and oaitun_uem1
eNB
$ cd cmake_targets
$ sudo ran_build/build/lte-softmodem -O ../ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf --noS1 --nokrnmod 1
--eNBs.[0].component_carriers.[0].eutra_band 7
--eNBs.[0].component_carriers.[0].downlink_frequency 2680000000
--eNBs.[0].component_carriers.[0].uplink_frequency_offset -120000000
--eNBs.[0].component_carriers.[0].N_RB_DL 25
--noS1 --nokrnmod 1
UE
$ cd cmake_targets
$ sudo RFSIMULATOR=<enb-ip> ran_build/build/lte-uesoftmodem -C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 1 --noS1
Run FeMBMS eNB dedicated BC with USRP Band7
Run following targets.
Be aware that two additional TUN interfaces will be created: oaitun_enm1 and oaitun_uem1
eNB
$ cd cmake_targets
$ sudo ran_build/build/lte-softmodem -O ../ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf --noS1 --nokrnmod 1
--eNBs.[0].component_carriers.[0].eutra_band 7
--eNBs.[0].component_carriers.[0].downlink_frequency 2680000000
--eNBs.[0].component_carriers.[0].uplink_frequency_offset -120000000
--eNBs.[0].component_carriers.[0].N_RB_DL 25
--eNBs.[0].component_carriers.[0].mbms_dedicated_serving_cell ENABLE
--MCEs.[0].mbms_sched_info.mbms_area_config_list.[0].pmch_config_list.[0].allocated_sf_end 512
UE
$ cd cmake_targets
$ sudo ran_build/build/lte-uesoftmodem -C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 1 --noS1
Test end-to-end video streaming
ffmpeg install and get a video test sample
$ sudo apt-get install ffmpeg
$ wget http://jell.yfish.us/media/jellyfish-5-mbps-hd-h264.mkv #http://jell.yfish.us/
push RTP stream over eNB machine (either FeMBMS or eMBMS setup )
$ ffmpeg -re -i jellyfish-5-mbps-hd-h264.mkv -f rtp_mpegts rtp://10.0.2.2:5000
Playback RTP stream on UE machine (either FeMBMS or eMBMS setup )
$ ffplay rtp://10.0.2.2:5000
3. Use precompiled Docker images
eNB/UE/MCE centos.7.6.1810 with UHD v1.15.0
$ sudo docker pull jmorgade/lte-softmodem:1.0.0_centos.7.6.1810
$ sudo docker pull jmorgade/lte-uesoftmodem:1.0.0_centos.7.6.1810
$ sudo docker pull jmorgade/mce-softmodem:1.0.0_centos.7.6.1810
eNB/UE/MCE ubuntu.16.04 with UHD v1.15.0
$ sudo docker pull jmorgade/lte-softmodem:1.0.0_ubuntu.16.04
$ sudo docker pull jmorgade/lte-uesoftmodem:1.0.0_ubuntu.16.04
$ sudo docker pull jmorgade/mce-softmodem:1.0.0_ubuntu.16.04
eNB/UE/MCE ubuntu.18.04 with UHD v1.15.0
$ sudo docker pull jmorgade/lte-softmodem:1.0.0_ubuntu.18.04
$ sudo docker pull jmorgade/lte-uesoftmodem:1.0.0_ubuntu.18.04
$ sudo docker pull jmorgade/mce-softmodem:1.0.0_ubuntu.18.04
Docker: Run eMBMS mixed UC/MC with RFSIM
Run following targets.
Be aware that two additional TUN interfaces will be created: oaitun_enm1 and oaitun_uem1
Take care you configure the suitable IP addres in flag.
eNB
$ sudo docker run --rm --net=host --cap-add=NET_ADMIN --name fembms-enb
--device /dev/net/tun:/dev/net/tun --device /dev/bus/usb/:/dev/bus/usb/ -it --privileged
--env RFSIMULATOR=enb
jmorgade/lte-softmodem:1.0.0_ubuntu.16.04 ran_build/build/lte-softmodem
-O ../ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf --noS1 --nokrnmod 1
--eNBs.[0].component_carriers.[0].eutra_band 7
--eNBs.[0].component_carriers.[0].downlink_frequency 2680000000
--eNBs.[0].component_carriers.[0].uplink_frequency_offset -120000000
--eNBs.[0].component_carriers.[0].N_RB_DL 25
--eNBs.[0].component_carriers.[0].mbms_dedicated_serving_cell ENABLE
--eNBs.[0].enable_enb_m2 yes
--MCEs.[0].enable_mce_m2 yes
--MCEs.[0].enable_mce_m3 yes
--MMEs.[0].enable_mme_m3 yes
--eNBs.[0].NETWORK_INTERFACES.ENB_IPV4_ADDRESS_FOR_M2C "127.0.0.2/24"
--eNBs.[0].target_mce_m2_ip_address.[0].ipv4 "127.0.0.7"
--MCEs.[0].mbms_sched_info.mbms_area_config_list.[0].pmch_config_list.[0].allocated_sf_end 1024
--rfsim
UE
$ sudo docker run --rm --net=host --cap-add=NET_ADMIN --name fembms-ue
--device /dev/net/tun:/dev/net/tun
--device /dev/bus/usb/:/dev/bus/usb/
-it --privileged --env RFSIMULATOR=ip_enb
jmorgade/lte-uesoftmodem:1.0.0_ubuntu.16.04 ran_build/build/lte-uesoftmodem
-C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier
--nokrnmod 1
--noS1 –rfsim
Docker: Run FeMBMS eNB dedicated BC with USRP Band7
Run following targets.
Be aware that two additional TUN interfaces will be created: oaitun_enm1 and oaitun_uem1
eNB
$ sudo docker run --rm --net=host --cap-add=NET_ADMIN --name fembms-enb
--device /dev/net/tun:/dev/net/tun --device /dev/bus/usb/:/dev/bus/usb/
-it --privileged
jmorgade/lte-softmodem:1.0.0_ubuntu.16.04 ran_build/build/lte-softmodem
-O ../ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf
--noS1 --nokrnmod 1
--eNBs.[0].component_carriers.[0].eutra_band 7
--eNBs.[0].component_carriers.[0].downlink_frequency 2680000000
--eNBs.[0].component_carriers.[0].uplink_frequency_offset -120000000
--eNBs.[0].component_carriers.[0].N_RB_DL 25
--eNBs.[0].component_carriers.[0].mbms_dedicated_serving_cell ENABLE
--eNBs.[0].enable_enb_m2 yes
--MCEs.[0].enable_mce_m2 yes
--MCEs.[0].enable_mce_m3 yes
--MMEs.[0].enable_mme_m3 yes
--eNBs.[0].NETWORK_INTERFACES.ENB_IPV4_ADDRESS_FOR_M2C "127.0.0.2/24"
--eNBs.[0].target_mce_m2_ip_address.[0].ipv4 "127.0.0.7"
--MCEs.[0].mbms_sched_info.mbms_area_config_list.[0].pmch_config_list.[0].allocated_sf_end 512
UE
$ sudo docker run --rm --net=host --cap-add=NET_ADMIN --name fembms-ue
--device /dev/net/tun:/dev/net/tun
--device /dev/bus/usb/:/dev/bus/usb/
-it --privileged
jmorgade/lte-uesoftmodem:1.0.0_ubuntu.16.04 ran_build/build/lte-uesoftmodem
-C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier
--nokrnmod 1 --noS1
Known issues
- UE FeMBMS requires further work to make the initial PSS sync and PBCH detection much more reliable. This is mainly relevant for UE working with USRP.