个人学习笔记,出问题请指出下。摘取《图解OpenFLow》
Openflow协议是由斯坦福大学提出,最初的出发点是为了更加轻松地构建用于研究的网络。
Openflow的初期设计思想:无需设计新的硬件,只对现有硬件更新其软件。因此,Openflow是以网络设备中内置了TCAM(Ternary Content-Addressable Memory)存储器为前提来设计的。
这里讲下TCAM,TCAM是对每个位(bit)实施0、1和don’t care 三种匹配的三态电子器件,搭载该存储器的目的是在网络交换机中通过硬件高速处理子网掩码和访问访问控制列表。
设计Openflow的初衷是无需更改已搭载TCAM的网络设备硬件,仅通过软件升级即可实现网络行为变更。Openflow是在考虑了能够一边应用现有架构,一边构建虚拟网络基础上设计出来的。
所谓OpenFlow,具体是指什么
以往的L2交换机采用以太网地址和VLAN标签进行交换处理,而OpenFlow作为构建网络的标准规范,将各种数据包(或帧)持有的以太网地址、VLAN标签、IP地址、TCP\UDP端口号等特征作为“流”来处理,在此基础上进行交换并可以灵活设置路由的路径。

【图一.OpenFlow的网络构成】
控制面和数据面的分离
从图1可以看出OpenFlow的典型特性,那就是将用于控制的网络和用于数据包发送的网络分离。我们分别将用于控制的网络称为“控制面”,将用于数据包发送的网络称为“数据面”。
传统的网络设备是控制面和数据面位于同一设备中。(example:运行IP协议的路由器,计算合适路由是控制面,根据计算结果转发数据包。)
在OpenFlow网络的构成要素方面,控制面部分为OpenFlow控制器,数据面部分为OpenFlow交换机。常用的“OpenFlow是集中控制模型”这一描述是源自OpenFlow的思想,即通过将控制面和数据面分离在不同的设备中,使OpenFlow控制器可同时控制多台OpenFlow交换机。

【图2.传统的控制面和数据面】

【图3.OpenFlow的控制面和数据面】
控制面的构建方式
实现数据面的OpenFlow交换机,根据实现控制面的OpenFlow控制器的指令运行,为了传输指令,需要构建双方可通过TCP/IP进行通信的环境。具体而言,就是要在控制面的网络中,对OpenFlow交换机和OpenFlow控制器设置适当的IP地址和路径。
在构建OpenFlow网络时,原则上需要将控制面和数据面作为不同的网络。如何实现“不同的网络”的不同的方式,但并非必须要构建另外的物理网络。例如覆盖(Overlay)方式,就是在将数据面构建为覆盖网络时,将网络构建中使用的既有网络直接用作控制面。此外,还可以用VLAN等对同一物理网络进行逻辑分割进行构建数据面和控制面。或利用能同时拥有数据面和控制面的“In-band控制通道”技术。分别构建物理网络用作控制面和数据面也是可以的。
(Overlay、vlan、In-band控制通道、构建物理网络)
数据面构建方法
这里有三种方法:直接连接OpenFlow交换机的“Hop-by-Hop”方式、通过覆盖网络连接OpenFlow交换机的‘覆盖’方式、组合以上两种方式的“混合方式”
Hop-by-Hop方式
OpenFlow交换机之间的数据面直接进行物理连接的方式就是Hop-by-Hop方式。该方式与接入其他设备的覆盖方式相比,具有能够进行高速处理,判断何处出现故障时的考虑因素较少等优点。

覆盖方式
在难以直接连接各OpenFlow交换机的环境中,可采用覆盖方式导入OpenFlow。该方式采用IP通道等技术构建用于数据面的覆盖网络。


多如通过虚拟交换机实现OPenFlow交换机,将虚拟化环境作为覆盖的默认条件。各OpenFlow交换机通过用于控制面的网络连接OpenFlow控制器,数据包则使用各OpenFlow交换机连接的数据面发送。
Hop-by-Hop方式通常要求重新为数据面准备专用网络,而覆盖方式则具有同时使用现有网络和OpenFlow网络的优点。另外覆盖方式是以封装新的字段为前提,所以处理性能低于Hop-by-Hop方式,MTU相对可用变小。
混合方式
就是两种方式都用(计算机,我的端水大师OAO ),根据具体使用环境两者都用也很正常。
OpenFlow控制器和OpenFlow通道
OpenFlow是一种集中控制模型,由名为OpenFlow控制器的服务器对OpenFlow网络中的OpeNFlow交换机的转发表进行设置。OpenFlow控制器和OpenFlow交换机维持着由OpenFlow通道的TCP连接。这是为了让OpenFlow控制器能够监视OpenFlow交换机的状态,并确保能根据需要发出指令等。
OpenFlow的构成要素:OpenFlow控制器、OpenFlow交换机、OpenFlow通道、交换机中的流表。
在OpenFlow中,由OpenFlow控制器对整个OpenFlow网络进行集中管理,而不是对OpenFlow交换机的所有动作逐一发出指令。OpenFlow控制器事先设置“何种情况应如何处理”,并将该设置发送至OpenFlow交换机中,OpenFlow交换机则执行该设置(个人感觉就是发送个条件执行表)。在OpenFlow交换机中,表示“何种情况应如何处理”的就是“流表”。

OpenFlow的设置根据放出“何种情况应如何处理”这一指令的时机大致可以分为两种模式:“Proaction模式”和“Reaction模式”(这两个简单讲一个是预先设置,一个是应对突发的这种感觉。)
流表
在OpenFlow交换机中,流表负责描述何种数据包要进行何种处理等设置信息,以及执行这些处理的次数记录等记录。OpenFlow交换机可拥有多个流表。
流表中包含的项(流表项)分别对各流的行为本身进行定义。各流表可拥有多个流表项。在OpenFlow中,OpenFlow控制器通过再OpenFlow交换机中设置流表项来完成各种控制。流表项描述的是OpenFlow交换机如何处理各种数据包。例如可以根据Openflow交换机的物理端口、MAC地址、IP、TCP/UDP判断数据包转发到那个端口或者直接丢弃。在放送数据包之前还可以更改其首部。
个人心得:个人感觉OpenFlow特点是将数据面和控制面分开。OpenFlow感觉有点虚拟化的味道,我刚学见解不深。后面书本有些操作个人感觉可以更加智能维护网络并且完成一些以往难实现的操作。













