基于论文浅谈SDN: A Survey of Software-Defined Networking: Past,Present, and Future of Programmable Networks
文章目录
Introduction:
文章介绍了传统网络面临的复杂性比如网络僵化(“Internet ossification”),所以SDN的可编程网络出现能够从一定程度上解决这些问题.(早起的可编程网络演变到目前的SDN)
EARLY PROGRAMMABLE NETWORKS:
回顾的早期可编程网络提出的一些idea
- 1995:Open Signaling,需要将控制层面和真实设备分离,Access to the network hardware via open programmable network interfaces.
- 1995:Active Networking 使用可编程的交换机
- DCAN 某种程度可以认为是SDN前身:设备的控制和管理功能应该和设备本身分开
- 4D Project
- NETCONF:通过公开API来操作设备
III. SOFTWARE-DEFINED NETWORKING ARCHITECTURE
过去的网络设备需要执行协议或者算法,同时还需要转发数据报。SDN将转发硬件与控制逻辑的分离以更轻松地部署新协议和应用程序,直接的网络可视化和管理,并将各种中间框整合到软件控制中。网络不是在散装设备上执行政策和运行协议,而是简化为“简单”转发硬件和决策网络控制器。
相当于从高层来统一处理,而不是分开各自处理。现在网络设备将只有匹配转发的功能,
OpenFlow 协议:
介绍了OpenFlow架构:
如图,首先是OpenFlow 交换机(广义的,不局限于二层的交换机),交换机中包含流表用来做数据匹配,通过Client经过OpenFlow与控制层面通信。
FlowTable中:
- match fields :作用是匹配到来的数据包,数据包中的信息不局限于某一层,而是很多,比如headers, port, metadata等
match fields: 包括header fields 和 pipeline
priority:多个匹配时的优先级策略
-
counters:记录流的统计数据,比如数量
-
a set of instructions:应用到匹配项的操作
流匹配操作:原文写的很详细就不多加解释了:
Upon a packet arrival at an OpenFlow switch, packet header fields are extracted and matched against the matching fields portion of the flow table entries. If a matching entry is found, the switch applies the appropriate set of instructions, or actions, associated with the matched flow entry. If the flow table look-up procedure does not result on a match, the action taken by the switch will depend on the instructions defined by the table-miss flow entry. Every flow table must contain a table-miss entry in order to handle table misses. This particular entry specifies a set of actions to be performed when no match is found for an incoming packet, such as dropping the packet, continue the matching process on the next flow table, or forward the packet to the controller over the OpenFlow channel.
遇到流首先匹配,匹配不成功到缺失项,之后执行对应动作,修改counters
Communication:
Using the OpenFlow protocol a remote controller can, for example, add, update, or delete flow entries from the switch’s flow tables.
The Controller
控制器从某种层面可以认为是网络操作系统,OS为网络提供了编程接口,使得SDN,模型能够广泛应用在各种网络及物理媒体中,比如802.11协议等
下图显示的是应用如何根据API来进行网络编程。
应用程序可以通过Java API与控制器通信,或者写REST API与控制器通信。控制器可以通过OpenFlow协议与转发设备上的抽象层相互通信,完成流表的修改等一系列操作。
Abstraction of SDN:
抽象结构:
list[D. Kreutz et al. “Software-Defined Networking: A Comprehensive Survey”, Proceedings of the IEEE, Vol. 103, No. 1, January 2015.]
如果想详细了解SDN运作的推荐可以学习一下 P4language
SDN 开发工具
- *Emulation and Simulation Tools *: Mininet能够在一台计算机中模拟整个OpenFlow网络
- Available Software Switch Platforms
- Native SDN Switches
- Available Controller Platforms
- Code Verification and Debugging
SDN应用
- Enterprise Networks
- Data Centers
- Infrastructure-based Wireless Access Networks
- Optical Networks
- Home and Small Business
- …
list[https://ieeexplore.ieee.org/document/6739370]
Bruno Astuto et al., “A Survey of Software-Defined Networking: Past, Present, and Future of Programmable Networks,” IEEE Communications Survey and Tutorials, Vol. 16, Issue 3, August 2014.
由于网上P4 网上教程比较少,最近应该还会更新P4的基础教程