  Fifth generation (5G) cellular networks will serve a wide variety of
heterogeneous use cases, including mobile broadband users, ultra-low latency
services and massively dense connectivity scenarios. The resulting diverse
communication requirements will demand networking with unprecedented
flexibility, not currently provided by the monolithic black-box approach of 4G
cellular networks. The research community and an increasing number of
standardization bodies and industry coalitions have recognized softwarization,
virtualization, and disaggregation of networking functionalities as the key
enablers of the needed shift to flexibility. Particularly, software-defined
cellular networks are heralded as the prime technology to satisfy the new
application-driven traffic requirements and to support the highly time-varying
topology and interference dynamics, because of their openness through
well-defined interfaces, and programmability, for swift and responsive network
optimization. Leading the technological innovation in this direction, several
5G software-based projects and alliances have embraced the open source
approach, making new libraries and frameworks available to the wireless
community. This race to open source softwarization, however, has led to a
deluge of solutions whose interoperability and interactions are often unclear.
This article provides the first cohesive and exhaustive compendium of recent
open source software and frameworks for 5G cellular networks, with a full stack
and end-to-end perspective. We detail their capabilities and functionalities
focusing on how their constituting elements fit the 5G ecosystem, and unravel
the interactions among the surveyed solutions. Finally, we review hardware and
testbeds on which these frameworks can run, and discuss the limitations of the
state-of-the-art, as well as feasible directions toward fully open source,
programmable 5G networks.
