Modular SDN Programming with Pyretic

Modular SDN Programming with Pyretic
复制标题

DOI:
--
复制
发表时间:
2013
期刊:
login Usenix Mag.
影响因子:
--
通讯作者:
Joshua Reich;Christopher Monsanto;Nate Foster;J. Rexford;D. Walker
Joshua Reich;Christopher Monsanto;Nate Foster;J. Rexford;D. Walker
中科院分区:
其他
文献类型:
--
作者:
Joshua Reich;Christopher Monsanto;Nate Foster;J. Rexford;D. Walker

文献摘要

被引文献

相似文献

管理当今的计算机网络是一项复杂且容易出错的任务。这些网络由各种设备组成,从路由器和交换机到防火墙、网络地址转换器、负载平衡器和入侵检测系统。网络管理员必须通过繁琐的逐个配置来表达策略,同时应对多种协议和巴洛克式的、特定于供应商的接口。相比之下,软件定义网络(SDN)正在重新定义我们管理网络的方式。在 SDN 中,控制器应用程序使用标准的开放式消息传递接口(如 OpenFlow [1])来指定网络元件或交换机应如何处理传入数据包。程序员在控制器平台上开发自己的新控制器应用程序,该平台提供构建在 OpenFlow 之上的编程 API。将控制器平台和应用程序与网络元件分离,使任何人(而不仅仅是设备供应商)都可以编写新的网络控制软件。在短短几年内,SDN 带来了丰富的创新,包括 Nicira 的网络虚拟化平台和 Google 的广域流量工程系统等显着的商业成功。大多数主要交换机供应商都支持 OpenFlow API,并且许多大型信息技术公司都参与了 SDN 联盟,例如开放网络基金会和 Open Daylight 计划。 SDN 正在为精通网络的软件开发人员和精通软件的网络从业人员创造令人兴奋的新机会。但程序员应该如何编写这些控制器应用程序呢?第一代 SDN 控制器平台为程序员提供了与交换机接口非常相似的低级 API。这迫使程序员通过操作数据包中的位模式并仔细管理共享规则表空间来使用“汇编语言”进行编程。在 Frenetic 项目 [2] 中,我们正在为 SDN 编程设计简单、可重用的高级抽象,以及自动生成交换机上低级规则的高效运行时系统 [3,4,5,6,7]。我们的抽象涵盖了管理的主要方面 图 1:软件定义网络 (SDN)
Managing today’s computer networks is a complex and error-prone task. These networks consist of a wide variety of devices, from routers and switches, to firewalls, network-address translators, load balancers, and intrusion-detection systems. Network administrators must express policies through tedious box-by-box configuration, while grappling with a multitude of protocols and baroque, vendor-specific interfaces. In contrast, Software-Defined Networking (SDN) is redefining the way we manage networks. In SDN, a controller application uses a standard, open messaging interface like OpenFlow [1], to specify how network elements or switches should handle incoming packets. Programmers develop their own new controller applications on top of a controller platform which provides a programming API built on top of OpenFlow. Separating the controller platform and applications from the network elements allows anyone—not just the equipment vendors—to program new network control software. In just a few years, SDN has enabled a wealth of innovation, including prominent commercial successes like Nicira’s network virtualization platform and Google’s wide-area traffic-engineering system. Most of the major switch vendors support the OpenFlow API, and many large information-technology companies are involved in SDN consortia like the Open Networking Foundation and the Open Daylight initiative. SDN is creating exciting new opportunities for networksavvy software developers and software-savvy network practitioners alike. But how should programmers write these controller applications? The first generation of SDN controller platforms offer programmers a low-level API closely resembling the interface to the switches. This forces programmers to program in “assembly language,” by manipulating bit patterns in packets and carefully managing the shared rule-table space. In the Frenetic project [2], we are designing simple, reusable, high-level abstractions for programming SDNs, and efficient runtime systems that automatically generate the low-level rules on switches [3, 4, 5, 6, 7]. Our abstractions cover the main facets of managing Figure 1: Software Defined Network (SDN)