【计算机网络详解】——软件定义网络SDN(学习笔记)

目录

  • 🕒 1. 概念
  • 🕒 2. OpenFlow 协议

🕒 1. 概念

  • 软件定义网络(Software Defined Network,SDN)的概念最早由斯坦福大学的Nick McKeown教授于2009年提出。
  • SDN最初只是学术界讨论的一种新型网络体系结构
  • SDN成功案例:谷歌于2010~2012年间建立的数据中心网络B4。
  • SDN是当前网络领域最热门和最具发展前途的技术之一,成为近年来的研究热点。

路由器的功能:

  • 为主机间的通信提供转发服务
  • 路由选择

路由器之间传送的信息:

  • 主机间的分组
  • 路由信息

在这里插入图片描述

  • 在SDN体系结构中,路由器中的路由软件都不存在了。因此,路由器之间不再交换路由信息。
  • 在控制层面中,有一个在逻辑上集中远程控制器
  • 逻辑上集中的远程控制器在物理上可由不同地点的多个服务器组成
  • 远程控制器掌握各主机和整个网络的状态。
  • 远程控制器能够为每一个分组计算出最佳的路由。
  • 远程控制器为每一个路由器生成其正确的转发表。
  • SDN这种新型网络体系结构的核心思想把网络的控制层面和数据层面分离,而让控制层面利用软件来控制数据层面中的许多设备

在这里插入图片描述

🕒 2. OpenFlow 协议

  • OpenFlow协议是一个得到高度认可的标准,在讨论SDN时往往与OpenFlow一起讨论。
  • OpenFlow协议可被看成是SDN体系结构中控制层面与数据层面之间的通信接口
  • OpenFlow协议使得控制层面的控制器可以对数据层面中的物理设备进行直接访问和控制。
  • OpenFlow协议的技术规范由非营利性的产业联盟开放网络基金会(Open Networking Foundation,ONF)负责制定。
    • ONF的任务是致力于SDN的发展和标准化。
    • SDN并未规定必须使用OpenFlow,只不过大部分SDN产品采用了OpenFlow作为其控制层面与数据层面的通信接口。
    • OpenFlow从2009年底发表的1.0版开始,每年都被更新,历经12次更新,到2015年3月发布了1.5.1版,目前较为成熟的是1.3版本。

🔎 SDN介绍

在这里插入图片描述

传统意义上的数据层面的任务:根据转发表转发分组

转发分组分为以下两个步骤:

  • 进行“匹配”:查找转发表中的网络前缀,进行最长前缀匹配。
  • 执行“动作”:把分组从匹配结果指明的接口转发出去。

在这里插入图片描述

SDN的广义转发分为以下两个步骤:

  • 进行“匹配”:能够对网络体系结构中各层(数据链路层、网络层、运输层)首部中的字段进行匹配。
  • 执行“动作”:不仅转发分组,还可以负载均衡、重写IP首部(类似NAT路由器中的地址转换)、人为地阻挡或丢弃一些分组(类似防火墙一样)。

在SDN的广义转发中,完成“匹配+动作”的设备并不局限在网络层工作,因此不再称为路由器,而称为“OpenFlow交换机”或“分组交换机”,或更简单地称为“交换机”。

相应的,在SDN中取代传统路由器中转发表的是“流表(Flow Table)”。

  • 一个流就是穿过网络的一种分组序列,而在此序列中的每个分组都共享分组首部某些字段的值。例如,某个流可以是具有相同源IP地址和目的IP地址的一连串分组。
  • OpenFlow交换机中的流表是由SDN远程控制器来管理的。SDN远程控制器通过一个安全信道,使用OpenFlow协议来管理OpenFlow交换机中的流表。
  • 网络设备可以由不同厂商来生产,可以使用在不同类型的网络中。
  • 从SDN远程控制器看到的,是统一的逻辑交换功能。

在这里插入图片描述

  • 每个OpenFlow交换机必须有一个或多个流表

  • 每一个流表可以包含多个流表项

  • 每个流表项包含三个字段:首部字段值(或称匹配字段)、计数器动作
    在这里插入图片描述

  • 首部字段值字段包含有一组字段,用来使入分组(Incoming Packet)的对应首部与之匹配,因此又称为匹配字段。匹配不上的分组就被丢弃,或被发送到SDN远程控制器做更多的处理。

  • 在OpenFlow交换机中,既可以处理数据链路层的帧,也可以处理网际层的IP数据报,还可以处理运输层的TCP或UDP报文

  • 计数器字段是一组计数器:

    • 记录已经与该流表项匹配的分组数量的计数器;
    • 记录该流表项上次更新到现在经历时间的计数器。
  • 动作字段是一组动作,当分组匹配某个流表项时,执行该流表项中动作字段指明的以下某个或多个动作:

    • 把分组转发到指明的端口
    • 丢弃分组
    • 把分组进行复制后再从多个端口转发出去
    • 重写分组的首部字段(包括数据链路层、网际层以及运输层的首部)。

【举例1】:简单转发
在这里插入图片描述
在这里插入图片描述
【举例2】:负载均衡
在这里插入图片描述

【举例3】:防火墙

在这里插入图片描述
SDN体系结构及其四个关键特征:

  • 基于流的转发
  • 数据层面与控制层面分离
  • 位于数据层面分组交换机之外的网络控制功能
  • 可编程的网络

在这里插入图片描述
SDN控制器 :
在这里插入图片描述

开源SDN控制器:
在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美团动态线程池实践思路,开源了

使用线程池 ThreadPoolExecutor 过程中你是否有以下痛点呢? 1.代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 2.凭经验设置参数值,上线后发现需要调整,改代码重启服务,非常麻烦 3.线…

MySQL8.0数据库开窗函数

简介 数据库开窗函数是一种在SQL中使用的函数,它可以用来对结果集中的数据进行分组和排序,以便更好地分析和处理数据。开窗函数与聚合函数不同,它不会将多行数据聚合成一行,而是保留每一行数据,并对其进行分组和排序。…

音乐考级系统python+mysql

目录 废话不多说下面看严谨版不带web界面的: 总结: 写这个博客呢主要是因为之前学校有个简单的课设要做,想着白嫖一个交差的,但是找了一圈没找到合适的能拿来用的,我就下班用了两晚手搓了一个代码。 具体的建表语句…

【微服务】Nacos 注册中心的设计原理

文章目录 前言一、数据模型二、数据一致性三、负载均衡四、健康检查五、性能与容量六、易用性七、集群扩展性八、用户扩展性结尾 前言 服务发现是⼀个古老的话题,当应用开始脱离单机运行和访问时,服务发现就诞生了。目前的网络架构是每个主机都有⼀个独…

今日份分享:三个电脑mp3转换器推荐

有一个音乐爱好者叫小艾。她对音乐充满热爱,每天都会用耳机沉浸在动听的旋律中。然而,她最近遇到了一个问题:她手头有一些喜欢的音乐文件,但格式却是不支持她的音乐播放器。这让她感到非常困扰,因为她希望随时随地欣赏…

Qt Widget提升为QChartView绘制曲线

1、在工程文件"*.pro"中添加"charts"组件 在工程文件"*.pro"中添加"charts"组件,同时在工程文件添加qcustomplot类。 QT core gui printsupport charts下载qcustomplot类。 网址:https://www.qcustom…

数据库监控与调优【十九】—— SQL调优实战

SQL调优实战 SQL调优实战1-常规调优 项目建表语句 -- ---------------------------- -- Table structure for carousel -- ---------------------------- DROP TABLE IF EXISTS carousel; CREATE TABLE carousel (id varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_09…

2023年上半年部分团队的总结

(目前还是草稿版本) 写作,慢思考: 软件团队每天有繁忙的工作,有很多待办事项,会议,口头交流,线上的 bug 要处理,报表要生成和解释… … 一个月过去了,正想总…

【YOLO】目标识别模型的导出和opencv部署

文章目录 0 前期教程1 什么是模型部署2 怎么部署 0 前期教程 【YOLO】朴实无华的yolov5环境配置 【YOLO】yolov5训练自己的数据集 1 什么是模型部署 前期教程当中,介绍了yolov5环境的搭建以及如何利用yolov5进行模型训练和测试,虽然能够实现图片或视频…

同一 tomcat 不同项目 session 共享实现

说明 这里仅讨论 同一个tomcat,部署了两个工程(两个war包)。不涉及不同tomcat,不涉及集群 背景 tomcat中的工程A包含用户登录、退出、权限控制等功能;工程B包含业务功能接口。工程A将用户登录信息加密响应给前端,前…

【树莓派】解密树莓派Python项目中神秘的导入错误

文章目录 问题导入python文件目录分析解决方案 问题导入 小编在使用树莓派编写python项目时出现了以下两种错误: ModuleNotFoundError : No module named Motor from ..hardware.motor import Motor portError: attempted relative import with no known parent p…

Python 进阶(三):Python使用ORM框架SQLAlchemy操作Oracle数据库

Python使用ORM框架SQLAlchemy操作Oracle数据库 前言1. 安装Oracle Instant Client2. 安装依赖库3. 导入模块并创建引擎4. 操作oracle数据库4.1 新增数据4.2 查询数据4.3 更新数据4.4 删除数据 前言 要详细连接Oracle数据库并使用SQLAlchemy进行操作,按照以下步骤进…