1.可编程网络的需要
由于当今网络基础设施已经“僵化”,网络研究方面的大多数新想法都未经尝试和测试。虚拟化可编程网络可以降低尝试新想法的门槛,提高网络基础设施的创新速度,但在全国范围内部署设施需要数年的时间,因此我们关注较为短期的实现:作为研究人员,我们如何在校园网络中进行实验?
一个想法是让“名牌”设备供应商在他们的交换机和路由器上提供一个开放的、可编程的、虚拟化的平台,但是商业交换机和路由器通常不提供开放的软件平台,更不用说提供虚拟化其硬件或软件的手段。也已经有一些开放的软件平台存在,但是达不到我们对于性能和端口密度的要求。因此我们想出一种在通用性上妥协,并寻求一定程度上更灵活的交换机,它有以下基本要求:
- 易于高性能和低成本实现。
- 能够支持广泛的研究。
- 确保将实验流量与生产流量隔离。
- 符合供应商对封闭平台的需求。
为满足这四个需求,我们提出OpenFlow交换机规范,这是对满足以上四个目标的初步尝试。
2.OpenFlow交换机
基本思想:大多数现代以太网交换机和路由器都包含以线速运行的流表(通常由TCAM构建),以实现防火墙、NAT、QOS和收集统计数据。虽然不同生产商的流表有所区别,但是我们已经从很多交换机、路由器中识别出一个有趣的共同功能集合,而OpenFlow就利用了这个共同功能集合,提供一个开放的协议,以便对不同交换机与路由器中的流表编程。
OpenFlow交换机中的数据通路由一个流表,以及流表中流表项的关联“行为”组成。为了达到高性能和低成本的需求,我们不能考虑对所有的包都可以任意处理,只能尽量做到范围有限但仍然实用。我们定义,OpenFlow交换机至少由三部分组成:
- 一个流表,其中包含每个流的“行为”,告诉交换机如何处理这个流。
- 一个连接交换机与远程控制器的安全通道,用来在两者之间传输命令与数据包。
- OpenFlow协议,交换机与远程控制器之间通信的开放标准。通过此协议,交换机流表中的流表项可以在外部被定义,从而避免研究者对交换机编程。
我们很有必要将交换机分为两类:第一类是OpenFlow专用交换机,不支持标准的二层、三层网络处理,第二类是OpenFlow通用交换机,支持标准的二层、三层网络处理,同时具备OpenFlow的新特性。
OpenFlow专用交换机
OpenFlow专用交换机仅仅按远程控制器的定义在端口之间转发数据,包的转发完全由控制器决定。在此场景下,流的定义是宽泛的,并且只受限于流表的特定实现及其能力。每条流表项有一个与之关联的简单行为,以下是三个最基本的(所有OpenFlow交换机必需支持):
- 转发流的数据包到一个或者多个端口,允许此流通过网络。
- 封装并转发此流的数据包到控制器,数据包首先被投递到安全通道,在这里被封装并最终发送给控制器。
- 丢弃流的数据包。
流表中的每条流表项包含三个字段:(1)头部:定义流。(2)行为,定义如何处理流的包。(3)统计,追踪流中包的数量及字节数,以及最后一个包与流表项匹配的时间(以便于排除非活跃流)。
OpenFlow通用交换机
一些商用交换机、路由器、接入点设备通过添加对流表、安全通道、OpenFlow协议的支持进行功能强化,从而具备OpenFlow新特性。我们的目标是使实验能够在已有的商用网络中展开,并能够与网络中常规的流量以及应用并行。为了完成第三点要求——确保将实验流量与生产流量隔离,我们提出两种方法:
1.增加交换机的第四部分:转发流量包到交换机的常规处理管道。
2.为商用流量与实验流量分别定义VLAN集合。
3.使用OPENFLOW
实例
假设Amy(一位研究人员)发明了Amy OSPF作为一种新的路由协议来代替OSPF,她想在一个由OpenFlow交换机组成的网络中尝试她的协议,而不需要更改任何终端主机软件。Amy OSPF将在一个控制器中运行,每当一个新的应用程序流启动时,Amy OSPF将通过一系列OpenFlow交换机选择一条路由,并在路径上的每个交换机中添加一个流条目。在她的实验中,Amy决定从她自己的台式电脑中使用Amy OSPF的流量进入OpenFlow网络,所以她不中断网络,也不会影响其他人。为此,她将一个流定义为通过PC连接的交换机端口进入OpenFlow交换机的所有流量,并添加一个流条目,其操作为“将所有数据包封装并转发到控制器”。当她的数据包到达控制器时,她的新协议选择一条路由,并将一个新的流条目(用于应用程序流)添加到沿所选路径的每个交换机,因此当随后的数据包到达交换机时,它们会被流表快速地(以行速率)处理。
控制器在实验过程中动态的增、删流时,很容易产生下列疑问:中心化的控制器可以足够快的处理新流以及管理交换机中的流吗?如果一个控制器失效会发生什么?这些问题一定程度上在一个名为Ethane的原型中得以解决,它使用简单的流交换机与一个中心控制器。初步结果表明,一个运行于桌面PC的Ethane控制器每秒可以处理10000个新流,足够应付一个大型的校园网。关于扩展性与可靠性,使控制器无状态,以及在多个独立的设备之间做简单的负载均衡是可行的。
当然还要考虑这样的情况,Amy很有可能在一个很多人使用中的网络里测试她的新协议,因此我们希望网络还具有下面两个属性:
- 属于普通用户而非Amy的流量应该按路由器中运行的,常规的、经充分测试过的协议转发。
- Amy仅能够控制属于自己的或者是网络管理员允许她控制的流。
对于第一个属性,OpenFlow通用路由器即可实现。在实验中,所有来自普通用户的流量默认均按常规方式处理,属于Amy的流量允许其自由控制。而第二个属性的实现则有赖于控制器,这里所说的控制器可以被认为是使研究人员能够实现各种实验的平台,并且可以通过适当设置使用权限或其他方式来限制单个研究人员控制流入口的权限。
展望:
网络管理与访问控制、VLANs、移动终端的VOIP客户端WIFI网络切换、非IP网络、处理包而非流
4.OpenFlow联盟
5.部署OpenFlow交换机
成千上万大学、院校的每栋建筑里都有配线间,交换机、路由器、接入设备也遍布校园,因此出售支持OpenFlow功能的交换机对网络设备生产商而言将会是一个市场机遇。
6.结论
我们认为,OpenFlow的是一个务实的妥协,允许研究者以统一的方式,在各种交换机和路由器上进行实验,无需厂商暴露他们产品的内部工作原理,或者逼迫研究人员编写只适用以某个特定供应商的控制软件。如果在我们的校园里成功部署了OpenFlow网络,我们希望OpenFlow将逐渐出现在其他大学,以增加支持实验的网络数量。我们希望新一代控制软件的出现,使研究人员能够在其他人的工作基础上,重复利用控制器进行实验。随着时间的推移,我们希望在不同大学的OpenFlow网络,能够通过隧道和覆盖网络进行互联,或者也许在骨干网络上运行新的OpenFlow网络,连接彼此的校园网。