这节的内容相当多,主要是介绍OpenFlow标准特别是流表的相关特性。

  典型的OpenFlow标准由三部分组成:安全通道,流表和OpenFlow协议。注意这个标准是一份设备标准,并不单指OpenFlow协议。后来引入了流水线式的多流表以及组表(Group Tabel)。

  (图摘自SDNAP的文章)

  安全通道是交换机与控制器进行通讯的接口,在实现上推荐使用(在缺省情况下就是)TLS用来保证认证性和数据隐私。而OpenFlow协议是用来描述控制器和交换机之间交互信息的接口标准。OpenFlow协议支持三种类型的信息:controller-to-switch(控制器到交换机)、asynchronous(异步,实质上这更应该命名为switch-to-controller交换机到控制器)和symmetric(对称)。具体来说每种类型都包含了不少类型的信息,这里就不说了。

  流表是可以看作是普通协议格式的一种抽象。在OpenFlow v1.3中,流表结构由匹配域、优先级、计数器、指令(改名前叫动作)、超时定时器和Cookie。(1)匹配域包含的内容非常多,而且还在不断地扩展,典型的有源MAC地址、目的MAC地址、源IP地址、目的IP地址以及端口等,反正这包括各种各样已知的协议所用到的域。而OpenFlow就是希望做到可以对任意域进行匹配。(2)优先级是指流表项在该流表的匹配相对匹配次序。值得注意的是,流表和流表之间也有优先级的概念,这指的是流水线上的相对匹配次序。另外,这个优先级并不是好像编程中优先队列那样的优先级,而是硬性的如插入排序那样优先级。指定了一个优先级,就硬性插入到该位置。这对于表项和表从概念上都是一样的。(3)计数器是指匹配这个流表项的数据包累计数目。(4)指令表示如何处理匹配这个流表项的数据包。这个指令有可能是对其动作集作出修改并传到下一个流表进行匹配,也有可能是立刻执行动作集的动作。动作集可以理解为经过多个流表后每个流表指定要做的动作的集合。(5)超时定时器是指这个流表项的最长有效时间。当超过有效时间后,OpenFlow交换机会删除该流表项并向控制器发送消息使其知道此情况。(6)Cookie在数据转发上不会用到,它是控制器用来操纵流的工具。

  组表其实就是将多个流编成一个组,然后执行相同的操作集。这可以用于实现广播或组播,或者对某些流执行一些特别的操作。

  在OpenFlow v1.2后提出了Openflow端口的概念。OpenFlow交换机支持三种类型的端口:物理端口、逻辑端口和保留端口。物理端口就是指交换机的硬件端口,而逻辑端口是指具有抽象意义的端口,例如全部物理端口,某些物理端口等,我认为这主要是为了一些转发行为的方便。保留端口是为了扩展的方便,例如使用非OpenFlow的方法转发等。这三种端口都统称为OpenFlow端口,在使用上一般不区分。

    

(图摘自SDNAP的文章)

  最后说说数据包的匹配过程。当一个数据包从输入端口进入OpenFlow交换机后,会先在表0进行匹配,根据匹配的流表项执行下一步的操作,有可能是直接执行动作集或丢弃数据包,也可能是将动作加入动作集然后转到后续流表匹配。值得注意的是,在OpenFlow v1.3中增加了table-miss流表项,用于指示当整个流表都不匹配的时候执行的动作。这非常有利于定义缺省动作。另外,流表的操作顺序只能按优先级从前到后,不能转回前面,但应该可以跳到后面的某个表,这应该是加入某些值然后使后面的表都只将其传递直到目标。这个我还不肯定。

  当然,这一节还包含很多其他的内容。但我认为以上是主干知识。

《SDN核心技术剖析和实战指南》2.2OpenFlow交换机规范小结的更多相关文章

  1. 《SDN核心技术剖析和实战指南》2.3 OF-CONFIG配置管理协议小结

    OpenFlow协议定义了交换机和控制器交换数据的方式和规范,但并没有定义如何配置和管理必需的网络参数和网络资源,OF-CONFIG的提出就是为了对OpenFlow提供配置管理支持.如下图所示,OF- ...

  2. 《SDN核心技术剖析和实战指南》第一章小结

    第一章主要是概况.新技术有一个特点是,每家都有不同的说法.这里我只说说我比较认同的部分. SDN的核心概念大概有两个:转发面与控制面分离.开发可编程化.书里还说逻辑上集中控制,其实这个就可以从转发与控 ...

  3. SDN核心技术剖析和实战指南---读书笔记

    第一章 SDN定义如下: SDN是一种新兴的基于软件的网络架构及技术,其最大的特点在于具有松耦合的控制平面与数据平面.支持集中化的网络状态控制.实现底层网络设施对上层应用的透明. SDN和NFV: O ...

  4. 《SDN核心技术剖析和实战指南》3.3读书笔记

    这一节主要是介绍几种开源的SDN控制器. NOX/POX.最初的NOX混合了C++和Python两种编程语言,现在演变为两个版本.NOX版本主要面向Linux平台,利用C++开发,目标是提供快速的控制 ...

  5. 《SDN核心技术剖析和实战指南》3.1控制器核心技术读书笔记

    在SDN的架构中,控制器可以说是SDN的核心,它负责对底层转发设备的控制以及向上层应用提供可编程性的北向接口.从实现上看,主要分三个层面来考虑,南向接口技术,北向接口技术以及东西向的可扩展性能力.下面 ...

  6. 《SDN核心技术剖析和实战指南》2.1交换机核心技术小结

    对于SDN交换机的技术,其实也适用于传统的交换机,只不过控制部分被分离出来而已.传统交换机的控制面主要是转发表的管理以及网络状态之类的各种表,现在这些都由控制器来担心.转发面主要由转发决策.背板和输出 ...

  7. 《SDN核心技术剖析和实战指南》2.4 OVS交换机实现分析小结

    Open vSwitch(OVS)是一款基于软件实现的开源交换机.它能够支持多种标准的管理接口和协议以及跨多个物理服务器的分布式环境.特别地,OVS提供了对OpenFlow协议的支持,并且能够与众多开 ...

  8. 大数据存储:MongoDB实战指南——常见问题解答

    锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...

  9. Apache Beam实战指南 | 手把手教你玩转KafkaIO与Flink

    https://mp.weixin.qq.com/s?__biz=MzU1NDA4NjU2MA==&mid=2247492538&idx=2&sn=9a2bd9fe2d7fd6 ...

随机推荐

  1. .net错误处理机制(转)

    asp.net 提供了4中错误机制:Page_Error事件>ErrorPage属性>Application_Error事件> <customErrors>配置项 ① P ...

  2. HTML基本概念

    什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...

  3. CSS中的盒子模型详解

    很多人对盒子模型搞晕头了,下面通过一个简单的代码来分析盒子模型的结构! 为了方便方便观看!在第一个div中画了一个表格,并将其尺寸设置成与div内容大小一样!且设置body的margin和paddin ...

  4. (四)Angularjs - 小实例(2)

    自定义指令编写时钟 模板 <!-- 模板文件 --><html> <!-- 内置的ng-app指令通知编译器启动AngularJS框架--> <body ng ...

  5. Struts2 处理表单重复提交

    * 在表单页面中增加一个隐藏域:<s:token></s:token>(需要在表单内)        * 创建一个struts.xml的配置文件,具体配置如下:         ...

  6. 《Effective C++》 阅读小结 (笔记)

    A person who is virtuous is also courteous. "有德者必知礼" 书本介绍:<Effective C++:改善程序与设计的55个具体做 ...

  7. nginx虚拟配置

    server { listen 8080; server_name www.manihome.com ; root "D:/WWW/mnmnh_2015"; location / ...

  8. redis常见命令

    一.介绍 1.Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redis提供了一些丰富 ...

  9. C++实现Log()日志函数

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600649.html 需求:Log()函数,能够自动根据时间记录日志信息,要求不定参数类型和参数个数. 第一 ...

  10. asp.net2.0app开发。

    asp.net app 网站开发:http://www.cnblogs.com/TerryFeng/archive/2009/05/15/1457731.html 在OPERA或M3GATE中设置编码 ...