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

news2024/11/15 11:25:51

目录

  • 🕒 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.coloradmin.cn/o/675339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JAVA实现的简易学生信息管理系统(附源码)

一、前言 最近在学习JAVA,这几天跟着网上的视频学完基础知识之后,做了一个学生信息管理系统,写的比较普通,没太大亮点,希望可以给初学者一些参考经验,另外,如有不恰当的地方还请各位指正&am…

论文解读:End-to-End Object Detection with Transformers

发表时间:2020 论文地址:https://arxiv.org/pdf/2005.12872.pdf 项目地址:https://github.com/facebookresearch/detr 提出了一种将对象检测视为集合预测问题的新方法。我们的方法简化了检测流程,有效地消除了许多手工设计的组件…

解决跨域问题的两种方案

说明:跨域是指,在A向B发送请求时,如果A和B的协议、端口号和域名有一个不相同。跨域问题是指,浏览器出于安全,会阻止跨域的异步请求(如Ajax),而在分布式的开发环境下,跨域…

ChatGPT在媒体与娱乐领域的沉浸式场景:虚拟主持人和创意助手的新应用探索

第一章:引言 在当今数字化时代,人工智能技术在媒体与娱乐领域的应用日益广泛。ChatGPT作为一种先进的自然语言处理模型,具备强大的对话生成能力和创造力,为媒体与娱乐产业带来了新的创意和可能性。本文将探讨ChatGPT在媒体与娱乐…

学了那么长时间的编程,C语言的各种操作符都搞不懂?点开这里有详细的介绍—>

目录 前言 一、原码、反码、补码的基础概念 1.原码 2.反码 3.补码 二、原码、反码、补码的计算方法 1.原码 2.反码 3.补码 三、算术操作符 四、移位操作符 1. 左移操作符 移位规则: 2. 右移操作符 移位规则: (1) …

MySQL 中Relay Log打满磁盘问题的排查方案

MySQL 中Relay Log打满磁盘问题的排查方案 引言: MySQL Relay Log(中继日志)是MySQL复制过程中的一个重要组件,它用于将主数据库的二进制日志事件传递给从数据库。然而,当中继日志不断增长并最终占满磁盘空间时&…

【openGauss数据库审计项配置审计日志维护】--略有小成

【openGauss数据库审计项配置&审计日志维护】--略有小成 🔻 一、openGauss数据库审计🔰 1.1 关于openGauss审计功能🔰 1.2 openGauss审计功能开启🔰 1.3 配置具体的审计项 🔻 二、查看审计结果🔻 三、维…

day13_类中成员之一:构造器

由来 我们发现我们new完对象时,所有成员变量都是默认值,如果我们需要赋别的值,需要挨个为它们再赋值,太麻烦了。我们能不能在new对象时,直接为当前对象的某个或所有成员变量直接赋值呢。可以,Java给我们提…

详解c++---map和set的封装

目录标题 前言红黑树的基本代码map和set的封装红黑树迭代器红黑树迭代器- -begin和end函数代码测试const迭代器方括号的实现 前言 通过之前的学习我们知道set容器中存储的数据是k,map容器中存储的数据是k和v,但是这两个容器底层都是通过红黑树来进行实现…

blfs:为lfs虚拟机增加桌面01

vmware中克隆一份lfs,扩大硬盘分区再操作。 1、硬盘拓展容量,分区挂载到/home(已有的大小在后面编译桌面系统会捉襟见肘) 使用fdisk进行分区 fdisk /dev/sda 执行p w分区并保存 mkfs -v -t ext4 /dev/sda4 转ext4格式 让/…

uniapp中使用mixins(混入)

mixins 选项接收一个混入对象的数组。这些混入对象可以像正常的实例对象一样包含实例选项,这些选项将会被合并到最终的选项中,使用的是和 Vue.extend() 一样的选项合并逻辑。也就是说,如果你的混入包含一个 created 钩子,而创建组…

如何使用ffmpeg将BDMV(m2ts)转换成MKV、MP4等其他格式的文件

BDMV 是蓝光碟使用的格式。这种格式没有办法使用播放软件播放,必须要用硬盘播放器,也就是专门的设备。但是最经典的 ffmpeg 可以将其转换成其他格式,并且保持相同的码率和清晰度,这样就可以很方便的查看了。 本文使用 macOS 进行…

加速度计的原理与应用

什么是加速度计 加速度计是一种传感器,可以测量物体所受加速的大小和方向。 加速度计的工作原理 传统加速度计利用质量和弹簧的相互作用来感应加速度,当物体收到加速度时,弹簧会发生变形,通过衡量这种变形来测量加速度的大小。 …

postgresql | 数据库| 生成2000W条的简单测试表

前言: 数据库学习的过程中,很可能需要数据量比较大的表来进行模拟测试,那么,测试表的创建需要遵循的是贴近实际的生产环境,尽量的模仿实际的生产环境。 因此,学习数据库的时候,快速的创建一个…

chatgpt赋能python:Python求单词长度:基于字符串操作的简单实现

Python求单词长度:基于字符串操作的简单实现 Python作为一种广泛应用于各个领域的编程语言,其强大的字符串操作功能在文本处理中经常被使用。本篇文章将介绍基于Python的字符串操作实现单词长度的方法。 什么是单词长度 在文本处理中,单词…

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

目录 一、NoSQL 和 SQL 区别二、认识 Redis三、Redis 的数据结构介绍四、Redis 通用命令五、String 类型六、key 的格式七、Hash(散列)类型八、List 类型九、Set 类型十、SortedSet 类型(可排序) 一、NoSQL 和 SQL 区别 二、认识 …

macOS Sonoma编译OpenCV源码输出IOS平台库

1.macOS下载并编译OpenCV源码: 克隆源码: 主仓: git clone https://github.com/opencv/opencv.git 扩展仓: git clone https://github.com/opencv/opencv_contrib.git 编译xcode源码需要CMake与XCode命令行工具 确认已安装CMake 确认已安装XCode 安装xcode command l…

UNZIP

目录 搭建环境 做题开始 通过ln直接创建 通过mkdir 后进行ln 搭建环境 这次是在自己的靶机环境里面搭建 cd /var/www/html index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</ti…

罗技k380键盘教程

在智能手机和平板电脑上享受台式电脑般舒适便捷的输入体验。罗技蓝牙™ 多设备键盘 K380 是一款小巧独特的键盘&#xff0c;让您在家中任何地方都能使用个人设备进行沟通和创作。 借助便捷的易于切换™ 按钮&#xff0c;可以通过蓝牙™ 无线技术同时连接最多三台设备&#xff…

【LeetCode】动态规划 刷题训练(一)

文章目录 面试题 08.01. 三步问题题目解析状态转移方程完整代码 746. 使用最小花费爬楼梯题目解析状态转移方程完整代码 91. 解码方法题目解析状态转移方程情况1&#xff1a;让i位置的数&#xff0c;单独去解码情况2&#xff1a;让i位置的数 和i-1位置的数 结合 一起去解码 完整…