一、软件定义网络技术概述
1.1 软件定义网络技术产生
1.1.1什么是sdn
软件定义网络(sofware defined network)
1.1.2 为什么要sdn
- 传统网络及其设备的值可配置、不可编程
- 网络的分布式控制与管理架构使得传统网络难以管理
1.1.3 sdn特点
- 能够弹性响应上层变化的网络可编程
- 引入一个集中统一的控制与管理层
- 解耦网络设备的管理平面、控制平面与数据平面
1.1.4 sdn架构
应用层:包含了网络所要承载的多元业务与应用
北向接口:控制器与上传交互
控制层:全局管控
南向接口:下发流表,指导转发行为
基础设施层:简单的网络设备,只承担转发功能
1.1.5 sdn优点
1.2 软件定义网络的发展
1.2.1 发展历史
1.2.2 sdn现状
- 被大规模用于数据中心站点的服务器和设备部署运维,产生了软件定义数据中心sdn-bc。比如google、facebook、bat。
- 技术融合、扩大
sdn和ipv6、sdn和ai、sdn和5g、sdn和openstack
1.3 软件定义网络的标准化
onf:开放网络基金会
ietf:因特网工程任务组
itu-t:国际电信联盟电信标准化部门
etsi:欧洲电信标准化协会
标准化的作用:开放架构下的技术,互操作性,和系统兼容性
二、软件定义网络的架构和思想
2.1 sdn的基本架构
2.1.1 onf定义的基于OpenFlow的三层架构
- 特点:①转发与控制的分离②转发面进行了标准化
- 架构:
- 数据平面功能:负责转发和处理数据 ,包括控制平面接口代理、转发引擎表和处理功能
- 控制平面功能:将sdn应用层请求转换到sdndatepath,为sdn应用提供底层网络的抽象模型,对转发面进行转发调度和管理。关键技术是控制器,又称为网络操作系统,包括:NOX、POX、FloodLight、RYU、OpenDayLight、ONOS
- 应用平面功能:应用交付(负载均衡、访问控制、应用加速)
- 管理平面功能:网元初始化配置,指定控制器、定义控制器及应用的控制范围
- 南向接口功能:转发行为控制,设备性能查询,统计报告,事件通知等
- 北向接口功能:向应用层提供抽象的网络视图,使应用能直接控制网络的行为
2.1.2 IETF提出的技术架构
特点:①开放现有网络设备的能力②标准开放的arp
优点:①充分利用了现有网络设备和路由协议②快速实现
2.1.3 NICIRA提出的OVERlay架构
特点:①网络边缘软件化②Overlay技术(从传统网络抽象出网络)
优点:①与物理网络解耦②部署灵活
2.1.4 ETSI的NFV技术架构
特点:①nfv与sdn互补
2.2 SDN定义网络的核心思想
- 解耦:控制平面和数据平面分离,控制平面负责上层的控制结构,数据平面负责数据转发
问题:①控制平面的服务能力成为网络性能的瓶颈②多控制器如何交互交互路由信息,保持分布式结点状态的一致性③控制平面的响应延迟,导致的数据平面可用性问题 - 抽象:抽象为sdn模型①转发抽象:将数据平面转发为通用的转发模型②分布状态抽象:网络状态抽象为全局网络视图③配置抽象:应用层对于网络行为的表达通过编程语言了、实现,基于简化抽象模型,将抽象配置映射为物理配置。
- 可编程:改命令行配置为更高级的编程方式
主动网络:开放网络结点的编程接口,用户数据上根据用户需求执行相应的计算
4D架构:分为数据平面。发现平面。扩展平面。决策平面。
三、openflow
3.1 SDN数据平面
任务:解析数据包头,转发数据包到某些端口,通过查询由控制平面所生成的转发信息表
3.2openflow协议和openflow交换机
3.2.1 openflow架构三个组成部分
- 流表:指示交换机如何进行流的处理,每个动作关联一个流表项
- 安全通道:负责控制器与交换机之间的交互,通过安全通道与远端控制器连接
- openflow协议:定义了一种南向接口标准,为控制器与交换机之间的通信提供了一种开放标准的方式。
3.2.2 OpenFlow主要版本和特性
3.2.3 流表
- 流:某种共同特征的数据,由网络管理员定义,根据不同的流执行不同的策略,数据都是以“流”为单位进行处理
- 流表:特定六的策略表项的集合,负责数据包的查找与转发
- 流表项:在openflow1.0中包括包头域、计数器,动作表。
- openflow1.0流表组成:
- 包头域:链路层、网络层、传输层大部分表示
- 计数器:统计数据流量相关信息,对每个流表、每个数据流、每个设备端口、每个转发队列进行维护,用于统计数据流量的相关信息。
①表项数、数据包查询次数,数据包匹配次数等②数据包数、字节数、数据流持续时间等③接收到的数据包数,发送数据包数,接收字节数,发送字节数,错误发送次数④发送的数据包数、字节数,溢出错误次数 - 动作表:应该执行的下一步操作