Swing State: Consistent Updates for Stateful and Programmable Data Planes

Swing State: Consistent Updates for Stateful and Programmable Data Planes

年份:2017

来源:ACM

本篇论文解决的问题


Before

原来的状态迁移是三角形路由的方式:

NF1->Controller->NF2

浪费时间、还需要控制器开辟额外的存储空间

Now

现在把要更新的流量attach到数据平面的数据流上,借助数据流之手(信使)传递状态信息。

ABSTRACT



背景:由于可编程带状态数据平面的飞速发展,得益于数据平面的高速处理速度,于是把网络功能从控制器(或主机上)迁移到数据平面实现。

这就意味着数据平面不单单要考虑flows,还要考虑states,比如流量迁移时,要考虑状态迁移的问题。

存在的问题:数据平面的的状态信息以线速率更新,不可能通过控制平面实现状态迁移。

Swing State的解决方案:在数据平面上实现状态迁移,把需要迁移的状态附加在live traffic上,目标NF收到流量后提取出状态信息信息,达到状态迁移的目的。注意Swing State只迁移那些不能再生成的状态信息

Swing State only migrates the states that cannot be safely reconstructed at the destination switch.

本篇论文设计的实验:给定一个P4程序,分析出哪个状态需要被迁移并自动增加对应的程序实现运行时的状态迁移

INTRODUCTION



基于控制平面实现状态迁移存在的问题(为什么状态迁移不能通过控制器):

  1. 目前的状况,状态是以以线速率更新(可以达到Tbps),如果以这个速率给控制器发送,基于软件实现的控制器肯定是应付不过来的。这样就会增加巨大的处理时延,造成状态迁移的不一致性,这对于很多的网络应用是不允许发生的。
  2. 控制器可能不会完整的知道那些待迁移的状态的位置(它只知道一部分,造成那些不被知道的状态不能在第一时间被迁移)。因为有些状态位置信息是根据运行时因素决定的,但是运行时因素是不能被控制器访问的,这就造成了控制器不能精准的定位所有待转移状态的位置。
  3. 数据平面状态信息可以在多条流量之间共享,借用多条flow一起实现状态迁移,可以减少状态迁移的时延,避免不一致性。可惜的是,这些可被利用的flow是根据运行时因素决定的,控制器不能访问交换机的运行时因素。

Swing State:

  1. 解决了以上所有的问题,实现的数据平面的一致性状态迁移。不依靠控制器,只在数据平面进行状态迁移。
  2. 解决问题的关键点:借用数据流当作状态传输的信使,让数据流从源NF那里记录并携带状态的值,把它们送到目标NF那里。状态在源交换机 是存在寄存器的cell里面;一个数据报把这个数据读到它自己身上,然后带到目的交换机。

    The key idea is to have each packet record the state values it reads at the source data plane, carry them to the destination device (through piggybacking), and override the memory locations it reads there.

原文地址:https://www.cnblogs.com/031602523liu/p/9807205.html

时间: 2024-10-10 17:24:49

Swing State: Consistent Updates for Stateful and Programmable Data Planes的相关文章

A Survey on the Security of Stateful SDN Data Planes

论文摘要: 本文为读者提供新兴的SDN带状态数据平面,集中关注SDN数据平面编程性带来的隐患. I部分 介绍 A.带状态SDN数据平面的 B.带状态数据平面带来的安全隐患 引出带状态数据平面的安全隐患问题(比如:有针对的服务否定攻击和状态耗尽攻击以及数据平面攻击等等),要求系统开发人员或者是应用开发人员遵循以下特征: 在交换机内部存储每一条流的信息,即状态,包括状态的分布式存储. 在数据平面,数据包到来或者数据平面事件触发时,有能力改变在交换机中的状态. 交换机基于当前本地的状态信息可以自动做出

The Road to SDN: An Intellectual History of Programmable Networks (四)

2.3 OpenFlow and Network OSes 单词学习 翻译 In the mid-2000s, researchers and funding agencies gained interest in the idea of network experimentation at scale, encouraged by the success of experimental infrastructures (e.g., PlanetLab [6] and Emulab [83]),

Low-overhead enhancement of reliability of journaled file system using solid state storage and de-duplication

A mechanism is provided in a data processing system for reliable asynchronous solid-state device based de-duplication. Responsive to receiving a write request to write data to the file system, the mechanism sends the write request to the file system,

Important Programming Concepts (Even on Embedded Systems) Part V: State Machines

Earlier articles in this series: Part I: Idempotence Part II: Immutability Part III: Volatility Part IV: Singletons Oh, hell, this article just had to be about state machines, didn’t it? State machines! Those damned little circles and arrows and q’s.

Flink之Stateful Operators

Implementing Stateful Functions source function的stateful看官网,要加lock Declaring Keyed State at the RuntimeContext state可通过 rich functions .Listcheckpoint和CheckpointFunction获得. 在Flink中,当对某个数据进行处理时,从上下文中获取state时,只会获取该数据key对应的state. 四种Keyed State: ValueSta

Programming in Scala (Second Edition) 读书笔记18 Stateful Object

1. In previous chapters, we put the spotlight on functional (immutable) objects 在前面的章节,我们把焦点放在了函数式对象上 We did so because the idea of objects without any mutable state deserves to be better known 函数式对象更容易被理解,它永远只有一种状态 However, it is also perfectly poss

React State学习

Last time we looked at how to use properties, to affect the initial rendering of components. Today we’ll take a look at how to use state, how it differs from properties and some things you should consider when using state. 上一次我们讨论了如何使用properties来影响一个

行为型设计模式之状态模式(State)

结构 意图 允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类. 适用性 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为. 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态.这个状态通常用一个或多个枚举常量表示.通常, 有多个操作包含这一相同的条件结构.S t a t e模式将每一个条件分支放入一个独立的类中.这使得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化. 1 using Syste

iOS Programming State Restoration 状态存储

iOS Programming State Restoration?状态存储 If iOS ever needs more memory and your application is in the background, Apple might kill it to return memory to the system. 如果iOS 需要更多的memory,你的应用在后台,apple 可能杀死它来得到更多的内存给系统. This should be transparent to your u