logo资料库

openflow协议全面讲解_中文版.pdf

第1页 / 共81页
第2页 / 共81页
第3页 / 共81页
第4页 / 共81页
第5页 / 共81页
第6页 / 共81页
第7页 / 共81页
第8页 / 共81页
资料共81页,剩余部分请下载后查看
  目        录  目        录 .................................................................................... I  第 1.1 节  第 1.2 节  第 2.1 节  第 2.2 节  第 2.3 节  第 1 章  概述 .............................................................................. 1  关于 OpenFlow ....................................................................................................... 1  关于本文 ................................................................................................................. 2  第 2 章 Openflow ...................................................................... 3  概述 ......................................................................................................................... 3  交换机组成 ............................................................................................................. 3  流表 ......................................................................................................................... 3  2.3.1  包头域 ..................................................................................................................... 4  2.3.2  计数器(counter) ................................................................................................ 5  2.3.3  行动(action) ....................................................................................................... 6  2.3.4  匹配 ......................................................................................................................... 8  安全通道 ................................................................................................................. 9  第 2.4 节  2.4.1  of 协议 .................................................................................................................... 9  2.4.2  连接建立 ............................................................................................................... 10  2.4.3  连接中断 ............................................................................................................... 10  2.4.4  加密 ....................................................................................................................... 10  2.4.5  生成树 ................................................................................................................... 10  2.4.6  流表修改 ............................................................................................................... 11  2.4.7  流超时 ................................................................................................................... 12  of 协议 .................................................................................................................. 12  第 2.5 节  2.5.1  of  协议头 ............................................................................................................. 12  2.5.2  常用数据结构 ....................................................................................................... 14  Controller‐to‐Switch  消息 .................................................................................... 23  2.5.3  Asynchronous 消息 ............................................................................................... 35  2.5.4  Symmetric 消息 .................................................................................................... 40  2.5.5  规范 1.1 更新内容 .................................................... Error! Bookmark not defined.  第 2.6 节  第 3 章 OpenvSwitch ............................................................... 42  概述 ....................................................................................................................... 42  特性 ....................................................................................................................... 42  代码 ....................................................................................................................... 42  命令 ....................................................................................................................... 43  第 4 章 NOX ............................................................................ 44  网络操作系统 ....................................................................................................... 44  第 3.1 节  第 3.2 节  第 3.3 节  第 3.4 节  第 4.1 节  I 
第 4.6 节  第 4.7 节  第 4.8 节  第 4.4 节  第 4.2 节  第 4.3 节  模型 ....................................................................................................................... 44  架构 ....................................................................................................................... 45  4.3.1  组件 ....................................................................................................................... 45  4.3.2  操作 ....................................................................................................................... 45  4.3.3  多粒度处理 ........................................................................................................... 46  4.3.4  开发实现 ............................................................................................................... 46  安装 ....................................................................................................................... 47  4.4.1  步骤 ....................................................................................................................... 47  4.4.2  依赖 ....................................................................................................................... 48  4.4.3  选项 ....................................................................................................................... 48  4.4.4  校验 ....................................................................................................................... 49  应用 ....................................................................................................................... 49  4.5.1  框架 ....................................................................................................................... 49  4.5.2  运行与接口 ........................................................................................................... 50  4.5.3  例程 ....................................................................................................................... 50  开发 ....................................................................................................................... 51  4.6.1  组件 ....................................................................................................................... 51  4.6.2  事件 ....................................................................................................................... 54  4.6.3  开发例程 ............................................................................................................... 57  GUI ......................................................................................................................... 58  4.7.1  运行 GUI ................................................................................................................ 58  4.7.2  扩展 GUI ................................................................................................................ 59  相关工作 ............................................................................................................... 61  第 5 章 Mininet ....................................................................... 62  概述 ....................................................................................................................... 62  主要特性 ............................................................................................................... 62  镜像获取和使用 ................................................................................................... 62  5.3.1  获取镜像 ............................................................................................................... 62  5.3.2  使用镜像 ............................................................................................................... 63  5.3.3  更新 ....................................................................................................................... 63  简单测试 ............................................................................................................... 63  5.4.1  创建网络 ............................................................................................................... 63  5.4.2  查看信息 ............................................................................................................... 64  5.4.3  对节点进行单独操作 ........................................................................................... 64  常用操作 ............................................................................................................... 65  5.5.1  快捷测试 ............................................................................................................... 65  5.5.2  自定义拓扑 ........................................................................................................... 65  5.5.3  使用友好的 mac 编号 .......................................................................................... 66  5.5.4  使用 XTerm ........................................................................................................... 66  5.5.5  链路操作 ............................................................................................................... 67  第 5.1 节  第 5.2 节  第 5.3 节  第 5.4 节  第 5.5 节  第 4.5 节    II 
  5.5.6  指定交换机跟控制器类型 ................................................................................... 67  5.5.7  名字空间 ............................................................................................................... 67  5.5.8  启动参数总结 ....................................................................................................... 68  5.5.9  常用命令总结 ....................................................................................................... 68  5.5.10  其他操作 ............................................................................................................... 69  高级功能 ............................................................................................................... 69  第 5.6 节  5.6.1  dpctl ...................................................................................................................... 69  5.6.2  控制器 ................................................................................................................... 70  5.6.3  交换机与控制器交互 ........................................................................................... 70  5.6.4  使用 NOX............................................................................................................... 71  5.6.5  多条配置命令 ....................................................................................................... 72  代码分析 ............................................................................................................... 72  第 5.7 节  5.7.1  bin 子目录 ............................................................................................................. 72  mininet 子目录 ..................................................................................................... 73  5.7.2  custom 子目录 ...................................................................................................... 74  5.7.3  5.7.4  examples 子目录 .................................................................................................. 74  5.7.5  其他文件 ............................................................................................................... 75  第 6 章  相关项目 .................................................................... 77  Openflow ............................................................................................................... 77  OpenvSwitch ......................................................................................................... 77  NOX ....................................................................................................................... 77  Mininet .................................................................................................................. 77  第 6.1 节  第 6.2 节  第 6.3 节  第 6.4 节  III 
  第1章 概述 坚持创新,我们的研究才有意思,才有意义。本段的目的是试图告诉大家,OpenFlow 为我们提供了更多更好的创新机会。 第1.1节 关于 OpenFlow  最初,OpenFlow 以交换机的形式出现在 Stanford 一伙人的实验室里,后来又部署到了 他们计算机系的 Gates Building 里。OpenFlow 使传统的二层和三层交换机具备了细粒度流 转发能力,即传统的基于 MAC 的网包转发,基于 IP 的路由转发,被拓展到了基于多域网 包包头描述的流转发。同时,传统的控制层面从转发设备中剥离出来,所有转发行为的决 策从交换机自身“迁移”到了某个集中控制器上。 随着 OpenFlow 的部署和应用,支持 OF 的交换设备的性能瓶颈相继出现。于是有了基 于 NetFPGA 的实现,提供多千兆的 OF 交换。工业界如 HP,Juniper,NEC 等也相继提供 了支持 OF 协议的交换机设备。值得注意的是,在交换机吞吐不是问题的情况下,新建连 接速度(受 controller 限制)和流表大小(受 TCAM 限制)始终困扰 OpenFlow 发展。 稍后,流表大小的问题通过两个思路解决,一是使用 multi-table(OF 1.1 支持),通 过 pipeline 的流表查找来解决指数及增长的流表项数;二是使用 Proactive+Reactive 的双重 流表建立方法,通过分布查找+动态加载减少流表项数(DIFANE)。虽然这两种方案一定 程度上减轻了流表大小的问题,但离问题最终解决还早。OpenFlow 是否支持大规模网络, 需要进一步研究。 与此同时,集中控制端的网络操作系统的发展也在不断推进。最早的 Controler 仅用于 校园内大楼里的,之后的 Ethane/Nox 拓展到了企业网和数据中心的范畴。近期提出的 Onix 完成了一套 Internet-scale 的 OpenFlow 部署方案。Onix 的管控粒度在不同 scale 下面有所不 同:在数据中心汇聚层以及 Internet 核心层的 OF 功能越来越接近现有路由设备,而在设备 接入层(服务器,用户)和网络接入(网关)层则保留基于 OF 的细粒度控制。 从 OF 的演进可以看出,创新与妥协的 trade-off 贯穿始终。一方面,OF 创新性地将路 由和网关设备的数据平面推向网络,并将管理平面迁移整合到集中控制器,从而以分布式 处理和集中式控制简化网络管理的难度,增强网络的可用性。另一方面,由于受到软硬件 技术的约束和产业模式的不成熟,OF 的发展始终对现有网络进行各种各样的妥协。随着学 界和业界越来越多的接受 OF 理念,这种 trade-off 越来越可能得到收敛,进而推动产业的 成熟。 事实上,在 Cisco 和 HP 大张旗鼓的争斗 VN-TAG 和 VEPA 之际,基于 OpenFlow 的 虚拟交换产品 OvS 已于斜刺里杀出。这种 Software-Defined Network,无论功能和成本均有 自己独特的优势。至于是否能对传统网络技术产生巨大的冲击则需要包括我们在内的所有 人,继续创新。 ‐ 1 ‐ 
第 1 章  概述  第1.2节 关于本文  斯坦福大学 OpenFlow 团队近十年来一贯坚持的开放和创新的态度,使得基于 OF 的开 源项目不断增加,一个个精彩的 demo 不断呈现,最终促成了学术界和工业界的集体参与 热情。 由于 OpenFlow 创新的目标是简化网络管理,即 OpenFlow 自身的创新实际是在驱动网 络业务的创新。因此,从事 OpenFlow 的相关研究,不应仅停留在 OF 网络的部署上,更重 要的是如何利用 OF 网络去进行业务创新。我们相信只有合理的产业化方向,出色的业务 和应用,才能最终推动 OpenFlow 的发展,最终让软件掌控网络。 撰写本文的目的,一方面是收集、整理、分享 OpenFlow 的相关技术资料,另一方面 则是希望籍此推进国内的 OpenFlow 研究发展。本文的技术内容均来自公开发表的学术文 章和相关论坛、网站等,附带了本团队的一些理解和体会。我们期望通过自己的一点点努 力,促进国内团队的 OpenFlow 研究与开发,以及广泛的和开放的交流与创新。 ‐ 2 ‐ 
  第2章 Openflow 第2.1节 概述  官方网站:http://OpenFlowSwitch.org。 本部分内容按照 Openflow 规范 1.0 版本撰写。1.0 之前版本都是草案,从 1.0 版本开始 是 正 式 版 本 , 生 产 商 们 理 论 上 应 该 都 参 照 这 个 版 本 。 1.0 版 本 的 下 载 地 址 为 http://www.openflowswitch.org/documents/openflow-spec-v1.0.0.pdf。 目前最新规范版本为 1.1。在本章最后一节将说明规范 1.1 的修改内容。 第2.2节 交换机组成  每个 of 交换机(switch)都有一张流表,进行包查找和转发。交换机可以通过 of 协议 经一个安全通道连接到外部控制器(controller),对流表进行查询和管理。图表 2-1 展示 了这一过程。 图表 2‐1 of 交换机通过安全通道连接到控制器    流表包括包头域(header fileds,匹配包头多个域)、活动计数器(counters)、0 个或 多个执行行动(actions)。对每一个包进行查找,如果匹配则执行相关策略,否则通过安 全通道将包转发到控制器,控制器来决策相关行为。流表项可以将包转发到一个或者多个 接口。 第2.3节 流表  流表是交换机进行转发策略控制的核心数据结构。交换芯片通过查找流表表项来决策 ‐ 3 ‐ 
对进入交换机的网络流量采取合适的行为。 每个表项包括三个域,包头域(header field),计数器(counters),行动(actions)。 如表格 2-1 所示。 第 2 章  Openflow  表格 2‐1  流表项结构  Head Fileds Counter Actions 2.3.1 包头域  包头域包括 12 个域,如表格 2-2 所示,包括:进入接口,Ethernet 源地址、目标地址、 类型,vlan id,vlan 优先级,IP 源地址、目标地址、协议、IP ToS 位,TCP/UDP 目标端口、 源端口。每一个域包括一个确定值或者所有值(any),更准确的匹配可以通过掩码实现。 Ingress  Port  Ether  Dst  Ether  Source  更具体的各个域的解释参见表格 2-3。 Ether  Type  Vlan  id  IP  proto IP ToS  bits  TCP/UDP  Src Port  TCP/UDP  Dst Port 表格 2‐2  流表项的包头域  表格 2‐3  包头域详细含义  Vlan  Priority IP  dst IP  src Field Bits When applicable Notes Ingress Port  (Implementation  dependent)  All packets  Numerical representation of incoming port, starting at 1. Ethernet source  address  Ethernet  destination  address    48  48  All packets on enabled ports  All packets on enabled ports  Ethernet type  16  All packets on enabled ports  switch  An  OpenFlow  is  required to match the type in  both  standard  Ethernet  and  802.2  with  a  SNAP  header  and  OUI  of  0x000000.  The  special  value  of0x05FF  is  used  to  match  all  802.3  packets  SNAP  headers.  without  VLAN id  VLAN priority  IP source address  IP destination  address  IP protocol  12  3  32  32  8  All packets of Ethernet type  0x8100  All packets of Ethernet type  0x8100  VLAN PCP field  All IP and ARP packets Can be subnetmasked  All IP and ARPpackets  Can be subnetmasked  All IP and IP over Ethernet, ARP packets Only    the    lower    8 bits of  the ARP opcode are used  ‐ 4 ‐ 
分享到:
收藏