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

SDN是一种将网络的控制层面和数据层面分离的架构,允许通过软件进行网络编程。OpenFlow是SDN中常用的控制层面与数据层面通信接口,使得控制器能直接控制数据设备。SDN的关键特征包括基于流的转发、可编程网络及集中式控制。OpenFlow交换机使用流表进行匹配和动作执行,如转发、负载均衡或防火墙功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🕒 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
博客链接:🔎 作者博客主页

<think>嗯,用户想了解SDN网络的架构和原理。首先,我需要回忆一下SDN的基本概念。根据引用[1],SDN是斯坦福大学提出的新型网络架构,核心是控制面和数据面分离,通过OpenFlow实现流量控制。好的,那架构应该分为哪几层呢?记得SDN通常分为应用层、控制层和基础设施层,对吧? 然后要解释每个层的功能。应用层提供各种网络应用,比如负载均衡和防火墙,这些应用通过北向API与控制层通信。控制层是核心,负责集中管理网络策略,比如使用OpenFlow控制器。基础设施层就是物理设备,如交换机和路由器,负责数据转发。引用[2]提到SDN通过标准协议集中控制,所以控制层和基础设施层之间用南向接口,比如OpenFlow协议。 接下来是工作原理,需要说明控制面与数据面分离,集中控制,网络虚拟化这些点。控制面集中在控制器,数据面设备只负责转发,这样策略可以灵活调整。网络虚拟化可能涉及多租户支持,引用[1]和[3]都提到SDN为创新提供了平台,可能包括虚拟网络资源的管理。 还要考虑用户可能的疑问,比如SDN和传统网络的区别,或者OpenFlow的具体作用。不过用户的问题主要集中在架构和原理,所以需要保持回答的结构清晰。另外,用户提供的引用中有三个来源,需要适当引用到回答中,比如在解释架构时引用[1]和[2],在原理部分引用[3]。 可能还需要检查是否有遗漏的关键点,比如北向API和南向API的区别,以及网络可编程性的重要性。这些都属于SDN架构的关键部分,应该包含在内。最后,生成的相关问题要围绕用户可能进一步想了解的内容,比如与传统网络的对比、OpenFlow的作用、应用场景和挑战等。 现在整理一下结构:先介绍架构的三层,每层的功能,再讲工作原理的几个核心点,最后附上相关问题。确保使用正确的中文术语,并且数学表达式用$...$格式,不过SDN内容可能较少涉及数学,但如果有公式的话需要注意格式。比如如果有流量控制的算法,可能需要用行内公式,但这里可能不需要。总之,按照用户的要求,回答要结构清晰,引用适当,并生成相关问题。</think>### 软件定义网络SDN)架构及原理 #### 1. **SDN架构** SDN的核心架构分为三层,通过解耦网络设备的控制面与数据面实现灵活管理[^1][^2]: 1. **应用层** 提供网络功能的具体应用(如负载均衡、防火墙、流量工程),通过**北向接口**(RESTful API等)与控制层交互。例如,用户可编程定义流量规则并下发至控制器。 2. **控制层** 核心组件是**SDN控制器**(如OpenDaylight、ONOS),负责全局网络视图管理和策略决策。控制器通过**南向接口**(如OpenFlow协议)向基础设施层设备下发转发规则,实现集中控制[^2]。 3. **基础设施层** 由物理或虚拟网络设备(交换机、路由器)组成,仅负责数据包的转发,不参与控制逻辑。设备根据控制器下发的流表(Flow Table)执行操作。 $$ \text{SDN架构模型:} \quad \text{应用层} \xrightarrow{\text{北向API}} \text{控制层} \xrightarrow{\text{南向协议}} \text{基础设施层} $$ #### 2. **核心原理** SDN通过以下机制实现网络智能化与可编程性: - **控制面与数据面分离** 传统网络中,控制逻辑(如路由协议)嵌入在设备中;而SDN将控制逻辑集中到控制器,数据面设备仅执行转发动作[^1][^3]。 - **集中控制与动态配置** 控制器通过全局视图优化网络流量,例如动态调整带宽分配或绕过故障链路。例如,当检测到链路拥塞时,控制器可实时更新流表以重定向流量。 - **网络虚拟化** 支持多租户网络切片,例如在云计算中为不同用户分配逻辑隔离的网络资源。 - **开放接口与可编程性** 北向接口允许第三方开发网络应用,南向接口(如OpenFlow)标准化了控制器与设备间的通信协议,打破厂商锁定。 #### 3. **关键技术示例:OpenFlow协议** OpenFlow是SDN的典型南向协议,定义交换机流表的结构与控制器交互方式: - **流表项**包含匹配字段(如源IP、端口)、动作(转发、丢弃、修改包头)及统计信息。 - 当数据包匹配不到流表时,交换机通过Packet-In消息询问控制器,控制器返回Flow-Mod消息更新流表。 ```plaintext 示例流程: 1. 数据包进入交换机 → 无匹配流表 → 发送Packet-In至控制器 2. 控制器计算路径 → 下发Flow-Mod消息 3. 交换机更新流表 → 后续相同流量直接按规则转发 ``` #### 4. **SDN与传统网络对比** | 特性 | 传统网络 | SDN | |--------------------|----------------------------|------------------------------| | 控制逻辑位置 | 分散在各设备 | 集中在控制器 | | 网络可编程性 | 低(依赖厂商固件) | 高(开放API支持定制) | | 灵活性 | 配置复杂,响应慢 | 动态调整策略,实时优化 | | 典型应用场景 | 企业局域网 | 数据中心、5G核心网、云网络 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值