|
|
<table style="border-collapse: collapse; border: none;">
|
|
|
<tr style="border-collapse: collapse; border: none;">
|
|
|
<td style="border-collapse: collapse; border: none;">
|
|
|
<a href="http://www.openairinterface.org/">
|
|
|
<img src="images/oai_final_logo.png" alt="" border=3 height=50 width=150>
|
|
|
</img>
|
|
|
</a>
|
|
|
</td>
|
|
|
<td style="border-collapse: collapse; border: none; vertical-align: center;">
|
|
|
<b><font size = "5">FeMBMS</font></b>
|
|
|
</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
# 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 in into `develop` !860`
|
|
|
|
|
|
# FeMBMS usage in OAI
|
|
|
## Working FeMBMS configuration files ##
|
|
|
|
|
|
Look into the [CI configuration folder](https://gitlab.eurecom.fr/oai/openairinterface5g/tree/develop/ci-scripts/conf_files):
|
|
|
|
|
|
eMBMS *Mixed BC/UC* FDD files for RFSIM: for example [eMBMS-BC/UC-FDD-5MHz-RFSIM](https://gitlab.eurecom.fr/oai/openairinterface5g/blob/develop/ci-scripts/conf_files/lte-fdd-mbms-basic-sim.conf)
|
|
|
|
|
|
FeMBMS *dedicated BC* files for RFSIM: for example [FeMBMS-BC-5MHz-RFSIM](https://gitlab.eurecom.fr/oai/openairinterface5g/blob/develop/ci-scripts/conf_files/lte-fdd-fembms-basic-sim.conf)
|
|
|
|
|
|
eMBMS *Mixed BC/UC* FDD files for USRP: for example [eMBMS-BC/UC-FDD-5MHz-USRP](https://gitlab.eurecom.fr/oai/openairinterface5g/blob/develop/ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf)
|
|
|
|
|
|
FeMBMS *dedicated BC* files for USRP: take example [FeMBMS-BC-5MHz-USRP](https://gitlab.eurecom.fr/oai/openairinterface5g/blob/develop/ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf) as reference and `ENABLE` the `mbms_dedicated_serving_cell` flag
|
|
|
|
|
|
Adapt the `eNBs` `MCEs` and `MMEs` config objects to your system needs.
|
|
|
|
|
|
### eBNs 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
|
|
|
|
|
|
};
|
|
|
}
|
|
|
);
|
|
|
```
|
|
|
## 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
|
|
|
```bash
|
|
|
$ git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
|
|
|
$ cd openairinterface5g
|
|
|
$ git checkout fembms-enb-ue
|
|
|
$ 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 <enb-ip> flag.
|
|
|
#### eNB
|
|
|
```bash
|
|
|
$ 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
|
|
|
```bash
|
|
|
$ 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 <enb-ip> flag.
|
|
|
|
|
|
#### eNB
|
|
|
```bash
|
|
|
$ 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
|
|
|
```bash
|
|
|
$ 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
|
|
|
```bash
|
|
|
$ cd cmake_targets
|
|
|
$ sudo ran_build/build/lte-softmodem -O 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
|
|
|
```bash
|
|
|
$ 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
|
|
|
```bash
|
|
|
$ 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
|
|
|
```bash
|
|
|
$ 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
|
|
|
```bash
|
|
|
$ 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 )
|
|
|
```bash
|
|
|
$ 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 )
|
|
|
```bash
|
|
|
$ ffplay rtp://10.0.2.2:5000
|
|
|
``` |