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. MsSql 游标 修改字段两个表关联 表向另个表插入记录

    -- 方法1:游标-- 声明变量DECLARE @SystemUserId AS UNIQUEIDENTIFIER -- 声明游标DECLARE C_SystemUser CURSOR FAST_FO ...

  2. jQuery实现导航栏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Idea项目中常见错误及笔记(Old)

    1.Idea基础设置: File-->settings--> 1>修改字体:Font 2>修改编码格式:File Encodings(全部UTF-8,右下方复选框勾中--防止程 ...

  4. 浏览器内多个标签页之间的通信之storage

    在一个标签页里面使用 localStorage.setItem(key,value)添加(修改.删除)内容: 在另一个标签页里面监听 storage 事件. 即可得到 localstorge 存储的值 ...

  5. MongoDB怎么用?

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库 ...

  6. php 面试常问 基础知识

    字符串都是海针 数组是针海 输出及打印 echo 8%(-2); //输出结果为0 模后的正负号可无视 模前的有用 echo date('Y-m-d H:i:s',strtotime('-1 day' ...

  7. Python学习 :多线程

    多线程 什么是线程? - 能独立运行的基本单位——线程(Threads). - 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位. - 一条线程指的是进程中一个单一 ...

  8. c语言异常处理机制

    异常处理机制:setjmp()函数与longjmp()函数 C标准库提供两个特殊的函数:setjmp() 及 longjmp(),这两个函数是结构化异常的基础,正是利用这两个函数的特性来实现异常. 所 ...

  9. JAVA乐观锁实现-CAS

    是什么 全称compare and swap,一个CPU原子指令,在硬件层面实现的机制,体现了乐观锁的思想. JVM用C语言封装了汇编调用.Java的基础库中有很多类就是基于JNI调用C接口实现了多线 ...

  10. springboot 使用@ConfigurationProperties注入配置属性

    导入依赖,让springboot支持@ConfigurationProperties 注解 <!-- 支持 @ConfigurationProperties 注解 --> <depe ...