这节的内容相当多,主要是介绍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. setTimeout()的返回值

    今天遇到一个问题,题目如下: var len=4; while(len--){ setTimeout(function(){ console.log(len); },0); console.log(l ...

  2. 动态规划+滚动数组 -- POJ 1159 Palindrome

    给一字符串,问最少加几个字符能够让它成为回文串. 比方 Ab3bd 最少须要两个字符能够成为回文串 dAb3bAd 思路: 动态规划 DP[i][j] 意味着从 i 到 j 这段字符变为回文串最少要几 ...

  3. msxml 操作xml

    1.简介 在.NET平台,微软为C#或托管C++程序员提供了丰富的类库,用以支持各种需求,其中就有对XML文件操作的丰富的类.例如XMLDocument, XmlElement等.但是C++标准库中并 ...

  4. android实现边框圆角

    1. 在drawable 下新建 shape.xml 文件 Xml代码  :  1 <?xml version="1.0" encoding="UTF-8" ...

  5. 固定textview大小,根据文字多少调整字体自适应textview大小

    /** * 文件名 AutoResizeTextView.java * 包含类名列表 com.haier.internet.conditioner.haierinternetconditioner2. ...

  6. Java基础知识强化84:System类之exit()方法和currentTimeMillis()方法

    1. exit方法: public static void exit(int status): 终止当前正在运行的Java虚拟机.参数用作状态码:根据惯例,非0的状态码表示异常终止. 调用System ...

  7. MySQL-视频跟随练习笔记

    在表中添加某列 alter table tbl_user add email varchar(50); 在表中删除某列 alter table tbl_user drop email; 重命名某列 a ...

  8. 配置Ssh免密码登录

    配置Ssh免密码登录 一个master节点,两个client节点(client1.client2) 1.所有节点创建hadoop用户,并设置密码 以root账号登录: useradd hadoop p ...

  9. 简单dp ---HDU3485 Count 101

    题目大意:让求长度为n的0 和 1 构成的串中不包含101子串的个数有多少. 这个题当时想了好久,以为是一个规律题,一直在推规律,最后还是wa了,上网一看原来是dp问题, 不过确实递推式挺巧妙的. 递 ...

  10. Java数据库连接之配置ODBC数据源

    java使用JDBC-ODBC桥接连接SQLServer数据库需要配置ODBC数据源,配置步骤如下: 1.进入控制面板,找到管理工具 2.看到ODBC数据源,有64位和32位的,如果你的数据库是64位 ...