openflow协议1.3.0中文版
OpenFlow协议1.0及1.3版本分析

OpenFlow协议1.0及1.3版本分析OpenFlow是SDN控制器和交换之间交流的协议,在SDN领域有着⼗分重要的地位。
OpenFlow协议发展到现在已经经过了1.0、1.3、1.4等版本。
其中1.0和1.3版本使⽤的是最为⼴泛的。
本篇博⽂主要分析1.0版本和1.3版本OpenFLow协议在控制器和交换机之间的交互流程。
OpenFlow1.0协议交互OpenFlow协议1.0的交互过程如下:交互过程:交换机或控制器⾸先发送hello报⽂,确定openflow通信版本。
交换机或控制器收到hello报⽂之后,回复⼀个hello报⽂,协商版本。
控制器发送feature_request报⽂,查询交换机具体信息。
交换机收到feature_request报⽂之后,回复feature_reply,报告⾃⼰的详细信息给控制器。
⼯作过程中控制器会不断发送echo_request给交换机,交换机回复echo_reply消息给控制器,确认连接。
OpenFlow协议1.0版本在交换机和控制器信息交互过程中,⼀共有如下的消息类型:1. Enum ofp_type {1. /* Immutable messages. */2. OFPT_HELLO, /* Symmetric message */3. OFPT_ERROR, /* Symmetric message */4. OFPT_ECHO_REQUEST, /* Symmetric message */5. OFPT_ECHO_REPLY, /* Symmetric message */6. OFPT_VENDOR, /* Symmetric message *//* Switch configuration messages. */7. OFPT_FEATURES_REQUEST, /* Controller/switch message */8. OFPT_FEATURES_REPLY, /* Controller/switch message */9. OFPT_GET_CONFIG_REQUEST, /* Controller/switch message10. OFPT_GET_CONFIG_REPLY, /* Controller/switch message *11. OFPT_SET_CONFIG, /* Controller/switch message *//* Asynchronous messages. */12. OFPT_PACKET_IN, /* Async message */13. OFPT_FLOW_REMOVED, /* Async message */14. OFPT_PORT_STATUS, /* Async message *//* Controller command messages. */15. OFPT_PACKET_OUT, /* Controller/switch message */16. OFPT_FLOW_MOD, /* Controller/switch message */17. OFPT_PORT_MOD, /* Controller/switch message *//* Statistics messages. */18. OFPT_STATS_REQUEST, /* Controller/switch message */19. OFPT_STATS_REPLY, /* Controller/switch message *//* Barrier messages. */20. OFPT_BARRIER_REQUEST, /* Controller/switch message */21. OFPT_BARRIER_REPLY, /* Controller/switch message *//* Queue Configuration messages. */22. OFPT_QUEUE_GET_CONFIG_REQUEST, /* Controller/switch m23. OFPT_QUEUE_GET_CONFIG_REPLY /* Controller/switch mess24. };其中红⾊为常⽤消息,整理如下:HelloFeature_requestFeature_replyStats_requestStats_replyFlow_modSet_configPacket_inPacket_out下⾯分别介绍以上报⽂信息。
华为 Sx700系列交换机 OpenFlow详版彩页

华为 Sx700系列交换机OpenFlow详版彩页网络面临的挑战传统网络的架构越来越不能满足市场的需求了。
对大部分企业和组织来说,IT是成本,并不能直接带来业务,特别是这几年,经济不够景气,企业更是减少对IT的投资;与此同时,企业又想方设法提高已有IT设备和人员的利用率,用来提高公司IT支撑能力,进而增进企业的竞争力。
电信运营商也面临着同样的挑战,一方面,无休止的网络扩容以应对移动终端和接入带宽的爆炸性增长,另一方面,企业的利润又被设备投资和维护无情的吞噬,体现在净利润逐年下滑。
具体来说,现有网络架构存在下列问题:网络越来越复杂现在的网络技术很大程度上是由一个个分裂的协议组成,这些协议就是机器之间沟通的“语言”。
利用这些语言,通信设备间无论距离多远,无论什么速率的链路,都可以组成任意的网络拓扑。
为了满足业务和技术的需求,业界各大标准组织,如IEEE、IETF、3GPP等等,制定出各种各样的组网协议用以提高网络带宽、保证通信更可靠、更安全。
大部分情况下,这些协议都是为了解决特定问题的,协议之间相互独立。
日积月累,导致了现在的网络越来越复杂。
在2014年3月的ONS(Open Network Summit)大会上,与会者展示了一个统计,在一个具有16个机架的中小型数据中心,需要人工输入8万行命令,用于配置数据中心纷繁复杂的协议。
以在网络增加或移除一个设备为例,IT人员需要对交换机、路由器、防火墙、Web认证服务器做调整,需要更新ACL、VLAN和QoS等。
与此同时,IT人员所利用工具大多是针对一个个独立的网络设备,而且要充分考虑各厂家交换机的型号、软件版本和当前拓扑。
也正是由于这些复杂性,现在的网络大多是静态的,因为IT人员不想因变动网络而导致业务中断。
“树欲静而风不止”,服务器虚拟化之“风”正急剧地撼动着网络这颗静态的“树”。
一个物理的服务器可以虚拟化成数个或数十个虚拟机(Virtual Machine), 每个虚拟机都可以独立的接入到网络中。
openflow 数据结构-无删减范文

openflow 数据结构openflow 数据结构1. 概述OpenFlow是一种网络通信协议,用于在网络交换机和控制器之间进行通信。
OpenFlow协议允许网络管理员通过控制器直接控制交换机的行为,从而实现网络资源的灵活分配和流量控制。
openflow 数据结构是OpenFlow协议中定义的数据结构,用于表示网络中的各种信息,如数据包、流表、端口等。
2. OpenFlow协议结构OpenFlow协议采用了分层的结构,由OpenFlow Switch、OpenFlow Controller和OpenFlow Protocol三个主要组成部分组成。
2.1 OpenFlow SwitchOpenFlow Switch是网络中的交换机,它负责转发数据包以及与控制器之间的通信。
OpenFlow Switch通过OpenFlow协议与控制器进行通信,接收控制器下发的指令,并根据指令的要求执行相应的操作,包括修改流表、转发数据包、发送统计信息等。
2.2 OpenFlow ControllerOpenFlow Controller是网络中的控制器,它负责对网络进行管理和控制。
Controller与Switch之间通过OpenFlow协议进行通信,Controller下发指令给Switch,根据网络的状态和需求来管理和控制网络。
Controller还负责处理从Switch传送来的统计信息和事件通知等。
2.3 OpenFlow ProtocolOpenFlow Protocol是实现OpenFlow通信的具体协议规范。
它定义了Controller与Switch之间的通信方式、消息的格式、数据结构等。
OpenFlow Protocol采用基于TCP的连接来保证通信的可靠性和稳定性。
3. OpenFlow数据结构3.1 数据包(Packet)数据包是OpenFlow协议中的基本单位,表示网络中的数据传输单元。
OpenFlow中的数据包由许多字段组成,包括源MAC地址、目标MAC地址、源IP地址、目标IP地址等。
Openflow协议入门

传统网络设备工作方式
Hub • 工作原理:基于物理端口转发 • 策略:Flood
L2Switch • 工作原理:基于MAC地址表转发 • 策略:STP+MAC地址学习
Router • 工作原理:基于路由表转发 • 策略:静态路由+动态路由协议
共同点:分布式策略(策略的制定者为设备本身)
转发表的结构:
dst port)
数据包处理方法: • 转发 • 修改包头
Openflow1.0对数据包匹配特征的描述方法
ofp_match的wildcard
ofp_match的wildcard
22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ‐ 31
终端
终端
终端
终端
终端
终端
终端
终端
终端
终端
Step1:建设计算机网络
终端
终端
终端
终端
终端
终端
终端
终端
终端
终端
计算机网络包括网络设备(节点)和链路(边) 任意两台计算机之间有信号的物理通路
Step2:创建转发表
网络A
终端
终端
终端
终端
B
AC
AB
C
BD
D
BC
B
网络B
终端
网络C
网络D
终端
终端
终端
终端
终端
Step3:建立转发表维护机制
以上每一种操作称为一个动作(Action),流表中的数据包处理方法是一个动 作列表(Action List),动作列表由以上各种动作组合合成。
Action头,包括Type和len字段 Type为一下类型之一
OpenFlow标准 中文版

I
第 4.2 节 第 4.3 节
4.3.1 4.3.2 4.3.3 4.3.4 第 4.4 节 4.4.1 4.4.2 4.4.3 4.4.4 第 4.5 节 4.5.1 4.5.2 4.5.3 第 4.6 节 4.6.1 4.6.2 4.6.3 第 4.7 节 4.7.1 4.7.2 第 4.8 节
第 2 章 Openflow............................................................
2.3.1 2.3.2 2.3.3 2.3.4 第 2.4 节 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 第 2.5 节 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 第 2.6 节
模型....................................................................................................................... 44 架构....................................................................................................................... 45 组件....................................................................................................................... 45 操作....................................................................................................................... 45 多粒度处理........................................................................................................... 46 开发实现............................................................................................................... 46 安装....................................................................................................................... 47 步骤....................................................................................................................... 47 依赖....................................................................................................................... 48 选项....................................................................................................................... 48 校验....................................................................................................................... 49 应用....................................................................................................................... 49 框架....................................................................................................................... 49 运行与接口........................................................................................................... 50 例程....................................................................................................................... 50 开发....................................................................................................................... 51 组件....................................................................................................................... 51 事件....................................................................................................................... 54 开发例程............................................................................................................... 57
Openflow协议通信流程解读

Openflow协议通信流程解读前言接触了这么久的SDN,Openflow协议前前后后也读过好多遍,但是一直没有时间总结一下自己的一些见解。
现在有时间了,就写一写自己对Openflow协议通信流程的一些理解。
SDN中Switch和controller在SDN中很重要的两个实体是Switch跟Controller。
Controller在网络中相当于上帝,可以知道网络中所有的消息,可以给交换机下发指令。
Switch就是一个实现Controller指令的实体,只不过这个交换机跟传统的交换机不一样,他的转发规则由流表指定,而流表由控制器发送。
switch组成与传统交换机的差异switch组成switch由一个Secure Channel和一个flow table组成,of1.3之后table变成多级流表,有256级。
而of1.0中table只在table0中。
Secure Channel是与控制器通信的模块,switch和controller之间的连接时通过socket连接实现。
Flow table里面存放这数据的转发规则,是switch的交换转发模块。
数据进入switch之后,在table中寻找对应的flow进行匹配,并执行相应的action,若无匹配的flow则产生packet_in(后面有讲)of中sw与传统交换机的差异匹配层次高达4层,可以匹配到端口,而传统交换机只是2层的设备。
运行of协议,实现许多路由器的功能,比如组播。
求补充!!(如果你知道,请告诉我,非常感谢!)openflow的switch可以从以下方式获得实体of交换机,目前市场上有一些厂商已经制造出of交换机,但是普遍反映价格较贵!性能最好。
在实体机上安装OVS,OVS可以使计算机变成一个openflow交换机。
性能相对稳定。
使用mininet模拟环境。
可以搭建许多交换机,任意拓扑,搭建拓扑具体教程本博客有一篇。
性能依赖虚拟机的性能。
OPENFLOW协议介绍
OPENFLOW协议介绍篇一:Openflow协议通信流程解读Openflow协议通信流程解读分类: openflow协议分析 2013-12-30 19:01887人阅读评论(1)收藏举报目录(?)[-] ?controller组成OFPT_FEATURES_REPLY篇二:Openflow及SDN技术简介Openflow及SDN1.网络虚拟化之SDN和OPENFLOW云计算的发展,是以虚拟化技术为基础的。
云计算服务商以按需分配为原则,为客户提供具有高可用性、高扩展性的计算、存储和网络等IT资源。
虚拟化技术将各种物理资源抽象为逻辑上的资源,隐藏了各种物理上的限制,为在更细粒度上对其进行管理和应用提供了可能性。
近些年,计算的虚拟化技术(主要指x86平台的虚拟化)取得了长足的发展;相比较而言,尽管存储和网络的虚拟化也得到了诸多发展,但是还有很多问题亟需解决,在云计算环境中尤其如此。
OpenFlow和SDN尽管不是专门为网络虚拟化而生,但是它们带来的标准化和灵活性却给网络虚拟化的发展带来无限可能。
OpenFlow起源于斯坦福大学的Clean Slate项目组 [1] 。
CleanSlate项目的最终目的是要重新发明英特网,旨在改变设计已略显不合时宜,且难以进化发展的现有网络基础架构。
在2006年,斯坦福的学生Martin Casado领导了一个关于网络安全与管理的项目Ethane[2],该项目试图通过一个集中式的控制器,让网络管理员可以方便地定义基于网络流的安全控制策略,并将这些安全策略应用到各种网络设备中,从而实现对整个网络通讯的安全控制。
受此项目(及Ethane的前续项目Sane[3])启发,Martin和他的导师Nick McKeown教授(时任Clean Slate项目的Faculty Director)发现,如果将Ethane的设计更一般化,将传统网络设备的数据转发(data plane)和路由控制(control plane)两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置,那么这将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展。
OpenFlow白皮书翻译
OpenFlow携手校园网创新译者:北邮-李呈Homepage: 摘要本白皮书提出OpenFlow:一种为研究人员提供的可以在日常网络中运行协议的方式。
OpenFlow基于拥有内部流表,并能通过标准接口添加和删除流表项的以太网交换机。
我们的目标是鼓励网络厂商将OpenFlow部署在大学校园骨干网和配线间的交换机产品上。
我们认为,OpenFlow的是一个有意义的折衷:一方面,它使研究人员能够以统一的方式在线速和高端口密度的交换机进行实验。
而另一方面,厂商不必暴露自己的交换机内部工作细节。
除了允许研究者在真实流量环境中评价他们的想法,在提出像GENI那样的大型测试平台的过程中OpenFlow还能是一个有用的校园组件。
不久的将来斯坦福的两栋大楼会在商用以太网交换机和路由器上部署OpenFlow。
我们会鼓励其他学校也部署OpenFlow,而且我们也会鼓励你考虑将OpenFlow部署到你的学校。
分类和主题描述C.2[互联网络]:路由器普通术语实验,设计关键词以太网交换机,虚拟化,流1、可编程网络的需求分析网络已经成为公司,家庭,学校的重要的基础设施。
这个成功对于网路研究者来说以一个福音也是一个诅咒。
他们的工作将更有相关性,但是做出影响的机会也越来越遥远。
在任何给定的网络中对现实世界的影响在减少的原因在于我们安装了大规模的设备和协议,而不愿对产生的流量做实验,这已经给创新设立了一个过高的门槛。
今天,在足够逼真的设置下(例如,大规模引入真实流量),几乎没有实用的方法去做网络新协议的实验(比如新的路由协议,或IP的替代协议),以获得将其广泛部署所需要的信心。
所以导致网络研究界的大部分想法都是没有尝试和测试过的,因此人们普遍认为当今的网络基础设施已经僵化。
意识到问题之后,网络研究一直在努力开发可编程网络,例如研究新的网络架构和分布式系统的全国性网络研究机构提出的GENI。
这些可编程的网络要求程控交换机和路由器(使用虚拟化技术)可以处理数据包的多个相互隔离的实验网络同时进行。
OpenFlow协议解读
OpenFlow协议解读OpenFlow通信流程解读前⾔接触了这么久的SDN,OpenFlow协议前前后后也读过好多遍,但是⼀直没有时间总结⼀下⾃⼰的⼀些见解。
现在有时间了,就写⼀写⾃⼰对OpenFlow协议通信流程的⼀些理解。
SDN中Switch和controller在SDN中很重要的两个实体是Switch跟Controller。
Controller在⽹络中相当于上帝,可以知道⽹络中所有的消息,可以给交换机下发指令。
Switch就是⼀个实现Controller指令的实体,只不过这个交换机跟传统的交换机不⼀样,他的转发规则由流表指定,⽽流表由控制器发送。
switch组成与传统交换机的差异switch组成switch由⼀个Secure Channel和⼀个flow table组成,of1.3之后table变成多级流表,有256级。
⽽of1.0中table只在table0中。
Secure Channel是与控制器通信的模块,switch和controller之间的连接时通过socket 连接实现。
Flow table⾥⾯存放这数据的转发规则,是switch的交换转发模块。
数据进⼊switch 之后,在table中寻找对应的flow进⾏匹配,并执⾏相应的action,若⽆匹配的flow 则产⽣packet_in(后⾯有讲)of中sw与传统交换机的差异匹配层次⾼达4层,可以匹配到端⼝,⽽传统交换机只是2层的设备。
运⾏of协议,实现许多路由器的功能,⽐如组播。
求补充!!(如果你知道,请告诉我,⾮常感谢!)OpenFlow的switch可以从以下⽅式获得实体of交换机,⽬前市场上有⼀些⼚商已经制造出of交换机,但是普遍反映价格较贵!性能最好。
在实体机上安装OVS,OVS可以使计算机变成⼀个OpenFlow交换机。
性能相对稳定。
使⽤mininet模拟环境。
可以搭建许多交换机,任意拓扑,搭建拓扑具体教程本博客有⼀篇。
Openflow-未来网络的基础协议(全文)
Openflow:未来络的基础协议(全文)2008年4月,一篇署名为NickMcKeown的论文《OpenFlow:enablinginnovationincampusnetworks》在ACMCommunicationsReview上发表。
至此,被美国斯坦福大学cleanslate研究组提出将近一年的Openflow向世人揭开了神秘面纱,一种将络转发与控制解耦的新型络交换模型逐渐浮出水面。
两年后,NickMcKeown又提出SDN(SoftwareDefineNetworks,软件定义络)的概念。
它起源于Openflow,也正是它,使Openflow引起业界重视,Openflow甚至在某种程度上成为SDN的代名词。
“SDN 是理念,Openflow是技术。
”盛科络CEO孙建勇一语道破SDN与Openflow之间的区别。
“在可以实现SDN的技术体系中,OpenFlow是相对成熟的技术之一。
”清华大学络研究院络体系结构与IPv6研究室主任毕军又指出了两者之间的关系。
虽然技术相对成熟,但是在追求标准化的IT界,尚未完全标准化的Openflow的标准化之路如何前行?这个过程会对SDN的发展起到什么样的作用?四个版本传统络架构由单独运行、封闭的设备连接构成,每台设备都有单独的操作系统,数据的转发和控制都由交换机和路由器完成,这会造成络的管控细节做得不是特别到位。
各种设备以及其相对孤立的操作系统在络中零散分布,也使络变得复杂且封闭。
此外,由于设备异构,络管理的兼容性也很难做到极致。
Openflow能够很好地解决以上问题。
与当今IT界追捧的“软硬件一体化”不同,SDN试图用软硬件分离的理念颠覆现有的络架构。
Openflow作为新一代络的核心技术,在分离软硬件方面肩负重任。
Openflow交换机以流表的方式进行数据的转发,FlowVisor负责对络进行虚拟化,控制器负责络控制,三者各司其职、分工明确而又相互配合,构成了Openflow的络架构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenFlow 交换机规范(概要)Version 1.3.0 (June 25, 2012)1 介绍本文档介绍的OpenFlow 交换机的要求。
规范包括交换机的组件和基本功能,和OpenFlow 的协议,通过一个远程控制器来管理一个OpenFlow 的交换机。
2 交换机组成OpenFlow 的交换机包括一个或多个流表和一组表,执行分组查找和转发,和到一个外部控制器OpenFlow 的信道(图1)。
该交换机与控制器进行通信,并通过OpenFlow 的协议控制器管理的交换机。
控制器使用OpenFlow 的协议,它可以添加、更新和删除流流表中的表项,既主动或者被动响应数据包。
在交换机中的每个流表中包含的一组流 表项;每个流表项包含匹配字段,计数器和一组指令,用来匹配数据包(见5.2)。
匹配开始于第一个流程表,并可能会继续额外的流表 (见 5.1)。
流表项匹配数据包按照优先级的顺序,从每个表的第一个匹配表项开始(见5.3)。
如果找到匹配的项,那么具体流表项按照指令去执行。
如果在流表中未找到 匹配项 ,结果取决于漏表的流表项配置:(例如, 数据包可被转发到OpenFlow 的信道控制器、丢弃、或者可以继续到下一个的流表,见5.4)。
指令与每个包含行动或修改流水线处理的流表项相联系(见 5.9)。
行动描述了数据包转发,数据包的修改和组表 处理。
流水线处理的指令允许数据包被发送到后面的表进行进一步的 处理 , 并允许信息以元数据的形式在表之间进行通信。
当与一个匹配的流表项相N.J.C.H关联的指令集没有指向下一个表的时候,表流水线处理停止,这时该数据包通常被修改和转发(见5.10)。
流表项可能包含数据包转发到某个端口。
这通常是一个物理端口,但它也可能是由交换机定义的一个逻辑端口或通过本规范中定义的一个保留的端口(见 4.1)。
保留端口可以指定通用的转发行为,如发送到控制器、泛洪、或使用非OpenFlow的方法转发。
如 “ 普通” 交换机转发处理(见4.5);而交换机定义的逻辑端口,可以指定链路汇聚组,隧道或环回接口(见4.4)。
流表项相关的行动,也可直接把数据包发送到组,进行额外的处理(见 5.6)。
组表示一组泛洪的指令集,以及更复杂的转发(如多路径,快速重路由,链路聚合)。
作为间接的通用层,组也使多个流表项转发到一个单一的标识符(例如一个共同的下一跳的IP转发)。
这种抽象的行为使相同的输出行动非常有效。
组表包含组表项,每个组表项包含了一系列依赖于组类型的特定规范的行动存储段(见5.6.1)。
一个或多个操作的行动用来使数据包发送到该组。
假如将正确的匹配和指令规范保护起来,交换机设计者可以任意的实现内部结构。
例如,如果需要使用一个流表项将所有的组转发到多个端口,交换机设计师可以在硬件转发表中用一个单一的位掩码去实现。
另一个例子是匹配; 如果OpenFlow交换机使用用不同数量的硬件表物理实现,那么流水线就会被暴露出来。
3 名词解释本节介绍了关键OpenFlow的规范条款:•字节:一个8位字节。
•数据包:以太网帧,包括报头和有效载荷。
•端口:数据包进入和退出OpenFlow的流水线地方(见4.1)。
可以是一个物理端口,由交换机定义一个逻辑端口,或由OpenFlow的协议定义一个保留端口。
•流水线:在一个openflow交换机中提供匹配、转发和数据包修改功能的流表连接集合。
•流表:流水线的一个阶段,包含若干流表项。
•流表项:在流表中用于匹配和处理数据包的一个元素。
它包含用于匹配数据包的匹配字段、匹配次序的优先级,跟踪数据包的计数器,以及对应的的指令集。
•匹配字段:用来匹配数据包的字段,包括包头,进入端口,元数据值。
匹配字段可能会进行通配符匹配(匹配任何值)或者在某些情况下通过位掩码进行匹配。
•元数据:一个可屏蔽寄存器的值,用于携带信息从一个表到下一个。
•指令:指令存在于流表项中,描述报文匹配流表项时OpenFlow的处理方式。
指令可以修改流水线处理,如指导包匹配另一个流表,也可以包含一系列添加到行动集的行动,还可以包含一系列立即应用到数据包的行动。
•行动:将数据包转发到一个端口或修改数据包,如TTL字段减1操作。
行动可能是与流表项相关联的指令集或者与组表项相关联的行动存储段的一部分。
我们可以将行动积累在数据包的行动集,也可以立即将行动应用到该数据包。
行动集:与数据包相关的行动集合,在报文被每个表处理的时候这些行动可以累加,在指令集指导报文退出处理流水线的时候这些行动会被执行。
• 组:一系列的行动存储段和一些选择一个或者多个存储段应用到数据包单元的手段。
•行动存储段:一组行动和相关参数,定义组。
•标记:一个头,可以插入到数据包或者通过压入和弹出行动进行移除。
•最外层的标签:一个数据包最开始出现的标签。
•控制器:一个实体与OpenFlow交换机使用OpenFlow协议交互的实体。
• 计量:一个交换机元件,可以测量和控制数据包的速度。
当数据包速率或通过计量的字节速率超过预定义的阈值时,计量触发计量带。
如果计量带丢弃该数据包,它则被称为一个速率限制器。
4 OpenFlow端口本节介绍了OpenFlow的端口的抽象概念和OpenFlow支持的各类端口。
4.1 OpenFlow端口OpenFlow的端口是OpenFlow处理进程和网络的其余部分之间传递数据包的网络接口。
OpenFlow交换机之间通过OpenFlow端口在逻辑上相互连接。
OpenFlow交换机使一些OpenFlow的端口,可用于OpenFlow的处理。
OpenFlow的端口组可能与交换机硬件中提供的网络端口不完全相同,因为有些硬件网络接口可能被OpenFlow 禁用,OpenFlow交换机也可以定义额外的端口。
OpenFlow的数据包从入口端口接收,经过OpenFlow的流水线处理(见5.1),可将它们转发到一个输出端口。
入端口是数据包的属性,它贯穿了整个OpenFlow流水线,并代表数据包是从哪个OpenFlow交换机的端口上接收的。
匹配报文的时候会用到入端口(见5.3)。
OpenFlow流水线可以决定数据包通过输出行动发送到输出端口(见5.12),它定义了数据包怎样传回到网络中。
OpenFlow交换机必须支持三种类型的OpenFlow的端口:物理端口,逻辑端口和保留端口。
4.2标准端口OpenFlow的标准端口为物理端口,逻辑端口,本地保留端口(其他保留的端口除外)。
标准端口可以被用作入口和出端口,它们可用于在组(见5.6),都有端口计数器(见5.8)。
4.3 物理端口OpenFlow的物理端口为交换机定义的端口,对应于一个交换机的硬件接口。
例如,以太网交换机上的物理端口与以太网接口一一对应。
在某些部署中,OpenFlow交换机可以实现交换机的硬件虚拟化。
在这些情况下,一个OpenFlow物理端口可以代表一个与交换机硬件接口对应的虚拟切片。
4.4 逻辑端口OpenFlow的逻辑端口为交换机定义的端口,并不直接对应一个交换机的硬件接口。
逻辑端口是更高层次的抽象概念,可能是交换机中不使用OpenFlow的端口(如链路汇聚组,隧道,环回接口)。
逻辑端口可能包括报文封装,可以映射到不同的物理端口。
这些逻辑端口的处理动作相对于openflow处理来说必须是透明的,而且这些端口必须通过openflow处理起作用,像硬件接口一样。
物理端口和逻辑端口之间的唯一区别是:一个逻辑端口的数据包可能有一个叫做隧道ID的额外的元数据字段与它相关联;而当一个逻辑端口上接收到的分组被发送到控制器时,其逻辑端口和底层的物理端口都要报告给控制器。
4.5 保留端口本规范所定义的OpenFlow的保留端口。
它们指定通用的转发动作,如发送到控制器,泛洪,或使用非OpenFlow的方法转发,如“正常”交换机处理。
某个交换机只支持那些标记为“Required”的保留端口,至于“Optional”的端口可以根据需要可选。
• Required: ALL: 表示交换机转发特定数据包到所有端口,它仅可用于为输出端口。
在这种情况下,数据包被复制后发送到所有的标准端口,包括数据包的入端口,这些端口被配置OFPPC_NO_FWD。
• Required: CONTROLLER: 表示的OpenFlow控制器的控制通道,它可以用作一个入端口或作为一个出端口。
当用作一个出端口,封装数据包中为数据包消息,并使用的OpenFlow协议发送(见A.4.1)。
当用作一个入口端口,确认来自控制器的数据包。
• Required: TABLE: 表示openflow流水线的开始。
这个端口仅在输出行为的时候有效,此时交换机提交报文给第一流表使数据包可以通过定期通过OpenFlow流水线处理。
• Required: IN PORT:代表数据包进入端口。
用于输出端口时,只允许入端口发送的数据包通过。
• Required: ANY: 特别值,用在未指定端口的OpenFlow指令(端口通配符)。
不能使用的入口端口,也不作为一个输出端口。
• Optional: LOCAL: 表示交换机的本地网络堆栈和管理堆栈。
可以用作一个入口端口或作为一个输出端口。
本地端口使远程实体通过OpenFlow网络和交换机以及其网络服务互通,而不是通过一个单独的控制网络进行互通。
使用一组合适的默认流表项,本地端口可以用来实现一个带内控制器的连接。
• Optional: NORMAL: 代表传统的非OpenFlow流水线(见5.1)。
仅可用于为一个输出端口,使用普通的流水线处理数据包。
如果交换机不能转发数据包从OpenFlow流水线到普通流水线,它必须表明它不支持这一行动。
• Optional: FLOOD: 表示使用普通流水线处理进行泛洪(见 5.1)。
可用于作为一个输出端口,一般可以讲数据包发往所有标准端口,但不能发往入端口或OFPPS_BLOCKED状态的端口。
交换机也可以通过数据包的VLAN ID选择哪些端口泛洪。
只有OpenFlow-only交换机不支持NORMAL端口和FLOOD端口,而OpenFlow-hybrid交换机均支持上述端口(见5.1)。
转发数据包到FLOOD端口依赖交换机上的实现和配置,而使用一组类型进行转发可以使控制器能够更灵活地实现泛洪(见5.6.1)。
5 OpenFlow表本节描述流表和组表的组件,以及与匹配和行动处理的技术。
5.1流水线处理OpenFlow兼容的交换机有两种类型:OpenFlow-only和OpenFlow-hybrid。
OpenFlow-only交换机只支持OpenFlow操作,在这些交换机中的所有数据包都由OpenFlow流水线处理,否则不能被处理。