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