构建OpenFlow网络应用的指南,使用OpenFlow平台和开发工具的第一手经验。
既深入浅出讲解OpenFlow的基本组件,又详细介绍网络应用实现的技术细节,是实际动手构建SDN的必备参考。
SDN(软件定义网络)是未来网络发展的趋势,它将网络管理功能从网络设备中分离出来,使得用户可以构建简便、灵活、高度可扩展的网络。OpenFlow是第一个专为SDN设计的标准接口,是SDN概念的早期实现方案之一。我们如何利用OpenFlow构建SDN?
《软件定义网络:基于OpenFlow的SDN技术揭秘》是利用OpenFlow实际动手搭建SDN的系统实践指南。书中不仅深入浅出地讲解OpenFlow的基础知识,还详细阐述基于OpenFlow的网络应用开发、网络虚拟化、云计算中的安装与配置等具体过程。具体内容包括流的概念、流的转发、OpenFlow的功能、OpenFlow表的功能以及OpenFlow的特点和局限性;OpenFlow交换机的实现方案;OpenFlow控制器的作用及其API;环境的搭建;以学习型交换机和防火墙为例,展示网络应用开发;网络分片的获取;云计算中的OpenFlow;与OpenFlow有关的一些活跃的开源项目的概览。
《软件定义网络:基于OpenFlow的SDN技术揭秘》内容全面,既涵盖OpenFlow的基本构件,又包括利用OpenFlow实现SDN方面的内容,适合网络工程师、网络管理员、系统软件开发人员、网络应用开发人员,以及任何希望对OpenFlow有更多了解的人阅读。
第1章
OpenFlow概述
1.1 理解软件定义网络—OpenFlow特色
1.2 有关SDN/OpenFlow的工作
1.3 SDN的基本构件
1.4 OpenFlow消息
1.5 北向接口
1.6 本章总结
为了让读者更好地理解OpenFlow的功能及其组成部分,了解如何利用它开发基于OpenFlow的网络应用,有必要简单介绍一下OpenFlow及其工作原理。在真正搭建支持SDN/OpenFlow的实验和开发环境之前,本章首先介绍所需要的知识。OpenFlow可以说是SDN概念的早期实现方案之一,所以,在了解OpenFlow之前,有必要先简单介绍一下SDN以及围绕SDN所展开的工作。
1.1 理解软件定义网络——OpenFlow特色
软件定义网络(Software Defined Networking,SDN)通常被认为是计算机网络领域中的创新概念,其目标是极大地简化网络控制和管理,通过网络的可编程性引导创新。通常,计算机网络的建设依赖于大量的网络设备(如交换机、路由器、防火墙等),以及在设备中嵌入实现的复杂网络协议(软件)。网络工程师负责配置各种策略,以应对各种各样的网络事件和应用场景。他们需要手工地将这些高层策略转换为低层的配置命令,这些繁杂的任务通常只能通过有限的工具完成,使得网络管理控制和性能调优任务总是带有挑战性并易于出错。
另一个网络工程师和研究人员常常提到的挑战是因特网的固化机制。庞大的因特网基础设施和它对我们生活诸多方面所带来的影响,使得因特网无论是在物理基础设施方面,还是在相关的协议及性能方面,都极难发展进步。随着因特网上新兴的强大应用越来越趋于复杂化,现有的因特网机制在应对这些新的挑战时便显得力不从心。
可编程网络的概念是作为一种促进网络进化的途径而提出的,特别是SDN,它是一种新的网络模式,把执行转发的硬件部分(例如专用的包转发引擎)从控制决策部分(如协议和控制软件)中分离出来。这种控制逻辑的迁移,使得下层网络互连基础设施能够从应用层面上抽象出来,而以前的控制逻辑是紧密集成到网络设备(如以太网交换机)中的,现在则转变为逻辑上集中的可访问的控制器。这一分离提供了一个更灵活的、可编程的、与厂商无关的、高性价比的创新网络架构。除了网络的抽象化,SDN架构也将提供一组应用编程接口(Application Programming Interface,API),使得常用网络服务的实现更为简便,这些服务涉及路由、多播、安全、访问控制、带宽管理、流量工程、QoS、能效管理以及各种策略管理等。从逻辑意义上看,SDN中的网络智能被集中到了基于软件的控制器(在控制平面)中,而网络设备变成了简单的数据包转发设备(数据平面),并可以通过开放接口对它进行编程。这种开放编程接口的早期实现之一便是OpenFlow。
将转发硬件从控制逻辑中分离出来,能够简化新型协议和应用的部署,直接进行网络的虚拟化和管理,并且能够把各种中间构件整合到软件实现的控制中。通过精简网络,简化了转发硬件和负责决策的网络控制器,而不用在错综复杂的分散的设备中去实施策略和执行协议。
负责转发功能的硬件包含以下两部分:
1. 一个包含流记录(flow entry)的流表(flow table),流记录由用于匹配当前流的规则和所采取的具体操作构成。
2. 一个传输层协议,用于与控制器进行安全传输,以传递没有记录在当前流表中的新记录。
……
译者序
前 言
第1章 OpenFlow概述 / 1
1.1 理解软件定义网络—OpenFlow特色 / 2
1.2 有关SDN/OpenFlow的工作 / 4
1.3 SDN的基本构件 / 5
1.4 OpenFlow消息 / 13
1.4.1 控制器到交换机的消息 / 14
1.4.2 对称消息 / 18
1.4.3 异步消息 / 18
1.5 北向接口 / 20
1.6 本章总结 / 21
第2章 OpenFlow交换机的实现 / 23
2.1 OpenFlow参考交换机 / 24
2.1.1 异步消息 / 28
2.1.2 对称消息 / 29
2.2 硬件实现 / 29
2.3 基于软件的交换机 / 30
2.4 用Mininet搭建OpenFlow实验环境 / 32
2.4.1 Mininet入门 / 33
2.4.2 Mininet实验 / 36
2.5 本章总结 / 41
第3章 OpenFlow控制器 / 43
3.1 SDN控制器 / 44
3.2 已有的实现方案 / 47
3.2.1 NOX和POX / 47
3.2.2 运行一个POX应用 / 49
3.2.3 NodeFlow / 57
3.2.4 Floodlight / 60
3.3 OpenDaylight / 62
3.4 本章总结 / 64
第4章 环境的搭建 / 65
4.1 理解OpenFlow实验 / 66
4.1.1 外部控制器 / 70
4.1.2 完成OpenFlow实验 / 71
4.2 OpenDaylight / 76
4.2.1 ODL控制器 / 77
4.2.2 基于ODL的SDN实验 / 80
4.3 本章总结 / 85
第5章 网络应用开发 / 87
5.1 网络应用1——学习型以太网交换机 / 88
5.2 网络应用2——简单的防火墙 / 97
5.3 网络应用3——OpenDaylight的简单转发 / 101
5.4 本章总结 / 103
第6章 网络分片的获取 / 105
6.1 网络虚拟化 / 106
6.2 FlowVisor / 107
6.2.1 FlowVisor API / 109
6.2.2 FLOW_MATCH结构 / 111
6.2.3 分片操作结构 / 113
6.3 FlowVisor切分 / 113
6.4 本章总结 / 120
第7章 云计算中的OpenFlow / 121
7.1 OpenStack和Neutron / 122
7.2 OpenStack的组网架构 / 126
7.3 Neutron插件 / 130
7.4 本章总结 / 134
第8章 开源资源 / 137
8.1 交换机 / 138
8.1.1 Open vSwitch / 138
8.1.2 Pantou / 141
8.1.3 Indigo / 142
8.1.4 LINC / 143
8.1.5 XORPlus / 143
8.1.6 OF13SoftSwitch / 145
8.2 控制器 / 146
8.2.1 Beacon / 146
8.2.2 Floodlight / 146
8.2.3 Maestro / 148
8.2.4 Trema / 149
8.2.5 FlowER / 150
8.2.6 Ryu / 150
8.3 其他 / 151
8.3.1 FlowVisor / 151
8.3.2 Avior / 153
8.3.3 RouteFlow / 154
8.3.4 OFlops and Cbench / 155
8.3.5 OSCARS / 156
8.3.6 Twister / 157
8.3.7 FortNOX / 157
8.3.8 Nettle / 158
8.3.9 Frenetic / 158
8.3.10 OESS / 158
8.4 本章总结 / 158