《sdn涉及协议及标准分析.ppt》由会员分享,可在线阅读,更多相关《sdn涉及协议及标准分析.ppt(39页珍藏版)》请在金锄头文库上搜索。
1、SDN涉及协议及标准分析,SDN标准研究,SDN标准,OpenFlow OF-CONFIG,I2RS NVO3 ForCES,SG13 Y.FNsdn SG11 Q.Supplement-SDN,ISG NFV,Contents,OpenFlow,OF-CONFIG,IETF相关协议,2,3,OpenFlow架构,OpenFlow 1.0,OpenFlow 1.1,Flow Table的组成,Match Fields,Actions/Instructions,Counters,基于Table/Flow/Port/Queue的各种报文计数器,Actions: forward/enqueue/dr
2、op/modify-field Instructions: modify action-set or pipeline proc.,Flow Table的matching,PacketIn Start at Table 0,Matched in Table n?,更新计数器 执行Instructions: Update action set Update packet/match set field Update metadata,Yes,No,根据表配置: 1)丢弃; 2)发给Controller; 3)继续下一个流表匹配;,执行Action Set,Goto Table n?,Yes,No
3、,Pipeline的处理,每个openflow switch的pipeline包含多个flowtable,每个flowtable包含多个flowentry; 每个flowentry的处理结果只能交个序号更大的表进一步处理; Output action set和报文关联,可以用instructions来修改已匹配上的报文的action set; 当pipeline处理结束时,开始执行action set中的动作; Action Set执行时要按顺序:copy TTL inwards,pop,push,copy TTL outwards,decrement TTL,set,qos,group,Gr
4、oup Table,Group table赋予了逻辑端口转发流的额外能力,引入group table的动机是为了支持L2/L3多路径转发,另外还可支持LAG (link aggregation )、ECMP、non-ECMP、快速重路由、multi-homing、BGP下一跳汇聚,Group Identifier,Counters,Group Type,组的类型,all(所有bucket执行,多播/广播转发),select (基于switch的bucket选择算法),indirect(执行定义的bucket,聚合),fast failover(直接执行第一个live bucket),报文被一个
5、组处理的计数器,Actions Buckets,32bit,唯一标识一个组,有序的action bucket 列表,Multipath Group Table示例,图1:从源S到目的D有两条路径124和134,交换机1有两个端口port0,port1; 图2:用mp group id表示逻辑接口,先发送group mod消息,配置group为多路径类型,再发送flow mod配置流表,并将最后的forward-action指向group的逻辑端口; 图3:或者在flow mod消息中隐含定义group; 图4:定义hash表将mp group id映射到实际的硬件组。,图1,图4,图3,图2,
6、OpenFlow消息,OpenFlow Protocol由三种类型的消息 controller-to-switch Asynchronous Symmetric controller-to-switch 该消息由controller发送,用于管理和检查switch的状态 Features消息:在SSL/TCP会话建立后,controller给switch发送Features请求switch的相关信息,switch必须应答自己支持的功能,包括datapathid、数据路径接口号、接口名、接口MAC地址、接口支持的速率等等基本信息 Configuration消息:controller可以设置或查询
7、switch的状态 Modify-State消息:controller发送该消息给switch,来管理switch的状态,即增加/删除、更改流表,并设置switch的端口属性 Read-State消息:controller用该消息收集switch上flow-tables、ports、individual flow entries的统计信息 Send-Packet消息:controller发送该消息到switch的特定端口 Barrier消息:Controller用Barrier request/reply消息来确保switch是否完成之前的操作得到应答后才会下发新的消息,用来解决消息依赖关系。
8、,OpenFlow消息,Asynchronous 该消息由switch发起,当switch状态发生改变时,发送该消息告诉controller状态变化 Packet-in消息: 对数据包来说,当Flow Table中没有匹配的表项或者匹配“send to controller”,switch将给controller发送packet-in消息。 Flow-Removed消息: 当给switch增加一条表项时,会设定超时周期,当时间超时后,该条目就会被删除,这时switch就会给controller发送Flow-Removed消息;当流表中有条目要删除时,switch也会给controller发送该
9、消息 Port-status消息: 当数据路径接口被添加、删除、修改的时候,datapath需要使用OFPT_PORT_STATUS消息来通知控制器 Error消息: 当交换机需要通知控制器发生问题或错误时,switch给controller 发送Error消息,OpenFlow消息,Symmetric 该消息由switch或者controller发起 Hello消息: 当一个OpenFlow连接建立时,controller和switch都会立刻向对端发送OFPT_HELLO消息,该消息中的version域填充发送方支持的OpenFlow协议最高的版本号; 接收方收到该消息后,接收方会计算协议
10、版本号,即在发送方和接收方的版本号中选择一个较小的; 如果接收方支持该版本,则继续处理连接,连接成功;否则,接收者回复一个OFPT_ERROR消息,类型域中填充ofp_error_type.OFPET_HELLO_FAILED Echo消息: switch和controller任何一方都可以发起Echo request消息,但收到的一方必须回应Echo reply消息。这个消息可以来测量latency、controller-switch之间的连接性,即心跳消息; Vendor消息: Vendor消息为OpenFlow switches提供标准的额外功能,为未来版本预留, Vendor域为厂家I
11、D信息,由IEEE OUI标示。,OpenFlow支持的动作类型(v1.0),OpenFlow协议发展,1.0 11元组单流表,所有试验系统的基础目标 1.1 多表:转发面多表、pipeline设计; 标签和隧道:支持标签操作,MPLS、VLAN、虚接口; 支持多路径转发:Group表支持多出口操作ECMP、groups; 1.2 TLV描述match filde,动态多表 完善对IPv6的支持 完善Controller可靠性的问题 1.3 Meter Table、支持PBB、table miss、控制通道多连接、多控制器协作 1.3.1 提高了版本协商能力,OpenFlow1.0协议,200
12、9年12月发布 Slicing 支持为出端口配置多个队列 ,每个队列对应的带宽可配置; Flow cookies 作为透明数据携带在修改流表命令中,转发面上报流表信息(例如查询流表状态、流表项超时)时,cookie会作为透明数据带回给控制器 交换机描述信息(OFPST_DESC) 在转发面可配置的交换机描述数据,包括制造商信息、软硬件信息等 流匹配字段增强 支持ARP报文中IP字段的匹配 支持匹配IP Tos/DSCP域 查询端口的统计数据 增强了流表项超时的精度 (毫秒-纳秒),OpenFlow1.1协议变化,2011年2月发布 Multiple tables: controller可在一台
13、交换机上部署多个流表,流表由v1.0扁平式的Match Fieldsactions 改为 灵活的多个流表组成pipeline处理; Group Table: 引入group table支持L2/L3多路径转发,支持组播、负载均衡以及快速倒换等业务; Tag/Tunnels: 支持QinQ和MPLS; 支持虚拟端口 支持逻辑端口/隧道,转发面同时上报逻辑端口以及相应的物理端口 Openflow连接失败 删除了emergency flow cache功能 增加了Fail secure mode 或者 Fail standalone mode,OpenFlow1.2协议变化,2011年12月发布 O
14、XM(Openflow Extensible Match) 采用OXM(类似TLV格式的数据结构)来表示ofp_match,增强了灵活性。OpenFlow1.1是固定的15个匹配项,而OpenFlow1.2采用了TLV格式的匹配模式,可以动态调整匹配项,这样使流表的长度从固定长度变为可变长度,增加流表灵活性的同时也增加转方面处理难度。 增加set_field动作 采用OXM来描述对报文头部的修改 全面支持experimenter: 从消息交互、match、action、队列、统计、错误码等都有所增加; IPv6支持 支持IPv6,匹配字段增加了IPv6源地址、目的地址、协议号、传输类型、ICM
15、Pv6; 多控制器支持 定义了三种控制器角色: Equal, Slave, Master,OpenFlow1.2协议变化(续),Matching变化 匹配思路变化:从以自己定义的匹配项为中心,转移到以报文为中心的匹配。在1.1定义了15个匹配项及整体匹配流程;在1.2只定义匹配的元规则。这个有助于experimenter对报文结构及匹配规则进行创新。 增加了 OXM TLV 类型定义;对match进行重新定义,TLV化;原来是静态定义,现在是动态扩展。 OXM TLV的头部还明确了ONF成员和非成员定义。 用TLV表达匹配项;没有列出来的匹配项相当于1.1的 通配符效果; 去掉了wildcar
16、ds宏定义。 消息变化 Modify/Add消息,如果没有指明清除统计是,不能清除旧表项的统计信息;1.1是直接清除。 Modify消息,1.1,在没有表项时相当于Add;但在1.2不做处理。 修改了Packet_in消息格式,增加了OXM_TLV格式,使携带的端口信息TLV化。,OpenFlow1.3协议变化,2012年4月发布 增强了控制器与交换机之间的能力协商 描述流表支持的能力 增加table-miss流表项 没有匹配上流表的报文被称为table-miss 报文,而table-miss flow entry 专门处理这种报文; V1.3里改为增加一条table-miss flow entry:这条流表条目具有最低的优先级,并且其Match项忽略;table-miss flow entry的action可以是丢弃,送到另一个流表匹配,或者packet_in到控制器; 如果没有table-miss flow entry,缺省动作为丢弃。 IPv6扩展头部的支持 Meter Table的支持 Meter表定义了per-flow meters,可完成简