To improve testing and developing with VoLTE and LTE, I've created a full VoLTE setup in a single VM including the EPC. The scripts to create the VM can be found on the gitlab of postmarketOS. A full debian image containing the network with PLMN 901/70 can be downloaded from the blog. Additional documentation is also available in the project repository.
Everything on the graph except the eNodeB is in the VM:
The setup is build with the following software components:
- MME: open5gs-mmed
- SGW: open5gs-sgwcd/sgwud
- PGW: open5gs-amfd/upfd
- HSS: pyhss
- IMS: kamailio as p-cscf, i-cscf, s-cscf
- PBX: asterisk
- dns: dnsmasq to offer dns overrides
- redis: pyhss internal communication
- mariadb: pyhss & kamailio persistent db
- pyhss-cli: a simple cli to manage pyhss subscribers
The VM network setup is:
- first interface: dhcp client. This interface will be used to nat UE traffic and for the VM iteself.
- second interface: RAN interface, to connect a eNodeB (static addresses, no dhcp)
If you've a good SDR and GPSDO available, you can also use srsRAN to create a eNodeB.