Openflow协议入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Openflow协议基础入门北京邮电大学未来网络实验室张健男思考一个问题:假设有如下N个城市,他们互相不连通,要想实现这几个城市之间的交流我们需要做哪些事情?北京沈阳南京重庆西安广州上海Step1:建设公路网公路网络包含城市(节点)以及连接城市的公路(边)。有了公路网,就可以保证任意两个城市之间物理连通。但是物理上连通就解决问题了吗?北京沈阳南京重庆西安广州上海Step2:添加路标北京沈阳南京重庆西安广州上海重庆广州西安北京沈阳…南京上海上海北京南京上海…西安重庆沈阳广州广州重庆南京北京西安…添加路标后,交通流量就知道去往目的地的正确方向。但是路标就一定是正确的吗?Step3:建立路标信息维护机制北京沈阳南京重庆西安广州上海重庆广州西安北京…南京上海上海北京南京上海…西安重庆沈阳广州广州重庆南京北京西安…沈阳路标信息维护机制确保公路网络拓扑发生变化时能够更新路标信息,保障路标信息的正确性和最优化。1、物理连通2、路标信息3、路标信息的维护机制公路网络正常运行的条件再思考一个问题:有大量的电脑,现在希望这些电脑互相通信,我们需要做哪些事情?终端终端终端终端终端终端终端终端终端终端Step1:建设计算机网络计算机网络包括网络设备(节点)和链路(边)任意两台计算机之间有信号的物理通路终端终端终端终端终端终端终端终端终端终端Step2:创建转发表终端终端终端终端终端终端终端终端终端终端网络A网络B网络C网络DA BBCA CB CBDB DStep3:建立转发表维护机制Step2中的转发表是由转发表维护机制生成的终端终端终端终端终端终端终端终端终端终端Specialized Packet Forwarding HardwareFeatureFeatureSpecialized Packet Forwarding HardwareSpecialized Packet Forwarding HardwareSpecialized Packet Forwarding HardwareSpecialized Packet Forwarding HardwareOperatingSystemOperatingSystemOperatingSystemOperatingSystemOperatingSystemFeatureFeatureFeatureFeatureFeatureFeatureFeatureFeature传统网络设备工作方式:所有设备运行相同的协议,通过协议信息交流生成转发表protocolprotocolprotocolprotocolprotocol•工作原理:基于物理端口转发•策略:FloodHub•工作原理:基于MAC地址表转发•策略:STP+MAC地址学习L2Switch•工作原理:基于路由表转发•策略:静态路由+动态路由协议Router传统网络设备工作方式共同点:分布式策略(策略的制定者为设备本身)转发表的结构:编号数据包匹配特征数据包处理方法1特征1处理方法12特征2处理方法2………………N特征N处理方法N编号入端口数据包处理方法1入端口1从其他所有端口转发2入端口2从其他所有端口转发………………N入端口N从其他所有端口转发HUB的转发表结构编号目的IP网段数据包处理方法1目的IP网段1出口12目的IP网段2出口2………………N目的IP网段N出口NRouter的转发表结构编号目的MAC数据包处理方法1目的MAC1出口12目的MAC2出口2………………N目的MACN出口NL2Switch的转发表结构软件定义网络控制器:控制器知道所有网络信息,负责指挥设备如何工作交换机:交换机不知道任何网络信息,只会按照控制器的指挥工作软件定义网络的网络设备之间不运行任何协议,网络设备的转发表由控制器配置生成。控制器与网络设备之间需要一种协议来互相通信终端控制器终端SDN网络分为两张网1、数据网(数据平面):Traffic2、信令网(控制平面):OpenflowProtocolOpenflowOpenflow基于Openflow协议的软件定义网络Openflow交换机(Openflow1.0)数据包匹配特征:•一层:交换机入端口(Ingress Port)•二层:源MAC地址(Ether source)、目的MAC地址(Ether dst)、以太网类型(EtherType)、VLAN标签(VLAN id)、VLAN优先级(VLAN priority)•三层:源IP(IP src)、目的IP(IP dst)、IP协议字段(IP proto)、IP服务类型(IP ToSbits)•四层:TCP/UDP源端口号(TCP/UDP srcport)、TCP/UDP目的端口号(TCP/UDP dstport)数据包处理方法:•转发•修改包头Openflow交换机中的转发表称为流表(Flow table)流表包含数据包匹配特征和数据包处理方法Openflow1.0对数据包匹配特征的描述方法ofp_match的wildcard22‐312120191817161514131211109876543210保留IP服务类型VLAN优先级目的IP源IP目的端口源端口IP协议字段以太网类型目的MAC源MACVLAN标签入端口ofp_match的wildcard除源IP和目的IP以外,掩码位为0表示对应匹配项需要精确匹配,掩码为为1表示忽略匹配项。源IP和目的IP字段的掩码表示32bitIP地址可以忽略匹配的长度。如果源IP的掩码为8(wildcard的8‐13bit为001000),表示源IP字段的高24bit需要精确匹配,源IP字段的低8bit可以忽略。Openflow1.0对数据包处理方法的描述方法Openflow1.0提供两种数据包的处理方法:•转发(Forward)•修改包头(Modify field)SET_VLAN_VID 修改VLAN标签SET_VLAN_PCP 修改VLAN优先级STRIP_VLAN 弹出VLAN标签SET_DL_SRC 修改源MAC地址SET_DL_DST 修改目的MAC地址SET_NW_SRC 修改源IP地址SET_NW_DST 修改目的IP地址SET_NW_TOS 修改IP服务类型字段SET_TP_SRC 修改源端口号SET_TP_DST 修改目的端口号以上每一种操作称为一个动作(Action),流表中的数据包处理方法是一个动作列表(Action List),动作列表由以上各种动作组合合成。Action头,包括Type和len字段Type为一下类型之一其中OFPAT_OUTPUT和OFPAT_ENQUEUE为转发操作,其他类型为修改包头操作Action——OUTPUT类型Output类型Action的结构包含一个port参数和一个max_len参数Port参数指定了数据包的输出端口,输出端口可以是交换机的一个实际物理端口,也可以是一下虚拟端口ALL:将数据包从除入端口以外其他所有端口发出CONTROLLER:将数据包发送给控制器LOCAL:将数据包发送给交换机本地端口TABLE:将数据包按照流表匹配条目处理IN_PORT:将数据包从入端口发出NORMAL:按照普通二层交换机流程处理数据包FLOOD:将数据包从最小生成树使能端口转发(不包括入端口)当port为CONTROLLER时,max_len指定了发给CONTROLLER的数据包最大长度。当port为其他参数时,max_len无意义。Action——ENQUEUE类型Actions——修改VLANIDAction——修改VLAN优先级Action——修改MAC地址Action——修改IP地址Action——修改IP服务类型Action——修改传输层端口号Openflow交换机流表编号OpenflowMatchAction List1match1actions12match2actions2………控制器如何写流表?每条流表条目还包括Counter字段,用来保存与条目相关的统计信息Openflow消息Openflow消息总共分为三大类:1、Controller‐to‐Switch 控制器至交换机消息此类消息由控制器主动发出Features用来获取交换机特性Configuration用来配置Openflow交换机Modify‐State用来修改交换机状态(修改流表)Read‐Stats 用来读取交换机状态Send‐Packet用来发送数据包Barrier 阻塞消息2、Asynchronous异步消息此类消息由交换机主动发出Packet‐in用来告知控制器交换机接收到数据包Flow‐Removed 用来告知控制器交换机流表被删除Port‐Status 用来告知控制器交换机端口状态更新Error 用来告知控制器交换机发生错误3、Symmetric对称消息,可以由控制器或交换机主动发起Hello 用来建立Openflow连接Echo 用来确认交换机与控制器之间的连接状态Vendor 厂商自定义消息Openflow消息格式Openflow协议数据包由OpenflowHeader和OpenflowMessage两部分组成OpenflowHeader的结构:OpenflowMessage结构与具体消息类型有关Openflow消息类型建立Openflow连接控制器Server:TCP6653端口ClientOFP_Hello控制器与交换机互相发送Hello消息Hello消息中只包含OpenflowHeaderOpenflowHeader中的version字段为发送方所支持的最高版本Openflow协议双方选取Hello消息中最低版本的协议作为通信协议如果有一方不支持Openflow协议版本,应发送Error消息后断开连接如果双方Openflow版本可以兼容,则Openflow连接建立成功。Openflow连接建立后,控制器最关心的事情是什么?获取交换机特性(Features)信息控制器Server:TCP6653端口Client1、Features Request2、Features ReplyOpenflow连接建立后,控制器最需要获得交换机的特性信息,交换机的特性信息包括交换机的ID(DPID),交换机缓冲区数量,交换机端口及端口属性等等。控制器向交换机发送Features Request消息查询交换机特性,Features Request消息只包含OpenflowHeader。交换机在收到Features Request消息后返回Features Reply消息,Features Reply消息包括OpenflowHeader 和Features Reply Message Features Reply Message结构datapath_id为交换机独一无二的ID号n_buffers为交换机可以同时缓存的最大数据包个数n_tables为交换机的流表数量Capabilities表示交换机支持的特殊功能Actions表示交换机支持的动作(见ofp_action_type)ofp_phy_ports为交换机的物理端口描述列表物理端口描述port_no为物理端口的编号hw_addr为端口的MAC地址name为端口的名称config为端口的配置State为端口状态curr, advertised supported,peer为端口物理属性配置交换机Openflow属性Openflow交换机只有两个属性需要控制器配置第一个属性为flags,用来指示交换机如何处理IP分片数据包第二个属性为miss_send_len,用来指示当一个交换机无法处理的数据包到达时,将数据包的发给控制器的最大字节数。Packet‐in事件(交换机接收数据包)终端控制器终端数据包Packet‐in消息触发情况1:当交换机收到一个数据包后,会查找流表,找出与数据包包头相匹配的条目。如果流表中有匹配条目,则交换机按照流表所指示的action列表处理

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功