• 文章名称: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. node学习笔记_01 环境搭建

    一.下载安装nvm (node版本管理器),方便以后版本切换 nvm list            -> 查看node版本(版本最好在8.0以上,不然在vsCode断点调试进不去,跟node版 ...

  2. [Luogu 3707] SDOI2017 相关分析

    [Luogu 3707] SDOI2017 相关分析 前言 Capella 和 Frank 一样爱好天文学. 她常在冬季的夜晚,若有所思地望着东北方上空的五边形中,最为耀眼的一个顶点. 那一抹金黄曾带 ...

  3. 两个docker容器互连时,提示no route to host错误的问题

    大家都知道,两个docker container互连的时候可以用link,但是,我们也知道,container可以将自己的端口映射到宿主机上,比如一个container A上的tomcat将端口暴露给 ...

  4. vagrant特性——基于docker开发环境(docker和vagrant的结合)-3-boxes和配置

    Docker Boxes Docker provider不需要vagrant box.因此其config.vm.box设置是完全可选的.但是,仍然可以使用并指定一个box来提供默认值.由于一个带着bo ...

  5. MP实战系列(八)之SpringBoot+Swagger2

    SpringBoot一个原则,爱好编程的朋友们都知道,那就是"习惯优于配置". 今天一上来主要说的还是代码,个人比较喜欢来的实战系列的,不过有的时候还是比较偏重于理论,理论是造轮子 ...

  6. 关于css浮动的一点思考

    浮动到底是什么? 浮动核心就一句话:浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素.请默念3次! 浮动最初设计的目的并没那么多事儿,就只是用来实现文字环绕效果而已,如下所示: ...

  7. 学习笔记---gson

    1.gson变量定义注解 @SerializedName("char") private String charm;//mongo转化char 2.gson中json文件转化成类 ...

  8. MVC的BundleConfig应用

    1.MVC可以通过BundleConfig类来配置css和js的统一引用,分别通过StyleBundle和ScriptBundle来创建. 2.可以在母版页中统一加载设置在BundleConfig.c ...

  9. pdflush机制

    在做进程安全监控的时候,拍脑袋决定的,如果发现一个进程在D状态时,即TASK_UNINTERRUPTIBLE(不可中断的睡眠状态),时间超过了8min,就将系统panic掉.恰好DB组做日志时,将整个 ...

  10. 20155227《网络对抗》Exp5 MSF基础应用

    20155227<网络对抗>Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:把实现设置好的东西送到要攻击的主机里. ...