在软件定义的网络中,控制器主动或被动地在交换机上安装基于流的规则。
被动方法允许控制器应用程序对传入的流量做出动态决策,但由于控制器的参与,其性能比主动方法差。
为了支持具有更优性能的动态应用程序,我们提出了一种新的软件定义网络交换机原型FAST(Flow-level State Transitions)
使用FAST,控制器只需预先安装状态机,交换机就可以通过将传入的数据包与已安装的筛选器匹配来自动记录流状态转换。
FAST可以支持多种动态应用,并且可以很容易地用当今的商品交换机组件和软件交换机来实现。
软件定义的网络通过将控制平面与数据平面分离而改变了网络。
虽然对于不同的网络管理需求,控制器应用有许多创新,但是这些应用中的大多数仍然依赖于数据平面中的基于流的规则。这些基于流的规则通常在多个分组报头字段(例如,源/目的IP地址)上匹配,在匹配分组上采取预定义动作(例如,丢弃分组,将其转发到输出端口),或者维护计数器(例如,分组或字节的数目)。
控制器基于两种模式:主动或被动,将基于流的规则保存到交换机。
在主动式方法中,控制器为切换到交换机的所有流提前预留交换机中的规则。然而,主动方法需要事先了解交换机上的事件以及如何处理这些事件。
反应式方法支持更多的动态应用程序,但性能较差。在反应性方法中,交换机经常发送事件(例如,每个流的第一个包)到控制器,并且控制器基于这些事件安装基于流的规则。然而,这引入了交换机上的显著开销(CPU、存储器等),高性能开销(即,延迟和吞吐量),以及由于控制器和交换机之间的通信信道受限引起的可伸缩性问题。
我们观察到许多联网任务可以被表示为流上的局部状态机或流的集合。例如,为了实现有状态防火墙,控制器可以在交换机上安装状态机来跟踪TCP状态。每个状态上的关联操作可以基于TCP状态允许/拒绝入站流量。
我们提出FAST(流级状态转换)作为一种新的交换机抽象。快速允许控制器主动地编程状态转换,并允许交换机基于本地信息运行动态动作。
FAST包括三个部分:
允许操作员为各种应用程序编写状态机的抽象
一种快速控制器,将状态机转换为数据平面API,并管理本地状态机与网络范围策略的交互
一个快速数据平面,包括一系列表,用以支持具有商品交换组件的状态机
许多联网任务可以表示为在流或流集合上定义的交换局部状态机,主动式方法不能表达他们的规则随时间变化的任务,这样的任务可以使用反应性方法(以牺牲性能为代价)或使用FAST(表1)来实现。
内在状态机:有许多状态机描述,其状态定义基于协议状态(例如,TCP状态),我们称这些内在状态机。
外部状态机:基于附加动态生成信息的更复杂的状态机去精细状态。
为了支持商品交换机组件的上述例子,我们提出了一种新的基于状态机的交换机。FAST允许交换机根据本地状态自动决定操作,因此,快速实现了对许多任务的更好性能,并且通过将一些工作从控制器卸载到交换机来提高SDN系统的可扩展性。除了性能提升之外,快速抽象还允许在网络策略上应用验证工具,以确保它们符合运营商的意图。FAST重新考虑了SDN中控制平面和数据平面之间的界限,其目标是在对当前交换机进行最小更改的情况下提高性能和可伸缩性。
FAST提供了一种状态机处理网络中数据包的抽象。
State 外部状态机需要存储表示变量值上的许多状态的计数器。根据转换更新变量的方式以及与变量匹配的条件,它们可以用作计数器、位图或时间戳。
Transition 只有当保护条件(表2中的f1)为真时,才会从当前状态转换到目标状态。
Action 当包的保护条件为真时,动作对包执行指令。指令的定义与OpenFlow 1.3相同。
Filter 程序员还可以过滤通过一组状态机的流量。
Instance mapping 一个交换机中可以有多个状态机实例,每个实例都处于不同的状态。
考虑到操作员定义的状态机抽象(表2),FAST会主动将它们安装在交换机上,从而避免控制器的参与。
FAST包括两个关键设计:
另一个是数据平面,它可以很容易地用当今的商品交换机组件实现。
FAST control plane involves two components (Figure 1):(1)The FAST compiler that compiles state machines into switch agents. (2) The switch agents that manage the local state machines at individual switches.
快速控制平面包含两个组件(图1):
将状态机编译成交换代理的快速编译器。
在单个交换机上管理本地状态机的交换机代理。当交换代理在运行时工作时,快速编译器是脱机组件。
快速编译器:快速编译器将运算符指定的状态机定义转换为可以在单个交换机上运行状态机的实际代码(交换机代理)。它使用有关拓扑和交换机约束的信息,使交换机代理特定于交换机功能,并将其配置为仅在交换机的子集上安装状态机(例如,入口)。
交换代理:每个交换代理在交换机上预安装状态机,并在状态机执行期间与其通信。
交换代理有三个职责:
首先,它知道交换机的特性以及交换机如何支持数据平面中的快速抽象,并利用它将状态机转换为Switch API来执行状态机功能。
其次,它可以对具有诸如特征或存储器等有限能力的交换机执行部分状态机实现。
最后,Switch代理将本地事件报告给在控制器上运行的全局任务。
虽然这并不是支持状态机的唯一架构,特别是在软件交换机中,但我们认为这是从基于流的规则到基于状态机的数据平面的过渡步骤。
这个设计包含四个表。状态机筛选器表在多个类型的状态机之间共享,但其他三个是特定于每个状态机定义。
状态机过滤表中的一个条目对应于快速抽象的过滤部分,它为一类状态机选择流量。
尽管与筛选规则匹配的所有流都属于同一类型的状态机,但每个流都对应于可能处于不同状态的实例。状态表记录每个流的当前状态,并与快速抽象中的匹配实例相对应。
此表中的每个条目表示一个转换,并包含三个不同的实体:当前状态的匹配、状态变量和数据包字段的条件以及下一个状态。
动作表将新的状态和包头字段与特定操作相匹配(例如,将数据包转发到端口或丢弃流)。
我们用POX和Open vSwitch在FAST原型中实现了一个状态防火墙。
我们在Mininet中运行一个快速控制器、一个快速交换机、一个发送器和一个接收器。
我们比较了两种方法的快速性:
控制器预先安装两个路由规则的主动方法。这不能跟踪状态,并用作比较的基线。
控制器使用以下技巧接收信号的被动方法:它只在连接进入TCP建立状态后安装路由规则。它还安装了一个附加规则和路由规则,以便将fin信号发送到控制器。
结论是:
FAST can change states with low delay FAST能以低延迟改变状态
FAST state-lookup has low overhead FAST状态查找具有低开销
FAST is scalable FAST是可扩展的
Reactive install
Installing consistent state machines
Verifying state machines
Composing multiple state machines
Features at switches
Using switch resources efficiently
Devoflow提出了规则克隆和基于触发器的交换机测量报告,以减少反应式方法的开销。
状态机被认为是许多网络任务的重要抽象,即使我们不知道网络协议的状态机,也有人建议从跟踪中推断它。
Middlebox management in SDN
一系列的研究试图重新设计中间盒,让控制者来管理它们。
控制器端的一些工作认识到将控制策略与本地和网络范围的逻辑分离的能力。
我们观察到许多网络功能需要根据当前的流状态更改同一流中的操作。因此,我们提出了流级状态转换(FAST)作为SDN的一个新的基元,相比于基于流的规则的基元,快速支持更灵活的网络任务,提高SDN控制器的性能和可扩展性,并且可以很容易地用商品交换机组件来实现。
FAST最创新的一点是,为了更好地支持更多的动态应用程序,引入了流级状态转换,不同于之前的控制器基于流的规则去处理,而是安装了一个状态机在数据平面里,通过状态机进行底层操作。相比于通过控制器,一定程度上提升了性能,并且便于在现有的商用交换机上去实现它。
Flow-level State Transition as a New Switch Primitive for SDN
原文:https://www.cnblogs.com/chelinger/p/11635589.html