openflow协议以及协议的代码实现
openflow openflow协议openflow协议•of 协议支持三种消息类型:controller-to-switch,asynchronous(异步)和symmetric(对称),每一类消息又有多个子消息类型。
•controller-to-switch 消息由控制器发起,用来管理或获取switch 状态;•asynchronous 消息由switch 发起,用来将网络事件或交换机状态变化更新到控制器;•symmetric 消息可由交换机或控制器发起。
controller-to-switch•Features•在建立传输层安全会话(Transport Layer Security Session)的时候,控制器发送feature请求消息给交换机,交换机需要应答自身支持的功能。
•Configuration•控制器设置或查询交换机上的配置信息。
交换机仅需要应答查询消息。
•Modify-state•控制器管理交换机流表项和端口状态等。
•Read-state•控制器向交换机请求一些诸如流、网包等统计信息。
•Send-packet•控制器通过交换机指定端口发出网包。
•Barrier•控制器确保消息依赖满足,或接收完成操作的通知asynchronous•Packet-in•交换机收到一个网包,在流表中没有匹配项,则发送Packet-in 消息给控制器。
如果交换机缓存足够多,网包被临时放在缓存中,网包的部分内容(默认128 字节)和在交换机缓存中的的序号也一同发给控制器;如果交换机缓存不足以存储网包,则将整个网包作为消息的附带内容发给控制器。
•Flow-removed•交换机中的流表项因为超时或修改等原因被删除掉,会触发Flow-removed 消息。
•Port-status•交换机端口状态发生变化时(例如down 掉),触发Port-status 消息。
symmetric•Hello•交换机和控制器用来建立连接。
•Echo()•交换机和控制器均可以向对方发出Echo 消息,接收者则需要回复Echo reply。
该消息用来测量延迟、是否连接保持等。
•Vendor•交换机提供额外的附加信息功能。
为未来版本预留。
ofpt 协议头•struct ofp_header {•uint8_t version; /* 协议版本*/•uint8_t type; /* 消息类型*/•uint16_t length; /* 消息长度*/•uint32_t xid;/* 该报文的ID,要求返回的报文ID相同,以使它们配对*/•};代码的大体结构•涉及报文传输与生成的mian函数•udatapath.c 负责datapat •controller.c 负责controller •secchan.c 负责安全通道•dpctl.c 负责管理dp接受报文后的处理•secchan负责连接controller和udatapath,controller和switch的数据交互要经过secchan。
•如果网络的拓扑结构发生变化,导致IP地址的变化,secchan调用ofp-discover重新连接IP变化的peer•dpctl.c可以发出任何协议包,所以它可以用来修改switch的一些状态,比如生成树什么的。
echo只能由dpctl发出。
setting的参数由它设置。
controller协议报文相关•controller的大体流程调用do_switching(struct switch_ *sw)/*返回发出的报文总数、读取报文、分析header、处理报文、并且维护连接。
调用lswitch_process_packet(sw->lswitch, sw->rconn, msg)读取报文,根据报文的类型处理报文•type为:OFPT_ECHO_REQUEST调用:process_echo_request(…,…,*rp)调用queue_tx()排队,最多排10对调用make_echo_reply()创建一个echo_reply的消息,这个消息跟rp中的消息匹配•OFPT_FEATURES_REPLY调用:process_switch_features 交换机返回自身状态datapath_ID、能力调用:process_phy_port了解交换机的port状态stp:listening、learning、forwarding、blocking、disablenon-stp:forwarding•OFPT_PACKET_IN调用函数process_packet_in 根据报文的长度判断报文打给controller的原因:流表项指定发给controller(max-len);查不到匹配流表项(miss-send-len字节)。
源端口是保留的广播地址、stp显示源端口不能接受节点、源端口和目的端口是同一个端口时,drop it。
若成功,发出,setup new flow交换机有无缓存报文不setup flow 只能指定一次•报文为:OFPT_PORT_STATUS 调用process_port_status调用process_phy_port 修改port的状态port为stp时:P_LISTENING、P_LEARNING、P_FORWARDING、P_BLOCKING、P_DISABLED。
非stp:P_FORWARDING报文头部:OFPT_STATS_REPLY(流、网包等统计信息的反馈)调用process_stats_reply(读取交换机的信息,比如最后reply的时间)调用process_flow_stats(根据读取的信息判断流表是否应该删除)调用make_openflow以及rconn_send发出type为(OFPT_FLOW_MOD或者OFPFC_DELETE_STRICT的报文)报文头部为:OFPT_FLOW_REMOVED NUlludatapath.c •udatapath.c大体流程•调用dp-run()调用netdev-recv 接收报文,放入buffer中调用fed-port-input (接受报文,遍历流表寻找匹配的流表项,没有就发给controller)调用run-flow-through-table(遍历流表,并且处理报文)调用dp-output-control 负责组建ofp-packet-in 报文、确定发多少数据给controller(根据reason和switch的缓存能力)调用remote-run(做一些保持连接的处理,并且接受remote发来的报文并且处理它们,最高迭代50次,以防止其他进程饿死。
)调用fwd-controller-input读取报文,分析报文头部,判断是否是来自controller的报文,并且处理来自controller的报文•报文头部:OFPT_BARRIER_REQUEST 调用recv_barrier_request先make_barrier_reply后send_openflow_buffer分析接受数据,判断Send back to the sender或者是Broadcast to all remotes•OFPT_FEATURES_REQUEST调用recv_features_request调用dp_send_features_reply先make_openflow_reply后将sw的状态放入报文datapath_id、n_tables 、n_buffers、capabilities、actionssend_openflow_buffer报文头部:OFPT_GET_CONFIG_REQUEST 调用recv_get_config_request先make_openflow_reply后flags、miss_send_len•OFPT_SET_CONFIG调用recv_set_configflags、miss_send_len的赋值•OFPT_PACKET_OUT判断通过调用execute_actions判断通过调用do_output判断目标调用dp_output_port调用dp_output_control•OFPT_FLOW_MOD调用recv_flowOFPFC_ADD add_flowOFPFC_MODIFY || OFPFC_MODIFY_STRICT mod_flowOFPFC_DELETE 先flow_extract_match 后chain_deleteOFPFC_DELETE_STRICT 先flow_extract_match后判断priority = key.wildcards 再chain_delete•OFPT_PORT_MOD•OFPT_STATS_REQUEST•OFPT_ECHO_REQUEST•OFPT_ECHO_REPLY•OFPT_QUEUE_GET_CONFIG_REQUEST •OFPT_VENDOR•报文type都是以上类型•调用dp-send-error-msg调用make-openflow-reply(ofpt-error)报文的产生secchan•vconn-openflow 读取ofp-version•调用relay-run调用rconn-send调用try-send调用vconn-send调用vconn-connect调用vsc-send-hello发出hello报文(调用vcs-recv-hello接受hello报文)。
openflow代码流程
Controller.c设置程序名字;错误处理;初始化时间跟踪模块;初始化登陆子系统;解析参数;控制住信号sigpipe,不让程序因为这个信号自动退出。
判断有无连接要求。
根据输入尝试连接openflow设备,并且商讨一个让双方都能接受的OF协议。
若成功则连接switch,并且将指向连接的指针放入switch数组中去。
尝试开始监听openflow设备的连接。
若成功,将指向连接的数组存入listenrs[]数组中去。
阻止双开。
后台运行。
使用默认端口开始监听来自client的连接,并且处理他们的要求。
将n_listeners个虚拟连接真实的连接起来,并且存到new_vconn中做一些交换的工作,限制迭代次数,以至于向poll loop登记的回调信号不会被饿死限制迭代次数为50次接受报文并且处理报文(根据协议)返回真i++返回EAGAIN 清空该switch返回假,跳出该循环保持switch的活跃当一个连接准备接受时,唤醒poll loop循环:等待poll loop的调用Poll_block 阻塞poll_loopSecchan.c一样的开头开始监听管理或者监视连接尝试监听[i],若成功就将指向新连接的指针放入到listeners数组中去Setting中有没有设置s.monitor_name.若有则连接,并且返回指向新连接的指针给monitor,否则返回NULL/*初始化switch的状态,并且挂起阻止双开后台运行开始监听vlogconf的要求检查dpname,尝试catch命令行的调用错误。
创建并且返回一个新的连接连接datapath(一个for a ;一个for r)连接controllerStart relaying根据setting的要求,建立switch的状态,并且挂起。
开始监听端口接受数据,写入relay后面如果有monitor,连接monitor。
如果节点没有连接到节点,可能是网络拓扑结构的改变,需要重新获得dhcp的IP地址尝试更新IP地址重新连接等待调用Udatapath.c一样的开头新建datapath,并且初始化为0尝试监听pvconn_name,成功,指针存入pvconn,并且将其写入dp中Port_list写入dpLocal_port写入dp无限循环:dp_run;dp-wait;poll-block;dp-run清空缓存如果dp的创建时间不是现在的话初始化dp然后将dp的创建时间改为现在下次调用poll_block去block poll在1000milliseconds上面的函数只有一次影响,下一次必须重新设定如果没有buffer:分配bufferBuffer被接受,根据dp的流表处理接受到的数据,没有流表匹配就交给controller清空buffer如何从remote取数据,并且根据协议处理维护连接挂起。
OpenFlow协议1.0讲解
Openflow 1.0.0 报告
余显 2013年7月11日
YOUR LOGO
目录
1、SDN简介
2、openflow介绍
三、OF协议:控制器控制 流表修改的数据结构
• • • • • • • • • • • • • • • • 1、控制修改命令: enum ofp_flow_mod_command { OFPFC_ADD, /* New flow. */ OFPFC_MODIFY, /* Modify all matching flows. */ OFPFC_MODIFY_STRICT, /* Modify entry strictly matching wildcards */ OFPFC_DELETE, /* Delete all matching flows. */ OFPFC_DELETE_STRICT /* Strictly match wildcards and priority. */ }; 2、flags域的取值: enum ofp_flow_mod_flags { OFPFF_SEND_FLOW_REM = 1 << 0, /* Send flow removed message when flow * expires or is deleted. */ OFPFF_CHECK_OVERLAP = 1 << 1, /* Check for overlapping entries first. */ OFPFF_EMERG = 1 << 2 /* Remark this is for emergency. */ };
openflow协议1.0中文版
第一章Openflow1.0第1.1节概述官方网站:。
本部分内容按照Openflow规范1.0版本撰写。
1.0之前版本都是草案,从1.0版本开始是正式版本,生产商们理论上应该都参照这个版本。
1.0版本的下载地址为http:// /documents/openflow-spec-v1.0.0.pdf。
目前最新规范版本为1.3,但现有实现多以1.0版本为主。
第1.2节交换机组成每个of交换机(switch)都有一张流表,进行包查找和转发。
交换机可以通过of 协议经一个安全通道连接到外部控制器(controller),对流表进行查询和管理。
图表一-1展示了这一过程。
图表一-1 of交换机通过安全通道连接到控制器流表中包括一些流表项,每个表项包括若干个域:包头域(header fileds,匹配包头多个域)、活动计数器(counters)、0个或多个执行行动(actions)。
交换机对每一个包在流表中进行查找,如果匹配则执行相关行动,否则通过安全通道将包转发到控制器,控制器来决策如何处理无匹配流表的网包,并添加或者删除流表项。
流表项可以将包转发到一个或者多个端口。
一般来说,可以指定物理端口,协议并没有预先规定一些抽象集合(包括端口聚合或vlan端口)。
of端口状态有限,包括up、down或是否生成树洪泛从此端口转发。
端口配置可以通过of配置协议进行处理。
of 虚拟端口包括洪泛和入口等。
第1.3节流表流表是交换机进行转发策略控制的核心数据结构。
交换芯片通过查找流表表项来决策对进入交换机的网络流量采取合适的行为。
每个表项包括三个域,包头域(header field),计数器(counters),行动(actions)。
如表格一-1所示。
表格一-1 流表项结构1.3.1包头域包头域包括12个域,如表格一-2所示,包括:进入接口,Ethernet源地址、目标地址、类型,vlan id,vlan优先级,IP源地址、目标地址、协议、IP ToS位,TCP/UD P目标端口、源端口。
openflow协议书
openflow协议书OpenFlow协议是一种为软件定义网络(SDN)架构设计的开放通信协议。
通过OpenFlow协议,网络管理员可以通过集中控制器对网络设备进行管理和控制,实现网络的灵活性、可编程性和可自动化的特性。
下面将对OpenFlow协议的设计原理、工作流程和应用场景进行详细介绍。
OpenFlow协议的设计原理是将网络设备的控制平面(Control Plane)与数据平面(Data Plane)分离。
在传统网络中,控制平面和数据平面是紧密耦合的,网络设备负责处理数据包的转发和处理,以及控制平面的任务。
而在OpenFlow网络中,网络设备只负责数据转发和处理,所有的控制任务由集中控制器来完成。
这种分离的设计使得网络设备更加简单和高效,并且实现了网络控制的灵活性和可编程性。
OpenFlow协议的工作流程主要包括三个部分:控制器发出控制消息、网络设备进行数据转发和处理、网络设备将数据包转发到指定的端口。
当控制器发出控制消息时,它会根据网络的需求来编写和配置数据转发规则(Flow Rules),并将这些规则发送到网络设备的Flow Table中。
网络设备依照Flow Table中的规则对数据包进行操作,例如转发、丢弃或修改。
最后,网络设备将数据包发送到指定的端口,完成数据传输。
OpenFlow协议的应用场景非常广泛。
首先,它可以用于数据中心网络的管理和控制。
在传统的数据中心网络中,需要手动配置网络设备,而OpenFlow可以实现自动化配置和管理,提高网络的可靠性和可扩展性。
其次,OpenFlow可用于网络安全。
通过集中控制器可以对数据包进行深度检测和策略管理,提供更加灵活和可靠的安全措施。
此外,OpenFlow还可以应用于无线网络、广域网和云计算等领域。
尽管OpenFlow协议在网络技术中有诸多优点,但也存在一些挑战和限制。
首先,协议的安全性是一个关键问题。
由于控制器和网络设备之间的通信是基于网络的,因此需要采取必要的安全措施来防止恶意攻击和非法访问。
SDN实验三:OpenFlow协议分析实践
SDN实验三:OpenFlow协议分析实践实验三:OpenFlow协议分析实践⼀、实验⽬的能够运⽤ wireshark 对 OpenFlow 协议数据交互过程进⾏抓包;能够借助包解析⼯具,分析与解释 OpenFlow协议的数据包交互过程与机制。
⼆、实验环境下载虚拟机软件Oracle VisualBox;在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;三、实验要求(⼀)、基本要求搭建下图所⽰拓扑,完成相关 IP 配置,并实现主机与主机之间的 IP 通信。
⽤抓包软件获取控制器与交换机之间的通信数据包。
主机IP地址h1192.168.0.101/24h2192.168.0.102/24h3192.168.0.103/24h4192.168.0.104/241. 搭建拓扑配置IP地址2. 运⾏wireshark,选择any模式进⾏抓包,开启另⼀个终端,命令⾏运⾏031902241.py⽂件,运⾏pingall3. 查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程(截图以其中⼀个交换机为例)OFPT_HELLO 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机OFPT_HELLO 源端⼝51212-> ⽬的端⼝6633,从交换机到控制器,此处协议为openflow1.5控制器与交换机建⽴连接,并使⽤OpenFlow 1.0OFPT_FEATURES_REQUEST 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机控制器请求交换器的特征信息OFPT_SET_CONFIG 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机控制器要求交换机按照所给出的信息进⾏配置OFPT_PORT_STATUS 源端⼝51212-> ⽬的端⼝6633,从交换机到控制器当交换机端⼝发⽣变化时,交换机告知控制器相应的端⼝状态OFPT_FEATURES_REPLY 源端⼝51212-> ⽬的端⼝6633,从交换机到控制器交换机告知控制器它的特征信息OFPT_PACKET_IN 源端⼝51212-> ⽬的端⼝6633,从交换机到控制器交换机告知控制器有数据包进来,请求控制器指⽰OFPT_PACKET_OUT 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机控制器要求交换机按照所给出的action进⾏处理OFPT_FLOW_MOD 源端⼝6633 -> ⽬的端⼝51212,从控制器到交换机控制器对交换机进⾏流表的添加、删除、变更等操作4. 交互图5. 交换机与控制器建⽴通信时是使⽤TCP协议还是UDP协议?如图所⽰为TCP协议(⼆)、进阶要求将抓包结果对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义。
SDN软件定义网络之南向协议——OpenFlow协议 (2)
SDN软件定义网络之南向协议——OpenFlow协议一、引言1.1 背景随着云计算、大数据、物联网等技术的快速发展,传统网络架构面临着许多挑战,例如网络管理复杂、可扩展性差、灵便性不足等。
为了解决这些问题,软件定义网络(Software Defined Networking,SDN)应运而生。
SDN通过将网络控制平面与数据转发平面分离,实现了网络的集中控制和灵便管理。
1.2 目的本协议的目的是定义SDN中南向协议的标准格式,特殊是OpenFlow协议的相关规范和要求,以便确保各厂商和组织在实施SDN时能够达到互操作性和兼容性。
二、OpenFlow协议概述2.1 定义OpenFlow是一种开放的、基于标准化的南向协议,用于在SDN架构中实现控制器与数据平面之间的通信。
OpenFlow协议定义了控制器和交换机之间的消息格式和交互方式,允许控制器对数据平面进行直接编程和控制。
2.2 功能OpenFlow协议提供了以下主要功能:- 控制器与交换机之间的通信:控制器可以通过OpenFlow协议与交换机进行通信,发送命令和配置信息。
- 流表管理:控制器可以通过OpenFlow协议向交换机下发流表项,实现流量的转发和处理。
- 路由控制:控制器可以通过OpenFlow协议向交换机下发路由信息,实现网络的路由控制和优化。
- QoS管理:控制器可以通过OpenFlow协议向交换机下发QoS策略,实现对流量的优先级和带宽的管理。
三、OpenFlow协议消息格式3.1 消息类型OpenFlow协议定义了多种消息类型,用于控制器和交换机之间的通信。
常见的消息类型包括Hello消息、Echo消息、错误消息、配置消息等。
3.2 消息结构每一个OpenFlow消息由消息头和消息体组成。
消息头包含了消息类型、消息长度等信息,消息体则包含了具体的命令和配置信息。
3.3 消息交互OpenFlow协议采用了请求-响应的消息交互机制。
控制器发送请求消息给交换机,交换机接收并处理请求消息后,发送响应消息给控制器。
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的络架构。
SDN软件定义网络之南向协议——OpenFlow协议
SDN软件定义网络之南向协议——OpenFlow协议一、前言SDN(Software-Defined Networking)软件定义网络是一种新兴的网络架构,它将网络控制平面与数据转发平面分离,通过集中式的控制器来实现网络的灵活性和可编程性。
南向协议是SDN架构中控制器与网络设备之间的通信协议,用于控制器向网络设备下发指令,实现网络的配置和管理。
OpenFlow协议是SDN中最常用的南向协议之一,本协议旨在详细描述OpenFlow协议的标准格式和功能。
二、协议版本本协议基于OpenFlow协议的最新版本进行描述,当前版本为OpenFlow 1.5。
三、协议结构OpenFlow协议由多个消息类型组成,每个消息类型都有特定的结构和功能。
以下是OpenFlow协议的主要消息类型:1. Hello消息:用于建立控制器与网络设备之间的连接,并交换协议版本信息。
2. Echo消息:用于测试控制器与网络设备之间的连接状态。
3. Features请求/回复消息:控制器向网络设备请求设备的基本信息,包括支持的OpenFlow协议版本、端口信息等。
4. Configuration请求/回复消息:用于设置或查询网络设备的配置信息,例如流表容量、超时时间等。
5. Packet-In消息:网络设备将无法处理的数据包发送给控制器,请求控制器进行处理。
6. Flow-Removed消息:网络设备上的流表项被删除时发送给控制器,以通知流表项的删除原因。
7. Port-Status消息:网络设备上的端口状态发生变化时发送给控制器,例如端口连接或断开。
8. Barrier请求/回复消息:用于控制器与网络设备之间的同步,确保前一条消息的处理已完成。
9. Flow-Mod消息:控制器向网络设备下发流表项,用于配置数据包的转发行为。
10. Group-Mod消息:控制器向网络设备下发组表项,用于实现组播、多路径等高级功能。
11. Table-Mod消息:控制器向网络设备下发表项,用于配置流表的匹配规则和优先级。
openflow协议的工作原理与流程
openflow协议的工作原理与流程OpenFlow协议是一种用于设置面向网络流行管理的协议,它能够方便有效地控制网络流,实现仿真、电信营业厅以及数据中心的网络功能。
它被认为是改变未来互联网的一项关键技术,在数据中心网络中也有重要的作用。
OpenFlow协议的工作原理可以归结为三个部分:控制器、交换机和应用程序,即控制器对交换机实施控制,控制器同时与各种应用程序交互。
首先,控制器需要与所有的OpenFlow交换机建立连接,此时所有的交换机都需要使用OpenFlow协议连接。
然后,当这些交换机检测到数据包时,就会将该数据包发送到控制器,控制器根据它的策略或应用程序的需求,对这些数据包做出决策,然后将决策命令发送给相应的交换机,交换机按照命令完成处理,最终将数据包转发至目的地。
OpenFlow协议处理流程主要有四步:拦截数据包、分析数据包、决策转发和实施决策。
(1)拦截数据包:当交换机检测到数据包时,就会将该数据包发送到控制器,控制器就会拦截该数据包,并开始对其进行分析处理。
(2)分析数据包:控制器通过分析数据包的源IP地址、目的IP地址、端口号等关键信息,来确定数据包传输的流程,并执行相应的决策。
(3)决策转发:控制器根据分析的结果,会将决策命令发送给相应的交换机,交换机按照命令转发数据包,最终将数据包转发至目的地。
(4)实施决策:交换机将接收到的命令进行解码,根据决策指示匹配规则,然后实施决策。
OpenFlow协议的优势在于可以更灵活有效地控制网络流量,从而实现路径规划、流量控制、服务质量控制等功能。
此外,OpenFlow 还可以为大规模分布式网络带来更强大的概念性支持和实现,有效提高网络管理效率,改善网络可靠性和安全性。
OpenFlow协议的缺点在于他的使用有一定的限制,控制器处理数据包的速度还不够快,而且控制器容易因出现网络拥堵而出现故障问题。
总之,OpenFlow协议是一项关键技术,它能够更灵活有效地控制网络流量,并且改善网络的可靠性和安全性。
OpenFlow1.3协议总结
OpenFlow1.3协议总结OpenFlow1.3协议总结OpenFlow1.3协议总结 (1)1介绍 (4)2交换机组成 (4)3名称解释 (4)4端⼝ (4)5OpenFlow表 (5)5.1Pipeline处理 (5)5.2Flow Table (6)5.3Match (6)5.4Table-miss (6)5.5流表项删除 (6)5.6组表 (7)5.7Meter Table (7)5.8Counters (8)5.9Instructions (8)6OpenFlow1.3版本协议新增消息 (10)7OpenFlow Protocol (10)7.1OpenFlow Header (10)ofp_header (10)7.2Common Structures (11)7.2.1端⼝ (11)ofp_port (12)7.2.2队列 (14)ofp_packet_queue (14)7.2.3匹配域 (15)struct ofp_match (15)ofp_oxm_experimenter_header (17)7.2.4Flow Instruction Structures (17)ofp_instruction (17)ofp_instruction_goto_table (17)ofp_instruction_write_metadata (17)ofp_instruction_actions (17)ofp_instruction_meter (18)ofp_instruction_experimenter (18) 7.2.5Action Structures (18)ofp_action_header (18)ofp_action_output (18)ofp_action_group (19)ofp_action_set_queue (19)ofp_action_mpls_ttl (19)ofp_action_pop_mpls (19)ofp_action_set_field (19)ofp_action_experimenter_header (19) 7.3Controller-to-Switch Messages (19) 7.3.1Handshake (19)ofp_switch_features (20)7.3.2交换机配置 (20)ofp_switch_config (20)7.3.3流表配置 (21)ofp_table_mod (21)7.3.4Modify State Messages (21)ofp_flow_mod (21)ofp_group_mod (23)ofp_bucket: (23)ofp_port_mod (24)ofp_meter_mod (24)ofp_mater_band_header (25)ofp_meter_band_drop (25)ofp_meter_band_dscp_remark (25) ofp_meter_band_experimenter (25) 7.3.5Multipart Messages (25)ofp_multipart_request (26)ofp_multipart_reply (26)ofp_flow_stats_request (27)ofp_flow_stats (28)ofp_aggregate_stats_request (28)ofp_aggregate_stats_reply (28)ofp_table_stats (29)ofp_table_feature (29)ofp_table_feature_prop_type (30)ofp_table_feature_prop_header (30)ofp_table_feature_prop_instructions (30)ofp_table_feature_prop_next_tables (30)ofp_table_feature_prop_actions (30)ofp_table_feature_prop_oxm (31)ofp_table_feature_prop_instructions (31)ofp_port_stats_request (31)ofp_port_stats (32)ofp_port (33)ofp_queue_stats_request (33)ofp_queue_stats (33)ofp_group_stats_request (34)ofp_group_stats (34)ofp_group_desc (34)ofp_group_features (34)ofp_group_feature (35)ofp_meter_multipart_stats (35)ofp_meter_band_stats (35)ofp_meter_multipart_request (35)ofp_meter_config (35)ofp_meter_features (36)ofp_experimenter_multipart_header (37)7.3.6队列配置信息 (37)ofp_queue_get_config_request (37)ofp_queue_get_config_reply (37)7.3.7Packet_Out消息 (37)ofp_packet_out (37)7.3.8Barrier Message (38)7.3.9Role Request Message (38)ofp_role_request (38)7.3.10Set Asynchronous Conguration Message (38) 7.4Asynchronous消息 (39)7.4.1Packet-In Message (39)7.4.2Flow Removed Message (39)7.4.3Port Status Message (40)7.4.4Error Message (41)7.5Symmetric消息 (45)7.5.1Hello (45)7.5.2Echo Request (45)7.5.3Echo Reply (45)7.5.4Experimenter (46)1介绍2交换机组成OpenFlow的交换机包括⼀个或多个流表和⼀组表,执⾏分组查找和转发,和到⼀个外部控制器OpenFlow的信道。
