• 文章名称: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. Markdown基本语法规范

    1. 标题 #的个数即表示Hn, 一下依次从h1~h6.  也可在句尾添加同样个数的#(也可忽略) # This is H1 ## This is H2 ### This is H3 #### Thi ...

  2. python第二十九课——文件读写(读取数据操作)

    演示读取数据操作:path=r'a.txt' 1.打开文件f1=open(path,'r') 2.读取数据content1=f1.read(3)print(content1) content1=f1. ...

  3. tomcat:8080/返回404;/etc/hosts(identifier-Namespace-scope)

    我以为 就oracle 的 oracle db ,weblogic喜欢和 hostname 死磕: 没想到开源的tomcat也是如出一辙,名不正则言不顺,为什么,“名”的力量这么大呢?命名空间. 有个 ...

  4. Javascript 及 CSS3 实现进度条效果

    Javascript 及 CSS3 实现进度条效果 一:css2 属性clip实现网页进度条:  在实现之前,我们先来介绍一下clip属性,因为这个属性在css2.1中很少使用到,所以我们有必要来了解 ...

  5. extern C的用法解析

    1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++保留了一部分过程式语 ...

  6. 编程检查d:\test.txt文件是否存在,若在则显示该文件的名称和内容。

    下面放两种方法 老师写的: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  7. HTTP请求header信息讲解

    HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息.这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成.HTTP的头域包括通用头,请求头,响应头和 ...

  8. ceph存储osd启动异常处理和正常启停操作

    机器角色:cloudstack虚拟机的宿主机:ceph存储机器. 事件:ceph存储的物理机器由于内存异常,需要停机更换,仅仅是把该物理机上面的虚拟机迁移走,同时启动了停机维护,然后就直接关机.结果造 ...

  9. SonarQube-基本概念

    组件组成 1.sonarqube server :  他有三个程序分别是 webserver(配置和管理sonar) searchserver(搜索结果返回给sonarUI)  ComplateEng ...

  10. 2017-2018-2 20155204《网络对抗技术》EXP5 MSF基础应用

    一.基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:利用靶机系统中的一些漏洞进行攻击的过程,除去前期准备的工作,这一步是实施攻击. payload:载荷 ...