计算机网络4——网络层8 软件定义网络 SDN

文章目录

  • 一、介绍
    • 1、简介
    • 2、原理
    • 3、案例
      • 1)普通
      • 2)负载均衡的例子
      • 3)防火墙的例子
  • 二、控制层面
    • 1、特征
    • 2、层次

一、介绍

1、简介

SDN的概念最初由斯坦福大学N.McKeown于2009年首先提出。当时还只是在学术界进行探讨的一种新的网络体系结构。但随后几年发展很快,不少企业相继采用。其中最成功的案例就是谷歌建于2010~2012年的数据中心网络B4。几年来网络B4运行的结果证明,基于SDN的专用广域网确实可以大大提高网络带宽利用率,网络运行更加稳定,管理更加高效简化,运行费用也明显降低了。目前,SDN已经引起人们的密切关注。

在 SDN 中,数据层面中的交换机是由控制层面进行控制的,下图表明这种控制是通过协议OpenFlow来实现的。。协议penFlow 是一个得到高度认可的标准,在讨论 SDN 时往往与 OpenFlow 一起讨论。因此,有人会误认为SDN就是 OpenFlow。其实这二者有着很大的区别。SDN不是协议,更不是一种产品。

SDN是一个体系结构,是一种设计、构建和管理网络的新方法或新概念,其要点就是把网络的控制层面和数据层面分离,而让控制层面利用软件来控制数据层面中的许多设备。

可以把协议penFow看成是在SDN体系结构中控制层面和数据层面之间的通信接口,它使得控制层面的控制器可以对数据层面中的物理设备或虚拟设备,进行直接访问和操纵。

这种控制在逻辑上是集中式的,是基于流的控制
在这里插入图片描述
但请注意,SDN并未规定必须使用OpenFlow,只不过是大部分SDN 的产品采用了OpenFlow 作为其控制层面与数据层面的接口。

传统意义上的数据层面的任务就是根据转发表来转发分组。可以再把“转发”细分一下。实际上这里有两个步骤。第一个步骤是“匹配”,即查找转发表中的网络前缀,进行最长前缀匹配。第二个步骤是“动作”,即把分组从指明的接口转发出去。这种“匹配+动作”的转发方式在SDN 中得到了扩充,增加了新的内容,变成了广义的转发。这种广义的转发使得“匹配+动作”有了新的内容。

在 SDN 的广义转发中,“匹配”能够对不同层次(链路层、网络层、运输层)的首部中的字段进行匹配,而“动作”则不仅是转发分组,而且可以把具有同样目的地址的分组从不同的接口转发出去(为了负载均衡)。还可以重写IP首部(如同在NAT路由器中的地址转换),或者可以人为地阻挡或丢弃一些分组(如同在防火墙中一样)。请注意这里为了讨论问题的方便,在讨论SDN的问题时,不管在哪一层传送的数据单元,都称为分组。

这样,在SDN 的广义转发中,这种完成“匹配+动作”的设备,就不应当称为路由器了,而是叫作“分组交换机”或“OpenFlow 交换机”,或更简单些就称为“交换机”。这种交换机并不局限在网络层工作(例如,可使用L2/L3 交换机)。在SDN中,取代传统转发表的是“流表”(flow table)。因此,流表就是“匹配+动作”的转发表。

2、原理

下图强调了一个重要概念:OpenFlow 交换机中的流表是由远程控制器来管理的,而远程控制器通过一个安全信道(见7.6.2节),使用OpenFlow协议来管理 OpenFlow 交换机中的流表。这样,OpenFlow 就有了双重意义。一方面,OpenFlow是SDN远程控制器与网络设备之间的通信协议;另一方面,OpenFlow又是网络交换功能的逻辑结构的规约。我们还应注意到,尽管网络设备可以由不同厂商来生产,同时也可以使用在不同类型的网络中,但从SDN远程控制器看到的,则是统一的逻辑交换功能。

我们在之前介绍IPv6首部的流标号时,曾初步地提到“流”的概念。在 OpenFlow的各种文档中都没有“流”的定义。其实从OpenFlow交换机的角度来看,一个流就是穿过网络的一种分组序列,而在此序列中的分组都共享分组首部某些字段的值。例如,某个流可以是具有相同源卫P地址和目的地址的所有分组。

下图给出了OpenFlow 10版本的流表和分组的首部匹配字段(这是最简单的一个版本,便于用来讲解工作原理)[KURO17]。每个OpenFlow交换机必须有一个或一个以上的流表。每一个流表可以包括很多行,即多个流表项(low entry),它包括三个字段,即首部字段值(又称为匹配字段)、计数器和动作。下面解释这三个字段的意思。
在这里插入图片描述

  • 首部字段值:这是一组字段,用来使入分组(incoming packet)的对应首部与之相匹配,因此又称为匹配字段。匹配不上的分组就被丢弃,或发送到远程控制器做更多的处理。上图所示的匹配字段有 11个项日涉及三个层次的首部。这就是说,OpenFlow 的匹配抽象与我们以前讲过的分层的原则明显不同。在 OpenFlow 交换机中,既可以处理链路层的帧,也可以处理网络层的IP分组和运输层的报文。
  • 计数器:这是一组计数器,可包括已经与该表项匹配的分组数量,以及从该表项上次更新到现在经历的时间。
  • 动作:这是一组动作,例如,当分组匹配某个流表项时把分组转发到指明的端口,或丢弃该分组,或把分组进行复制后再从多个端口转发出去,或重写分组的首部字段(第二、三和四层的首部字段)。

3、案例

1)普通

为了更好地理解流表的匹配与动作,我们讨论下面几个例子。下图给出的简单网络有6台主机(H1~H6),其IP地址标注在主机旁边,还有3台分组交换机(S1~S3)。每台交换机有4个端口(即接口,编号为1至4)。还有1台OpenFlow 控制器来控制这些分组交换机的“匹配+动作”。
在这里插入图片描述
我们设定的转发规则是:来自H5或H6发往H3或H4的分组。都先从S3转发到S1,然后再从 S1转发到 S2,但不通过 S3到S2的链路。根据这个转发规则,可以得出交换机S3的流表项是:
在这里插入图片描述
这里使用了通配符*。例如,地址 10.3.*.*,表明这样的地址将匹配前16位为10.3 的任何地址。“转发(3)”表明分组转发出去端口是交换机编号为3的端口。

交换机S1的流表项(这里和后面都省略了计数器字段)是:
在这里插入图片描述
和 S,的流表项相比,这里多了“入端口 =1”。表明“匹配”仅限于从编号1的端口进入交换机S1的分组。

交换机S2的流表项是:
在这里插入图片描述

2)负载均衡的例子

在这里插入图片描述

3)防火墙的例子

在这里插入图片描述
虽然上面举出的例子非常简单,但已经可以看出这种广义转发的多样性和灵活性。广义转发的优点是显而易见的。

二、控制层面

1、特征

从下图可以反映出 SDN 体系结构的四个关键特征:
在这里插入图片描述

  1. 基于流的转发。SDN 控制的交换机分布在数据层面中,而分组的转发可以基于网络层运输层和链路层协议数据单元中的首部字段值进行。这和传统的路由器仅仅根据IP分组的目的地址进行转发,有着很大的区别。SDN的转发规则都精确规定在交换机中的流表中。所有交换机中的流表项,都是由SDN 控制器进行计算、管理和安装的。
  2. 数据层面与控制层面分离。在许多英语文献中常使用“decouple”一词,相应的中文就是“去耦”。在传统的转发设备路由器中,其数据层面与控制层面都处在同一个设备中,因此二者耦合得非常紧密。但在SDN 中,则把这两个层面去耦合,使二者不在同一个设备中。这点在图 4-73中看得很清楚。数据层面有许多相对简单但快速的网络交换机。这些交换机在其流表中执行“匹配+动作”的规则。而控制层面则由若干服务器和相应的软件组成,这些服务器和软件决定并管理这些交换机中的流表。
  3. 位于数据层面交换机之外的网络控制功能。SDN 中的控制层面是用软件实现的,而且软件是处在不同的机器上,并且可能还远离这些网络交换机。从下图可以看出,SDN 控制层面包含两个构件,一个是SDN控制器(也就是网络操作系统),另一个由若干个网络控制应用程序组成。SDN 控制器维护准确的网络状态信息(例如,远程链路、交换机和主机的状态),把这些信息提供给运行在控制层面的各种控制应用程序,以及提供一些方法,使得这些应用程序能够对底层的许多网络设备进行监视、编程和控制。需要注意的是,在下图的SDN 控制器中只画了一个服务器,但这只是强调在逻辑上是集中控制的。实际上,在控制层面中总是使用多个分散的服务器协调地工作,以便实现可扩展性和高可用性。
  4. 可编程的网络。通过在控制层面的一些网络控制应用程序,使整个网络成为可编程的。这些应用程序相当于 SDN 控制层面中的“大脑”,SDN 控制器使用这些应用程序,在这些网络设备中指明和控制数据层面。例如,路由选择网络控制应用程序能够确定在源点和终点之间的端到端路径(这需要执行某种算法,也需要使用由SDN 控制器维护的节点状态和链路状态信息)。网络应用程序还可以进行接入控制,即决定哪些分组在进入某个交换机时就必须被阻挡住。此外,网络应用程序在转发分组时还可以执行负载均衡的措施。

2、层次

从以上的简单例子可以看出,SDN 把网络的许多功能都分散开了。数据层面的交换机SDN 控制器以及许多网络控制应用程序,这些都可以是分开的实体,并且可以由不同的厂商和机构来提供。这就和传统网络截然不同。在传统网络中,路由器或交换机是由单独的厂商提供的,其控制层面和数据层面以及协议的实现,都是垂直集成在一个机器里面的。目前出现的这种变化,有点像当初计算机的演变。早期的大型计算机,从硬件到软件以及应用程序,都是由一个单独的厂家生产完成的。但后来演变到现在的个人电脑,其硬件机身、操作系统以及上层的应用程序,可以由多个厂家分别生产和提供,这样的系统就变得更加开放,其功能也更加丰富了。SDN 也可能有这样的发展结果。

下图还给出了 SDN 控制器和下面数据层面的受控设备的通信接口,即南向API,以及 SDN 控制器和上面网络控制应用程序的接口,即北向API。SDN 控制器是最复杂的,它还可以划分为如下图所示的三个层次。
在这里插入图片描述
最下面的一层是通信层,其任务是完成SDN 控制器与受控的网络设备之间的通信。显然,要完成这样的通信,我们必须有一个协议,用来在SDN控制器与这些设备之间传送信息。此外,这些设备还必须能够向SDN控制器传送在本地观察到的事件(例如,用一个报文指示某条链路正常工作或出了故障断开了,或指示某个设备刚刚接入到网络中,或者某种信号突然出现可以表示某个设备已加电并可以工作)。这样就可保证 SDN 控制器掌握了网络状态的最新视图。在通信层的协议有前面已经提到过的OpenFlow,以及后面在第6章应用层要学习的协议 SNMP,等等。通信层与数据层面的接口叫作南向API接口。现有用SDN控制器概念制作的商品基本上(当然不是全部)都是采用协议openFlow。

在中间的一层是网络范围的状态管理层。SDN 控制层面若要做出任何最终的控制决定(例如,在所有的交换机中配置流表以便进行端到端的转发,或实现负载均衡,或实现某种特殊的防火墙能力),就需要让控制器掌握全网的主机、链路、交换机,以及其他受SDN 控制的设备。交换机的流表中包含有计数器,而网络应用程序需要使用这些计数器的值。因此这些计数器的值对网络应用程序来说也必须是可用的。由于控制层面的最终目的是确定各种被控设备的流表,因此控制器还需要维护这些流表的副本。所有上述这些信息构成由SDN控制器维护的网络范围状态。

最上面一层是到网络控制应用程序层的接口。SDN控制器与网络控制应用程序的交都要通过北接口。这个API接口允许网络控制应用程序对状态管理层里面的网络状态和流表进行读写操作。网络控制应用程序事先已进行了注册。当状态变化的事件出现时,网络控制应用程序把得到的网络事件进行通告,并采取相应的动作,例如,计算新的最低开销的路径。这一层可以提供不同类型的API。例如,REST风格的API目前使用得较多。图中的REST (REpresentational State Transfer)即表述性状态传递,是一种针对网络应用的设计和开发方法[W-REST]。图中的Intent 是对要进行的操作的一种抽象描述[W-INTENT],可用它在组件之间传递数据。

目前已经出现了一些开放源代码控制器,或简称为开源控制器(Open Source Controller),最有代表性的就是 OpenDaylight和ONOS。这里就不再进行讨论了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/597455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何全面规避医疗数据安全风险?“一中心三大管控域”打开新思路!

作为医院的核心基础设施,数据库已然演变成了一种具有“资产”属性的重要元素。而随着不断变化的医疗业务场景和日趋严格的合规性要求,如何让安全全方位贯穿医疗数据的生命周期,是一项系统性的建设工作,难点诸多。 基于多年的数据…

商标不做检索分析,直接申请通过率很低!

今天有个网友拿到驳回通知书找到普推知产老杨,让分析驳回通过率如何,他主要两个文字商标和两个图形商标,文字商标都是两个字的,两个字的商标名称基本都有相同或高近,引用了好几个高度近似,直接做驳回复审通…

设备自动化技术商务咨询

​南京纳恩自动化科技有限公司,成立于 2010年。高新技术企业、软件企业,致力于为客户提供最佳的继电保护、电力监控、智慧用电、工业自动化系统以及基于大数据、云系统的产品解决方案和服务。 自动化行业深耕多年,成就丰富的电力自动化行业经…

Ansible 自动化运维工具 - 了解和模块应用

目录 一. Ansible 的相关知识 1.1 Ansible 工具的简介 1.2 Ansible的四大组件 1.3 运维自动化工具 1.4 Ansible 和其它自动化运维工具对比 1.5 Ansible 的优缺点 二. Ansible 环境安装部署 2.1 管理端安装 ansible 2.2 配置主机清单 三. ansible 命令行模块 3.1 comm…

【Unity动画系统】动画层级(Animation Layer)讲解与使用

如何使用Unity的Animation Layer和Avater Mask把多个动画组合使用 想让玩家持枪行走,但是手里只有行走和持枪站立的动作。 Unity中最方便的解决办法就是使用动画层级animation layer以及替身蒙版avatar mask。 创建一个动画层级 Weight表示权重,0的话则…

Linux安装Python3.9环境

大家好,今天给大家分享一下在Linux系统中安装Python3环境,Linux系统中自带的Python2尽量不要删除,删除后可能会导致系统出现问题。 关于Linux常用命令,可以参考:作为测试人员的Linux常用命令 一、下载Python3安装包 …

Unity射击游戏开发教程:(11)制造敌人爆炸

增加爆炸效果 爆炸一切都变得更好!尤其是当你消灭敌人时。在这篇文章中,我将讨论如何在敌人被击中时为其添加爆炸动画。 在敌人的预制件中,您将需要创建一个新的动画。查看控制动画的动画器,默认情况下将从进入动画到敌人爆炸动画。这意味着,一旦敌人被实例化,敌人爆炸…

基于Opencv的车牌识别系统(毕业设计可用)

系统架构 图像采集:首先,通过摄像头等设备捕捉车辆图像。图像质量直接影响后续处理的准确性,因此高质量的图像采集是基础。 预处理:对获取的原始图像进行预处理,包括灰度化、降噪、对比度增强和边缘检测等。这些操作旨…

【Oracle直播课】5月19日Oracle 19c OCM认证大师课 (附课件预览)

Oracle 19c OCM认证大师培训 - 课程体系 - 云贝教育 (yunbee.net) 部分课件预览 OCM部分课件预览 Oracle Database 19c Certified Master Exam (OCM) 认证大师 25 天 / 150课时 什么是Oracle 19c OCM? Oracle Certified Master (OCM)是Oracle认证大师,…

汇编语言——比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示MATCH, 不相同则显示NO MATCH

CMPS 串比较指令: CMPS SRC, DST CMPSB (字节) CMPSW (字) 执行操作: ((SI)) - ((DI)) 根据比较结果置条件标志位:相等 ZF1;不等 ZF0 字节操作:(SI)←(SI)1, (DI)←(DI…

VMware虚拟网卡网络适配器出现黄色感叹号

问题发生:VMware在使用Ubuntu的过程中突然卡死,强制关闭开启后就发生了网络无法连接 找到电脑的设备管理发现VMware的适配器出现黄色感叹号 解决方法: 下载软件ccleaner 扫描问题,懒得去找就修复了所有的问题 最后发现适配器…

Ansible简介版

目录 架构 环境部署 一、Ansible安装部署 1.yum安装Ansible 2.修改主机清单文件 3.配置密钥对验证 4.ansible-doc 5.看被控主机 二、常用模块 1.Command模块 2.Shell模块 3.Cron模块 1.添加 2.删除 4.User模块 5.Group模块 1.创建组 ​编辑 ​编辑 ​编辑…

【redis】redis持久化分析

目录 持久化Redis持久化redis持久化的方式持久化策略的设置1. RDB(快照)fork(多进程)RDB配置触发RDB备份自动备份手动执行命令备份(save | bgsave)flushall命令主从同步触发动态停止RDB RDB 文件恢复验证 RDB 文件是否被加载 RDB …

c# - - - winform程序四个角添加圆角效果

winform 给窗体四个角添加圆角效果。 在窗体 Load 事件中添加如下代码: // 创建了一个圆角矩形的路径,并将其设置为控件的形状 System.Drawing.Drawing2D.GraphicsPath path new System.Drawing.Drawing2D.GraphicsPath(); int radius 30; path.AddAr…

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记13 - STM32的SDIO学习5 - 卡的轮询读写擦

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记13 - STM32的SDIO学习5 - 卡的轮询读写擦 一、前情提要二、目标三、技术方案3.1 读写擦的操作3.1.1 读卡操作3.1.2 写卡操作3.1.3 擦除操作 3.2 一些技术点3.2.1 轮询标志位的选择不唯一3.2.2 写和擦的卡状态查询3.2.3 写的速度 四、代…

跟TED演讲学英文:What moral decisions should driverless cars make by Iyad Rahwan

What moral decisions should driverless cars make? Link: https://www.ted.com/talks/iyad_rahwan_what_moral_decisions_should_driverless_cars_make Speaker: Iyad Rahwan Date: September 2016 文章目录 What moral decisions should driverless cars make?Introduct…

【笔试训练】day20

1.经此一役小红所向无敌 默认小红血量无限。直接计算出经过几轮攻击后,会出现人员伤亡。 对于对立来说他最多承受n轮光的攻击,对于光来说,他最多承受立得m轮攻击。 所以在经过min(n,m)轮回合之后,他们两个人至少死一个。活下来的…

已解决Error: Could Not Find a Version That Satisfies the Requirement XXX

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

大数据面试题(十):Hive的高频面试考点(二)

文章目录 Hive的高频面试考点 一、请说明Hive中 sort by ,order by ,cluster by ,distribute by各代表什么意思

Java多线程优化接口响应

同步查询 Override public MallOrder getById1(Long id) {long startTime System.currentTimeMillis();MallOrder mallOrder new MallOrder();mallOrder.setId(1L);mallOrder.setShopId(3L);mallOrder.setCustomerId(78L);mallOrder.setGoodsId(664L);mallOrder.setOrderTime…
最新文章