Skip to content

Commit 911789f

Browse files
authored
Merge pull request #13 from sureshmarikkannu/dpdk-mode
Added support to configure/use DPDK/SRIOV mode for UPF
2 parents f3599e4 + d8487b0 commit 911789f

File tree

7 files changed

+410
-5
lines changed

7 files changed

+410
-5
lines changed

Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export EXTRA_VARS ?= "@$(5GC_ROOT_DIR)/vars/main.yml"
1818
--extra-vars "ROOT_DIR=$(ROOT_DIR)" --extra-vars $(EXTRA_VARS)
1919

2020
#### b. Provision k8s ####
21-
5gc-install: 5gc-router-install 5gc-core-install
21+
5gc-install: 5gc-router-install 5gc-sriov-install 5gc-core-install
2222
5gc-uninstall: 5gc-core-uninstall 5gc-router-uninstall
2323

2424
#### c. Provision router ####
@@ -29,7 +29,12 @@ export EXTRA_VARS ?= "@$(5GC_ROOT_DIR)/vars/main.yml"
2929
ansible-playbook -i $(HOSTS_INI_FILE) $(5GC_ROOT_DIR)/router.yml --tags uninstall \
3030
--extra-vars "ROOT_DIR=$(ROOT_DIR)" --extra-vars $(EXTRA_VARS)
3131

32-
#### d. Provision core ####
32+
#### d. Provision sriov ####
33+
5gc-sriov-install:
34+
ansible-playbook -i $(HOSTS_INI_FILE) $(5GC_ROOT_DIR)/sriov.yml --tags install \
35+
--extra-vars "ROOT_DIR=$(ROOT_DIR)" --extra-vars $(EXTRA_VARS)
36+
37+
#### e. Provision core ####
3338
5gc-core-install:
3439
ansible-playbook -i $(HOSTS_INI_FILE) $(5GC_ROOT_DIR)/core.yml --tags install \
3540
--extra-vars "ROOT_DIR=$(ROOT_DIR)" --extra-vars $(EXTRA_VARS)
@@ -39,7 +44,7 @@ export EXTRA_VARS ?= "@$(5GC_ROOT_DIR)/vars/main.yml"
3944
5gc-core-reset: 5gc-core-uninstall 5gc-core-install
4045

4146

42-
#### e. Provision Multiple UPF ###
47+
#### f. Provision Multiple UPF ###
4348
5gc-upf-install:
4449
ansible-playbook -i $(HOSTS_INI_FILE) $(5GC_ROOT_DIR)/upf.yml --tags install \
4550
--extra-vars "ROOT_DIR=$(ROOT_DIR)" --extra-vars $(EXTRA_VARS)
Lines changed: 360 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,360 @@
1+
# SPDX-FileCopyrightText: 2022-present Intel Corporation
2+
# Copyright 2019-present Open Networking Foundation
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
# Disable 4G Control Plane
7+
omec-control-plane:
8+
enable4G: false
9+
10+
# Disable 5G RAN Simulator
11+
5g-ran-sim:
12+
enable: false
13+
14+
# Override values for 5g-control-plane Helm Chart
15+
# https://github.com/omec-project/sdcore-helm-charts/blob/main/5g-control-plane/values.yaml
16+
5g-control-plane:
17+
enable5G: true
18+
images:
19+
repository: "" # defaults to Docker Hub
20+
#tags:
21+
# amf: <amf image tag>
22+
# refer to above Helm Chart to add other NF images
23+
24+
kafka:
25+
deploy: true
26+
27+
mongodb:
28+
usePassword: false
29+
persistence:
30+
enabled: false
31+
architecture: replicaset
32+
replicaCount: 2
33+
resources:
34+
enabled: false
35+
36+
config:
37+
# logger:
38+
# # network function
39+
# AMF:
40+
# debugLevel: trace
41+
# ReportCaller: false
42+
# SMF:
43+
# debugLevel: trace
44+
# ReportCaller: false
45+
46+
mongodb:
47+
name: free5gc
48+
url: mongodb://mongodb-arbiter-headless # Enable if cluster deployment required
49+
authKeysDbName: authentication
50+
authUrl: mongodb://mongodb-arbiter-headless
51+
52+
managedByConfigPod:
53+
enabled: true
54+
syncUrl: http://sdcore-adapter-v2-1.aether-roc.svc:8080/synchronize
55+
56+
sctplb:
57+
deploy: true # If enabled then deploy sctp pod
58+
ngapp:
59+
externalIp: {{ core.amf.ip }}
60+
port: 38412
61+
62+
upfadapter:
63+
deploy: true # If enabled then deploy upf adapter pod
64+
65+
metricfunc:
66+
deploy: true
67+
68+
# Change AMF config here if rquired
69+
# Most of the AMF config comes from Slice APIs but some of the config is
70+
# directly provided through Helm Charts
71+
amf:
72+
cfgFiles:
73+
amfcfg.conf:
74+
configuration:
75+
enableDBStore: true # Store AMF subscribers in the datastore
76+
77+
# SMF config override. Refer to Helm Charts values for more options
78+
smf:
79+
cfgFiles:
80+
smfcfg.conf:
81+
configuration:
82+
enableDBStore: true # Store SMF subscribers in the datastore
83+
84+
#pcf:
85+
# cfgFiles:
86+
# pcfcfg.conf:
87+
# configuration:
88+
89+
nrf:
90+
cfgFiles:
91+
nrfcfg.conf:
92+
configuration:
93+
mongoDBStreamEnable: false # enable/disable MongoDB stream in NRF
94+
nfProfileExpiryEnable: true # If enabled, remove NF profile if no keepalive received
95+
nfKeepAliveTime: 60 # default timeout for NF profiles
96+
97+
98+
# Override values for omec-sub-provision (subscriber) Helm Chart
99+
# https://github.com/omec-project/sdcore-helm-charts/blob/main/omec-sub-provision/values.yaml
100+
# ***Note: Most of these values can (and should) be set via ROC API***
101+
omec-sub-provision:
102+
enable: true
103+
images:
104+
repository: "" # defaults to Docker Hub
105+
#tags:
106+
# simapp: #add simapp override image
107+
108+
config:
109+
simapp:
110+
cfgFiles:
111+
simapp.yaml:
112+
configuration:
113+
provision-network-slice: {{ core.standalone | string }} # if enabled, Device Groups & Slices configure by simapp
114+
sub-provision-endpt:
115+
addr: webui.omec.svc.cluster.local # subscriber configuation endpoint.
116+
# sub-proxy-endpt: # used if subscriber proxy is enabled in the ROC.
117+
# addr: subscriber-proxy.aether-roc.svc.cluster.local
118+
# port: 5000
119+
120+
# Configure Subscriber IMSIs and their security details.
121+
# You can have any number of subscriber ranges
122+
# This block is always necessary to establish range(s) of valid IMSIs
123+
subscribers:
124+
- ueId-start: "208930100007487"
125+
ueId-end: "208930100007500"
126+
plmnId: "20893"
127+
opc: "981d464c7c52eb6e5036234984ad0bcf"
128+
op: ""
129+
key: "5122250214c33e723a5dd523fc145fc0"
130+
sequenceNumber: "16f3b3f70fc2"
131+
- ueId-start: "208930100007501"
132+
ueId-end: "208930100007586"
133+
plmnId: "20893"
134+
opc: "981d464c7c52eb6e5036234984ad0bcf"
135+
op: ""
136+
key: "5122250214c33e723a5dd523fc145fc0"
137+
sequenceNumber: "16f3b3f70fc2"
138+
139+
# Configure Device Groups (ignored if provision-network-slice is disabled)
140+
device-groups:
141+
- name: "5g-gnbsim-user-group1"
142+
imsis:
143+
- "208930100007487"
144+
- "208930100007488"
145+
- "208930100007489"
146+
- "208930100007490"
147+
- "208930100007491"
148+
- "208930100007492"
149+
- "208930100007493"
150+
- "208930100007494"
151+
- "208930100007495"
152+
- "208930100007496"
153+
- "208930100007497"
154+
- "208930100007498"
155+
- "208930100007499"
156+
- "208930100007500"
157+
- "208930100007501"
158+
- "208930100007502"
159+
- "208930100007503"
160+
- "208930100007504"
161+
- "208930100007505"
162+
- "208930100007506"
163+
- "208930100007507"
164+
- "208930100007508"
165+
- "208930100007509"
166+
- "208930100007510"
167+
- "208930100007511"
168+
- "208930100007512"
169+
- "208930100007513"
170+
- "208930100007514"
171+
- "208930100007515"
172+
- "208930100007516"
173+
- "208930100007517"
174+
- "208930100007518"
175+
- "208930100007519"
176+
- "208930100007520"
177+
- "208930100007521"
178+
- "208930100007522"
179+
- "208930100007523"
180+
- "208930100007524"
181+
- "208930100007525"
182+
- "208930100007526"
183+
- "208930100007527"
184+
- "208930100007528"
185+
- "208930100007529"
186+
- "208930100007530"
187+
- "208930100007531"
188+
- "208930100007532"
189+
- "208930100007533"
190+
- "208930100007534"
191+
- "208930100007535"
192+
- "208930100007536"
193+
- "208930100007537"
194+
- "208930100007538"
195+
- "208930100007539"
196+
- "208930100007540"
197+
- "208930100007541"
198+
- "208930100007542"
199+
- "208930100007543"
200+
- "208930100007544"
201+
- "208930100007545"
202+
- "208930100007546"
203+
- "208930100007547"
204+
- "208930100007548"
205+
- "208930100007549"
206+
- "208930100007550"
207+
- "208930100007551"
208+
- "208930100007552"
209+
- "208930100007553"
210+
- "208930100007554"
211+
- "208930100007555"
212+
- "208930100007556"
213+
- "208930100007557"
214+
- "208930100007558"
215+
- "208930100007559"
216+
- "208930100007560"
217+
- "208930100007561"
218+
- "208930100007562"
219+
- "208930100007563"
220+
- "208930100007564"
221+
- "208930100007565"
222+
- "208930100007566"
223+
- "208930100007567"
224+
- "208930100007568"
225+
- "208930100007569"
226+
- "208930100007570"
227+
- "208930100007571"
228+
- "208930100007572"
229+
- "208930100007573"
230+
- "208930100007574"
231+
- "208930100007575"
232+
- "208930100007576"
233+
- "208930100007577"
234+
- "208930100007578"
235+
- "208930100007579"
236+
- "208930100007580"
237+
- "208930100007581"
238+
- "208930100007582"
239+
- "208930100007583"
240+
- "208930100007584"
241+
- "208930100007585"
242+
- "208930100007586"
243+
ip-domain-name: "pool1"
244+
ip-domain-expanded:
245+
dnn: internet
246+
dns-primary: "8.8.8.8" # Value is sent to UE
247+
mtu: 1460 # Value is sent to UE when PDU Session Established
248+
ue-ip-pool: "172.250.1.0/16" # IP address pool for subscribers
249+
ue-dnn-qos:
250+
dnn-mbr-downlink: 1000 # UE level downlink QoS (Maximum bit rate per UE)
251+
dnn-mbr-uplink: 1000 # UE level uplink QoS (Maximum bit rate per UE)
252+
bitrate-unit: Mbps # Unit for above QoS rates
253+
traffic-class: # Default bearer QCI/ARP (not used in 5G)
254+
name: "platinum"
255+
qci: 9
256+
arp: 6
257+
pdb: 300
258+
pelr: 6
259+
site-info: "enterprise"
260+
# UPF allocates IP address if there is only 1 device-group
261+
# SMF allocates IP address if there is >1 device-group
262+
263+
# Configure Network Slices (ignored if provision-network-slice is disabled)
264+
network-slices:
265+
- name: "default" # can be any unique slice name
266+
slice-id: # must match with slice configured in gNB, UE
267+
sd: "010203"
268+
sst: 1
269+
site-device-group:
270+
- "5g-gnbsim-user-group1" # All UEs in this device-group are assigned to this slice
271+
# Applicaiton filters control what each user can access.
272+
# Default, allow access to all applications
273+
application-filtering-rules:
274+
- rule-name: "ALLOW-ALL"
275+
priority: 250
276+
action: "permit"
277+
endpoint: "0.0.0.0/0"
278+
site-info:
279+
# Provide gNBs and UPF details and also PLMN for the site
280+
gNodeBs:
281+
- name: "gnb1"
282+
tac: 1
283+
- name: "gnb2"
284+
tac: 2
285+
plmn:
286+
mcc: "208"
287+
mnc: "93"
288+
site-name: "enterprise"
289+
upf:
290+
upf-name: "upf" # associated UPF for this slice. One UPF per Slice.
291+
upf-port: 8805
292+
293+
# Override values for omec-user-plane Helm Chart
294+
# https://github.com/omec-project/sdcore-helm-charts/blob/main/bess-upf/values.yaml
295+
omec-user-plane:
296+
enable: true
297+
nodeSelectors:
298+
enabled: true
299+
resources:
300+
enabled: true
301+
images:
302+
repository: "" # defaults to Docker Hub
303+
# following two lines pull busybox from Docker Hub instead of Aether Registry
304+
tags:
305+
tools: omecproject/busybox:stable
306+
# uncomment following section to add update bess image tag
307+
#tags:
308+
# bess: <bess image tag>
309+
# pfcpiface: <pfcp image tag>
310+
config:
311+
upf:
312+
name: "oaisim"
313+
privileged: true
314+
sriov:
315+
enabled: true # SRIOV is enabled
316+
hugepage:
317+
enabled: true # Should be enabled if DPDK is enabled
318+
cniPlugin: vfioveth # Can be any other plugin. Dictates how IP address are assigned
319+
ipam: static
320+
routes:
321+
- to: {{ ansible_default_ipv4.address }}
322+
via: 169.254.1.1
323+
enb:
324+
subnet: {{ ran_subnet }} # Subnet for the gNB network
325+
access:
326+
iface: {{ core.data_iface }}
327+
resourceName: "intel.com/intel_sriov_vfio_access"
328+
gateway: 192.168.252.1
329+
ip: 192.168.252.3/24
330+
core:
331+
iface: {{ core.data_iface }}
332+
resourceName: "intel.com/intel_sriov_vfio_core"
333+
gateway: 192.168.250.1
334+
ip: 192.168.250.3/24
335+
cfgFiles:
336+
upf.jsonc:
337+
mode: dpdk
338+
hwcksum: true
339+
log_level: "trace"
340+
measure_upf: true
341+
measure_flow: true
342+
gtppsc: true # Extension header enabled in 5G.
343+
# DDP is INTEL NIC's specific feature (supported in E810 series)
344+
# which helps to improve UPF packet processing performance.
345+
# For more details on DDP feature and its usage please refer
346+
# "https://www.intel.com/content/www/us/en/download/19660/intel-ethernet-800-series-dynamic-device-personalization-ddp-for-telecommunication-comms-package.html"
347+
ddp: false # this parameter is only used/relevant when deploying the UPF in 'dpdk' mode
348+
cpiface:
349+
dnn: "internet" # Must match Slice dnn
350+
hostname: "upf"
351+
#http_port: "8080"
352+
enable_ue_ip_alloc: false # If true, UPF allocates address from following pool
353+
ue_ip_pool: "172.250.0.0/16" # IP pool used UEs if enable_ue_ip_alloc=true
354+
slice_rate_limit_config: # Slice-level rate limiting (also controlled by ROC)
355+
# Uplink
356+
n6_bps: 10000000000 # 10Gbps
357+
n6_burst_bytes: 12500000 # 10ms * 10Gbps
358+
# Downlink
359+
n3_bps: 10000000000 # 10Gbps
360+
n3_burst_bytes: 12500000 # 10ms * 10Gbps

0 commit comments

Comments
 (0)