浅析Openflow
这应该算是我在博客园的第一篇技术性的文章。
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的更多相关文章
- SQL Server on Linux 理由浅析
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
- 【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 高性能IO模型浅析
高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking ...
- netty5 HTTP协议栈浅析与实践
一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...
- Jvm 内存浅析 及 GC个人学习总结
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...
- 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...
- 【深入浅出jQuery】源码浅析2--奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 浅析匿名函数、lambda表达式、闭包(closure)区别与作用
浅析匿名函数.lambda表达式.闭包(closure)区别与作用 所有的主流编程语言都对函数式编程有支持,比如c++11.python和java中有lambda表达式.lua和JavaScript中 ...
- word-break|overflow-wrap|word-wrap——CSS英文断句浅析
---恢复内容开始--- word-break|overflow-wrap|word-wrap--CSS英文断句浅析 一 问题引入 今天在再次学习 overflow 属性的时候,查看效果时,看到如下结 ...
随机推荐
- day3 Linux基础
1.正文处理命令及tar命令 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group >1.txt2) 将用户信 ...
- android之Handler机制
简单例子开头: 网络http请求网站源码数据并显示 注意点:访问网络需要加Internet权限: android.permission.INTERNET 简单的步骤: 使用UrlConnection请 ...
- ubuntu14.04上Virtualbox安装win7(使用Ghost镜像安装,启用USB设备支持,设置共享目录)
由于某些软件只有windows版本,于是只好安装个虚拟机win7 /**************************安装*************************************/ ...
- 比achartengine更加强大的Android图表控件。
比achartengine更加强大的图表控件MPAndroidChart. 详细使用及demo:http://www.see-source.com/androidwidget/detail.html? ...
- 微软“.Net社区虚拟大会”dotnetConf2015 第二天 无处不在的Xamarin
今天,微软召开了“.Net 社区虚拟大会”(dotnetConf),包括微软的 Scott Hanselman 和 Xamarin 的 Miguel De Icaza 在内的知名人士,都将在 Chan ...
- 给Mac OS X的“逻辑宗卷组”改名
近日更新了Mac OS X的10.10版本——Yosemite,感觉良好,但当我在打开磁盘工具的时候发现了一个美中不足的地方,磁盘宗卷组的名字居然还是我之前的“Mavericks”,如图: 如何对它进 ...
- Express4 启航指南
确实有感而发,Nodejs真的发展太快了,这么说的原因有两点:自己去年冬天买了本<了不起的Node.js>,里面介绍Express的版本还是2.x.x:前些天小伙伴买了本<Node. ...
- JavaScript学习笔记之数值
JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此.(整数也是通过64浮点数的形式来存储的) 所以,1+1.0=2:且1===1.0的 浮点数不是精确的值,所以涉及小数的比 ...
- FPGrowth算法总结复习
摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 关联规则(associatio rules):从大规模数据集中寻找物品建 ...
- Android笔记——Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为"visible "."invisible"."gone&quo ...