软件定义网络(software defined network,简称SDN)通过集中式的控制器提高了网络的可编程性,成为近年来网络领域非常热门的话题。以Openflow网络为代表的软件定义网络将逻辑控制与数据转发相隔离,为网络虚拟化技术提供了良好的平台。集中式的抽象与控制使得SDN虚拟化框架的处理效率成为主要瓶颈。现有的SDN虚拟化框架由于缺乏对细粒度并行的支持,为编程人员充分利用多核/众核资源、控制更大规模的网络带来了极大的挑战。为了提高SDN虚拟化框架的处理效率,提出一种新的SDN虚拟化编程框架,通过新颖的API和运行时,在框架内部支持细粒度的并行处理。该框架通过对网络中流和网络资源进行抽象,使开发人员可以直接通过划分流空间来定义不同的虚拟网络,利用无锁的编程方式对共享的网络资源和流进行操作。实验结果表明,该框架在逻辑控制的执行效率方面具有良好的可扩展性,可以创建出更大规模的虚拟网络,并对其进行更为复杂的控制。
Software defined network (SDN), which introduces centralized controllers to drastically increase network programmability, has been a hot topic in the network domain. Software defined network separates control plane from data plane of network equipment, establishing a good platform for network virtualization. As the network scales up, the performance of SDN virtualization framework becomes a key bottleneck. Still, current SDN virtualization frameworks lack support for fine-grained parallelism, making them challenging for developers to fully exploit many cores to virtualize large networks. This paper presents a novel API and runtime for fine-grained parallel programming in SDN virtualization framework. By abstracting flows and network resources, the framework programming model enables developers to easily write programs to directly define various virtual networks and parallelly operate the network resource or flow objects by a lock-free manner. Experimental results show that the presented framework has a better logical control performance, allowing one to implement rich functional virtual networks.