一、SDN体系结构简介

在传统IP网络中,网络设备内部同时集成了控制逻辑和数据逻辑,控制平面需要实现各种类型的网络协议和功能,为数据平面构造和配置路由转发表,而数据平面则根据路由转发表实现数据包的转发。一般来说,网络设备内部控制平面和数据平面的接口是设备生产厂商已经封装好的,网管人员只能使用生产厂商特定的低级指令所提供的有限的功能来实现网络的管理和配置。同时,由于设备提供商之间的低级指令并不是相通的,所以当网络中存在来自许多不同提供商的设备时,网管人员需要花费大量时间和精力对这些设备逐一进行管理和配置。总结来说,传统IP网络具有以下几个缺点:
(1) 控制平面和数据平面紧密耦合。
在传统网络设备设计中,决定数据包如何被处理的控制平面和实现快速报文转发的数据面是集成在一起的,这就意味着控制面和数据面不能独立进化。一旦网管需要在控制面实现新的网络协议或者网络功能,必须要先得到设备提供商的同意,并等待他们在硬件上实现相应的功能。传统网络中控制面和数据面的紧密耦合导致新协议的实现、测试和部署的周期很长,不利于网络基础设施的创新和演进。
(2) 封闭且不一致的网络设备配置接口。
由于网络设备中控制面和数据面的接口是由设备提供商实现并封装的,网管人员需要使用这些有限的配置接口命令对设备进行管理,并且来自不同提供商的配置接口并不相同,而目前缺乏针对不同厂商的统一的配置接口,这就导致人工配置和管理网络的开销非常大。

图1.软件定义网络与传统IP网络的区别
SDN的出现能够很好地解决传统IP网络面临的上述问题。如图1.所示,与传统IP网络相比,SDN将控制面的功能从数据面分离,并将其在逻辑上集中的控制器上实现。通过将控制面从硬件中分离,SDN中的网络设备变成了只具备简单转发功能的“傻瓜式”设备,而网管人员也不再需要逐个设备进行配置和管理,而是可以在统一的控制器上进行新协议的实现和部署,这大大减小了网络管理的开销,并加速了网络基础设施的创新和演进。

二、SDN中数据包处理

在SDN中,控制平面和数据平面通过一系列定义好的编程接口,即南向接口,进行通信,目前已被标准化且应用最为广泛的南向接口为OpenFlow协议。在传统IP网络中,路由器或者交换机是通过路由表或者MAC地址表对数据包进行转发的,而路由表存储的只是网络层的信息,MAC地址表存储的仅仅是链路层的信息。但是在SDN中,数据平面的转发设备不再根据路由表或者MAC地址表来处理数据包,而是统一根据流表(flow table)中的规则来对数据包进行处理。流表中的每条规则由匹配域、动作域和统计信息组成,匹配域包含第二层到第四层的部分信息(如IP地址、端口号、MAC地址等),动作域则是包括转发或者丢包等操作在内的对数据包的处理方式,统计信息可以用来统计某条流已经发送的字节数、交换机某个端口已经发送的字节数等信息。
当转发设备收到数据包时,它首先查找流表,寻找该数据包能够匹配上的规则。当数据包的部分包头信息匹配上某条规则对应的匹配域时,转发设备将按照这条规则对应的动作域处理该数据包,同时更新统计信息。若数据包可以同时匹配上多条规则,那么交换机将按照最高优先级的规则处理该数据包;若数据包在流表中无法找到匹配的规则,那么交换机需要使用OpenFlow协议的Packet-in消息,将包头的部分信息上报给控制器,由控制器决定该类型的数据包应该如何处理。当控制器收到Packet-in消息之后,它会根据全局网络状况决定如何转发该数据包,并向位于转发路径上的交换机下发Flow-mod消息,安装流表项。

图2.SDN中完整的数据包处理过程示意图
图2.给出了SDN中一个完整的数据包处理过程。当交换机S_1第一次收到某类型的数据包时,由于流表中并没有与之匹配的规则,因此S_1会使用Packet-in消息询问控制器该如何处理这个数据包。当控制器收到Packet-in消息后,会根据全局的网络状态信息决策该数据包应该按照S_1→S_2→S_3→S_4的路径进行转发。接着,控制器将会使用Flow-mod信息向这四个交换机安装对应的流表项。当流表项安装完成之后,数据包能够匹配上这四个交换机中新下发的规则并完成整个传输过程。
为了保证控制器能够及时感知到最新的网络状态,交换机需要定时上报网络状态信息(如链路连接、带宽资源等)给控制器,便于控制器根据全局信息作出决策。

三、OpenFlow协议消息类型

OpenFlow协议支持三种类型的消息:控制器-交换机(controller-to-switch)消息类型, 异步(asynchronous)消息类型以及对称(symmetric)消息类型,在这三种消息类型下还细分了许多其他子类型的消息。控制器-交换机消息是由控制器发给交换机用于管理交换机状态的消息,而异步消息则是由交换机发给控制器用于通知控制器交换机状态的改变以及网络事件状态更新的消息。对称消息既可以由交换机发出也可以由控制器发出,这种类型的消息主要用于维护控制器和交换机之间的连接。接下来,本小节将简单介绍一下这三种消息类型下面常见的子类型消息。
1) 控制器-交换机(controller-to-switch)消息类型。该类型的消息指的是那些由控制器发给交换机但并不一定要求交换机回复的消息,它有以下常见的子类型消息。
Features消息:控制器可以通过Features消息请求交换机的id标识以及交换机基本的功能;交换机必须使用Features回复消息对该请求进行响应并明确交换机的id标识和基本的功能。该消息一般是在OpenFlow信道刚建立好的时候使用。
Configuration消息:用于控制器设置和查询交换机的配置参数;交换机可以只回复控制器的查询而不必回复设置。
Modify-state消息:该类型的消息是由控制器发出用于管理交换机状态的消息,主要目的是增加、删除和修改流表中的条目以及设置交换机端口的状态。2.1.2小节中提到的Flow-mod消息就是Modify-state消息中的一种。
Packet-out消息:控制器使用Packet-out消息将数据包从交换机指定的端口发送出去,同时将通过Packet-in消息收到的数据包转发出去。
Barrier消息:Barrier请求/回复是控制器用于确保交换机已经完成某些指定动作的消息。
2) 异步(asynchronous)消息类型。异步消息是由交换机主动发送给控制器用于表示数据包到达或者交换机状态改变的情况,它有以下几种常见的子类型消息。
Packet-in:Packet-in消息将数据包的控制权转移给控制器。特别的,当交换机收到无法匹配上流表中任何一条规则的数据包时,可以向控制器询问如何处理这个数据包并使用该消息将数据包的控制权转移给控制器,2.1.2小节中提到的例子就使用了Packet-in消息的这种典型用法。
Flow-removed:用于通知控制器流表中某个流表条目已经被移除。
Port-status:用于通知控制器端口状态的改变。当端口配置(比如,被用户设置为down)或者状态改变(比如链路失效)时,交换机应当发送Port-status消息通知控制器。
3) 对称(symmetric)消息类型。对称消息既可以由交换机发出也可以由控制器发出,主要用于维护控制器和交换机之间的连接,它主要包含以下几种常见的子类型消息。
Hello:刚建立连接时,交换机和控制器之间使用Hello消息进行交互。
Echo:Echo请求/回复消息可以由控制器或者交换机发出,Echo请求必须要用Echo响应进行回复。Echo消息主要用来验证控制器和交换机之间的连接的存活性,也可以用来测量控制器和交换机之间的连接的延时或者带宽。
Error:Error消息是交换机或者控制器用来通知OpenFlow连接的另一端,本地发生了一些问题。该消息经常被交换机用于说明控制器发出的请求失败的情况。
Experimenter:交换机可以使用Experimenter消息来提供OpenFlow消息类型空间中额外的功能,该消息主要用于OpenFlow未来的修改和发展。

认识软件定义网络(SDN)(一)相关推荐

  1. 推荐书籍:软件定义网络 SDN与OpenFlow解析

    <软件定义网络(SDN与OpenFlow解析)>由纳多.格雷所著,是关于SND 的 指南,全面介绍了SDN 的定义.协议.标准及应用,讨论了当前OpenFlow 模型及集中式网络控制.数据 ...

  2. 软件定义网络SDN(计算机网络-网络层)

    目录 软件定义网络SDN 数据平面和控制平面 SDN 最重要的三个特征 控制平面与数据平面分离 SDN 的数据平面 软件定义网络SDN  SDN的本质特点是控制平面和数据平面的分离以及网络的可编程性, ...

  3. 浅谈软件定义网络SDN

    浅谈软件定义网络SDN 前言 学习主要内容 一.SDN简介 二.SDN的三个主要特征 转控分离 集中控制 开放接口 三.SDN的工作原理 SDN网络架构的三层模型 SDN网络架构下的三个接口 SDN基 ...

  4. 软件定义网络SDN(特点、实现途径与展望)

    SDN软件定义网络简介 软件定义网络(SDN,Software Defined Network),是由美国斯坦福大学clean slate研究组提出的一种新型网络创新架构,其核心技术OpenFlow通 ...

  5. 什么是软件定义网络 (SDN)

    什么是软件定义网络? 软件定义网络 (SDN) 是一种架构,它抽象了网络的不同.可区分的层,使网络变得敏捷和灵活,SDN 的目标是通过使企业和服务提供商能够快速响应不断变化的业务需求来改进网络控制. ...

  6. 浅谈软件定义网络(SDN)技术研究现状和发展趋势

                       浅谈软件定义网络(SDN)技术研究现状和发展趋势 友情全文PDF链接:浅谈软件定义网络(SDN)技术研究现状和发展趋势.pdf-网络基础文档类资源-CSDN下载 ...

  7. vmware服务器虚拟化部署sdn,使用VMware的NSX多面落地软件定义网络SDN视频课程

    1 为什么需要SDN及它的定义.争议.落地 分解初涉人群理解数据中心SDN的难点在哪里,先通过举个一典型云计算的交付环境DCaas交付来落地SDN,首先理解DCaas是什么,它是如何发展起来的.物理基 ...

  8. 软件定义网络:SDN与OpenFlow解析pdf

    下载地址:网盘下载 编辑推荐 迄今为止SDN研究与实践领域最重要的著作.一线专家多年厚积薄发的力作,网络可编程技术无可替代的权威解读,全面覆盖SDN最新定义.协议.标准和实践 ONF全球特邀研究顾问. ...

  9. 软件定义网络SDN基础实验:MiniNet常用命令、创建网络拓扑、OpenFlow流表操作

    此实验基于<软件定义网络实验1-5>,主要内容为: MiniNet常用命令 如何创建网络拓扑 OpenFlow流表操作 00x1 搭建SDN环境 SDN 环境配置:Mininet + Ry ...

  10. matlab搭建sdn,软件定义网络SDN简介和简单仿真实验

    阅读: 11,620 SDN是在2009年左右出现的一种新型网络结构,它将数据层面与控制层面分离,使用中央控制器完成网络的操作和管理,并通常采用OpenFlow协议作为其核心通信协议,拥有着集中式控制 ...

最新文章

  1. c语言课程思政教案设计,设计类专业课程思政教学案例及教学设计
  2. 干货|EOS和它引领的POS新时代
  3. 骑士旅行pascal解题程序
  4. Visual C++中动态链接库技术浅谈
  5. 我的小纠结,技术与认知哪个更重要?
  6. linux之解决lib***.so.*: cannot open shared object file
  7. 协议 UDP、TCP UDP的接发数据的步骤
  8. html模仿登陆页面,登陆注册页面html代码(仿知乎)
  9. 等价划分测试c语言测试三角形,三角形等价划分法测试用例
  10. python之论文降重工具
  11. eclipse的优缺点
  12. Qt实现 员工培训管理系统
  13. Wireshark抓取网易音乐的下载地址
  14. 勒让德多项式(Legendre Polynomials)推导
  15. 静态重定位和动态重定位
  16. ReactiveUI 入门
  17. 数据 | 全国历史六级以上地震记录制图
  18. 【猿团专访】| 潜心研究的云视“华山派”,关于技术研发的那些事
  19. Pillar-based Object Detection for Autonomous Driving(基于柱体的自动驾驶目标检测)论文笔记
  20. layui 多图片上传

热门文章

  1. ManualResetEvent用法详解
  2. Unable to locate package net-tools 处理方法
  3. 使用 patch 命令打补丁
  4. 用python画小王八裤(turtle库)
  5. 计算机专业英语辅音字母缩略,英语缩写规则
  6. 声纹识别(1)声纹识别的测试集和数据预处理
  7. Ubuntu下查看cuda版本
  8. 计算机二级试题word,计算机二级考试word试题及答案.doc
  9. 机器学习之线性回归模型
  10. Java中的函数(方法)