<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/23729">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  pespin: Looks good to me, approved; Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">open5gs: Avoid use of non-standard ports<br><br>Despite open5gs allowing to change the GTP ports in the config file, in<br>reality changing those values to something else than the standard prot<br>will fail. Hence, we must use the standard port. As a result, we must<br>use different IP addresses in each process to avoid ip+port collisions.<br>Let's use some loopback addresses which shouldn't require extra<br>configuration on the host, and still only requiring 1 run_node as per<br>existing EPCs, with the limitation that only 1 open5gs EPC instance can<br>be run at one in a given run_node.<br><br>Related: https://github.com/open5gs/open5gs/issues/897<br>Change-Id: Id3062c6ad9d6de4c6066547e1e46edad5da285c1<br>---<br>M src/osmo_gsm_tester/obj/epc_open5gs.py<br>M src/osmo_gsm_tester/templates/open5gs-mmed.yaml.tmpl<br>M src/osmo_gsm_tester/templates/open5gs-sgwcd.yaml.tmpl<br>M src/osmo_gsm_tester/templates/open5gs-sgwud.yaml.tmpl<br>M src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl<br>M src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl<br>6 files changed, 70 insertions(+), 51 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/obj/epc_open5gs.py b/src/osmo_gsm_tester/obj/epc_open5gs.py</span><br><span>index 15f4eab..feff901 100644</span><br><span>--- a/src/osmo_gsm_tester/obj/epc_open5gs.py</span><br><span>+++ b/src/osmo_gsm_tester/obj/epc_open5gs.py</span><br><span>@@ -39,7 +39,9 @@</span><br><span>     schema.register_config_schema('epc', config_schema)</span><br><span> </span><br><span> class Open5gsEPC(epc.EPC):</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+##############</span><br><span style="color: hsl(120, 100%, 40%);">+# PROTECTED</span><br><span style="color: hsl(120, 100%, 40%);">+##############</span><br><span>     REMOTE_DIR = '/osmo-gsm-tester-open5gs'</span><br><span> </span><br><span>     def __init__(self, testenv, run_node):</span><br><span>@@ -54,6 +56,43 @@</span><br><span>         self.sgwu = None</span><br><span>         self.subscriber_list = []</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    def configure(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        values = super().configure(['open5gsepc'])</span><br><span style="color: hsl(120, 100%, 40%);">+        db_host = values['epc']['db_host']</span><br><span style="color: hsl(120, 100%, 40%);">+        db_uri = 'mongodb://'+db_host+'/open5gs'</span><br><span style="color: hsl(120, 100%, 40%);">+        config.overlay(values, dict(epc=dict(db_uri=db_uri,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             tun_addr=self.tun_addr(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             addr_smf=self.priv_addr_smf(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             addr_upf=self.priv_addr_upf(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             addr_sgwc=self.priv_addr_sgwc(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             addr_sgwu=self.priv_addr_sgwu(),</span><br><span style="color: hsl(120, 100%, 40%);">+                                             )))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.fill_subscribers_mongodb(values['epc']['db_host'], 27017)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.pcrf = Open5gsPCRF(self.testenv, self)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.upf = Open5gsUPF(self.testenv, self)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.smf = Open5gsSMF(self.testenv, self)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.hss = Open5gsHSS(self.testenv, self)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.mme = Open5gsMME(self.testenv, self)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.sgwc = Open5gsSGWC(self.testenv, self)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.sgwu = Open5gsSGWU(self.testenv, self)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.pcrf.configure(copy.deepcopy(values))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.upf.configure(copy.deepcopy(values))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.smf.configure(copy.deepcopy(values))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.hss.configure(copy.deepcopy(values))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.mme.configure(copy.deepcopy(values))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.sgwc.configure(copy.deepcopy(values))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.sgwu.configure(copy.deepcopy(values))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def gen_priv_addr(self, suffix):</span><br><span style="color: hsl(120, 100%, 40%);">+        if ':' in self.addr():</span><br><span style="color: hsl(120, 100%, 40%);">+            raise log.Error('IPv6 not implemented!')</span><br><span style="color: hsl(120, 100%, 40%);">+        public_suffix = self.addr()[self.addr().rindex('.')+1:]</span><br><span style="color: hsl(120, 100%, 40%);">+        return '127.0.' + public_suffix + '.' + str(suffix)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+########################</span><br><span style="color: hsl(120, 100%, 40%);">+# PUBLIC - INTERNAL API</span><br><span style="color: hsl(120, 100%, 40%);">+########################</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     def cleanup(self):</span><br><span>         if self.pcrf:</span><br><span>             self.pcrf.cleanup()</span><br><span>@@ -70,27 +109,21 @@</span><br><span>         if self.sgwu:</span><br><span>             self.sgwu.cleanup()</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    def configure(self):</span><br><span style="color: hsl(0, 100%, 40%);">-        values = super().configure(['open5gsepc'])</span><br><span style="color: hsl(0, 100%, 40%);">-        db_host = values['epc']['db_host']</span><br><span style="color: hsl(0, 100%, 40%);">-        db_uri = 'mongodb://'+db_host+'/open5gs'</span><br><span style="color: hsl(0, 100%, 40%);">-        config.overlay(values, dict(epc=dict(db_uri=db_uri)))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.fill_subscribers_mongodb(values['epc']['db_host'], 27017)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.pcrf = Open5gsPCRF(self.testenv, self)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.upf = Open5gsUPF(self.testenv, self)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.smf = Open5gsSMF(self.testenv, self)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.hss = Open5gsHSS(self.testenv, self)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.mme = Open5gsMME(self.testenv, self)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.sgwc = Open5gsSGWC(self.testenv, self)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.sgwu = Open5gsSGWU(self.testenv, self)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.pcrf.configure(copy.deepcopy(values))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.upf.configure(copy.deepcopy(values))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.smf.configure(copy.deepcopy(values))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.hss.configure(copy.deepcopy(values))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.mme.configure(copy.deepcopy(values))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.sgwc.configure(copy.deepcopy(values))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.sgwu.configure(copy.deepcopy(values))</span><br><span style="color: hsl(120, 100%, 40%);">+    def priv_addr_smf(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        return self.gen_priv_addr(1)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    def priv_addr_upf(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        return self.gen_priv_addr(2)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def priv_addr_sgwc(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        return self.gen_priv_addr(3)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def priv_addr_sgwu(self):</span><br><span style="color: hsl(120, 100%, 40%);">+        return self.gen_priv_addr(4)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+###################</span><br><span style="color: hsl(120, 100%, 40%);">+# PUBLIC (test API included)</span><br><span style="color: hsl(120, 100%, 40%);">+###################</span><br><span>     def start(self):</span><br><span>         self.log('Starting srsepc')</span><br><span>         self.run_dir = util.Dir(self.testenv.test().get_run_dir().new_dir(self.name()))</span><br><span>diff --git a/src/osmo_gsm_tester/templates/open5gs-mmed.yaml.tmpl b/src/osmo_gsm_tester/templates/open5gs-mmed.yaml.tmpl</span><br><span>index 9aec578..5c886e3 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/open5gs-mmed.yaml.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/open5gs-mmed.yaml.tmpl</span><br><span>@@ -104,8 +104,7 @@</span><br><span> #</span><br><span> sgwc:</span><br><span>     gtpc:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 2125</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_sgwc}</span><br><span> </span><br><span> #</span><br><span> # smf:</span><br><span>@@ -146,8 +145,7 @@</span><br><span> #        apn: volte</span><br><span> smf:</span><br><span>     gtpc:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 2124</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_smf}</span><br><span> </span><br><span> #</span><br><span> # parameter:</span><br><span>diff --git a/src/osmo_gsm_tester/templates/open5gs-sgwcd.yaml.tmpl b/src/osmo_gsm_tester/templates/open5gs-sgwcd.yaml.tmpl</span><br><span>index 8d2bd1a..a1db7ed 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/open5gs-sgwcd.yaml.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/open5gs-sgwcd.yaml.tmpl</span><br><span>@@ -52,11 +52,9 @@</span><br><span> #</span><br><span> sgwc:</span><br><span>     gtpc:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 2125</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_sgwc}</span><br><span>     pfcp:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 8805</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_sgwc}</span><br><span> </span><br><span> #</span><br><span> # sgwu:</span><br><span>@@ -112,8 +110,7 @@</span><br><span> #</span><br><span> sgwu:</span><br><span>     pfcp:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 8806</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_sgwu}</span><br><span> </span><br><span> #</span><br><span> # parameter:</span><br><span>diff --git a/src/osmo_gsm_tester/templates/open5gs-sgwud.yaml.tmpl b/src/osmo_gsm_tester/templates/open5gs-sgwud.yaml.tmpl</span><br><span>index 27dd55c..f0e2384 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/open5gs-sgwud.yaml.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/open5gs-sgwud.yaml.tmpl</span><br><span>@@ -49,8 +49,7 @@</span><br><span> #</span><br><span> sgwu:</span><br><span>     pfcp:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 8806</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_sgwu}</span><br><span>     gtpu:</span><br><span>       - addr: ${epc.run_addr}</span><br><span>         port: 2152</span><br><span>@@ -67,8 +66,7 @@</span><br><span> #</span><br><span> sgwc:</span><br><span>     pfcp:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 8805</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_sgwc}</span><br><span> </span><br><span> #</span><br><span> # parameter:</span><br><span>diff --git a/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl b/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl</span><br><span>index 0e01337..4a030d6 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/open5gs-smfd.yaml.tmpl</span><br><span>@@ -20,6 +20,7 @@</span><br><span> #</span><br><span> logger:</span><br><span>     file: ${smf.log_filename}</span><br><span style="color: hsl(120, 100%, 40%);">+    level: debug</span><br><span> #</span><br><span> # smf:</span><br><span> #</span><br><span>@@ -310,22 +311,17 @@</span><br><span>       - addr: ${epc.run_addr}</span><br><span>         port: 7777</span><br><span>     pfcp:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 8808</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_smf}</span><br><span>     gtpc:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 2124</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_smf}</span><br><span>     gtpu:</span><br><span>       - addr: ${epc.run_addr}</span><br><span>         port: 2153</span><br><span>     subnet:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: 10.45.0.1/16</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: 2001:230:cafe::1/48</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.tun_addr}/16</span><br><span>     dns:</span><br><span>       - 8.8.8.8</span><br><span>       - 8.8.4.4</span><br><span style="color: hsl(0, 100%, 40%);">-      - 2001:4860:4860::8888</span><br><span style="color: hsl(0, 100%, 40%);">-      - 2001:4860:4860::8844</span><br><span>     mtu: 1400</span><br><span>     freeDiameter: ${smf.diameter_filename}</span><br><span> </span><br><span>@@ -415,8 +411,7 @@</span><br><span> #</span><br><span> upf:</span><br><span>     pfcp:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 8807</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_upf}</span><br><span> </span><br><span> #</span><br><span> # parameter:</span><br><span>diff --git a/src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl b/src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl</span><br><span>index 4f7a25d..4fd77f6 100644</span><br><span>--- a/src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl</span><br><span>+++ b/src/osmo_gsm_tester/templates/open5gs-upfd.yaml.tmpl</span><br><span>@@ -20,6 +20,7 @@</span><br><span> #</span><br><span> logger:</span><br><span>     file: ${upf.log_filename}</span><br><span style="color: hsl(120, 100%, 40%);">+    level: debug</span><br><span> </span><br><span> #</span><br><span> # upf:</span><br><span>@@ -104,14 +105,12 @@</span><br><span> #</span><br><span> upf:</span><br><span>     pfcp:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 8807</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_upf}</span><br><span>     gtpu:</span><br><span>       - addr: ${epc.run_addr}</span><br><span>         port: 2154</span><br><span>     subnet:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: 10.45.0.1/16</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: 2001:230:cafe::1/48</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.tun_addr}/16</span><br><span> </span><br><span> #</span><br><span> # smf:</span><br><span>@@ -125,8 +124,7 @@</span><br><span> #</span><br><span> smf:</span><br><span>     pfcp:</span><br><span style="color: hsl(0, 100%, 40%);">-      - addr: ${epc.run_addr}</span><br><span style="color: hsl(0, 100%, 40%);">-        port: 8808</span><br><span style="color: hsl(120, 100%, 40%);">+      - addr: ${epc.addr_smf}</span><br><span> </span><br><span> #</span><br><span> # parameter:</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/23729">change 23729</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/23729"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Id3062c6ad9d6de4c6066547e1e46edad5da285c1 </div>
<div style="display:none"> Gerrit-Change-Number: 23729 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>