这应该算是我在博客园的第一篇技术性的文章。

  OH,不,这不是一篇技术性的文章,只是一篇很好玩的浅显分析接触到的技术的文章。只是个人的理解,并没有任何的代码和执行的操作。初次带来的,是从08年开始火起来的OpenFlow技术,希望对大家有所帮助,同时对文章中出现的一些错误的概念和理解,希望大家能提出宝贵的意见。

  众所周知,计算机的快速发展无异于网络的出现,使得本来高高早上的计算机走进了千家万户。但是,网络这一概念刚刚提出来的时候,谁又能想到它会有现在这样宏大二不可或缺的地位呢?

  这是当时提出互联网的技术人员所没有想到的,于是尽管科技在不断地向前发展,但是网络上面出现的问题也在逐渐的增加。

  在这个网络时代,试想一下,如果某一天你起来的时候,世界网络受到黑客严重的摧毁,四周所有的东西发生了变化,你不能再上网去订餐,也不可能看网络上面那形形色色的国际新闻,也不能再去逛自己喜欢的论坛,和遥远的朋友也不能进行网络视频和对话,好似这世界的你突然变得孤单无助了。

  OK,废话说了很多,不过这也是必须的,就像是两个人做爱一样,总要有一些前戏的,呵呵,请允许我如此放浪的比喻。

  当前网络出现的问题越来越明显起来。我以我的观点归结一下,博友们还可以继续给我补充。

  一、当前网络构架的缺陷。也就是当时提供互联网的技术人员并没有相当网络会发展到如此壮大,构架显得某些方面臃肿,某些方面不完善。

  二、当前网络安全性很低。这应该算是主要的问题吧,现在黑客横行,世界上每年因为黑客攻击造成的损失都是一个巨大的天文数字。面对如此的问题,网络安全的要求便会变得越来越高。

  三、网络逐渐脱离了我们的掌控。随着网络规模的扩大,越来越多的东西变得随意且不受控制起来,如果是公司或者是政府的网络连我们自己都控制不了,那么可想而知,问题就会接连不断的产生。

  所以,一种安全的网络构架便成为了人们迫切的需求。而Openflow在这种情况下应运而生。

  说了这么多,我们的猪脚终于出现了,真是千呼万唤始出来啊。当然,安全的框架并不是openflow这一种,真正的大规模的安全框架,包括美国欧盟和中国都在做,在此不再赘述,喜欢的朋友可以上网搜查。

  控制整个网络,这好似有点出乎了我们的现在的能力的范畴,那么如何才能更安全的让网络为我们服务,有安全可控的特点呢?最好的解决办法,就是控制好网络中的设备,也就是交换机和路由器。

  仔细想一下,交换机和路由器里面,对于网络流量的处理,是基于一张张控制转发表来控制的,那么我们只要控制了流量的转发,那么就可以达到控制网络的地步,Openflow就是在这样的环境下产生的一种协议,同时定义了一套可以利用的管理的API而通过控制交换机的转发。

  而openflow实现这一操作,是通过对交换机下发一条条的流表项达到的。这样,就会使得转发层面和控制层面分离,变得更为安全可控。

  一个可以控制的openflow交换机如何才能得到我们的控制呢。那么就离不开两样东西。一个叫做控制器,一个叫做命令集。

  1,控制器(Controller),用来连接交换机,对交换机中的Vlan、接口进行控制,从而达到流量符合自己需求的转发的目的。

  2,命令集(Command),openflow协议规定的一套接口所组成的一些命令,Controller通过命令集下发的命令来控制交换机中的流量。

  对于上面的Vlan,大家可以在网络上搜索相关的信息,在此不再赘述。

  而控制器的一个最主要的特点就是,在自己控制下的Vlan和属于这个Vlan之内的所有接口,都只听从自己的命令,只有自己下发命令的时候,它们才会做相应的动作。那么,它又是如何做到这一点的呢,知道了网络中acl的定义,大家应该就能很快理解了。

  ACL访问控制列表是应用在路由器接口的指令列表,这些指令列表用来告诉路由器哪些数据包可以接收、哪些数据包需要拒绝。

  Controller对交换机下发的流表项相当于是对交换机下发了一条条的规则ACL,来制定交换机中流量的动向。那么,这些流表项又是由那些东西组成呢?

  大家先想象一下,我们在交换机里面的表项都是怎么组成的呢?

  例如,路由表,有两个地址,一个是目的ip地址,一个是下一跳的ip地址。那么我们下发的流表项应该怎么构造呢?

  1,流表项命令可以添加修改和删除,也就是含有ADD、DELETE、MODIFY三个参数的COMMAND命令。

  2,流表项需要匹配我们需要的东西,比如源IP、目的IP、源MAC、目的MAC等。所有会有MATCH的操作。

  3,对于我们匹配到的表项,我们要做和处理,于是就有了一个动作的组合,便有了ACTION操作。

  于是,便可以知道了,基本流表项的组成就是COMMAND、MATCH、ACTION三部分。

  我们就可以对我们想要转发的在控制列表之中的特定的流量进行转发,从而达到安全、可控的目的。

  不过,虽然有这样的好处,但是Openflow之中也会存在着这样那样的问题,毕竟这个协议还不成熟。大概有以下几点问题。

  一、下发流表项的时间可能会长一些。

  二、openflow规定的接口API之中,并不能完全满足我们所有的需求,还有待完善。

  三、设备制造商在全球范围内都被几个大公司垄断,在设备上使能Openflow协议便有了许多技术上的不开放性,这些和openflow协议刚提出的理念有些冲突。

  综合来说,这是我刚接触openflow的一些浅显的认知,没有具体的实现和操作讲解,感兴趣的博友可以在网上搜一些openflow相关的技术性文章,相信大家看了我这篇文章再看他们的文章会更好理解一些。

  我主要是为了抛砖引玉,希望勾起大家对于openflow的兴趣,同时弄一块简陋的垫脚石,让大家可以踩在上面,少一些对于学习openflow的疑惑。

浅析Openflow的更多相关文章

  1. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

  2. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  3. 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking  ...

  4. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  5. Jvm 内存浅析 及 GC个人学习总结

    从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...

  6. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler

    熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...

  7. 【深入浅出jQuery】源码浅析2--奇技淫巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  8. 浅析匿名函数、lambda表达式、闭包(closure)区别与作用

    浅析匿名函数.lambda表达式.闭包(closure)区别与作用 所有的主流编程语言都对函数式编程有支持,比如c++11.python和java中有lambda表达式.lua和JavaScript中 ...

  9. word-break|overflow-wrap|word-wrap——CSS英文断句浅析

    ---恢复内容开始--- word-break|overflow-wrap|word-wrap--CSS英文断句浅析 一 问题引入 今天在再次学习 overflow 属性的时候,查看效果时,看到如下结 ...

随机推荐

  1. Web前端面试之HTML

    1. 对WEB标准以及W3C的理解与认识 web标准规范要求,书写标签闭合.小写.不乱嵌套,可提高搜索机器人对网页内容的搜索几率.--- SEO 使用外链css和js脚本,结构与行为.结构与表现分离, ...

  2. eclipse tomcat add and remove工程异常

    1  eclipse导入工程后,右击server add and remove工程时,there are no resource: 解决方案:右击工程->单击property->选择pro ...

  3. Putty部署tomcat

    webserver下是tomcatprojects放置项目源代码webapp下放置项目 1. 输入地址栏 登入进去32 192.168.1.32 端口号22 2.进入projects文件夹 cd pr ...

  4. 解决 adb.exe 停止工作小续

    继adb 停止工作的问题之后,又碰见了adb 停止工作的问题. 在使用adb install app.apk 之后给出错误信息如下: * daemon not running. starting it ...

  5. [LintCode] Best Time to Buy and Sell Stock II 买股票的最佳时间之二

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  6. Myeclipse中web project各种常见错误及解决方法(持续更新)

    创建web project时的问题 error:Install Dynamic web Module Facet卡住 solution:把网络关掉再创建就可以 Servlet error:The se ...

  7. IDT HOOK思路整理

    IDT(中断描述符表)分为IRQ(真正的硬件中断)和软件中断(又叫异常). HOOK的思路为,替换键盘中断处理的函数地址为自己的函数地址.这样在键盘驱动和过滤驱动之前就可以截获键盘输入. 思路确定之后 ...

  8. JQ下的常见插件

    插件的概述:插件是以 jQuery 的核心代码为基础,编写出复合一定规范的应用程序.也就是说,插件也是 jQuery 代码,通过 js 文件引入的方式植入即可. 插件的种类很多,达上千种,主要大致可以 ...

  9. MySQL 启动服务报错解决方案

    标签:ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid) 概述 文章 ...

  10. 程序员眼中的 SQL Server-执行计划教会我如何创建索引?

    先说点废话 以前有 DBA 在身边的时候,从来不曾考虑过数据库性能的问题,但是,当一个应用程序从头到脚都由自己完成,而且数据库面对的是接近百万的数据,看着一个页面加载速度像乌龟一样,自己心里真是有种挫 ...