From 4b5a09a83c54ceb0f8a044ce4f0256b03a5a6138 Mon Sep 17 00:00:00 2001 From: Andre Puschmann Date: Tue, 14 Apr 2020 22:24:00 +0200 Subject: [PATCH] enb: add optional gtp_bind_addr paramter to enb class this allows to optionally specify a the GTP bind_address for a enb object in the resources.conf this address is then used for binding the listening socket for gtp connections which, in turn, allows to run the enb and epc on the same host. when gtp_bind_addr is not specified, addr is used by default this is especially useful if eNB and EPC run on the same host and ZMQ is used for RF between eNB and UE. Two eNB addresses are needed in this case, one bind address and one "remote-accessable" address for the UEs ZMQ radio to connect to Change-Id: I4fe38f31401428ed3e74e1d0b64960f0af122d37 --- src/osmo_gsm_tester/obj/enb.py | 4 ++++ src/osmo_gsm_tester/resource.py | 1 + src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl | 2 +- src/osmo_gsm_tester/templates/srsenb.conf.tmpl | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/osmo_gsm_tester/obj/enb.py b/src/osmo_gsm_tester/obj/enb.py index bb5053f5..d1f86872 100644 --- a/src/osmo_gsm_tester/obj/enb.py +++ b/src/osmo_gsm_tester/obj/enb.py @@ -32,6 +32,9 @@ class eNodeB(log.Origin, metaclass=ABCMeta): self._addr = conf.get('addr', None) if self._addr is None: raise log.Error('addr not set') + self._gtp_bind_addr = conf.get('gtp_bind_addr', None) + if self._gtp_bind_addr is None: + self._gtp_bind_addr = self._addr self.set_name('%s_%s' % (name, self._addr)) self._txmode = 0 self._num_prb = 0 @@ -52,6 +55,7 @@ class eNodeB(log.Origin, metaclass=ABCMeta): config.overlay(values, dict(enb={ 'num_ports': self.num_ports() })) assert self._epc is not None config.overlay(values, dict(enb={ 'mme_addr': self._epc.addr() })) + config.overlay(values, dict(enb={ 'gtp_bind_addr': self._gtp_bind_addr })) return values def num_ports(self): diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py index 61f2b111..bcdbb946 100644 --- a/src/osmo_gsm_tester/resource.py +++ b/src/osmo_gsm_tester/resource.py @@ -88,6 +88,7 @@ RESOURCES_SCHEMA = { 'enb[].type': schema.STR, 'enb[].remote_user': schema.STR, 'enb[].addr': schema.IPV4, + 'enb[].gtp_bind_addr': schema.IPV4, 'enb[].num_prb': schema.UINT, 'enb[].transmission_mode': schema.LTE_TRANSMISSION_MODE, 'enb[].num_cells': schema.UINT, diff --git a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl index d87e66a4..a56e58d9 100644 --- a/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl +++ b/src/osmo_gsm_tester/templates/amarisoft_enb.cfg.tmpl @@ -48,7 +48,7 @@ ], /* GTP bind address (=address of the ethernet interface connected to the MME). Must be modified if the MME runs on a different host. */ - gtp_addr: "${enb.addr}", + gtp_addr: "${enb.gtp_bind_addr}", /* high 20 bits of SIB1.cellIdentifier */ enb_id: 0x19B, diff --git a/src/osmo_gsm_tester/templates/srsenb.conf.tmpl b/src/osmo_gsm_tester/templates/srsenb.conf.tmpl index df127627..94e724bf 100644 --- a/src/osmo_gsm_tester/templates/srsenb.conf.tmpl +++ b/src/osmo_gsm_tester/templates/srsenb.conf.tmpl @@ -23,7 +23,7 @@ enb_id = 0x19B mcc = ${enb.mcc} mnc = ${enb.mnc} mme_addr = ${enb.mme_addr} -gtp_bind_addr = ${enb.addr} +gtp_bind_addr = ${enb.gtp_bind_addr} s1c_bind_addr = ${enb.addr} n_prb = ${enb.num_prb} tm = ${enb.transmission_mode}