OpenFlow Switch学习笔记(二)——OpenFlow Ports
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并不支持NORMAL和FLOOD端口,而OpenFlow-hybrid Switches可能会支持它们。将Packet转发到FLOOD port则依赖于Switch的实现和配置,而使用类型为all的组转发则能够使Remote Controller更加灵活地实现flooding。
OpenFlow Switch学习笔记(二)——OpenFlow Ports的更多相关文章
- OpenFlow Switch学习笔记(一)——基础概念
OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...
- OpenFlow Switch学习笔记(四)——Matching
这次我们着重详述来自于网络中的数据包在OpenFlow Switch中与Flow Entries的具体匹配过程,以及当出现Table Miss时的处理方式,下面就将从这两方面说起. 1.Matchin ...
- OpenFlow Switch学习笔记(五)——Group Table、Meter Table及Counters
本文主要详述OpenFlow Switch的另外两个主要组件——Group Table和Meter Table,它们在整个OpenFlow Swtich Processing中也起到了重要作用. 1. ...
- OpenFlow Switch学习笔记(六)——Instructions和Actions
本文主要重点讨论OpenFlow Switch规范的指令集,它们深刻影响着数据包在Switch中的处理行为,下面开始从以下几个部分谈起. 1.Instructions 每一个Flow Entry里都包 ...
- OpenFlow Switch学习笔记(三)——Flow Tables
这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow Tables,以了解其内部的 matching 以及 action handling 机制.下文将会分为几个部分来逐步详述O ...
- OpenFlow Switch学习笔记(七)——Matching Fields
Matching Fields in_port=port Matches OpenFlow port port dl_vlan=vlan Matches IEEE 802.1q Virtual LAN ...
- 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记
注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
随机推荐
- css样式书写的问题
经常遇到前端的朋友问及css样式书写的问题,结合自己实际的工作,自己总结了整理了一下,给大家分享: 一.顺序问题:显示属性-位置属性-元素自身属性-文本属性-其他属性 1.显示属性:z-index.d ...
- BPMX3模拟登录
实现功能只需要输入一个帐号即可登录系统. 需要实现上面的功能需要: 1.编辑imitate.jsp页面 <%@page import="com.hotent.core.util.Con ...
- TFS错误 TF31004:在连接带xxx.xxx.xxx.xxx上的Team Foundation Server时遇到错误。请等待几分钟,然后重试。如果问题仍然存在,请与服务器管理员联系
- bzoj3594: [Scoi2014]方伯伯的玉米田
dp新优化姿势... 首先,当我们拔高时,一定右端点是n最优.因为如果右端点是r,相当于降低了r之后玉米的高度.显然n更优. 那么可以dp.dp[i][j]表示前i个拔高j次的LIS.dp[i][j] ...
- jsp中JavaBean的用法
UserRegisterBean.java:这是JavaBean package JavaBean; public class UserRegisterBean { private String us ...
- WCF如何通过契约加编码方式调用
WCF采用基于契约的服务调用方法,通过System.ServiceModel.ChannelFactory<TChannel>直接创建服务代理对象. 创建服务代理 public stati ...
- node开发 npm install -g express-generator@4
Node forever : 1,forever start --uid test start app.js 2,forever start --uid test start -a app.js 3, ...
- Oracle连接的若干错误
用PL/SQL连接Oracle时会抛若干错误,如下: 1.ora-12154:TNS:无法解析指定的连接标识符 答:plsql在%Oracle_Home%\Network\Admin或者c:\inst ...
- POJ 1741 树上的点分治
题目大意: 找到树上点对间距离不大于K的点对数 这是一道简单的练习点分治的题,注意的是为了防止点分治时出现最后分治出来一颗子树为一条直线,所以用递归的方法求出最合适的root点 #include &l ...
- Problem K 栈
Description A math instructor is too lazy to grade a question in the exam papers in which students a ...