project 3 和 软件定义的网络 (sdn)

37
1 Project 3 和 和和和和和和和 (SDN) 罗罗罗 http://xgxy.cug.edu.cn/rjgcx/lzw/ 罗罗罗罗 BERKELEY

Upload: hunter-stark

Post on 04-Jan-2016

147 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Project 3 和 软件定义的网络  (SDN)

1

Project 3 和软件定义的网络 (SDN)

罗忠文http://xgxy.cug.edu.cn/rjgcx/lzw/

内容取自 BERKELEY

Page 2: Project 3 和 软件定义的网络  (SDN)

项目 3 介绍•Scott: 软件定义网络( SDN )背景 (40 分钟 )

•Yahel: 项目概述 (10 分钟 )

•Murphy: 软件架构 (10 分钟 )

•TD and Kyriakos: 演示及细节 (15 分钟 )

2

Page 3: Project 3 和 软件定义的网络  (SDN)

基本介绍•想让大家对真实设备编程

– Marwell 赠送了 250 台 PLUG 计算机,和 NUST (巴基斯坦)共享

•对我们好一些,我们也会对你好– 你弄坏早一点,我们修好早一点

•如果你们想用盒子做一些更好的事情,给我们一个提议,我们会让你们课完成后继续使用

•不要弄丢盒子,我们需要退还3

Page 4: Project 3 和 软件定义的网络  (SDN)

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

Page 5: Project 3 和 软件定义的网络  (SDN)

SDN 状况•Open Networking Foundation 是标准化实体

– SDN 有 49 家公司支持– 几乎所有都与之有关… ..

•市场上有少量产品 , 将来会更多– 一些大公司在内部使用 SDN

•SDN 在文字战中已经取胜 , 真实的战争即客户是否接受还刚刚开始… .

5

Page 6: Project 3 和 软件定义的网络  (SDN)

项目 3 与 SDN 是什么关系 ?

•项目 3 使用 SDN 技术– 但 SDN 对你不可见(它也应该如此)

•你需要编写软件控制单个交换机– 容易(原理上)

•类似的软件可以控制整个网络•将提供 SDN 的动机和背景材料

– 当然是没有细节

6

Page 7: Project 3 和 软件定义的网络  (SDN)

约定规则

•由于时间短 , 就不问问题了

•如果对我所说的不理解 , 让我停止 .

•想深入了解 , 课后再做– 这里的目标不是深入 , 而是对 SDN 的一般直觉

7

Page 8: Project 3 和 软件定义的网络  (SDN)

两个主要定义

•数据面 : 处理和发送包– 基于路由器和端点中的状态– 如 , IP, TCP, Ethernet 等– 快时标 ( 每个包 )

•控制面 : 在路由器中建立状态– 确定包如何转发及在转发到何处– 路由 , 流量工程 , 防火墙状态 , …– 慢时标 ( 每个控制事件 )

8

Page 9: Project 3 和 软件定义的网络  (SDN)

9

网络未来 ,

和协议的过去

Page 10: Project 3 和 软件定义的网络  (SDN)

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

Page 11: Project 3 和 软件定义的网络  (SDN)

11

分层为什么如此重要 ?

• 将传输分解成基本部件

• 每层独立且兼容的创新

• 应用上空前的成功…

• … 但在学术上却失败

Page 12: Project 3 和 软件定义的网络  (SDN)

12

建立人造物 , 而非一个学科

• “系统”中的其他领域 : OS, DB, DS, etc.- 讲授基本原理- 较易管理- 继续演化

• 网络 :- 讲授大量协议- 其管理上的困难是有名的- 演化非常慢

Page 13: Project 3 和 软件定义的网络  (SDN)

13

为什么网络落后了 ?

• 网络过去很简单 : Ethernet, IP, TCP….

• 新的控制需求导致极大复杂性- 独立 VLANs, ACLs- 流量工程 MPLS, ECMP, Weights- 包处理 防火墙 , NATs, middleboxes- 负载分析 (DPI)- …..

• 独立设计和布署机制- 复杂的“控制面”设计 , 原始功能- 栈相对于优美的模块“数据面”

Page 14: Project 3 和 软件定义的网络  (SDN)

14

架构仍能工作 !

• 仅因为“我们” 管理复杂性的能力

• 这种管理复杂性的能力既是优点…- … 也是缺点 !

Page 15: Project 3 和 软件定义的网络  (SDN)

15

关于复杂性的简单故事

• ~1985: Don Norman visits Xerox PARC - 讨论用户界面和变速杆操作方法

Page 16: Project 3 和 软件定义的网络  (SDN)

16

他的观点是什么 ?

• 管理复杂性的能力和提取简单性的能力是不一样的

• 当最初让系统能工作时… .- 关注管理复杂性

• 当让系统易用且易理解时- 关注提取简单性

• 在提取简单性方面,将永远无法成功- 如果不认识到其与管理复杂性的区别的话

Page 17: Project 3 和 软件定义的网络  (SDN)

17

作者的观点是什么 ?

• 网络仍然关注于管理复杂性- 在控制面很少强调提取简单性- 没有意识到存在不同… .

• 提取简单性建立了智能基础- 有必要创立一个学科… .- 这也是网络落后的原因

Page 18: Project 3 和 软件定义的网络  (SDN)

18

更好的例子 : 程序设计

• 机器语言 : 没有抽象- 掌控复杂性是关键

• 高级语言 : OS 和其他抽象- 文件系统 , 虚拟内存 , 抽象数据类型 , ...

• 现代语言 : 更多抽象- 面向对象 , garbage collection,…

抽象是获取简单性的关键

Page 19: Project 3 和 软件定义的网络  (SDN)

19

“抽象的力量”

“Modularity based on abstraction

is the way things get done 基于抽象的模块化是成事之路”

− Barbara Liskov

抽象 接口 模块化

在网络中我们有什么抽象 ?

Page 20: Project 3 和 软件定义的网络  (SDN)

20

层是伟大的抽象

• 层仅处理数据面

• 没有强有力的控制面抽象 !

• 如何找到哪些控制面抽象 ?

• 两步 : 定义问题 , 然后分解它 .

Page 21: Project 3 和 软件定义的网络  (SDN)

21

网络控制问题

• 计算每个物理设备的配置- 例 , 转发表 , ACLs,…

• 没有通信保障的管理

• 在给定网络层协议上的管理

只有喜欢复杂性的人发现这是合理的需求

Page 22: Project 3 和 软件定义的网络  (SDN)

22

程序设计类比

• 程序员必须做下面事情时怎么办 :- 指定每个位存储在哪里- 显式地处理所有内部通信错误- 在一个程序设计语言中仅拥有有限的表达能力时

• 程序员将重新定义问题 :- 定义内存的一个更高级别的抽象- 建立在可靠通信抽象的基础上- 使用一个更通用的语言

• 抽象将问题分割成易处理的片断- 从而使程序员的任务更容易

Page 23: Project 3 和 软件定义的网络  (SDN)

23

从需求到抽象

1. 没有通信保障的管理需要对分布状态的抽象

2. 计算每个物理设备的配置 需要抽象以简化配置

3. 在给定网络层协议上的管理 需要对通用转发模型抽象

一旦所有这些抽象都做好了,控制机制就非常容易

Page 24: Project 3 和 软件定义的网络  (SDN)

24

• SDN 由这样三个抽象精确地定义- 分布 , 转发 , 配置

• SDN并非一个偶然的好想法…- 基本有效且通用

• SDN 能帮助我们最终创建一个学科- 抽象使得关于系统行为的推理成为可能- 提供了使形式化成为可能的环境… .

• 好吧 , 这些抽象是什么 ?

整个内容归纳成一句话

Page 25: Project 3 和 软件定义的网络  (SDN)

25

1. 分布式状态抽象

• “ 状态分布下”保护了控制机制- 同时允许访问这些状态

• 自然抽象 : 全局网络视图- 通过 API 提供的注解网络图( Annotated network graph

• 用“网络操作系统”实现

• 控制机制现在是使用 API 的程序- 不再是分布式协议 , 现在只是一个图算法- 如使用 Dijkstra 而非 Bellman-Ford

Page 26: Project 3 和 软件定义的网络  (SDN)

26

控制程序

软件定义网络 (SDN)

Network OS

全局网络视图

传统控制机制交换机和 / 或路由器的网络

在邻居间运行分布式算法

如 寻路 , 访问控制

Page 27: Project 3 和 软件定义的网络  (SDN)

27

范型( Paradigm )的主要变化

• 不再设计分布式控制协议- 设计一个分布式系统 (NOS)- 对所有控制功能都使用

• 现在只是定义一个中心化的控制函数

配置 = Function(view)

• 理解的同学请举手

Page 28: Project 3 和 软件定义的网络  (SDN)

28

2. 规格说明抽象

• 控制程序应该表示所需的行为

• 它不应是负责实现物理网络架构行为

• 自然抽象 : 网络的简化模型- 仅有足够细节来指定目标的简单模型

• 需要一个新的共享控制层 :- 将抽象配置映射到物理配置

• 这是“网络虚拟化”

Page 29: Project 3 和 软件定义的网络  (SDN)

29

简单示例 : 访问控制

GlobalNetwork View

Abstract NetworkModel

How

What

Page 30: Project 3 和 软件定义的网络  (SDN)

30

网络 OS

全局网络视图

抽象网络模型

Control Program网络虚拟化

软件定义网络 : 任务 2

Page 31: Project 3 和 软件定义的网络  (SDN)

31

此图意味着什么 ?

• 编写简单程序来配置简单模型- 配置仅仅是一种方式用来指定你想要的

• 例- ACLs: 谁能和谁通话- 孤立 : 谁能听到我的广播- 路由 : 仅指定路由到你所关心的程度

• 一些通过卫星流 , 另一些在固话网- TE: 以服务质量形式指定 , 而非路由

• 虚拟化层“编译”这些需求- 产生实验网络设备的合适配置

• NOS 然后将这些设置转换成物理盒子

Page 32: Project 3 和 软件定义的网络  (SDN)

32

网络 OS

全局网络视图

抽象网络模型控制程序

网络虚拟化

软件定义网络 : 任务 2指定特性

编译到拓朴

转换到交换机

Page 33: Project 3 和 软件定义的网络  (SDN)

33

两个使用示例

• 外扩路由器 :- 抽象视图是唯一路由器- 物理网络是一组互联的交换机- 允许路由器“ scale out, not up”- 在顶层使用标准路由协议

• 多租用( Multi-tenant )网络 :- 每个租户控制其自己的“私有”网络- 网络虚拟化层编译所有这些单个控制需求到单一的物理配置中

• 没有 SDN很难完成 , 有 SDN很容易 ( 在原理上 )

Page 34: Project 3 和 软件定义的网络  (SDN)

34

3. 转发抽象• 交换机有两个“大脑 brains”

- 管理 CPU (聪明但很慢腾腾 )- 转发 ASIC ( 快速但哑 dumb)

• 对于两者需要一个转发抽象- CPU 抽象可以是几乎任何事情

• ASIC 抽象更微秒一些 : OpenFlow

• OpenFlow:- 通过插入 <header;action> 项控制交换机- 基本工作是让 NOS远程访问转发表- 在 OpenvSwitch 中实例化

Page 35: Project 3 和 软件定义的网络  (SDN)

35

SDN 能工作吗 ?

• 可扩展吗 ? Yes

• 反应不很灵敏吗 ? No

• 产生单点失效吗 ? No

• 固有的安全性不高吗 ? No

• 可增量部署吗 ? Yes

Page 36: Project 3 和 软件定义的网络  (SDN)

36

SDN: 关心问题的清晰分离

• 控制程序 : 在抽象模型上指定行为- 由操作需求驱动

• 网络虚拟化 : 抽象模型映射到全局视图- 由规格抽象驱动

• NOS: 全局视图映射到物理交换机- API: 由分布式状态抽象驱动- 交换机 /结构 接口 : 由转发抽象驱动

Page 37: Project 3 和 软件定义的网络  (SDN)

37

我们实现了模块化 !

• 模块化使独立创新成为可能- 引起生态系统的繁荣

• 创新是 SDN 提议的真实价值- SDN 不允许你做不可能的事情- 它只是让你非常容易地做可能的事情

• 这就是 SDN 是网络未来的原因…