Scenario 1 : Off-network UE2UE link SynchREF UE (UE1) UE1(eth0 - 10.10.10.1)--------UE2(eno1 - 10.10.10.2) Here's an example of /etc/network/interfaces configuration for UE1 auto eth0 iface eth0 inet static address 10.10.10.1 netmask 255.255.255.0 gateway 10.10.10.1 Prepare the environment: - git clone https://gitlab.eurecom.fr/matzakos/LTE-D2D.git #branch: master This branch contains all the current development for DDPS - UE MAC<-> UE MAC for Scenario 1 - eNB MAC<->UE MAC (NFAPI Transport) - RRC Extensions for “on-network” cases NFAPI configuration (required even for Scenario 1 target) - git clone https://github.com/cisco/open-nFAPI.git - cd open-nfapi - patch -p1 --dry-run < $OPENAIR_HOME/open-nfapi.oai.patch Validate that there are no errors - patch -p1 < $OPENAIR_HOME/open-nfapi.oai.patch OAI build/execute - export NFAPI_DIR=XXX (place where NFAPI was installed) - cd cmake_targets - ./build_oai --UE (if necessary, use ./build_oai -I --UE to install required packages) - cd lte_build_oai/build/ - cp ../../../targets/bin/.ue* . - cp ../../../targets/bin/.usim* . - sudo insmod ../../../targets/bin/ue_ip.ko UE1: - sudo ifconfig oip0 10.0.0.1 - sudo iptables -A POSTROUTING -t mangle -o oip0 -d 224.0.0.3 -j MARK --set-mark 3 - (if necessary) sudo route add default gw 10.10.10.1 eth0 UE2: - sudo ifconfig oip0 10.0.0.2 - sudo iptables -A POSTROUTING -t mangle -o oip0 -d 224.0.0.3 -j MARK --set-mark 3 - (if necessary) sudo route add default gw 10.10.10.1 eno1 UE1 and UE2: Get and build vencore_app from d2d-l3-stub (branch: l3_stub) - gcc -I . vencore_app.c -o vencore_app -lpthread -------------------------------- TEST ONE-TO-MANY Run UE1 then UE2, for example: UE1: sudo ./lte-softmodem-stub -U --emul-iface eth0 UE2: sudo ./lte-softmodem-stub -U --emul-iface eno1 Test with Ping - Sender - UE1: ping -I oip0 224.0.0.3 - Receiver - UE2: using wireshark Test with Iperf - Sender - UE1: iperf -c 224.0.0.3 -u -b 0.1M --bind 10.0.0.1 -t 100 - Receiver - UE2: sudo ./mcreceive 224.0.0.3 5001 Filter the incomming packets according to GroupL2Id: receiver (one-to-many) can discard the packets if it doesn't belong to this group. For the moment, both sender and receiver use the same set of Ids (hardcoded) UE1 (sender) - sudo ./lte-softmodem-stub -U --emul-iface eth0 - ./vencore_app #send the sourceL2Id, groupL2Id to OAI - ping -I oip0 224.0.0.3 UE2(receiver) - sudo ./lte-softmodem-stub -U --emul-iface eno1 #we can see the incomming packets from OAI log, however, cannot see from Wireshark -> they are discarded at MAC layer - ./vencore_app #we can see the packets appearing in Wireshark -------------------------------------- TEST PC5-S (UE1 -sender, UE2 - receiver) and PC5-U for ONE-TO-ONE scenario Configure UE1/UE2 UE1: - sudo ifconfig oip0 10.0.0.1 - sudo iptables -A POSTROUTING -t mangle -o oip0 -d 10.0.0.2 -j MARK --set-mark 3 - sudo route add default gw 10.10.10.1 eth0 UE2: - sudo ifconfig oip0 10.0.0.2 - sudo iptables -A POSTROUTING -t mangle -o oip0 -d 10.0.0.1 -j MARK --set-mark 3 - sudo route add default gw 10.10.10.1 eno1 step 1: - UE1: sudo ./lte-softmodem-stub -U --emul-iface eth0 step 2: - UE2: sudo ./lte-softmodem-stub -U --emul-iface eno1 - UE2: ./vencore_app -r #listen to incomming message from PC5-S step 3: - UE1: ./vencore_app -s #send a message via PC5-S (e.g., DirectCommunicationRequest) Generate unicast traffic UE1: ping -I oip0 10.0.0.2 -------------------------------------- TEST PC5-D step 1: - UE1: sudo ./lte-softmodem-stub -U --emul-iface eth0 - UE1: ./vencore_app -d #send a PC5-Discovery-Announcement via PC5D step 2: - UE2: sudo ./lte-softmodem-stub -U --emul-iface eno1 - UE2: ./vencore_app -d #send a PC5-Discovery-Announcement via PC5D