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

文章目录

    • 软件定义网络 SDN
      • 远程控制器
      • OpenFlow协议
      • SDN 广义转发
        • 流表
        • 简单转发
        • 负载均衡
        • 防火墙
      • SDN 控制器

软件定义网络 SDN

软件定义网络(Software Defined Networking,SDN)是一种新兴的网络架构,旨在通过网络控制与数据转发的分离,实现网络的集中管理和灵活性。

SDN 是由美国斯坦福大学 Clean Slate 课题研究组提出的一种新型网络创新架构,是网络虚拟化的一种实现方式。其起源可追溯到 2006 年斯坦福大学的 Clean Slate 研究课题,而正式提出 SDN 概念则是在 2009 年。

  • SDN 最初只是学术界讨论的一种新型网络体系结构
  • SDN 成功案例:谷歌于 2010~2012 年间建立的数据中心网络 B4。
  • SDN 是当前网络领域最热门和最具发展前途的技术之一,成为近年来的研究热点

远程控制器

现在的路由器一般都基于硬件进行转发,单个分组的转发时间为纳秒数量级

![[远程控制器.png]]

在 SDN 体系结构中,路由器中的路由软件都不存在了。因此,路由器之间不再交换路由信息。在控制层面中,有一个在逻辑上集中的远程控制器

逻辑上集中的远程控制器在物理上可由不同地点的多个服务器组成。远程控制器掌握各主机和整个网络的状态,能够为每一个分组计算出最佳的路由,并为每一个路由器生成其正确的转发表。

![[OpenFlow协议.png]]

SDN 这种新型网络体系结构的核心思想:把网络的控制层面和数据层面分离,而让控制层面利用软件来控制数据层面中的许多设备

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 广义转发

传统意义上的数据层面的任务:根据转发表转发分组。转发分组分为以下两个步骤:

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

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

  1. 进行“匹配”:能够对网络体系结构中各层(数据链路层、网络层、运输层)首部中的字段进行匹配。

  2. 执行“动作”:不仅转发分组,还可以负载均衡重写IP首部(类似NAT路由器中的地址转换),人为地阻挡或丢弃一些分组(类似防火墙一样)。

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

流表

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

一个流就是穿过网络的一种分组序列,而在此序列中的每个分组都共享分组首部某些字段的值。例如某个流可以是具有相同源IP地址和目的IP地址的一连串分组。

OpenFlow 交换机中的流表是由SDN远程控制器来管理的。SDN 远程控制器通过一个安全信道,使用 OpenFlow 协议来管理 OpenFlow 交换机中的流表。

网络设备可以由不同厂商来生产,可以使用在不同类型的网络中。从SDN远程控制器看到的,是统一的逻辑交换功能。

每个 OpenFlow 交换机必须有一个或多个流表,每一个流表可以包含多个流表项。每个流表项包含三个字段:首部字段值(或称匹配字段)计数器动作

![[OpenFlow流表.png]]

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

    ![[首部字段值字段.png]]

  • 计数器字段:是一组计数器,记录已经与该流表项匹配的分组数量的计数器,记录该流表项上次更新到现在经历时间的计数器。

  • 动作字段:是一组动作,当分组匹配某个充表项时,执行该流表项中动作字段指明动作:

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

在 SDN 架构下,控制平面(Controller)负责网络策略的制定和下发,而数据平面(Switches)则执行具体的流量转发操作。

![[简单转发.png]]

网络拓扑

  • 图中有三个 OpenFlow 交换机:S1、S2 和 S3。

  • S1 连接到 主机H1 (IP: 10.0.1.1) 和 H2 (IP: 10.0.1.2),并通过 端口1 和 2 分别连接到这两个主机。

  • S2连接到 主机H3 (IP: 10.0.2.3) 和 H4 (IP: 10.0.2.4),并通过 端口1 和 2 分别连接到这两个主机。

  • S3连接到 主机H5 (IP: 10.0.3.5) 和 H6 (IP: 10.0.3.6),并通过 端口1 和 2 分别连接到这两个主机。

  • S1、S2 和 S3 通过各自的 端口3 相互连接形成一个环形结构。

流表项配置:每个 OpenFlow 交换机都有一张流表,用于指导数据包如何转发。各交换机的流表项配置见图

数据包转发过程,假设从 H1 发送一个数据包给 H3:

  1. H1 -> S1: 当 H1 向 H3 发送数据包时,这个数据包首先到达 S1 的 端口1。

  2. S1 -> S3: 根据 S1 的流表项,所有来自子网 10.0.1.* 并前往子网 10.0.2.* 的数据包都会被转发到 端口3,因此这个数据包会被转发到 S3。

  3. S3 -> S2: 在 S3 上,由于数据包是从 端口1 进入并且 目标IP 地址属于子网 10.0.2.*,所以根据 S3 的流表项,这个数据包会被转发到 端口2,从而到达 S2。

  4. S2 -> H3: 最终,S2 接收到这个数据包后,根据其流表项,发现目标IP地址是 10.0.2.3,于是将数据包转发到 端口2,最终到达 H3。

这样就完成了一次从 H1 到 H3 的数据包转发过程。整个过程中,所有的决策都是基于预先设定好的流表项进行的,体现了 SDN 集中管理和控制的优点。

负载均衡

下图展示了在一个软件定义网络(SDN)环境中,如何通过负载均衡机制分发流量的过程。

![[负载均衡.png]]

具体步骤如下:

  1. 初始状态

    • 主机H1 发送数据包到 主机H3。
    • 数据包经过 S1 交换机,然后通过 S3 交换机到达 H3。
  2. 负载均衡启用

    • 控制器检测到流量增加或某种其他触发条件,决定启用负载均衡。
    • 控制器更新 S1 和 S2 交换机的流表,使得部分流量通过 S2 交换机分流。
  3. 负载均衡后的路径:来自 H1 的数据包现在有两种可能的路径到达 H3 :

    • 第一种路径仍然是通过 S1 -> S3 -> H3
    • 新增的第二种路径是通过 S1 -> S2 -> S3 -> H3

通过这种方式,控制器可以根据当前网络状况动态调整流量分配,以优化网络性能和资源利用率。这种灵活性是 SDN 的核心优势之一,因为它允许网络管理员更精细地控制和管理网络流量。

防火墙

下图展示了一个软件定义网络(SDN)环境中的防火墙设置,在这个例子中,防火墙规则应用于 OpenFlow 交换机 S2,限制了哪些数据包可以通过此交换机。

![[防火墙.png]]

在 S2 交换机上设置了防火墙规则,只允许接收来自于S1相连的主机所发送的数据包,无论这些数据包是从 S2 自己的哪个端口进来的。只有当数据包的 源IP 地址匹配 10.0.1.* 范围内的地址时,才会被转发到相应的端口(对于目的地为 10.0.2.3 的数据包转发到 端口2,对于目的地为 10.0.2.4 的数据包转发到 端口3)。

SDN 控制器

SDN 控制器作为中央控制点的角色,通过标准化的API与上下层进行通信,实现了网络的可编程性和灵活性。

这张图展示了 SDN 架构中各层的功能划分以及它们之间的交互方式,

![[SDN控制器.png]]

  1. 网络控制应用程序层:这一层包含多个网络控制应用模块,如路由选择、负载均衡、接入控制等。这些模块通过北向 API 与 SDN 控制器交互。

  2. 北向API:北向 API 是 SDN 控制器与网络控制应用程序层之间的接口。它支持 REST 风格的 API 和其他形式的通信协议,如 Intent。

  3. SDN控制器(网络操作系统):SDN 控制器是 SDN 架构的核心组件,负责网络的整体控制和管理。它通过南向API与底层的数据层面设备进行通信。

  4. 南向API:南向API 是 SDN 控制器与数据层面设备之间的接口。它使用标准协议(如OpenFlow)来控制和管理底层的网络设备。

  5. 数据层面:数据层面包含了实际的网络设备,如交换机和路由器。这些设备受到 SDN 控制器的控制,按照控制器的指示进行数据包的转发。

  6. 网络范围的状态管理层:这一层次负责收集和管理网络范围内的重要信息,如链路状态信息、主机信息、分组交换机信息等。

  7. 通信层:通信层负责 SDN 控制器与数据层面设备之间的通信,确保命令和反馈信息的正确传输。

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

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

相关文章

软件技术求职简历「优选篇」

【#软件技术简历#】一份精心撰写的简历是增加获得心仪职位的机会。那么,如何才能写出一份既全面又吸引人的软件技术简历呢?以下是幻主简历整理的软件技术简历「优选篇」,欢迎大家阅读收藏! 软件技术简历范文: 求职意向…

MQTT实用示例集:Air201版

今天贴出的是Air201版关于MQTT实用示例集,希望大家喜欢。 本示例教你通过使用脚本代码,对Air201模组进行MQTT链接操作。 操作例程包括: MQTT单链接 MQTT多链接 MQTT SSL不带证书链接 MQTT SSL带证书链接 大家可根据自身需求&#xff0c…

ip地址跟路由器有关吗?更换路由器ip地址会变吗

IP地址与路由器之间的关系是一个涉及计算机网络基础知识的话题。在深入探讨这个问题之前,我们首先需要理解IP地址的基本概念以及它在家庭和企业网络中的作用。 IP地址,即互联网协议地址,是分配给网络上的每个设备的数字标签,用于…

CSS综合练习

该综合练习就是为这个静态网页设置CSS样式&#xff0c;使其变成下面的模样 设置CSS样式前&#xff1a; 设置CSS样式后&#xff1a; 其骨架为&#xff1a; <body><div class"qwq"><img src"top.jpg" alt""></div><d…

神经网络基础--什么是神经网络?? 常用激活函数是什么???

前言 本专栏更新神经网络的一些基础知识&#xff1b;案例代码基于pytorch&#xff1b;欢迎收藏 关注&#xff0c; 本人将会持续更新。 神经网络 1、什么是神经网络 人工神经网络&#xff08; Artificial Neural Network&#xff0c; 简写为ANN&#xff09;也简称为神经网络…

《AI大模型对软件开发流程的重塑:变革、优势、挑战与展望》

《AI大模型对软件开发流程的重塑&#xff1a;变革、优势、挑战与展望》 一、传统软件开发流程与模式&#xff08;一&#xff09;传统软件开发流程&#xff08;二&#xff09;传统软件开发模式面临的问题&#xff08;一&#xff09;AI在软件开发中的应用场景&#xff08;二&…

初识C++(上) -- C++的关键字、命名空间、缺省参数以及函数的重载

目录 一、C的关键字&#xff08;C98&#xff09; 二、命名空间 1、命名冲突 2、命名空间 2.1 命名空间的定义 (1). 命名空间定义的例子以及命名空间的嵌套&#xff1a; (2). 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中&#xff1a; 2…

template和span标签的使用

一&#xff1a;template template是模板占位符&#xff0c;可帮助我们包裹元素&#xff0c;而且循环过程当中&#xff0c;template不会被渲染到页面。 <div>ABC</div> <template v-for"(item, index) in 5"><div>{{ index }}</div>&…

Oracle视频基础1.4.4练习

1.4.4 [dbs] 删干净上次创建的bbk ll rm -f *dbf ll rm -f spfilebbk.ora clear ll创建bbk的pfile&#xff0c;准备对应的目录 ll strings spfilewilson.ora | more strings spfilewilson.ora > initbbk.ora :%s/wilson/bbk :%s/*\.//g :wq ll vi initbbk.ora####### 创…

C# 选择导入文件的路径、导出文件的路径

通过C#代码&#xff0c;调出windows风格的文件选择对话框和存储文件对话框。提供界面来选择文件的位置&#xff0c;并将完整路径以字符串形式返回。 1、选择导入文件&#xff0c;获取其路径 C#通过这段代码将弹出一个文件选择对话框&#xff0c;允许用户选择一个文件&#xff…

孤岛的总面积(Dfs C#

卡码网 101题 力扣第 1254. 统计封闭岛屿的数目 也是一样的 差不多是一道题 101. 孤岛的总面积 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域&…

论文解读 P2《Knowledge Graphs Meet Multi-Modal Learning: A Comprehensive Survey》

论文解读系列文章目录 文章目录 论文解读系列文章目录一、图中公式什么意思&#xff1f;二、“早期的基于匹配和密集嵌入相似性的方法&#xff0c;逐步发展到可学习的检索技术和预训练语言模型&#xff08;PLM&#xff09;生成技术”什么意思&#xff1f;三、在从问题&#xff…

http请求响应详解

http介绍 http协议&#xff1a; Http”协议称为是“超文本传输协议”&#xff08;HTTP-Hypertext transfer protocol&#xff09;。它定义了浏览器怎么向万维网服务器请求万维网文档&#xff0c;以及服务器怎么样把文档传送给浏览器。 https协议&#xff1a; 传统的HTTP协议…

mysql5安全审计

安装插件 插件需要严格与数据库版本适配&#xff0c;不然安装过程中会出现问题 解压插件 cd 插件所在路径unzip audit-plugin-mysql-5.7-1.1.7-921-linux-x86_64.zip#查看mysql默认插件目录 mysql> SHOW GLOBAL VARIABLES LIKE plugin_dir;# 将插件移动到mysql默认插件目…

一文解秘Rust如何与Java互操作

本博客所有文章除特别声明外&#xff0c;均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情&#xff0c;而 Java 也可以享受 Rust 语言特性的内存安全&#xff0c;所有权机制&#xff0c;无畏并发。…

架构零散知识点

1 数据库 1.1 数据库范式 有一个学生表&#xff0c;主键是学号&#xff0c;含有学生号、学生名、班级、班级名&#xff0c;违反了数据库第几范式&#xff1f; --非主属性不依赖于主键&#xff0c;不满足第二范式 有一个订单表&#xff0c;包含以下字段&#xff1a;订单ID&…

ZISUOJ 2024算法基础公选课练习一(1)

前言、 又是一年算法公选课&#xff0c;与去年不同的是今年学了一些纯C&#xff08;而不是带类的C&#xff09; 一、我的C模板 1.1 模板1 #include <bits/stdc.h> using i64 long long;int main() {std::cin.tie(nullptr)->sync_with_stdio(false);return 0; } 1…

25.停车场管理系统(基于web的Java项目)

目录 1.系统的受众说明 2.相关技术与方法 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 需求分析 3.2.1 系统功能描述 3.2.2 用例图分析 4. 系统设计 4.1 系统类分析 5. 系统详细设计与实现 5.1 用户登录 5.2 系统信…

string模拟实现构造+析构

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 string模拟实现构造 方案1&#xff08;初始化列表的实现&#xff09;&#xff1a; 这…

每日OJ题_牛客_小红的口罩_堆+贪心_C++_Java

目录 牛客_小红的口罩_堆贪心 题目解析 C代码 Java代码 牛客_小红的口罩_堆贪心 小红的口罩 描述&#xff1a; 疫情来了&#xff0c;小红网购了 n个口罩。众所周知&#xff0c;戴口罩是很不舒服的。小红每个口罩戴一天的初始不舒适度为 ai​。 小红有时候…