OpenFlow Ports是OpenFlow Switch与剩余网络之间传递Packet的网络接口。OpenFlow Switches之间通过OpenFlow Ports彼此相互逻辑连接。一个OpenFlow Switch准备了若干个可用的OpenFlow Ports用于OpenFlow processing,不过这里所说的OpenFlow Ports与传统的硬件交换机的网络接口并不是一样的概念,有些传统硬件交换机的网络接口在OpenFlow Switch里并不适用,OpenFlow Switch也可以定义自己额外附加的OpenFlow Ports。

  Packets通过 ingress port 被接收到OpenFlow Switch中,被Pipeline处理后,其或许会被转发到一个 output port 上。在Packet被Pipeline处理的整个流程中,这个 ingress port 会被作为Packet的一个属性存在,它表示了该Packet是从哪个OpenFlow Port进入到OpenFlow Switch里的,并可被用于后续的Flow Entry Matching过程。OpenFlow Pipeline可以通过使用 output action决定将该Packet转发到一个 output port上,进而将该Packet重新送回到网络中。

  一个OpenFlow Switch必须支持三种类型的OpenFlow Ports:physical ports(物理端口)、logical ports(逻辑端口)和reserved ports(预留端口)。具体OpenFlow Ports 描述如下:

1、Standard Ports(标准端口):

  OpenFlow Standard Ports通常被定义为是Physical ports、Logical ports和支持的LOCAL Reserved ports(不包括其他的Reserved ports)。它们可被用于 ingress port,也可被用于 output port,同样可以用于 Group 里,它们都有 port counters。

2、Physical Ports(物理端口):

  OpenFlow Physical Ports是OpenFlow Switch定义的、对应于物理交换机的一个硬件接口的port。比如在一个以太网交换机上,Physical Port会唯一对应于一个以太网接口。但是在一些特殊的环境中,比如在基于物理机硬件交换机上虚拟出来的OpenFlow Switch,它的Physical Port可能仅仅只是对应于这个物理硬件交换机的硬件接口上的一个虚拟切片。

3、Logical Ports(逻辑端口):

  OpenFlow Logical Ports是OpenFlow Switch定义的端口,它并不直接对应物理交换机的硬件接口。Logical Ports是Switch中用non-OpenFlow methods(比如link aggregation groups,tunnels,loopback interfaces)定义的更高级别的抽象,它可能包括了对Packet的封装,可能会被映射到多种Physical Ports上。它们对Packet的处理对于OpenFlow processing来说一定要是透明的,而且Logical Ports必须得像Physical Ports一样与OpenFlow processing交互。

  Logical Ports与Physical Ports唯一的区别就是与Logical Ports关联的Packets可能会有一个额外的称之为Tunnel-ID的metadata域与之关联;当一个Packet被Logical Ports接收并被发送到Remote Controller时,与其关联的Logical Port以及其潜在的Physical Port也要上报给Remote Controller。

4、Reserved ports(预留端口):

  OpenFlow Reserved ports是OpenFlow Switch规范定义的,它们指定了一些通用的转发动作,比如发送到Remote Controller,flooding,用non-OpenFlow methods转发(或者说是“正常的”交换机处理)。一个OpenFlow Switch并不需要实现所有的Reserved Ports,但是必须得实现下面加黑表示的Reserved Ports:

1)ALL:表示那些所有能被Switch用来发送特定Packets的ports,其仅仅只能被作为一个output port;在这种情况下,Packet的一个拷贝将会被发送到所有的Standard Ports,除了Packet的 ingress port以及那些配置为OFPPC_NO_FWD的ports。

2)CONTROLLER:表示与Remote Controller之间的OpenFlow Channel,可以被用作为一个 ingress port,也可以被用作为一个 output port。当被用作为一个 output port时,Packet将会被封装在 packet-in 消息体里,并被以OpenFlow Protocol的方式发送给Remote Controller;当被作为一个 ingress port时,则表明该Packet来源于Remote Controller。

3)TABLE:代表OpenFlow Pipeline的开始,该port仅仅只能在一个 packet-out 消息的action集合中的 action是 output 时才有效,它将Packet发给OpenFlow Pipeline的第一个Flow Table,以便开始进行常规 processing。

4)IN_PORT:代表Packet的 ingress port,仅仅被用作为一个 output port,将Packet通过它的 ingress port发送出去。

5)ANY:特殊的值,用在没有指定port(或者port是通配的)的特殊OpenFlow Commands情况下;它即不能作为一个 ingress port,也不能作为一个 output port。

6)LOCAL:表示Switch本地网络栈和管理栈,可以被用作是一个 ingress port 或者是 output port。Local Ports能够使远程实体通过OpenFlow网络与Switch及其它的网络服务交互,而不用通过一个独立的控制网络。通过合适的默认Flow Entries集合,它可以被用来实现一个 in-band controller连接。

7)NORMAL:表示Switch传统的non-OpenFlow Pipeline,仅仅只能用作一个output port,且仅仅只能使用Normal Pipeline来处理Packets。如果该Switch并不能将来自于OpenFlow Pipeline的Packets转发给Normal Pipeline,那么必须得表明其不支持该action。

8)FLOOD:表示使用Switch Normal Pipeline的flooding,仅仅只能被用作为一个output port,通常通过它可以将Packets发到所有的Standard Ports上,但除了接收这个Packet的 ingress port 以及那些状态为OFPPS_BLOCKED的ports;当然,Switch也可能会根据Packet的VLAN ID来选择往哪些port去flood。

OpenFlow-only Switches并不支持NORMALFLOOD端口,而OpenFlow-hybrid Switches可能会支持它们。将Packet转发到FLOOD port则依赖于Switch的实现和配置,而使用类型为all的组转发则能够使Remote Controller更加灵活地实现flooding。

OpenFlow Switch学习笔记(二)——OpenFlow Ports的更多相关文章

  1. OpenFlow Switch学习笔记(一)——基础概念

    OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...

  2. OpenFlow Switch学习笔记(四)——Matching

    这次我们着重详述来自于网络中的数据包在OpenFlow Switch中与Flow Entries的具体匹配过程,以及当出现Table Miss时的处理方式,下面就将从这两方面说起. 1.Matchin ...

  3. OpenFlow Switch学习笔记(五)——Group Table、Meter Table及Counters

    本文主要详述OpenFlow Switch的另外两个主要组件——Group Table和Meter Table,它们在整个OpenFlow Swtich Processing中也起到了重要作用. 1. ...

  4. OpenFlow Switch学习笔记(六)——Instructions和Actions

    本文主要重点讨论OpenFlow Switch规范的指令集,它们深刻影响着数据包在Switch中的处理行为,下面开始从以下几个部分谈起. 1.Instructions 每一个Flow Entry里都包 ...

  5. OpenFlow Switch学习笔记(三)——Flow Tables

    这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow Tables,以了解其内部的 matching 以及 action handling 机制.下文将会分为几个部分来逐步详述O ...

  6. OpenFlow Switch学习笔记(七)——Matching Fields

    Matching Fields in_port=port Matches OpenFlow port port dl_vlan=vlan Matches IEEE 802.1q Virtual LAN ...

  7. 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记

    注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...

  8. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  9. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

随机推荐

  1. DBCC DBREINDEX重建索引提高SQL Server性能

    大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server 要进行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通过重排表中的数 ...

  2. 在现有 SharePoint 服务器上安装 PowerPivot for SharePoint

    步骤1: 检查 SQL Server 2008 R2 Analysis Services 实例的“程序”文件夹.如果您找到了现有安装或之前安装的证据,则执行剩余步骤.否则,直接执行步骤 2:安装 Po ...

  3. java面向对象编程——第四章 类和对象

    OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...

  4. CSS最常用和实用的技巧

    1.重置浏览器的字体大小重置浏览器的默认值 ,然后重设浏览器的字体大小你可以使用雅虎的用户界面重置的CSS方案 ,如果你不想下载9MB的文件,代码如下: body,div,dl,dt,dd,ul,ol ...

  5. FLASH AS 不显示中文

    我修改一个as游戏,发现公告显示不了,整整折腾了2天. flash TextField 汉字不显示,英文会显示,如果是汉字夹杂数字,只把数字显示了,汉字被忽略了.   有人说嵌入字体,网上一搜索,好麻 ...

  6. SGU 140 扩展欧几里得

    题目大意: 给定序列a[] , p , b 希望找到一个序列 x[] , 使a1*x1 + a2*x2 + ... + an*xn = b (mod p) 这里很容易写成 a1*x1 + a2*x2 ...

  7. 10 件在 PHP 7 中不要做的事情

    1. 不要使用mysql_函数 这一天终于来了,从此你不仅仅"不应该"使用mysql_函数.PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数 ...

  8. java基础-002

    1.Java虚拟机和“平台无关语言” Java虚拟机是可以执行字节码的虚拟机进程.Java源文件被编译成被Java虚拟机执行的字节码文件. Java被设计成允许应用程序运行在任意的平台,而不需要程序员 ...

  9. 2013年8月份第3周51Aspx源码发布详情

    BaiduMusic Cache源码  2013-8-23 [VS2012]功能介绍:可以读取并保存百度音乐(Win8应用程序商店版本)的缓存.可以检测电脑是否安装了百度音乐,支持缓存音乐的导出功能. ...

  10. IOS四种保存数据的方式

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyed ...