The Internet has exponentially grown and now it is part of our everyday life. Internet services and applications rely on back-end servers that are deployed on local servers and data centers. With the growing use of data centers and cloud computing, the locations of these servers have been externalized and centralized, taking advantage of economies of scale. However, some applications need to define complex network topologies and require more than simple connectivity to the remote sites. Therefore, the network part of cloud computing, what is called cloud networking, needs to be improved and simplified. This thesis argues that network virtualization permits to fill the missing gap and we propose a network virtualization abstraction layer to ease the use of cloud networking for the end users. We implement a software prototype of our ideas using OpenFlow. We also evaluate our prototype with state of the art controllers that has similar functionalities for network virtualization. A second part of this thesis focuses on developing a tool for performance testing. We have improved the widely used tool pktgen with receiver functionalities. We use pktgen to generate traffic for our experiments with network virtualization.QC 20160428</p