Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,10 @@ profissa_lft/TransportSecurity
profissa_lft/User/
profissa_lft/languagepacks.json
profissa_lft/logs/
**/__pycache__/
profissa_lft/machineid
demonstration/__pycache__
experiment/__pycache__
profissa_lft/__pycache__
experiment/results/*
results/data/*
results/__pycache__
containernet/

build
Expand Down
126 changes: 75 additions & 51 deletions examples/simple4GTopology.py
Original file line number Diff line number Diff line change
@@ -1,57 +1,81 @@
from profissa_lft.switch import Switch
from profissa_lft.ue import UE
from profissa_lft.epc import EPC
from profissa_lft.enb import EnB
import time
import subprocess
from time import sleep
from experiment.constants import *

epc = EPC('epc')
enb = EnB("enb")
ue2 = UE('ue2')
ue1 = UE('ue1')

epc.instantiate()
enb.instantiate()
ue2.instantiate()
ue1.instantiate()

enb.connect(epc, "enbepc", "epcenb")
ue1.connect(enb, "ue1enb", "enbue1")
ue2.connect(enb, "ue2enb", "enbue2")

epc.setIp('10.0.0.1', 24, "epcenb")
enb.setIp('10.0.0.2', 24, "enbepc")
enb.setIp('11.0.0.1', 30, "enbue1")
enb.setIp('11.0.0.5', 30, "enbue2")
ue1.setIp('11.0.0.2', 29, "ue1enb")
ue2.setIp('11.0.0.6', 29, "ue2enb")

epc.connectToInternet('10.0.0.6', 24, "epchost", "hostepc")

epc.setDefaultGateway('10.0.0.6', "epchost")
enb.setDefaultGateway('10.0.0.6', "enbepc")
ue1.setDefaultGateway('10.0.0.2', "ue1enb")
ue2.setDefaultGateway('10.0.0.2', "ue2enb")

# Define EPC config
epc.setEPCAddress("10.0.0.1")
epc.addNewUE(ue1.getNodeName(), "001010123456780", "172.16.0.2")
epc.addNewUE(ue2.getNodeName(), "001010123456789", "172.16.0.3")

# Define ENB Config
enb.setEPCAddress("10.0.0.1")
enb.setEnBAddress("10.0.0.2")
enb.setMultiUEEnBAddr("11.0.0.1", 2101, '11.0.0.1', 2100)
enb.setMultiUEUE1Addr("11.0.0.2", 2001, "11.0.0.1", 2000)
enb.setMultiUEUE2Addr("11.0.0.6", 2011, "11.0.0.5", 2010)

# Define UE Config
ue1.setUEID("001010123456780")
ue2.setUEID("001010123456789")

epc.start()
enb.starGnuRadioMultiUE()
enb.start("11.0.0.1", 2101, "11.0.0.1", 2100)
time.sleep(5)
ue1.start("11.0.0.2", 2001, "11.0.0.1", 2000)
ue2.start("11.0.0.6", 2011, "11.0.0.5", 2010)
class EmuEmuWireless:
def __init__(self):
self.epc = EPC('epc')
self.enb = EnB("enb")
self.ue = UE('ue')

def setup(self):
self.epc.instantiate(dockerImage=SRSRAN_PERFSONAR_UHD_IMAGE, runCommand=USR_SBIN_INIT_COMMAND)
self.enb.instantiate(dockerImage=SRSRAN_PERFSONAR_UHD_IMAGE)
self.ue.instantiate(dockerImage=SRSRAN_PERFSONAR_UHD_IMAGE, runCommand=USR_SBIN_INIT_COMMAND)

self.enb.connect(self.epc, "enbepc", "epcenb")
self.ue.connect(self.enb, "ueenb", "enbue")

self.epc.connectToInternet('9.0.0.2', 24, "epchost", "hostepc")
self.ue.connectToInternet('12.0.0.2', 24, "uehost", "hostue")

self.epc.setIp('9.0.0.1', 24, "epchost")
self.epc.setIp('10.0.0.1', 24, "epcenb")
self.enb.setIp('10.0.0.2', 24, "enbepc")
self.enb.setIp('11.0.0.1', 30, "enbue")
self.ue.setIp('12.0.0.1', 24, "uehost")
self.ue.setIp('11.0.0.2', 29, "ueenb")

self.epc.setDefaultGateway('9.0.0.2', "epchost")
self.enb.setDefaultGateway('9.0.0.2', "enbepc")
self.ue.setDefaultGateway('12.0.0.2', "ueenb")

self.enb.acceptPacketsFromInterface("enbue")

# Define EPC config
self.epc.setEPCAddress("10.0.0.1")
self.epc.addNewUE(self.ue.getNodeName(), "001010123456780", EMU_EMU_WIRELESS_UE_IP_ADDR)

# Define ENB Config
self.enb.setEPCAddress("10.0.0.1")
self.enb.setEnBAddress("10.0.0.2")
self.enb.setSingleUEEnBAddr("11.0.0.1", 2101, '11.0.0.1', 2100)
self.enb.setSingleUEUEAddr("11.0.0.2", 2001, "11.0.0.1", 2000)

# Define UE Config
self.ue.setUEID("001010123456780")
self.ue.setCorrectSyncError(True)

self.epc.start()
self.enb.starGnuRadioSingleUE()
self.enb.start("11.0.0.1", 2101, "11.0.0.1", 2100)
time.sleep(5)

self.ue.start("--rf.device_name=zmq --rf.device_args=\"tx_port=tcp://11.0.0.2:2001,rx_port=tcp://11.0.0.1:2000,id=ue,base_srate=11.52e6\"")

self.ue.setHost(EMU_EMU_WIRELESS_UE_IP_ADDR)
self.epc.setHost(EMU_EMU_WIRELESS_EPC_IP_ADDR)

self.epc.enableForwarding("epchost", "srs_spgw_sgi")
self.ue.enableForwarding("uehost", "tun_srsue")

subprocess.run(f"ip route add {EMU_EMU_WIRELESS_UE_IP_ADDR}/32 via 12.0.0.1 dev hostue", shell=True)
subprocess.run(f"ip route add {EMU_EMU_WIRELESS_EPC_IP_ADDR}/32 via 9.0.0.1 dev hostepc", shell=True)

self.__startPerfsonarServices()

def __startPerfsonarServices(self):
self.epc.run("service pscheduler-runner start && service pscheduler-ticker start && service pscheduler-scheduler start && service pscheduler-archiver start")
sleep(5)
self.ue.run("service pscheduler-runner start && service pscheduler-ticker start && service pscheduler-scheduler start && service pscheduler-archiver start")

def tearDown(self):
self.epc.delete()
self.enb.delete()
self.ue.delete()

EmuEmuWireless().setup
2 changes: 1 addition & 1 deletion experiment/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@

## Emu Emu
EMU_EMU_WIRELESS_EPC_IP_ADDR = "172.16.0.1"
EMU_EMU_WIRELESS_UE_IP_ADDR = "Z172.16.0.2"
EMU_EMU_WIRELESS_UE_IP_ADDR = "172.16.0.2"

EMU_PHY_WIRELESS_EPC_IP_ADDR = "172.16.0.1"
EMU_PHY_WIRELESS_HOST_UE_INTERFACE_IP_ADDR = "10.0.0.1"
Expand Down
2 changes: 1 addition & 1 deletion profissa_lft/enb.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def __init__(self, name: str, eNBConfigPath = '/etc/srsran/enb.conf'):
self.defaultMultiUEPath = self.buildDir + '/multiUE.py'
self.defaultSingleUEPath = self.buildDir + '/singleUE.py'

def instantiate(self, dockerImage='alexandremitsurukaihara/lft:srsran', dockerCommand = '', dns='8.8.8.8', runCommand='') -> None:
def instantiate(self, dockerImage='alexandremitsurukaihara/lft:srsran-perfsonar-uhd4', dockerCommand = '', dns='8.8.8.8', runCommand='') -> None:
super().instantiate(dockerImage=dockerImage, dockerCommand=dockerCommand, dns=dns, runCommand=runCommand)
self.config = self.readConfigFile(self.defaultEnBConfigPath)

Expand Down
2 changes: 1 addition & 1 deletion profissa_lft/epc.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def __init__(self, name: str):
self.userDb = None
self.buildDir = "/srsRAN/build"

def instantiate(self, dockerImage='alexandremitsurukaihara/lft:srsran', runCommand='') -> None:
def instantiate(self, dockerImage='alexandremitsurukaihara/lft:srsran-perfsonar-uhd4', runCommand='') -> None:
super().instantiate(dockerImage=dockerImage, runCommand=runCommand)
self.configEPC = self.readConfigFile(self.defaultEPCConfigPath)
self.userDb = self.createUserDb()
Expand Down
Loading