This paper describes the design and implementation of a network virtualization substrate ( <i xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">NVS</i> ) for effective virtualization of wireless resources in cellular networks. Virtualization fosters the realization of several interesting deployment scenarios such as customized virtual networks, virtual services, and wide-area corporate networks, with diverse performance objectives. In virtualizing a base station's uplink and downlink resources into slices, \ssr <i xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">NVS</i> meets three key requirements-isolation, customization, and efficient resource utilization-using two novel features: 1) <i xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">NVS</i> introduces a provably optimal slice scheduler that allows existence of slices with bandwidth-based and resource-based reservations simultaneously; and 2) <i xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">NVS</i> includes a generic framework for efficiently enabling customized flow scheduling within the base station on a per-slice basis. Through a prototype implementation and detailed evaluation on a WiMAX testbed, we demonstrate the efficacy of \ssr <i xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">NVS</i> . For instance, we show for both downlink and uplink directions that \ssr <i xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">NVS</i> can run different flow schedulers in different slices, run different slices simultaneously with different types of reservations, and perform slice-specific application optimizations for providing customized services.