《图解 OpenFlow》读书笔记——第一章《OpenFlow 概要》

作者 Shilei Tian 日期 2016-03-20
《图解 OpenFlow》读书笔记——第一章《OpenFlow 概要》

最近在看 SDN 相关的论文,ONF 将 OpenFlow 用作 SDN 的基础技术,将 SDN 用作解决方案,自然就不可避免地要了解一下 OpenFlow 的知识。《图解 OpenFlow》是 2016 年的新作,浅显易懂地介绍 OpenFlow 的相关知识,所以作为入门的读物再好不过。由于这是在图书馆借的书,因此需要将一些我认为重要的知识点摘录下来,以留作后期翻阅。

  1. OpenFlow 网络中的各种设置,并不是通过转发数据包的 OpenFlow 交换机来完成的,而是通过统一控制多台 OpenFlow 交换机的 openFlow 控制器来完成。
  2. OpenFlow 是以网络设备中内置了 TCAM(Ternary Content-Addressable Memory,三态内容寻址存储器)存储器为前提来设计的。
  3. 以往的 L2 交换机采用以太网地址和 VLAN 标签进行交换处理,而 OpenFlow 作为构建网络的标准规范,将各数据包(或帧)持有的以太网地址、VLAN 标签、IP 地址、TCP/UDP 端口号等特征作为“流”来处理,在此基础上进行交换,并可以灵活设置路由的路径。
  4. OpenFlow 架构示例:
    OpenFlow 架构示例
    虽然用户 PC 连接至 OpenFlow 网络,不过连接该用户 PC 的 OpenFlow 交换机无力端口向用户 PC 提供的是和通常 L2 交换机相同的功能。在上图中,OpenFlow 网络属于 L2 网络,因此认为用户 PC 已与路由器建立了 L2 连接。
    从上图也可以看出 OpenFlow 的典型特征,那就是将用于控制的网络和用语数据包发送的网络分离。
  5. 将用于控制的网络称为“控制面”,将用于数据包发送的网络称为“数据面”。
  6. 通过将控制面和数据面分离在不同的设备中,使 OpenFlow 控制器可同时控制多台 OpenFlow 交换机。
  7. 在构建 OpenFlow 网络时,原则上需要将控制面和数据面作为不同的网络。如何实现“不同的网络”有不同的方式,但并非必须要构建另外的物理网络。例如覆盖(Overlay)方式,就是在将数据面构建为覆盖网络时,将网络构件中使用的既有网络直接用作控制面。除此之外,还可以使用 VLAN 等对同一物理网络进行逻辑分割,构件数据面和控制面,或者利用能够同时拥有数据面和控制面的“In-Band 控制面通道”技术。
  8. 数据面的构建方法有 3 种,即直接连接 OpenFlow 交换机的“Hop-By-Hop 方式”、通过覆盖网络连接 OpenFlow 交换机的“覆盖方式”、组合以两种方法的“混合方式”。
  9. Hop-By-Hop 方式:
    Hop-By-Hop 方式的物理网络拓扑
    优点:
    1. OpenFlow 交换机的数据面直接相互连接。
    2. 具有能够进行高速处理,判断何处出现故障时的考虑因素较少。
  10. 覆盖方式:在难以直接连接各 OpenFlow 交换机的环境中,可采用覆盖方式导入 OpenFlow。该方式采用 IP 通道等技术构建与数据面的覆盖网络。物理网络拓扑如下图所示:
    覆盖模式的物理网络拓扑
    在上图中,各 OpenFlow 交换机和 PC 作为虚拟服务器在同一物理服务器内运行。各 OpenFlow 交换机通过 IP 通道互相连接,构建如下图所示的逻辑网络拓扑:
    覆盖模式的逻辑网络拓扑
    Hop-By-Hop 方式通常要求你重新为数据面准备专用网络,而覆盖方式则具有同时使用现有网络和 OpenFlow 网络的优点。另一方面,由于覆盖方式以封装(Encapsulation)为前提,因此具有处理性能低于 Hop-By-Hop 方式,MTU(Maximum Transfer Unit,最大传输单位)变小的缺点。
  11. OpenFlow 的构成要素包括 OpenFlow 控制器、OpenFlow 交换机、经由 OpenFlow 控制器和交换机之间的 OpenFlow 通道建立起的连接、OpenFlow 交换机中的流表。
  12. OpenFlow 的设置根据发出“何种情况下应如何处理”这一指令的时机大概可分为两种模式。一种是在 OpenFlow 控制器和 OpenFlow 交换机之间建立 OpenFlow 通道后,立即发送事先已设置指令的“Proactive 模式”(当然,该模式不是必须在 OpenFlow 交换机和 OpenFlow 控制器建立 OpenFlow 通道后立即发送,也可以在通道建立后的任意时间再发送)。另一种是当 OpenFlow 交换机接收到未知的数据包时,向 OpenFlow 控制器询问(通过 Packet-In 消息)“如何进行处理”的“Reactive 模式”。