🕒 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的
广义转发
分为以下两个步骤:
-
进行“
匹配
”:能够对网络体系结构中
各层(数据链路层、网络层、运输层)首部中的字段
进行匹配。 -
执行“
动作
”:不仅
转发分组
,还可以
负载均衡、重写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
博客链接:🔎
作者博客主页