OpenFlow -- Enabling Innovation in Campus Networks


OpenFlow: Enabling Innovation in Campus Networks

0x00 引言

这篇的论文的题目中透露出OpenFlow是为了实验新的网络协议,面向校园网络设计的。现在的应用当然更加广泛。OpenFlow基于以太网交换机,通过一个内部的flow-table,和一个标准的接口用来添加移除表里面的一项flow。OpenFlow是一个实用的折中办法,一方面它可以是的研究者可以实现不同的交换机的实验环境,另外一方面它不要求交换机暴露内部的细节。

0x01 为什么需要一个可编程的网络

现在使用的网络技术和相关的基础设施是如此地成功,以至于给现在的有关网络的研究要应用到现实中带来了巨大的阻碍。这里感觉IPv6就是一个例子(虽然和OpenFlow没啥关系),IPv4非常成功,替换IPv4的成本造成了现在的IPv6的使用比例依旧很低。原来存在的基础设施带动了网络的发展,但是有些时候它也阻碍了网络的继续创新。对于新的网络技术,很难在实际的环境中去验证,更别提是使用了。为了处理这些问题,现在的一些相关的社区已经提出了一些想法,比如GENI,倡导使用一些可编程的网络硬件,比如交换机,

  For example, in GENI it is envisaged that a researcher will be allocated a slice of resources across the whole network, consisting of a portion of network links, packet processing elements (e.g. routers) and end-hosts; researchers program their slices to behave as they wish. A slice could extend across the backbone, into access networks, into college campuses, industrial research labs, and include wiring closets, wireless networks, and sensor networks.

虚拟化的可编程网络就可以方便辅助在网络技术方面的新的想法。不过要处理不少的问题:

  • 在实验的早期,网络的管理者如何平滑地将这些实现性质的设备加入现在的网络?
  • 使用什么样的方法使得研究者可以控制它要实验部分的网络又不至于影响网络的其他的部分?
  • 网络中的交换机对于这些需要有具体需要什么样的功能?

OpenFlow的目标就是通过这样的一个可编程的交换机的功能,用来实现对网络功能的拓展。要同时满足交换机生产厂商和研究者的一些需求,这样的交换机有以下这些要求:

• Amenable to high-performance and low-cost implementations.
• Capable of supporting a broad range of research.
• Assured to isolate experimental traffic from production traffic.
• Consistent with vendors’ need for closed platforms.

OpenFlow Switch规范就是为了实现这些目标的一个规范。

0x02 OpenFlow交换机

OpenFlow利用现在的交换机的一个特点:现在的以太网的交换机一般在内部一般都有flow-tables,flow-tables用于实现防火墙、NAT、QoS和收集一些统计信息。这个Flow Table不同的厂商是不一样的,这里就需要从不同中找出一个能够共同拥有的功能集合。OpenFlow通过一个开放的协议来对交换机和路由器里面的Flow Table进行编程操作,网络管理员可以控制其中的全部或者部分流量的流向,是流行通常环境的还是实验的环境。而研究者就可以控制他们的流,

 In this way, researchers can try new routing protocols, security models, addressing schemes, and even alternatives to IP. On the same network, the production traffic is isolated and processed in the same way as today.

对于一个OpenFlow交换机,它一个数据面通常由一个Flow Table和每一个流关联的一个Action组成,这些行为是可以拓展的。这篇Paper中只会设计到对OpenFlow交换机的最基本的要求,一个OpenFlow交换机至少由3部分组成:1. 一个Flow Table,加上与其中的流对应的Action;2.一个 Secure Channel,连接交换机和远程的控制器,用于控制器和交换机之间的命令和数据包的传输;3. 一个OpenFlow Protocol,提供一个标准的控制器对交换机的控制协议。这里可以将OpenFlow交换机分为2类:

  • 专用的OpenFlow交换机,对于这类型的交换机,它可以理解为就是一个datapath的单元,也仅仅是根据控制器的要求来转发数据包。不过在这里的流的定义也是一种广义上的,可以是常见的TCP的流,也可以就是来自特定的MAC地址、IP地址的数据包,也可能就是包含同一个的VLAN标记后者是来自同一个的交换机的端口。下面这几种基本的Action是必须拥有的:

    1. 转发一个流的包到一个or多个的端口;
    2. 封装和发送一个包到控制器,这里是通过前面提到的Scure Channel进行的。这种包的一个例子就是一个流的第一个包,发送给控制器让它来决定是否建立这个流等;
    3. 丢弃包,一般处于安全的考虑;

    一个基本的header字段如下面的图,

    An entry in the Flow-Table has three fields: (1) A packet header that defines the flow, (2) The action, which defines how the packets should be processed, and (3) Statistics, which keep track of the number of packets and bytes for each flow, and the time since the last packet matched the flow (to help with the removal of inactive flows).
    

openflow-header

  • 可以使用的OpenFlow功能通常的交换机,这里就是现在的一些交换机的功能增强,

    ... be enhanced with the OpenFlow feature by adding the Flow Table, Secure Channel and OpenFlow Protocol. Typically, the Flow Table will re-use existing hardware, such as a TCAM; the Secure Channel and Protocol will be ported to run on the switch’s operating system.
    

    这类交换机必须要求能够隔离常规的流量和实验的流量。这里可以有2中解决方法。一种是增加另外的一项必要的Action:4. 通过交换机的常规的处理流水线转发包;另外的一种方法是为两类流量分别定义一个VLAN集合。交换机可以支持其中的一种或者是两者都支持。

支持基本的功能的交换机称之为“Type 0“交换机,还添加了额外功能的则称称之为“Type 1”交换机。

0x03 OpenFlow的使用

一些使用OpenFlow的例子or建议:

  • 一个Amy-OSPF协议,是新的OSPF的路由协议,

     In her experiment, Amy decides to use Amy-OSPF for the traffic entering the OpenFlow network from her own desktop PC — so she doesn’t disrupt the network for others. To do this, she defines one flow to be all the traffic entering the OpenFlow switch through the switch port her PC is connected to, and adds a flow-entry with the action “Encapsulate and for- ward all packets to a controller”.
    
  • 网络管理与访问控制,简而言之就是可以允许做什么不允许做什么。例如要求HTTP流量必须通过某个代理,不能使用VoIP等;

  • VLANs,用于划分独立隔离的网络;

  • Mobile wireless VOIP clients,在客户端接入的WiFi网络变化是也可以不间断通信;

  • A non-IP network,实现一个不需要IP地址的网络;

  • Processing packets rather than flows,……

openflow-idealized

参考

  1. OpenFlow: Enabling Innovation in Campus Networks, SIGCOMM’08.