Remove netlink code, and the PDCP_USE_NETLINK macro, as there is no known use, it makes the code more complicated, and is simply "technical debt". In 4G PDCP, a subtle change has been introduced, in pdcp_module_init() of pdcp.c. Looking at the diff of this commit, it can be seen that there is now a new "else-if (ENB_NAS_USE_TUN_W_MBMS_BIT)" branch that is under what was the "if (PDCP_USE_NETLINK)" branch, while the code fragment was actually inside the "else" branch of PDCP_USE_NETLINK. This seems to be necessary: previously, if we did not use noS1 mode and we don't use any TUN (i.e., the eNB), the else block would set up this interface. It is important that this interface is brought up, because if we omit it, RFsim will not work. It seems to me that this interface will regularly create some traffic; without it, RFsim will be blocked, and the UE cannot connect. In short, it seems to be important to have the MBMS interface, which injects traffic in the RFsim side, which will unblock RFsim. The change in pdcp_module_init() preserves the total changes of the if-else (PDCP_USE_NETLINK).
For reliable UDP multicast, the libpgm-dev should be installed on the machines,
otherwise the old multicast method using simply UDP will be used, resulting in
packet loss and unexpected behaviour of oaisim.
To compile OAI with PGM:
For Ubuntu 12.04 and earliers:
sudo apt-get install libpgm-dev
is sufficient
For Ubuntu older than 12.04:
wget http://openpgm.googlecode.com/files/libpgm-5.1.118.tar.gz
tar xvf libpgm-5.1.118.tar.gz
cd libpgm-5.1.118/openpgm/pgm
./configure --prefix=/usr
make
sudo make install
We have to clean oaisim compilation and re-compile
When running OAI, the -D should be used to provide the NIC to bind.
Parameter can be either an interface name or an ip address (refer to this link
for more informations: http://code.google.com/p/openpgm/wiki/OpenPgmConceptsTransport)