一、数据平面控制平面

SDN(Software-defined Network,软件定义网络),在学习SDN之前,首先要了解控制平面和数据平面,网络层能够被分解为两个相互作用的部分,即数据平面控制平面,传统上控制平面路由选择协议(如OSPF、BGP)和数据平面转发功能已被实现成一个整体,位于一台路由器中。

数据平面:即网络层中每台路由器的转发的功能,该数据平面功能决定到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一。
控制平面:作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理。

SDN通过将这些控制平面功能作为一种单独服务,明确地分离数据平面和控制平面,控制平面功能通常置于一台远程“控制器”中。

二、两种重要的网络层功能

  1. 转发。当一个分组到达某路由器地一条输出链路时,该路由器必须将该分组移动到适当地输出链路。
    将分组从一个输入链路接口转移到适当地输出链路接口地路由器本地动作,转发地时间尺度很短(通常为几纳秒),因此通常用硬件来实现。
  2. 路由选择。当分组从发送方流向接收方时,网络层必须决定这些分组所采用地路由或路径。计算这些路径地算法被称为路由选择算法,计算出路径之后会生成转发表
    确定分组从源到目的地所采取地端到端路径的网络范围处理过程,路由选择发生的时间尺度长得多(通常为几秒),因此通常用软件来实现。

三、实现控制平面的方法

1. 控制平面:传统方法

路由选择算法决定了插入该路由器转发表的内容,路由选择算法运行在每台路由器中,并且在每台路由器中都包含转发和路由选择两种功能。
这是路由选择厂商在其产品中采用的传统方法,使用该方法,每台路由器都有一个与其他路由器的路由选择组件通信的路由选择组件。

2. 控制平面:SDN方法

该图显示了从路由器物理上分离的另一种方法,远程控制器计算和分发转发表以供每台路由器所使用。控制平面路由选择功能与物理的路由器是分离的,即路由选择设备仅执行转发,而远程控制器计算并分发转发表。远程控制器可能实现在具有高可靠性和冗余的远程数据中心中,并可能由ISP或某些第三方管理。路由器和远程控制器通过交换包含转发表和其他路由选择信息的报文来通信。

在SDN文献中,将网络的转发设备称之为“分组交换机”(或直接称为交换机),因为能够根据网络层源/目的地址、链路层源/目的地址以及传输层、网络层和链路层中分组首部字段做出转发决定。
OpenFlow是一个得到高度认可和成功的标准,它已经成为匹配加动作转发抽象、控制器以及更为一般的SDN革命等概念的先驱。匹配加动作转发表在OpenFlow中称为流表(flow table),它的每个表项包括:

1)首部字段值的集合,入分组将于之匹配。
2)计数器集合(当分组与流表项匹配时更新计数器)。
3)当分组匹配流表项时所采取的动作集合(action)。这些动作可能将分组转发到给定的输出端口,丢弃该分组、复制该分组和将它们发送到多个输岀端口,和/或重写所选的首部字段。

SDN体系结构有4个关键特征:

1)基于流的转发。SDN控制的交换机的分组转发工作,能够基于运输层、网络层或链路层首部中任意数量的首部字段值进行。分组转发规则被精确规定在交换机的流表中,SDN控制平面的工作是计算、管理和安装所有网络交换机中的流表项。
2)数据平面与控制平面分离。从上面两张图对比可以明显看出来。数据平面由网络交换机组曾,交换机是相对简单(但快速)的设备,该设备在它们的流表中执行“匹配加动作”的规则。控制平面由服务器以及决定和管理交换机流表的软件组成。
3)网络控制功能。位于数据平面交换机外部。SDN中的“S”表示“软件”,与传统的路由器不同,这个软件在服务器上运行,该服务器与网络交换机截然分开且与之远离。如下图所示,控制平面由两个组件组成:一个SDN控制器(或网络操作系统),以及若干网络控制应用程序。

SDN体系结构的组件

控制器维护准确的网络状态信息(如远程链路、交换机和主机的状态),为运行在控制平面中的网络控制应用程序提供这些信息;提供方法,这些应用程序通过这些方法能够监视、编程和控制下面的网络设备。
4)可编程的网络。通过运行在控制平面中的网络控制应用程序,该网络是可编程的。这些应用程序代表了SDN控制平面的“智力”,使用了由SDN控制器提供的API来定义和控制网络设备中的数据平面。例如,一个路由选择网络控制应用程序可以决定源和目的地之间的端到端路径(例如,通过使用由SDN控制器维护的节点状态和链路状态信息,执行Dijkstra算法)。另一个网络应用程序可以执行访问控制,即决定交换机阻挡哪个分组。

SDN控制器和SDN网络控制应用程序

如上所示,SDN控制平面大体划分为两个部分,即SDN控制器和SDN网络控制应用程序。下图显示了一个通用SDN控制器的更为详细的视图。控制器的功能可大体组织为3个层次。

1)通信层:SDN控制器和受控网络设备之间的通信。如果SDN控制器要控制远程SDN使能的交换机、主机或其他设备的运行,需要一个协议来传送控制器与这些设备之间的信息。此外,设备必须能够向控制器传递本地观察到的事件(例如一个报文指示一条附属链路已经激活或停止,一个设备刚刚加入了网络),这些事件向SDN控制器提供该网络状态的最新视图。这个协议构成了控制器体系结构的最底层。
2)网络范围状态管理层。由SDN控制平面所做出的最终控制决定(例如配置所有交换机的流表以取得所希望的端到端转发,实现负载均衡,或实现一种特定的防火墙能力),将要求控制器具有有关网络的主机、链路、交换机和其他SDN控制设备的最新状态信息少交换机的流表包含计数器,其值也可以由网络控制应用程序很好地使用;因此这些值应当为应用程序所用。既然控制平面的终极目标是决定用于各种受控设备的流表,控制器也就可以维护这些表的拷贝。这些信息都构成了由SDN控制器维护的网络范围“状态”的例子。
3)对于网络控制应用程序层的接口。控制器通过它的“北向”接口与网络控制应用程序交互。该API允许网络控制应用程序在状态管理层之间读/写网络状态和流表。当状态改变事件出现时,应用程序能够注册进行通告。

SDN控制器被认为是“逻辑上集中”的,即该控制器可以被外部视为一个单一、整体的服务。但是在时间中这些服务和用于保持状态信息的数据库一般通过分布式服务器集合实现。


数据平面和控制平面交互的例子

说明

  • Dijkstra算法作为一个单独的程序来执行,位于分组交换机的外部。
  • 分组交换机向SDN控制器发送链路更新并且不互相发送。
    此例中,假设交换机s1和s2之间的链路断开;实现了最短路径路由选择,因此除了s3操作未改变外,s1、s2和s4的入和出流转发规则都受到影响。假定OpenFlow被用作通信层协议,控制平面只执行链路状态路由选择而不执行其他功能。

SDN控制器场景:链路状态更新

1)交换机s1经历了自己与s2之间的链路故障,使用OpenFlow“端口状态”报文向SDN控制器通报该链路状态的更新。
2)SDN控制器接收指示链路状态更新的OpenFlow报文,并且通告链路状态管理器,由管理器更新链路状态库。
3)实现Dijkstra链路状态路由选择的网络控制应用程序先前进行了注册,当链路状态更新时将得到通告。应用程序接收该链路状态更新的通告。
4)链路状态路由选择应用程序与链路状态管理器相互作用,以得到更新的链路状态;它也会参考状态管理层中的其他组件。然后它计算新的最低开销路径。
5)链路状态路由选择应用则与流表管理器交互,流表管理器决定更新的流表。
6)流表管理器则使用OpenFlow协议更新位于受影响的交换机s1、s2和s4的流表项,其中s1此时将经s4将分组的目的地指向s2,s2此时将经中间交换机s4开始接收来自s1的分组,s4此时必须转发来自s1且目的地为s2的分组。

上面流程显示了SDN控制平面如何提供控制平面服务(此时为网络层路由选择),而该服务以前是以每路由器控制在每台路由器中实现的。SDN使能的ISP能够容易地将最低开销路径的路由选择转变为更加定制的路由选择方法。因为控制器的确能够随心所欲地定制流表,因此能够实现它喜欢的任何形式的转发,即只是通过改变它的应用控制软件。这种改变的便利性与传统的每路由器控制平面的情况形成对照,传统的情况必须要改变所有路由器中的软件,而这些路由器可能是由多个不同厂商提供给ISP的。
SDN革命正在导致颠覆性地替代专用的整体交换机和路由器(它们同时具有数据平面和控制平面)。类似地,称之为网络功能虚拟化(NFV)的通用SDN的目标是用简单的商用服务器、交换机和存储器来颠覆性地替代复杂的中间盒(例如用于媒体高速缓存/服务的具有专用硬件和专有软件的中间盒)。第二个重要研究领域是寻求将SDN概念从AS内部设置扩展到AS之间设置。


来源:计算机网络-自顶向下方法第七版。
codingga - 简书

计网 | 网络层 SDN控制器 / 远程控制器相关推荐

  1. 读《计算机网络》——深入浅出——以考研为目标学技术面试知识二刷计网——网络层

  2. SDN网络中控制器RYU的安装

    SDN网络中控制器RYU的安装 SDN网络 SDN网络架构 控制器 RYU安装 安装环境 安装步骤 1.更新软件 2.安装git 3.安装RYU前,需要安装一些python的套件: 4.使用githu ...

  3. 计网第四章 网络层(咕咕咕)

    计网第四章 网络层(更新ing 咕咕咕) 网络层提供的两种服务 面向连接的通讯:虚电路 虚电路知识一种逻辑上的连接,分组沿着这个逻辑转发而不是真的建立了一条物理线路. 面向无连接的通讯:数据报服务 网 ...

  4. AT89C51 单片机在电话远程控制器中的应用

    随着通讯产业的发展,电话机已经走进了千家万户,利用电话机进行远程控制的技术也日益用于生活中,本文设计了一种电话远程控制系统,该系统主要应用于电话遥控控制的家用电器,用户在户外可通过任意一部双音多频电话 ...

  5. 【培训实验记录】锐捷SDN交换机和控制器部署

    一.实验描述 部署SDN交换机与控制器物理机,实现拓扑中PC1与PC2互通并登录控制器后台.由于真实物理机中控制器只有一个端口可用,无法将两台开启openflow的交换机都直连到控制器上,故实验中使用 ...

  6. 6路网络IO控制器远程带模拟量采集模块可联网PLC串口服务器Modbus

    6路网络IO控制器远程带模拟量采集模块可联网PLC串口服务器Modbus 支持DO:2路开关量输出 DI:2路开关量输入/AI:2路模拟量输入(V/MA) 的网路IO控制器,支持RS485本地控制.支 ...

  7. ovs连接远程控制器的设置

    场景: 使用docker容器来对网络进行仿真,一个docker容器对应一个网络节点,每个docker容器中有一个ovs交换机,docker容器之间使用veth-pair连接起来,并且绑定到ovs交换机 ...

  8. 关于计网的一点复习资料

    本科在读,刚考完计网,自己整理了点东西,可读性不高,看个热闹吧,然后被爆杀真的很无语,每天都有想不到的被爆杀环节,毁灭吧累了.然后没写什么题(因为都写在纸上了),大部分都是概念性的东西,能拿来背一下罢 ...

  9. 【计算机网络】期末计网复习资料(应该全了)

    计算机网络训练题   &    自制思维导图 不会有人现在才复习计网吧????????!!!!! 除第一个文件后面都是自己写的答案,不一定准确 目录 计网训练题 计算机网络复习题---选择题专 ...

  10. 一文带你复习计网中的重点知识(一万五千字长文)

    建议参考西安交通大学计网考后总结及复习资料汇总进行复习 本文是第一次复习时的整理资料,包括缩写名词解释,重要概念,重要算法,各种表以及报文协议 如需pdf,请在下方留言 文章目录 名词解释 填空概念 ...

最新文章

  1. 数字图像处理:图像就是函数的解读
  2. ECShop的数据操作类文件
  3. python numpy np.argmax(a, axis=None, out=None) (按给定轴位比较,返回第一个最大值索引【下标】)
  4. openresty获取nginx 请求方法
  5. 【网络编程】之六、选择select
  6. Java --- 常用API
  7. 机器学习之几个好用的数据下载网站
  8. PyTorch 1.0 中文官方教程:迁移学习教程
  9. sklearn-数据预处理scale
  10. 计算机内存不足吃鸡怎么办,Win10玩吃鸡游戏提示虚拟内存不足怎么办?
  11. 操,escape sequence的输入方法我以前找过一次,这次又忘了,又找了一次,记下来,...
  12. 数学建模——stata基础操作
  13. UVa 11909 - Soya Milk
  14. 数据挖掘背景知识2——数据挖掘可以做到什么 带给我们什么?
  15. 没有良好数学基础,应该怎样学习人工智能?
  16. iOS开发 音频合成,改变音轨音量,改变背景音乐音量,音频剪辑
  17. 深耕硬科技,香港科大百万创赛与八大投资机构签署合作意向
  18. AE-新知识-替换素材-11月11日
  19. 新媒体监管要与时俱进
  20. C语言——编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串及输出上述的结果。

热门文章

  1. 计算机应用 行动计划范文,制定计算机学习计划范文3篇0001.docx
  2. CodeForces - 1467B - Hills And Valleys (贪心)
  3. netscape.exe_评论-Netscape 6.1
  4. 智能管家App kotlin版(1)——框架搭建
  5. Python 二进制数与十进制数转换表的制作
  6. 读后感:八部众---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十三)
  7. 八孔g调短洞箫_八孔G调的箫,对应的1234567应该分别按哪些孔?
  8. day20 网络编程
  9. 开课吧 python课视频_开课吧人工智能时代的新起跑线python爬虫小课vip
  10. HALCON学习论坛