Clone
9
fembms
Dr.-Ing. Javier Morgade edited this page 2020-09-07 12:19:37 +02:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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

  1. 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.