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.

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

  1. A Survey on the Security of Stateful SDN Data Planes

    论文摘要: 本文为读者提供新兴的SDN带状态数据平面,集中关注SDN数据平面编程性带来的隐患. I部分 介绍 A.带状态SDN数据平面的兴起 B.带状态数据平面带来的安全隐患 引出带状态数据平面的安全 ...

  2. Packet Transactions: High-level Programming for Line-Rate Switches

    Name of article:Packet Transactions: High-level Programming for Line-Rate Switches Origin of the art ...

  3. Flink - Working with State

    All transformations in Flink may look like functions (in the functional processing terminology), but ...

  4. 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 ...

  5. 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 bas ...

  6. "Principles of Reactive Programming" 之 <Persistent Actor State>学习笔记

    这是<Pinciples of Reactive Programming>week6的最后一课. 为什么需要把actor的状态持久化? 如果actor没有状态,那么在任何实时,这个acto ...

  7. Q: Is Consul eventually or strongly consistent?

    强一致  最终一致 Frequently Asked Questions - Consul by HashiCorp https://www.consul.io/docs/faq.html Q: Is ...

  8. PatentTips – GPU Saving and Restoring Thread Group Operating State

    BACKGROUND OF THE INVENTION The present invention relates generally to single-instruction, multiple- ...

  9. Flink之Stateful Operators

    Implementing Stateful Functions source function的stateful看官网,要加lock Declaring Keyed State at the Runt ...

随机推荐

  1. jq写无缝轮播

    今天分享一下我自己早几天写的一个效果:无缝轮播,虽然不难,很简单,也没有封装处理过,但是还是希望能帮到一些前端的小伙伴吧,如果有小伙伴感觉有更简化的写法希望可以一起交流一下,技术在于交流嘛,我的邮箱是 ...

  2. pomelo vscode 调试配置

    步骤 config/server.js 配置 .vscode/launch.json 配置 详细 1. 在server的配置中添加 args 参数,此参数为node开启此服务器时命令参数 " ...

  3. Python学习笔记十一:模块

    标准库(内置模块) time与datetime 模块 时间表示方式 1.时间戳 2.格式化的字符串 3.元组形式 时间戳就是一个秒数 x=time.time(),从1970年1月1日0时0分0秒到现在 ...

  4. 双端队列 ADT接口 数组实现

    Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" void DEQUEUEinit(int); ...

  5. Python3 break与continue

    Infi-chu: http://www.cnblogs.com/Infi-chu/ break和continue都是中断循环的意思,但是他们的中断后的效果不同. 请看如下两个例子就懂了 ''' 这个 ...

  6. 虚拟机ubuntu磁盘扩容

    1.虚拟机把磁盘大小进行改动 2.sudo apt-get install gparted 3.打开安装好的应用 4.进行分区改动 5.理论删除sda2和sda5重整后边即可,但此时sda2和sda5 ...

  7. 20155321 2016-2017-2 《Java程序设计》第三周学习总结

    20155321 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 4.1 类与对象 定义类用class关键字,建立实例用new关键字 一个原始码中可有多个类定 ...

  8. Wcf服务测试自带工具

    Visual Studio 安装包文件夹 \Common7\IDE\WcfTestClient.exe

  9. day 1 异常基本功能

    1.什么是异常?程序出现的错误 In [1]: open('xxx.txt') ------------------------------------------------------------ ...

  10. day 5 多态 类 静态

    1.多态 执行的时候才知道调用谁 class Dog(object): def print_self(self): print("大家好,我是来自西安的小白") class Xia ...