project 3 和 软件定义的网络 (sdn)
DESCRIPTION
Project 3 和 软件定义的网络 (SDN). 罗忠文 http://xgxy.cug.edu.cn/rjgcx/lzw/ 内容取自 BERKELEY. 项目 3 介绍. Scott: 软件定义网络( SDN )背景 (40 分钟 ) Yahel: 项目概述 (10 分钟 ) Murphy: 软件架构 (10 分钟 ) TD and Kyriakos: 演示及细节 (15 分钟 ). 基本介绍. 想让大家对真实设备编程 Marwell 赠送了 250 台 PLUG 计算机,和 NUST (巴基斯坦)共享 对我们好一些,我们也会对你好 - PowerPoint PPT PresentationTRANSCRIPT
1
Project 3 和软件定义的网络 (SDN)
罗忠文http://xgxy.cug.edu.cn/rjgcx/lzw/
内容取自 BERKELEY
项目 3 介绍•Scott: 软件定义网络( SDN )背景 (40 分钟 )
•Yahel: 项目概述 (10 分钟 )
•Murphy: 软件架构 (10 分钟 )
•TD and Kyriakos: 演示及细节 (15 分钟 )
2
基本介绍•想让大家对真实设备编程
– Marwell 赠送了 250 台 PLUG 计算机,和 NUST (巴基斯坦)共享
•对我们好一些,我们也会对你好– 你弄坏早一点,我们修好早一点
•如果你们想用盒子做一些更好的事情,给我们一个提议,我们会让你们课完成后继续使用
•不要弄丢盒子,我们需要退还3
SDN 的看法•SDN 是网络的一个新的做法
– 不是关于架构: IP , TCP 等– But about design of network control(routing,TE)
•完整讨论 :SDN 由 Nicira Network 发明– 基于 Stanford,UCB,Princeton,CMU 的早期工作
•这不是 Nicira 宣传广告– Nicira 出售的产品只是碰巧使用了 SDN– 它不卖 SDN ,也不标榜自己是 SDN 公司 .
4
SDN 状况•Open Networking Foundation 是标准化实体
– SDN 有 49 家公司支持– 几乎所有都与之有关… ..
•市场上有少量产品 , 将来会更多– 一些大公司在内部使用 SDN
•SDN 在文字战中已经取胜 , 真实的战争即客户是否接受还刚刚开始… .
5
项目 3 与 SDN 是什么关系 ?
•项目 3 使用 SDN 技术– 但 SDN 对你不可见(它也应该如此)
•你需要编写软件控制单个交换机– 容易(原理上)
•类似的软件可以控制整个网络•将提供 SDN 的动机和背景材料
– 当然是没有细节
6
约定规则
•由于时间短 , 就不问问题了
•如果对我所说的不理解 , 让我停止 .
•想深入了解 , 课后再做– 这里的目标不是深入 , 而是对 SDN 的一般直觉
7
两个主要定义
•数据面 : 处理和发送包– 基于路由器和端点中的状态– 如 , IP, TCP, Ethernet 等– 快时标 ( 每个包 )
•控制面 : 在路由器中建立状态– 确定包如何转发及在转发到何处– 路由 , 流量工程 , 防火墙状态 , …– 慢时标 ( 每个控制事件 )
8
9
网络未来 ,
和协议的过去
10
Internet 成功的关键 : Layers
Applications
…built on…
…built on…
…built on…
…built on…
Reliable (or unreliable) transport
Best-effort global packet delivery
Best-effort local packet delivery
Physical transfer of bits
11
分层为什么如此重要 ?
• 将传输分解成基本部件
• 每层独立且兼容的创新
• 应用上空前的成功…
• … 但在学术上却失败
12
建立人造物 , 而非一个学科
• “系统”中的其他领域 : OS, DB, DS, etc.- 讲授基本原理- 较易管理- 继续演化
• 网络 :- 讲授大量协议- 其管理上的困难是有名的- 演化非常慢
13
为什么网络落后了 ?
• 网络过去很简单 : Ethernet, IP, TCP….
• 新的控制需求导致极大复杂性- 独立 VLANs, ACLs- 流量工程 MPLS, ECMP, Weights- 包处理 防火墙 , NATs, middleboxes- 负载分析 (DPI)- …..
• 独立设计和布署机制- 复杂的“控制面”设计 , 原始功能- 栈相对于优美的模块“数据面”
14
架构仍能工作 !
• 仅因为“我们” 管理复杂性的能力
• 这种管理复杂性的能力既是优点…- … 也是缺点 !
15
关于复杂性的简单故事
• ~1985: Don Norman visits Xerox PARC - 讨论用户界面和变速杆操作方法
16
他的观点是什么 ?
• 管理复杂性的能力和提取简单性的能力是不一样的
• 当最初让系统能工作时… .- 关注管理复杂性
• 当让系统易用且易理解时- 关注提取简单性
• 在提取简单性方面,将永远无法成功- 如果不认识到其与管理复杂性的区别的话
17
作者的观点是什么 ?
• 网络仍然关注于管理复杂性- 在控制面很少强调提取简单性- 没有意识到存在不同… .
• 提取简单性建立了智能基础- 有必要创立一个学科… .- 这也是网络落后的原因
18
更好的例子 : 程序设计
• 机器语言 : 没有抽象- 掌控复杂性是关键
• 高级语言 : OS 和其他抽象- 文件系统 , 虚拟内存 , 抽象数据类型 , ...
• 现代语言 : 更多抽象- 面向对象 , garbage collection,…
抽象是获取简单性的关键
19
“抽象的力量”
“Modularity based on abstraction
is the way things get done 基于抽象的模块化是成事之路”
− Barbara Liskov
抽象 接口 模块化
在网络中我们有什么抽象 ?
20
层是伟大的抽象
• 层仅处理数据面
• 没有强有力的控制面抽象 !
• 如何找到哪些控制面抽象 ?
• 两步 : 定义问题 , 然后分解它 .
21
网络控制问题
• 计算每个物理设备的配置- 例 , 转发表 , ACLs,…
• 没有通信保障的管理
• 在给定网络层协议上的管理
只有喜欢复杂性的人发现这是合理的需求
22
程序设计类比
• 程序员必须做下面事情时怎么办 :- 指定每个位存储在哪里- 显式地处理所有内部通信错误- 在一个程序设计语言中仅拥有有限的表达能力时
• 程序员将重新定义问题 :- 定义内存的一个更高级别的抽象- 建立在可靠通信抽象的基础上- 使用一个更通用的语言
• 抽象将问题分割成易处理的片断- 从而使程序员的任务更容易
23
从需求到抽象
1. 没有通信保障的管理需要对分布状态的抽象
2. 计算每个物理设备的配置 需要抽象以简化配置
3. 在给定网络层协议上的管理 需要对通用转发模型抽象
一旦所有这些抽象都做好了,控制机制就非常容易
24
• SDN 由这样三个抽象精确地定义- 分布 , 转发 , 配置
• SDN并非一个偶然的好想法…- 基本有效且通用
• SDN 能帮助我们最终创建一个学科- 抽象使得关于系统行为的推理成为可能- 提供了使形式化成为可能的环境… .
• 好吧 , 这些抽象是什么 ?
整个内容归纳成一句话
25
1. 分布式状态抽象
• “ 状态分布下”保护了控制机制- 同时允许访问这些状态
• 自然抽象 : 全局网络视图- 通过 API 提供的注解网络图( Annotated network graph
)
• 用“网络操作系统”实现
• 控制机制现在是使用 API 的程序- 不再是分布式协议 , 现在只是一个图算法- 如使用 Dijkstra 而非 Bellman-Ford
26
控制程序
软件定义网络 (SDN)
Network OS
全局网络视图
传统控制机制交换机和 / 或路由器的网络
在邻居间运行分布式算法
如 寻路 , 访问控制
27
范型( Paradigm )的主要变化
• 不再设计分布式控制协议- 设计一个分布式系统 (NOS)- 对所有控制功能都使用
• 现在只是定义一个中心化的控制函数
配置 = Function(view)
• 理解的同学请举手
28
2. 规格说明抽象
• 控制程序应该表示所需的行为
• 它不应是负责实现物理网络架构行为
• 自然抽象 : 网络的简化模型- 仅有足够细节来指定目标的简单模型
• 需要一个新的共享控制层 :- 将抽象配置映射到物理配置
• 这是“网络虚拟化”
29
简单示例 : 访问控制
GlobalNetwork View
Abstract NetworkModel
How
What
30
网络 OS
全局网络视图
抽象网络模型
Control Program网络虚拟化
软件定义网络 : 任务 2
31
此图意味着什么 ?
• 编写简单程序来配置简单模型- 配置仅仅是一种方式用来指定你想要的
• 例- ACLs: 谁能和谁通话- 孤立 : 谁能听到我的广播- 路由 : 仅指定路由到你所关心的程度
• 一些通过卫星流 , 另一些在固话网- TE: 以服务质量形式指定 , 而非路由
• 虚拟化层“编译”这些需求- 产生实验网络设备的合适配置
• NOS 然后将这些设置转换成物理盒子
32
网络 OS
全局网络视图
抽象网络模型控制程序
网络虚拟化
软件定义网络 : 任务 2指定特性
编译到拓朴
转换到交换机
33
两个使用示例
• 外扩路由器 :- 抽象视图是唯一路由器- 物理网络是一组互联的交换机- 允许路由器“ scale out, not up”- 在顶层使用标准路由协议
• 多租用( Multi-tenant )网络 :- 每个租户控制其自己的“私有”网络- 网络虚拟化层编译所有这些单个控制需求到单一的物理配置中
• 没有 SDN很难完成 , 有 SDN很容易 ( 在原理上 )
34
3. 转发抽象• 交换机有两个“大脑 brains”
- 管理 CPU (聪明但很慢腾腾 )- 转发 ASIC ( 快速但哑 dumb)
• 对于两者需要一个转发抽象- CPU 抽象可以是几乎任何事情
• ASIC 抽象更微秒一些 : OpenFlow
• OpenFlow:- 通过插入 <header;action> 项控制交换机- 基本工作是让 NOS远程访问转发表- 在 OpenvSwitch 中实例化
35
SDN 能工作吗 ?
• 可扩展吗 ? Yes
• 反应不很灵敏吗 ? No
• 产生单点失效吗 ? No
• 固有的安全性不高吗 ? No
• 可增量部署吗 ? Yes
36
SDN: 关心问题的清晰分离
• 控制程序 : 在抽象模型上指定行为- 由操作需求驱动
• 网络虚拟化 : 抽象模型映射到全局视图- 由规格抽象驱动
• NOS: 全局视图映射到物理交换机- API: 由分布式状态抽象驱动- 交换机 /结构 接口 : 由转发抽象驱动
37
我们实现了模块化 !
• 模块化使独立创新成为可能- 引起生态系统的繁荣
• 创新是 SDN 提议的真实价值- SDN 不允许你做不可能的事情- 它只是让你非常容易地做可能的事情
• 这就是 SDN 是网络未来的原因…