SDN三种模型解析
数十年前,计算机科学家兼网络作家Andrew S. Tanenbaum讽刺标准过多难以选择,当然现在也是如此,比如软件定义网络模型的数量也很多。但是在考虑部署软件定义网络(SDN)或者试点之前,首先需要选择要支持哪一种SDN模型。选择错误就会浪费时间和成本,甚至可能将基于SDN的产品置于不利之地。在这里云端卫士将会与大家探讨三种主要的SDN模型,阐述基本目标、机制以及每一种的缺陷。
SDN解析:网络虚拟化模型
市场上最简单的SDN模型就是网络虚拟化模型,因初创公司Nicira流行,该公司2012年被VMware收购。网络虚拟化的主要目标是消除LAN分区限制(这种限制存在于虚拟LAN(VLAN)标准中),通过在一些基于以太网的虚拟网络架构中实现多播解决可扩展性问题。
为了实现这一点,网络虚拟化平台增加了一些软件元素,通常而言是hypervisor,但是云构建软件(比如OpenStack)也要通过创建VLAN的接口被修改,这个VLAN建立在传统以太网顶部运行的隧道之上。网络设备和运营完全不受影响,理论上数以万计的虚拟网络可以通过这种形式创建。
网络虚拟化的最大好处就是支持多租户云,而且不需要改变网络自身。这种SDN模型在云网络机制中可以轻松映射流行的虚拟化接口,比如OpenStack的Quantum或者大多数支持网络分配的云DevOps工具。最终易于集成网络配置和云服务配置。
最大的劣势在于虚拟网络处于网络层之上,简单地表现为网络设备流量。这些设备无法优先考虑单独的虚拟网络或者报告他们的状态,除非进行深度包检测,来鉴定虚拟网络报头。由于作为云服务堆栈一部分的软件创建了虚拟网络,虚拟网络只能同虚拟机链接,而非用户和设备。
SDN解析:“渐进式”方法
第二种SDN模型可以称之为“渐进式”模型。这种模型的目标就是加强网络软件控制和运营,但是是在当前网络技术的边界之内。为了实现这一点,网络服务提供商可能需要对标,比如VXLAN、GRE、BGP和MPLS,并且用这些标准将网络分区,成为虚拟社群,并且管理流量和服务质量。提供商可能需要将自身的解决方案结合到一套管理接口中,这套接口可以为云环境所用,通过DevOps工具或者云虚拟接口。
实施了这种SDN模型的网络设备,完全集成网络运营、FCAPS管理和网络监控。常规流量工程原则适用,而且虚拟网络理论上可以从服务器扩展到用户,只要设备支持所选标准。
大多数SDN厂商目前实施了上面提到的所有网络标准,但是一些可能并不能在所有设备上可用。这也是这种渐进式模型缺陷中的第一点,因此提供商需要评估现有设备支持的标准。目前为止更大的问题是具体的厂商提供的渐进式SDN模型,可能并不能同其他厂商的设备完全交互。这种方法也可能需要在管理系统以及云虚拟网络或者DevOps接口之间进行特定集成,如果厂商不提供这些,运营商就会面临风险。
SDN解析:OpenFlow模型
最后这种SDN模型就是OpenFlow模型,也是和SDN属于最紧密相关的一个。OpenFlow取代了交换机或者路由器中传统的、基于发现的转发表创建,取而代之的是集中控制转发,也意味着一个集中控制器项目对应每一个设备的转发表。这样做为中央控制节点提供了完整的规则,如网络如何分段或者虚拟化,流量如何管理等。任何控制器和支持OpenFlow兼容版本的交换机的结合都可以用于这种SDN模型。
最后这种SDN模型最大的好处就是这种模型是基于SDN的概念来建立的。早起试用测试和部署认为OpenFlow能够改善网络有效性和可靠性,同时增加网络利用率,因此减少了基础架构成本和运营开支。如果OpenFlow交换机能逐渐普遍化,未来网络就可能通过开放硬件构建,成本极低。这种模式的缺陷就是目前缺少所有必备组件的功能细节。OpenFlow为大多数主流交换机和路由器所支持,但是不一定能够实现同传统协议一样的吞吐量。当然,支持OpenFlow的这种机制并不会显著降低交换机成本。
现在有开源和商用的OpenFlow控制器可用,但是能做的比发送命令到交换机创建路径、管理容量多不了多少。需要一套更高层级的管理应用。这些必须通过北向API连接到OpenFlow控制器,这些API并没有标准化。早期OpenFlow实现需要运营商集成多重组件来创造功能软件定义的网络,并没有完全的商业包可用。
三种模型哪种最佳?
云提供商纠结于VLAN的分段限制,或者面临着VLAN的多播问题,首先可能关注虚拟化网络的SDN模型。这种模型也能够覆盖渐进式SDN模型,尽管协调管理接口人存在很多问题。在数据中心网络设备中投资体量巨大的提供商可能更倾向于这种方式来避免冗余成本。未来的主流发展方向应该会倾向于OpenFlow,因此应该关注支持OpenFlow的服务和设备提供商,尤其是在部署新设备的时候。
SDN三种模型解析的更多相关文章
- C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间
1 作业讲解 指针间接操作的三个必要条件 两个变量 其中一个是指针 建立关联:用一个指针指向另一个地址 * 简述sizeof和strlen的区别 strlen求字符串长度,字符数组到’\0’就结束 s ...
- Javascript事件模型系列(一)事件及事件的三种模型
一.开篇 在学习javascript之初,就在网上看过不少介绍javascript事件的文章,毕竟是js基础中的基础,文章零零散散有不少,但遗憾的是没有看到比较全面的系列文章.犹记得去年这个时候,参加 ...
- JSON三种数据解析方法(转)
原 JSON三种数据解析方法 2018年01月15日 13:05:01 zhoujiang2012 阅读数:7896 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...
- PHP.23-ThinkPHP框架的三种模型实例化-(D()方法与M()方法的区别)
三种模型实例化 原则上:每个数据表应对应一个模型类(Home/Model/GoodsModel.class.php --> 表tp_goods) 1.直接实例化 和实例化其他类库一样实例化模型类 ...
- Android中的三种XML解析方式
在Android中提供了三种解析XML的方式:SAX(Simple API XML),DOM(Document Objrect Model),以及Android推荐的Pull解析方式.下面就对三种解析 ...
- Java/JSP获得客户端网卡MAC地址的三种方法解析
java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种. 1.通过命令方式,在客户端执行Ipconfig 等等.(java/jsp) 2.通过ActiveX的方法.(jsp) 3.通过向13 ...
- Java开发学习(三十六)----SpringBoot三种配置文件解析
一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...
- ZeroMQ - 三种模型的python实现
ZeroMQ是一个消息队列网络库,实现网络常用技术封装.在C/S中实现了三种模式,这段时间用python简单实现了一下,感觉python虽然灵活.但是数据处理不如C++自由灵活. 1.Request- ...
- hibernate(二)一级缓存和三种状态解析
序言 前一篇文章知道了什么是hibernate,并且创建了第一个hibernate工程,今天就来先谈谈hibernate的一级缓存和它的三种状态,先要对着两个有一个深刻的了解,才能对后面我要讲解的一对 ...
随机推荐
- 让window.close不提示:您查看的网页正在试图关闭窗口。是否关闭此窗口?
正常来说,当我们调用window.close来关闭从地址栏中打开的窗口时,IE会弹出提示说:您查看的网页正在试图关闭窗口,是否关闭此窗口? 你可以将window.close替换成下边的脚本,然后再测试 ...
- tomcat manager配置
在tomcat-user.xml里面配置 <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi=" ...
- UIViewController中addChildViewController的作用
当在一个ViewController中添加一个子ViewController时,UI部分可以直接通过addSubView的方法添加,例如: 在一个ViewControllerA中添加ViewContr ...
- LinQ的增删改查
全名:LinQ to sql类:集成化的数据访问类.会自动生成,进行数据库数据访问. LinQ的创建: 1.链接数据库:添加--添加新项--找到LINQ to SQL类--名字就叫数据库的名称就好. ...
- gulp 学习笔记 (初识)
根据极客学院入门视频整理 一.gulp介绍,主要提到了gulp是基于流式来管理运行的,目前完全搞不懂这一套专业术语. 二.gulp的安装使用. 1.首先需要在全局环境下安装gulp npm insta ...
- linux yum下载RPM包后再安装LAMP环境
1.下载yum插件 yum-downloadonly,实现只下载软件包的功能. yum install yum-downloadonly 或者 yum install yum install yum- ...
- CSS3学习内容与心得
今天2005年7月9号,博客这个东西还真不懂,以前吧我不认识它,它也不认识我.没辙,汤老要我们写,就写吧. 写什么好呢?那就写今天学习的css3的一些要点吧. css这门课程几乎都学完了.而我觉得我还 ...
- Acadia Lab 228 + Lab 222
又是一对串烧实验,布好线后非常方便就可以一起完成. 连线方案一模一样: Lab 228 数码管骰子 核心代码如下: def loop() : global cnt global btn_read,se ...
- 在php里写sql查询需要注意的事情
---恢复内容开始--- 今天往php里写了一条sql查询, $sql = "select * from videos where vuser=".$u: $ret = mysql ...
- SVN-修改已提交的日志
前提:服务器是Windows下的VisualSVN Server 1.在库的属性页面的Hooks选项卡下找到Pre-revision property change hook,2.双击修改其内容,具体 ...