论文阅读:An Adaptive Algorithm for Searching in Flow Tables of Openflow Switches

摘要:

软件定义网络(SDN)是计算机网络行业中的新范例,它将当前的分布式体系结构更改为集中式体系结构。这种集中式体系结构的三个主要组件是Openflow控制器,Openflow通道和Openflow交换机。

Openflow控制器是集中控制单元,根据Openflow协议规范,通过openflow通道与openflow交换机进行通信。启用支持Openflow的交换机是软件定义网络体系结构的基础,Openflow控制器将与传入数据包匹配所必需的数据包处理参数以及针对数据包类型要采取的操作写入Openflow交换机的流表中。

OpenFlow协议不要求使用任何特定算法在流表中搜索匹配的流,本文分析了4种数据搜索算法的性能,并提出了一种以负载因子为参数的自适应算法,以减少搜索时间。

背景/问题:

SDN网络中,控制器通过安全通道与基础网络交换机通信, Openflow是为控制器和交换机之间的通信定义的第一个标准通信接口,Openflow交换机和控制器通过安全的Openflow通道进行通信,SDN控制器将数据包处理规则写入Openflow交换机的流表。

图1显示了Openflow交换机的主要组件:


图1

交换机可以具有一个或多个流表和一个组表,用以执行数据包查找和转发。交换机中的每个流表都包含一组流条目,每个流条目都包含匹配字段、计数器和一组适用于匹配数据包的指令。 流匹配字段是使用Openflow可扩展匹配(OXM)格式描述的,它是一种紧凑的Type-Length-Value格式,长度为5到259个字节。一旦使用OXM标识了数据包匹配字段,则将数据包与在流表中找到条目匹配。 如果在当前表中找不到匹配项,则可以根据是否配置了表未命中条目(预先设定的一个处理方式),将数据包丢弃或转发到下一个表或控制器。

流表的数据包处理机制如图2所示:


图2

按我的理解,过程大概是这样的,首先一个交换机有一个或多个流表,每个流表上有许多的匹配流表项。流进入交换机以后匹配第一个流表,如果有流表项与之相匹配,则执行相应的操作,即match+action。如果没有匹配,则根据第一个流表的预先定义未命中操作,转接下一个流表或者标记为最终未命中,而最终未命中的流执行预定义好的操作。

表1中列出了流表条目的主要组成部分:


表1
  • 头部的匹配字段用于匹配流表中的传入数据包。
  • 优先级是流条目的匹配优先级。

(匹配字段和优先级组合在一起,唯一标识了表中的流条目。)

  • 数据包匹配时更新计数器。
  • 流条目中的指令用于修改数据包的操作集或管道处理。
  • 超时表示在交换机使流到期之前的最大时间或空闲时间。
  • Cookies是控制器用于过滤流量统计信息,流量修改和流量删除的不透明数据值,它们不用于数据包匹配。

举个例子:

在OpenVswitch 2.1.2中,结构流定义网络中的流, 该字段分为四个部分,以方便分段查找。

首先使用下层字段来标识匹配的流条目,并且仅当下层字段不足以对特定条目进行零插入时才使用上层字段,这为数据路径流提供了更好的通配符。

表2 中给出了OpenVswitch 2.1.2中定义的流匹配字段:


表2

表3和表4分别给出了用于数据包匹配的隧道参数和元数据字段:


表3和表4

尽管Openflow规范指定了每种数据包类型要匹配的数据包字段,但并没有要求使用任何特定算法来在流表中进行数据搜索。

解决方法:

本文分析了一些数据搜索的性能。

1.SEQUENTIAL SEARCH ALGORITHM(顺序搜索算法)

最简单的数据搜索算法是顺序搜索——在这种方法中,我们以任何顺序将数据插入表中,为了搜索表中的条目,我们从第一个元素开始执行搜索,并顺序执行操作,直到找到匹配的条目或到达表的末尾。

最佳情况下的性能为O(1),因为匹配项是在第一个搜索本身中获得的。但是,如果要搜索的元素不在表中,则会发生最坏情况,我们需要搜索整个表以得出该元素不在表中的结论。如果表中元素的数量为n,则顺序搜索的最差情况性能为O(n)。随着n变大,顺序搜索将是不切实际的。

密钥数量较少的另一种简单技术是直接寻址——令U = {0,1,..,m-1}是“ m”个关键字的范围,应用程序将绘制此关键字。如果此关键字的范围相当小,并且没有两个元素具有相同的关键字,则可以使用数组存储关键字。数组中的每个插槽都对应于U中的键,因此,数组或直接地址表中将存在“ m”个插槽,对应于U中的每个元素。我们可以使用关键字的值作为数组的索引来直接访问数组的位置,以查看是否存在元素。

如果我们可以使用O(1)时间搜索条目,同时将表大小限制为| K |,这将是有利的。即存在一个数组里,需要查k的时候,则直接插数组U[k],看看是否有值。如果碰到有冲突的,即一个插槽里存了两个值的时候,则按照哈希冲突一样的处理规则去应对。

2.DIVISION BY PRIME ALGORITHM(质数划分算法)p.s其实就是哈希

所使用的哈希函数为h(k)= k mod m,其中k为键,m为插槽数,h(k)为k / m的余数,由于只需要进行除法操作即可找到插槽,因此速度很快。

但是我们不能为m选择任何值, 具体来说,我们不能选择m为2的幂。如果m = 2 ^ p,则h(k)= k mod m将是k的p个低阶位,如果这些p位的分布不均等,则不会导致均匀散列(uniform hashing)。 因此,最好避免m = 2 ^ p并选择m为素数不太接近2的幂,以便h(k)取决于k的所有位。

除此之外,与大多数机器中的乘法或加法相比,除法运算通常要花费更多的时间。

3.MULTIPLICATION BY ODD NUMBER ALGORITHM(奇数相乘算法)

乘法方法的优点是m的值可以是2的幂。例如,可以取m = 2 ^ r,此方法适用于字长为w位的机器,其中w是2的幂(例如32位或64 位)。

此方法的哈希函数为h(k)=((A * k)mod 2w)>>(w-r)位。

“ A”是一个乘法常数,它是2 ^ w和2 ^ w-1之间的奇数,不太接近2 ^ w或2 ^ w-1。 A的最佳选择为A≈(√5– 1)/ 2 = 0.6180339887…

此方法通常比除以质数法更快。

4.DOUBLE HASHING ALGORITHM(双重哈希算法)

在该方法中,利用哈希函数对关键字进行哈希处理,该函数假定均匀散列处理将α(负载因子)个条目映射到每个插槽中。
在此方法中,不是将关键字保存在链接列表中,而是使用另一个哈希函数再次对与每个哈希值相对应的关键字进行哈希处理,这有助于直接访问特定插槽的每个元素,而无需顺序遍历整个列表。

通常,可以选择两个哈希函数为h1(k)= k mod m,h2(k)= 1 +(k mod m')。 选择m为质数,m’小于m。

在我们的例子中,我们选择m = 727和m’= 719,并且使用的哈希函数为h1(k)= k mod m,h2(k)= floor((k mod m’)/ 8)。

实验仿真结果:

对于α大于64的负载因子,与双散列相比,使用链式分解冲突的质数法需要更多的时间来给出搜索结果。

对于α等于435的负载因子,使用通过链解决冲突时,双哈希技术比顺序搜索查找数据的速度快三倍。

对于α接近64的负载因子,这两种方法大约需要相同的时间来搜索数据。

对于α小于64的负载因子,散列存储区中的顺序搜索比双散列要快。

图3,图4和图5显示了负载因子小于64,α等于64和α大于64的四种算法的比较:

图3

图4

图5

从分析中可以明显看出,在阈值负载因子以下,哈希存储桶中数据的顺序搜索比双哈希方法要快。在阈值之上,双重哈希技术比哈希存储桶中的顺序搜索更快。

于是本文提出一种算法,该算法使用计数器来计算与哈希值相对应的条目数,如果计数小于阈值,则进行顺序搜索以搜索特定条目,否则使用双重哈希。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • --- layout: post title: "如果有人问你关系型数据库的原理,叫他看这篇文章(转)" date...
    蓝坠星阅读 772评论 0 3
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,067评论 0 9
  • 1.介绍 本协议涵盖了交换机的基本组件和功能,以及OpenFlow协议来管理OpenFlow交换机和控制器。 2....
    墨痕hz阅读 5,560评论 0 5
  • 8.通用流API 8.1.概述 此API提供了一种通用的方式来配置硬件以匹配特定的Ingress或Egress流量...
    半天妖阅读 5,382评论 0 7
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,352评论 0 5