SDN的理解

OpenFlow协议
一、阐述OpenFlow
在SDN中有两个重要的因素,一个是控制器,另一个是交换机。控制器知道所有的网络信息,负责指挥设备如何工作,而交换机什么都不知道,只会按照控制器的指令进行工作,在SDN中网络设备之间不运行任何的网络协议,设备的转发表是由控制器产生的。控制器和设备之间如何进行通信呢?就是通过OpenFlow协议。
二、OpenFlow交换机
OpenFlow交换机由flowTable(流表)、SecureChannel(安全通道)和OpenFlowProtocol(协议)三部分组成。
(1)OpenFlow交换机中的交换机称为流表(flow table),其中包括数据包匹配和数据包的处理方法。
1、数据包的匹配特征
第一层:交换机入端口,即消息在哪个端口进入交换机。
第二层:源MAC地址 ,目的MAC地址,以太网类型,VLAN标签,VLAN优先级
第三层:源IP、目的IP、IP协议字段、IP服务类型
第四层:TCP/UDP源端口号、TCP/UDP目的端口号
2、数据包处理方法
数据包的处理方法包括转发,修改包头,每一个处理叫做一个action
(2)、Secure Channel 安全通道是连接OpenFlow交换机和控制器的接口
控制器通过这个接口进行控制交换机,同时控制器接收来自交换机的事件并向交换机发送数据包。交换机和控制器通过安全通道进行通信,而且所有的信息必须按照OpenFlow协议的格式来执行。
(3)、OpenFlow协议支持三种消息类型

三、OpenFlow的消息类型
第一类:Controller-to-switch(控制器到交换机的消息,由控制器主动发出)
第二类:Asynchronous(异步消息,由交换机主动发出)
第三类:Symmetric(对称消息,可以由控制器和交换机都可以好主动发出)
各类消息的作用:
1、控制器-交换机消息由控制器发送,可以:
指定、修改或删除流定义;
请求交换机功能信息;
查询交换机信息,如计数器;
在新流创建完毕后,将数据包发送回交换机
2、异步消息由交换机发送,可以:
交换机向控制器发送与现有流不匹配的数据包;
在流的存活时间已到或静止计时器过期时,通知控制器已删除;
通知控制器端口状态或交换机出现错误
3、对称消息可以由交换机或控制器发出,可用于:
在控制器和交换机之间启动时发送握手消息;
发送回拨消息,测试控制器和交换机之间的连接延迟,确定控制器和交换机之间的连接是否还有效

四、控制器和网络设备的通信过程
OpenFlow协议为以下三种

交换机发OpenFlow的通信流程:
1、控制器先与交换机进行三次握手,完成socket连接,然后控制器和交换机之间发送OFPT_HELLO消息,Hello消息中只包含OpenFlow Header,其中Header中的version字段为所支持的最高版本的OpenFlow协议,双方选取hello消息中最低的版本作为通信协议,如果有一方不支持OpenFlow协议,则发送OFPT_ERROR消息,然后断开连接。否则协商成功后,两者之间建立OpenFlow连接成功。
第一步总结:OFPT_HELLO
目的 —— 协议协商
内容 —— 本方所支持的最高版本
成果 —— 使用双方都支持的最低版本协议
成功 —— 建立连接
失败 —— OFPT_ERROR,终止连接
2、获取交换机特性(Features)信息,建立OpenFlow连接后,控制器需要活动交换机的特性。(交换机的特性包括:交换机的ID(PID)、交换机缓冲区数量、交换机端口以及端口属性等等)。控制器向交换机发送Features Request消息查询交换机特性。交换机在接收到Features Request消息后返回Features Reply消息,Features Reply消息包括OpenFlow Header 和Features Reply Message;
总结:OFPT_FEATURES
发送时间: 在建立连接完成以后
发送数据: OFPT_FEATURES_REQUEST
对称数据: OFPT_FEATURES_REPLY
目的: 获取交换机的信息
3、Packet-in事件(交换机接收数据包),在控制器获取完交换机特性后,交换机开始处理数据。对于进入交换机而没有匹配匹配流表,不知道如何操作的数据包,交换机会将其封装在packet-in中转发给Controller。产生packet-in的原因主要有两种:
(1)、OFPR_NO_MATCH:当交换机接收到一个数据包后,会查找流表,找出与数据包包头相匹配的头目。如果流表中有匹配的头目,则交换机按照流表所只是的action列表处理数据包。如果流表中没有匹配的头目,则交换机会将数据包封装在packet-in消息中发送给控制器处理。此时数据包会被缓存在交换机中处理。
(2)、OFPR_ACTION:交换机流表所只是的action列表中包含转发给控制器的动作。此时数据包不会被缓存在交换机中。
4、OFPT_PACKET_OUT 并不是所有的数据包都需要向交换机中添加一条流表项来匹配处理,网络中还存在多种数据包,以至于没必要通过流表来指定这一类数据包的处理方法。此时,控制器可以使用packetOut消息,告诉交换机某一个数据包如何处理。
5、OFPT_FLOW_MOD当交换机接收到数据包并且交换机中没有匹配的流表项时,交换机会将数据包封装到packet-in 中发送给控制器,并且交换机会将该数据包缓存。控制器接收到packet-in 消息后,可以发送一个flow_mod消息向交换机写一个流表项。并且将buffer_id字段设置为packet-in消息中的buffer_id
6、OFPT_ECHO:当没有其他的数据包进行交换时,Controller会定期循环给交换机发送OFPT_ECHO_REQUEST,交换机回去OFPT_ECHO_REPLY,用来查询连接状态,确保通信畅通。

通信流程示意图

交换机 hello 控制器

Features Resquest

Features Reply

setConfig

packetIn

packedOut/flow_mod

SDN
一、概念
SDN是一种新型的网络创新架构,通过将网络设备控制面和数据面分离开来,从而实现网络流量的灵活控制,让网络成为一种可灵活配置的能源。
二、通信过程
如下图,假设左边的PC为h1,右边的PC为h2,下方为控制器,中间为交换机。首先控制器和交换机之间通过hello 和Features两个事件进行了信息交换。然后,当h1将数据发送到h2的时候,在通信的初始阶段,交换机中没有相对应的流表(flowTable),已经h2相对应的地址,因此交换机这时候并不知道该数据发往哪里。此时,会触发Packet_in 事件。然后控制器通过数据的解析,得出该数据包应该发送的方向,给交换机添加流表,发出Flow_mod事件,这时候数据包就可以通过流表被发送到h2了。

三、SDN的优势
传统IT架构中的网络,根据业务需求部署上线以后,如果业务需求发生变动,重新修改相应网络设备(路由器、交换机、防火墙)上的配置是一件非常繁琐的事情。在互联网/移动互联网瞬息万变的业务环境下,网络的高稳定与高性能还不足以满足业务需求,灵活性和敏捷性反而更为关键。SDN所做的事是将网络设备上的控制权分离出来,由集中的控制器管理,无须依赖底层网络设备(路由器、交换机、防火墙),屏蔽了来自底层网络设备的差异。而控制权是完全开放的,用户可以自定义任何想实现的网络路由和传输规则策略,从而更加灵活和智能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值