• 文章名称:A Zero Flow Entry Expiration Timeout P4 Switch
  • 零流表项期满超时P4交换机
  • 发表时间:2018
  • 期刊来源:SOSR

ABSTRACT (摘要)

现在的OpenFlow基于期满机制,通过一个固定的超时时间动态的将流表项从流表中移除。对这个超时时间分配合适的值,实际上是流表利用效率和控制器负载之间的权衡。本文提出在P4交换机的空闲超时机制(idle timeout mechanism)上添加0流表项期满超时方案,用来识别TCP流的最后一个数据包,并且从流表中移除相应的表项。它支持连接一结束就从流表进行删除,而不是等待达到超时的阈值以及造成不必要的流表占用。


1 INTRODUCTION(介绍)

为建立巨大可扩展网络,OpenFlow交换机不得不同时支持大量的流,这些流依赖于流表的表项。然而,由于TCAM(Ternary Content Addressable Memory)的限制,流表是有限的。控制器根据hard timeout 和 idle timeout添加和移除流表项。为了减少不必要的TCAM占用,交换机在timeout期满时进行移除对应的表项而不匹配流量。timeout太大导致流表利用率低,太小导致控制器过载(负荷)。

本文提出侦测TCP流的FIN和RST数据包,从而移除在流表中对应的表项。目的旨在实现最佳的流表利用而不用额外的控制工作负载。我们实现了单一的零流表项期满超时方案,利用P4交换机来检测TCP流的FIN和RST数据包,并且移除流表对应的表项,减小不必要的流表占用以及实现无控制器负载的几乎零流表项期满超时。使用Barefoots Tofino交换机,通过监视流表占用量和packet-in events的数量来评估方案的性能。


2 ARCHITECTURE DESIGN

P4交换机有两个表:Forward 和 Learn。Forward table 是首先应用于适当路由和匹配任何静态的转发表项。然后,在P4程序解析完TCP头之后,Learn table用于检测是否正在进行解析的数据包是否为FIN或者RST数据包。如果是FIN或者RST数据包,那么将给控制器爱发送一个消息,删除流表中的流表项。


3 EXPERIMETAL RESULTS

使用Barefoot Tofino交换机实现两个实验[2],将提出的方案与hard timeout 和idle timeout 的流表占用量、packet-in events的数量对比。利用Normal 分配产生的流间隔的选择,再通过Iperf产生流,由Poision 处理决定每一个流的到达时间。TCP流的到达率未(1/s),意味着流的间隔是2.5s,以及在评估期TCP流的数量是600。评估测试在Barefoot Tofino 交换机上进行,监控150s。

Figure 1显示了流表项随着时间的改变。所有方案的超时(timeout)值被设置为2s,如Figure 1 所示,与idle timeout 和 hard timeout相比,我们的方案实现了更低的TCAM占用,因为我们的方案的曲线始终要比hard timeout 和 idle timeout方案低。

Figure 2,不同的超时值从1s到4s,用于标会他们的pack-in rate 和TCAM 占用。我们可以发现,与hard timeout相比我们的方案可以实现更低的平均packet-in events,同时与hard timeout 和idle timeout 方案相比,可以实现更低的TCAM占用。本文提出的方案与idle timeout 方案相比,在TCAP占用上有改善,因为除了超过idle timeout 阈值,它仅仅在检测到FIN/RST数据包时,对表项进行移除。因此,如果表项没有被idle timeout 机制丢弃,将通过额外接收到FIN/SRT数据包时进行丢弃,从而极大减小了TCAM占用,因为表项将在连接一结束就进行移除。总之,与别的方案相比,由于有比idle timeout方案更好的packet-in rate以及与两个超时方法相比更好的TCAM占用状态, 本文提出的方案实现了更好的权衡。


4 CONCLUSION AND FUTURE WORKS

基于P4交换机检测TCP流的最后一个数据包,我们为TCP流提出了一个流表项移除技术,通过删除对应的流表项减小不必要的TCAM占用。将来的工作将会是使用更大的现实工作量测试和评估这个方案。


A Zero Flow Entry Expiration Timeout P4 Switch的更多相关文章

  1. Machine Learning Based Proactive Flow Entry Deletion for OpenFlow

    来源:IEEE 2018 作者:Hemin Yang and George F.Riley 摘要: 流表容量有限,因此高效管理流表至关重要.本文重点讨论了OpenFlow中定义的一种流表管理机制,即能 ...

  2. OpenFlow:Enabling Innovation in Campus Networks

    SDN领域,OpenFLow现在已经成为了广泛使用的南向接口协议.若想好好学习SDN,在这个领域有所进步,需要熟悉OpenFlow协议.我最近找了篇有关OpenFLow的论文,发现最早该协议是在Sig ...

  3. OpenFlow Switch学习笔记(三)——Flow Tables

    这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow Tables,以了解其内部的 matching 以及 action handling 机制.下文将会分为几个部分来逐步详述O ...

  4. OpenFlow Switch 1.3 规范

    目录 文章目录 目录 OpenFlow 架构 OpenFlow 标准和规范 OpenFlow 的端口(Port) OpenFlow 的流表(Flow Table) OpenFlow 的组表(Group ...

  5. OpenFlow Switch学习笔记(六)——Instructions和Actions

    本文主要重点讨论OpenFlow Switch规范的指令集,它们深刻影响着数据包在Switch中的处理行为,下面开始从以下几个部分谈起. 1.Instructions 每一个Flow Entry里都包 ...

  6. OpenFlow Switch学习笔记(五)——Group Table、Meter Table及Counters

    本文主要详述OpenFlow Switch的另外两个主要组件——Group Table和Meter Table,它们在整个OpenFlow Swtich Processing中也起到了重要作用. 1. ...

  7. OpenFlow Switch学习笔记(四)——Matching

    这次我们着重详述来自于网络中的数据包在OpenFlow Switch中与Flow Entries的具体匹配过程,以及当出现Table Miss时的处理方式,下面就将从这两方面说起. 1.Matchin ...

  8. OpenFlow Switch学习笔记(二)——OpenFlow Ports

    OpenFlow Ports是OpenFlow Switch与剩余网络之间传递Packet的网络接口.OpenFlow Switches之间通过OpenFlow Ports彼此相互逻辑连接.一个Ope ...

  9. OpenFlow Switch学习笔记(一)——基础概念

    OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...

随机推荐

  1. BZOJ4923:[Lydsy1706月赛]K小值查询(Splay)

    Description 维护一个长度为n的正整数序列a_1,a_2,...,a_n,支持以下两种操作: 1 k,将序列a从小到大排序,输出a_k的值. 2 k,将所有严格大于k的数a_i减去k. In ...

  2. shiro实战系列(一)之入门实战

    一.什么是shiro? Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密.   Apache Shiro 的首要目标是易于使用和理解.安全有 ...

  3. Linux下jdk&tomcat的安装

    unbantu: 1.下载相应版本的jdk及tomcat:sudo wget ${url} 2.解压: tar zxvf jdk-7u79-linux-x64.tar.gz​ tar zxvf apa ...

  4. /etc/hosts,GoldenGate

    [oracle@g]$ netstat -alp|grep 7809(Not all processes could be identified, non-owned process info wil ...

  5. C#数组、js数组、json

    C#数组 参考地址C#之数组 什么是数组?数组是一种数据结构,包含同一个类型的多个元素.数组的声明:int[] myIntArray; 注:声明数组时,方括号 [] 必须跟在类型后面,而不是变量名后面 ...

  6. CAN总线学习系列之— CAN总线特点介绍

    CAN总线学习系列之— CAN总线特点介绍 CAN 总线作为一种工业界的流行总线广泛应于工业自动化.多种控制设备.交通工具.医疗仪器以及建筑.环境控制等各个行业中,它是是一种多主机局域网,所以这样 一 ...

  7. action类型的按钮和object按钮的用法

    <div class="oe_right oe_button_box" name="buttons"> <button class=" ...

  8. 数据结构与算法之Stack(栈)的应用——用stack实现一个计算器-/bin/calc.dart

    计算器的bin/calc.dart 可执行代码: import 'dart:io'; import 'package:data_struct/stack/sample/calculator.dart' ...

  9. 解决Android中,禁止ScrollView内的控件改变之后自动滚动 - 转

    问题: 最近在写一个程序界面,有一个scrollVIew,其中有一段内容是需要在线加载的. 当内容加载完成后,ScrollView中内容的长度会发生改变,这时ScrollView会自动下滚,如下图所示 ...

  10. GBDT源码剖析

    如今,GBDT被广泛运用于互联网行业,他的原理与优点这里就不细说了,网上google一大把.但是,我自认为自己不是一个理论牛人,对GBDT的理论理解之后也做不到从理论举一反三得到更深入的结果.但是学习 ...