| Version | Date | Changes |
|---|---|---|
| 1.0 | 2025-05-30 | First version with PCI passthrough of complete PF and PTP4L running in VM |
| 2.0 | 2025-06-13 | Updated architecture: PTP4L Grandmaster runs on host, VM uses VF instead of complete PF, VM synchronizes via ptp_kvm |
| 3.0 | 2025-07-04 | Added RU LiteON configuration and verification section, updated Table of Contents positioning, refined deployment workflow |
| 4.0 | 2025-07-07 | Updated open5GS sections to reference install_open5gs.sh script automation, added WebUI access configuration, integrated VM appliances information in Future Automation section |
| 5.0 | 2025-07-15 | Updated PTP service architecture: host now runs both ptp4l.service and phc2sys.service, corrected service references throughout documentation, updated monitoring and troubleshooting commands |
This document provides a comprehensive manual deployment guide for setting up a complete 5G O-RAN private network infrastructure. This guide covers the manual deployment process that will eventually be automated using OneDeploy in another document.
The deployment process involves multiple components working together to create a functional 5G network, including virtualized network functions, precise timing synchronization, and hardware integration.
The deployment consists of the following main components:
A physical server running KVM hypervisor with OpenNebula cloud management platform that hosts:
- srsRAN CU/DU Virtual Machine: Handles the Central Unit and Distributed Unit functions of the 5G O-RAN
- open5GS Virtual Machine: Provides the 5G Core Network functionality
- RU LiteON: Radio Unit for RF transmission and reception
- 5G UE (User Equipment): End-user devices such as smartphones, IoT devices, and other 5G-capable equipment that connect to the network through the radio interface
- High-Precision PTP NIC Card: The KVM host server must be equipped with a Network Interface Card that supports high-quality PTP (Precision Time Protocol) synchronization with nanosecond-level accuracy. This is essential for proper 5G network timing requirements. For example, the Intel NIC E810 has been tested and proven to work well for this purpose.
- PTP Grandmaster Architecture: The KVM host server runs the PTP4L grandmaster service on the Physical Function (PF) of the NIC connected to the RU LiteON, providing precise timing synchronization. The srsRAN VM receives a Virtual Function (VF) from this PF via SR-IOV, allowing direct hardware access while maintaining the PTP synchronization capabilities.
- VM Clock Synchronization: The srsRAN VM synchronizes its system clock with the KVM host clock using ptp_kvm mechanism, ensuring nanosecond-level timing accuracy throughout the virtualized infrastructure.
┌─────────────────────────────────────────────────────────────┐
│ KVM OpenNebula Host │
│ PTP4L Grandmaster │
│ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ srsRAN VM │ │ open5GS VM │ │
│ │ (CU/DU) │◄────────┤ (5G Core) │ │
│ │ 32 CPU/32GB RAM │ │ 8 CPU/16GB RAM │ │
│ │ VF (SR-IOV) │ │ │ │
│ │ ptp_kvm sync │ │ │ │
│ └─────────────────┘ └─────────────────────────┘ │
│ │ │
│ │ VF from PF (SR-IOV) │
│ │ Host: PTP4L on PF │
└───────────┼─────────────────────────────────────────────────┘
│ PF with PTP4L
│
┌───────▼──────┐ ┌─────────────┐
│ RU Liteon │ │ 5G UE │
│ (Radio Unit)│◄─────────────┤ (Smartphones│
└──────────────┘ RF Link │ Devices, │
│ IoT, etc.) │
└─────────────┘
- OpenNebula Installation
- KVM Host Configuration
- RU LiteON Configuration and Verification
- Virtual Machine Instantiation
- srsRAN Virtual Machine Configuration
- open5GS Virtual Machine Configuration
- Testing and Validation
- Troubleshooting and Maintenance
- 8.1 Common Issues
- 8.2 Monitoring and Logging
- Future Automation
- References
- Appendices
This deployment uses a simple OpenNebula setup consisting of:
- 1 OpenNebula Front-end: Management and orchestration node
- 1 KVM Host: Physical server that will host the srsRAN and open5GS virtual machines
For OpenNebula installation, refer to the official OpenNebula documentation:
Before configuring the KVM host, ensure the following software components are installed:
Install Intel ice driver version 1.17.2 for the Intel E810 NIC:
# Install Intel ice driver for Intel E810 NIC
sudo ./scripts/install/install_ice_driver.shThis driver is required for:
- SR-IOV Virtual Function (VF) creation
- Hardware timestamping support for PTP
- High-performance network operations
Install LinuxPTP version 4.3 for PTP4L grandmaster functionality:
# Install LinuxPTP for PTP4L grandmaster
sudo ./scripts/install/install_linuxptp.shLinuxPTP provides:
- PTP4L grandmaster service for precise timing
- Hardware clock synchronization capabilities
- Integration with Intel E810 NIC timestamping
Note: These software prerequisites must be installed before proceeding with SR-IOV configuration and PTP grandmaster setup.
Configure SR-IOV to provide the srsRAN VM with a Virtual Function (VF) from the high-precision NIC card while keeping the Physical Function (PF) on the host for PTP4L grandmaster:
-
Enable IOMMU in BIOS/UEFI (Manual Step)
- Reference: OpenNebula PCI Passthrough Documentation
-
Configure GRUB parameters (Manual Step)
# Edit GRUB configuration sudo nano /etc/default/grub # Add or modify GRUB_CMDLINE_LINUX_DEFAULT line: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt" # Update GRUB and reboot sudo update-grub sudo reboot
-
Enable SR-IOV on the NIC (Automated by script)
-
Create Virtual Functions (VFs) (Automated by script)
-
Configure VF passthrough to srsRAN VM (Automated by script)
-
Keep PF on host for PTP4L grandmaster (Automated by script)
-
Configure VF for VM PCI passthrough (Manual Step)
- Reference: OpenNebula PCI Passthrough Documentation
# Configure SR-IOV and VF setup (Steps 3-6 automated)
sudo ./scripts/install/install_host_vf_setup.shThe script automatically performs the following steps:
Step 3 - Enable SR-IOV on the NIC:
- Automatically detects Intel E810 interfaces
- Verifies ice driver is loaded
- Checks system requirements for SR-IOV
Step 4 - Create Virtual Functions (VFs):
- Creates 1 Virtual Function on the Intel E810 NIC
- Resets existing VFs if present
- Verifies VF creation success
Step 5 - Configure VF for VM passthrough:
- Sets VF trust mode ON
- Disables spoof checking for VF
- Enables promiscuous mode on Physical Function
- Sets specific MAC address for the VF:
a2:b3:a6:4e:de:49 - Configures ring buffer optimization (TX/RX: 4096 each)
- Enables VF true promiscuous support
Step 6 - Keep PF on host for PTP4L grandmaster:
- Physical Function remains on KVM host
- PF will be used for PTP4L grandmaster service
- VF PCI address is provided for OpenNebula VM passthrough configuration
Script Output:
- VF PCI address for VM passthrough configuration
- Environment variables for reference
- Verification commands
- Configuration summary
Reference: KVM PCI Passthrough Documentation
Note: Detailed configuration scripts are available in scripts/install/ directory
Configure PTP grandmaster synchronization on the KVM host server. This PTP grandmaster will synchronize the RU Liteon connected through the Physical Function (PF) of the Intel E810 NIC, providing precise timing reference for the entire 5G network.
Set up PTP4L grandmaster service on the KVM host:
# Configure PTP4L grandmaster on KVM host with Intel E810 NIC
sudo ./scripts/install/install_host_ptp_grandmaster.shThis script configures:
- PTP4L Grandmaster: Runs on the PF (Physical Function) of the Intel E810 NIC connected to RU Liteon
- phc2sys Service: Synchronizes system clock with NIC hardware clock
- GNSS Synchronization: Uses integrated GNSS receiver for time reference
- Hardware Timestamping: Enables precise timing on the host NIC
- Systemd Services: Creates persistent PTP grandmaster and phc2sys services
Use the automated performance optimization script:
# Optimize KVM host for low-latency 5G workloads
sudo ./scripts/performance/optimize_kvm_host.shThis script automatically applies the following optimizations:
- CPU Frequency Governor: Sets to performance mode across all cores
- Kernel Parameters: Configures C-states, P-states, and debugging features for low latency
- Real-time Kernel Detection: Checks for RT kernel installation and provides guidance
- Runtime Optimizations: Creates systemd service for persistent performance tuning
- DRM KMS Polling: Disables to reduce unnecessary interrupts
Install real-time kernel for optimal performance:
# Install RT kernel with PREEMPT_RT patch
sudo ./scripts/install/install_rt_kernel.shChoose installation method:
- From source: Full compilation (30-60 minutes)
- From packages: Fast installation using pre-built .deb files
The optimized KVM host provides:
-
CPU Pinning: Physical CPUs are allocated to VMs to minimize contention and ensure consistent performance. The srsRAN VM is assigned 32 physical CPUs to handle compute-intensive tasks.
-
IOMMU & PCI Passthrough:
- IOMMU is enabled (intel_iommu=on) to support direct hardware access
- Intel E810-C NIC is passed through to the srsRAN VM via PCI-PT for fronthaul communication
- PTP grandmaster runs on host to provide < 20 ns synchronization accuracy to RU Liteon
-
Kernel Optimization: Real-time kernel with CONFIG_PREEMPT_RT enabled to prioritize time-critical tasks and reduce scheduling jitter
-
Network Buffer Tuning: Increased network buffer sizes via sysctl to prevent packet drops under high load
For detailed optimization information, see scripts/performance/README.md
This section covers the configuration and verification of the RU LiteON radio unit. The RU must be properly configured and synchronized before proceeding with virtual machine instantiation.
This guide covers the configuration of the RU LiteON radio unit. Before proceeding with the configuration steps, ensure that a connection to the RU LiteON has been established.
Prerequisites:
- Physical network connectivity between KVM host and RU LiteON established
- RU LiteON powered on and accessible
- Management credentials for RU LiteON available
For detailed RU LiteON configuration, the manufacturer's official command guide should be followed.
A quick configuration guide would be:
- With the
enablecommand we access privileged mode. Then with theconfigurecommand we can configure the different RU parameters. - The important parameters that we must change to match those configured in the core and srsRAN are:
bandwidth,center-frequency,compression-bit,du-mac-address,jumboframe,phasecomp-mode,sync-sourceandc/u-plane-vlan.
Example configuration:
(config)# bandwidth 100000000
Old Bandwidth 20000000
New Bandwidth 100000000
(config)# compression-bit 9
Old Compression Bit = 8
New Compression Bit = 9
(config)# du-mac-address a2b3a64ede49
Old DU MAC Address = 001122334466
New DU MAC Address = a2b3a64ede49
(config)# jumboframe 1
Old jumboframe = 0x00000000
New jumboframe = 0x00000001
(config)# phasecomp-mode true
phase compensation mode : Enable
(config)# slot-id 1
Old slotid = 0x00000002
New slotid = 0x00000001
(config)# sync-source PTP
sync source : PTP
Active after reboot
(config)# c/u-plane-vlan
control and user Plane vlan = 564
(config)# center-frequency
Center Frequency = 3850020000Configuration verification:
To verify that the configuration has been applied correctly:
- Exit config mode with
exit - View the current configuration with
show running_config
Important notes:
- The MAC address
du-mac-addressmust match the one configured in the KVM host VF (a2:b3:a6:4e:de:49) - The
sync-source PTPmust be configured to synchronize with the KVM host PTP grandmaster - The frequency and bandwidth parameters must match the srsRAN configuration
After configuration, verify that the RU LiteON is properly synchronized with the PTP grandmaster running on the KVM host.
The RU should now be power-cycled. Once completed successfully, the RU state can be checked with:
# show oru-status
Sync State : SYNCHRONIZED
RF State : Ready
DPD : Ready
DuConnected : notReadyExpected Status:
- Sync State: Should show "SYNCHRONIZED" indicating proper PTP synchronization
- RF State: Should show "Ready" indicating RF components are operational
- DPD: Should show "Ready" indicating Digital Pre-Distortion is functional
- DuConnected: Will show "notReady" until srsRAN CU/DU is configured and connected
Note: Do not proceed to VM instantiation until the RU shows proper synchronization status. The "DuConnected" status will remain "notReady" until srsRAN is configured and a UE attaches to the network.
- CPU: 32 vCPUs
- RAM: 32 GB
- Storage: 60 GB
- Operating System: Ubuntu 24.04 LTS (recommended)
- Network: Multiple network interfaces for management and data plane
- Hardware: VF (Virtual Function) from Intel E810 NIC via SR-IOV passthrough
- CPU: 8 vCPUs
- RAM: 16 GB
- Storage: 40 GB
- Operating System: Ubuntu 24.04 LTS (recommended)
- Network: Management and data plane interfaces
- Prerequisites: Ensure KVM host configuration is complete (Section 2) and RU LiteON verification is successful (Section 3)
- Create VM templates with the specified resource requirements
- Configure network templates for management and data networks
- Configure SR-IOV VF passthrough for srsRAN VM using the VF created in Section 2.2
- Instantiate VMs using OpenNebula Sunstone or CLI
- Verify VM deployment and connectivity
- Verify VF assignment to srsRAN VM
Important: The srsRAN VM requires the Virtual Function (VF) configured in Section 2.2. Do not instantiate the srsRAN VM until the KVM host SR-IOV configuration is complete and RU LiteON verification passes.
Install Intel iavf driver for the Virtual Function (VF) passed through to the VM:
# Install Intel iavf driver for VF
sudo ./scripts/install/install_iavf_driver.shNote: The Intel ice driver is not required in the VM since it only receives a Virtual Function (VF) via SR-IOV passthrough. The Physical Function (PF) remains on the KVM host with the ice driver for PTP4L grandmaster functionality. The VM needs the iavf (Intel Adaptive Virtual Function) driver to properly handle the VF.
The script automatically:
- Checks and installs required dependencies (build-essential, kernel headers, gcc, make)
- Extracts and compiles Intel iavf driver version 4.13.3 from source
- Loads iavf kernel module and removes old versions if present
- Verifies VF detection and configuration
- Shows available network interfaces and Virtual Functionsnel module
- Verify VF detection and configuration
Driver packages available in sources/drivers/ directory
Install LinuxPTP:
# Install LinuxPTP version 4.3-dirty from source
sudo ./scripts/install/install_linuxptp.shConfigure ptp_kvm for VM clock synchronization:
# Set up ptp_kvm for VM system clock synchronization
sudo ./scripts/install/install_vm_sync.shThe VM PTP setup script:
- Loads the
ptp_kvmkernel module which creates a virtual PTP device (/dev/ptp_kvm) in the VM - Configures
phc2sysservice to use the ptp_kvm device for VM system clock synchronization - Synchronizes VM system clock with the KVM host clock through the virtual PTP device
- Creates and enables systemd service for automatic startup
- Stops conflicting time synchronization services
Note: PTP4L grandmaster runs on the KVM host server (configured in Section 2.3), not in the VM. The VM uses the ptp_kvm kernel module combined with phc2sys to synchronize its system clock directly with the KVM host clock, which is itself synchronized with the NIC's hardware clock via PTP4L grandmaster.
ptp_kvm + phc2sys Architecture:
- Host: Runs PTP4L grandmaster on PF and phc2sys to synchronize host system clock
- VM: Uses
ptp_kvmmodule to create virtual PTP device, thenphc2syssynchronizes VM system clock using this device - Communication: Direct host-VM clock synchronization through virtual PTP device
- Timing Accuracy: < 100 ns between host and VM clocks
Reference configuration files:
configs/ptp/services/phc2sys.service- VM clock synchronization service
Configure network interfaces for:
- Management network connectivity
- Data plane connectivity with open5GS core (data plane N3 and control plane N2)
- Fronthaul interface for RU communication (for DPDK case, use script
scripts/performance/configure_dpdk_interface.sh)
DPDK Interface Configuration Script:
The configure_dpdk_interface.sh script automates the configuration of DPDK drivers and network interfaces for high-performance packet processing. It:
- Binds the iavf driver to the specified PCI device (0000:01:01.0)
- Configures network interface settings (promiscuous mode, allmulticast, ring buffers)
- Installs and loads igb_uio driver for DPDK compatibility
- Verifies the configuration and provides system status information
Install srsRAN Project for Split 7.2 configuration:
# Install srsRAN Project with optional DPDK support
sudo ./scripts/install/install_srsran.shThis script:
- Checks and installs required dependencies for srsRAN Project
- Prompts for optional DPDK support (for high-bandwidth scenarios)
- Compiles srsRAN Project from source (srsRAN_Project-release_24_10_1)
- Configures for Split 7.2 (no extra 3rd-party dependencies required)
- Installs binaries to /usr/local and updates system PATH
- Runs comprehensive tests during build process
Source packages available in sources/software/ directory
Optimize the srsRAN VM for low-latency 5G workloads:
# Optimize srsRAN VM for real-time performance
sudo ./scripts/performance/optimize_vm_srsRAN.shThis script:
- Verifies real-time kernel (required for srsRAN timing)
- Optimizes PTP services with CPU affinity and real-time priority
- Applies VM-specific performance tuning for memory and network
- Creates performance service for persistent optimizations
Critical Requirements:
- Real-time kernel must be installed before running this script
- PHC2SYS service must be configured and running (PTP4L grandmaster runs on host)
Configure srsRAN gNB with appropriate parameters:
- Radio frequency configuration
- Network interfaces binding
- Core network integration parameters
Reference configuration files in configs/srsran/ directory:
gnb_config_n77_20mhz_siso.cfg- Basic SISO & 20 MHz configurationgnb_config_n77_100mhz_4x2.cfg- Advanced MIMO & 100 MHz configurationgnb_config_dpdk_*.cfg- DPDK-enabled configurations
Note: These configuration files are thoroughly documented with detailed comments explaining each parameter and its purpose.
Configure network interfaces for:
- Management network access
- Data plane connectivity with srsRAN CU/DU
- External connectivity (if required)
Install open5GS 5G core network components using the automated installation script:
# Install open5GS 5G SA Core with automated configuration
sudo ./scripts/install/install_open5gs.shThis script:
- Installs MongoDB 8.0 for subscriber data management
- Installs open5GS latest version with 5G SA Core functions only
- Configures network parameters (N2 interface, PLMN, TAC)
- Sets up WebUI for subscriber management with external access
- Disables 4G/LTE functions (only 5G SA Core is enabled)
- Configures firewall rules for UE connectivity
- Starts and enables services in proper order
Interactive Configuration: The script will prompt for:
- N2 Interface IP: AMF NGAP bind address (default: 127.0.0.5 for local testing)
- PLMN Configuration: MCC/MNC (default: 999/70 for private networks)
- TAC: Tracking Area Code (default: 1)
- WebUI Access: IP and port for external management (default: 0.0.0.0:9999)
Installed Components (5G SA Only):
- NRF (NF Repository Function)
- AMF (Access and Mobility Management Function)
- SMF (Session Management Function)
- UPF (User Plane Function)
- AUSF (Authentication Server Function)
- UDM (Unified Data Management)
- UDR (Unified Data Repository)
- PCF (Policy Control Function)
- NSSF (Network Slice Selection Function)
- BSF (Binding Support Function)
For detailed installation information, refer to the official open5GS documentation:
The install_open5gs.sh script (section 6.2) automatically configures most open5GS parameters required for srsRAN integration. However, additional fine-tuning may be required for specific deployment scenarios.
The installation script automatically configures:
- Core Network Functions: All 5G SA components (AMF, SMF, UPF, NRF, UDM, UDR, AUSF, PCF, NSSF, BSF)
- Network Parameters: N2 interface IP, PLMN (MCC/MNC), TAC configuration
- Service Integration: Proper service startup order and dependencies
- Firewall Rules: NAT and routing for UE connectivity
For advanced scenarios or custom deployments, manual configuration may be needed:
AMF Configuration (/etc/open5gs/amf.yaml):
- N2 interface binding (NGAP) - automatically configured by script
- PLMN configuration - automatically configured by script
- TAC (Tracking Area Code) - automatically configured by script
- Security algorithms and parameters
SMF Configuration (/etc/open5gs/smf.yaml):
- UPF association and selection
- PDU session policies
- QoS flow configuration
UPF Configuration (/etc/open5gs/upf.yaml):
- Data plane interface configuration
- Packet forwarding rules
- QoS enforcement policies
Integration Parameters for srsRAN CU/DU:
- Network interface bindings - N2 interface automatically configured
- PLMN (Public Land Mobile Network) configuration - automatically configured
- Security parameters (encryption/integrity algorithms)
- QoS policies and traffic management
Note: Most configuration parameters are automatically set by the install_open5gs.sh script based on interactive prompts. Manual configuration is typically only needed for advanced customization or troubleshooting.
The install_open5gs.sh script (section 6.2) automatically configures the open5GS WebUI to be accessible externally by binding it to 0.0.0.0:9999. This allows remote management of subscribers and network configuration.
After running the installation script, the WebUI is accessible at:
http://<open5gs-vm-ip>:9999
Default Credentials:
- Username:
admin - Password:
1423
Use the WebUI to register User Equipment (UE) in the network:
- Access WebUI: Navigate to
http://<open5gs-vm-ip>:9999 - Login: Use default credentials (admin/1423)
- Add Subscriber: Click "Subscriber" → "Create"
- Configure UE Parameters:
- IMSI: International Mobile Subscriber Identity
- K: Authentication key (128-bit)
- OPc: Operator code (128-bit)
- APN: Access Point Name (default: "internet")
- QoS Profile: Quality of Service settings
MongoDB 8.0 is automatically installed and configured by the script for:
- Subscriber data management
- Authentication credentials storage
- Session management data
- Network function registration data
Database Access (if manual management required):
# Connect to MongoDB
mongo --host localhost --port 27017
# Switch to open5gs database
use open5gs
# View subscribers
db.subscribers.find()Note: The WebUI provides a user-friendly interface for all subscriber management tasks, eliminating the need for direct database manipulation in most scenarios.
Check the srsRAN VM clock synchronization by monitoring the phc2sys.service created in section 5.1.2:
# Check VM PTP synchronization status
sudo systemctl status phc2sys.service
sudo journalctl -u phc2sys.service -fThe offset should be less than 500 ns for proper synchronization.
Note: The kvm host also runs its own phc2sys.service (configured in section 2.3) to synchronize the host system clock with the NIC hardware clock.
Verify connectivity between all VMs using ping:
# Test connectivity from srsRAN VM to open5GS VM
ping <open5gs_vm_ip>
# Test connectivity from open5GS VM to srsRAN VM
ping <srsran_vm_ip>Check integration status by monitoring logs:
# Check srsRAN logs
# Check open5GS AMF logs in Open5GS VM
sudo journalctl -u open5gs-amfd.service -f- RU Liteon connectivity testing
- UE (User Equipment) attachment procedures
- Data plane functionality verification
- Some testing scripts and procedures available in
scripts/testing/directory*
Symptoms: RU shows "NOT SYNCHRONIZED" or high offset values
Check:
# Verify PTP4L grandmaster service on KVM host
sudo systemctl status ptp4l.service
sudo journalctl -u ptp4l.service -f
# Check host clock synchronization (on KVM host)
sudo systemctl status phc2sys.service
sudo journalctl -u phc2sys.service -f
# Check VM PTP synchronization (on VM)
sudo systemctl status phc2sys.service
sudo journalctl -u phc2sys.service -f
# Verify NIC hardware timestamping in KVM host
ethtool -T <interface_name>Symptoms: VM cannot access VF or network performance issues
Check:
# Verify VF creation on KVM host
ip link show
lspci | grep -i ethernet
# Check VF configuration
ip link show <pf_interface>
# Verify iavf driver in VM
lsmod | grep iavf
dmesg | grep iavfSymptoms: RU shows "DuConnected: notReady" or no UE attachment
Note: It is normal for "DuConnected: notReady" to appear when no mobile devices are attached to the network.
Check:
# Verify srsRAN service status
sudo systemctl status srsran
sudo journalctl -u srsran -f
# Check network connectivity to RU
ping <ru_ip_address>
# Verify configuration files
cat /etc/srsran/gnb.cfgSymptoms: UE cannot register or no data connectivity
Check:
# Check all open5GS services
sudo systemctl status open5gs-*
# Monitor AMF logs
sudo journalctl -u open5gs-amfd.service -f
# Check UPF connectivity
sudo journalctl -u open5gs-upfd.service -f
# Verify subscriber database
mongo --eval "db.subscribers.find()"Symptoms: High latency or packet drops
Check:
# Verify CPU pinning and isolation
cat /proc/cmdline
taskset -cp <pid>
# Check real-time kernel
uname -r | grep rt
# Monitor all critical services
sudo systemctl status ptp4l.service phc2sys.service srsran open5gs-*
# Check system resources
free -h
df -h
iostat 1 5# Collect PTP logs
sudo journalctl -u ptp4l.service --since "1 hour ago" > ptp_logs.txt
# Collect srsRAN logs
sudo journalctl -u srsran --since "1 hour ago" > srsran_logs.txt
# Collect open5GS logs
sudo journalctl -u open5gs-* --since "1 hour ago" > open5gs_logs.txtThis manual deployment guide will remain as the reference for manual deployment procedures. A separate automation guide will be developed that leverages the procedures documented here to create automated deployment solutions using:
- OneDeploy: Deployment orchestration
- OneDeploy: OpenNebula automated deployment tool
The project includes pre-configured VM appliances in the automation/appliances/ directory that integrate srsRAN and open5GS components for automated deployment:
- srsRAN Appliance: Pre-configured gNB with optimized performance
- open5GS Appliance: 5G SA Core with automated subscriber management
These appliances provide ready-to-deploy templates compatible with OpenNebula and reduce deployment time significantly. The manual procedures documented in this guide will serve as the foundation for creating automated playbooks and infrastructure definitions in the dedicated automation guide, with particular focus on appliance-based deployment strategies.
- OpenNebula Documentation
- srsRAN Project Documentation
- open5GS Documentation
- Linux PTP Documentation
- KVM/QEMU Documentation
All configuration files referenced in this guide are available in the configs/ directory of this project.
Installation and performance optimization scripts are available in the scripts/ directory:
Installation Scripts (scripts/install/):
install_rt_kernel.sh- Real-time kernel installation (source or packages)install_ice_driver.sh- Intel ice driver v1.17.2 installationinstall_linuxptp.sh- LinuxPTP v4.3-dirty installationinstall_host_ptp_grandmaster.sh- PTP4L grandmaster setup on KVM hostinstall_host_vf_setup.sh- SR-IOV and VF configuration on KVM hostinstall_vm_sync.sh- ptp_kvm service setup for VM clock synchronizationinstall_srsran.sh- srsRAN Project installation with DPDK option
Performance Scripts (scripts/performance/):
optimize_kvm_host.sh- KVM host performance optimizationoptimize_vm_srsRAN.sh- srsRAN VM performance optimization
For detailed usage information, see scripts/install/README.md and scripts/performance/README.md
All required drivers and software packages are available in the sources/ directory.