1.1 OpenFlow的历史
- ONF:Open Networking Foundation(ONF,开放网络基金会),继承OpenFlow交换机论坛活动的形式,制定OpenFlow规范。OpenFlow1.2之后的规范由ONF制定。
1.2 有效运用现有硬件,实现高效设计
- OpenFlow的初期设计思想是:无需设计新的硬件,支队现有硬件更新其软件。因此,OpenFlow是以网络设备中内置了TCAM(Ternary Content-Addressable Memory)存储器为前提来实现的。
- TCAM是对每个位(bit)实施0、1和don’t care三种匹配的三态电子器件,搭载该存储器的目的是在网络中通过硬件高速处理子网掩码和访问控制列表(ACL)。
1.3 所谓OpenFlow,具体是指什么
- 传统二层交换机采用以太网地址和VLAN标签进行交换处理,而OpenFlow作为构建网络的标准规范,将各数据包(或帧)持有的以太网地址、VLAN标签、IP地址、TCP/UDP端口号等特征作为“流”来处理,在此基础上进行交换,并可以灵活设置路由的路径。
- 在构建OpenFlow网络时,原则上需要将控制面和数据面作为不同的网络,这并非必须要构建另外的物理网络。还可以采用覆盖(Overlay)方式、使用VLAN等对同一物理网络进行逻辑分割、或者利用能同时用于数据面和控制面的“In-band控制通道”技术。
- 分别构建物理网络的优势是便于区分发生故障的部分。
- 数据面的构建方法有3种,即直接连接OpenFlow交换机的“Hop-by-Hop方式”、通过覆盖网络连接OpenFlow交换机的“覆盖方式”、组合以上两种方案的“混合方式”。
- Hop-by-Hop方式就是OpenFlow交换机直接物理直连,覆盖方式则采用IP通道等技术构建用于数据面的覆盖网络。覆盖方式具有同时使用现有网络和OpenFlow网络的优点,但处理性能不如Hop-by-Hop,存在MTU变小的缺点。
- OpenFlow控制器和OpenFlow交换机始终维持着经由OpenFlow通道的TCP连接。这是为了让OpenFlow控制器能够检测OpenFlow交换机的状态,并确保能根据需要发出指令。
- OpenFlow的构成要素:OpenFlow控制器、OpenFlow交换机、经由OpenFlow控制器和交换机之间的OpenFlow通道建立起的连接、OpenFlow交换机中的流表。
- OpenFlow下发流表的时机大致可以两种模式。一种是在OpenFlow控制器和OpenFlow交换机之间建立OpenFlow通道后,立即发生实现已设置指令的“Proactive模式”。另一种是当OpenFlow交换机收到未知的数据包时,向控制器询问“如何进行处理”的“Reactive模式”。
- 流表负责描述何种数据包要进行何种处理等设置信息。OpenFlow交换机可拥有多个流表,各流表可拥有多个流表项。流表项描述的是交换机如何处理各种数据包。
1.4 控制器和交换机的基本动作
- OpenFlow交换机启动后,即与控制器建立连接,被称为OpenFlow通道。控制器等待OpenFlow交换机的连接,如果确定对方属于可连接的一方,则通过OpenFlow通道建立连接。
- 通道建立后,由控制器向SW预先发送流表项设定的设置称为Proactive模式。除此之外还有Reactive模式设置。
- 在Reactive模式中,首先会有在SW中没有匹配流表项的未知数据包到达,然后SW会通过Packet-in消息向OpenFlow控制器询问如何处理该数据包。控制器收到后,对其如何处理做出判断。另外还会根据需要向OpenFlow交换机发送指示转发数据包的消息,或者设置流表项以确定以后接收到到相同数据包时的处理方法。
- 除了收到未知数据包,还有收到匹配流表项为Action:发送到控制器时也有可能触发Reactive模式。
1.5 OpenFlow的动作实例
- 通过使用OpenFlow,可构建以往很难实现的网络。
1.6 不断变化的OpenFlow规范
- 2009年12月 OpenFlow1.0
- 2011年2月 OpenFlow1.1
- 2011年12月 OpenFlow1.2
- 2012年6月 OpenFlow1.3
- 2012年9月 OpenFlow1.3.1
- 2013年4月 OpenFlow1.3.2
- ONF将OpenFlow用作SDN的基础技术,将SDN用作解决方案。这本书只讲OpenFlow,不涉及SDN。