OFFICER: A general optimization framework for OpenFlow rule allocation and endpoint policy enforceme

2023-05-16

OFFICER——>转发规则放置问题

——>什么是规则放置问题?

一组规则如何放置到容量有限的交换机上,以满足上层应用的策略(ACL、流转发)。规则用来匹配流,其action是策略的执行者。这里研究的交换机可以是一个交换机(规则缓存问题考虑规则依赖,如cacheflow),也可以是一组以路径形式的交换机。(本文是后者)

对于那些匹配不到的流执行默认规则(优先级最低),可以丢弃,转发到控制器,转发到下一跳节点,不同的问题具体分析。

研究的方向有三种:

  • 对规则进行压缩
  • 对交换机容量进行改进
  • 对规则进行分割和分配

规则的来源也使问题分为不同的场景:

  • 规则和路由策略由运营商预先给定:ACL问题
  • 规则决定流的路由策略(作为输出):流转发规则问题

——>下面首先介绍两个概念:

  • Endpoint Policy 端点策略:决定流的出口链路( egress links),本文的流只有一个单出口,不考虑流的分割问题。
  • Routing Policy 路由策略:使不同流的数据包通过不同的路径到达他们指定的出口链路。本文是宽松的路由策略(relaxing routing policy)

宽松的路由策略:流的转发不必遵循严格的转发路径,只要符合流需要转发到的出口。对于那些由于容量不足不能处理的流交给控制器。

以上两个策略是转发规则的放置问题(Forwarding Rules Distribution)的重要组成部分。

——>什么是转发规则的放置问题呢?

由于使用路径(路由)的形式转发端点策略的数据包不影响转发性能。因此,在不违背端点策略的前提下,想办法使流通过更好的路径上来转发到指定出口,以满足优化目标。

简单来说:就是在网络中流量转发的场景下,如何安放合适的规则。

文本OFFICER就是其中一类模型,下面以小见大的介绍:

——>OFFICER模型的归类:

  • 该模型属于规则放置问题中的规则分割与分配(Split and Distribution)一类(也有规则压缩的部分思想,默认规则转发以节省规则)。其中,规则分割与分配模型分为:1)ACL规则放置(Access Control Rules Distribution)和2)转发规则放置(Forwarding Rules Distribution)
  • 该模型是转发规则的放置问题,不是ACL规则的放置。
  • 该模型是主动放置问题,不是被动放置问题
  • 注:以上总结于:《Rules Placement Problem in OpenFlow Networks: A Survey》

——>主动放置问题被动放置问题的区别:

  • 就是端点策略是否提前定义好,是否提前知道。
  • 主动放置问题:Proactive,在流到达前规则已经放好。流不可知。流可以减少延迟和控制信道开销。主要用于ACL问题。Palette、OneBigSwitch等。
  • 被动放置问题:Reactive,按需放置。流不可知。来一个流安放对应的规则。适用动态的流转发问题。各种主流控制器:NOX、Floodlight、OpenDaylight等。

——>ACL规则放置转发规则放置的区别:

  • 从端点策略来区别ACL规则放置是直接对规则集优化,忽略了网络中流对规则的影响。也就是说ACL端点策略中的规则(聚合规则,可以是通配符,图5(a)(b)所示)是给定好的,怎么把这块规则集分配到指定的路径上(图6所示)。而转发规则放置根据流量来生成规则(OFFICER单目的地址,不需要考虑分割问题,例子中的图所示),然后放到自己优化模型的路径上。
    这里写图片描述

  • 从路由策略来区别:,(宽松)路由策略转发规则放置(OFFICER模型)的输出(端点策略则一直都是输入),通过制定路由策略来放置规则,以满足优化目标。而ACL问题的路由策略基本上是输入。

  • 从主动或被动放置规则来区别ACL问题一般都是主动放置问题,因为规则访问控制都是预先定义好的,不受流的影响。而转发问题可以是主动也可以使被动,但是主动时流,即端点策略需要提前定义好。
  • ACL只约束容量;而转发问题(OFFICER模型)的约束条件主要限制链路带宽,容量次要,因为通过默认路径转发。

可以看出,在转发规则的放置问题中如何选择好的路径(路由策略)是关键。因此,不同的模型有不同的路由策略

——>举个例子:

eg1:一个简单的网络拓扑中,有8个交换机。其中,入口链路有东、西两个,出口链路有南、北两个。
这里写图片描述

  • a)模型的优化目标:最短路径。需要15个规则。
  • b)模型的优化目标:最少化规则。需要9个规则。
  • c)模型有约束条件:交换机容量限制。每个交换机只能存放两个规则。

其中,OFFICER模型类型于b)的问题。

——>OFFICER模型的主要思想:

OFFICER treats the network as a black box that must satisfy the endpoint policy imposed by the operator and tries to get the maximum from the available resources by adapting the routes followed by the different packets towards their desired egress links.

  • modeling the network as a black box respecting the endpoint policy
  • getting the maximum from the available resources by relaxing routing policy, the rest of the traffic that cannot be installed is routed on a default path

这里提出了默认路径(default path)的概念,是本文的创新点。

——>什么是默认路径?

就是从入口链路,经过某些交换机,到控制器的路径。如下图

——>默认路径的作用:

  • ①并不是每个流都符合端点策略。②由于容量不足,安放不了流对应的规则,对于不符合上面情况的流转发到控制器,交给控制器处理。这就是为什么默认路径从入口链路开始。
  • 默认路径有默认规则可以转发到默认的下一跳节点。如果流经过默认路径,可以减少转发规则的安放(压缩规则的意思)。这是本文OFFICER算法的核心思想,后面会详细的分析。

——>再举个例子:

eg2:如下图是线性结构的网络拓扑。所有交换机节点都连接到出口节点E,链路左端是入口节点,右端是控制器。默认路径从入口节点到控制器。
这里写图片描述
假设在这个拓扑中的端点策略,需要至少100个规则才能使所有的流转发出去而不经过控制器。现在考虑三种模型:

  • Palette模型:根据最短路径(A——>E)的策略,所有的流都可能进过A、E,也就是说A、E的容量要满足至少100个规则才行。又因为拓扑中有4条路径到E,则至少需要安装400个规则。
  • OneBigSwitch模型:拓扑中所有到E的4条路径:A——>E,A——>B——>E,A——>B——>C——>E,A——>B——>C——>D——>E。根据该模型均分的策略,每条路径(交换机)不超过25个规则。
  • OFFICER模型:该模型也能满足所有的流转发。并且即使在网络资源匮乏的情况下(容量不足,交给控制器处理),属于under-provisioned networks情况下。而前两个模型是 best provisioning of the network情况,即网络资源已经预设好满足流。

本文提出:

  • 一个整数线性规划的规则放置模型。
  • 由于该模型是NP-hard问题,提出了一个启发式算法—— OFFICER,在约束条件的限制下,最大化网络中流的满意度。

下面依次介绍。


线性规划模型

——>各种符号的定义:

这里写图片描述
这里写图片描述

  • 其中A是0-1矩阵。行代表不同的流F,列代表不同的链路L。
  • α f , l 表示第f个流是否在第l个链路上。是矩阵中的元素,取值{0,1}。

约束条件

优化模型的约束条件有:转发约束(避免环路,forwarding loops), 链路带宽约束(bandwidth overload),节点容量约束(memory overflow),端点策略约束(endpoint policy)。

  • 转发约束
    这里写图片描述

  • 链路带宽约束
    这里写图片描述

  • 节点容量约束
    这里写图片描述

  • 端点策略约束
    这里写图片描述
    即使两个流有相同的动作域,但出口不同,也需要两个对应的规则。


优化目标

分为两种情况:

  • Minimizing memory usage:在交换机容量未知的情况下,最小化规则数
  • Maximizing traffic satisfaction:在交换机容量已知的情况下,最大化流量的价值**

一、最小化规则数

目标函数:
这里写图片描述

约束条件:
这里写图片描述

  • 增加约束(10),是对约束(8)重新定义。避免流转移到控制器,以减少规则数。
  • 交换机容量未知,可以可以不考虑容量约束,约束(5)(6)设置为 ∞。或者由于条件限制,容量设置为Cs。

二、最大化流量的价值

目标函数及约束:
这里写图片描述

  • 这里的w f , e 表示流f在出口链路e上的收益值gain(权重)
  • 如果只考虑最大化流量,则w等于流f的速率p
    这里写图片描述

——>优化目标转化为:

The problem then becomes how to allocate rules so as to maximize the gain from the traffic exiting the network at egress link e(the rest of the traffic is forwarded to the controller over the default path).


OFFICER算法

由于线性模型是一个NP-hard问题,无法在多项式时间内解决。本文提出了一个启发式算法——OFFICER。

首先,提出了偏转技术(Deflection technique),与前文提到的默认路径联立。

Our idea is to forward packets of a flow on the shortest
path between the egress point of the flow and one of the nodes
on the default path.

思想:在默认路径节点和出口之间最短路径。因为默认路径的转发不需要安放规则(有默认规则),只需在两者之间的偏转部分安放规则。而且偏转路径越短需要安放的规则越少。

——>有三种找最短偏转路径的策略:

  • Closest first (CF):入口链路和默认路径间的最短路径。
  • Farthest first (FF):控制器和默认路径间的最短路径。
  • Closest to edge first (CE):出口链路和默认路径间的最短路径。一般用这种策略。

——>例子:

这里写图片描述

——>伪代码:

该算法是贪心算法。最大化流的累计权值w。

这里写图片描述

算法的时间复杂度主要是对流的排序,O(|F| · log(|F|))。

改进:通常情况下,在数据中心有大量的流构成了一个巨大的矩阵A,这无疑增加了算法的时间复杂度。为此,我们可以忽略老鼠流,只考虑大象流的权值。


仿真实验

有四种因素会影响矩阵A: the topology, the traffic workload,
the controller placement, and the allocation algorithm。

  • 拓扑:文中给出了仿真的四种拓扑类型
    这里写图片描述

  • 负载:对每个拓扑,随机产生24个负载。

  • 控制器与默认路径的位置:

    • the most centralized position (i.e., the node that has minimum total distance to other nodes, denoted by MIN)
    • least centralized position (i.e., the node that has maximum total distance to other nodes, denoted by MAX)
  • 算法类型:

    • Random Placement (RP):流量的权重随机,偏转点位置随机。
    • Optimum (OP):使用CPLEX计算上午中的整数线性模型的最优化
    • OFFICER算法

前两个是参考标准。

——>流量在路径中的执行率

这里写图片描述

  • x轴代表一个流最多可以放的规则数
  • y轴代表流在路径的执行率
  • points indicate the value of the metric of interest if all flows are delivered to their egress link when (i) strictly following the shortest path and denoted with a square and (ii), if ever computable, when minimizing memory usage as formulated in Sec. III-A and denoted with a circle.

——>路径的拉伸度

这里写图片描述

聚合规则会出现规则依赖问题,所以,增加限制条件:一个流只能有一个规则。

但是,由于带宽的限制,一个流往往并不只有一个路径。

当一个流需要转发到几个不同的出口,怎么办?①重新定义流②给流增加多个标签。


通过OFFICER模型的启发式算法,我们得到了一个优化的流矩阵A(|F|-by-|L+| binary matrix)。但是对于一个大型的网络拓扑,流矩阵A的规模将十分巨大,无法实际处理。同时TCAM节点的容量有限。——>如何减少A的规模呢?

请看下节: aOFFICER: Adaptive OpenFlow Rules Placement


引用:

  • Nguyen, Xuan Nam, et al. “OFFICER: A general optimization framework for OpenFlow rule allocation and endpoint policy enforcement.” Computer Communications IEEE, 2015:478-486.
  • Nguyen, Xuan Nam, et al. “Optimizing rules placement in OpenFlow networks: trading routing for better efficiency.” The Workshop on Hot Topics in Software Defined NETWORKING ACM, 2014:127-132.
  • Nguyen, Xuan Nam, et al. “Rules Placement Problem in OpenFlow Networks: A Survey.” IEEE Communications Surveys & Tutorials 18.2(2016):1273-1286.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OFFICER: A general optimization framework for OpenFlow rule allocation and endpoint policy enforceme 的相关文章

  • 使用 gekko 进行优化时返回“@Error:未找到解决方案”

    我正在尝试完成长达一年的电池优化问题 8760 小时 ind 1 和 ind 2 是长度为8760的列表 包含0 1 一年中的某些时间可能会获得额外的收入 因此这些指标列表用于区分这些时间 进一步用于最大化函数 m Gekko remote
  • x >= 0 比 x > -1 更有效吗?

    在 C 中与 int 进行比较是x gt 0比更有效率x gt 1 简短的回答 不 更长的答案提供一些教育见解 这完全取决于您的编译器 尽管我打赌每个理智的编译器都会为这两个表达式创建相同的代码 示例代码 int func ge0 int
  • if 语句在循环内部还是外部?

    如果我这样做会更好吗 foreach my item array if bool code else code or if bool foreach my item array else foreach my item array 我会离开
  • 是否可以在Java中有效地实现seqlock?

    Another question https stackoverflow com q 14660529 149138让我想知道是否seqlock http en wikipedia org wiki Seqlock可以通过Java中的易失性
  • 二维的 Scipy curve_fit 不起作用 - 对象太深?

    我有一个 2400 x 2400 的数据数组 如下所示 data 2 302670298082603040e 01 2 304885241061924717e 01 2 305029774024092148e 01 2 3048071008
  • 计算编辑距离的最有效方法

    我刚刚实现了最佳匹配文件搜索算法来查找与字典中的字符串最接近的匹配项 对我的代码进行分析后 我发现绝大多数时间都花在计算查询与可能结果之间的距离上 我目前正在实现使用二维数组计算编辑距离的算法 这使得实现成为 O n 2 操作 我希望有人能
  • 最大限度地降低重新分配人员的成本

    我有属于不同类别的个人 他们位于不同的地方 区 这些人口预计将从population值低于 到demand value population and demand by category and zone lt tibble tribble
  • C# 数组还是字典?

    我想知道 C 数组的访问速度是否恒定 我需要在静态数组中存储 1000 个项目 这些项目将在服务器启动期间初始化 该数组将被只读使用 所以数组不会发生任何变化 我应该使用简单的 C 数组 new MyClass 还是字典 我对 C 非常陌生
  • 使用 SSE/AVX 获取 __m256d 中存储的值的总和

    有没有办法获得存储在 m256d 变量中的值的总和 我有这个代码 acc mm256 add pd acc mm256 mul pd row vec acc in this point contains 2 0 8 0 18 0 32 0
  • 如何使用窗口函数优化SQL查询

    这个问题与this https stackoverflow com questions 32222889 how to calculate power consumption from power records 一 我有一个包含设备功率值
  • mod_pagespeed 有什么作用?

    这是参考 http googlecode blogspot com 2011 01 go daddy makes web faster by enabling html http googlecode blogspot com 2011 0
  • optim() 中的错误:搜索单变量函数的全局最小值

    我正在尝试优化 R 中的函数 该函数是仅估计时负二项式的似然函数mu范围 这应该不是问题 因为该函数显然只有一个最大值点 但是 我无法达到理想的结果 需要优化的函数为 EMV lt function data par Mi lt par P
  • 如何用 numpy 在 Cython 中表示 inf 或 -inf ?

    我正在用 cython 逐个元素构建一个数组 我想存储常量np inf or 1 np inf 在某些条目中 然而 这将需要返回 Python 进行查找的开销inf 有没有libc math相当于这个常数 或者其他一些可以轻松使用的值 相当
  • MVC 4 中的运行时动态捆绑和缩小

    我想知道是否有人可以帮助我使用 MVC 4 附带的新优化命名空间进行捆绑和缩小 我有一个多租户应用程序 我想在其中决定应根据每个用户的设置加载哪些 js 文件 一种方法是预先创建所有包并根据用户的设置更改resolvebundleurl的虚
  • 如何使用 UIImagePickerController 呈现 ViewController

    我试图提出一个ImagePicker 然后在用户选择图像后 呈现图像编辑ViewController用户可以在其中操作图像 然后将编辑后的图像发送回原始图像ViewController 问题 是否有一种标准或最佳实践方法从初始 ViewCo
  • 如何使用Python优化大型数据集的API调用?

    客观的 将地址列表发送到 API 并提取某些信息 例如 指示地址是否位于洪水区域的标志 Solution 适用于小数据的 Python 脚本 Problem 我想针对大输入优化当前的解决方案 如何提高 API 调用的性能 如果我有 100
  • C++ 中的编译器指令重新排序优化(以及阻碍它们的因素)

    我已将代码缩减为以下内容 这在保留我感兴趣的编译器输出的同时 尽可能简单 void foo const uint64 t used uint64 t ar 100 for int i 0 i lt 100 i ar i some globa
  • 优化 itoa 功能

    我正在考虑如何使用SSE指令实现整数 4字节 无符号 到字符串的转换 通常的例程是将数字相除并将其存储在局部变量中 然后反转字符串 本示例中缺少反转例程 char convert unsigned int num int base stat
  • 比较字符串结尾的最佳方法是使用 RIGHT、LIKE 还是其他?

    我需要将字符串的结尾与存储过程中可能的结尾列表进行比较 会被叫很多 大概有10 15个候选结局 此时 仅使用代码的解决方案比创建专用于此的表更好 类似的东西 IF ENDSWITH var foo OR ENDSWITH var bar O
  • 让 GHC 生成“带进位加法 (ADC)”指令

    下面的代码将表示 192 位数字的两个未装箱字三元组添加到新的未装箱字三元组中 并且还返回任何溢出 LANGUAGE MagicHash LANGUAGE UnboxedTuples import GHC Prim plusWord2 Wo

随机推荐

  • ROS CMakeLists.txt的编写学习

    调用ROS中的函数 xff0c cmakelists的编写学习过程 如有错误 xff0c 请留言指教 多谢 A 首先要了解的 CMakeLists txt是CMake的构建系统构建软件包的输入文件 任何兼容的CMake都包含了描述如何构建代
  • 【Node】Buffer 与 Stream

    node 为什么会出现 Buffer 这个模块 在最初的时候 xff0c JavaScript 只运行在浏览器端 xff0c 对于处理 Unicode 编码的字符串很容易 xff0c 但是对于处理二进制以及非 Unicode 编码的数据便无
  • ROS的tf包中坐标变换的方法

    1 setRotation函数的参数 在坐标变换的时候常有这样的写法 xff1a tfTutorialsAdding a frame C 43 43 transform setOrigin span class hljs symbol tf
  • 卡尔曼滤波的理解以及参数调整

    一 前言 卡尔曼滤波器是一种最优线性状态估计方法 xff08 等价于 在最小均方误差准则下的最佳线性滤波器 xff09 xff0c 所谓状态估计就是通过数学方法寻求与观测数据最佳拟合的状态向量 在移动机器人导航方面 xff0c 卡尔曼滤波是
  • ROS自定义msg类型及使用

    一 创建msg消息 参考 xff1a CreatingMsgAndSrv 首先创建一个空的package单独存放msg类型 xff08 当然也可以在任意的package中自定义msg类型 xff09 这里为便于说明 xff0c 建立一个名为
  • WebRTC-集成qsv硬解码实现

    1 Window下QSV硬解码配置 在libavcodec codec list c下添加 amp ff h264 qsv decoder 在ffmpeg generate gni下加入 34 libavcodec h264idct c 3
  • [ROS] ROS基础,创建工作空间,创建功能包,ros功能包相关命令,Catkin编译系统,catkin_make的编译方式

    1 工作空间 工作空间 xff08 work space xff09 是ROS系统中存放工程开发相关的文件夹 xff0c 其目录结构如下 xff1a src xff1a 代码空间 xff08 Source Space xff09 xff0c
  • ijkplayer-添加播放截图功能

    应用播放的时候需要截图 xff0c 可以在上层使用TexturView来使用截图 xff0c 不过太具有局限性呢 xff0c 还是在底层处理比较好 那么先分析下可以在哪里加截图呢 xff1f 看到网上很多做的都不能支持硬解截图 xff0c
  • avformat_seek_file及其flag含义

    我们从ijk中seek的处理流程来看ffmpeg的这个问题 int ffp seek to l FFPlayer ffp long msec assert ffp VideoState is 61 ffp gt is int64 t sta
  • 单例模式

    单例模式 xff1a include lt iostream gt using namespace std class Singleton public Singleton cout lt lt 34 Singleton虚构函数 34 lt
  • ffmpeg系列-解决ffmpeg获取aac音频文件duration不准

    这个问题是这样产生的 xff0c 一同事反应会随机出现ijk获取到的aac文件的duration不准 xff0c 发来一看 xff0c 确实不准 xff0c 在AE或者系统mediaplayer中得到的都是8 4秒 xff08 准确时间是M
  • 基于librtmp的推流实现

    1 推流 配置好rtmpdump库后 xff0c 我们可以先用命令行来推流看下效果 2 流程图 使用librtmp发布RTMP流的可以使用两种API xff1a RTMP SendPacket 和RTMP Write 使用RTMP Send
  • ijkplayer-音视频变速播放实现

    本文主要分析变速播放框架实现细节 xff0c 不分析sonic以及soundtouch变速算法 在我的sonic变速变调原理一文中会详细讲解基于基音周期来实现变速变调的原理 1 变速入口分析 从jni层的 setPropertyFloat函
  • Android_WakeLock使用

    1 前言与WakeLock简介 1 1 前言 一些手机app xff08 如微信 QQ等 xff09 有新消息来到达 xff0c 手机屏幕即使在锁屏状态下也会亮起 xff0c 并提示用户有新消息 但是 xff0c 一般情况下手机锁屏后 xf
  • ContentResolver.query详解

    1 查询手机的联系人 public void getContacts ContentResolver contentResolver 61 this getContentResolver Cursor cursor 61 contentRe
  • [ROS] 安装Gazebo 使用Gazebo 实现摄像头仿真 雷达仿真 Kinect仿真

    目录 安装Gazebo 1 添加源 2 安装gazebo 使用Gazepo 实现摄像头仿真 1 工作空间与功能包的创建 2 xff09 Gazebo配置文件 3 车体urdf建模与控制程序 4 launch文件 5 执行launch文件运行
  • jni开发-GetMethodID与CallObjectMethod的坑

    在java层中声明一个方法用于创建一个audiotrack xff0c 在C层中调用这个方法并获取audiotrack对象 先看下面的代码 xff1a SuPlayer java public AudioTrack createAudioT
  • 基于电信行业的AIOps应用与实践

    欢迎关注 程序杂货铺 公众号 xff0c 里面有精彩内容 xff0c 欢迎大家收看 1 摘要 xff1a 在大型互联网架构中 xff0c 为提升平台的计算能力及资源利用率 xff0c 普遍采用分布式技术 然而使用分布式技术也会带来一些潜在问
  • 关于解耦的理解

    在程序设计过程中 xff0c 最头痛的不是逻辑的编写过程 xff0c 更不是算法的设计 xff0c 最头痛的是如何设计出一个容易维护 xff0c 扩展性好的东西 而耦合问题是最令人烦躁的 xff0c 它的存在很多人发现不了 xff0c 所以
  • OFFICER: A general optimization framework for OpenFlow rule allocation and endpoint policy enforceme

    OFFICER gt 转发规则放置问题 gt 什么是规则放置问题 xff1f 一组规则如何放置到容量有限的交换机上 xff0c 以满足上层应用的策略 xff08 ACL 流转发 xff09 规则用来匹配流 xff0c 其action是策略的