Network virtualization involves creating virtual versions of networking hardware and resources like switches and routers through software. This allows networking services and resources to be more easily deployed and managed independently of physical infrastructure. By creating logical abstractions of physical networks, virtualization improves flexibility, scalability, and mobility of virtual machines. While gaining benefits like reduced costs and improved disaster recovery, network virtualization also faces challenges around required expertise, limited performance of virtualized resources, and difficulties virtualizing wireless networks.