Skip to main content
QUICK REVIEW

[论文解读] tinyNBI: Distilling an API from essential OpenFlow abstractions

C. Jasson Casey, Andrew M. Sutton|arXiv (Cornell University)|Mar 26, 2014
Software-Defined Networks and 5G参考文献 4被引用 4
一句话总结

本文提出 tinyNBI,一种极简、与版本无关的北向接口(NBI),将五个 OpenFlow 版本的核心抽象提炼为一个简洁、低级别的 C API。通过抽象掉版本相关的复杂性,tinyNBI 实现了在多种交换机上对流表、匹配项、动作和指令的可靠、可移植配置,降低了应用程序的复杂性,提升了 SDN 开发者的可维护性。

ABSTRACT

If simplicity is a key strategy for success as a network protocol OpenFlow is not winning. At its core OpenFlow presents a simple idea, which is a network switch data plane abstraction along with a control protocol for manipulating that abstraction. The result of this idea has been far from simple: a new version released each year, five active versions, com- plex feature dependencies, unstable version negotiation, lack of state machine definition, etc. This complexity represents roadblocks for network, software, and hardware engineers. We have distilled the core abstractions present in 5 existing versions of OpenFlow and refactored them into a simple API called tinyNBI. Our work does not provide high-level network abstractions (address pools, VPN maps, etc.), instead it focuses on providing a clean low level interface that supports the development of these higher layer abstractions. The goal of tinyNBI is to allow configuration of all existing OpenFlow abstractions without having to deal with the unique personalities of each version of OpenFlow or their level of support in target switches.

研究动机与目标

  • 为解决 OpenFlow 中日益增长的复杂性和版本碎片化问题,减轻开发者在管理协议和交换机差异方面的负担。
  • 设计一个极简、稳定的 API,仅暴露所有版本中通用的核心 OpenFlow 抽象。
  • 将应用逻辑与 OpenFlow 版本差异及交换机特定功能支持解耦。
  • 实现在异构 OpenFlow 交换机之间对流表、动作、匹配项和指令的可靠、可移植配置。
  • 为构建更高层次的网络抽象提供基础,而无需重新实现底层协议复杂性。

提出的方法

  • 作者从五个 OpenFlow 版本(1.0 至 1.3.1)中抽象出核心抽象,识别出通用原语,如数据路径、流表、匹配项、动作、指令、端口、组、队列和计量器。
  • 设计了一个基于 C 语言的 API,包含少量函数(如 ofp_add、ofp_del、ofp_build_match、ofp_build_action 和 ofp_build_instruction),用于构建和管理交换机配置。
  • 该 API 强制实施一种与交换机无关的模型,其中流配置通过结构化数据类型(例如 ofp_flow)表达,绑定匹配项和指令集。
  • 通过需求声明支持功能声明,允许应用在执行前声明所需原语和功能,确保兼容性。
  • 实验者扩展通过二进制数据块处理,使用 OFP_EXTENSION 作为厂商特定消息的标识符。
  • 该 API 通过标准化操作(如 ofp_get 和 ofp_stats)支持查询、配置和统计,确保在不同交换机间的一致交互。

实验结果

研究问题

  • RQ1如何设计一个极简、与版本无关的 API,以抽象多个 OpenFlow 版本的核心抽象?
  • RQ2哪些核心抽象在所有 OpenFlow 1.x 版本中是共通的,可作为 SDN 应用开发的稳定基础?
  • RQ3如何使应用开发者免受 OpenFlow 交换机版本特定功能支持和协商复杂性的影响?
  • RQ4低级别 NBI 是否能减少对每种交换机类型或 OpenFlow 版本都需要多个应用变体的需求?
  • RQ5如何在简化、可移植的 API 中统一支持实验者扩展?

主要发现

  • tinyNBI 有效地将五个版本的 OpenFlow 核心抽象统一为一个一致的 C API,消除了应用中版本特定的逻辑。
  • 该 API 通过结构化数据类型(如 ofp_flow)实现流配置,绑定匹配项和指令集,简化了流的安装与删除。
  • 应用现在可提前声明所需功能和能力,确保执行前的兼容性,减少运行时错误。
  • 实验者扩展通过二进制数据块统一支持,无需验证,使厂商特定功能的实现不破坏抽象。
  • 该接口通过少量、一致的函数集合,支持所有主要 OpenFlow 操作——配置、查询、统计和修改。
  • 通过将应用逻辑与 OpenFlow 版本管理及交换机差异解耦,tinyNBI 降低了代码复杂性,提升了可维护性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。