srsRAN with native Open Front Haul (OFH) support #90
Replies: 11 comments 50 replies
-
Very very cool! Do you guys have a list of gNB's that support OFH currently? Or maybe an SDR application which exposes an OFH interface to the CU/DU? |
Beta Was this translation helpful? Give feedback.
-
Do you have an example configuration file for using OFH for FDD O-RU? |
Beta Was this translation helpful? Give feedback.
-
Trying to test this one out with following configurations: Quanta Server (Intel Xeon Gold 6148/RAM 128GB/NIC Intel XXV710 25Gb) to host CU/DU/open5GS Questions:
|
Beta Was this translation helpful? Give feedback.
-
Hello, I'm new to the 5G area. I'm trying to use the Ettus USRP N210 as gNB/RU, but we had the sampling mismatch issue. Example: |
Beta Was this translation helpful? Give feedback.
-
After some time tweaking around finally got timing display correct information. Things I did was change the default.conf's "network_transport" to L2 from UDPv4 and disable the system NTP. me@vCUDU:~$ sudo ptp4l -f srsRAN5G/configs/default.cfg -2 -i ens16 -m me@vCUDU:~$ sudo phc2sys -s ens16 -w -m -R 8 -f srsRAN5G/configs/default.cfg I configured the RU with all needed settings and matched the settings with srsRAN configuration file. However on the RU side I didn't receive any IQ data. From the /tmp/gnb.log, it has some FAPI timing errors. 2023-09-12T15:22:14.165683 [SCHED ] [I] [ 0.0] Cell with cell_index=0 was configured. Not sure why RU did not receive any IQ data from DU. (I am able to capture real time IQ data at RU side). Any suggestions how should I troubleshoot the problem? Thanks in advance! |
Beta Was this translation helpful? Give feedback.
-
So far my FDD RU did receive all the IQ data in time and RU is transmitting. However there are some other issues with it. I will wait for the FDD part of update as Andre has mentioned |
Beta Was this translation helpful? Give feedback.
-
Hi Andre, Thanks a lot for this post, great work and all the work that srs open sourced. I’m trying to find out what would be the bare minimum hardware needed to get the most juice out of for example Bentel RAN550 and RAN650. In the recent presentation from Paul and Ismael “2023 Fall srsRAN Workshop - Paul Sutton Ismael Gomez (SRS)” I see that you guys use
I know it’s a lot of questions in an off-topic thread, but still I would appreciate a lot and thank you in advance if you could address my questions. I’m aware of the project ORAN 7.2 RU Guide tutorial and the knowledge base, but maybe it would be good if the srs team can add a hardware sizing and physical specification/sizing tutorial. Thanks a lot in advance. Alen |
Beta Was this translation helpful? Give feedback.
-
Hi community, I hope you are fine and doing well. I have two Questions:
|
Beta Was this translation helpful? Give feedback.
-
thanks for those very interesting questions. We are indeed working on compiling a BoM for a much cheaper ORAN setup. But the challenge here, as with any engineering task, the answer is always: it depends. It depends on so many things, starting with the bandwidth, MIMO, users, number of cells, followed by lab setup, whether or not you have good GPS, etc., etc. You certainly don't need a big Xeon or EPYC server. Compute performance is important but a recent desktop Ryzen for example will be enough (with all FEC running in software), especially for experimentation and if you don't plan to deploy anything and need to guarantee some level of performance 24/7. The NIC is in fact quite important, especially because of the timing. It's a longer discussion around how NICs are built and how the timing works but in general the Intel NICs are fine. The E810 is particularly interesting. Whether you need GPS on board or use a switch plus external GM is again a "depends" matter. But you don't need the 25G. 10G is enough, a full 100MHz 4x4 DL will use approx 5.5Gbit/s. As for the switch I can recommend the Mikrotik CRS326-24S+2Q+. It supports PTP transport on all ports but you do need an extra PTP GM. Hope that helps. |
Beta Was this translation helpful? Give feedback.
-
We have a different RU which we tested with other CU/DU with 7.2 split. Can we test other 7.2 split RUs with this code? |
Beta Was this translation helpful? Give feedback.
-
Hey @safwan2m - sure as long as the RU is 7.2 compatible it'll work. Depending on how configurable the RU is you might have to fiddle a bit to find a working configuration. |
Beta Was this translation helpful? Give feedback.
-
Hey,
very recently we've added support for O-RAN radio units (O-RUs) in srsRAN through our new in-house Open FrontHaul (OFH) implementation. This is something we are extremely excited about as it opens up a plethora of new use-cases, brings new players into the mix and thereby addresses a key bottleneck for O-RAN - the current de-facto vendor lock-in caused by a quasi-monopoly for OFH implementations. The srsRAN OFH library is open-source, portable and vastly simplifies the bring-up effort for a full end-to-end O-RAN solution as it has far fewer mandatory dependencies than alternative options.
Why
You might ask yourself why? Why have they reimplemented something that has already been open-sourced under a permissive license and is widely used by numerous other 5G RAN solutions?
The answer to this question is manifold but in brief, we believe the existing implementation didn't fit our needs in terms of simplicity, dependencies, portability and code structure.
Simplicity
Up until now it has been extremely difficult and also expensive to setup a full end-to-end ORAN testbed. Take any of the existing tutorials and check the bill of materials (BOM). It quickly becomes clear that an upfront investment of at least 20-30k Euro in pure hardware is needed to acquire the devices mentioned in those bring-up guides. We believe this shouldn't be the case and it doesn't need to be the case.
Once that investment has been made, there is a high degree of complexity involved in configuring your expensive hardware due to the reliance on mandatory third-party dependencies such as DPDK and painful instructions that require the application of patches to specific library versions to compile with a particular kernel, etc.
Our vision has always been to have an OFH implementation that just works with a vanilla Linux kernel using the standard socket interface. Because after all, OFH is just a protocol that sits on top of Ethernet. Nothing that should be needlessly complicated.
Dependencies
I am sure there are folks that now ask if we're serious about performance without a mandatory dependency on DPDK? Can you even sustain the required rates through the kernel's networking stack?
We understand and believe in the usefulness of DPDK - we just don't think it should be a mandatory dependency for an OFH implementation - or a RAN stack in general. Our entire software architecture has been designed such that it can take advantage of DPDK's kernel offloading techniques by using its buffer and memory management. But the key aspect is that it doesn't depend on it.
This simple design choice has a huge impact on the usability of the resulting solution. If you are targeting highest performance, you can achieve that by taking advantage of DPDK. However, if your use-case is more conservative, you don't need the added complexity for setup and configuration.
In our benchmarks we've found that for many workloads (like a 100 MHz TDD SISO cell) there are no dramatic performance hits using an OFH socket implementation without DPDK. Current machines can easily sustain the required network rates. Even initial tests with 4x4 MIMO using the same 100 MHz TDD configuration showed acceptable performance.
It should be noted that this approach also vastly simplifies debugging as third-party tools such as Wireshark can now simply run on the gNB/DU machine to sniff the front-haul traffic.
Portability
We want our software to run on a Raspberry Pi, a data center server, and anything in-between. We therefore developed an OFH library that is agnostic to the underlying instruction set - it runs efficiently on ARM as well as on x86-64 CPUs from Intel or AMD without making any compromises or preferring one or the other. We also look forward to seeing it further ported to other architectures in the future.
Code structure
Our OFH implementation follows the same design philosophy as the entire srsRAN 5G stack. Well-defined interfaces, clear dependency hierarchies and readable, well-documented code ensures extensibility is built into the software from day one.
Getting started
We've authored an application note that describes the entire setup procedure including the configuration steps for third-party components like the O-RU and the networking switch step by step here.
We are currently exploring ideas to further simplify and cut the BOM required for a basic end-to-end ORAN setup. Let us know if you have suggestions!
Beta Was this translation helpful? Give feedback.
All reactions