《软件定义网络:基于OpenFlow的SDN》一一1.3 SDN的基本构件

1.3 SDN的基本构件

部署SDN需要的基本构件包括:SDN交换机(如OpenFlow交换机)、SDN控制器、控制器中用于和转发设备通信的接口、通常的南向接口(OpenFlow)和网络应用接口(北向接口)。在SDN中,由于控制逻辑和算法被卸载到了控制器中,交换机一般被表示为能够通过开放接口访问的基础转发硬件。OpenFlow交换机分为两类:纯粹的OpenFlow交换机(只支持OpenFlow操作)和混合的OpenFlow交换机(可启用OpenFlow操作)。
纯粹的OpenFlow交换机不具有传统交换机的板级控制特性,完全依赖于控制器作转发决策。混合的OpenFlow交换机除了支持传统的操作和协议之外,还支持OpenFlow操作。目前大多数商用交换机都是混合型的。OpenFlow交换机包括一个流表,流表负责执行数据包的查表和转发,交换机的每个流表保存一组流的纪录,流记录中包括:

  1. 首部字段或匹配字段、数据包首部中提取的信息、输入端口以及元数据信息,这些信息用于匹配输入的包。
  2. 计数器,用于对特定的流进行统计,如统计所接收数据包的个数、字节数以及流的持续时间等。
  3. 一组应用于所匹配的数据包的指令或具体操作,决定如何处理符合匹配条件的数据包。例如,将数据包从指定的端口转发出去。
    SDN(以及OpenFlow)中分离的系统可以和计算机平台上的应用程序与操作系统类比,在SDN中,控制器(即网络操作系统)提供了网络的可编程接口,通过编写应用程序,可以完成控制和管理任务,实现新的功能。图1-1给出了该模型的分层视图,在该视图中,控制是集中式的,编写应用程序时,可以把网络视为一个单一的系统,这样虽然简化了策略的执行与管理任务,但控制器和网络转发单元之间的绑定关系必须随时保持着。如图1-1所示,担任网络操作系统角色的控制器必须至少实现两个接口:一个南向接口,支持控制器和交换机之间的通信;一个北向接口,为控制器和高层的策略应用及服务提供可编程的API。首部字段(匹配字段)显示在图1-1中,流表中的每条记录包含特定的值或ANY(图1-1中用*即通配符表示),后者表示能够匹配任何值。

如果交换机处理IP源地址和目的地址字段时支持子网掩码,则能够更精确地定义匹配。端口字段用数字表示交换机的端口(或输入端口),编号从1开始,该字段的长度取决于具体的实现。输入端口字段适用于所有的数据包。交换机有效端口的源和目的MAC(以太网)地址字段也适用于所有数据包,其长度为48比特。以太网类型字段长度为16比特,适用于所有有效端口上的数据包,OpenFlow交换机必须既能够匹配标准的以太网数据包,也能够匹配带有子网访问协议(Subnetwork Access Protocol,SNAP)首部和0x000000值的机构唯一识别符(Organizationally Unique Identifier,OUI)的IEEE 802.2数据包。特定值0x05FF用于匹配所有不带有SNAP首部的802.3数据包。VLAN ID适用于所有类型为0x8100的以太网数据包。该字段的长度为12比特(即4096个VLAN),VLAN优先级字段长度为3比特,可用于所有类型为0x8100的以太网数据包。IP源和目的地址字段长度为32比特,适用于所有IP和ARP数据包,这些字段可以与子网掩码进行掩码操作。IP报文的协议字段适用于所有IP数据包、以太网帧封装的数据包和ARP数据包。该字段的长度是8比特,如果是ARP数据包,则只使用ARP报文操作码的低8位,IP报文的ToS (Type of Service)字段长度为6比特,适用于所有IP数据包。这个字段的值是8比特,ToS取其中的高6位。源端口和目的传输端口地址(以及ICMP的类型和代码字段)长度为16比特,适用于所有的TCP、UDP和ICMP数据包。若只考虑ICMP的类型和代码,则只需考虑低8位值的匹配。

图1-1 OpenFlow交换机、流表、OpenFlow控制器和网络应用
每个表、每个流、每个端口和每个队列都维持一个计数器。计数器循环计数,因此不设进位溢出位,图1-2给出了所需的计数器集合,图中以及本书中提到的字节都是指8比特的组合,持续时间表示某个流在交换机的流表中存在的时间。接收错误字段包括所有显式定义的错误:帧错误、超限、CRC错误以及其他错误。

图1-2 用于信息统计的计数器列表
每个流记录都跟0个或者多个具体操作相关联,这些操作指示OpenFlow交换机如何处理与流记录匹配的数据包。如果没有具体的转发操作,该数据包就被丢弃。具体操作列表必须按照一定的顺序执行,然而,这并不确保一个端口上数据包的输出顺序。例如,两个经操作列表处理后所产生的到达同一个输出端口的数据包,很可能会以任意的顺序输出。纯粹的OpenFlow交换机只支持规定的(required)操作,而混合的OpenFlow交换机则可以同时支持常规(NORMAL)操作。两种交换机都能支持FLOOD操作。规定操作是:
转发:OpenFlow交换机必须能够将数据包转发到物理端口,同时支持向下列虚拟端口的转发:
ALL:将数据包发送到除了其输入端口以外的所有接口。
CONTROLLER:封装数据包并将其发送到控制器。
LOCAL:将数据包发送到交换机的本地网络栈。
TABLE(仅用于输出数据包的消息):执行流表中的操作。
IN_PORT:从输入端口输出数据包。
丢弃:表明丢弃所有相匹配的数据包。若流记录中没有定义具体操作,则作丢弃处理。
可选的操作包括:
转发:交换机在进行转发操作时,可以选择支持以下的虚拟端口:
NORMAL:采用交换机所支持的常规转发途径转发数据包(即常规的第2层、VLAN,或者第3层处理)。
FLOOD:沿最小支撑树以洪泛的方式向除输入接口以外的端口转发数据包。
进入队列(Enqueue):通过端口的队列转发数据包,转发行为由所配置的队列策略决定,通常被用来提供基本的QoS支持。
修改字段(Modify field):可选的字段修改操作有:
设置VLAN ID:若没有定义VLAN,则增加一个新的首部,在其中定义VLAN ID(12比特的数据),并把优先级设为0;若原来已存在VLAN首部,则用新的定义值取代原来的VLAN ID。
设置VLAN优先级:若没有定义VLAN,则增加一个新的首部,在其中定义优先级(3比特的取值),并把VLAN ID设为0;若原来已存在VLAN首部,则用新的定义值取代原来的优先级字段值。
剥离VLAN首部:若存在VLAN首部,则将其剥离。
修改源或目的以太网MAC地址:用新的取值(48比特)替换原来的源或目的以太网MAC地址。
修改源或目的IPv4地址:用新的取值(32比特的数据)替换原来的源或目的IPv4地址,并更新IP报文的校验和(同样适用于TCP/UDP的校验和)。该操作只针对IPv4数据包。
修改IP报文的服务类型(ToS)字段值:用新的取值(6比特的数据)替换原来的ToS字段值,该操作只针对IPv4数据包。
修改传输层的源或目的端口号:用新的取值(16比特的数据)替换原来的源或目的端口号,并更新TCP或UDP的校验和。该操作只针对TCP或UDP数据包。
每当有一个数据包到达OpenFlow交换机时,数据包的首部便被提取出来,跟流记录中的匹配字段进行比对,查找匹配从流表的第一个记录开始,依次往下进行,当发现一个相匹配的记录,交换机将使用该流记录所关联的一系列操作对数据包进行处理。每当发现一个和流记录匹配的数据包,就会更新这个流记录所对应的计数器值。如果查表结果没有发现匹配记录,交换机将根据流表的失配(table-missing)记录中的指令决定采取相应操作。流表中必须包含一个失配记录,以便应对找不到匹配的情况,在这个特殊的记录中定义一组操作,用于处理找不到匹配的输入数据包,这些操作包括:丢弃该数据包、向所有的接口发送该数据包,或者通过安全的OpenFlow信道向控制器转发该数据包。查表时使用的首部字段取决于数据包的类型,具体描述如下:
将流的有关输入端口的规定与接收数据包的物理端口进行比对。
所有数据包的以太网帧首部(如图1-1中所定义的源MAC地址、目的MAC地址、以太网的类型字段等)都用于查表匹配。
如果是一个VLAN数据包(以太网类型字段值为0x8100),其VLAN ID和VLAN优先级(PCP)字段用于查表匹配。
如果是IP数据包(以太网类型字段值为0x0800),IP首部包含的字段(源IP地址、目的IP地址、协议字段、ToS等)均用于查表匹配。
如果IP数据包封装的是TCP或UDP(IP报文首部的协议字段值为6或17),则查表比对的信息包括传输层端口号(TCP/UDP源或目的端口)。
如果IP数据包封装的是ICMP报文(IP报文首部的协议字段值为1),则查表时会包括ICMP的类型和代码字段。
如果数据包的IP报文分片的偏移量字段是非零值,或者不是最后一个分片(more fragment 标志位为1),查表时把传输层端口号设为0。
对于ARP数据包(以太网类型字段值等于0x0806),可以根据情况,选择把其中的源IP和目的IP地址字段值包括到查表的字段中。
数据包跟流表记录的匹配按照优先级进行,精确定义了匹配规则(即没有使用通配符)的流记录总是具有最高的优先级,全部采用通配符的流记录具有与其相关联的优先级,具有高优先级的流记录总是先于具有低优先级的流记录进行匹配。如果多个流记录具有相同的优先级,则交换机可以选取任意的匹配顺序。编号越大,优先级越高。图1-3表示OpenFlow交换机中的数据包处理流程。需要注意的很重要的一点是:如果一个流表的字段值是ANY(*,通配符),则它就能够匹配首部中的任何可能取值。
以太网的帧有各种类型(如Ethernet II、带有或者不带有SNAP的802.3帧等),如果数据包是Ethernet II格式的帧,则以太帧的类型字段按照预期的方法处理;如果数据包是802.3格式的帧,带有SNAP首部,OUI的值等于0x000000,则用SNAP协议ID来比对流的以太网帧类型字段。如果一个流记录中规定以太帧类型为0x05FF,那它就能够匹配所有不带SNAP首部的802.2以太网帧,以及虽然带有SNAP首部,但是OUI取值不等于0x000000的以太网帧。

图1-3 OpenFlow交换机中的数据包处理流程

时间: 2024-09-20 03:09:06

《软件定义网络:基于OpenFlow的SDN》一一1.3 SDN的基本构件的相关文章

面向云的软件定义网络与OpenFlow商业发展

在云计算时代,数据中心将成为我们应用和数据交付关键中心,用户从园区.远程分支点.无线和互联网不同位置访问数据与服务,连接这些服务的网络比以往来得更重要一些.云计算需要可靠的.横向扩展和高性能网络,从用户接入.互联网到数据中心.大规模部署虚拟化与云计算催生了以工作负载为中心的下一代数据中心网络,复杂的网络需要为工作负载提供端对端网络资源响应.如何应对业务快速响应需求是下一代数据中心网络人员不得不面对的挑战.以新观点来解决网络在新应用下的挑战,控制平面与转发平面分离,软件定义网络为人们提供了新思路和

各巨头聚焦OpenFlow和软件定义网络

一年多来,网络业一直都在讨论OpenFlow与软件定义网络(SDN).通过软件定义网络,工程师们将网络控制层与底层硬件分离,从而实现更精细的管理.他们也能够动态地分配虚拟交换,从而支持服务器虚拟化环境.问题是,虽然有很多的OpenFlow和软件定义网络应用程序, 但是许多用户仍然在等待具体的用例证明.他们还希望了解用OpenFlow语言编写的 众多应用程序是如何在现有网络硬件上使用的.本周,Tech Field Day在加利福尼亚举办的OpenFlow讨论会上,数据中心大户谷歌和雅虎以及思科和B

软件定义网络架构的应用层

软件定义网络(SDN)的目标是实现理想化的企业网络,将网络控制与物理网络拓扑分离,从而创造一种从中央管理控制器向所有交换机和路由器发送流量的环境.在软件定义网络环境中,这种基于软件的控制器必须具备网络资源和容量的端到端监控能力.通过网络的端到端视图,SDN控制器就能够成为网络应用程序和服务的特殊运行平台.OpenFlow是一种支持软件定义网络的 先进规范, 但是OpenFlow规范并没有完全确定软件定义网络是如何支持这些高级网络的.解决方法始于软件定义网络的架构,它是OpenFlow应用程序的基

软件定义网络与ADC的交集是什么?

软件定义网络(SDN)的整个概念是关于抽象化硬件以启用新类型的网络流.虽然很多 围绕SDN的早期讨论集中在路由器和交换机中,SDN其实并不止于此.SDN有很多用途,包括帮助Web内容优化(WCO)和应用交付控制器(ADC)业务等.近日,网络厂商Riverbed凭借其Stingray产品系列加入了web内容优化市场,该产品系列也包括应用交付控制器(ADC)功能.Riverbed公司产品营销主管Arpuva Dave表示其公司的Steelhead广域网优化技术最开始采用的是物理硬件.他指出,对于St

《软件定义网络:基于OpenFlow的SDN》一一3.2 已有的实现方案

3.2 已有的实现方案 目前存在不同的OpenFlow(以及SDN)控制器实现方案,我们将把它们作为现有开源项目的组成部分,放在第8章中详细介绍.本章内容主要集中在NOX.POX.NodeFlow.Floodlight(派生自Beacon)和OpenDaylight方面,通过这些实现方案介绍若干OpenFlow控制器,以及在开发网络应用时各种可选的编程语言.3.2.1 NOX和POX 第一个OpenFlow控制器是用C++编写的NOX(www.noxrepo.org),它同时还提供了用于Pyth

《软件定义网络:基于OpenFlow的SDN》一一导读

前 言 将网络管理功能从网络设备中分离出来是软件定义网络(Software Defined Networking,SDN)的基本特征.SDN是计算机网络模式的一个新的转变,它意味着将网络的控制功能(即控制平面)与数据转发功能(即数据平面)相分离,而且所分离出来的控制部分是可编程的.这种控制逻辑的迁移使得下层网络互连基础设施能够从应用层面上抽象出来,之前的控制逻辑是紧密集成到网络设备(如以太网交换机)中的,现在则转变为可访问的逻辑意义上的集中式控制器.这一分离为构建一个更灵活的.可编程的.与厂商无

《软件定义网络:基于OpenFlow的SDN》一一3.1 SDN控制器

3.1 SDN控制器 如后面的图3-1所描绘的那样,在软件定义网络(SDN)中,特别是OpenFlow中,控制平面和数据平面是分离的,我们可以把两者类比作操作系统和计算机硬件,OpenFlow控制器(就好比操作系统)提供一个OpenFlow交换机(就好比计算机硬件)的编程接口,利用这个编程接口,就可以开发网络应用,完成控制和管理任务,并提供新的功能.SDN中的控制平面,特别是OpenFlow的控制平面,在逻辑上是集中化的,因此在开发网络应用的时候,可以把网络视为一个系统.由于采用应变式的(rea

《软件定义网络:基于OpenFlow的SDN》一一1.1 理解软件定义网络——OpenFlow特色

1.1 理解软件定义网络--OpenFlow特色 软件定义网络(Software Defined Networking,SDN)通常被认为是计算机网络领域中的创新概念,其目标是极大地简化网络控制和管理,通过网络的可编程性引导创新.通常,计算机网络的建设依赖于大量的网络设备(如交换机.路由器.防火墙等),以及在设备中嵌入实现的复杂网络协议(软件).网络工程师负责配置各种策略,以应对各种各样的网络事件和应用场景.他们需要手工地将这些高层策略转换为低层的配置命令,这些繁杂的任务通常只能通过有限的工具完

《软件定义网络:基于OpenFlow的SDN》一一第1章 OpenFlow概述

第1章 OpenFlow概述 为了让读者更好地理解OpenFlow的功能及其组成部分,了解如何利用它开发基于OpenFlow的网络应用,有必要简单介绍一下OpenFlow及其工作原理.在真正搭建支持SDN/OpenFlow的实验和开发环境之前,本章首先介绍所需要的知识.OpenFlow可以说是SDN概念的早期实现方案之一,所以,在了解OpenFlow之前,有必要先简单介绍一下SDN以及围绕SDN所展开的工作.

思科和VMware软件定义网络SDN策略对比

[天极网服务器频道2月18日消息]在http://www.aliyun.com/zixun/aggregation/13995.html">服务器虚拟化已经深入人心之际,网络虚拟化被提上日程.SDN软件定义网络正在成为网络厂商和软件厂商追捧的概念,而这里面以思科和VMware最为典型.因为他们都围绕各自收购的Insieme和Nicira重新打造了SDN和网络虚拟化战略.VMware的网络虚拟化战略完全基于软件,而思科SDN则由硬件驱动. 2012年VMware耗资12.6亿美元收购了专注于