之前提到过,nick教授等人提出的OpenFlow的初衷就是能够自己搭建一个网络,用于目前实验过程中对于协议的一些认证等等提供方便,在文章的摘要当中,nick等人提高,openflow基于的是以太网的交换机,并且提出了流表的概念(具体结构将会在后面提到),与此同时还包括增删流表项的一些标准化接口。
文章的第一部分讲的是THE NEED FOR PROGRAMMABLE NETWORKS,也就是目前对于可编程网络的这种需求,首先提到的就是一些研究人员对于网络设备的安装、协议的安装的庞大性的不满,因为他们所提出的协议也好、算法也好几乎没有用武之地,没有现成的网络环境来测试他们的想法,也是我们提到过的网络的闭源环境以及商家对于设备的私有化。
正所谓想要什么就去做什么,当时参与网络的大牛就在努力尝试一种可以编程的网络,所谓可编程就是所说的我们可以自己定义网络,通过可以编程的交换机和路由器,分配属于自己的一块网络以及资源,这样就可以进行协议的验证试验,但是这并不是nick教授关心的,因为这是一个长远的目标,他所想的就是能不能先搞出一个小的网络,哪怕只在斯坦福大学计算机系和通信系这两栋大楼所覆盖的网络,用于他们日常实验就足够。其实只要找到方法,扩展到其他范畴就只是时间问题了。
Nick等人没有没有采取的方法就是说服一些网络设备知名厂商去为他们提供一些可编程、开放的设备,这样其实并不现实,商用的路由器、交换机通常不提供开放的软件平台,也就是我们之前提到的闭源性,商业组网通常隐藏内部所有细节,仅提供功能很少的外部接口(这个借口小到只能做包的转发功能),并且不同的厂商之间网络设备的内部架构也是不同的。
虽然有一些已知存在的开放平台,但是性能和端口都不是nick想要的,再就是现有平台的专门的硬件处理线路不适合大学的布线柜,下面这幅图就生动体现了nick等人对于openflow架构的想法
针对这幅图我说一下我对于openflow的理解,这幅图讲的是关于openflow交换机所定义的范围。Openflow交换机中由两部分组成,第一部分就是安全通道,他通过openflow 的协议与我们的PC机也就是控制器相连,另一部分是流表,具体流表的结构后面会介绍到,并且这里所说的流是一个广泛的概念,可以是各种的数据包统称为流。Openflow交换机必须有以下几个基本功能,第一、交换机可以将此流的数据包转发到一个或者多个给定的端口。第二、封装流的数据包并将其转发给控制器。第三、删除流的数据包。
流表项的构成主要有以下三个字段
后面的文章就来详细的讲讲流表以及openflow中到底是怎么进行流的转发的