SDN的两种方式分析
来源:互联网 发布:可视化编程 编辑:程序博客网 时间:2024/05/01 01:36
ONF成立两年之际,SDN开始得到业界的广泛认同,尤其是从IT真正走入了CT,而CT的网络类型五花八门,这使得SDN的应用场景急剧增长,大有无所不能之势。
业界目前所推的SDN无非两种
方式一是原生的斯坦福/ONF推崇的OpenFlow完全控制的网络架构
方式二是部分厂商推出的设备可编程的架构
方式二的优缺点:
优点:
后者设备的本地控制面仍然要运行传统的协议,可编程是附加的能力,当应用崩溃后,原有设备/网络仍然可以继续正常运行。这一架构的优点看起来很明显,避免了控制面本身故障的问题。
缺点:
- 首先设备本身的复杂度实际上是增加了,门槛继续加高,不利于新兴的设备厂商的参与;
- 其次既然部分由传统控制面控制,部分由应用程序控制就需要额外的控制仲裁规则,比如基于OpenFlow Hybrid模式下端口的划分、路由器RIB的合成规则或者增加额外的流分类器等等,这使得可编程性受到限制,客户未必能够操纵所有的转发面状态,使得其实际上更适合于特定的应用优化;
方式一的优缺点:
优点:
是转发面可以彻底简单化,受控转发,在全局的控制面控制下可以做到完全自动化部署、配置和维护
缺点:
- 目前的硬件不能很好地支持OF1.1+的抽象模型,只能由控制面适配ASIC本身的能力,业务支持受限于特定硬件,所以Nicira选择在vSwitch上支持OpenFlow。
- 集中控制面的问题,控制面本身的可靠性可以通过分布式技术解决,主要是控制平面本身的时延、可靠性问题,时延随距离增加线性增加,而可靠性则下降更为迅速,关键设备必须要通过双网双平面的方式保证,这使得控制本身的成本大大增加。我们有理由相信Pure OpenFlow的方式更适合于地理上相对较近的网络,比如企业网、数据中心和运营商接入网络。地理跨度更大的网络往往用基于网管接口的方式更加合适。
转发设备芯片,目前速度最快的ASIC到NP、FPGA、多核以及纯软转发的x86均有,其处理单元组织可以分为
- Pipeline
- SMP/NUMA
pipeline优缺点:
优点:
结构分工明确、可以按Pipeline环节的功能设计进行优化,同样的芯片面积可以做到更高的转发速度
缺点:
需要分解转发逻辑到相应的流水线上,灵活度受限;
SMP优缺点:
优点:
方式编程简单、灵活
缺点:
开销稍高
说到底,灵活和成本是互换的。对于Switch ASIC这样的流水线长度、键值类型和操作都固化特定的芯片而言,控制面很难统一控制不同的设备,比如说我按业务分解到查目的MAC表打上MPLS标签,但是ASIC MAC表只支持打VLAN标签,那么就玩不转了。比较理想的模式是转发面Match和Action最好都是可以由控制面定义的
比如在数据中心中,主要是端口分类表、MAC转发表、L3交换表和L3前缀表,那么我就初始化成4个Flowtable,三个HASH的,一个BST(二叉树查找表)或TCAM(TCAM具有查找速度快、操作简单的优点,但同时它也具有3个明显的缺点:成本高、功耗大和路由更新复杂。)的即可(此处为说明简化成4张表),那么在运营商网络可能需要增加MPLS、IPv6等表,而这些表对Action的支持是均质的,那么控制器软件就不需要分别和多家多种设备做两两互通测试,真正做到产业链的开放。在这种芯片结构下,大的TCAM不是必须的,除非应用要求进行大量通配表查找,比如大量包含通配的流调度。Nick Mckeown ONS 2013上演讲所提的芯片就是此种类型,其声称增加芯片面积、功耗不到15%,如果属实,那么其一旦商用,将对产业产生真正的颠覆作用,所谓SDN将转发设备简化、开放化的愿景主要依赖于此种芯片。
其实可编程和可配置之间的界限是比较模糊的,如果采用NetFlow统计流量,用NetConf、命令行下配置策略实现流量工程到底是叫配置还是编程?我个人认为这一点区别并不重要,关键是转发面正常运行是否依赖于外部实体的实时响应,如果是,则外部实体(控制面)的可靠性就是和设备处于同一标准,可以称之为控制面,否则就是网管。在完全控制和部分可编程之间也不存在绝对的界限,比如可以将传统控制面路由协议全部关闭,外部由应用控制RIB,当然这和pure OpenFlow方案相比多花了一些冤枉钱。
- SDN的两种方式分析
- Android布局分析的两种方式
- 创建TabHost的两种方式的简单分析
- Linux驱动的两种加载方式过程分析
- Shiro源码分析之两种Session的方式
- OC中变量的两种声明方式分析
- 分析两种显著网站的数据传输方式
- Linux驱动的两种加载方式过程分析
- 基于PCE的SDN演进方式
- Neutron结合SDN的架构分析
- Neutron结合SDN的架构分析
- 创建线程的两种方式(实现接口的方式请看实例分析5)
- Javamail 两种不同方式分析
- 多线程 - 两方式分析
- 两种“两数互换的方式”
- include 的两种方式
- 抽象的两种方式
- 共享的两种方式
- C语言中的传值调用
- 源码下载---程序猿七夕告白的必备利器
- Vim复制粘贴与寄存器
- API 简单理解
- ProGuard Version5.2(4.2)Manual-->Limitations
- SDN的两种方式分析
- 我的第一份工作-檀木科技
- headers already sent
- 多线程
- android sqlite 的创建与使用,sqlite自定义框架。
- C++静态库编译
- android之Widget
- mysql分表和表分区详解
- 数据结构之动态搜索&平衡二叉树(ADT)