A Zero Flow Entry Expiration Timeout P4 Switch
- 文章名称: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的更多相关文章
- Machine Learning Based Proactive Flow Entry Deletion for OpenFlow
来源:IEEE 2018 作者:Hemin Yang and George F.Riley 摘要: 流表容量有限,因此高效管理流表至关重要.本文重点讨论了OpenFlow中定义的一种流表管理机制,即能 ...
- OpenFlow:Enabling Innovation in Campus Networks
SDN领域,OpenFLow现在已经成为了广泛使用的南向接口协议.若想好好学习SDN,在这个领域有所进步,需要熟悉OpenFlow协议.我最近找了篇有关OpenFLow的论文,发现最早该协议是在Sig ...
- OpenFlow Switch学习笔记(三)——Flow Tables
这次我们主要讨论下OpenFlow Switch的核心组件之一——Flow Tables,以了解其内部的 matching 以及 action handling 机制.下文将会分为几个部分来逐步详述O ...
- OpenFlow Switch 1.3 规范
目录 文章目录 目录 OpenFlow 架构 OpenFlow 标准和规范 OpenFlow 的端口(Port) OpenFlow 的流表(Flow Table) OpenFlow 的组表(Group ...
- OpenFlow Switch学习笔记(六)——Instructions和Actions
本文主要重点讨论OpenFlow Switch规范的指令集,它们深刻影响着数据包在Switch中的处理行为,下面开始从以下几个部分谈起. 1.Instructions 每一个Flow Entry里都包 ...
- OpenFlow Switch学习笔记(五)——Group Table、Meter Table及Counters
本文主要详述OpenFlow Switch的另外两个主要组件——Group Table和Meter Table,它们在整个OpenFlow Swtich Processing中也起到了重要作用. 1. ...
- OpenFlow Switch学习笔记(四)——Matching
这次我们着重详述来自于网络中的数据包在OpenFlow Switch中与Flow Entries的具体匹配过程,以及当出现Table Miss时的处理方式,下面就将从这两方面说起. 1.Matchin ...
- OpenFlow Switch学习笔记(二)——OpenFlow Ports
OpenFlow Ports是OpenFlow Switch与剩余网络之间传递Packet的网络接口.OpenFlow Switches之间通过OpenFlow Ports彼此相互逻辑连接.一个Ope ...
- OpenFlow Switch学习笔记(一)——基础概念
OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...
随机推荐
- toFixed四舍五入精度校正
var a = 2.255; var b = a.toFixed(2); console.log(b); 以上代码,按预期正常四舍五入得到结果应该是2.26,但实际返回值为2.25 js浮点数精度作为 ...
- numpy 的排序
import numpy as np # 1.快速排序 ''' 1.np.sort(),不改变原先值的顺序,但是在运行时占内存 2.ndarry.sort(),改变原先值的顺序,不占用内存 ''' # ...
- MD5+DES在C#.NET与Java/Android中的加解密使用
一.背景后台(C#.NET)使用一个MD5+DES的加解密算法,查了下,很多网友都使用了这个算法.在Android里,也需要这个算法,如何把这个加解密算法切换成Java版,成了难题.毕竟好久没涉及到这 ...
- OpenCV——直方图均衡化(用于图像增强)
#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...
- maven使用及创建项目
一:简单介绍 他是一个帮我们管理jar,并帮助我们处理jar包依赖. 他是一个我们编译.测试.运行.打包的一键构建. 我们在使用后面的命令的同时,前面的过程也自动执行. 二.仓库的分类: 分本地仓库. ...
- HDU1863(Kruskal+并查集水题)
https://cn.vjudge.net/problem/HDU-1863 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可). ...
- 理解JavaScript中的作用域链
理解了作用域链,闭包就不难理解了,所以本文主要谈一谈我对作用域链的理解. 关于JavaScript中变量的作用域,全局变量在程序中始终都有定义.局部变量在声明它的函数体内以及其内部所嵌套的函数内始 ...
- scapy学习笔记(4)简单的sniffing 嗅探
转载请注明:@小五义:http://www.cnblogs/xiaowuyi 利用sniff命令进行简单的嗅探,可以抓到一些简单的包.当不指定接口时,将对每一个接口进行嗅探,当指定接口时,仅对该接口进 ...
- Tomcat主页404错误
单独启动Tomcat正常,但是通过Eclipse启动(这时启动也是正常的)后,访问Tomcat主页报404错误. 在网上找到了解决办法:http://www.jb51.net/article/8283 ...
- Drupal错误:drupal Maximum execution time of 30 seconds exceeded database in解决方法
Drupal开源内容管理框架 Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成.连续多年荣获全球最佳CMS大奖,是 ...