严格来说,控制面与数据面分离并不是SDN的专利。从一个chassis角度看,传统路由器其实控制面和转发面也是分离的。Route-enginee和line card分别负责控制面板和转发面。但是传统网络的控制面和转发面并不分离,控制面都是reside每个设备之中,每个设备独立控制行为。而SDN做的恰恰是,把整个网络的控制面抽象出来,白壳只做转发。有点类似,把网络中所有路由器RE干的事情都集中在到一个控制器来做,路由器的线卡继续待在原地负责转发,退化成白壳。

就像导航软件对于交通的知道决策一样,导航软件把拥堵信息通告给驾驶员, 由驾驶员自行决定如何绕开拥堵时, 而大部分驾驶员会选择推荐的最短的不拥堵路径行进, 而这种分布式路径决策很可能会导致新的拥堵,这不是我们所期望的,通信网络也几乎面临相同的问题:
1.IP分组网络,基本原理就是全分布式路径决策;
2.分布式自主选路过程(每个网络设备通过一些路由协议收集网络拓扑,自主选择最短路径转发报文);
3.网络架构有极强的生存能力,网络本身能够全自治完成业务,但网络可控性受到限制;
4.多家厂商设备共同组网的通信网络,要满足设备间协议互通,导致网络支持新业务时间漫长,
5.部署新业务时,网络需要对数量众多的现网设备进行软件升级,对网络运维人员挑战巨大;
6.部署业务要逐个操作网络设备,并保持网络设备配置的一致性,以能协同完成网络业务,部署人员必须学习大量分布式控制协议的技术细节,增加了网络运维的难度,增加了运维成本。
SDN(Software Defined Network)
1.集中控制的网络,网络进行软件化,更好支持网络业务的自动化和自治,
2.简化网络的复杂度,向运维人员屏蔽了技术细节,降低了运维成本;
3.支持业务快速创新,满足快速部署业务的需求,提升业务创新发展速度;
4.集中控制,网络结构得到极大简化,调整网络行为时,不再需要去修改网络本身,只调整SDN内部的软件即可;

数据平面:
1)数据平面的首要工作是通过一系列链路级操作采集传入的数据分组,并执行基本的完整性检查。
2)接下来,数据平面将查找FIB表(FIB表已通过控制平面生成,并通过镜像复制到数据平面),识别数据分组的目的地址,这样的流程被称为快速数据分组处理。快速数据分组处理主要体现在不再需要每次都到控制平面进行查询匹配,从而有效节省了处理时间。
3)当报文不能匹配已有规则时,这些数据分组将会被发送到控制平面进行处理。数据平面的查表采用硬件查表和通用处理器查表两类技。
4)主要使用硬件查表技术的原因:
由于硬件查表具有更高的数据分组转发性能。当然,硬件转发的设计目标主要是针对数据分组维持线速转发,在设计时需要考虑多种因素,包括板卡和机架的空间、预算、电源利用率和吞吐量等,在这些因素条件下设计出来的数据平面会存在转发特点可扩展性的差别,例如,不同的转发表数、不同的转发表项数等。(中低性能需求的场景下,可以使用通用处理器进行查表,这样可以在定制功能时节约成本,)
5)为解决数据报文中的标签经过城域网后可能存在标签不一致问题:
SDN以网络设备的FIB表为界分割数据控制平面,其中交换设备只是一个轻量的、“哑”的数据平面,保留FIB和高速交换转发能力,而上层的控制决策全部由远端的统一控制器节点完成,在这个节点上,网络管理员可以看到网络的全局信息,并根据该信息做出优化的决策,
数据控制平面之间采用SDN南向接口协议相连接,这个协议将提供数据平面可编程性。
6)SDN的数据控制分离的特征主要体现在以下两个方面:
一是采用逻辑集中控制,对数据平面采用开放式接口。(即开放接口打乱了传统网络设备商的垄断地位,因此将面临巨大的阻力。)
7)SDN数控分离的优点:
全局集中控制和分布高速转发
灵活可编程与性能的平衡:FIB为分界线实际上降低了SDN的编程灵活性,但是没有暴露商用设备的高速转发实现细。
开放性和IT化:
数据控制分离在一定程度上可以降低网络设备和控制软件的成本。当前的网络设备是捆绑控制平面功能软件一起出售的,由于软件开发由网络设备公司完成,对用户不透明,因此网络设备及其控制平面软件的定价权完全掌握在少数公司手中,造成了总体价格高昂。在数据控制平面分离以后,尤其是使用开放的接口协议后,将会实现交换设备的制造与功能软件的开发相分离,这样可以实现模块的透明化,从而有效降低成本。虽然硬件价格降低后,相应的软件成本会增加,不过总体来说,IT 化将会是一个有效的节约成本的方案。
8)SND数控分离的不足:
可扩展性问题:这是SDN面临的最大问题,数据控制分离后,原来分布式的控制平面集中化了,即随着网络规模扩大,单个控制节点的服务能力极有可能会成为网络性能的瓶颈。因此控制架构的可扩展性是数据控制分离后的主要研究方向之一。
一致性问题:在传统网络中,网络状态一致性是由分布式协议保证的,
在SDN数据控制分离后,集中控制器需要负起这个责任,如何快速侦测到分布式网络节点的状态不一致性,并快速解决这类问题,也是数据控制分离后的主要研究方向之一。可用性问题:可用性是指网络无故障的时间占总时间的比例,传统网络设备是高可用的,
即发向控制平面的请求会实时得到响应,因此,网络比较稳定,但是在SDN数据控制分离后,控制平面网络的延迟可能会导致数据平面可用性问题。
————————————————
原文链接:https://blog.csdn.net/qq_43166593/article/details/92079736

SDN-数据控制分离的更多相关文章

  1. Javascript模板及其中的数据逻辑分离思想(MVC)

    #Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...

  2. 软件定义网络基础---SDN数据平面

    主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数 ...

  3. Oracle 函数 “数据控制,指定某些人只能查看他权限范围内的信息”

    create or replace function work_plan_mask (p_schema VARCHAR2,p_table VARCHAR2) return Varchar2 AS -- ...

  4. MySQL 学习笔记(二):数据库更新、视图和数据控制

    基础准备: 在 school 数据库下建立student.course.sc 三个表: create table student( Sno ) primary key, Sname ) unique, ...

  5. CentOS 7.6最小化安装(系统盘和数据盘分离安装)

    CentOS 7.6最小化安装(系统盘和数据盘分离安装) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建虚拟机 鉴于大家使用的平台操作系统可能不尽相同,博主精力有限,仅演示 ...

  6. .NET+SqlServer 实现数据读写分离

    如今,我们操作数据库一般用ORM框架 现在用.NET Core + EFCore + SqlServer 实现数据读写分离 介绍 为什么要读写分离? 降低数据库服务器的压力 如何实现读写分离? 1.一 ...

  7. SDN原理 控制层 Controller控制器

    本文参照SDN原理视频而成:SDN原理 Controller 概念 从上面这个图片,我们能够知道,Controller 是一个非常重要的东西:承上启下,左右拓展. 从整个SDN的架构来看,控制器 处在 ...

  8. YII2.O学习三 前后台用户数据表分离

    之前我们完成了Advanced 模板安装,也完成了安装adminlte 后台模板,这一步是针对前端和后台用户使用不同的数据库表来管理,做到前后台用户分离的效果: 复制一张user数据表并重命名为adm ...

  9. Python3 实现数据读写分离设计

    前言 首先读写分离可以保证数据库的稳定,简单的说就是当网站访问量大时,读写都在一个库,很有可能会出现脏数据的情况,如果采取阻塞似操作,那么用户体验就会变得更差. 而且目前大多数网站的读写是失衡的,以淘 ...

随机推荐

  1. Linux学习1-云服务器上搭建禅道项目管理工具

    前言 相信各位测试的小伙伴出去面试总会被问到:测试环境怎么搭建?一个中级测试工程师还是对测试环境一无所知的话,面试官会一脸鄙视的,今天我给大家介绍一下最简单的环境部署-—如何在云服务器部署禅道环境. ...

  2. Sklearn--(SVR)Regression学习笔记

    今天介绍一个机器学习包,sklearn.其功能模块有regression\classification\clustering\Dimensionality reduction\data preproc ...

  3. 总结JavaScript对象的深浅拷贝

    十四.对象的浅拷贝与深拷贝 什么是对象的拷贝? 将一个对象赋值给另外一个对象, 我们称之为对象的拷贝 什么是深拷贝, 什么是浅拷贝? 我们假设将A对象赋值给B对象 浅拷贝是指, 修改B对象的属性和方法 ...

  4. Python Special Methods - 特殊方法

    特殊方法 特殊方法的存在是为了给 Python 解释器调用的,通常自己并不需要直接调用它们.也就是说不应该使用 my_object.__len__() 这种写法,而应该使用 len(my_object ...

  5. 《自拍教程9》Python编程风格规范

    Python编程风格规范 根据Python官方提供的Python编程风格规范: Style Guide for Python Code, 即PEP8规范, https://www.python.org ...

  6. 后台+下载(wget)+多个下载url

    有时候我们需要让linux下载多个文件,并且后台下载,不去占用当前控制台. 比如我们需要下载中文维基的三个文件: https://dumps.wikimedia.org/zhwiki/latest/z ...

  7. ansible hosts配置

    编辑/etc/ansible/hosts 添加本机的public SSH key到目标机器的authorized_keys   #ssh-copy-id 添加本机的私钥到Ansible 运行ansib ...

  8. vue-cli3点滴

    1.如果你不在构造函数中声明private的变量,那么久会提示错误. 2.

  9. HttpContext.Current.Server未将对象引用到实例

    问题描述: 在一些类库中需要读取当前系统的xml文件,当时用HttpContext.Current无法找到实例化对象 解决代码如下: XmlDocument xml = new XmlDocument ...

  10. 1.4掌握日志工具的使用——Android第一行代码(第二版)笔记

    Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志. Log.v():用于打印那些最为琐碎的.意义最小的日志信息.对应级别verbos ...