OpenFlow协议1.0讲解

合集下载

OpenFlow协议1.0及1.3版本分析

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下⾯分别介绍以上报⽂信息。

OpenFlow协议1.0讲解

OpenFlow协议1.0讲解
openflow网络结构图openflow交换机进行数据层的转发flowvisor对网络进行虚拟化controller对网络进行集中控制实现控制层的功能二openflow宏观介绍
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. */ };

SDN软件定义网络之南向协议——OpenFlow协议

SDN软件定义网络之南向协议——OpenFlow协议

SDN软件定义网络之南向协议——OpenFlow协议一、引言SDN(Software Defined Networking)软件定义网络是一种新兴的网络架构,它通过将网络控制平面与数据平面分离,以及通过中央控制器对网络设备进行集中管理和编程,实现了网络的灵活性和可编程性。

而南向协议则是指控制器与网络设备之间的通信协议,用于实现控制器与网络设备之间的信息交换和指令传递。

本协议旨在规范SDN软件定义网络中的南向协议——OpenFlow协议的标准格式和内容,以确保不同厂商的控制器和网络设备之间可以进行有效的通信和互操作。

二、协议目的本协议的目的是定义OpenFlow协议的消息格式、交互过程、指令集和状态管理,以及相关的安全机制,以便实现SDN软件定义网络中的控制器与网络设备之间的有效通信和互操作。

三、术语定义1. SDN(Software Defined Networking):软件定义网络,一种通过将网络控制平面与数据平面分离,以及通过中央控制器对网络设备进行集中管理和编程的网络架构。

2. 南向协议:控制器与网络设备之间的通信协议,用于实现控制器与网络设备之间的信息交换和指令传递。

3. OpenFlow协议:一种用于SDN软件定义网络中的南向协议,定义了控制器与网络设备之间的消息格式、交互过程、指令集和状态管理。

四、协议内容1. 消息格式OpenFlow协议中的消息格式由消息头和消息体组成。

消息头包括版本号、消息类型、消息长度和事务标识等字段,用于标识和解析消息。

消息体包含具体的指令或状态信息,根据消息类型的不同而有所差异。

2. 交互过程OpenFlow协议中的交互过程分为控制器初始化和消息交换两个阶段。

控制器初始化阶段用于建立控制器与网络设备之间的连接,并进行握手协商。

消息交换阶段用于控制器向网络设备发送指令,或者网络设备向控制器报告状态信息。

3. 指令集OpenFlow协议定义了一系列指令,用于控制器对网络设备进行编程和管理。

SDN软件定义网络之南向协议——OpenFlow协议 (3)

SDN软件定义网络之南向协议——OpenFlow协议 (3)

SDN软件定义网络之南向协议——OpenFlow协议一、协议背景随着网络规模的不断扩大和网络服务的不断增加,传统的网络架构面临着诸多挑战。

为了应对这些挑战,软件定义网络(SDN)应运而生。

SDN通过将网络控制平面与数据平面分离,使得网络的管理和控制更加灵活和可编程。

南向协议作为SDN架构中的一部分,负责控制器与网络设备之间的通信,其中OpenFlow协议是目前应用最广泛的南向协议之一。

二、协议目的本协议的目的是规定OpenFlow协议的标准格式,以确保不同厂商的SDN设备之间能够实现互操作性,并提供一致的网络管理和控制能力。

三、协议内容1. 协议版本本协议适用于OpenFlow协议的各个版本,包括但不限于OpenFlow 1.0、OpenFlow 1.1、OpenFlow 1.2等。

各个版本的协议应根据实际需求进行选择和实施。

2. 协议消息格式OpenFlow协议主要通过消息进行控制器与网络设备之间的通信。

协议消息包括控制消息和数据消息两种类型。

控制消息用于控制器向网络设备发送指令或查询信息,包括以下几种类型:- Hello消息:用于建立控制器与网络设备之间的连接。

- Echo消息:用于测试控制器与网络设备之间的连接是否正常。

- Feature Request/Reply消息:用于查询和回复网络设备的特性和能力。

- Configuration消息:用于配置网络设备的参数和属性。

- Flow Mod消息:用于向网络设备下发流表规则。

- Packet Out消息:用于向网络设备发送数据包。

数据消息用于网络设备向控制器上报事件或状态信息,包括以下几种类型:- Packet In消息:用于向控制器上报收到的数据包。

- Port Status消息:用于向控制器上报端口状态变化。

- Flow Removed消息:用于向控制器上报流表规则的删除或超时。

3. 协议数据结构OpenFlow协议中定义了一系列数据结构,用于描述网络设备的特性、流表规则、数据包等信息。

openflow协议1.0中文版

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协议入门

保 IP VL 目的IP
源IP
留服A
务N
类优
型先

目 源 IP 以 目 源 VL 入
的端协太的M A 端
端口议网M A N 口

字类A C 标
段型C

除源IP和目的IP以外,掩码位为0表示对应匹配项需要精确匹配,掩码为为1表示忽略 匹配项。
源IP和目的IP字段的掩码表示32bitIP地址可以忽略匹配的长度。 如果源IP的掩码为8(wildcard的8‐13bit为001000),表示源IP字段的高24bit需要精确 匹配,源IP字段的低8bit可以忽略。
dst port)
数据包处理方法: • 转发 • 修改包头
Openflow1.0对数据包匹配特征的描述方法
ofp_match1 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ‐ 31
传统网络设备工作方式
Hub • 工作原理:基于物理端口转发 • 策略:Flood
L2Switch • 工作原理:基于MAC地址表转发 • 策略:STP+MAC地址学习
Router • 工作原理:基于路由表转发 • 策略:静态路由+动态路由协议
共同点:分布式策略(策略的制定者为设备本身)
转发表的结构:
交换机:交换机不 知道任何网络信息, 只会按照控制器的 指挥工作
软件定义网络的网络设备之间不运行任何协议,网络设备 的转发表由控制器配置生成。 控制器与网络设备之间需要一种协议来互相通信
基于Openflow协议的软件定 义网络
SDN网络分为两张网 1、数据网(数据平面):Traffic 2、信令网(控制平面):Openflow Protocol

openflow1.0消息格式总结

OpenFlow1.0消息格式总结—NEU_张旭OpenFlow1.0消息格式总结:Controller OpenvswitchOFPT_HELLO OFPT_HELLOOFPT_ERROROFPT_ERROROFPT_ECHO_REQUEST OFPT_ECHO_REPLYOFPT_VENDOR OFPT_VENDOROFPT_FEATURES_REQUEST OFPT_FEATURES_REPLYOFPT_GET_CONFIG_REQUEST OFPT_GET_CONFIG_REPLYOFPT_SET_CONFIGOFPT_PACKET_OUTOPPT_FLOW_MODOFPT_PORT_MODOFPT_PACKET_INOFPT_FLOW_REMOVEDOFPT_PORT_STATUSOFPT_STATS_REQUEST OFPT_STATS_REPLYOFPT_QUEUE_GET_CONFIG_REQUEST OFPT_QUEUE_GET_CONFIG_REPLY OFPT_BARRIER_REQUEST OFPT_BARRIER_REPLY1、OFPT_FEATURES_REQUEST(8B)消息格式uint8_t version:OFP_VERSIONuint8_t type: One of the OFPT_ constantsuint16_t length: Length including this ofp_headeruint32_txid: Transaction id associated with this packet. Replies use the same id as was in the requestto facilitate pairing2、OFPT_FEATURES_REPLY(32B)=ofp_switch_featuresuint64_t datapath_id:Datapath unique ID.The lower 48-bits are fora MAC address, while the upper 16-bits areimplementer-defineduint32_t n_buffers:Max packets buffered at onceuint8_t n_tables:Number of tables supported by datapathuint32_t capabilities:Bitmap of support ofp_capabilitiesuint32_t actions:Bitmap of supported ofp_action_typeuint16_t port_no:标明绑定到物理接口的datapath值uint8_t hw_addr[6]:该物理接口的mac地址char name[16]:该接口的名称字符串Null-terminateduint32_t config:Bitmap of OFPPC_* flagsuint32_t state:Bitmap of OFPPS_* flagsuint32_t curr:Current featuresuint32_t advertised:Features being advertised by the port uint32_t supported:Features supported by the portuint32_t peer:Features advertised by peer3、OFPT_GET_CONFIG_REQUEST(8B)4、OFPT_SET_CONFIG(12B)=ofp_switch_configOFPT_GET_CONFIG_REPLY(12B)uint16_t flags:OFPC_* flagsuint16_t miss_send_len:Max bytes of new flow that datapath shouldsend to the controller5、OFPT_PACKET_OUT(16B)uint32_t buffer_id:ID assigned by datapath (-1 if none) uint16_t in_port:Packet's input port (OFPP_NONE if none) uint16_t actions_len:Size of action array in bytesuint16_t type:One of OFPAT_*.uint16_tlen:Length of action,including thisheader.This is the length of action,including any padding to make it64-bit aligneduint8_t data[0]:Packet data.The length is inferredfrom thelength field in the header.(Only meaningful if buffer_id == -1.)在这里总结所有类型的action ,我认为对于OFPT_PACKET_OUT 应该用ofp_action_output来替换ofp_action_headerofp_action_output(8B)uint16_t type:OFPAT_OUTPUTuint16_tlen:Length is 8uint16_t port:Output portuint16_t max_len:Max length to send to controllerofp_action_vlan_vid(8B)uint16_t type:OFPAT_SET_VLAN_VIDuint16_tlen:Length is 8uint16_t vlan_vid:VLAN idofp_action_vlan_pcp(8B)uint16_t type:OFPAT_SET_VLAN_PCPuint16_tlen:Length is 8uint8_t vlan_pcp:VLAN priorityofp_action_dl_addr(16B)uint16_t type:OFPAT_SET_DL_SRC/DST uint16_tlen:Length is 16uint8_t dl_addr[6]:Ethernet address ofp_action_nw_addr(8B)uint16_t type:OFPAT_SET_TW_SRC/DST uint16_tlen:Length is 8uint32_t nw_addr:IP addressofp_action_tp_port(8B)uint16_t type:OFPAT_SET_TP_SRC/DST uint16_tlen:Length is 8uint16_t tp_port:TCP/UDP portofp_action_nw_tos(8B)uint16_t type:OFPAT_SET_TW_SRC/DST uint16_tlen:Length is 8uint8_t nw_tos:IP ToS (DSCP field, 6 bits)ofp_action_enqueue(16B)uint16_t type:OFPAT_ENQUEUEuint16_tlen:Length is 16uint16_t port:Port that queue belongs. Shouldrefer to a valid physical port(i.e. < OFPP_MAX) or OFPP_IN_PORT uint32_t queue_id:Where to enqueue the packetsofp_action_vendor_header(8B)uint16_t type:OFPAT_VENDORuint16_tlen:Length is a multiple of 8uint32_t vendor:Vendor ID, which takes the same formas in "structofp_vendor_header"6、OFPT_PORT_MOD(32B)uint16_t port_no:标明绑定到物理接口的datapath值uint8_t hw_addr[6]:The hardware address is notconfigurable.This is used tosanity-check the request, so it mustbe the same as returned in anofp_phy_portstruct uint32_tconfig:Bitmap of OFPPC_* flagsuint32_t mask:Bitmap of OFPPC_* flags to be changeduint32_t advertise:Bitmap of "ofp_port_features"s.Zero allbits to prevent any action taking place7、OFPT_FLOW_MOD(72B)uint32_t wildcards:Wildcard fieldsuint16_t in_port:Input switch portuint8_t dl_src[6]: Ethernet source addressuint8_t dl_dst[6]: Ethernet destination addressuint16_t dl_vlan: Input VLAN iduint8_t dl_vlan_pcp: Input VLAN priorityuint16_t dl_type: Ethernet frame typeuint8_t nw_tos:IP ToS (actually DSCP field, 6 bits)uint8_t nw_proto:IP protocol or lower 8 bits ofARP opcode uint32_t nw_src:IP source addressuint32_t nw_dst:IP destination addressuint16_t tp_src: TCP/UDP source portuint16_t tp_dst: TCP/UDP destination portuint64_t cookie: Opaque controller-issued identifier uint16_t command: One of OFPFC_*uint16_t idle_timeout: Idle time before discardingseconds uint16_t hard_timeout: Max time before discarding seconds uint16_t priority: Priority level of flow entryuint32_t buffer_id: Buffered packet to apply to (or -1) Not meaningful for OFPFC_DELETE*uint16_t out_port:For OFPFC_DELETE* commands,requirematching entries to include this as anoutput port.A value of OFPP_NONEindicates no restrictionuint16_t flags:One of OFPFF_*8、OFPT_FLOW_REMOVED(88B)uint64_t cookie:Opaque controller-issued identifieruint16_t priority:Priority level of flow entryuint8_t reason:One of OFPRR_*uint32_t duration_sec:Time flow was alive in seconds uint32_t duration_nsec:Time flow was alive in nanoseconds beyondduration_secuint16_t idle_timeout:Idle timeout from original flow mod uint64_t packet_count:计数与该流表项相关的包信息uint64_t byte_count:计数与该流表项相关的流量信息9、OFPT_PORT_STATUS(64B)uint8_t reason:One of OFPPR_*10、OFPT_PACKET_IN(20B)uint32_t buffer_id:ID assigned by datapathuint16_t total_len:Full length of frameuint16_t in_port:Port on which frame was receiveduint8_t reason:Reason packet is being sent (one of OFPR_*)uint8_t data[0]:Ethernet frame,halfway through 32-bit word,so the IP header is 32-bit aligned.Theamount of data is inferred from the lengthfield in the header.Because of padding,offsetof(structofp_packet_in,data)==sizeof(structofp_packet_in) - 2.11、OFPT_QUEUE_GET_CONFIG_REQUEST(12B)uint16_t port:Port to be queried. Should referto a valid physical port (i.e. < OFPP_MAX)12、OFPT_QUEUE_GET_CONFIG_REPLY(16B)uint32_t queue_id:id for the specific queueuint16_tlen:Length in bytes of this queue descuint16_t property:One of OFPQT_uint16_tlen:Length of property, including this header 13、OFPT_BARRIER_REQUEST(8B)OFPT_BARRIER_REPLY(8B)交换机一旦收到OFPT_BARRIER_REQUEST消息,则需要先执行完该消息前到达的所有指令,然后再执行其后的。

阅读笔记-OpenFlow协议

VLan、虚拟端口。

VLAN、MPLS标签或数据包QoSPriority仅跟设置了通配符(wildcard)的域相关。

Priority域指明了流表的优先级,数字越大则优先级越高。

因此,高优先级的带通配符的流表项必须要放到低编号的流表中。

交换机负责正确的顺序,避免高优先级规则覆盖掉低优先级的。

Metadata : a maskable register value that is used to carry information from one table to the next.OpenFlow Specification 1.1和1.0较大的变化就是对匹配域的元组进行了更改,增加了元组数,提高了多种转发规则制定,提高了功能,同时在1.1版本中还增加了组表概念。

OpenFlow是一种交换技术,刚开始它是2008年斯坦福大学的一个研究项目。

使用OpenFlow协议建立软件定义网络,可以将网络作为一个整体而不是无数的独立设备进行管理。

传统交换机使用生成树协议或其他一些新标准(如多链路透明互连,TRILL)来确定数据包转发路径。

而OpenFlow将转发决策从各个交换机转移到控制器上,这一般是服务器或工作站。

管理应用程序执行控制器,负责与所有网络交换机进行交互,配置数据转发路径,从而提高带宽利用率。

这个应用程序与云管理软件进行交互,保证有足够的带宽支持负载的创建和变化。

OpenFlow协议操作OpenFlow标准定义了控制器与交换机之间的交互协议,以及一组交换机操作。

这个控制器—交换机协议运行在安全传输层协议(TLS)或无保护TCP连接之上。

控制器向交换机发送指令,控制数据包的转发方式,以及配置参数,如VLAN优先级。

交换机会在链路中断或出现未指定转发指令的数据包时,发送消息通知控制器。

转发指令基于流,这个流由所有数据包共享的通用特性组成。

定义流需要指定许多参数,其中可能包括:数据包到达的交换机端口、来源以太网端口、来源IP端口、VLAN标签、目标以太网或IP端口及许多其他数据包特性。

OpenDaylight与Mininet应用实战之OpenFlow1.0协议分析

OpenDaylight与Mininet应用实战之OpenFlow1.0协议分析继本专题基本环境搭建(一)之后,本文在此基础上熟悉平台操作,以及通过wireshark 抓包工具分析OpenFlow(以下简写为OF)协议。

具体的OF官方协议及白皮书可在资料库栏目中下载阅读。

注:此文涉及的环境仅支持OF1.0版本,对于OF1.2、OF1.3版本可用其他平台测试,后续会另做专题讨论。

1打开wireshark并创建拓扑按照章节一搭建平台,启动ODL,并打开wireshark。

进入装有Mininet的VM,通过mn命令指定网络拓扑及指定此ODL控制器。

Mininet创建网络拓扑命令:此命令通过Mininet模拟创建一个含有两个交换机(Open vSwitch,以下简写为OVS)和两个主机的网络拓扑,其中192.168.5.203为ODL的IP,6633为ODL的默认端口,网络拓扑如下图所示:2查看网络在Mininet中通过操作网络命令,可以查看OVS间及OVS与主机间的连接关系,也可以查看Mininet是否远程连接控制器。

例如,通过nodes命令可以查看网络中所有的节点。

通过net命令可以查看并确认网络连接关系是否与预期一致以及节点信息,且可以了解具体的连接端口信息。

通过下面的dump命令可以看出,交换机通过远程方式连接到控制器,且能看到控制器的IP 和PORT。

3抓包并分析协议通过wireshark抓包可以直接看到控制器与OVS交换机的通信过程,下面分析该流程中的OF消息。

此专题应用的是直接支持OpenFlow协议的wireshark官网Stable Release(1.12.1)版本。

3.1建立连接控制器与交换机之间的OpenFlow协议是应用于TCP传输层上,所以解析应用层。

他们首先发送hello消息,建立初始化连接,协商使用的OpenFlow协议版本。

由下图可知,ODL与Mininet之间应用的是OpenFlow1.0版本协议(其他1.2、1.3协议会在协议OpenFlow 后面标识)。

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模拟环境。

可以搭建许多交换机,任意拓扑,搭建拓扑具体教程本博客有⼀篇。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三、OF协议:控制器控制 流表修改的数据结构
• • • • • • • • • • • • • • • • • • • • • • • /* Flow setup and teardown (controller -> datapath). */ struct ofp_flow_mod { struct ofp_header header; struct ofp_match match; /* Fields to match */ uint64_t cookie; /* Opaque controller-issued identifier. */ /* Flow actions. */ uint16_t command; /* One of OFPFC_*. */ uint16_t idle_timeout; /* Idle time before discarding (seconds). */ uint16_t hard_timeout; /* Max time before discarding (seconds). */ uint16_t priority; /* Priority level of flow entry. */ uint32_t buffer_id; /* Buffered packet to apply to (or -1). Not meaningful for OFPFC_DELETE*. */ uint16_t out_port; /* For OFPFC_DELETE* commands, require matching entries to include this as an output port. A value of OFPP_NONE indicates no restriction. */ uint16_t flags; /* One of OFPFF_*. */ struct ofp_action_header actions[0]; /* The action length is inferred from the length field in the header. */ }; OFP_ASSERT(sizeof(struct ofp_flow_mod) == 72);
• 2、asynchronous(异步)消息 • 3、 symmetric(对称)消息
其中每一类消息又有多个子消息类型。
三、OF协议:协议头数据结 构
OF 协议头部:
/* Header on all OpenFlow packets. */ struct ofp_header { uint8_t version; /* OFP_VERSION. */ uint8_t type; /* One of the OFPT_ constants. */ uint16_t length; /* Length including this ofp_header. */ uint32_t xid; /* Transaction id associated with this packet. Replies use the same id as was in the request
三、OF协议:流匹配数据 结构
• • • • • • • • • • • • • • • • • • • struct ofp_match { uint32_t wildcards; /* Wildcard fields. */ uint16_t in_port; /* Input switch port. */ uint8_t dl_src[OFP_ETH_ALEN]; /* Ethernet source address. */ uint8_t dl_dst[OFP_ETH_ALEN]; /* Ethernet destination address. */ uint16_t dl_vlan; /* Input VLAN id. */ uint8_t dl_vlan_pcp; /* Input VLAN priority. */ uint8_t pad1[1]; /* Align to 64-bits */ uint16_t dl_type; /* Ethernet frame type. */ uint8_t nw_tos; /* IP ToS (actually DSCP field, 6 bits). */ uint8_t nw_proto; /* IP protocol or lower 8 bits of * ARP opcode. */ uint8_t pad2[2]; /* Align to 64-bits */ uint32_t nw_src; /* IP source address. */ uint32_t nw_dst; /* IP destination address. */ uint16_t tp_src; /* TCP/UDP source port. */ uint16_t tp_dst; /* TCP/UDP destination port. */ }; OFP_ASSERT(sizeof(struct ofp_match) == 40);
3、OpenFlow交换机组成:
二、OpenFlow宏观介绍:交换机流处理过程
1、OpenFlow交换机流处理过程:
二、OpenFlow宏观介绍: 数据流量的匹配过程
1、流的匹配过程:
二、OpenFlow宏观介绍: 包头解析的匹配流程
1、流的匹配过程:
三、OF协议:消息类 型
• 1、controller-to-switch 消息
Openflow 1.0.0 报告
余显 2013年7月11日
YOUR LOGO
目录
1、SDN简介
2、openflow介绍
一、SDN简介ቤተ መጻሕፍቲ ባይዱ
1、SDN是一种新型网络架构,核心思想: 1、数据与控制平面相结合; 2、统一的厂商无关控制和数据平面开放接口; 3、逻辑集中的控制平面; 4、顶层服务或网络控制应用通过物理资源的抽象构建逻辑的全网视图; 5、通过分片和虚拟化底层网络实现资源的优化利用和调度。 2、SDN结构:
三、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. */ };
三、OF协议:端口数据结 构
端口结构: /* Description of a physical port */ struct ofp_phy_port { uint16_t port_no; uint8_t hw_addr[OFP_ETH_ALEN]; char name[OFP_MAX_PORT_NAME_LEN]; /* Null-terminated */ uint32_t config; /* Bitmap of OFPPC_* flags. */ uint32_t state; /* Bitmap of OFPPS_* flags. */ /* Bitmaps of OFPPF_* that describe features. All bits zeroed if * unsupported or unavailable. */ uint32_t curr; /* Current features. */ uint32_t advertised; /* Features being advertised by the port. */ uint32_t supported; /* Features supported by the port. */ uint32_t peer; /* Features advertised by peer. */ }; OFP_ASSERT(sizeof(struct ofp_phy_port) == 48);
二、OpenFlow宏观介绍:OpenFlow网络结构图
Controller对网络进行集中控制, 实现控制层的功能
FlowVisor对网络进行虚拟化
OpenFlow交换机进行数 据层的转发
二、OpenFlow宏观介绍:OF结构和组成
1、OpenFlow是SDN重要的实现方式,是SDN中的一部分 2、OpenFlow结构:OpenFlow协议和OpenFlow交换机
1.3版本
结束
相关文档
最新文档