Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • yassir63/oai-cn5g-fed
  • oai_test/oai-cn5g-fed
  • rupadhya/oai-cn5g-fed
  • limx1980/oai-cn5g-fed
  • tanish/oai-cn5g-fed
  • batuhanduyuler/oai-cn5g-fed
  • turletti/oai-cn5g-fed
  • niboucha/oai-cn5g-fed
  • white/oai-cn5g-fed
  • oai/cn5g/oai-cn5g-fed
10 results
Show changes
Commits on Source (776)
Showing
with 3086 additions and 25 deletions
......@@ -2,7 +2,18 @@ archives/
DS-TEST-RESULTS/
ci-scripts/mysql-complete.cmd
ci-scripts/temp/ci-*.sh
spgw_u.conf
deploy_results_oai_cn5g.html
ds_tester_results_oai_cn5g.html
cn5g_fed_docker_logs.zip
charts/oai-5g-core/oai-5g-mini/Chart.lock
charts/oai-5g-core/oai-5g-mini/charts/
charts/oai-5g-core/oai-5g-basic/Chart.lock
charts/oai-5g-core/oai-5g-basic/charts/
charts/oai-5g-core/oai-5g-advance/Chart.lock
charts/oai-5g-core/oai-5g-advance/charts/
charts/e2e_scenarios/case1/Chart.lock
charts/e2e_scenarios/case1/charts/
charts/e2e_scenarios/case2/Chart.lock
charts/e2e_scenarios/case2/charts/
charts/e2e_scenarios/case3/Chart.lock
charts/e2e_scenarios/case3/charts/
......@@ -4,9 +4,36 @@
[submodule "component/oai-smf"]
path = component/oai-smf
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-smf.git
[submodule "component/oai-upf-equivalent"]
path = component/oai-upf-equivalent
url = https://github.com/OPENAIRINTERFACE/openair-spgwu-tiny.git
[submodule "component/oai-nrf"]
path = component/oai-nrf
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nrf.git
[submodule "component/oai-ausf"]
path = component/oai-ausf
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-ausf.git
[submodule "component/oai-udm"]
path = component/oai-udm
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-udm.git
[submodule "component/oai-udr"]
path = component/oai-udr
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-udr.git
[submodule "component/oai-upf-vpp"]
path = component/oai-upf-vpp
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-upf-vpp.git
[submodule "component/oai-nssf"]
path = component/oai-nssf
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nssf.git
[submodule "component/oai-nef"]
path = component/oai-nef
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nef
[submodule "component/oai-pcf"]
path = component/oai-pcf
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-pcf.git
[submodule "ci-scripts/common"]
path = ci-scripts/common
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-common-ci.git
[submodule "component/oai-upf"]
path = component/oai-upf
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-upf.git
[submodule "component/oai-lmf"]
path = component/oai-lmf
url = https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-lmf.git
# RELEASE NOTES: #
## v2.1.0 -- August 2024 ##
* 1 new Network Funtion:
* LMF
* Testing
* Using a Robot Framework based test pipeline now
* Tutorials:
- Remove ipv4 addresses from basic tutorial
- Use correct SD values on DB, slicing and for VPP UPF
* Tech Debt for all Network Functions
- Stopping support for RHEL8/Rocky8 in favor of RHEL9/Rocky9
- HTTP client cpr library refactoring effort
- Move SBI models to common src git submodule
* `AMF` changes:
* Features
- Adding NRPPA protocol support
- Support Non UE N2 Info message
- Support Multiple PDU sessions service request
- Adding gNB statistics
- Adding NGAP Utils
- Adding LTTNg tracepoints for logging
- Using hexadecimal values for SD in all APIs
- Updating UE info statistics on AMF after service request
- Exposing NCGI in UE Location Report notification
- Use HTTP Request Timeout from conf file
* Fixes
- Fix issue for JSON iterator comparison
- Fix multiple sessions response handling
- Fix NF registration/deregistration when discovering NRFs from NSSF
- Fix PDU session resource context request null pointer
- Fix issue for retrieving GUTI from 5G-S-TMSI
- Fix HTTP/2 server shutdown
- Fix shutdown threads procedure
- Fix UE Context Release procedure
- Fix buffer-overflow issue
- Fix AMF UE NGAP ID (uint64_t, 40 bits)
- Fix Nas buffer allocation length
- Fix issue for N2 handover
- Fix GUTI decode
- Fix NAS Decode: check buffer length before decoding
- Fix issue for mobility registration update procedure
- Fix HTTP client by using SBI task to send HTTP request
* Tech Debt
- Cleanup common utils
- Move NAS to common src git submodule
- Move NGAP to common src git submodule
- Move conversions from AMF to common src git submodule
- Separate all in one implementation
* `AUSF` changes:
* Features
- Add connection handling mechanism
- Use HTTP Request Timeout parameter from Conf file
* Fixes
- Fix HTTP/2 server shutdown
- Fix of the shutdown for the task manager
- Fix issue for SD
* Tech Debt
- Remove NRF dependency from AUSF
- Code refactor cleanup
- Removing unneccessary packages from target images
- Cleanup AUSF client
* `NRF` changes:
* Features
- Adding debug info
* Fixes
- Fix for Boost::signals2 issue
- Fix exception handling
- Fix HTTP/2 server shutdown
* Tech Debt
- Removing unneccessary packages from target images
* `NSSF` changes:
* Fixes
- Fix HTTP/2 server shutdown
* `PCF` changes:
* Features
- Add possibility to read QoS values from file
* Fixes
- Fix HTTP/2 server shutdown
- Use new FlowDirection fix
* Tech Debt
- Resynch PCF with common source git-submodule and use utils from there
* `SMF` changes:
* Features
- Use HTTP Request Timeout parameter from Conf file
- Support advanced `UpfInfo` from config file, allows to configure different UPF flavors without NRF
- Resolve UPF from config file 10 times every 2 seconds, allowing flexibility in start order
* Fixes
- Fix multiple PDU session SEID handling
- Fix issue for PDU session establishment
- Fix: properly ending any thread and not generating seg fault when stopping smf process
- Fix N1/N2 handling between AMF and SMF when gNB exits
- Fix(handover): Check if N2 SM Info is set in HO Complete
- Fix: smf expecting CreatedPDR in n4_session_establishment_response when UPF that does not support TEID Creation
- Fix: NGAP S-AMBR encoding from bitrate string
- Fix: Allow lower-case SD values and also allow 0xSD values in config
- Fix HTTP/2 server shutdown
- Fix error message upon PFCP session establishment request
- Fix SMF crash on startup when peer UPF is not reachable
* Tech Debt
- Graph refactor, preparation for QoS handling
- Resynch SMF with common source git-submodule and use utils from there
* `PCF` changes:
* Features
- Add possibility to read QoS values from file
* Fixes
- Fix HTTP/2 server shutdown
- Use new FlowDirection fix
* Tech Debt
- Resynch PCF with common source git-submodule and use utils from there
* `UDM` changes:
* Features
- Update UDM APP structure
- Use HTTP Request Timeout parameter from Conf file
* Fixes
- Fix HTTP/2 server shutdown
* Tech Debt
- Code cleanup
- Removing unneccessary packages from target images
- Cleanup UDM client and add connection handling mechanism
* `UDR` changes:
* Features
- Add NRF connection handling mechanism
- Use HTTP Request Timeout parameter from Conf file
* Fixes
- Fix HTTP/2 server shutdown
- Fix duplicated HTTP/1 route
- Fix: remove PID section in main
* Tech Debt
- Remove NRF dependency from UDR
- Code cleanup
* `UPF` changes:
* Features
- Add connection handling between UPF and NRF
- Use HTTP Request Timeout parameter from Conf file
- QoS initial support
- N4 interoperability improved
- Performance improvement: CPU usage is further reduced
* Fixes
- Fixes: thread management especially at shutdown.
- Fix FDQN IPv4-only resolution
- Fix Using SD in string hex in UPF profile to send to NRF
- Fix to update TEID after a reconnection with FiveG_S_TMSI
* Tech Debt
- Remove NRF dependency from UPF
- Bumping up libbpf and bpftool versions:
- libbpf to `master` (currently above `v1.4.5`)
- bpftool to `v7.3.0`
- This should allow to build on newer systems
## v2.0.1 -- January 2024 ##
* `AMF` changes:
* Features
- NGAP AMF status indication
- Add UE Retention Information support
- Update NAS with Rel 16.14.0 IEs
* Refactoring code for Encode/Decode functions
* Cleanup NAS lib
* Fixes
- Fix typo for N1N2MessageSubscribe
- Fix issue when receiving PDU session reject from SMF
* Tech debt
- Reformating of the SCTP code
- Refactor promise handling
- Removing dependencies to libconfig++ (Only YAML file can be read as configuration)
* `SMF` changes:
* Features
- Add N1/N2 info in the message response to AMF if available
* Fixes
- Remove NRF dependency from SMF
* Tech debt
- Refactor SMF PFCP associations to always use UPF info
* `UDM` changes:
* Fixes
- Remove NRF dependency from SMF
* `UDR` changes:
* Tech debt
- Fixed builds
- Refactor mongoDB
## v2.0.0 -- December 2023 ##
* 2 new Network Functions:
* NWDAF
* UPF: we are obsoleting `openair-spgwu-tiny` in favor of 5G-only UPF implementation
- It supports 2 implementations:
* The `Simple-Switch` from `openair-spgwu-tiny`
* An `eBPF`-based solution
* Tutorials:
* All tutorials are now using `oai-upf` instead of `openair-spgwu-tiny`
* New tutorials:
- Mongo-DB for User Subscription management (instead of mysql) example
- A traffic steering example
- A traffic redirection example
- UPF simple example using the eBPF implementation
- NWDAF simple example
* Helm Charts:
* All charts are now using `oai-upf` instead of `openair-spgwu-tiny`
* Removed the use of `helm-spray`
* Charts updated to latest YAML configuration scheme
* Common features/fixes for all Network Functions:
* Support for a YAML-based configuration file
- Make DNS configurable per DNN
- Add CIDR DNN configuration
- implement UpfInfo parsing for YAML config
* Tech Debt for all Network Functions:
* Updated common models to 3GPP TS 29.571 Release 16.13.0 and moved them to the shared common submodule
* Published images on Docker-Hub are using now Ubuntu-22 as base image
- Ubuntu-18 is no longer supported
* Switching to clang-format-12
* `AMF` changes:
* Features
- Service request handling
- Update API Server name/structure
- N2 info notify
- Updated NGAP library to 38.413 V16.14.0
- Location Report Notification for N2 Handover
- LMF Determine Location & DownlinkUeAssociatedNrppaTranport support
* Fixes
- Fixed: Add NSSAI info in AMF profile to send to NRF
- Fixed: Http1/2 - only spawning one HTTP server
- Fixed: HTTP2 support for Configuration/Location-related APIs
- Fixed: Display NRCellID in hex to associate between UE and gNB
- Fixed: Use AMF ID as string to register to NRF
- Added missing HTTP2 APIs for N1 Message Notify, N1N2MessageSubscribe/Unsubscribe, Status Notification
- Free allocated memory in Destructor of NGAP msg instead of using Delete operator
- Added retry mechanism for NF Registration/Update
- Removed unnecessary config parameter: generate_random (database)
- Fixed N1/N2 message unsubscribe API
- Fixed issue when decoding PduSessionResourceSetupResponse
* Tech debt
- Code refactoring: ITTI between SBI and other tasks, NGAP IEs
- Code cleanup: NAS IEs, N2, removed usused code, Used new instead of malloc/calloc for N2
* `NRF` changes:
* Features
- Added heartbeat parameter
* Fixes
- Returning only REGISTERED NFs from Search result
- Removing suspended NFs after timeout
* `PCF` changes:
* Features
- Add support for traffic steering rules
- Add support for redirection rules
* Fixes
- Handling boolean values in yaml parsing for policies
* Tech debt
- Updated PCF models to Release 16.17.0 and moved them to the shared common submodule
* `SMF` changes:
* Features
- Support getting SMF configuration with the new SMF configuration API
- Handled traffic redirection PCF policy
- Giving users possibility to configure SMF info themselves
- Removed SBI DNS lookup upon start of SMF
- De-register to NRF on exit
- Enabled event exposure in HTTP/2 API server
* Fixes
- Fixed ULCL support in SM context update procedure
- Fixed SEID assignment in N4 session establishment request
- Fixed Service Request handling
- Fixed YAML config issues
- Fixed Handle IE Usage Report in session deletion response
- Fixed SMF selection (NRF registration) when local subscription info is not used
* Tech debt
- Updated SMF-specific NRF models to Release 16.15.0 and moved them to the shared common submodule
- Updated PCF models to Release 16.17.0 and moved them to the shared common submodule
* `UDM` changes:
* Fixes
- Fixed HTTP/2 issue for SDM sm-data API
* `UDR` changes:
* Features
- SessionManagementSubscriptionData GET ALL and DELETE apis
- Session management subscription DATA PUT api new
- UDR configuration APIs
- Added support for MongoDB database choice
- Added option to configure database port
* Fixes
- Fixed hardcoded HTTP/2 port
- Added missing HTTP2 for Authentication Data and Session Management Subscription Data
## v1.5.1 -- May 2023 ##
* Tutorials:
* All basic-based tutorials are now only in HTTP/2 mode and with NRF
- All non-NRF basic deployments have been obsoleted
* Update the helm charts and helm chart tutorial
* Testing:
* Load tester for 5000 PDU sessions
* Common features/fixes for all Network Functions:
* Code Refactoring for:
* Logging mechanism (runtime log level selection)
* Installation / build scripts
* Continuous Integration scripts
* Published images on Docker-Hub is using now Ubuntu-20 as base image
* We will soon obsolete the build system for Ubuntu18.04
* `AMF` changes:
* Fix Service Request handling (Service Type: Signalling)
* Fix N2 handover
* Support usage of SUPI-type IMSI
* Fix mapping between RAN UE NGAP ID and UE context
* Fix SBI port for UDM in case of FQDN resolution
* Fix TMSI handling
* Fix PDU Session Ressource Release Response message
* Fix issue for decoding MSIN with an odd number of digits
* Fix usage of lower-case for DNN value (case insensitive)
* Fix: NSSF port number was not read from config file
* Code Refactoring for:
* NAS layer
* Registration Complete Message
* UE context refactor
* `NRF` changes:
* Tentative fix for a failed assertion of Boost signal
* HTTP2 fix for json response data formatting
* `PCF` changes:
* Add HTTP/2 support
* `SMF` changes:
* Fix N1N2 Content message
* Remove ranInfo field in n2infocontainer
* Fix encoding NAS header
* Resolved QoS Flow info missing in N2 Handover Preparation
* Fix SUPI format: Use IMSI as SUPI
* Fix: Send PDU Session Reject when PDU session fails before SMF procedure is started
* Fix HTTP header
* Fixing config parameter read
* Fix for IE Redirect Information
* Fix: Associate node id based on node id type
* Use N3 ip address from NF profile if provided
* Fix: UL TEID for multiple created PDR
* Fix for encode/decode of create QER IE
* Support for DL PDR in session establishment
* Use NWI from config file when no UPF profile is associated
* Fix HTTP/2 issue with PCF
* `UDM` changes:
* HTTP2 Fix: Removed duplicate request handler
* `UDR` changes:
* Fix PLMN ID for SessionManagementSubscriptionData (HTTP2)
* logging: Add UE ID in the log
* Retry NF Register if registration failed
## v1.5.0 -- January 2023 ##
* New tutorials:
- UL CL with policies --> `docs/DEPLOY_SA5G_ULCL.md`
- Testing with `OMEC-gnbsim` --> `docs/DEPLOY_SA5G_WITH_OMEC_GNBSIM.md`
- SD-Fabric usage
* Update the helm charts and helm chart tutorial
* Switched tutorials to latest `mysql` version (`8.0`)
* Fixes in slicing tutorial to use latest OAI RAN images
* Common features/fixes for all Network Functions:
- Proper exit on SIGTERM
- jinja2-based configuration file
- Ubuntu22 and cgroup2 support (even on `SPGWU-TINY`)
- Giving some time for FQDN resolution
- Release mode does not use libasan anymore
- Health-checks are natively in the distributed images
* `AMF` changes:
- Minimal fix for Decoding RegistrationRequest from COTS UE
- Fix small issue for NGAP lib
- NGAP IES code refactoring
- Fix PDU session release
- Refactor NGAP message callback
- Fix nake ptr
- Fix UL NAS transport
- Fix typo for Rejected NSSAI
- PDU session release supported
- Update SST type (int instead of string) in conf file
- Events exposure: location report with empty supi fixed
- small fix for event exposure loss of connectivity
- Minor fix for encoding no SD in PduSessionResourceSetupRequest
- Fix SST/SD on cots ue
- Docker images improvements
* `AUSF` changes:
- Docker images improvements
* `NEF` changes:
- Docker images improvements
* `NRF` changes:
- Enhance UPF profile in NRF and fix bug in SBI when body is too long
- Added Status change notification
- Docker images improvements
* `NSSF` changes:
- Docker images improvements
* `PCF` changes:
- Initial release
- NRF registration
- Add Npcf_SMPolicyControl API Create, Update, Delete and Get procedures
- Add file based policy provisioning
- Add policy decision feature based on SUPI, DNN, Slice and default policy
* `SMF` changes:
- Feature improvements:
* PDU SESS EST + Qos Monitoring events exposure
* PFCP: removing dependency to folly
* Add IEs to support UE Rel 16
* Added and integrated UPF graph instead of PFCP associations list
* Supported scenarios:
- I-UPF / A-UPF N9
- UL CL
* Implement Npcf_SMPolicyControl API client
* Changing the configuration file to jinja2-based approach
* At least one slice (slice #0) shall be completely defined
- Fixes:
* Fix openapi cause
* Fix small issue for Mime parser for normal message
* Fix Volume Threshold IE to PFCP Create URR IE
* Fix mcc mnc 00 udr
* Fix issues to work with Release-16 COTS UE
* Fix issue when there's no valid reply from UPF for PDU session release
* Fix Protocol identifier Selected Bearer Control Mode
* Fix issue for Static UE IP Addr
* Fix URR ID in IE Create URR (post UPF graph implementation)
* Fix issue for Full DNN (APN Operator Identifier)
* `SPGWU-TINY` changes:
- Docker images improvements
- Ubuntu22 full support
* `UDM` changes:
- Docker images improvements
* `UDR` changes:
- Improve MySQL connection handling
- Fix issue with DNNs including special characters
- SessionManagementSubscriptionData POST API
- Fix session management subscription data
- Docker image improvements
* `UPF-VPP` changes:
- Ubuntu22.04 support
- SNSSAI fix
- Support UL CL UPF deployment
- Support I-UPF / A-UPF N9 UPF deployment
- GTP payload length fix
- Major Configuration update
## v1.4.0 -- July 2022 ##
* All official images produced by CI are pushed to `oaisoftwarealliance` Docker-Hub Team account
* New tutorial:
- My5gRAN Tester --> `docs/DEPLOY_SA5G_WITH_My5g-RANTester.md`
* Update the helm charts and helm chart tutorial
* Reduce image size for all network functions
* New wiki page to know more about variable which can be configured for each network function
* Fix HTTP/2 support for all network functions `docker-compose/docker-compose-basic-nrf-httpv2.yaml`
* `AMF` Changes:
- Fix SCTP NG Shutdown issue
- Fix 100% CPU consumption issue
- Fix RAN UE ID display
- Fix issue for TMSI and GUTI value
- Fix for handling S-NSSAI
- Remove OPC value from AMF configuration
- Support for Ubuntu 20.04 bare-metal installation
* `AUSF` Changes:
- Remove unused packages
- HTTP/2 support for SBI interface
- NRF Registration and heartbeat exchange
* `NRF` Changes:
- Remove unused packages
- Add NF profile handling for PCF
- HTTP/2 support for SBI interface
* `NSSF` Changes:
- Network slice selection for UE registration
- NS-AVAIBALITY API support to CREATE new slice
- Fix bare-metal setup configuration management
- HTTP/2 support for SBI interface
* `SMF` Changes:
- Fix for handling S-NSSAI
- Add support for IMS
- HTTP/2 support for SBI interface
- Add usage report feature
- Flexiable MTU
- Support for Ubuntu 20.04 bare-metal installation
* `UDM` Changes:
- Fix HTTP/2 support
- NRF Registration and heartbeat exchange
* `UDR` Changes:
- Fix sync failure issue
- Fix issue to support Slice Selection Subscription Data retrieval
- NRF Registration and heartbeat exchange
* `SPGWU-TINY` Changes:
- Fix for handling S-NSSAI
- Add support for multiple slices via config file
- Allowed reusing GTPv1-U socket
- Fix GTPU offset sequence number
- Fix configurable number of DL threads for data path
* `UPF-VPP` Changes:
- Standalone support validated for traffic steering and redirection
- Added instructions for bare-metal installation
- Support for Ubuntu 20.04 bare-metal/docker installation
* `NEF` It is ongoing so far it is not functional
## v1.3.0 -- January 2022 ##
* Incorporation of new public network functions:
- NSSF
* New tutorials:
- Slicing --> `docs/DEPLOY_SA5G_SLICING.md`
- Static UE IP address to emulate private network --> `docs/DEPLOY_SA5G_BASIC_STATIC_UE_IP.md`
* `AMF` Changes:
- Periodic Registration Update
- Support for Event Exposure (Registration State Report)
- Implicit Deregistration Timer
- Mobile Reachable Timer
- Mobility Registration Update
- NRF Selection (via NSSF)
- Fix for validation of SMF Info
- Fix RAN UE NGAP Id
- Fix SMF Selection SD
- Fix NSSAI mismatch
- Fix Service Request
- Fix HTTP2
- Fix MCC such as 001
- Docker optimization
* `AUSF` Changes:
- HTTP2 Support
- Docker optimization
* `NRF` Changes:
- NF profile update
- Docker optimization
* `NSSF` Changes:
- Initial Public Release
- Docker Optimization
* `SMF` Changes:
- Update NWI from NF profile
- Update SMF profile
- Added retry for PFCP association request
- More flexible DNN/IP ranges when deploying container
- Fix retrieving the list of NWI
- Fix entreprise IE decoding
- Fix issue for UPF selection
- Fix for IE Measurement Period
- Docker optimization
* `UDM` Changes:
- Experimental support for Event Exposure
- Added HTTP2 support
- Fix static addr allocation
- Fix build issue
- Docker build optimizations
* `UDR` Changes:
- Added HTTP2 support
- Fix build issue
- Fix static addr allocation
- Docker build optimizations
* `SPGWU-TINY` Changes:
- Disable association request if NF registration is enabled
* `UPF-VPP` Changes:
- Upgrade to UPG plugin stable/1.2
- Build fixes
- Deployment fixes (wait launch of NRF Client until VPP is getting ready)
## v1.2.1 -- October 2021 ##
* Incorporation of new public network functions:
- UPF-VPP
* New tutorial with this new function
* `AMF` Changes:
- Fix build issue
- Tentative fix for ngKSI already in use
- Initial implementation for Mobility registration update
* `AUSF` Changes:
- Fix build issue
* `NRF` Changes:
- Fix build issue
* `SMF` Changes:
- Timers handling: T3591/T3952
- Fix build issue
- Fix UPF selection
* `UDM` Changes:
- Fix build issue
* `UDR` Changes:
- Fix build issue
* `SPGWU-TINY` Changes:
- Fix build issue
- Fix GTPU DL encapsulation: 8 extraneous bytes
* `UPF-VPP` Changes:
- Initial Public Release
- Full support for Ubuntu18 and RHEL7
- CI Build support
- Tutorial validated
## v1.2.0 -- September 2021 ##
* Incorporation of new public network functions:
- AUSF
- UDM
- UDR
* New tutorials with these new functions
* CI improvements
* `AMF` Changes:
- AUSF connection
- Support PDU Session Resource Modify procedure
- Support HTTP2
- Support AMF Event Exposure Services
- Fix NIA0, NEA2
- Fix potential AMF crash with UE/NGAP/NAS context
- Fix N2 Handover
- Fix Paging procedures
* `AUSF` Changes:
- Initial public release
- NRF registration
- with FQDN DNS resolution
- Full support for Ubuntu18 and RHEL8
* `NRF` Changes:
- Added AUSF, UDR, UDM profiles
- Updated UPF profile
* `SMF` Changes:
- Event Exposure implemented
- UPF profile update
- Support for URR query
- Bug fixes
* `UDM` Changes:
- Initial public release
- NRF registration
- with FQDN DNS resolution
- Full support for Ubuntu18 and RHEL8
* `UDR` Changes:
- Initial public release
- NRF registration
- with FQDN DNS resolution
- Proper mySQL DB deployment management
- Full support for Ubuntu18 and RHEL8
* `SPGWU-TINY` Changes:
- Adding 5G features
- HTTP2 support
## v1.1.0 -- July 2021 ##
* Improvements on Continuous Integration:
- DsTester validation on Ubuntu18 docker deployment
- DsTester validation on RHEL8 / OpenShift deployment
- Some components (such as AMF/NRF) have bracket-testing at unit level
* A lot of tutorials have been added
* `AMF` Changes:
- Session Release
- NRF registration
- with FQDN DNS resolution
- Multiple PDU support
- Bug fixes
- Full support for Ubuntu18 and RHEL8
* `NRF` Changes:
- FQDN DNS resolution
- Bug fixes
- Full support for Ubuntu18 and RHEL8
* `SMF` Changes:
- PFCP Release 16 support
- NRF registration
- with FQDN DNS resolution
- Support for multiple UPF instances
- Dotted DNN support
- Use (SST, SD) to get the subscription information
- Bug fixes
- Full support for Ubuntu18 and RHEL8
* `SPGWU-TINY` Changes:
- Adding 5G features
- NRF discovery and FQDN support
## v1.0.0 -- September 2020 ##
* Initial release
......
......@@ -5,14 +5,14 @@ We want to make contributing to this project as easy and transparent as possible
Please refer to the steps described on our website: [How to contribute to OAI](https://www.openairinterface.org/?page_id=112)
1. Sign and return a Contributor License Agreement to OAI team.
2. Create an account on [Eurecom GiLab Server](https://gitlab.eurecom.fr/users/sign_in) if you do not have any.
2. Create an account on [Eurecom GitLab Server](https://gitlab.eurecom.fr/users/sign_up) if you do not have any.
- If your email domain (`@domain.com`) is not whitelisted, please contact us (mailto:contact@openairinterface.org).
- Eurecom GitLab does NOT accept public email domains.
3. Provide the `username` of this account to the OAI team (mailto:contact@openairinterface.org) so you have developer rights on this repository.
4. The policies are described in these wiki pages: [OAI Policies](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/oai-policies-home)
- You can fork onto another hosting system. But we will **NOT** accept a pull request from a forked repository.
* This decision was made for the license reasons.
* The Continuous Integration will reject your pull request.
* This decision was made for licensing reasons.
* The Continuous Integration automatic process will reject your pull request.
- All pull requests SHALL have **`develop`** branch as target branch.
## Coding Styles ##
......@@ -49,9 +49,9 @@ By contributing to OpenAirInterface, you agree that your contributions will be l
1. You push your modified code with the new branch onto our [official GitLab repository](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed).
- Please make the name of the branch explicit and short.
2. You create a pull request from the [dedicated web page](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/merge_requests).
- The `target` (`base` in the web-page) branch **SHALL be `master`**.
- The `target` (`base` in the web-page) branch **SHALL be `develop`**.
- The `source` (`compare` in the web-page) branch is your branch.
3. Our Continuous Integration (CI) process will be triggered automatically on your proposed modified code and check the validity.
3. Our Continuous Integration (CI) process will be triggered automatically on your proposed modified code and will check the validity.
- Check build
- Check some formatting rules
- Run a bunch of tests
......@@ -59,9 +59,7 @@ By contributing to OpenAirInterface, you agree that your contributions will be l
- The step 3. will be again automatically triggered on this new commit.
- Please wait that your run is finished before committing and pushing new modifications on your source branch.
- That will allow fairness on the CI usage to other contributors.
4. When this automated process passes, one of our CI administrators will review your changes or assign a senior contributor
to do a peer-review.
4. When this automated process passes, one of our CI administrators will review your changes or assign a senior contributor to do a peer-review.
5. Once the peer reviewer accepts your modification, one of our CI administrators will accept and merge your pull request
- The CI will run again on the new `develop` branch commit.
- The source branch WILL be deleted by one of our CI administrators.
------------------------------------------------------------------------------
OPENAIR-CN-5G
An implementation of the 5G Core network by the OpenAirInterface community.
------------------------------------------------------------------------------
OPENAIR-CN-5G is an implementation of the 3GPP specifications for the 5G Core Network.
<h1 align="center">
<a href="https://openairinterface.org/"><img src="https://openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png" alt="OAI" width="550"></a>
</h1>
<p align="center">
<a href="https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-OAI--Public--V1.1-blue" alt="License"></a>
<a href="https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-upf-vpp/-/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue" alt="License"></a>
<a href="https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed/-/releases"><img alt="GitLab Release (custom instance)" src="https://img.shields.io/gitlab/v/release/oai/cn5g/oai-cn5g-fed?gitlab_url=https%3A%2F%2Fgitlab.eurecom.fr&include_prereleases&sort=semver"></a>
<a href="https://releases.ubuntu.com/20.04/"><img src="https://img.shields.io/badge/OS-Ubuntu20-Green" alt="Supported OS"></a>
<a href="https://releases.ubuntu.com/22.04/"><img src="https://img.shields.io/badge/OS-Ubuntu22-Green" alt="Supported OS"></a>
<a href="https://www.redhat.com/en/enterprise-linux-9"><img src="https://img.shields.io/badge/OS-RHEL9-Green" alt="Supported OS"></a>
</p>
<p align="center">
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-AMF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-AMF%2F&label=build%20AMF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-AUSF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-AUSF%2F&label=build%20AUSF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-LMF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-LMF%2F&label=build%20LMF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-NEF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-NEF%2F&label=build%20NEF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-NRF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-NRF%2F&label=build%20NRF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-NSSF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-NSSF%2F&label=build%20NSSF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-NWDAF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-NWDAF%2F&label=build%20NWDAF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-PCF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-PCF%2F&label=build%20PCF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-SMF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-SMF%2F&label=build%20SMF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-UDM/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-UDM%2F&label=build%20UDM"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-UDR/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-UDR%2F&label=build%20UDR"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-UPF/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-UPF%2F&label=build%20UPF"></a>
<a href="https://jenkins-oai.eurecom.fr/job/OAI-CN5G-UPF-VPP/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FOAI-CN5G-UPF-VPP%2F&label=build%20UPF-VPP"></a>
</p>
<p align="center">
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-amf"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-amf?label=amf%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-ausf"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-ausf?label=ausf%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-lmf"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-lmf?label=lmf%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-nef"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-nef?label=nef%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-nrf"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-nrf?label=nrf%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-nssf"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-nssf?label=nssf%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-pcf"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-pcf?label=pcf%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-smf"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-smf?label=smf%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-udm"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-udm?label=udm%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-udr"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-udr?label=udr%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-upf"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-upf?label=upf%20docker%20pulls"></a>
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-upf-vpp"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-upf-vpp?label=upf-vpp%20docker%20pulls"></a>
</p>
<h2 align="center">
OPENAIR-CN-5G: An implementation of the 5G Core network by the OpenAirInterface community.
</h2>
`OPENAIR-CN-5G` is an implementation of the 3GPP specifications for the 5G Core Network.
At the moment, it contains the following network elements:
* Access and Mobility Management Function (**AMF**)
* Session Management Function (**SMF**)
* User Plane Function (**UPF**)
Each has its own repository.
* Access and Mobility Management Function (**[AMF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-amf)**)
* Authentication Server Management Function (**[AUSF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-ausf)**)
* Location Management Function (**[LMF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-lmf)**)
* Network Exposure Function (**[NEF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nef)**)
* Network Repository Function (**[NRF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nrf)**)
* Network Slicing Selection Function (**[NSSF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nssf)**)
* Network Data Analytics Function (**[NWDAF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-nwdaf)**)
* Policy Control Function (**[PCF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-pcf)**)
* Session Management Function (**[SMF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-smf)**)
* Unified Data Management (**[UDM](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-udm)**)
* Unified Data Repository (**[UDR](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-udr)**)
* User Plane Function (**UPF**) with 2 variants:
* Simple Implementation (with a eBPF option) (**[UPF](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-upf)**)
* VPP-Based Implementation (**[UPF-VPP](https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-upf-vpp)**)
* Unstructured Data Storage Function (**UDSF**)
Each has its own repository. Some of these repositories are still private, soon to be released.
This repository is a **Federation of the OpenAir CN 5G repositories**.
......@@ -21,6 +74,7 @@ Its main purpose is for Continuous Integration scripting.
It also hosts some tutorials.
* [How to do a container-based simple deployment](docs/DEPLOY_HOME.md).
* [How to create a container-based developer environment](docs/DEBUG_5G_CORE.md).
# Licence info
......@@ -30,12 +84,20 @@ See [OAI Website for more details](https://www.openairinterface.org/?page_id=698
The text for `OAI Public License V1.1` is also available under [LICENSE](LICENSE)
file at the root of this repository.
Note that the `UPF-VPP` implementation is distributed under `Apache V2.0 License`.
See [Apache Website for more details](http://www.apache.org/licenses/LICENSE-2.0).
# Collaborative work
This source code is managed through a GITLAB server, a collaborative development platform.
Process is explained in [CONTRIBUTING](CONTRIBUTING.md) file.
If you wish to discuss development topics, we have a weekly one-hour meeting every Tuesday at 11AM CET.
The meeting details are available through this [ics file](./docs/meeting_invitations/invite-2024.ics).
# Contribution requests
In a general way, anybody who is willing can contribute on any part of the
......
apiVersion: v2
name: monolithic-ran
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: 2.1.0
description: Charts for testing monolithic ran use case
appVersion: 2.1.0
keywords:
- 5GCN
- AMF
- SMF
- NRF
- UPF
- UDM
- UDR
- AUSF
- gNB
- NRUE
# - Traffic_server
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org
dependencies:
- condition: mysql.enabled
name: mysql
repository: "file://../../oai-5g-core/mysql"
version: 9.0.1
- condition: oai-nrf.enabled
name: oai-nrf
repository: "file://../../oai-5g-core/oai-nrf"
version: v2.1.0
- condition: oai-udr.enabled
name: oai-udr
repository: "file://../../oai-5g-core/oai-udr"
version: v2.1.0
- condition: oai-udm.enabled
name: oai-udm
repository: "file://../../oai-5g-core/oai-udm"
version: v2.1.0
- condition: oai-ausf.enabled
name: oai-ausf
repository: "file://../../oai-5g-core/oai-ausf"
version: v2.1.0
- condition: oai-amf.enabled
name: oai-amf
repository: "file://../../oai-5g-core/oai-amf"
version: v2.1.0
- condition: oai-smf.enabled
name: oai-smf
repository: "file://../../oai-5g-core/oai-smf"
version: v2.1.0
- condition: oai-upf.enabled
name: oai-upf
repository: "file://../../oai-5g-core/oai-upf"
version: v2.1.0
- condition: oai-gnb.enabled
name: oai-gnb
repository: "file://../../oai-5g-ran/oai-gnb"
version: 2.1.0
- condition: oai-nr-ue.enabled
name: oai-nr-ue
repository: "file://../../oai-5g-ran/oai-nr-ue"
version: 2.1.0
- condition: oai-traffic-server.enabled
name: oai-traffic-server
repository: "file://../../oai-5g-core/oai-traffic-server"
version: v1
############# Common configuration
# Log level for all the NFs
log_level:
general: info
# If you enable registration, the other NFs will use the NRF discovery mechanism
register_nf:
general: yes
http_version: 2
curl_timeout: 6000 #milliseconds can be changed if the network have issues
## general single_nssai configuration
## Defines YAML anchors, which are reused in the config file
snssais:
- &embb_slice1
sst: 1
- &embb_slice2
sst: 1
sd: 000001 # in hex
############## SBI Interfaces
### Each NF takes its local SBI interfaces and remote interfaces from here, unless it gets them using NRF discovery mechanisms
nfs:
amf:
host: oai-amf
sbi:
port: 80
api_version: v1
interface_name: eth0
n2:
interface_name: eth0
port: 38412
smf:
host: oai-smf
sbi:
port: 80
api_version: v1
interface_name: eth0
n4:
interface_name: eth0
port: 8805
upf:
host: oai-upf
sbi:
port: 80
api_version: v1
interface_name: eth0
n3:
interface_name: eth0
port: 2152
n4:
interface_name: eth0
port: 8805
n6:
interface_name: eth0
n9:
interface_name: eth0
port: 2152
udm:
host: oai-udm
sbi:
port: 80
api_version: v1
interface_name: eth0
udr:
host: oai-udr
sbi:
port: 80
api_version: v1
interface_name: eth0
ausf:
host: oai-ausf
sbi:
port: 80
api_version: v1
interface_name: eth0
nrf:
host: oai-nrf
sbi:
port: 80
api_version: v1
interface_name: eth0
#### Common for UDR and AMF
database:
host: mysql
user: test
type: mysql
password: test
database_name: oai_db
generate_random: true
connection_timeout: 300 # seconds
############## NF-specific configuration
amf:
amf_name: "OAI-AMF"
# This really depends on if we want to keep the "mini" version or not
support_features_options:
enable_simple_scenario: no # "no" by default with the normal deployment scenarios with AMF/SMF/UPF/AUSF/UDM/UDR/NRF.
# set it to "yes" to use with the minimalist deployment scenario (including only AMF/SMF/UPF) by using the internal AUSF/UDM implemented inside AMF.
# There's no NRF in this scenario, SMF info is taken from "nfs" section.
enable_nssf: no
enable_smf_selection: yes
relative_capacity: 30
statistics_timer_interval: 20 # in seconds
emergency_support: false
served_guami_list:
- mcc: 001
mnc: 01
amf_region_id: 01
amf_set_id: 001
amf_pointer: 01
plmn_support_list:
- mcc: 001
mnc: 01
tac: 0x0001
nssai:
- *embb_slice1
- *embb_slice2
supported_integrity_algorithms:
- "NIA1"
- "NIA2"
supported_encryption_algorithms:
- "NEA0"
- "NEA1"
- "NEA2"
smf:
ue_mtu: 1500
support_features:
use_local_subscription_info: no # Use infos from local_subscription_info or from UDM
use_local_pcc_rules: yes # Use infos from local_pcc_rules or from PCF
# we resolve from NRF, this is just to configure usage_reporting
upfs:
- host: oai-upf
config:
enable_usage_reporting: no
ue_dns:
primary_ipv4: "10.3.2.200"
primary_ipv6: "2001:4860:4860::8888"
secondary_ipv4: "8.8.8.8"
secondary_ipv6: "2001:4860:4860::8888"
ims:
pcscf_ipv4: "192.168.70.139"
pcscf_ipv6: "fe80::7915:f408:1787:db8b"
# the DNN you configure here should be configured in "dnns"
# follows the SmfInfo datatype from 3GPP TS 29.510
smf_info:
sNssaiSmfInfoList:
- sNssai: *embb_slice1
dnnSmfInfoList:
- dnn: "oai"
- sNssai: *embb_slice2
dnnSmfInfoList:
- dnn: "ims"
local_subscription_infos:
- single_nssai: *embb_slice1
dnn: "oai"
qos_profile:
5qi: 5
session_ambr_ul: "200Mbps"
session_ambr_dl: "400Mbps"
- single_nssai: *embb_slice2
dnn: "ims"
qos_profile:
5qi: 2
session_ambr_ul: "100Mbps"
session_ambr_dl: "200Mbps"
upf:
support_features:
enable_bpf_datapath: no # If "on": BPF is used as datapath else simpleswitch is used, DEFAULT= off
enable_snat: yes # If "on": Source natting is done for UE, DEFAULT= off
remote_n6_gw: 127.0.0.1 # Dummy host since simple-switch does not use N6 GW
upf_info:
sNssaiUpfInfoList:
- sNssai: *embb_slice1
dnnUpfInfoList:
- dnn: oai
- sNssai: *embb_slice2
dnnUpfInfoList:
- dnn: ims
## DNN configuration
dnns:
- dnn: "oai"
pdu_session_type: "IPV4"
ipv4_subnet: "12.1.1.0/24"
- dnn: "ims"
pdu_session_type: "IPV4V6"
ipv4_subnet: "14.1.1.0/24"
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.global.coreNetworkConfigMap }}
data:
{{ (.Files.Glob "config.yaml").AsConfig | indent 2 | trim }}
global:
kubernetesDistribution: Vanilla #Openshift/Vanilla Kubernetes for Upstream Kubernetes
coreNetworkConfigMap: core
commonConfigMap: gnb
clusterIpServiceIpAllocation: false #this will allocate ip-address to cluster Ip service
waitForAMF: true #gNB waits for AMF
waitForRadio: true #UE waits for RFSimulated gNB
waitForNRF: true #All NFs wait for NRF to be ready
waitForUDR: true
http2Param: "--http2-prior-knowledge" # if waitForNRF is true and http2 is used for all NF then this param is needed
timeout: 1
mysql:
enabled: true
imagePullPolicy: IfNotPresent
oai5gdatabase: basic
imagePullSecrets:
- name: "regcred"
persistence:
enabled: false
resources:
requests:
memory: 512Mi
cpu: 200m
limits:
memory: 512Mi
cpu: 200m
oai-nrf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-nrf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
nodeName: ""
oai-udr:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-udr ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-udm:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-udm ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-ausf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-ausf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-amf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-amf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n2Interface:
create: false
ipAdd: "172.21.6.206"
netmask: "22"
name: "n2" #name inside the pod
## If you do not have a gateway leave the field empty
gateway: 172.21.7.254
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
resources:
define: false
limits:
nf:
cpu: 250m
memory: 256Mi
requests:
nf:
cpu: 250m
memory: 256Mi
oai-upf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-upf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
# create an extra interface for N3 in case the gNB is outside the cluster network or there is a need to have dedicated interface for N3
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n3Interface:
create: false
ipAdd: "172.21.8.95"
netmask: "22"
name: "n3" #name inside the pod
## If you do not have a gateway leave the field empty
gateway: ""
## If you don't want to add a default route in your pod then replace this field with ""
routes: ""
hostInterface: "bond0"
## For n4 it is better to re-use eth0 interface inside the pod (primary CNI of Kubernetes)
n4Interface:
create: false
ipAdd: "192.168.24.2"
netmask: "24"
name: "n4"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0"
n6Interface:
create: false
ipAdd: "192.168.22.2"
name: "n6"
netmask: "24"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0"
#NOTE: If the interface you selected for n6 does not have internet access then UE will not be able to reach internet
resources:
define: false
limits:
nf:
cpu: 500m
memory: 512Mi
requests:
nf:
cpu: 500m
memory: 512Mi
oai-traffic-server:
enabled: true
trafficServer:
repository: docker.io/oaisoftwarealliance/trf-gen-cn5g
version: latest
#pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
multus:
create: false
ipAdd: "172.21.6.12"
netmask: "22"
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
ueroute: 12.1.1.0/24
upfHost: oai-upf
routeInterface: eth0
noOfIperf3Server: 2
resources:
define: false
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
nodeSelector: {}
nodeName: ""
oai-smf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-smf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n4Interface:
create: false
ipAdd: "192.168.24.3"
netmask: "24"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
# routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 250m
memory: 256Mi
requests:
nf:
cpu: 250m
memory: 256Mi
nodeSelector: {}
nodeName: ""
oai-gnb:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-gnb
version: 2024.w32
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
# if default gatway is left blank then it will be removed
defaultGateway: ""
n2Interface:
create: false
# #name inside the pod is hardcoded right now
# name: "n2"
ipAdd: "172.21.6.90"
netmask: "22"
# if gatway is empty then it will be removed
#gateway: "172.21.7.254"
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
n3Interface:
create: false
ipAdd: "172.21.8.91"
# #name inside the pod is hardcoded right now
# name: "n3"
netmask: "22"
# if gatway is empty then it will be removed
#gateway: "172.21.11.254"
#routes:
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
ruInterface: #Only needed if using a ethernet based RU/USRP
create: false
ipAdd: "192.168.80.90"
# #name inside the pod is hardcoded right now
# name: "ru"
netmask: "24"
# if gatway is commented then it will be removed
gateway: "192.168.80.1" #In case you don't have a gateway remove it from here
## The value must be [0, master's MTU]. If commented it will masters MTU
#mtu: 1500
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
timeZone: "Europe/Paris"
useAdditionalOptions: "--sa --rfsim --log_config.global_log_options level,nocolor,time"
gnbName: "oai-gnb-rfsim"
mcc: "001" # check the information with AMF, SMF, UPF
mnc: "01" # check the information with AMF, SMF, UPF
tac: "1" # check the information with AMF
sst: "1" #currently only 4 standard values are allowed 1,2,3,4
usrp: rfsim #allowed values rfsim, b2xx, n3xx or x3xx
amfhost: "oai-amf" # amf ip-address or service-name oai-amf-svc or 172.21.6.94
n2IfName: "eth0" # if multus.n2Interface.create is true then use n2
n3IfName: "eth0" #if multus.n3Interface.create is true then use n3 or you can only use 1 interface n2 or eth0
resources:
define: false
limits:
nf:
cpu: 3000m
memory: 2Gi
requests:
nf:
cpu: 3000m
memory: 2Gi
nodeSelector: {}
nodeName: ""
oai-nr-ue:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-nr-ue
version: 2024.w32
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
config:
timeZone: "Europe/Paris"
rfSimServer: "oai-ran" # ip-address of rfsim or service name oai-gnb or oai-du
fullImsi: "001010000000100" # make sure all the below entries are present in the subscriber database
fullKey: "fec86ba6eb707ed08905757b1bb44b8f"
opc: "C42449363BBAD02B66D16BC975D77CC1"
dnn: "oai"
sst: "1" # configure according to gnb and amf, smf and upf
sd: "16777215"
usrp: "rfsim" # allowed rfsim, b2xx, n3xx, x3xx
useAdditionalOptions: "--sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time"
resources:
define: false
limits:
nf:
cpu: 2000m
memory: 2Gi
requests:
nf:
cpu: 2000m
memory: 2Gi
nodeSelector: {}
nodeName: ""
apiVersion: v2
name: f1-split
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: 2.1.0
description: Charts for testing f1-split ran use case
appVersion: 2.1.0
keywords:
- 5GCN
- AMF
- SMF
- NRF
- UPF
- UDM
- UDR
- AUSF
- CU
- DU
- NRUE
- Traffic_server
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org
dependencies:
- condition: mysql.enabled
name: mysql
repository: "file://../../oai-5g-core/mysql"
version: 9.0.1
- condition: oai-nrf.enabled
name: oai-nrf
repository: "file://../../oai-5g-core/oai-nrf"
version: v2.1.0
- condition: oai-udr.enabled
name: oai-udr
repository: "file://../../oai-5g-core/oai-udr"
version: v2.1.0
- condition: oai-udm.enabled
name: oai-udm
repository: "file://../../oai-5g-core/oai-udm"
version: v2.1.0
- condition: oai-ausf.enabled
name: oai-ausf
repository: "file://../../oai-5g-core/oai-ausf"
version: v2.1.0
- condition: oai-amf.enabled
name: oai-amf
repository: "file://../../oai-5g-core/oai-amf"
version: v2.1.0
- condition: oai-smf.enabled
name: oai-smf
repository: "file://../../oai-5g-core/oai-smf"
version: v2.1.0
- condition: oai-upf.enabled
name: oai-upf
repository: "file://../../oai-5g-core/oai-upf"
version: v2.1.0
- condition: oai-cu.enabled
name: oai-cu
repository: "file://../../oai-5g-ran/oai-cu"
version: 2.1.0
- condition: oai-du.enabled
name: oai-du
repository: "file://../../oai-5g-ran/oai-du"
version: 2.1.0
- condition: oai-nr-ue.enabled
name: oai-nr-ue
repository: "file://../../oai-5g-ran/oai-nr-ue"
version: 2.1.0
- condition: oai-traffic-server.enabled
name: oai-traffic-server
repository: "file://../../oai-5g-core/oai-traffic-server"
version: v1
############# Common configuration
# Log level for all the NFs
log_level:
general: info
# If you enable registration, the other NFs will use the NRF discovery mechanism
register_nf:
general: yes
http_version: 2
curl_timeout: 6000 #milliseconds can be changed if the network have issues
## general single_nssai configuration
## Defines YAML anchors, which are reused in the config file
snssais:
- &embb_slice1
sst: 1
- &embb_slice2
sst: 1
sd: 000001 # in hex
############## SBI Interfaces
### Each NF takes its local SBI interfaces and remote interfaces from here, unless it gets them using NRF discovery mechanisms
nfs:
amf:
host: oai-amf
sbi:
port: 80
api_version: v1
interface_name: eth0
n2:
interface_name: eth0
port: 38412
smf:
host: oai-smf
sbi:
port: 80
api_version: v1
interface_name: eth0
n4:
interface_name: eth0
port: 8805
upf:
host: oai-upf
sbi:
port: 80
api_version: v1
interface_name: eth0
n3:
interface_name: eth0
port: 2152
n4:
interface_name: eth0
port: 8805
n6:
interface_name: eth0
n9:
interface_name: eth0
port: 2152
udm:
host: oai-udm
sbi:
port: 80
api_version: v1
interface_name: eth0
udr:
host: oai-udr
sbi:
port: 80
api_version: v1
interface_name: eth0
ausf:
host: oai-ausf
sbi:
port: 80
api_version: v1
interface_name: eth0
nrf:
host: oai-nrf
sbi:
port: 80
api_version: v1
interface_name: eth0
#### Common for UDR and AMF
database:
host: mysql
user: test
type: mysql
password: test
database_name: oai_db
generate_random: true
connection_timeout: 300 # seconds
############## NF-specific configuration
amf:
amf_name: "OAI-AMF"
# This really depends on if we want to keep the "mini" version or not
support_features_options:
enable_simple_scenario: no # "no" by default with the normal deployment scenarios with AMF/SMF/UPF/AUSF/UDM/UDR/NRF.
# set it to "yes" to use with the minimalist deployment scenario (including only AMF/SMF/UPF) by using the internal AUSF/UDM implemented inside AMF.
# There's no NRF in this scenario, SMF info is taken from "nfs" section.
enable_nssf: no
enable_smf_selection: yes
relative_capacity: 30
statistics_timer_interval: 20 # in seconds
emergency_support: false
served_guami_list:
- mcc: 001
mnc: 01
amf_region_id: 01
amf_set_id: 001
amf_pointer: 01
plmn_support_list:
- mcc: 001
mnc: 01
tac: 0x0001
nssai:
- *embb_slice1
- *embb_slice2
supported_integrity_algorithms:
- "NIA1"
- "NIA2"
supported_encryption_algorithms:
- "NEA0"
- "NEA1"
- "NEA2"
smf:
ue_mtu: 1500
support_features:
use_local_subscription_info: no # Use infos from local_subscription_info or from UDM
use_local_pcc_rules: yes # Use infos from local_pcc_rules or from PCF
# we resolve from NRF, this is just to configure usage_reporting
upfs:
- host: oai-upf
config:
enable_usage_reporting: no
ue_dns:
primary_ipv4: "10.3.2.200"
primary_ipv6: "2001:4860:4860::8888"
secondary_ipv4: "8.8.8.8"
secondary_ipv6: "2001:4860:4860::8888"
ims:
pcscf_ipv4: "192.168.70.139"
pcscf_ipv6: "fe80::7915:f408:1787:db8b"
# the DNN you configure here should be configured in "dnns"
# follows the SmfInfo datatype from 3GPP TS 29.510
smf_info:
sNssaiSmfInfoList:
- sNssai: *embb_slice1
dnnSmfInfoList:
- dnn: "oai"
- sNssai: *embb_slice2
dnnSmfInfoList:
- dnn: "ims"
local_subscription_infos:
- single_nssai: *embb_slice1
dnn: "oai"
qos_profile:
5qi: 5
session_ambr_ul: "200Mbps"
session_ambr_dl: "400Mbps"
- single_nssai: *embb_slice2
dnn: "ims"
qos_profile:
5qi: 2
session_ambr_ul: "100Mbps"
session_ambr_dl: "200Mbps"
upf:
support_features:
enable_bpf_datapath: no # If "on": BPF is used as datapath else simpleswitch is used, DEFAULT= off
enable_snat: yes # If "on": Source natting is done for UE, DEFAULT= off
remote_n6_gw: 127.0.0.1 # Dummy host since simple-switch does not use N6 GW
upf_info:
sNssaiUpfInfoList:
- sNssai: *embb_slice1
dnnUpfInfoList:
- dnn: oai
- sNssai: *embb_slice2
dnnUpfInfoList:
- dnn: ims
## DNN configuration
dnns:
- dnn: "oai"
pdu_session_type: "IPV4"
ipv4_subnet: "12.1.1.0/24"
- dnn: "ims"
pdu_session_type: "IPV4V6"
ipv4_subnet: "14.1.1.0/24"
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.global.coreNetworkConfigMap }}
data:
{{ (.Files.Glob "config.yaml").AsConfig | indent 2 | trim }}
global:
kubernetesDistribution: Vanilla #Openshift/Vanilla Kubernetes for Upstream Kubernetes
coreNetworkConfigMap: core
clusterIpServiceIpAllocation: false #this will allocate ip-address to cluster Ip service
waitForAMF: true #gNB waits for AMF
waitForRadio: true #UE waits for RFSimulated gNB
waitForNRF: true #All NFs wait for NRF to be ready
waitForUDR: true
http2Param: "--http2-prior-knowledge" # if waitForNRF is true and http2 is used for all NF then this param is needed
timeout: 1
mysql:
enabled: true
imagePullPolicy: IfNotPresent
oai5gdatabase: basic
imagePullSecrets:
- name: "regcred"
persistence:
enabled: false
resources:
requests:
memory: 512Mi
cpu: 200m
limits:
memory: 512Mi
cpu: 200m
oai-nrf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-nrf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
nodeName: ""
oai-udr:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-udr ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-udm:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-udm ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-ausf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-ausf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-amf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-amf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n2Interface:
create: false
ipAdd: "172.21.6.206"
netmask: "22"
name: "n2" #name inside the pod
## If you do not have a gateway leave the field empty
gateway: 172.21.7.254
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
resources:
define: false
limits:
nf:
cpu: 250m
memory: 256Mi
requests:
nf:
cpu: 250m
memory: 256Mi
oai-upf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-upf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
# create an extra interface for N3 in case the gNB is outside the cluster network or there is a need to have dedicated interface for N3
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n3Interface:
create: false
ipAdd: "172.21.8.95"
netmask: "22"
name: "n3" #name inside the pod
## If you do not have a gateway leave the field empty
gateway: ""
## If you don't want to add a default route in your pod then replace this field with ""
routes: ""
hostInterface: "bond0"
## For n4 it is better to re-use eth0 interface inside the pod (primary CNI of Kubernetes)
n4Interface:
create: false
ipAdd: "192.168.24.2"
netmask: "24"
name: "n4"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0"
n6Interface:
create: false
ipAdd: "192.168.22.2"
name: "n6"
netmask: "24"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0"
#NOTE: If the interface you selected for n6 does not have internet access then UE will not be able to reach internet
resources:
define: false
limits:
nf:
cpu: 500m
memory: 512Mi
requests:
nf:
cpu: 500m
memory: 512Mi
oai-traffic-server:
enabled: true
trafficServer:
repository: docker.io/oaisoftwarealliance/trf-gen-cn5g
version: latest
#pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
multus:
create: false
ipAdd: "172.21.6.12"
netmask: "22"
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
ueroute: 12.1.1.0/24
upfHost: oai-upf
routeInterface: eth0
noOfIperf3Server: 2
resources:
define: false
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
nodeSelector: {}
nodeName: ""
oai-smf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-smf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n4Interface:
create: false
ipAdd: "192.168.24.3"
netmask: "24"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
# routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 250m
memory: 256Mi
requests:
nf:
cpu: 250m
memory: 256Mi
nodeSelector: {}
nodeName: ""
oai-cu:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-gnb
version: 2024.w32
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
defaultGateway: ""
f1Interface:
create: false
ipAdd: "192.168.18.22"
netmask: "24"
name: "f1"
# if gatway is commented then it will be removed
#gateway: "172.21.19.254"
#routes:
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
n2Interface:
create: false
ipAdd: "172.21.6.208"
name: "n2"
netmask: "22"
# if gatway is empty then it will be removed
#gateway: "172.21.7.254"
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
n3Interface:
create: false
ipAdd: "192.168.25.24"
netmask: "24"
name: "n3"
# if gatway is commented then it will be removed
#gateway: "172.21.11.254"
#routes:
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
timeZone: "Europe/Paris"
useAdditionalOptions: "--sa --log_config.global_log_options level,nocolor,time"
# If mounting the configuration file then below parameters are not used
cuName: "oai-cu"
mcc: "001" # check the information with AMF, SMF, UPF
mnc: "01" # check the information with AMF, SMF, UPF
tac: "1" # check the information with AMF
sst: "1"
amfhost: "oai-amf" # amf ip-address or service-name oai-amf-svc or 172.21.6.94
n2IfName: "eth0" # if multus.n2Interface.create is true then use n2
n3IfName: "eth0" #if multus.n3Interface.create is true then use n3 or you can only use 1 interface n2 or eth0
f1IfName: "eth0" #if multus.f1Interface.create is true then use multus.f1Interface.Ipadd
f1cuPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
f1duPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
resources:
define: false
limits:
nf:
cpu: 500m
memory: 512Mi
requests:
nf:
cpu: 500m
memory: 512Mi
nodeSelector:
oai-du:
enabled: true
kubernetesDistribution: Kubernetes #Kubernetes/Kubernetes Kubernetes for Upstream Kubernetes
nfimage:
repository: docker.io/oaisoftwarealliance/oai-gnb
version: 2024.w32
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
# if default gatway is left blank then it will be removed
defaultGateway: ""
f1Interface:
create: false
ipAdd: "192.168.20.23"
netmask: "24"
name: "f1"
# if gatway is empty then it will be removed
#gateway: "172.21.7.254"
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
ruInterface: #Only needed if using a ethernet based RU/USRP
create: false
ipAdd: "192.168.80.90"
netmask: "24"
name: "ru"
# if gatway is commented then it will be remove
#gateway: "192.168.80.1" #In case you don't have a gateway remove it from here
## The value must be [0, master's MTU]. If commented it will masters MTU
#mtu: 9000
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
timeZone: "Europe/Paris"
useAdditionalOptions: "--sa --rfsim --log_config.global_log_options level,nocolor,time"
duName: "oai-du-rfsim"
usrp: rfsim #allowed values rfsim, b2xx, n3xx or x3xx
f1IfName: "eth0" #if multus.f1Interface.create is true then use f1
cuHost: "oai-cu" ## Ip-address or hostname
f1cuPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
f1duPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
resources:
define: false
limits:
nf:
cpu: 3000m
memory: 2Gi
requests:
nf:
cpu: 3000m
memory: 2Gi
nodeSelector:
oai-nr-ue:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-nr-ue
version: 2024.w32
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
config:
timeZone: "Europe/Paris"
rfSimServer: "oai-ran" # ip-address of rfsim or service name oai-gnb or oai-du
fullImsi: "001010000000100" # make sure all the below entries are present in the subscriber database
fullKey: "fec86ba6eb707ed08905757b1bb44b8f"
opc: "C42449363BBAD02B66D16BC975D77CC1"
dnn: "oai"
sst: "1" # configure according to gnb and amf, smf and upf
sd: "16777215"
usrp: "rfsim" # allowed rfsim, b2xx, n3xx, x3xx
useAdditionalOptions: "--sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time"
resources:
define: false
limits:
nf:
cpu: 2000m
memory: 4Gi
requests:
nf:
cpu: 2000m
memory: 4Gi
nodeSelector:
apiVersion: v2
name: e1-f1-split
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
version: 2.1.0
description: Charts for testing e1-f1-split ran use case
appVersion: 2.1.0
keywords:
- 5GCN
- AMF
- SMF
- NRF
- UPF
- UDM
- UDR
- AUSF
- CU-CP
- CU-UP
- DU
- NRUE
- Traffic_server
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org
dependencies:
- condition: mysql.enabled
name: mysql
repository: "file://../../oai-5g-core/mysql"
version: 9.0.1
- condition: oai-nrf.enabled
name: oai-nrf
repository: "file://../../oai-5g-core/oai-nrf"
version: v2.1.0
- condition: oai-udr.enabled
name: oai-udr
repository: "file://../../oai-5g-core/oai-udr"
version: v2.1.0
- condition: oai-udm.enabled
name: oai-udm
repository: "file://../../oai-5g-core/oai-udm"
version: v2.1.0
- condition: oai-ausf.enabled
name: oai-ausf
repository: "file://../../oai-5g-core/oai-ausf"
version: v2.1.0
- condition: oai-amf.enabled
name: oai-amf
repository: "file://../../oai-5g-core/oai-amf"
version: v2.1.0
- condition: oai-smf.enabled
name: oai-smf
repository: "file://../../oai-5g-core/oai-smf"
version: v2.1.0
- condition: oai-upf.enabled
name: oai-upf
repository: "file://../../oai-5g-core/oai-upf"
version: v2.1.0
- condition: oai-cu-cp.enabled
name: oai-cu-cp
repository: "file://../../oai-5g-ran/oai-cu-cp"
version: 2.1.0
- condition: oai-cu-up.enabled
name: oai-cu-up
repository: "file://../../oai-5g-ran/oai-cu-up"
version: 2.1.0
- condition: oai-du.enabled
name: oai-du
repository: "file://../../oai-5g-ran/oai-du"
version: 2.1.0
- condition: oai-nr-ue.enabled
name: oai-nr-ue
repository: "file://../../oai-5g-ran/oai-nr-ue"
version: 2.1.0
- condition: oai-traffic-server.enabled
name: oai-traffic-server
repository: "file://../../oai-5g-core/oai-traffic-server"
version: v1
############# Common configuration
# Log level for all the NFs
log_level:
general: info
# If you enable registration, the other NFs will use the NRF discovery mechanism
register_nf:
general: yes
http_version: 2
curl_timeout: 6000 #milliseconds can be changed if the network have issues
## general single_nssai configuration
## Defines YAML anchors, which are reused in the config file
snssais:
- &embb_slice1
sst: 1
- &embb_slice2
sst: 1
sd: 000001 # in hex
############## SBI Interfaces
### Each NF takes its local SBI interfaces and remote interfaces from here, unless it gets them using NRF discovery mechanisms
nfs:
amf:
host: oai-amf
sbi:
port: 80
api_version: v1
interface_name: eth0
n2:
interface_name: eth0
port: 38412
smf:
host: oai-smf
sbi:
port: 80
api_version: v1
interface_name: eth0
n4:
interface_name: eth0
port: 8805
upf:
host: oai-upf
sbi:
port: 80
api_version: v1
interface_name: eth0
n3:
interface_name: eth0
port: 2152
n4:
interface_name: eth0
port: 8805
n6:
interface_name: eth0
n9:
interface_name: eth0
port: 2152
udm:
host: oai-udm
sbi:
port: 80
api_version: v1
interface_name: eth0
udr:
host: oai-udr
sbi:
port: 80
api_version: v1
interface_name: eth0
ausf:
host: oai-ausf
sbi:
port: 80
api_version: v1
interface_name: eth0
nrf:
host: oai-nrf
sbi:
port: 80
api_version: v1
interface_name: eth0
#### Common for UDR and AMF
database:
host: mysql
user: test
type: mysql
password: test
database_name: oai_db
generate_random: true
connection_timeout: 300 # seconds
############## NF-specific configuration
amf:
amf_name: "OAI-AMF"
# This really depends on if we want to keep the "mini" version or not
support_features_options:
enable_simple_scenario: no # "no" by default with the normal deployment scenarios with AMF/SMF/UPF/AUSF/UDM/UDR/NRF.
# set it to "yes" to use with the minimalist deployment scenario (including only AMF/SMF/UPF) by using the internal AUSF/UDM implemented inside AMF.
# There's no NRF in this scenario, SMF info is taken from "nfs" section.
enable_nssf: no
enable_smf_selection: yes
relative_capacity: 30
statistics_timer_interval: 20 # in seconds
emergency_support: false
served_guami_list:
- mcc: 001
mnc: 01
amf_region_id: 01
amf_set_id: 001
amf_pointer: 01
plmn_support_list:
- mcc: 001
mnc: 01
tac: 0x0001
nssai:
- *embb_slice1
- *embb_slice2
supported_integrity_algorithms:
- "NIA1"
- "NIA2"
supported_encryption_algorithms:
- "NEA0"
- "NEA1"
- "NEA2"
smf:
ue_mtu: 1500
support_features:
use_local_subscription_info: no # Use infos from local_subscription_info or from UDM
use_local_pcc_rules: yes # Use infos from local_pcc_rules or from PCF
# we resolve from NRF, this is just to configure usage_reporting
upfs:
- host: oai-upf
config:
enable_usage_reporting: no
ue_dns:
primary_ipv4: "10.3.2.200"
primary_ipv6: "2001:4860:4860::8888"
secondary_ipv4: "8.8.8.8"
secondary_ipv6: "2001:4860:4860::8888"
ims:
pcscf_ipv4: "192.168.70.139"
pcscf_ipv6: "fe80::7915:f408:1787:db8b"
# the DNN you configure here should be configured in "dnns"
# follows the SmfInfo datatype from 3GPP TS 29.510
smf_info:
sNssaiSmfInfoList:
- sNssai: *embb_slice1
dnnSmfInfoList:
- dnn: "oai"
- sNssai: *embb_slice2
dnnSmfInfoList:
- dnn: "ims"
local_subscription_infos:
- single_nssai: *embb_slice1
dnn: "oai"
qos_profile:
5qi: 5
session_ambr_ul: "200Mbps"
session_ambr_dl: "400Mbps"
- single_nssai: *embb_slice2
dnn: "ims"
qos_profile:
5qi: 2
session_ambr_ul: "100Mbps"
session_ambr_dl: "200Mbps"
upf:
support_features:
enable_bpf_datapath: no # If "on": BPF is used as datapath else simpleswitch is used, DEFAULT= off
enable_snat: yes # If "on": Source natting is done for UE, DEFAULT= off
remote_n6_gw: 127.0.0.1 # Dummy host since simple-switch does not use N6 GW
upf_info:
sNssaiUpfInfoList:
- sNssai: *embb_slice1
dnnUpfInfoList:
- dnn: oai
- sNssai: *embb_slice2
dnnUpfInfoList:
- dnn: ims
## DNN configuration
dnns:
- dnn: "oai"
pdu_session_type: "IPV4"
ipv4_subnet: "12.1.1.0/24"
- dnn: "ims"
pdu_session_type: "IPV4V6"
ipv4_subnet: "14.1.1.0/24"
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.global.coreNetworkConfigMap }}
data:
{{ (.Files.Glob "config.yaml").AsConfig | indent 2 | trim }}
global:
kubernetesDistribution: Vanilla #Openshift/Vanilla Kubernetes for Upstream Kubernetes
coreNetworkConfigMap: core
clusterIpServiceIpAllocation: false #this will allocate ip-address to cluster Ip service
waitForAMF: true #gNB waits for AMF
waitForRadio: true #UE waits for RFSimulated gNB
waitForNRF: true #All NFs wait for NRF to be ready
waitForUDR: true
http2Param: "--http2-prior-knowledge" # if waitForNRF is true and http2 is used for all NF then this param is needed
timeout: 1
mysql:
enabled: true
imagePullPolicy: IfNotPresent
oai5gdatabase: basic
imagePullSecrets:
- name: "regcred"
persistence:
enabled: false
resources:
requests:
memory: 512Mi
cpu: 200m
limits:
memory: 512Mi
cpu: 200m
oai-nrf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-nrf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
nodeName: ""
oai-udr:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-udr ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-udm:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-udm ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-ausf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-ausf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 150m
memory: 128Mi
requests:
nf:
cpu: 150m
memory: 128Mi
oai-amf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-amf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n2Interface:
create: false
ipAdd: "172.21.6.206"
netmask: "22"
name: "n2" #name inside the pod
## If you do not have a gateway leave the field empty
gateway: 172.21.7.254
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
resources:
define: false
limits:
nf:
cpu: 250m
memory: 256Mi
requests:
nf:
cpu: 250m
memory: 256Mi
oai-upf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-upf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
imagePullSecrets:
- name: "regcred"
# create an extra interface for N3 in case the gNB is outside the cluster network or there is a need to have dedicated interface for N3
## Change these ip-addresses according to your environment
## N4, N6 are optional only if you want that UPF uses different subnets for different 3gpp interfaces.
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n3Interface:
create: false
ipAdd: "172.21.8.95"
netmask: "22"
name: "n3" #name inside the pod
## If you do not have a gateway leave the field empty
gateway: ""
## If you don't want to add a default route in your pod then replace this field with ""
routes: ""
hostInterface: "bond0"
## For n4 it is better to re-use eth0 interface inside the pod (primary CNI of Kubernetes)
n4Interface:
create: false
ipAdd: "192.168.24.2"
netmask: "24"
name: "n4"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0"
n6Interface:
create: false
ipAdd: "192.168.22.2"
name: "n6"
netmask: "24"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
routes: ""
hostInterface: "bond0"
#NOTE: If the interface you selected for n6 does not have internet access then UE will not be able to reach internet
resources:
define: false
limits:
nf:
cpu: 500m
memory: 512Mi
requests:
nf:
cpu: 500m
memory: 512Mi
oai-traffic-server:
enabled: true
trafficServer:
repository: docker.io/oaisoftwarealliance/trf-gen-cn5g
version: latest
#pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
multus:
create: false
ipAdd: "172.21.6.12"
netmask: "22"
defaultGateway: "172.21.7.254"
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
ueroute: 12.1.1.0/24
upfHost: oai-upf
routeInterface: eth0
noOfIperf3Server: 2
resources:
define: false
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
nodeSelector: {}
nodeName: ""
oai-smf:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-smf ## The image will be pulled from dockerhub
version: v2.1.0 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
## If you don't want to add a default route in your pod then replace this field with ""
defaultGateway: ""
n4Interface:
create: false
ipAdd: "192.168.24.3"
netmask: "24"
## If you do not have a gateway leave the field empty
gateway: ""
## If you do not want to add any routes in your pod then leave this field empty
# routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0"
imagePullSecrets:
- name: "regcred"
resources:
define: false
limits:
nf:
cpu: 250m
memory: 256Mi
requests:
nf:
cpu: 250m
memory: 256Mi
nodeSelector: {}
nodeName: ""
oai-cu-cp:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-gnb
version: 2024.w32
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
# to remove the default gateway change it with ""
defaultGateway: ""
e1Interface:
create: false
ipAdd: "192.168.18.12"
netmask: "24"
name: "e1"
# if gatway is empty then it will be removed
#gateway: ""
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
n2Interface:
create: false
ipAdd: "172.21.6.208"
netmask: "22"
name: "n2"
# if gatway is empty then it will be removed
#gateway: ""
#routes:
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
f1cInterface:
create: false
ipAdd: "192.168.20.22"
netmask: "24"
name: "f1c"
# if gatway is empty then it will be removed
#gateway: ""
#routes:
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
timeZone: "Europe/Paris"
useAdditionalOptions: "--sa --log_config.global_log_options level,nocolor,time"
cucpName: "oai-cu-cp"
amfhost: "oai-amf" # amf ip-address or service-name oai-amf or 172.21.6.94
n2IfName: "eth0" # if multus.n2Interface.create is true then use n2 or you can only use 1 interface e1 or eth0
f1IfName: "eth0" #if multus.f1Interface.create is true then use f1 or you can only use 1 interface e1 or eth0
e1IfName: "eth0" #if multus.f1Interface.create is true then use e1 or you can only use 1 interface e1 or eth0
f1cuPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
f1duPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
resources:
define: true
limits:
nf:
cpu: 500m
memory: 512Mi
requests:
nf:
cpu: 500m
memory: 512Mi
nodeSelector:
oai-cu-up:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-nr-cuup
version: 2024.w32 ## The branch to be used to pull from dockerhub
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
# to remove the default gateway change it with ""
defaultGateway: ""
e1Interface:
create: false
ipAdd: "192.168.18.13"
netmask: "24"
name: "e1"
# if gatway is empty then it will be removed
#gateway: ""
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
n3Interface:
create: false
ipAdd: "192.168.25.24"
netmask: "24"
name: "n3"
# if gatway is empty then it will be removed
#gateway: ""
#routes: []
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
f1uInterface:
create: false
ipAdd: "192.168.20.24"
netmask: "24"
name: "f1u"
# if gatway is empty then it will be removed
#gateway: ""
#routes: []
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
timeZone: "Europe/Paris"
useAdditionalOptions: "--sa"
cuupName: "oai-cuup"
cuCpHost: "oai-cu" # Service name or ip-address
n2IfName: "eth0" # if multus.n2Interface.create is true then use n2
n3IfName: "eth0" #if multus.n3Interface.create is true then use n3 or you can only use 1 interface e1 or eth0
f1IfName: "eth0" #if multus.f1uInterface.create is true then use f1 or you can only use 1 interface e1 or eth0
e1IfName: "eth0" #if multus.e1Interface.create is true then use e1 or you can only use 1 interface e1 or eth0
f1cuPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
f1duPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
resources:
define: true
limits:
nf:
cpu: 500m
memory: 512Mi
requests:
nf:
cpu: 500m
memory: 512Mi
nodeSelector:
oai-du:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-gnb
version: 2024.w32
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
includeTcpDumpContainer: true #only for taking pcaps inside network function pod
multus:
# if default gatway is left blank then it will be removed
defaultGateway: ""
f1Interface:
create: false
ipAdd: "192.168.20.23"
netmask: "24"
name: "f1"
# if gatway is empty then it will be removed
#gateway: "172.21.7.254"
#routes: [{'dst': '10.8.0.0/24','gw': '172.21.7.254'}, {'dst': '10.9.0.0/24','gw': '172.21.7.254'}]
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
ruInterface: #Only needed if using a ethernet based RU/USRP
create: false
ipAdd: "192.168.80.90"
netmask: "24"
name: "ru"
# if gatway is commented then it will be remove
#gateway: "192.168.80.1" #In case you don't have a gateway remove it from here
## The value must be [0, master's MTU]. If commented it will masters MTU
#mtu: 9000
hostInterface: "bond0" # Interface of the host machine on which this pod will be scheduled
config:
timeZone: "Europe/Paris"
useAdditionalOptions: "--sa --rfsim --log_config.global_log_options level,nocolor,time"
duName: "oai-du-rfsim"
usrp: rfsim #allowed values rfsim, b2xx, n3xx or x3xx
f1IfName: "eth0" #if multus.f1Interface.create is true then use f1
cuHost: "oai-cu" ## Ip-address or hostname
f1cuPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
f1duPort: "2153" #2153 if using same interface for f1 and n3 else standard port 2152 should be use if f1 and n3 interface are different
resources:
define: false
limits:
nf:
cpu: 3000m
memory: 2Gi
requests:
nf:
cpu: 3000m
memory: 2Gi
nodeSelector:
oai-nr-ue:
enabled: true
nfimage:
repository: docker.io/oaisoftwarealliance/oai-nr-ue
version: 2024.w32
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: IfNotPresent
config:
timeZone: "Europe/Paris"
rfSimServer: "oai-ran" # ip-address of rfsim or service name oai-gnb or oai-du
fullImsi: "001010000000100" # make sure all the below entries are present in the subscriber database
fullKey: "fec86ba6eb707ed08905757b1bb44b8f"
opc: "C42449363BBAD02B66D16BC975D77CC1"
dnn: "oai"
sst: "1" # configure according to gnb and amf, smf and upf
sd: "16777215"
usrp: "rfsim" # allowed rfsim, b2xx, n3xx, x3xx
useAdditionalOptions: "--sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time"
resources:
define: false
limits:
nf:
cpu: 2000m
memory: 4Gi
requests:
nf:
cpu: 2000m
memory: 4Gi
nodeSelector:
.git
OWNERS
\ No newline at end of file
apiVersion: v2
name: mysql
version: 9.0.1
appVersion: 9.0.1
description: mysql chart used for oai5g core
keywords:
- mysql
- database
- sql
home: https://www.mysql.com/
icon: https://www.mysql.com/common/logos/logo-mysql-170x115.png
sources:
- https://github.com/kubernetes/charts
- https://github.com/docker-library/mysql
deprecated: false
engine: gotpl
# ⚠️ Repo Archive Notice
As of Nov 13, 2020, charts in this repo will no longer be updated.
For more information, see the Helm Charts [Deprecation and Archive Notice](https://github.com/helm/charts#%EF%B8%8F-deprecation-and-archive-notice), and [Update](https://helm.sh/blog/charts-repo-deprecation/).
# MySQL
[MySQL](https://MySQL.org) is one of the most popular database servers in the world. Notable users include Wikipedia, Facebook and Google.
## DEPRECATION NOTICE
This chart is deprecated and no longer supported.
## Introduction
This chart bootstraps a single node MySQL deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes 1.10+ with Beta APIs enabled
- PV provisioner support in the underlying infrastructure
## Installing the Chart
To install the chart with the release name `my-release`:
```bash
$ helm install --name my-release stable/mysql
```
The command deploys MySQL on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
By default a random password will be generated for the root user. If you'd like to set your own password change the mysqlRootPassword
in the values.yaml.
You can retrieve your root password by running the following command. Make sure to replace [YOUR_RELEASE_NAME]:
printf $(printf '\%o' `kubectl get secret [YOUR_RELEASE_NAME]-mysql -o jsonpath="{.data.mysql-root-password[*]}"`)
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```bash
$ helm delete --purge my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release completely.
## Configuration
The following table lists the configurable parameters of the MySQL chart and their default values.
| Parameter | Description | Default |
| -------------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| `args` | Additional arguments to pass to the MySQL container. | `[]` |
| `initContainer.resources` | initContainer resource requests/limits | Memory: `10Mi`, CPU: `10m` |
| `image` | `mysql` image repository. | `mysql` |
| `imageTag` | `mysql` image tag. | `5.7.30` |
| `busybox.image` | `busybox` image repository. | `busybox` |
| `busybox.tag` | `busybox` image tag. | `1.32` |
| `testFramework.enabled` | `test-framework` switch. | `true` |
| `testFramework.image` | `test-framework` image repository. | `bats/bats` |
| `testFramework.tag` | `test-framework` image tag. | `1.2.1` |
| `testFramework.imagePullPolicy` | `test-framework` image pull policy. | `IfNotPresent` |
| `testFramework.securityContext` | `test-framework` securityContext | `{}` |
| `imagePullPolicy` | Image pull policy | `IfNotPresent` |
| `existingSecret` | Use Existing secret for Password details | `nil` |
| `extraVolumes` | Additional volumes as a string to be passed to the `tpl` function | |
| `extraVolumeMounts` | Additional volumeMounts as a string to be passed to the `tpl` function | |
| `extraInitContainers` | Additional init containers as a string to be passed to the `tpl` function | |
| `extraEnvVars` | Additional environment variables as a string to be passed to the `tpl` function | |
| `mysqlRootPassword` | Password for the `root` user. Ignored if existing secret is provided | Random 10 characters |
| `mysqlUser` | Username of new user to create. | `nil` |
| `mysqlPassword` | Password for the new user. Ignored if existing secret is provided | Random 10 characters |
| `mysqlDatabase` | Name for new database to create. | `nil` |
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 30 |
| `livenessProbe.periodSeconds` | How often to perform the probe | 10 |
| `livenessProbe.timeoutSeconds` | When the probe times out | 5 |
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 |
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 3 |
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | 5 |
| `readinessProbe.periodSeconds` | How often to perform the probe | 10 |
| `readinessProbe.timeoutSeconds` | When the probe times out | 1 |
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 |
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 3 |
| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` |
| `mysqlx.port.enabled` | Boolean to toggle a port for mysqlx `33060` protocol. | false |
| `persistence.enabled` | Create a volume to store data | true |
| `persistence.size` | Size of persistent volume claim | 8Gi RW |
| `persistence.storageClass` | Type of persistent volume claim | nil |
| `persistence.accessMode` | ReadWriteOnce or ReadOnly | ReadWriteOnce |
| `persistence.existingClaim` | Name of existing persistent volume | `nil` |
| `persistence.subPath` | Subdirectory of the volume to mount | `nil` |
| `persistence.annotations` | Persistent Volume annotations | {} |
| `nodeSelector` | Node labels for pod assignment | {} |
| `affinity` | Affinity rules for pod assignment | {} |
| `tolerations` | Pod taint tolerations for deployment | {} |
| `metrics.enabled` | Start a side-car prometheus exporter | `false` |
| `metrics.image` | Exporter image | `prom/mysqld-exporter` |
| `metrics.imageTag` | Exporter image | `v0.10.0` |
| `metrics.imagePullPolicy` | Exporter image pull policy | `IfNotPresent` |
| `metrics.resources` | Exporter resource requests/limit | `nil` |
| `metrics.livenessProbe.initialDelaySeconds` | Delay before metrics liveness probe is initiated | 15 |
| `metrics.livenessProbe.timeoutSeconds` | When the probe times out | 5 |
| `metrics.readinessProbe.initialDelaySeconds` | Delay before metrics readiness probe is initiated | 5 |
| `metrics.readinessProbe.timeoutSeconds` | When the probe times out | 1 |
| `metrics.flags` | Additional flags for the mysql exporter to use | `[]` |
| `metrics.serviceMonitor.enabled` | Set this to `true` to create ServiceMonitor for Prometheus operator | `false` |
| `metrics.serviceMonitor.additionalLabels` | Additional labels that can be used so ServiceMonitor will be discovered by Prometheus | `{}` |
| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `100m` |
| `configurationFiles` | List of mysql configuration files | `nil` |
| `configurationFilesPath` | Path of mysql configuration files | `/etc/mysql/conf.d/` |
| `securityContext.enabled` | Enable security context (mysql pod) | `false` |
| `securityContext.fsGroup` | Group ID for the container (mysql pod) | 999 |
| `securityContext.runAsUser` | User ID for the container (mysql pod) | 999 |
| `service.annotations` | Kubernetes annotations for mysql | {} |
| `service.type` | Kubernetes service type | ClusterIP |
| `service.loadBalancerIP` | LoadBalancer service IP | `""` |
| `serviceAccount.create` | Specifies whether a ServiceAccount should be created | `false` |
| `serviceAccount.name` | The name of the ServiceAccount to create | Generated using the mysql.fullname template |
| `ssl.enabled` | Setup and use SSL for MySQL connections | `false` |
| `ssl.secret` | Name of the secret containing the SSL certificates | mysql-ssl-certs |
| `ssl.certificates[0].name` | Name of the secret containing the SSL certificates | `nil` |
| `ssl.certificates[0].ca` | CA certificate | `nil` |
| `ssl.certificates[0].cert` | Server certificate (public key) | `nil` |
| `ssl.certificates[0].key` | Server key (private key) | `nil` |
| `imagePullSecrets` | Name of Secret resource containing private registry credentials | `nil` |
| `initializationFiles` | List of SQL files which are run after the container started | `nil` |
| `timezone` | Container and mysqld timezone (TZ env) | `nil` (UTC depending on image) |
| `podAnnotations` | Map of annotations to add to the pods | `{}` |
| `podLabels` | Map of labels to add to the pods | `{}` |
| `priorityClassName` | Set pod priorityClassName | `{}` |
| `deploymentAnnotations` | Map of annotations for deployment | `{}` |
| `strategy` | Update strategy policy | `{type: "Recreate"}` |
Some of the parameters above map to the env variables defined in the [MySQL DockerHub image](https://hub.docker.com/_/mysql/).
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```bash
$ helm install --name my-release \
--set mysqlRootPassword=secretpassword,mysqlUser=my-user,mysqlPassword=my-password,mysqlDatabase=my-database \
stable/mysql
```
The above command sets the MySQL `root` account password to `secretpassword`. Additionally it creates a standard database user named `my-user`, with the password `my-password`, who has access to a database named `my-database`.
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
```bash
$ helm install --name my-release -f values.yaml stable/mysql
```
> **Tip**: You can use the default [values.yaml](values.yaml)
## Persistence
The [MySQL](https://hub.docker.com/_/mysql/) image stores the MySQL data and configurations at the `/var/lib/mysql` path of the container.
By default a PersistentVolumeClaim is created and mounted into that directory. In order to disable this functionality
you can change the values.yaml to disable persistence and use an emptyDir instead.
> *"An emptyDir volume is first created when a Pod is assigned to a Node, and exists as long as that Pod is running on that node. When a Pod is removed from a node for any reason, the data in the emptyDir is deleted forever."*
**Notice**: You may need to increase the value of `livenessProbe.initialDelaySeconds` when enabling persistence by using PersistentVolumeClaim from PersistentVolume with varying properties. Since its IO performance has impact on the database initialization performance. The default limit for database initialization is `60` seconds (`livenessProbe.initialDelaySeconds` + `livenessProbe.periodSeconds` * `livenessProbe.failureThreshold`). Once such initialization process takes more time than this limit, kubelet will restart the database container, which will interrupt database initialization then causing persisent data in an unusable state.
## Custom MySQL configuration files
The [MySQL](https://hub.docker.com/_/mysql/) image accepts custom configuration files at the path `/etc/mysql/conf.d`. If you want to use a customized MySQL configuration, you can create your alternative configuration files by passing the file contents on the `configurationFiles` attribute. Note that according to the MySQL documentation only files ending with `.cnf` are loaded.
```yaml
configurationFiles:
mysql.cnf: |-
[mysqld]
skip-host-cache
skip-name-resolve
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
mysql_custom.cnf: |-
[mysqld]
```
## MySQL initialization files
The [MySQL](https://hub.docker.com/_/mysql/) image accepts *.sh, *.sql and *.sql.gz files at the path `/docker-entrypoint-initdb.d`.
These files are being run exactly once for container initialization and ignored on following container restarts.
If you want to use initialization scripts, you can create initialization files by passing the file contents on the `initializationFiles` attribute.
```yaml
initializationFiles:
first-db.sql: |-
CREATE DATABASE IF NOT EXISTS first DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
second-db.sql: |-
CREATE DATABASE IF NOT EXISTS second DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
```
## SSL
This chart supports configuring MySQL to use [encrypted connections](https://dev.mysql.com/doc/refman/5.7/en/encrypted-connections.html) with TLS/SSL certificates provided by the user. This is accomplished by storing the required Certificate Authority file, the server public key certificate, and the server private key as a Kubernetes secret. The SSL options for this chart support the following use cases:
* Manage certificate secrets with helm
* Manage certificate secrets outside of helm
## Manage certificate secrets with helm
Include your certificate data in the `ssl.certificates` section. For example:
```
ssl:
enabled: false
secret: mysql-ssl-certs
certificates:
- name: mysql-ssl-certs
ca: |-
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
cert: |-
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
key: |-
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
```
> **Note**: Make sure your certificate data has the correct formatting in the values file.
## Manage certificate secrets outside of helm
1. Ensure the certificate secret exist before installation of this chart.
2. Set the name of the certificate secret in `ssl.secret`.
3. Make sure there are no entries underneath `ssl.certificates`.
To manually create the certificate secret from local files you can execute:
```
kubectl create secret generic mysql-ssl-certs \
--from-file=ca.pem=./ssl/certificate-authority.pem \
--from-file=server-cert.pem=./ssl/server-public-key.pem \
--from-file=server-key.pem=./ssl/server-private-key.pem
```
> **Note**: `ca.pem`, `server-cert.pem`, and `server-key.pem` **must** be used as the key names in this generic secret.
If you are using a certificate your configurationFiles must include the three ssl lines under [mysqld]
```
[mysqld]
ssl-ca=/ssl/ca.pem
ssl-cert=/ssl/server-cert.pem
ssl-key=/ssl/server-key.pem
```