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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
340 changes: 338 additions & 2 deletions Makefile

Large diffs are not rendered by default.

111 changes: 65 additions & 46 deletions default-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ config:
version: "stable" # ( stable | dev )
dev_build_path: ../../ueransim/build # relative to the root of the testbed, not to the testbed build directory
handover: false
migration_a_posteriori: false
dataplane: # ( nextmn-srv6 | free5gc | nextmn-upf)
- "nextmn-srv6"
controlplane: "free5gc" # ( free5gc | nextmn-lite )
Expand Down Expand Up @@ -117,36 +118,9 @@ subnets:
ipv4_address: 10.1.3.140
upfa3-nmn:
ipv4_address: 10.1.3.155
gnbl1:
ipv4_address: 10.1.3.141
ipv6_address: fd00:0:0:0:2:8000:0:7
gnbl2:
ipv4_address: 10.1.3.142
ipv6_address: fd00:0:0:0:2:8000:0:8
gnbl3:
ipv4_address: 10.1.3.150
ipv6_address: fd00:0:0:0:2:8000:0:10
uel1:
ipv4_address: 10.1.3.143
ipv6_address: fd00:0:0:0:2:8000:0:9
cp-lite:
ipv4_address: 10.1.3.144
ipv6_address: fd00:0:0:0:2:8000:0:a
uel2:
ipv4_address: 10.1.3.145
ipv6_address: fd00:0:0:0:2:8000:0:b
uel3:
ipv4_address: 10.1.3.146
ipv6_address: fd00:0:0:0:2:8000:0:c
uel4:
ipv4_address: 10.1.3.147
ipv6_address: fd00:0:0:0:2:8000:0:d
uel5:
ipv4_address: 10.1.3.148
ipv6_address: fd00:0:0:0:2:8000:0:e
uel6:
ipv4_address: 10.1.3.149
ipv6_address: fd00:0:0:0:2:8000:0:f
dataplane:
gnb1:
ipv4_address: 10.1.4.129
Expand Down Expand Up @@ -190,6 +164,9 @@ subnets:
ipv4_address: 10.1.4.139
gnbl3:
ipv4_address: 10.1.4.140
inter-areas:
ipv4_address: 10.1.4.146
ipv6_address: fd00:0:0:0:3:8000:0:7
edge:
r0:
ipv4_address: 10.1.5.129
Expand All @@ -215,47 +192,89 @@ subnets:
ipv4_address: 10.1.5.136
upfa3-nmn:
ipv4_address: 10.1.5.140
rest:
srgw0:
ipv6_address: fd00:0:0:0:5:8000:0:2
srgw1:
ipv6_address: fd00:0:0:0:5:8000:0:3
r0:
ipv6_address: fd00:0:0:0:5:8000:0:4
r1:
ipv6_address: fd00:0:0:0:5:8000:0:5
r2:
ipv6_address: fd00:0:0:0:5:8000:0:6
srv6-ctrl:
ipv6_address: fd00:0:0:0:5:8000:0:7
cp-lite:
ipv6_address: fd00:0:0:0:5:8000:0:8
uel1:
ipv6_address: fd00:0:0:0:5:8000:0:9
uel2:
ipv6_address: fd00:0:0:0:5:8000:0:a
uel3:
ipv6_address: fd00:0:0:0:5:8000:0:b
uel4:
ipv6_address: fd00:0:0:0:5:8000:0:c
uel5:
ipv6_address: fd00:0:0:0:5:8000:0:d
uel6:
ipv6_address: fd00:0:0:0:5:8000:0:e
gnbl1:
ipv6_address: fd00:0:0:0:5:8000:0:f
gnbl2:
ipv6_address: fd00:0:0:0:5:8000:0:10
gnbl3:
ipv6_address: fd00:0:0:0:5:8000:0:11
service:
s:
ipv4_address: 10.4.0.1
nots:
ipv4_address: 10.4.0.2
slice0:
slice-sr4mec:
subnet:
ipv4_prefix: 10.2.0.0/23
slice-sr4mec-0:
subnet:
ipv4_prefix: 10.2.0.0/24
slice0-static:
slice-sr4mec-0-static:
subnet:
ipv4_prefix: 10.2.0.128/25
slice1:
slice-sr4mec-1:
subnet:
ipv4_prefix: 10.2.1.0/24
slice1-e1:
slice-sr4mec-1-static:
subnet:
ipv4_prefix: 10.2.1.0/26
slice1-e1-static:
subnet:
ipv4_prefix: 10.2.1.64/26
slice1-e2:
subnet:
ipv4_prefix: 10.2.1.128/26
slice1-e2-static:
subnet:
ipv4_prefix: 10.2.1.192/26
slice2:
ipv4_prefix: 10.2.1.128/25
slice-f5gc-0:
subnet:
ipv4_prefix: 10.2.2.0/24
slice2-e1:
slice-f5gc-0-e1:
subnet:
ipv4_prefix: 10.2.2.0/26
slice2-e1-static:
slice-f5gc-0-e1-static:
subnet:
ipv4_prefix: 10.2.2.64/26
slice2-e2:
slice-f5gc-0-e2:
subnet:
ipv4_prefix: 10.2.2.128/26
slice2-e2-static:
slice-f5gc-0-e2-static:
subnet:
ipv4_prefix: 10.2.2.192/26
slice-nmn-upf-0:
subnet:
ipv4_prefix: 10.2.3.0/24
slice-nmn-upf-0-e1:
subnet:
ipv4_prefix: 10.2.3.0/26
slice-nmn-upf-0-e1-static:
subnet:
ipv4_prefix: 10.2.3.64/26
slice-nmn-upf-0-e2:
subnet:
ipv4_prefix: 10.2.3.128/26
slice-nmn-upf-0-e2-static:
subnet:
ipv4_prefix: 10.2.3.192/26
srgw0:
subnet:
ipv6_prefix: fc00:1::/32
Expand Down
2 changes: 1 addition & 1 deletion doc
Submodule doc updated from de57ca to 2762dd
5 changes: 5 additions & 0 deletions scripts/config_edit.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ def increase_indent(self, flow=False, indentless=False):
parser.add_argument('--full-debug')
parser.add_argument('--ran')
parser.add_argument('--handover')
parser.add_argument('--migration-a-posteriori')
args = parser.parse_args()
ran = ('stable', 'dev')
controlplane = ('free5gc', 'nextmn-lite')
Expand All @@ -55,6 +56,8 @@ def increase_indent(self, flow=False, indentless=False):
raise ConfigException('Invalid value for full debug: must be a boolean')
if args.handover and (args.handover.lower() not in ('true', 'false')):
raise ConfigException('Invalid value for handover: must be a boolean')
if args.migration_a_posteriori and (args.migration_a_posteriori.lower() not in ('true', 'false')):
raise ConfigException('Invalid value for migration-a-posteriori: must be a boolean')
if args.ran and (args.ran not in ran):
raise ConfigException(f'Invalid ran config: use one from {ran}')
if args.controlplane and (args.controlplane not in controlplane):
Expand Down Expand Up @@ -82,6 +85,8 @@ def increase_indent(self, flow=False, indentless=False):
c['config']['topology']['full_debug'] = args.full_debug.lower() == 'true'
if args.handover is not None:
c['config']['topology']['ran']['handover'] = args.handover.lower() == 'true'
if args.migration_a_posteriori is not None:
c['config']['topology']['ran']['migration_a_posteriori'] = args.migration_a_posteriori.lower() == 'true'
if args.ran:
c['config']['topology']['ran']['version'] = args.ran
with open(args.buildconfig, 'w', encoding='utf-8') as f2:
Expand Down
22 changes: 12 additions & 10 deletions scripts/handover.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,24 +38,26 @@ def same_area(gnb1: str, gnb2: str) -> bool:
args = parser.parse_args()

# TODO: this should not be hardcoded
if args.dnn == "srv6":
UE_ADDR = "10.2.0.1"
elif args.dnn == "free5gc":
UE_ADDR = "10.2.1.1"
elif args.dnn == "nextmn-upf":
UE_ADDR = "10.2.2.1"
if args.dnn == "sr4mec-0":
UE_ADDR = "10.2.0.1" # uel1
elif args.dnn == "sr4mec-1":
UE_ADDR = "10.2.1.1" # uel2
elif args.dnn == "f5gc-0":
UE_ADDR = "10.2.2.1" # uel3
elif args.dnn == "nmn-upf-0":
UE_ADDR = "10.2.3.1" #uel5
else:
raise ValueError("DNN must be in (srv6, free5gc, nextmn-upf)")
raise ValueError("DNN must be in (sr4mec-0, sr4mec-1, f5gc-0, nmn-upf-0)")


# TODO: this info should be guessable by the gNB
indirect_forwarding = not same_area(args.gnb_source, args.gnb_target)

with open(args.config, 'r', encoding='utf-8') as f:
c = yaml.safe_load(f)
gnb_source_uri = f'http://[{c["subnets"]["control"][args.gnb_source]["ipv6_address"]}]:8080'
gnb_target_uri = f'http://[{c["subnets"]["control"][args.gnb_target]["ipv6_address"]}]:8080'
ue_uri = f'http://[{c["subnets"]["control"][args.ue]["ipv6_address"]}]:8080'
gnb_source_uri = f'http://[{c["subnets"]["rest"][args.gnb_source]["ipv6_address"]}]:8080'
gnb_target_uri = f'http://[{c["subnets"]["rest"][args.gnb_target]["ipv6_address"]}]:8080'
ue_uri = f'http://[{c["subnets"]["rest"][args.ue]["ipv6_address"]}]:8080'
handover_req = {
"ue-ctrl": ue_uri,
"gnb-target": gnb_target_uri,
Expand Down
Loading
Loading