diff --git a/ci-scripts/Jenkinsfile-push-registry b/ci-scripts/Jenkinsfile-push-registry index 273b3876be..d05c167f6f 100644 --- a/ci-scripts/Jenkinsfile-push-registry +++ b/ci-scripts/Jenkinsfile-push-registry @@ -77,7 +77,7 @@ pipeline { withCredentials([ [$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.DH_Credentials}", usernameVariable: 'DH_Username', passwordVariable: 'DH_Password'] ]) { - def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue"] + def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue", "oai-nr-cuup"] // Logging in on both registries sh "docker login -u ${DH_Username} -p ${DH_Password} > /dev/null 2>&1" sh "docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1" diff --git a/ci-scripts/cls_cmd.py b/ci-scripts/cls_cmd.py index 12eb75e7da..8694502fe2 100644 --- a/ci-scripts/cls_cmd.py +++ b/ci-scripts/cls_cmd.py @@ -74,23 +74,22 @@ class Cmd(metaclass=abc.ABCMeta): class LocalCmd(Cmd): def __init__(self, d = None): self.cwd = d + if self.cwd is not None: + logging.debug(f'Working dir is {self.cwd}') self.cp = sp.CompletedProcess(args='', returncode=0, stdout='') def run(self, line, timeout=300, silent=False, reportNonZero=True): - if type(line) is str: - line = [s for s in line.split(' ') if len(s) > 0] if not silent: - logging.debug(' '.join(line)) + logging.info(line) try: - ret = sp.run(line, cwd=self.cwd, stdout=sp.PIPE, stderr=sp.STDOUT, timeout=timeout) + ret = sp.run(line, shell=True, cwd=self.cwd, stdout=sp.PIPE, stderr=sp.STDOUT, timeout=timeout) except Exception as e: ret = sp.CompletedProcess(args=line, returncode=255, stdout=f'Exception: {str(e)}'.encode('utf-8')) if ret.stdout is None: ret.stdout = b'' ret.stdout = ret.stdout.decode('utf-8').strip() if reportNonZero and ret.returncode != 0: - cmd = ' '.join(ret.args) - logging.warning(f'command "{cmd}" returned non-zero returncode {ret.returncode}: output:\n{ret.stdout}') + logging.warning(f'command "{ret.args}" returned non-zero returncode {ret.returncode}: output:\n{ret.stdout}') self.cp = ret return ret diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 324e718ba1..77b7fcacb5 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -38,6 +38,9 @@ import os import shutil import subprocess import time +import pyshark +import threading +import cls_cmd from multiprocessing import Process, Lock, SimpleQueue from zipfile import ZipFile @@ -62,7 +65,8 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge sshSession.command('mkdir -p ' + sourcePath, '\$', 5) sshSession.command('cd ' + sourcePath, '\$', 5) # Recent version of git (>2.20?) should handle missing .git extension # without problems - sshSession.command(f'git clone --filter=blob:none -n -b develop {ranRepository} .', '\$', 60) + baseBranch = re.sub('origin/', '', ranTargetBranch) + sshSession.command(f'git clone --filter=blob:none -n -b {baseBranch} {ranRepository} .', '\$', 60) if sshSession.getBefore().count('error') > 0 or sshSession.getBefore().count('error') > 0: sys.exit('error during clone') sshSession.command('git config user.email "jenkins@openairinterface.org"', '\$', 5) @@ -287,6 +291,7 @@ class Containerize(): self.deployedContainers = [] self.tsharkStarted = False + self.displayedNewTags = False self.pingContName = '' self.pingOptions = '' self.pingLossThreshold = '' @@ -345,7 +350,7 @@ class Containerize(): self.dockerfileprefix = '.rhel8.2' self.cliBuildOptions = '--no-cache --disable-compression' - # we always build the ran-build image with all targets + # we always build the ran-build image with all targets imageNames = [('ran-build', 'build')] result = re.search('eNB', self.imageKind) # Creating a tupple with the imageName and the DockerFile prefix pattern on obelix @@ -547,14 +552,17 @@ class Containerize(): oldRanCommidID = self.ranCommitID oldRanRepository = self.ranRepository oldRanAllowMerge = self.ranAllowMerge + oldRanTargetBranch = self.ranTargetBranch self.ranCommitID = self.proxyCommit self.ranRepository = 'https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy.git' self.ranAllowMerge = False + self.ranTargetBranch = 'master' CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge) # to prevent accidentally overwriting data that might be used later self.ranCommitID = oldRanCommidID self.ranRepository = oldRanRepository self.ranAllowMerge = oldRanAllowMerge + self.ranTargetBranch = oldRanTargetBranch # Let's remove any previous run artifacts if still there mySSH.command(self.cli + ' image prune --force', '\$', 30) @@ -571,6 +579,7 @@ class Containerize(): # Note: at this point, OAI images are flattened, but we cannot do this # here, as the flatten script is not in the proxy repo mySSH.command(self.cli + ' image inspect --format=\'Size = {{.Size}} bytes\' proxy:' + tag, '\$', 5) + mySSH.command(self.cli + ' image prune --force || true','\$', 15) if mySSH.getBefore().count('o such image') != 0: logging.error('\u001B[1m Build of L2sim proxy failed\u001B[0m') mySSH.close() @@ -730,60 +739,42 @@ class Containerize(): sys.exit('Insufficient Parameter') if lIpAddr != 'none': logging.debug('Pulling images onto server: ' + lIpAddr) - mySSH = SSH.SSHConnection() - mySSH.open(lIpAddr, lUserName, lPassWord) + myCmd = cls_cmd.RemoteCmd(lIpAddr) else: logging.debug('Pulling images locally') + myCmd = cls_cmd.LocalCmd() cmd = 'docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr' - if lIpAddr != 'none': - mySSH.command(cmd, '\$', 5) - response = mySSH.getBefore() - else: - logging.info(cmd) - response = subprocess.check_output(cmd, shell=True, universal_newlines=True, stderr=subprocess.STDOUT) - if re.search('Login Succeeded', response) is None: + response = myCmd.run(cmd) + if response.returncode != 0: msg = 'Could not log into local registry' logging.error(msg) - if lIpAddr != 'none': - mySSH.close() + myCmd.close() HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK) return False for image in self.imageToPull: tagToUse = self.ImageTagToUse(image) cmd = f'docker pull {tagToUse}' - if lIpAddr != 'none': - mySSH.command(cmd, '\$', 120) - response = mySSH.getBefore() - else: - logging.info(cmd) - response = subprocess.check_output(cmd, shell=True, universal_newlines=True) - if re.search('Status: Downloaded newer image for |Status: Image is up to date for', response) is None: + response = myCmd.run(cmd, timeout=120) + if response.returncode != 0: logging.debug(response) msg = f'Could not pull {image} from local registry : {tagToUse}' logging.error(msg) - if lIpAddr != 'none': - mySSH.close() + myCmd.close() HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK) return False cmd = 'docker logout porcepix.sboai.cs.eurecom.fr' - if lIpAddr != 'none': - mySSH.command(cmd, '\$', 5) - response = mySSH.getBefore() - else: - logging.info(cmd) - response = subprocess.check_output(cmd, shell=True, universal_newlines=True) - if re.search('Removing login credentials', response) is None: + response = myCmd.run(cmd) + if response.returncode != 0: msg = 'Could not log off from local registry' logging.error(msg) - mySSH.close() + myCmd.close() HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK) return False - if lIpAddr != 'none': - mySSH.close() + myCmd.close() HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) return True @@ -810,22 +801,17 @@ class Containerize(): sys.exit('Insufficient Parameter') if lIpAddr != 'none': logging.debug('Removing test images from server: ' + lIpAddr) - mySSH = SSH.SSHConnection() - mySSH.open(lIpAddr, lUserName, lPassWord) + myCmd = cls_cmd.RemoteCmd(lIpAddr) else: logging.debug('Removing test images locally') + myCmd = cls_cmd.LocalCmd() imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup'] for image in imageNames: - cmd = f'docker rmi {self.ImageTagToUse(image)} || true' - if lIpAddr != 'none': - mySSH.command(cmd, '\$', 5) - else: - logging.info(cmd) - subprocess.run(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + cmd = f'docker rmi {self.ImageTagToUse(image)}' + myCmd.run(cmd, reportNonZero=False) - if lIpAddr != 'none': - mySSH.close() + myCmd.close() HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) return True @@ -922,7 +908,7 @@ class Containerize(): if healthyNb == 1: cnt = 0 while (cnt < 20): - mySSH.command('docker logs ' + containerName + ' | egrep --text --color=never -i "wait|sync|Starting"', '\$', 30) + mySSH.command('docker logs ' + containerName + ' | egrep --text --color=never -i "wait|sync|Starting"', '\$', 30) result = re.search('got sync|Starting F1AP at CU', mySSH.getBefore()) if result is None: time.sleep(6) @@ -1048,54 +1034,58 @@ class Containerize(): def DeployGenObject(self, HTML, RAN, UE): self.exitStatus = 0 logging.debug('\u001B[1m Checking Services to deploy\u001B[0m') - cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose config --services' - logging.info(cmd) - try: - listServices = subprocess.check_output(cmd, shell=True, universal_newlines=True) - except Exception as e: + # Implicitly we are running locally + myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0]) + cmd = 'docker-compose config --services' + listServices = myCmd.run(cmd) + if listServices.returncode != 0: + myCmd.close() self.exitStatus = 1 HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK) return for reqSvc in self.services[0].split(' '): - res = re.search(reqSvc, listServices) + res = re.search(reqSvc, listServices.stdout) if res is None: logging.error(reqSvc + ' not found in specified docker-compose') self.exitStatus = 1 if (self.exitStatus == 1): + myCmd.close() HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK) return - cmd = 'cd ' + self.yamlPath[0] + ' && cp docker-compose.y*ml docker-compose-ci.yml' - subprocess.run(cmd, shell=True) + cmd = 'cp docker-compose.y*ml docker-compose-ci.yml' + myCmd.run(cmd, silent=self.displayedNewTags) imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup'] for image in imageNames: tagToUse = self.ImageTagToUse(image) - cmd = f'cd {self.yamlPath[0]} && sed -i -e "s@{image}:develop@{tagToUse}@" docker-compose-ci.yml' - logging.debug(cmd) - subprocess.run(cmd, shell=True) + cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@{tagToUse}@" docker-compose-ci.yml' + myCmd.run(cmd, silent=self.displayedNewTags) + self.displayedNewTags = True - cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml up -d ' + self.services[0] - logging.info(cmd) - try: - deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100) - except Exception as e: + cmd = f'docker-compose -f docker-compose-ci.yml up -d {self.services[0]}' + deployStatus = myCmd.run(cmd, timeout=100) + if deployStatus.returncode != 0: + myCmd.close() self.exitStatus = 1 logging.error('Could not deploy') HTML.CreateHtmlTestRow('Could not deploy', 'KO', CONST.ALL_PROCESSES_OK) return logging.debug('\u001B[1m Checking if all deployed healthy\u001B[0m') - cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps -a' + cmd = 'docker-compose -f docker-compose-ci.yml ps -a' count = 0 healthy = 0 + restarting = 0 newContainers = [] while (count < 10): count += 1 containerStatus = [] - deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30) + deployStatus = myCmd.run(cmd, 30, silent=True) healthy = 0 - for state in deployStatus.split('\n'): - res = re.search('Name|----------', state) + restarting = 0 + for state in deployStatus.stdout.split('\n'): + state = state.strip() + res = re.search('Name|NAME|----------', state) if res is not None: continue if len(state) == 0: @@ -1110,23 +1100,32 @@ class Containerize(): if not found: newContainers.append(cName) self.deployedContainers.append(cName) - if re.search('Up \(healthy\)', state) is not None: + if re.search('\(healthy\)', state) is not None: healthy += 1 - if re.search('rfsim4g-db-init.*Exit 0', state) is not None: - subprocess.check_output('docker rm -f rfsim4g-db-init || true', shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30) - containerStatus.append(state) - if healthy == self.nb_healthy[0]: + if re.search('rfsim4g-db-init.*Exit 0', state) is not None or re.search('rfsim4g-db-init.*Exited \(0\)', state) is not None: + myCmd.run('docker rm -f rfsim4g-db-init', timeout=30, silent=True, reportNonZero=False) + if re.search('l2sim4g-db-init.*Exit 0', state) is not None or re.search('l2sim4g-db-init.*Exited \(0\)', state) is not None: + myCmd.run('docker rm -f l2sim4g-db-init', timeout=30, silent=True, reportNonZero=False) + if re.search('Restarting', state) is None: + containerStatus.append(state) + else: + restarting += 1 + if healthy == self.nb_healthy[0] and restarting == 0: count = 100 else: time.sleep(10) imagesInfo = '' for newCont in newContainers: + if newCont == 'rfsim4g-db-init': + continue cmd = 'docker inspect -f "{{.Config.Image}}" ' + newCont - imageName = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30) - imageName = str(imageName).strip() + imageInspect = myCmd.run(cmd, timeout=30, silent=True) + imageName = str(imageInspect.stdout).strip() cmd = 'docker image inspect --format "{{.RepoTags}}\t{{.Size}} bytes\t{{.Created}}\t{{.Id}}" ' + imageName - imagesInfo += subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30) + imageInspect = myCmd.run(cmd, 30, silent=True) + imagesInfo += imageInspect.stdout.strip() + myCmd.close() html_queue = SimpleQueue() html_cell = '
\n'
@@ -1158,48 +1157,71 @@ class Containerize():
 			self.UndeployGenObject(HTML, RAN, UE)
 			self.exitStatus = 1
 
-	def CaptureOnDockerNetworks(self):
-		cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"'
-		networkNames = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
+	# pyshark livecapture launches 2 processes:
+	# * One using dumpcap -i lIfs -w - (ie redirecting the packets to STDOUT)
+	# * One using tshark -i - -w loFile (ie capturing from STDIN from previous process)
+	# but in fact the packets are read by the following loop before being in fact
+	# really written to loFile.
+	# So it is mandatory to keep the loop
+	def LaunchPySharkCapture(self, lIfs, lFilter, loFile):
+		capture = pyshark.LiveCapture(interface=lIfs, bpf_filter=lFilter, output_file=loFile, debug=False)
+		for packet in capture.sniff_continuously():
+			pass
 
+	def CaptureOnDockerNetworks(self):
+		myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
+		cmd = 'docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"'
+		networkNames = myCmd.run(cmd, silent=True)
+		myCmd.close()
 		# Allow only: control plane RAN (SCTP), HTTP of control in CN (port 80), PFCP traffic (port 8805), MySQL (port 3306)
-		cmd = 'sudo nohup tshark -f "sctp or port 80 or port 8805 or icmp or port 3306"'
-		for name in networkNames.split('\n'):
+		capture_filter = 'sctp or port 80 or port 8805 or icmp or port 3306'
+		interfaces = []
+		iInterfaces = ''
+		for name in networkNames.stdout.split('\n'):
 			if re.search('rfsim', name) is not None or re.search('l2sim', name) is not None:
-				cmd += ' -i ' + name
-		cmd += ' -w /tmp/capture_'
+				interfaces.append(name)
+				iInterfaces += f'-i {name} '
 		ymlPath = self.yamlPath[0].split('/')
-		cmd += ymlPath[1] + '.pcap > /tmp/tshark.log 2>&1 &'
-		logging.info(cmd)
-		networkNames = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
+		output_file = f'/tmp/capture_{ymlPath[1]}.pcap'
 		self.tsharkStarted = True
+		# On old systems (ubuntu 18), pyshark live-capture is buggy.
+		# Going back to old method
+		if sys.version_info < (3, 7):
+			cmd = f'nohup tshark -f "{capture_filter}" {iInterfaces} -w {output_file} > /tmp/tshark.log 2>&1 &'
+			myCmd = cls_cmd.LocalCmd()
+			myCmd.run(cmd, timeout=5, reportNonZero=False)
+			myCmd.close()
+			return
+		x = threading.Thread(target = self.LaunchPySharkCapture, args = (interfaces,capture_filter,output_file,))
+		x.daemon = True
+		x.start()
 
 	def UndeployGenObject(self, HTML, RAN, UE):
 		self.exitStatus = 0
+		# Implicitly we are running locally
 		ymlPath = self.yamlPath[0].split('/')
 		logPath = '../cmake_targets/log/' + ymlPath[1]
+		myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
 
-		cmd = 'cd ' + self.yamlPath[0] + ' && cp docker-compose.y*ml docker-compose-ci.yml'
-		logging.info(cmd)
-		subprocess.run(cmd, shell=True)
+		cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
+		myCmd.run(cmd, silent=self.displayedNewTags)
 		imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
 		for image in imageNames:
 			tagToUse = self.ImageTagToUse(image)
-			cmd = f'cd {self.yamlPath[0]} && sed -i -e "s@{image}:develop@{tagToUse}@" docker-compose-ci.yml'
-			subprocess.run(cmd, shell=True)
+			cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@{tagToUse}@" docker-compose-ci.yml'
+			myCmd.run(cmd, silent=self.displayedNewTags)
+		self.displayedNewTags = True
 
 		# check which containers are running for log recovery later
-		cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
-		logging.info(cmd)
-		deployStatusLogs = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
+		cmd = 'docker-compose -f docker-compose-ci.yml ps --all'
+		deployStatusLogs = myCmd.run(cmd, timeout=30)
 
 		# Stop the containers to shut down objects
 		logging.debug('\u001B[1m Stopping containers \u001B[0m')
-		cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml stop -t3'
-		logging.info(cmd)
-		try:
-			deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
-		except Exception as e:
+		cmd = 'docker-compose -f docker-compose-ci.yml stop -t3'
+		deployStatus = myCmd.run(cmd, timeout=100)
+		if deployStatus.returncode != 0:
+			myCmd.close()
 			self.exitStatus = 1
 			logging.error('Could not stop containers')
 			HTML.CreateHtmlTestRow('Could not stop', 'KO', CONST.ALL_PROCESSES_OK)
@@ -1207,8 +1229,12 @@ class Containerize():
 			return
 
 		anyLogs = False
-		for state in deployStatusLogs.split('\n'):
-			res = re.search('Name|----------', state)
+		logging.debug('Working dir is now . (ie ci-scripts)')
+		myCmd2 = cls_cmd.LocalCmd()
+		myCmd2.run(f'mkdir -p {logPath}')
+		myCmd2.cd(logPath)
+		for state in deployStatusLogs.stdout.split('\n'):
+			res = re.search('Name|NAME|----------', state)
 			if res is not None:
 				continue
 			if len(state) == 0:
@@ -1217,36 +1243,26 @@ class Containerize():
 			if res is not None:
 				anyLogs = True
 				cName = res.group('container_name')
-				cmd = 'cd ' + self.yamlPath[0] + ' && docker logs ' + cName + ' > ' + cName + '.log 2>&1'
-				logging.info(cmd)
-				subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
+				cmd = f'docker logs {cName} > {cName}.log 2>&1'
+				myCmd2.run(cmd, timeout=30, reportNonZero=False)
 				if re.search('magma-mme', cName) is not None:
-					cmd = 'cd ' + self.yamlPath[0] + ' && docker cp -L ' + cName + ':/var/log/mme.log ' + cName + '-full.log'
-					logging.info(cmd)
-					subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
+					cmd = f'docker cp -L {cName}:/var/log/mme.log {cName}-full.log'
+					myCmd2.run(cmd, timeout=30, reportNonZero=False)
 		fullStatus = True
 		if anyLogs:
-			cmd = 'mkdir -p '+ logPath + ' && cp ' + self.yamlPath[0] + '/*.log ' + logPath
-			logging.info(cmd)
-			deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
-
 			# Analyzing log file(s)!
 			listOfPossibleRanContainers = ['enb', 'gnb', 'cu', 'du']
 			for container in listOfPossibleRanContainers:
-				filenames = self.yamlPath[0] + '/*-oai-' + container + '.log'
-				cmd = 'ls ' + filenames
-				containerStatus = True
-				try:
-					lsStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
-					filenames = str(lsStatus).strip()
-				except:
-					containerStatus = False
-				if not containerStatus:
+				filenames = './*-oai-' + container + '.log'
+				cmd = f'ls {filenames}'
+				lsStatus = myCmd2.run(cmd, silent=True, reportNonZero=False)
+				if lsStatus.returncode != 0:
 					continue
+				filenames = str(lsStatus.stdout).strip()
 
 				for filename in filenames.split('\n'):
 					logging.debug('\u001B[1m Analyzing xNB logfile ' + filename + ' \u001B[0m')
-					logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
+					logStatus = RAN.AnalyzeLogFile_eNB(f'{logPath}/{filename}', HTML, self.ran_checkers)
 					if (logStatus < 0):
 						fullStatus = False
 						self.exitStatus = 1
@@ -1256,49 +1272,42 @@ class Containerize():
 
 			listOfPossibleUeContainers = ['lte-ue*', 'nr-ue*']
 			for container in listOfPossibleUeContainers:
-				filenames = self.yamlPath[0] + '/*-oai-' + container + '.log'
-				cmd = 'ls ' + filenames
-				containerStatus = True
-				try:
-					lsStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
-					filenames = str(lsStatus).strip()
-				except:
-					containerStatus = False
-				if not containerStatus:
+				filenames = './*-oai-' + container + '.log'
+				cmd = f'ls {filenames}'
+				lsStatus = myCmd2.run(cmd, silent=True, reportNonZero=False)
+				if lsStatus.returncode != 0:
 					continue
+				filenames = str(lsStatus.stdout).strip()
 
 				for filename in filenames.split('\n'):
 					logging.debug('\u001B[1m Analyzing UE logfile ' + filename + ' \u001B[0m')
-					logStatus = UE.AnalyzeLogFile_UE(filename, HTML, RAN)
+					logStatus = UE.AnalyzeLogFile_UE(f'{logPath}/{filename}', HTML, RAN)
 					if (logStatus < 0):
 						fullStatus = False
 						HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus)
 					else:
 						HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
 
-			cmd = 'rm ' + self.yamlPath[0] + '/*.log'
-			logging.info(cmd)
-			deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
 			if self.tsharkStarted:
 				self.tsharkStarted = True
+				cmd = 'killall tshark'
+				myCmd2.run(cmd, reportNonZero=False)
+				cmd = 'killall dumpcap'
+				myCmd2.run(cmd, reportNonZero=False)
+				time.sleep(5)
 				ymlPath = self.yamlPath[0].split('/')
-				cmd = 'sudo chmod 666 /tmp/capture_' + ymlPath[1] + '.pcap'
-				logging.info(cmd)
-				copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
-				cmd = 'cp /tmp/capture_' + ymlPath[1] + '.pcap ' + logPath
-				logging.info(cmd)
-				copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
-				cmd = 'sudo rm /tmp/capture_' + ymlPath[1] + '.pcap'
-				logging.info(cmd)
-				copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
+				# The working dir is still logPath
+				cmd = f'mv /tmp/capture_{ymlPath[1]}.pcap .'
+				myCmd2.run(cmd, timeout=100, reportNonZero=False)
 				self.tsharkStarted = False
+		myCmd2.close()
 
 		logging.debug('\u001B[1m Undeploying \u001B[0m')
-		cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml down'
-		logging.info(cmd)
-		try:
-			deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
-		except Exception as e:
+		logging.debug(f'Working dir is back {self.yamlPath[0]}')
+		cmd = 'docker-compose -f docker-compose-ci.yml down'
+		deployStatus = myCmd.run(cmd, timeout=100)
+		if deployStatus.returncode != 0:
+			myCmd.close()
 			self.exitStatus = 1
 			logging.error('Could not undeploy')
 			HTML.CreateHtmlTestRow('Could not undeploy', 'KO', CONST.ALL_PROCESSES_OK)
@@ -1307,9 +1316,9 @@ class Containerize():
 
 		self.deployedContainers = []
 		# Cleaning any created tmp volume
-		cmd = 'docker volume prune --force || true'
-		logging.info(cmd)
-		deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
+		cmd = 'docker volume prune --force'
+		deployStatus = myCmd.run(cmd, timeout=100, reportNonZero=False)
+		myCmd.close()
 
 		if fullStatus:
 			HTML.CreateHtmlTestRow('n/a', 'OK', CONST.ALL_PROCESSES_OK)
@@ -1324,13 +1333,13 @@ class Containerize():
 		logPath = '../cmake_targets/log/' + ymlPath[1]
 
 		# if the containers are running, recover the logs!
-		cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
-		logging.info(cmd)
-		deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
+		myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
+		cmd = 'docker-compose -f docker-compose-ci.yml ps --all'
+		deployStatus = myCmd.run(cmd, timeout=30)
 		cmd = 'docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" '
 		anyLogs = False
-		for state in deployStatus.split('\n'):
-			res = re.search('Name|----------', state)
+		for state in deployStatus.stdout.split('\n'):
+			res = re.search('Name|NAME|----------', state)
 			if res is not None:
 				continue
 			if len(state) == 0:
@@ -1341,11 +1350,11 @@ class Containerize():
 				cmd += res.group('container_name') + ' '
 		message = ''
 		if anyLogs:
-			logging.info(cmd)
-			stats = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
-			for statLine in stats.split('\n'):
+			stats = myCmd.run(cmd, timeout=30)
+			for statLine in stats.stdout.split('\n'):
 				logging.debug(statLine)
 				message += statLine + '\n'
+		myCmd.close()
 
 		html_queue = SimpleQueue()
 		html_cell = '
\n' + message + '
' @@ -1353,18 +1362,18 @@ class Containerize(): HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', 1, html_queue) def PingFromContainer(self, HTML, RAN, UE): + myCmd = cls_cmd.LocalCmd() self.exitStatus = 0 ymlPath = self.yamlPath[0].split('/') logPath = '../cmake_targets/log/' + ymlPath[1] - cmd = 'mkdir -p ' + logPath - deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + cmd = f'mkdir -p {logPath}' + myCmd.run(cmd, silent=True) - cmd = 'docker exec ' + self.pingContName + ' /bin/bash -c "ping ' + self.pingOptions + '" 2>&1 | tee ' + logPath + '/ping_' + HTML.testCase_id + '.log || true' + cmd = f'docker exec {self.pingContName} /bin/bash -c "ping {self.pingOptions}" 2>&1 | tee {logPath}/ping_{HTML.testCase_id}.log' + pingStatus = myCmd.run(cmd, timeout=100, reportNonZero=False) + myCmd.close() - logging.info(cmd) - deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100) - - result = re.search(', (?P[0-9\.]+)% packet loss, time [0-9\.]+ms', deployStatus) + result = re.search(', (?P[0-9\.]+)% packet loss, time [0-9\.]+ms', pingStatus.stdout) if result is None: self.PingExit(HTML, RAN, UE, False, 'Packet Loss Not Found') return @@ -1374,7 +1383,7 @@ class Containerize(): self.PingExit(HTML, RAN, UE, False, 'Packet Loss is 100%') return - result = re.search('rtt min\/avg\/max\/mdev = (?P[0-9\.]+)\/(?P[0-9\.]+)\/(?P[0-9\.]+)\/[0-9\.]+ ms', deployStatus) + result = re.search('rtt min\/avg\/max\/mdev = (?P[0-9\.]+)\/(?P[0-9\.]+)\/(?P[0-9\.]+)\/[0-9\.]+ ms', pingStatus.stdout) if result is None: self.PingExit(HTML, RAN, UE, False, 'Ping RTT_Min RTT_Avg RTT_Max Not Found!') return @@ -1427,39 +1436,37 @@ class Containerize(): self.exitStatus = 1 def IperfFromContainer(self, HTML, RAN, UE): + myCmd = cls_cmd.LocalCmd() self.exitStatus = 0 ymlPath = self.yamlPath[0].split('/') logPath = '../cmake_targets/log/' + ymlPath[1] - cmd = 'mkdir -p ' + logPath - logStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + cmd = f'mkdir -p {logPath}' + myCmd.run(cmd, silent=True) # Start the server process cmd = f'docker exec -d {self.svrContName} /bin/bash -c "nohup iperf {self.svrOptions} > /tmp/iperf_server.log 2>&1"' - logging.info(cmd) - subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + myCmd.run(cmd) time.sleep(3) # Start the client process cmd = f'docker exec {self.cliContName} /bin/bash -c "iperf {self.cliOptions}" 2>&1 | tee {logPath}/iperf_client_{HTML.testCase_id}.log' - logging.info(cmd) - clientStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100) + clientStatus = myCmd.run(cmd, timeout=100) # Stop the server process cmd = f'docker exec {self.svrContName} /bin/bash -c "pkill iperf"' - logging.info(cmd) - subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10) + myCmd.run(cmd) time.sleep(3) serverStatusFilename = f'{logPath}/iperf_server_{HTML.testCase_id}.log' cmd = f'docker cp {self.svrContName}:/tmp/iperf_server.log {serverStatusFilename}' - logging.info(cmd) - subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30) + myCmd.run(cmd, timeout=60) + myCmd.close() # clientStatus was retrieved above. The serverStatus was # written in the background, then copied to the local machine with open(serverStatusFilename, 'r') as f: serverStatus = f.read() - (iperfStatus, msg) = AnalyzeIperf(self.cliOptions, clientStatus, serverStatus) + (iperfStatus, msg) = AnalyzeIperf(self.cliOptions, clientStatus.stdout, serverStatus) if iperfStatus: logging.info('\u001B[1m Iperf Test PASS\u001B[0m') else: @@ -1595,4 +1602,3 @@ class Containerize(): if result is None: mySSH.command('echo ' + password + ' | sudo -S iptables -P FORWARD ACCEPT', '\$', 10) mySSH.close() - diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index 8ee4a0a5e6..64074fdd6a 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -43,7 +43,7 @@ from multiprocessing import Process, Lock, SimpleQueue #----------------------------------------------------------- # OAI Testing modules #----------------------------------------------------------- -import sshconnection as SSH +import sshconnection as SSH import helpreadme as HELP import constants as CONST @@ -66,8 +66,8 @@ class EPCManagement(): self.mmeConfFile = 'mme.conf' self.yamlPath = '' self.isMagmaUsed = False - self.cfgDeploy = '--type start-mini --fqdn yes --scenario 1 --capture /tmp/oai-cn5g-v1.3.pcap' #from xml, 'mini' is default normal for docker-network.py - self.cfgUnDeploy = '--type stop-mini --fqdn yes --scenario 1' #from xml, 'mini' is default normal for docker-network.py + self.cfgDeploy = '--type start-mini --scenario 1 --capture /tmp/oai-cn5g-v1.5.pcap' #from xml, 'mini' is default normal for docker-network.py + self.cfgUnDeploy = '--type stop-mini --scenario 1' #from xml, 'mini' is default normal for docker-network.py #----------------------------------------------------------- @@ -253,18 +253,18 @@ class EPCManagement(): logging.debug('Starting OAI CN5G') mySSH.command('if [ -d ' + self.SourceCodePath + '/scripts ]; then echo ' + self.Password + ' | sudo -S rm -Rf ' + self.SourceCodePath + '/scripts ; fi', '\$', 5) mySSH.command('mkdir -p ' + self.SourceCodePath + '/scripts', '\$', 5) - mySSH.command('cd /opt/oai-cn5g-fed-v1.4/docker-compose', '\$', 5) + mySSH.command('cd /opt/oai-cn5g-fed-v1.5/docker-compose', '\$', 5) mySSH.command('python3 ./core-network.py '+self.cfgDeploy, '\$', 60) if re.search('start-mini-as-ue', self.cfgDeploy): dFile = 'docker-compose-mini-nrf-asue.yaml' else: dFile = 'docker-compose-mini-nrf.yaml' - mySSH.command('docker-compose -p 5gcn -f ' + dFile + ' ps -a', '\$', 60) + mySSH.command('docker-compose -f ' + dFile + ' ps -a', '\$', 60) if mySSH.getBefore().count('Up (healthy)') != 6: logging.error('Not all container healthy') else: logging.debug('OK --> all containers are healthy') - mySSH.command('docker-compose -p 5gcn -f ' + dFile + ' config | grep --colour=never image', '\$', 10) + mySSH.command('docker-compose -f ' + dFile + ' config | grep --colour=never image', '\$', 10) listOfImages = mySSH.getBefore() for imageLine in listOfImages.split('\\r\\n'): res1 = re.search('image: (?P[a-zA-Z0-9\-/]+):(?P[a-zA-Z0-9\-]+)', str(imageLine)) @@ -537,11 +537,11 @@ class EPCManagement(): mySSH.command('docker logs ' + c + ' > ' + self.SourceCodePath + '/logs/' + c + '.log', '\$', 5) logging.debug('Terminating OAI CN5G') - mySSH.command('cd /opt/oai-cn5g-fed-v1.4/docker-compose', '\$', 5) + mySSH.command('cd /opt/oai-cn5g-fed-v1.5/docker-compose', '\$', 5) mySSH.command('python3 ./core-network.py '+self.cfgUnDeploy, '\$', 60) mySSH.command('docker volume prune --force || true', '\$', 60) time.sleep(2) - mySSH.command('tshark -r /tmp/oai-cn5g-v1.3.pcap | egrep --colour=never "Tracking area update" ','\$', 30) + mySSH.command('tshark -r /tmp/oai-cn5g-v1.5.pcap | egrep --colour=never "Tracking area update" ','\$', 30) result = re.search('Tracking area update request', mySSH.getBefore()) if result is not None: message = 'UE requested ' + str(mySSH.getBefore().count('Tracking area update request')) + 'Tracking area update request(s)' @@ -828,7 +828,7 @@ class EPCManagement(): mySSH.command('zip mme.log.zip mme_check_run.*', '\$', 60) elif re.match('OAICN5G', self.Type, re.IGNORECASE): mySSH.command('cd ' + self.SourceCodePath + '/logs','\$', 5) - mySSH.command('cp -f /tmp/oai-cn5g-v1.3.pcap .','\$', 30) + mySSH.command('cp -f /tmp/oai-cn5g-v1.5.pcap .','\$', 30) mySSH.command('zip mme.log.zip oai-amf.log oai-nrf.log oai-cn5g*.pcap','\$', 30) mySSH.command('mv mme.log.zip ' + self.SourceCodePath + '/scripts','\$', 30) elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE): diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 322b6a5c72..438f310ca8 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -70,6 +70,7 @@ import subprocess from multiprocessing import Process, Lock, SimpleQueue logging.basicConfig( level=logging.DEBUG, + stream=sys.stdout, format="[%(asctime)s] %(levelname)8s: %(message)s" ) diff --git a/ci-scripts/xml_files/sa_cn5g_asue_closure.xml b/ci-scripts/xml_files/sa_cn5g_asue_closure.xml index b856134e36..f0448d528d 100644 --- a/ci-scripts/xml_files/sa_cn5g_asue_closure.xml +++ b/ci-scripts/xml_files/sa_cn5g_asue_closure.xml @@ -32,7 +32,7 @@ Terminate_5GCN Terminate 5G Core - --type stop-mini-as-ue --fqdn yes --scenario 1 + --type stop-mini-as-ue --scenario 1 diff --git a/ci-scripts/xml_files/sa_cn5g_asue_start.xml b/ci-scripts/xml_files/sa_cn5g_asue_start.xml index 740022b1c9..da2ae56114 100644 --- a/ci-scripts/xml_files/sa_cn5g_asue_start.xml +++ b/ci-scripts/xml_files/sa_cn5g_asue_start.xml @@ -33,7 +33,7 @@ Initialize_5GCN Initialize 5G Core - --type start-mini-as-ue --fqdn yes --scenario 1 --capture /tmp/oai-cn5g-v1.3.pcap + --type start-mini-as-ue --scenario 1 --capture /tmp/oai-cn5g-v1.5.pcap diff --git a/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml b/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml index b3e3ede92e..546211e5b3 100644 --- a/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml @@ -180,7 +180,7 @@ services: retries: 5 oai_enb: - image: oai-enb:develop + image: oaisoftwarealliance/oai-enb:develop privileged: true container_name: l2sim4g-oai-enb network_mode: "host" @@ -230,7 +230,7 @@ services: retries: 5 oai_ue1: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: l2sim4g-oai-lte-ue1 network_mode: "host" @@ -258,7 +258,7 @@ services: retries: 5 oai_ue2: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: l2sim4g-oai-lte-ue2 network_mode: "host" diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md index d134ffc824..d47c4842de 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md @@ -54,9 +54,6 @@ $ docker image tag oaisoftwarealliance/oai-spgwc:latest oai-spgwc:latest $ docker image tag oaisoftwarealliance/oai-hss:latest oai-hss:latest $ docker image tag oaisoftwarealliance/oai-spgwu-tiny:latest oai-spgwu-tiny:latest $ docker image tag oaisoftwarealliance/magma-mme:latest magma-mme:latest - -$ docker image tag oaisoftwarealliance/oai-enb:develop oai-enb:develop -$ docker image tag oaisoftwarealliance/oai-lte-ue:develop oai-lte-ue:develop ``` ```bash diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml index ab54c3ada1..18f929a6e8 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml @@ -180,7 +180,7 @@ services: retries: 5 oai_enb0: - image: oai-enb:develop + image: oaisoftwarealliance/oai-enb:develop privileged: true container_name: rfsim4g-oai-enb networks: @@ -214,7 +214,7 @@ services: retries: 5 oai_ue0: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml index dea6724926..02bc3c56f2 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: oai_enb0: - image: oai-enb:develop + image: oaisoftwarealliance/oai-enb:develop privileged: true container_name: rfsim4g-oai-enb networks: @@ -36,7 +36,7 @@ services: retries: 5 oai_ue0: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml index b24ebd367d..3f9d764f3a 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml @@ -180,7 +180,7 @@ services: retries: 5 oai_enb0: - image: oai-enb:develop + image: oaisoftwarealliance/oai-enb:develop privileged: true container_name: rfsim4g-oai-enb networks: @@ -214,7 +214,7 @@ services: retries: 5 oai_ue0: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml index ebe2b2f4a0..6cf8ee2677 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml @@ -180,7 +180,7 @@ services: retries: 5 oai_enb0: - image: oai-enb:develop + image: oaisoftwarealliance/oai-enb:develop privileged: true container_name: rfsim4g-oai-enb networks: @@ -214,7 +214,7 @@ services: retries: 5 oai_ue0: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml index 39d06f1651..f57b913daf 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: oai_enb0: - image: oai-enb:develop + image: oaisoftwarealliance/oai-enb:develop privileged: true container_name: rfsim4g-oai-enb networks: @@ -22,7 +22,7 @@ services: retries: 5 oai_ue0: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml index dc64984068..98cb6d5d53 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: oai_enb0: - image: oai-enb:develop + image: oaisoftwarealliance/oai-enb:develop privileged: true container_name: rfsim4g-oai-enb networks: @@ -22,7 +22,7 @@ services: retries: 5 oai_ue0: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml index 63c4965ddb..b3182ba23b 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml @@ -180,7 +180,7 @@ services: retries: 5 oai_enb0: - image: oai-enb:develop + image: oaisoftwarealliance/oai-enb:develop privileged: true container_name: rfsim4g-oai-enb networks: @@ -213,7 +213,7 @@ services: retries: 5 oai_ue0: - image: oai-lte-ue:develop + image: oaisoftwarealliance/oai-lte-ue:develop privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml b/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml index 5765a33351..a364a1db95 100644 --- a/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml @@ -2,27 +2,16 @@ version: '3.8' services: oai-nrf: container_name: "rfsim5g-oai-nrf" - image: oai-nrf:august-dev + image: oaisoftwarealliance/oai-nrf:v1.5.0 environment: - NRF_INTERFACE_NAME_FOR_SBI=eth0 - - NRF_INTERFACE_PORT_FOR_SBI=80 - - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - NRF_API_VERSION=v1 - - INSTANCE=0 - - PID_DIRECTORY=/var/run + - TZ=Europe/Paris networks: public_net: ipv4_address: 192.168.71.130 - volumes: - - ./nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 mysql: container_name: "rfsim5g-mysql" - image: mysql:5.7 + image: mysql:8.0 volumes: - ./oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql - ./mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh @@ -36,17 +25,15 @@ services: test: /bin/bash -c "/tmp/mysql-healthcheck.sh" interval: 10s timeout: 5s - retries: 5 + retries: 30 networks: public_net: ipv4_address: 192.168.71.131 oai-amf: container_name: "rfsim5g-oai-amf" - image: oai-amf:august-dev + image: oaisoftwarealliance/oai-amf:v1.5.0 environment: - TZ=Europe/paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - MCC=208 - MNC=99 - REGION_ID=128 @@ -62,132 +49,85 @@ services: - PLMN_SUPPORT_MCC=208 - PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_TAC=0x0001 + # Only one slice is defined (1, 0xFFFFFF). - SST_0=1 - - SD_0=0xffffff - - SST_1=1 - - SD_1=1 - AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0 + # One single SMF instance - SMF_INSTANCE_ID_0=1 - SMF_FQDN_0=oai-smf - - SMF_IPV4_ADDR_0=0.0.0.0 - - SMF_HTTP_VERSION_0=v1 + - SMF_IPV4_ADDR_0=192.168.71.133 - SELECTED_0=true - - SMF_INSTANCE_ID_1=2 - - SMF_FQDN_1=oai-smf - - SMF_IPV4_ADDR_1=0.0.0.0 - - SMF_HTTP_VERSION_1=v1 - - SELECTED_1=false + # mysql definition in AMF is mandatory in mini deployment. - MYSQL_SERVER=192.168.71.131 - MYSQL_USER=root - MYSQL_PASS=linux - MYSQL_DB=oai_db - - OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1 + # NF registration - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 + - NRF_FQDN=oai-nrf - NF_REGISTRATION=yes - SMF_SELECTION=yes - USE_FQDN_DNS=yes - - NRF_API_VERSION=v1 - - NRF_FQDN=oai-nrf - - EXTERNAL_AUSF=no - - AUSF_IPV4_ADDRESS=0.0.0.0 - - AUSF_PORT=80 - - AUSF_API_VERSION=v1 - - AUSF_FQDN=localhost + - USE_HTTP2=no depends_on: - oai-nrf - mysql - volumes: - - ./amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh" - interval: 10s - timeout: 15s - retries: 5 networks: public_net: ipv4_address: 192.168.71.132 oai-smf: container_name: "rfsim5g-oai-smf" - image: oai-smf:august-dev + image: oaisoftwarealliance/oai-smf:v1.5.0 environment: - TZ=Europe/Paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - SMF_INTERFACE_NAME_FOR_N4=eth0 - SMF_INTERFACE_NAME_FOR_SBI=eth0 - - SMF_INTERFACE_PORT_FOR_SBI=80 - - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - SMF_API_VERSION=v1 - DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100 - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4 - - AMF_IPV4_ADDRESS=0.0.0.0 - - AMF_PORT=80 - - AMF_API_VERSION=v1 + - AMF_IPV4_ADDRESS=192.168.71.132 - AMF_FQDN=oai-amf - - UDM_IPV4_ADDRESS=127.0.0.1 - - UDM_PORT=80 - - UDM_API_VERSION=v1 - - UDM_FQDN=localhost - UPF_IPV4_ADDRESS=192.168.71.134 - UPF_FQDN_0=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf - REGISTER_NRF=yes - DISCOVER_UPF=yes - USE_FQDN_DNS=yes + - USE_LOCAL_SUBSCRIPTION_INFO=yes + - UE_MTU=1500 + # Only one slice is defined (1, 0xFFFFFF) - DNN_NI0=oai - TYPE0=IPv4 - DNN_RANGE0=12.1.1.2 - 12.1.1.127 - NSSAI_SST0=1 - - NSSAI_SD0=0xFFFFFF - SESSION_AMBR_UL0=200Mbps - SESSION_AMBR_DL0=400Mbps - - DNN_NI2=oai.ipv4 + - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1 + - ENABLE_USAGE_REPORTING=no depends_on: - oai-nrf - oai-amf - volumes: - - ./smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.133 oai-spgwu: container_name: "rfsim5g-oai-spgwu" - image: oai-spgwu-tiny:august-dev + image: oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 environment: - TZ=Europe/Paris - - PID_DIRECTORY=/var/run - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0 - SGW_INTERFACE_NAME_FOR_SX=eth0 - PGW_INTERFACE_NAME_FOR_SGI=eth0 - NETWORK_UE_NAT_OPTION=yes - NETWORK_UE_IP=12.1.1.0/24 - - SPGWC0_IP_ADDRESS=192.168.71.133 - - BYPASS_UL_PFCP_RULES=no - - MCC=208 - - MNC=99 - - MNC03=099 - - TAC=1 - - GTP_EXTENSION_HEADER_PRESENT=yes - - GW_ID=1 - - REALM=openairinterface.org - ENABLE_5G_FEATURES=yes - REGISTER_NRF=yes - USE_FQDN_NRF=yes - UPF_FQDN_5G=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf + # Only one slice is defined (1, 0xFFFFFF) - NSSAI_SST_0=1 - NSSAI_SD_0=0xffffff - DNN_0=oai @@ -200,24 +140,16 @@ services: cap_drop: - ALL privileged: true - volumes: - - ./spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.134 traffic_net: ipv4_address: 192.168.72.134 oai-ext-dn: - image: ubuntu:bionic privileged: true container_name: rfsim5g-oai-ext-dn + image: oaisoftwarealliance/trf-gen-cn5g:latest entrypoint: /bin/bash -c \ - "apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\ "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ "ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity" depends_on: @@ -231,7 +163,7 @@ services: timeout: 5s retries: 5 oai-cu: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-cu environment: @@ -265,7 +197,7 @@ services: timeout: 5s retries: 5 oai-du: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-du environment: @@ -299,7 +231,7 @@ services: timeout: 5s retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: diff --git a/ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml b/ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml index 695a05f2b0..42d67b0bdc 100644 --- a/ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml @@ -2,27 +2,16 @@ version: '3.8' services: oai-nrf: container_name: "rfsim5g-oai-nrf" - image: oai-nrf:august-dev + image: oaisoftwarealliance/oai-nrf:v1.5.0 environment: - NRF_INTERFACE_NAME_FOR_SBI=eth0 - - NRF_INTERFACE_PORT_FOR_SBI=80 - - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - NRF_API_VERSION=v1 - - INSTANCE=0 - - PID_DIRECTORY=/var/run + - TZ=Europe/Paris networks: public_net: ipv4_address: 192.168.71.130 - volumes: - - ./nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 mysql: container_name: "rfsim5g-mysql" - image: mysql:5.7 + image: mysql:8.0 volumes: - ./oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql - ./mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh @@ -36,17 +25,15 @@ services: test: /bin/bash -c "/tmp/mysql-healthcheck.sh" interval: 10s timeout: 5s - retries: 5 + retries: 30 networks: public_net: ipv4_address: 192.168.71.131 oai-amf: container_name: "rfsim5g-oai-amf" - image: oai-amf:august-dev + image: oaisoftwarealliance/oai-amf:v1.5.0 environment: - TZ=Europe/paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - MCC=208 - MNC=99 - REGION_ID=128 @@ -62,132 +49,85 @@ services: - PLMN_SUPPORT_MCC=208 - PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_TAC=0x0001 + # Only one slice is defined (1, 0xFFFFFF). - SST_0=1 - - SD_0=0xffffff - - SST_1=1 - - SD_1=1 - AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0 + # One single SMF instance - SMF_INSTANCE_ID_0=1 - SMF_FQDN_0=oai-smf - - SMF_IPV4_ADDR_0=0.0.0.0 - - SMF_HTTP_VERSION_0=v1 + - SMF_IPV4_ADDR_0=192.168.71.133 - SELECTED_0=true - - SMF_INSTANCE_ID_1=2 - - SMF_FQDN_1=oai-smf - - SMF_IPV4_ADDR_1=0.0.0.0 - - SMF_HTTP_VERSION_1=v1 - - SELECTED_1=false + # mysql definition in AMF is mandatory in mini deployment. - MYSQL_SERVER=192.168.71.131 - MYSQL_USER=root - MYSQL_PASS=linux - MYSQL_DB=oai_db - - OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1 + # NF registration - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 + - NRF_FQDN=oai-nrf - NF_REGISTRATION=yes - SMF_SELECTION=yes - USE_FQDN_DNS=yes - - NRF_API_VERSION=v1 - - NRF_FQDN=oai-nrf - - EXTERNAL_AUSF=no - - AUSF_IPV4_ADDRESS=0.0.0.0 - - AUSF_PORT=80 - - AUSF_API_VERSION=v1 - - AUSF_FQDN=localhost + - USE_HTTP2=no depends_on: - oai-nrf - mysql - volumes: - - ./amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh" - interval: 10s - timeout: 15s - retries: 5 networks: public_net: ipv4_address: 192.168.71.132 oai-smf: container_name: "rfsim5g-oai-smf" - image: oai-smf:august-dev + image: oaisoftwarealliance/oai-smf:v1.5.0 environment: - TZ=Europe/Paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - SMF_INTERFACE_NAME_FOR_N4=eth0 - SMF_INTERFACE_NAME_FOR_SBI=eth0 - - SMF_INTERFACE_PORT_FOR_SBI=80 - - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - SMF_API_VERSION=v1 - DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100 - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4 - - AMF_IPV4_ADDRESS=0.0.0.0 - - AMF_PORT=80 - - AMF_API_VERSION=v1 + - AMF_IPV4_ADDRESS=192.168.71.132 - AMF_FQDN=oai-amf - - UDM_IPV4_ADDRESS=127.0.0.1 - - UDM_PORT=80 - - UDM_API_VERSION=v1 - - UDM_FQDN=localhost - UPF_IPV4_ADDRESS=192.168.71.134 - UPF_FQDN_0=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf - REGISTER_NRF=yes - DISCOVER_UPF=yes - USE_FQDN_DNS=yes + - USE_LOCAL_SUBSCRIPTION_INFO=yes + - UE_MTU=1500 + # Only one slice is defined (1, 0xFFFFFF) - DNN_NI0=oai - TYPE0=IPv4 - DNN_RANGE0=12.1.1.2 - 12.1.1.127 - NSSAI_SST0=1 - - NSSAI_SD0=0xFFFFFF - SESSION_AMBR_UL0=200Mbps - SESSION_AMBR_DL0=400Mbps - - DNN_NI2=oai.ipv4 + - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1 + - ENABLE_USAGE_REPORTING=no depends_on: - oai-nrf - oai-amf - volumes: - - ./smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.133 oai-spgwu: container_name: "rfsim5g-oai-spgwu" - image: oai-spgwu-tiny:august-dev + image: oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 environment: - TZ=Europe/Paris - - PID_DIRECTORY=/var/run - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0 - SGW_INTERFACE_NAME_FOR_SX=eth0 - PGW_INTERFACE_NAME_FOR_SGI=eth0 - NETWORK_UE_NAT_OPTION=yes - NETWORK_UE_IP=12.1.1.0/24 - - SPGWC0_IP_ADDRESS=192.168.71.133 - - BYPASS_UL_PFCP_RULES=no - - MCC=208 - - MNC=99 - - MNC03=099 - - TAC=1 - - GTP_EXTENSION_HEADER_PRESENT=yes - - GW_ID=1 - - REALM=openairinterface.org - ENABLE_5G_FEATURES=yes - REGISTER_NRF=yes - USE_FQDN_NRF=yes - UPF_FQDN_5G=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf + # Only one slice is defined (1, 0xFFFFFF) - NSSAI_SST_0=1 - NSSAI_SD_0=0xffffff - DNN_0=oai @@ -200,24 +140,16 @@ services: cap_drop: - ALL privileged: true - volumes: - - ./spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.134 traffic_net: ipv4_address: 192.168.72.134 oai-ext-dn: - image: ubuntu:bionic privileged: true container_name: rfsim5g-oai-ext-dn + image: oaisoftwarealliance/trf-gen-cn5g:latest entrypoint: /bin/bash -c \ - "apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\ "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ "ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity" depends_on: @@ -231,7 +163,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb environment: @@ -260,7 +192,7 @@ services: timeout: 5s retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: diff --git a/ci-scripts/yaml_files/5g_l2sim_tdd/README.md b/ci-scripts/yaml_files/5g_l2sim_tdd/README.md index 9578d037ca..eb8e58d415 100644 --- a/ci-scripts/yaml_files/5g_l2sim_tdd/README.md +++ b/ci-scripts/yaml_files/5g_l2sim_tdd/README.md @@ -32,28 +32,22 @@ Password: Now pull images. ```bash -$ docker pull mysql:5.7 -$ docker pull oaisoftwarealliance/oai-amf:develop -$ docker pull oaisoftwarealliance/oai-nrf:develop -$ docker pull oaisoftwarealliance/oai-smf:develop -$ docker pull oaisoftwarealliance/oai-spgwu-tiny:develop +$ docker pull mysql:8.0 +$ docker pull oaisoftwarealliance/oai-amf:v1.5.0 +$ docker pull oaisoftwarealliance/oai-nrf:v1.5.0 +$ docker pull oaisoftwarealliance/oai-smf:v1.5.0 +$ docker pull oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 +$ docker pull oaisoftwarealliance/trf-gen-cn5g:latest $ docker pull oaisoftwarealliance/oai-gnb:develop $ docker pull oaisoftwarealliance/oai-nr-ue:develop -$ docker pull oaisoftwarealliance/proxy:latest +$ docker pull oaisoftwarealliance/proxy:develop ``` And **re-tag** them for tutorials' docker-compose file to work. ```bash -$ docker image tag oaisoftwarealliance/oai-amf:latest oai-amf:august-dev -$ docker image tag oaisoftwarealliance/oai-nrf:latest oai-nrf:august-dev -$ docker image tag oaisoftwarealliance/oai-smf:latest oai-smf:august-dev -$ docker image tag oaisoftwarealliance/oai-spgwu-tiny:latest oai-spgwu-tiny:august-dev - -$ docker image tag oaisoftwarealliance/oai-gnb:develop oai-gnb:develop -$ docker image tag oaisoftwarealliance/oai-nr-ue:develop oai-nr-ue:develop -$ docker image tag oaisoftwarealliance/proxy:latest oai-lte-multi-ue-proxy:latest +$ docker image tag oaisoftwarealliance/proxy:develop oai-lte-multi-ue-proxy:latest ``` ```bash diff --git a/ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml b/ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml index 83b6ce50ae..3af3bc60cf 100644 --- a/ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml @@ -2,27 +2,16 @@ version: '3.8' services: oai-nrf: container_name: "l2sim-oai-nrf" - image: oai-nrf:august-dev + image: oaisoftwarealliance/oai-nrf:v1.5.0 environment: - NRF_INTERFACE_NAME_FOR_SBI=eth0 - - NRF_INTERFACE_PORT_FOR_SBI=80 - - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - NRF_API_VERSION=v1 - - INSTANCE=0 - - PID_DIRECTORY=/var/run + - TZ=Europe/Paris networks: public_net: ipv4_address: 192.168.71.130 - volumes: - - ../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 mysql: container_name: "l2sim-mysql" - image: mysql:5.7 + image: mysql:8.0 volumes: - ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql - ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh @@ -36,17 +25,15 @@ services: test: /bin/bash -c "/tmp/mysql-healthcheck.sh" interval: 10s timeout: 5s - retries: 5 + retries: 30 networks: public_net: ipv4_address: 192.168.71.131 oai-amf: container_name: "l2sim-oai-amf" - image: oai-amf:august-dev + image: oaisoftwarealliance/oai-amf:v1.5.0 environment: - TZ=Europe/paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - MCC=208 - MNC=99 - REGION_ID=128 @@ -62,132 +49,85 @@ services: - PLMN_SUPPORT_MCC=208 - PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_TAC=0x0001 + # Only one slice is defined (1, 0xFFFFFF). - SST_0=1 - - SD_0=0xffffff - - SST_1=1 - - SD_1=1 - AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0 + # One single SMF instance - SMF_INSTANCE_ID_0=1 - SMF_FQDN_0=oai-smf - - SMF_IPV4_ADDR_0=0.0.0.0 - - SMF_HTTP_VERSION_0=v1 + - SMF_IPV4_ADDR_0=192.168.71.133 - SELECTED_0=true - - SMF_INSTANCE_ID_1=2 - - SMF_FQDN_1=oai-smf - - SMF_IPV4_ADDR_1=0.0.0.0 - - SMF_HTTP_VERSION_1=v1 - - SELECTED_1=false + # mysql definition in AMF is mandatory in mini deployment. - MYSQL_SERVER=192.168.71.131 - MYSQL_USER=root - MYSQL_PASS=linux - MYSQL_DB=oai_db - - OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1 + # NF registration - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 + - NRF_FQDN=oai-nrf - NF_REGISTRATION=yes - SMF_SELECTION=yes - USE_FQDN_DNS=yes - - NRF_API_VERSION=v1 - - NRF_FQDN=oai-nrf - - EXTERNAL_AUSF=no - - AUSF_IPV4_ADDRESS=0.0.0.0 - - AUSF_PORT=80 - - AUSF_API_VERSION=v1 - - AUSF_FQDN=localhost + - USE_HTTP2=no depends_on: - oai-nrf - mysql - volumes: - - ../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh" - interval: 10s - timeout: 15s - retries: 5 networks: public_net: ipv4_address: 192.168.71.132 oai-smf: container_name: "l2sim-oai-smf" - image: oai-smf:august-dev + image: oaisoftwarealliance/oai-smf:v1.5.0 environment: - TZ=Europe/Paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - SMF_INTERFACE_NAME_FOR_N4=eth0 - SMF_INTERFACE_NAME_FOR_SBI=eth0 - - SMF_INTERFACE_PORT_FOR_SBI=80 - - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - SMF_API_VERSION=v1 - DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100 - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4 - - AMF_IPV4_ADDRESS=0.0.0.0 - - AMF_PORT=80 - - AMF_API_VERSION=v1 + - AMF_IPV4_ADDRESS=192.168.71.132 - AMF_FQDN=oai-amf - - UDM_IPV4_ADDRESS=127.0.0.1 - - UDM_PORT=80 - - UDM_API_VERSION=v1 - - UDM_FQDN=localhost - UPF_IPV4_ADDRESS=192.168.71.134 - UPF_FQDN_0=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf - REGISTER_NRF=yes - DISCOVER_UPF=yes - USE_FQDN_DNS=yes + - USE_LOCAL_SUBSCRIPTION_INFO=yes + - UE_MTU=1500 + # Only one slice is defined (1, 0xFFFFFF) - DNN_NI0=oai - TYPE0=IPv4 - DNN_RANGE0=12.1.1.2 - 12.1.1.127 - NSSAI_SST0=1 - - NSSAI_SD0=0xFFFFFF - SESSION_AMBR_UL0=200Mbps - SESSION_AMBR_DL0=400Mbps - - DNN_NI2=oai.ipv4 + - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1 + - ENABLE_USAGE_REPORTING=no depends_on: - oai-nrf - oai-amf - volumes: - - ../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.133 oai-spgwu: container_name: "l2sim-oai-spgwu" - image: oai-spgwu-tiny:august-dev + image: oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 environment: - TZ=Europe/Paris - - PID_DIRECTORY=/var/run - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0 - SGW_INTERFACE_NAME_FOR_SX=eth0 - PGW_INTERFACE_NAME_FOR_SGI=eth0 - NETWORK_UE_NAT_OPTION=yes - NETWORK_UE_IP=12.1.1.0/24 - - SPGWC0_IP_ADDRESS=192.168.71.133 - - BYPASS_UL_PFCP_RULES=no - - MCC=208 - - MNC=99 - - MNC03=099 - - TAC=1 - - GTP_EXTENSION_HEADER_PRESENT=yes - - GW_ID=1 - - REALM=openairinterface.org - ENABLE_5G_FEATURES=yes - REGISTER_NRF=yes - USE_FQDN_NRF=yes - UPF_FQDN_5G=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf + # Only one slice is defined (1, 0xFFFFFF) - NSSAI_SST_0=1 - NSSAI_SD_0=0xffffff - DNN_0=oai @@ -200,24 +140,17 @@ services: cap_drop: - ALL privileged: true - volumes: - - ../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.134 traffic_net: ipv4_address: 192.168.72.134 oai-ext-dn: - image: ubuntu:bionic privileged: true container_name: "l2sim-oai-ext-dn" + image: oaisoftwarealliance/trf-gen-cn5g:latest entrypoint: /bin/bash -c \ - "apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\ + "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ "ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity" depends_on: - oai-spgwu @@ -230,7 +163,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: "l2sim-oai-gnb" network_mode: "host" @@ -278,7 +211,7 @@ services: retries: 5 oai-nr-ue0: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: "l2sim-oai-nr-ue0" network_mode: "host" diff --git a/ci-scripts/yaml_files/5g_rfsimulator/README.md b/ci-scripts/yaml_files/5g_rfsimulator/README.md index f75d3721da..1e2cb638eb 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator/README.md +++ b/ci-scripts/yaml_files/5g_rfsimulator/README.md @@ -14,7 +14,7 @@ This page is only valid for an `Ubuntu18` host. -**NOTE: this version (2022-01-27) has been updated for the `v1.3.0` version of the `OAI 5G CN`.** +**NOTE: this version (2023-01-27) has been updated for the `v1.5.0` version of the `OAI 5G CN`.** **Table of Contents** @@ -36,35 +36,24 @@ Password: Now pull images. ```bash -$ docker pull mysql:5.7 -$ docker pull oaisoftwarealliance/oai-amf:develop -$ docker pull oaisoftwarealliance/oai-nrf:develop -$ docker pull oaisoftwarealliance/oai-smf:develop -$ docker pull oaisoftwarealliance/oai-spgwu-tiny:develop +$ docker pull mysql:8.0 +$ docker pull oaisoftwarealliance/oai-amf:v1.5.0 +$ docker pull oaisoftwarealliance/oai-nrf:v1.5.0 +$ docker pull oaisoftwarealliance/oai-smf:v1.5.0 +$ docker pull oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 +$ docker pull oaisoftwarealliance/trf-gen-cn5g:latest $ docker pull oaisoftwarealliance/oai-gnb:develop $ docker pull oaisoftwarealliance/oai-nr-ue:develop ``` -And **re-tag** them for tutorials' docker-compose file to work. - -```bash -$ docker image tag oaisoftwarealliance/oai-amf:latest oai-amf:august-dev -$ docker image tag oaisoftwarealliance/oai-nrf:latest oai-nrf:august-dev -$ docker image tag oaisoftwarealliance/oai-smf:latest oai-smf:august-dev -$ docker image tag oaisoftwarealliance/oai-spgwu-tiny:latest oai-spgwu-tiny:august-dev - -$ docker image tag oaisoftwarealliance/oai-gnb:develop oai-gnb:develop -$ docker image tag oaisoftwarealliance/oai-nr-ue:develop oai-nr-ue:develop -``` - ```bash $ docker logout ``` -**CAUTION: 2022/01/27 with the release `v1.3.0` of the `CN5G`, the previous version was not compatible any-more.** +**CAUTION: 2023/01/27 with the release `v1.5.0` of the `CN5G`, the previous version was not compatible any-more.** -**This new version is working only with the `v1.3.0` of the `CN5G`.** +**This new version is working only with the `v1.5.0` of the `CN5G`.** # 2. Deploy containers # diff --git a/ci-scripts/yaml_files/5g_rfsimulator/amf-healthcheck.sh b/ci-scripts/yaml_files/5g_rfsimulator/amf-healthcheck.sh deleted file mode 100755 index 8bfdee2aac..0000000000 --- a/ci-scripts/yaml_files/5g_rfsimulator/amf-healthcheck.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -set -eo pipefail - -STATUS=0 -AMF_PORT_FOR_NGAP=38412 -AMF_PORT_FOR_N11_HTTP=80 -AMF_IP_NGAP_INTERFACE=$(ifconfig $AMF_INTERFACE_NAME_FOR_NGAP | grep inet | awk {'print $2'}) -AMF_IP_N11_INTERFACE=$(ifconfig $AMF_INTERFACE_NAME_FOR_N11 | grep inet | awk {'print $2'}) -N2_PORT_STATUS=$(netstat -Snpl | grep -o "$AMF_IP_NGAP_INTERFACE:$AMF_PORT_FOR_NGAP") -N11_PORT_STATUS=$(netstat -tnpl | grep -o "$AMF_IP_N11_INTERFACE:$AMF_PORT_FOR_N11_HTTP") -#Check if entrypoint properly configured the conf file and no parameter is unset (optional) -NB_UNREPLACED_AT=`cat /openair-amf/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true` - -if [ $NB_UNREPLACED_AT -ne 0 ]; then - STATUS=1 - echo "Healthcheck error: configuration file is not configured properly" -fi - -if [[ -z $N2_PORT_STATUS ]]; then - STATUS=1 - echo "Healthcheck error: N2 SCTP port $AMF_PORT_FOR_NGAP is not listening" -fi - -if [[ -z $N11_PORT_STATUS ]]; then - STATUS=1 - echo "Healthcheck error: N11/SBI TCP/HTTP port $AMF_PORT_FOR_N11_HTTP is not listening" -fi - -#host="${MYSQL_SERVER}" -#user="${MYSQL_USER:-root}" -#export MYSQL_PWD="${MYSQL_PASS}" - -#args=( -# -h"$host" -# -u"$user" -# --silent -#) - -#if ! command -v mysql &> /dev/null; then -# echo "Installing mysql command" -# apt update -# apt-get -y install mysql-client -#else -# if select="$(echo 'SELECT 1' | mysql "${args[@]}")" && [ "$select" = '1' ]; then -# database_check=$(mysql -h$host -u$user -D oai_db --silent -e "SELECT * FROM users;") -# if [[ -z $database_check ]]; then -# echo "Healthcheck error: oai_db not populated" -# STATUS=1 -# fi -# STATUS=0 -# else -# echo "Healthcheck error: Mysql port inactive" -# STATUS=1 -# fi -#fi - -exit $STATUS diff --git a/ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml index 107ec626e2..bc271e0643 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml @@ -2,27 +2,16 @@ version: '3.8' services: oai-nrf: container_name: "rfsim5g-oai-nrf" - image: oai-nrf:august-dev + image: oaisoftwarealliance/oai-nrf:v1.5.0 environment: - NRF_INTERFACE_NAME_FOR_SBI=eth0 - - NRF_INTERFACE_PORT_FOR_SBI=80 - - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - NRF_API_VERSION=v1 - - INSTANCE=0 - - PID_DIRECTORY=/var/run + - TZ=Europe/Paris networks: public_net: ipv4_address: 192.168.71.130 - volumes: - - ./nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 mysql: container_name: "rfsim5g-mysql" - image: mysql:5.7 + image: mysql:8.0 volumes: - ./oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql - ./mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh @@ -36,17 +25,15 @@ services: test: /bin/bash -c "/tmp/mysql-healthcheck.sh" interval: 10s timeout: 5s - retries: 5 + retries: 30 networks: public_net: ipv4_address: 192.168.71.131 oai-amf: container_name: "rfsim5g-oai-amf" - image: oai-amf:august-dev + image: oaisoftwarealliance/oai-amf:v1.5.0 environment: - TZ=Europe/paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - MCC=208 - MNC=99 - REGION_ID=128 @@ -62,132 +49,85 @@ services: - PLMN_SUPPORT_MCC=208 - PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_TAC=0x0001 + # Only one slice is defined (1, 0xFFFFFF). - SST_0=1 - - SD_0=0xffffff - - SST_1=1 - - SD_1=1 - AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0 + # One single SMF instance - SMF_INSTANCE_ID_0=1 - SMF_FQDN_0=oai-smf - - SMF_IPV4_ADDR_0=0.0.0.0 - - SMF_HTTP_VERSION_0=v1 + - SMF_IPV4_ADDR_0=192.168.71.133 - SELECTED_0=true - - SMF_INSTANCE_ID_1=2 - - SMF_FQDN_1=oai-smf - - SMF_IPV4_ADDR_1=0.0.0.0 - - SMF_HTTP_VERSION_1=v1 - - SELECTED_1=false + # mysql definition in AMF is mandatory in mini deployment. - MYSQL_SERVER=192.168.71.131 - MYSQL_USER=root - MYSQL_PASS=linux - MYSQL_DB=oai_db - - OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1 + # NF registration - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 + - NRF_FQDN=oai-nrf - NF_REGISTRATION=yes - SMF_SELECTION=yes - USE_FQDN_DNS=yes - - NRF_API_VERSION=v1 - - NRF_FQDN=oai-nrf - - EXTERNAL_AUSF=no - - AUSF_IPV4_ADDRESS=0.0.0.0 - - AUSF_PORT=80 - - AUSF_API_VERSION=v1 - - AUSF_FQDN=localhost + - USE_HTTP2=no depends_on: - oai-nrf - mysql - volumes: - - ./amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh" - interval: 10s - timeout: 15s - retries: 5 networks: public_net: ipv4_address: 192.168.71.132 oai-smf: container_name: "rfsim5g-oai-smf" - image: oai-smf:august-dev + image: oaisoftwarealliance/oai-smf:v1.5.0 environment: - TZ=Europe/Paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - SMF_INTERFACE_NAME_FOR_N4=eth0 - SMF_INTERFACE_NAME_FOR_SBI=eth0 - - SMF_INTERFACE_PORT_FOR_SBI=80 - - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - SMF_API_VERSION=v1 - DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100 - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4 - - AMF_IPV4_ADDRESS=0.0.0.0 - - AMF_PORT=80 - - AMF_API_VERSION=v1 + - AMF_IPV4_ADDRESS=192.168.71.132 - AMF_FQDN=oai-amf - - UDM_IPV4_ADDRESS=127.0.0.1 - - UDM_PORT=80 - - UDM_API_VERSION=v1 - - UDM_FQDN=localhost - UPF_IPV4_ADDRESS=192.168.71.134 - UPF_FQDN_0=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf - REGISTER_NRF=yes - DISCOVER_UPF=yes - USE_FQDN_DNS=yes + - USE_LOCAL_SUBSCRIPTION_INFO=yes + - UE_MTU=1500 + # Only one slice is defined (1, 0xFFFFFF) - DNN_NI0=oai - TYPE0=IPv4 - DNN_RANGE0=12.1.1.2 - 12.1.1.127 - NSSAI_SST0=1 - - NSSAI_SD0=0xFFFFFF - SESSION_AMBR_UL0=200Mbps - SESSION_AMBR_DL0=400Mbps - - DNN_NI2=oai.ipv4 + - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1 + - ENABLE_USAGE_REPORTING=no depends_on: - oai-nrf - oai-amf - volumes: - - ./smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.133 oai-spgwu: container_name: "rfsim5g-oai-spgwu" - image: oai-spgwu-tiny:august-dev + image: oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 environment: - TZ=Europe/Paris - - PID_DIRECTORY=/var/run - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0 - SGW_INTERFACE_NAME_FOR_SX=eth0 - PGW_INTERFACE_NAME_FOR_SGI=eth0 - NETWORK_UE_NAT_OPTION=yes - NETWORK_UE_IP=12.1.1.0/24 - - SPGWC0_IP_ADDRESS=192.168.71.133 - - BYPASS_UL_PFCP_RULES=no - - MCC=208 - - MNC=99 - - MNC03=099 - - TAC=1 - - GTP_EXTENSION_HEADER_PRESENT=yes - - GW_ID=1 - - REALM=openairinterface.org - ENABLE_5G_FEATURES=yes - REGISTER_NRF=yes - USE_FQDN_NRF=yes - UPF_FQDN_5G=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf + # Only one slice is defined (1, 0xFFFFFF) - NSSAI_SST_0=1 - NSSAI_SD_0=0xffffff - DNN_0=oai @@ -200,24 +140,16 @@ services: cap_drop: - ALL privileged: true - volumes: - - ./spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.134 traffic_net: ipv4_address: 192.168.72.134 oai-ext-dn: - image: ubuntu:bionic privileged: true container_name: rfsim5g-oai-ext-dn + image: oaisoftwarealliance/trf-gen-cn5g:latest entrypoint: /bin/bash -c \ - "apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\ "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ "ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity" depends_on: @@ -231,10 +163,10 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb - environment: + environment: RFSIMULATOR: server USE_SA_TDD_MONO: 'yes' GNB_NAME: gnb-rfsim @@ -261,7 +193,7 @@ services: timeout: 5s retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: @@ -284,7 +216,7 @@ services: retries: 5 oai-nr-ue2: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue2 environment: diff --git a/ci-scripts/yaml_files/5g_rfsimulator/nrf-healthcheck.sh b/ci-scripts/yaml_files/5g_rfsimulator/nrf-healthcheck.sh deleted file mode 100755 index 3479c092e8..0000000000 --- a/ci-scripts/yaml_files/5g_rfsimulator/nrf-healthcheck.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -set -eo pipefail - -STATUS=0 -NRF_IP_SBI_INTERFACE=$(ifconfig $NRF_INTERFACE_NAME_FOR_SBI | grep inet | awk {'print $2'}) -NRF_SBI_PORT_STATUS=$(netstat -tnpl | grep -o "$NRF_IP_SBI_INTERFACE:$NRF_INTERFACE_PORT_FOR_SBI") -#Check if entrypoint properly configured the conf file and no parameter is unset(optional) -NB_UNREPLACED_AT=`cat /openair-nrf/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true` - -if [ $NB_UNREPLACED_AT -ne 0 ]; then - STATUS=1 - echo "Healthcheck error: UNHEALTHY configuration file is not configured properly" -fi - -if [[ -z $NRF_SBI_PORT_STATUS ]]; then - STATUS=1 - echo "Healthcheck error: UNHEALTHY SBI TCP/HTTP port $NRF_INTERFACE_PORT_FOR_SBI is not listening." -fi - -exit $STATUS \ No newline at end of file diff --git a/ci-scripts/yaml_files/5g_rfsimulator/smf-healthcheck.sh b/ci-scripts/yaml_files/5g_rfsimulator/smf-healthcheck.sh deleted file mode 100755 index d9ff7608e8..0000000000 --- a/ci-scripts/yaml_files/5g_rfsimulator/smf-healthcheck.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -set -eo pipefail - -STATUS=0 -SMF_IP_SBI_INTERFACE=$(ifconfig $SMF_INTERFACE_NAME_FOR_SBI | grep inet | awk {'print $2'}) -SMF_SBI_PORT_STATUS=$(netstat -tnpl | grep -o "$SMF_IP_SBI_INTERFACE:$SMF_INTERFACE_PORT_FOR_SBI") - -#Check if entrypoint properly configured the conf file and no parameter is unset(optional) -#NB_UNREPLACED_AT=`cat /openair-smf/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true` - -#if [ $NB_UNREPLACED_AT -ne 0 ]; then -# STATUS=-1 -# echo "Healthcheck error: UNHEALTHY configuration file is not configured properly" -#fi -# -if [[ -z $SMF_SBI_PORT_STATUS ]]; then - STATUS=-1 - echo "Healthcheck error: UNHEALTHY SBI TCP/HTTP port $SMF_INTERFACE_PORT_FOR_SBI is not listening." -fi - -exit $STATUS diff --git a/ci-scripts/yaml_files/5g_rfsimulator/spgwu-healthcheck.sh b/ci-scripts/yaml_files/5g_rfsimulator/spgwu-healthcheck.sh deleted file mode 100755 index 0e3b67ee7e..0000000000 --- a/ci-scripts/yaml_files/5g_rfsimulator/spgwu-healthcheck.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -set -eo pipefail - -STATUS=0 -SGW_PORT_FOR_S1U_S12_S4_UP=2152 -SGW_PORT_FOR_SX=8805 -SGW_IP_S1U_INTERFACE=$(ifconfig $SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP | grep inet | awk {'print $2'}) -SGW_IP_SX_INTERFACE=$(ifconfig $SGW_INTERFACE_NAME_FOR_SX | grep inet | awk {'print $2'}) -S1U_S12_S4_UP_PORT_STATUS=$(netstat -unpl | grep -o "$SGW_IP_S1U_INTERFACE:$SGW_PORT_FOR_S1U_S12_S4_UP") -SX_PORT_STATUS=$(netstat -unpl | grep -o "$SGW_IP_SX_INTERFACE:$SGW_PORT_FOR_SX") -#Check if entrypoint properly configured the conf file and no parameter is unset (optional) -NB_UNREPLACED_AT=`cat /openair-spgwu/etc/*.conf | grep -v contact@openairinterface.org | grep -c @ || true` -if [ $NB_UNREPLACED_AT -ne 0 ]; then - STATUS=1 - echo "Healthcheck error: UNHEALTHY configuration file is not configured properly" -fi - -if [[ -z $S1U_S12_S4_UP_PORT_STATUS ]]; then - STATUS=1 - echo "Healthcheck error: UNHEALTHY S1U port $SGW_PORT_FOR_S1U_S12_S4_UP is not listening." -fi - -if [[ -z $SX_PORT_STATUS ]]; then - STATUS=1 - echo "Healthcheck error: UNHEALTHY SX port $SGW_PORT_FOR_SX is not listening." -fi - -exit $STATUS \ No newline at end of file diff --git a/ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml index 683c6bd9e6..a298c21748 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml @@ -2,28 +2,16 @@ version: '3.8' services: oai-nrf: container_name: "rfsim5g-oai-nrf" - image: oai-nrf:august-dev + image: oaisoftwarealliance/oai-nrf:v1.5.0 environment: - NRF_INTERFACE_NAME_FOR_SBI=eth0 - - NRF_INTERFACE_PORT_FOR_SBI=80 - - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - NRF_API_VERSION=v1 - - INSTANCE=0 - - PID_DIRECTORY=/var/run + - TZ=Europe/Paris networks: public_net: ipv4_address: 192.168.71.130 - volumes: - - ../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 - mysql: container_name: "rfsim5g-mysql" - image: mysql:5.7 + image: mysql:8.0 volumes: - ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql - ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh @@ -37,18 +25,15 @@ services: test: /bin/bash -c "/tmp/mysql-healthcheck.sh" interval: 10s timeout: 5s - retries: 5 + retries: 30 networks: public_net: ipv4_address: 192.168.71.131 - oai-amf: container_name: "rfsim5g-oai-amf" - image: oai-amf:august-dev + image: oaisoftwarealliance/oai-amf:v1.5.0 environment: - TZ=Europe/paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - MCC=208 - MNC=99 - REGION_ID=128 @@ -64,134 +49,85 @@ services: - PLMN_SUPPORT_MCC=208 - PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_TAC=0x0001 + # Only one slice is defined (1, 0xFFFFFF). - SST_0=1 - - SD_0=0xffffff - - SST_1=1 - - SD_1=1 - AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0 + # One single SMF instance - SMF_INSTANCE_ID_0=1 - SMF_FQDN_0=oai-smf - - SMF_IPV4_ADDR_0=0.0.0.0 - - SMF_HTTP_VERSION_0=v1 + - SMF_IPV4_ADDR_0=192.168.71.133 - SELECTED_0=true - - SMF_INSTANCE_ID_1=2 - - SMF_FQDN_1=oai-smf - - SMF_IPV4_ADDR_1=0.0.0.0 - - SMF_HTTP_VERSION_1=v1 - - SELECTED_1=false + # mysql definition in AMF is mandatory in mini deployment. - MYSQL_SERVER=192.168.71.131 - MYSQL_USER=root - MYSQL_PASS=linux - MYSQL_DB=oai_db - - OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1 + # NF registration - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 + - NRF_FQDN=oai-nrf - NF_REGISTRATION=yes - SMF_SELECTION=yes - USE_FQDN_DNS=yes - - NRF_API_VERSION=v1 - - NRF_FQDN=oai-nrf - - EXTERNAL_AUSF=no - - AUSF_IPV4_ADDRESS=0.0.0.0 - - AUSF_PORT=80 - - AUSF_API_VERSION=v1 - - AUSF_FQDN=localhost + - USE_HTTP2=no depends_on: - oai-nrf - mysql - volumes: - - ../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh" - interval: 10s - timeout: 15s - retries: 5 networks: public_net: ipv4_address: 192.168.71.132 - oai-smf: container_name: "rfsim5g-oai-smf" - image: oai-smf:august-dev + image: oaisoftwarealliance/oai-smf:v1.5.0 environment: - TZ=Europe/Paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - SMF_INTERFACE_NAME_FOR_N4=eth0 - SMF_INTERFACE_NAME_FOR_SBI=eth0 - - SMF_INTERFACE_PORT_FOR_SBI=80 - - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - SMF_API_VERSION=v1 - DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100 - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4 - - AMF_IPV4_ADDRESS=0.0.0.0 - - AMF_PORT=80 - - AMF_API_VERSION=v1 + - AMF_IPV4_ADDRESS=192.168.71.132 - AMF_FQDN=oai-amf - - UDM_IPV4_ADDRESS=127.0.0.1 - - UDM_PORT=80 - - UDM_API_VERSION=v1 - - UDM_FQDN=localhost - UPF_IPV4_ADDRESS=192.168.71.134 - UPF_FQDN_0=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf - REGISTER_NRF=yes - DISCOVER_UPF=yes - USE_FQDN_DNS=yes + - USE_LOCAL_SUBSCRIPTION_INFO=yes + - UE_MTU=1500 + # Only one slice is defined (1, 0xFFFFFF) - DNN_NI0=oai - TYPE0=IPv4 - DNN_RANGE0=12.1.1.2 - 12.1.1.127 - NSSAI_SST0=1 - - NSSAI_SD0=0xFFFFFF - SESSION_AMBR_UL0=200Mbps - SESSION_AMBR_DL0=400Mbps - - DNN_NI2=oai.ipv4 + - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1 + - ENABLE_USAGE_REPORTING=no depends_on: - oai-nrf - oai-amf - volumes: - - ../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.133 - oai-spgwu: container_name: "rfsim5g-oai-spgwu" - image: oai-spgwu-tiny:august-dev + image: oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 environment: - TZ=Europe/Paris - - PID_DIRECTORY=/var/run - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0 - SGW_INTERFACE_NAME_FOR_SX=eth0 - PGW_INTERFACE_NAME_FOR_SGI=eth0 - NETWORK_UE_NAT_OPTION=yes - NETWORK_UE_IP=12.1.1.0/24 - - SPGWC0_IP_ADDRESS=192.168.71.133 - - BYPASS_UL_PFCP_RULES=no - - MCC=208 - - MNC=99 - - MNC03=099 - - TAC=1 - - GTP_EXTENSION_HEADER_PRESENT=yes - - GW_ID=1 - - REALM=openairinterface.org - ENABLE_5G_FEATURES=yes - REGISTER_NRF=yes - USE_FQDN_NRF=yes - UPF_FQDN_5G=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf + # Only one slice is defined (1, 0xFFFFFF) - NSSAI_SST_0=1 - NSSAI_SD_0=0xffffff - DNN_0=oai @@ -204,25 +140,16 @@ services: cap_drop: - ALL privileged: true - volumes: - - ../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.134 traffic_net: ipv4_address: 192.168.72.134 - oai-ext-dn: - image: ubuntu:bionic privileged: true container_name: rfsim5g-oai-ext-dn + image: oaisoftwarealliance/trf-gen-cn5g:latest entrypoint: /bin/bash -c \ - "apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\ "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ "ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity" depends_on: @@ -235,9 +162,8 @@ services: interval: 10s timeout: 5s retries: 5 - oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb environment: @@ -256,9 +182,8 @@ services: interval: 10s timeout: 5s retries: 5 - oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: diff --git a/ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml index 6161f223f8..d33738e2f7 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml @@ -2,28 +2,16 @@ version: '3.8' services: oai-nrf: container_name: "rfsim5g-oai-nrf" - image: oai-nrf:august-dev + image: oaisoftwarealliance/oai-nrf:v1.5.0 environment: - NRF_INTERFACE_NAME_FOR_SBI=eth0 - - NRF_INTERFACE_PORT_FOR_SBI=80 - - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - NRF_API_VERSION=v1 - - INSTANCE=0 - - PID_DIRECTORY=/var/run + - TZ=Europe/Paris networks: public_net: ipv4_address: 192.168.71.130 - volumes: - - ../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 - mysql: container_name: "rfsim5g-mysql" - image: mysql:5.7 + image: mysql:8.0 volumes: - ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql - ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh @@ -37,18 +25,15 @@ services: test: /bin/bash -c "/tmp/mysql-healthcheck.sh" interval: 10s timeout: 5s - retries: 5 + retries: 30 networks: public_net: ipv4_address: 192.168.71.131 - oai-amf: container_name: "rfsim5g-oai-amf" - image: oai-amf:august-dev + image: oaisoftwarealliance/oai-amf:v1.5.0 environment: - TZ=Europe/paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - MCC=208 - MNC=99 - REGION_ID=128 @@ -64,134 +49,85 @@ services: - PLMN_SUPPORT_MCC=208 - PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_TAC=0x0001 + # Only one slice is defined (1, 0xFFFFFF). - SST_0=1 - - SD_0=0xffffff - - SST_1=1 - - SD_1=1 - AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0 + # One single SMF instance - SMF_INSTANCE_ID_0=1 - SMF_FQDN_0=oai-smf - - SMF_IPV4_ADDR_0=0.0.0.0 - - SMF_HTTP_VERSION_0=v1 + - SMF_IPV4_ADDR_0=192.168.71.133 - SELECTED_0=true - - SMF_INSTANCE_ID_1=2 - - SMF_FQDN_1=oai-smf - - SMF_IPV4_ADDR_1=0.0.0.0 - - SMF_HTTP_VERSION_1=v1 - - SELECTED_1=false + # mysql definition in AMF is mandatory in mini deployment. - MYSQL_SERVER=192.168.71.131 - MYSQL_USER=root - MYSQL_PASS=linux - MYSQL_DB=oai_db - - OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1 + # NF registration - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 + - NRF_FQDN=oai-nrf - NF_REGISTRATION=yes - SMF_SELECTION=yes - USE_FQDN_DNS=yes - - NRF_API_VERSION=v1 - - NRF_FQDN=oai-nrf - - EXTERNAL_AUSF=no - - AUSF_IPV4_ADDRESS=0.0.0.0 - - AUSF_PORT=80 - - AUSF_API_VERSION=v1 - - AUSF_FQDN=localhost + - USE_HTTP2=no depends_on: - oai-nrf - mysql - volumes: - - ../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh" - interval: 10s - timeout: 15s - retries: 5 networks: public_net: ipv4_address: 192.168.71.132 - oai-smf: container_name: "rfsim5g-oai-smf" - image: oai-smf:august-dev + image: oaisoftwarealliance/oai-smf:v1.5.0 environment: - TZ=Europe/Paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - SMF_INTERFACE_NAME_FOR_N4=eth0 - SMF_INTERFACE_NAME_FOR_SBI=eth0 - - SMF_INTERFACE_PORT_FOR_SBI=80 - - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - SMF_API_VERSION=v1 - DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100 - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4 - - AMF_IPV4_ADDRESS=0.0.0.0 - - AMF_PORT=80 - - AMF_API_VERSION=v1 + - AMF_IPV4_ADDRESS=192.168.71.132 - AMF_FQDN=oai-amf - - UDM_IPV4_ADDRESS=127.0.0.1 - - UDM_PORT=80 - - UDM_API_VERSION=v1 - - UDM_FQDN=localhost - UPF_IPV4_ADDRESS=192.168.71.134 - UPF_FQDN_0=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf - REGISTER_NRF=yes - DISCOVER_UPF=yes - USE_FQDN_DNS=yes + - USE_LOCAL_SUBSCRIPTION_INFO=yes + - UE_MTU=1500 + # Only one slice is defined (1, 0xFFFFFF) - DNN_NI0=oai - TYPE0=IPv4 - DNN_RANGE0=12.1.1.2 - 12.1.1.127 - NSSAI_SST0=1 - - NSSAI_SD0=0xFFFFFF - SESSION_AMBR_UL0=200Mbps - SESSION_AMBR_DL0=400Mbps - - DNN_NI2=oai.ipv4 + - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1 + - ENABLE_USAGE_REPORTING=no depends_on: - oai-nrf - oai-amf - volumes: - - ../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.133 - oai-spgwu: container_name: "rfsim5g-oai-spgwu" - image: oai-spgwu-tiny:august-dev + image: oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 environment: - TZ=Europe/Paris - - PID_DIRECTORY=/var/run - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0 - SGW_INTERFACE_NAME_FOR_SX=eth0 - PGW_INTERFACE_NAME_FOR_SGI=eth0 - NETWORK_UE_NAT_OPTION=yes - NETWORK_UE_IP=12.1.1.0/24 - - SPGWC0_IP_ADDRESS=192.168.71.133 - - BYPASS_UL_PFCP_RULES=no - - MCC=208 - - MNC=99 - - MNC03=099 - - TAC=1 - - GTP_EXTENSION_HEADER_PRESENT=yes - - GW_ID=1 - - REALM=openairinterface.org - ENABLE_5G_FEATURES=yes - REGISTER_NRF=yes - USE_FQDN_NRF=yes - UPF_FQDN_5G=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf + # Only one slice is defined (1, 0xFFFFFF) - NSSAI_SST_0=1 - NSSAI_SD_0=0xffffff - DNN_0=oai @@ -204,25 +140,16 @@ services: cap_drop: - ALL privileged: true - volumes: - - ../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.134 traffic_net: ipv4_address: 192.168.72.134 - oai-ext-dn: - image: ubuntu:bionic privileged: true container_name: rfsim5g-oai-ext-dn + image: oaisoftwarealliance/trf-gen-cn5g:latest entrypoint: /bin/bash -c \ - "apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\ "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ "ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity" depends_on: @@ -235,9 +162,8 @@ services: interval: 10s timeout: 5s retries: 5 - oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb environment: @@ -258,7 +184,7 @@ services: retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: diff --git a/ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml index 3d4689e912..7abfb7b915 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml @@ -2,28 +2,16 @@ version: '3.8' services: oai-nrf: container_name: "rfsim5g-oai-nrf" - image: oai-nrf:august-dev + image: oaisoftwarealliance/oai-nrf:v1.5.0 environment: - NRF_INTERFACE_NAME_FOR_SBI=eth0 - - NRF_INTERFACE_PORT_FOR_SBI=80 - - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - NRF_API_VERSION=v1 - - INSTANCE=0 - - PID_DIRECTORY=/var/run + - TZ=Europe/Paris networks: core_net: ipv4_address: 192.168.71.130 - volumes: - - ../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 - mysql: container_name: "rfsim5g-mysql" - image: mysql:5.7 + image: mysql:8.0 volumes: - ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql - ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh @@ -37,18 +25,15 @@ services: test: /bin/bash -c "/tmp/mysql-healthcheck.sh" interval: 10s timeout: 5s - retries: 5 + retries: 30 networks: core_net: ipv4_address: 192.168.71.131 - oai-amf: container_name: "rfsim5g-oai-amf" - image: oai-amf:august-dev + image: oaisoftwarealliance/oai-amf:v1.5.0 environment: - TZ=Europe/paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - MCC=208 - MNC=99 - REGION_ID=128 @@ -64,134 +49,85 @@ services: - PLMN_SUPPORT_MCC=208 - PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_TAC=0x0001 + # Only one slice is defined (1, 0xFFFFFF). - SST_0=1 - - SD_0=0xffffff - - SST_1=1 - - SD_1=1 - AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0 + # One single SMF instance - SMF_INSTANCE_ID_0=1 - SMF_FQDN_0=oai-smf - - SMF_IPV4_ADDR_0=0.0.0.0 - - SMF_HTTP_VERSION_0=v1 + - SMF_IPV4_ADDR_0=192.168.71.133 - SELECTED_0=true - - SMF_INSTANCE_ID_1=2 - - SMF_FQDN_1=oai-smf - - SMF_IPV4_ADDR_1=0.0.0.0 - - SMF_HTTP_VERSION_1=v1 - - SELECTED_1=false + # mysql definition in AMF is mandatory in mini deployment. - MYSQL_SERVER=192.168.71.131 - MYSQL_USER=root - MYSQL_PASS=linux - MYSQL_DB=oai_db - - OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1 + # NF registration - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 + - NRF_FQDN=oai-nrf - NF_REGISTRATION=yes - SMF_SELECTION=yes - USE_FQDN_DNS=yes - - NRF_API_VERSION=v1 - - NRF_FQDN=oai-nrf - - EXTERNAL_AUSF=no - - AUSF_IPV4_ADDRESS=0.0.0.0 - - AUSF_PORT=80 - - AUSF_API_VERSION=v1 - - AUSF_FQDN=localhost + - USE_HTTP2=no depends_on: - oai-nrf - mysql - volumes: - - ../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh" - interval: 10s - timeout: 15s - retries: 5 networks: core_net: ipv4_address: 192.168.71.132 - oai-smf: container_name: "rfsim5g-oai-smf" - image: oai-smf:august-dev + image: oaisoftwarealliance/oai-smf:v1.5.0 environment: - TZ=Europe/Paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - SMF_INTERFACE_NAME_FOR_N4=eth0 - SMF_INTERFACE_NAME_FOR_SBI=eth0 - - SMF_INTERFACE_PORT_FOR_SBI=80 - - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - SMF_API_VERSION=v1 - DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100 - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4 - - AMF_IPV4_ADDRESS=0.0.0.0 - - AMF_PORT=80 - - AMF_API_VERSION=v1 + - AMF_IPV4_ADDRESS=192.168.71.132 - AMF_FQDN=oai-amf - - UDM_IPV4_ADDRESS=127.0.0.1 - - UDM_PORT=80 - - UDM_API_VERSION=v1 - - UDM_FQDN=localhost - UPF_IPV4_ADDRESS=192.168.71.134 - UPF_FQDN_0=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf - REGISTER_NRF=yes - DISCOVER_UPF=yes - USE_FQDN_DNS=yes + - USE_LOCAL_SUBSCRIPTION_INFO=yes + - UE_MTU=1500 + # Only one slice is defined (1, 0xFFFFFF) - DNN_NI0=oai - TYPE0=IPv4 - DNN_RANGE0=12.1.1.2 - 12.1.1.127 - NSSAI_SST0=1 - - NSSAI_SD0=0xFFFFFF - SESSION_AMBR_UL0=200Mbps - SESSION_AMBR_DL0=400Mbps - - DNN_NI2=oai.ipv4 + - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1 + - ENABLE_USAGE_REPORTING=no depends_on: - oai-nrf - oai-amf - volumes: - - ../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: core_net: ipv4_address: 192.168.71.133 - oai-spgwu: container_name: "rfsim5g-oai-spgwu" - image: oai-spgwu-tiny:august-dev + image: oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 environment: - TZ=Europe/Paris - - PID_DIRECTORY=/var/run - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0 - SGW_INTERFACE_NAME_FOR_SX=eth0 - PGW_INTERFACE_NAME_FOR_SGI=eth0 - NETWORK_UE_NAT_OPTION=yes - NETWORK_UE_IP=12.1.1.0/24 - - SPGWC0_IP_ADDRESS=192.168.71.133 - - BYPASS_UL_PFCP_RULES=no - - MCC=208 - - MNC=99 - - MNC03=099 - - TAC=1 - - GTP_EXTENSION_HEADER_PRESENT=yes - - GW_ID=1 - - REALM=openairinterface.org - ENABLE_5G_FEATURES=yes - REGISTER_NRF=yes - USE_FQDN_NRF=yes - UPF_FQDN_5G=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf + # Only one slice is defined (1, 0xFFFFFF) - NSSAI_SST_0=1 - NSSAI_SD_0=0xffffff - DNN_0=oai @@ -204,13 +140,6 @@ services: cap_drop: - ALL privileged: true - volumes: - - ../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: core_net: ipv4_address: 192.168.71.134 @@ -218,11 +147,10 @@ services: ipv4_address: 192.168.73.134 oai-ext-dn: - image: ubuntu:bionic privileged: true container_name: rfsim5g-oai-ext-dn + image: oaisoftwarealliance/trf-gen-cn5g:latest entrypoint: /bin/bash -c \ - "apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\ "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ "ip route add 12.1.1.0/24 via 192.168.73.134 dev eth0; sleep infinity" depends_on: @@ -237,7 +165,7 @@ services: retries: 5 oai-cucp: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-cucp environment: @@ -259,7 +187,7 @@ services: retries: 5 oai-cuup: - image: oai-nr-cuup:develop + image: oaisoftwarealliance/oai-nr-cuup:develop privileged: true container_name: rfsim5g-oai-cuup environment: @@ -282,7 +210,7 @@ services: retries: 5 oai-du: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-du environment: @@ -301,7 +229,7 @@ services: retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: diff --git a/ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml index 1487aa26c0..dbab2002a7 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml @@ -1,7 +1,7 @@ version: '3.8' services: oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb environment: @@ -21,7 +21,7 @@ services: retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: diff --git a/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml index 11264e5348..2705a69f10 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml @@ -1,7 +1,7 @@ version: '3.8' services: oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb environment: @@ -21,7 +21,7 @@ services: retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: diff --git a/ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml index 9f080478c7..2afa9027f3 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml @@ -1,7 +1,7 @@ version: '3.8' services: oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb environment: @@ -21,7 +21,7 @@ services: retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: diff --git a/ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml index 973a687e87..e6e525389b 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml @@ -2,28 +2,16 @@ version: '3.8' services: oai-nrf: container_name: "rfsim5g-oai-nrf" - image: oai-nrf:august-dev + image: oaisoftwarealliance/oai-nrf:v1.5.0 environment: - NRF_INTERFACE_NAME_FOR_SBI=eth0 - - NRF_INTERFACE_PORT_FOR_SBI=80 - - NRF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - NRF_API_VERSION=v1 - - INSTANCE=0 - - PID_DIRECTORY=/var/run + - TZ=Europe/Paris networks: public_net: ipv4_address: 192.168.71.130 - volumes: - - ../5g_rfsimulator/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 - mysql: container_name: "rfsim5g-mysql" - image: mysql:5.7 + image: mysql:8.0 volumes: - ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql - ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh @@ -37,18 +25,15 @@ services: test: /bin/bash -c "/tmp/mysql-healthcheck.sh" interval: 10s timeout: 5s - retries: 5 + retries: 30 networks: public_net: ipv4_address: 192.168.71.131 - oai-amf: container_name: "rfsim5g-oai-amf" - image: oai-amf:august-dev + image: oaisoftwarealliance/oai-amf:v1.5.0 environment: - TZ=Europe/paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - MCC=208 - MNC=99 - REGION_ID=128 @@ -64,134 +49,85 @@ services: - PLMN_SUPPORT_MCC=208 - PLMN_SUPPORT_MNC=99 - PLMN_SUPPORT_TAC=0x0001 + # Only one slice is defined (1, 0xFFFFFF). - SST_0=1 - - SD_0=0xffffff - - SST_1=1 - - SD_1=1 - AMF_INTERFACE_NAME_FOR_NGAP=eth0 - AMF_INTERFACE_NAME_FOR_N11=eth0 + # One single SMF instance - SMF_INSTANCE_ID_0=1 - SMF_FQDN_0=oai-smf - - SMF_IPV4_ADDR_0=0.0.0.0 - - SMF_HTTP_VERSION_0=v1 + - SMF_IPV4_ADDR_0=192.168.71.133 - SELECTED_0=true - - SMF_INSTANCE_ID_1=2 - - SMF_FQDN_1=oai-smf - - SMF_IPV4_ADDR_1=0.0.0.0 - - SMF_HTTP_VERSION_1=v1 - - SELECTED_1=false + # mysql definition in AMF is mandatory in mini deployment. - MYSQL_SERVER=192.168.71.131 - MYSQL_USER=root - MYSQL_PASS=linux - MYSQL_DB=oai_db - - OPERATOR_KEY=c42449363bbad02b66d16bc975d77cc1 + # NF registration - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 + - NRF_FQDN=oai-nrf - NF_REGISTRATION=yes - SMF_SELECTION=yes - USE_FQDN_DNS=yes - - NRF_API_VERSION=v1 - - NRF_FQDN=oai-nrf - - EXTERNAL_AUSF=no - - AUSF_IPV4_ADDRESS=0.0.0.0 - - AUSF_PORT=80 - - AUSF_API_VERSION=v1 - - AUSF_FQDN=localhost + - USE_HTTP2=no depends_on: - oai-nrf - mysql - volumes: - - ../5g_rfsimulator/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh" - interval: 10s - timeout: 15s - retries: 5 networks: public_net: ipv4_address: 192.168.71.132 - oai-smf: container_name: "rfsim5g-oai-smf" - image: oai-smf:august-dev + image: oaisoftwarealliance/oai-smf:v1.5.0 environment: - TZ=Europe/Paris - - INSTANCE=0 - - PID_DIRECTORY=/var/run - SMF_INTERFACE_NAME_FOR_N4=eth0 - SMF_INTERFACE_NAME_FOR_SBI=eth0 - - SMF_INTERFACE_PORT_FOR_SBI=80 - - SMF_INTERFACE_HTTP2_PORT_FOR_SBI=9090 - - SMF_API_VERSION=v1 - DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100 - DEFAULT_DNS_SEC_IPV4_ADDRESS=4.4.4.4 - - AMF_IPV4_ADDRESS=0.0.0.0 - - AMF_PORT=80 - - AMF_API_VERSION=v1 + - AMF_IPV4_ADDRESS=192.168.71.132 - AMF_FQDN=oai-amf - - UDM_IPV4_ADDRESS=127.0.0.1 - - UDM_PORT=80 - - UDM_API_VERSION=v1 - - UDM_FQDN=localhost - UPF_IPV4_ADDRESS=192.168.71.134 - UPF_FQDN_0=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf - REGISTER_NRF=yes - DISCOVER_UPF=yes - USE_FQDN_DNS=yes + - USE_LOCAL_SUBSCRIPTION_INFO=yes + - UE_MTU=1500 + # Only one slice is defined (1, 0xFFFFFF) - DNN_NI0=oai - TYPE0=IPv4 - DNN_RANGE0=12.1.1.2 - 12.1.1.127 - NSSAI_SST0=1 - - NSSAI_SD0=0xFFFFFF - SESSION_AMBR_UL0=200Mbps - SESSION_AMBR_DL0=400Mbps - - DNN_NI2=oai.ipv4 + - DEFAULT_CSCF_IPV4_ADDRESS=127.0.0.1 + - ENABLE_USAGE_REPORTING=no depends_on: - oai-nrf - oai-amf - volumes: - - ../5g_rfsimulator/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.133 - oai-spgwu: container_name: "rfsim5g-oai-spgwu" - image: oai-spgwu-tiny:august-dev + image: oaisoftwarealliance/oai-spgwu-tiny:v1.5.0 environment: - TZ=Europe/Paris - - PID_DIRECTORY=/var/run - SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP=eth0 - SGW_INTERFACE_NAME_FOR_SX=eth0 - PGW_INTERFACE_NAME_FOR_SGI=eth0 - NETWORK_UE_NAT_OPTION=yes - NETWORK_UE_IP=12.1.1.0/24 - - SPGWC0_IP_ADDRESS=192.168.71.133 - - BYPASS_UL_PFCP_RULES=no - - MCC=208 - - MNC=99 - - MNC03=099 - - TAC=1 - - GTP_EXTENSION_HEADER_PRESENT=yes - - GW_ID=1 - - REALM=openairinterface.org - ENABLE_5G_FEATURES=yes - REGISTER_NRF=yes - USE_FQDN_NRF=yes - UPF_FQDN_5G=oai-spgwu - NRF_IPV4_ADDRESS=192.168.71.130 - - NRF_PORT=80 - - NRF_API_VERSION=v1 - NRF_FQDN=oai-nrf + # Only one slice is defined (1, 0xFFFFFF) - NSSAI_SST_0=1 - NSSAI_SD_0=0xffffff - DNN_0=oai @@ -204,25 +140,16 @@ services: cap_drop: - ALL privileged: true - volumes: - - ../5g_rfsimulator/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh - healthcheck: - test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh" - interval: 10s - timeout: 5s - retries: 5 networks: public_net: ipv4_address: 192.168.71.134 traffic_net: ipv4_address: 192.168.72.134 - oai-ext-dn: - image: ubuntu:bionic privileged: true container_name: rfsim5g-oai-ext-dn + image: oaisoftwarealliance/trf-gen-cn5g:latest entrypoint: /bin/bash -c \ - "apt update; apt install -y procps iptables iproute2 iperf iputils-ping;"\ "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ "ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity" depends_on: @@ -235,9 +162,8 @@ services: interval: 10s timeout: 5s retries: 5 - oai-gnb: - image: oai-gnb:develop + image: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb environment: @@ -258,7 +184,7 @@ services: retries: 5 oai-nr-ue: - image: oai-nr-ue:develop + image: oaisoftwarealliance/oai-nr-ue:develop privileged: true container_name: rfsim5g-oai-nr-ue environment: