ESWITCH

Dataplane Specialization for High-performance OpenFlow Software Switching

引言

OpenFlow is an amazingly expressive dataplane programming language

对上语句,论文上说openflow是一种语言???

存在的问题

packet classification 存在的开销以及一些常见问题

虚拟化的时代,如何把openflow编译好在x86上,或者其他环境上。

介绍

packet classification 面临问题

快速编译在x86平台上有困难

OpenFlow is expressive but troublesome to make fast on x86

提出ESWITCH

ESWITCH是一个编译器,将Openflow声明性语言转化为有效机器码。

基于DPDK。

问题解决:可以有效的运行在x86平台,也能解决这个流缓存的问题

THE OPENFLOW PIPELINE

提出一个简单防火墙功能的openflow实现

建议采用模块化的形式,别写成一张表

以前是为了可以在增强在数据包的处理(40+ as of OpenFlow 1.4)匹配字段。

很明显,有一些就不适用了,比如防火墙,入侵检测中间组件这些。

短期流,经常使用高频词段会造成cache使用不合理,让恶意流有机会入侵。

本文认为缺点原因:对流的高度概括问题

简单来讲,就是对流分类不够细,导致把大部分的cache流表都取出来。

例如:当指定是纯L2转发时,应该根据实际工作负载,在加上相应的L3,L4的字段约束

Direct datapath :根据优先级大小把所有的关键匹配字基本融合

Indirect datapath:fast path/slow path

slow path拥有全功能

fath path 流缓存

(OVS)

Flow Cache 限制

Unpredictable packet processing

当业务表现出足够的空间局部性(报头字段在小范围内变化并且因此只有几兆兆赫足以覆盖所有业务)和时间局部性(流的分组在时间上精细地间隔以保持高速缓存条目热)时流缓存工作得最好。但是如果有一个小粒度来了,就会出现碎片化很严重。会在这些聚集体打孔。

Performance artifacts.

难以预测抖动,会导致性能下降厉害。

Vexing cache management complexity.

缓存管理复杂,计算一级cache是复杂,更新cache也是复杂

Opens the door to malicious attacks.

×Brittle architectural constraints.

ESWITCH

解决问题

  • 跨平台的运行问题
  • 解决fast path的问题

核心思想:模块化各个模版。

packet parser templates(数据包解析器模版)

matcher templates(匹配器模版)

flow table templates(流表模版)

  • the direct code, (直接代码)

  • 当流表不包含足够的条目以证明复杂数据结构(如散列或trie)时,ESWITCH使用此模板

  • the compound hash, (复合哈希)

  • the LPM,

  • and the linked list templates (链表模版)

    ESWITCH总是尝试编译成可用的最有效的表模板; 每当它检测到该先决条件不再适用时,它逐渐回落到下一个最有效的表示,并用新模板重建表(参见图4的模板回退)。

action templates (动作模版)

(图)流表分解

基于hash,贪婪算法,启发式算法,决策树(方便以后的可扩展)

对于流表更新

是一种增量式的。不会破原先的结构,通过模块调动把这个流给补进去。更新的粒度是一个表。相对于ovs,是整条线的更新。

与P4对比

通用性:ESWITCH只适用于openflow。

效能:可能比P4效能更高一点。(通过流表分解,更能得到更有效的路径,归功于启发式算法的引进)

posted @ 2016-11-02 00:10  考拉小无  阅读(564)  评论(0)    收藏  举报