目录
abstract
SDN在广域网中,存在单点故障,常常使用分布式控制平面,但是这就存在动态控制器的供应问题(dynamic controller provision problem,DCPP)。
本文的工作: 动态调整活跃的控制器数量,提出两种启发式算法解决DCPP。
1. introduction
流建立时间(flow setup time)
:交换机收到一个新流,上报控制器,控制器安装合适的流规则,整个过程需要的时间。
分布式控制平面存在动态控制器分布问题(或者说动态控制器供应问题DCPP)。文献八提出静态配置方案,解决控制器和交换机之间的映射问题; 本文提出了动态配置方案。
2. related work
文献5DevoFlow
: 交换机预先安装通配符规则处理老鼠流,控制器只是处理大象流。
文献16DIFANE
:控制器生成对应的规则,但是规则下发交给权威交换机。
文献7Kandoo
,使用两级分布式控制平台,两级结构,本地控制器不处理全局事件,顶级的控制器处理全局事件。本地控制器处理-判断流是否是大象流; 顶级控制器处理-流重路由等。
文献14HyperFlow
使用文件系统的订阅机制处理分布式。
文献10Onix
通过分布式哈希表处理分布式控制器。
3. system description
前情介绍:首先openflow 控制器具有信息统计的优势,通过OFPST_PORT,OFPST_FLOW,OFPST_TABLE
三类消息可以收集端口,流和表级别的统计信息。
因此控制器可以建立自己的本地视图,此外,通过和其他控制器之间的交流可以建立全局视图。
控制器的状态:
- active:手下至少有一个交换机
- inactive: 没有交换机分配给控制器
系统的整体模块设计如图1:
共有三个模块:
1monitoring module
两个功能,第一是通过心跳连接保证控制器的活性; 第二是获得相应的统计数据。
2. reassignment module
周期性检查上个模块收集的数据,决定是不是要重分配资源。 决策标准第一是后文会讨论。第二是监控模块发现对应的控制器失去活性。
3. provisioning module
分配模块,进行对应的交换机控制器的联系分配。
新流到达, 分为两种情况
,第一种只是穿过当前区域,按照流表进行转发即可,另一种是需要穿过多个区域,下面讨论这种情况,如下图。
这个图是下一节中计算流安装代价的重要示例,我的理解中,途中有一处错误
,其中关于CpL的计算中,应该是
τiidim+τijdjm+τjkdkn+τkldln
交换机I的a端口到达一个新流,上报对应的控制器m,
控制器计算路径为i.a → i.b → j.b → j.c,
下发流表给对应的交换机i,j ,两个交换机按照流表转发流。
--这个请求叫做初始路径建立请求。
流转发到交换机k的c端口,交换机k上报给对应的控制器n,---这个请求叫做中间路径建立。
n计算路径
4. problem formulation
定义变量:
每Ta时间调用一次重分配算法。
d
ij : 交换机i和控制器j之间的最小代价。
U=<u1, u2, ,,,>
表示控制器的容量/能力
X = [ x
ij]|s|×|F|
矩阵X, 每一个参数xij等于1表示交换机i和控制器j相连。0 则相反。 变量范围S
表示交换机集合,F
表示控制器集合。
T =[τ
ij]|s|×|s|
流量矩阵,其中τij表示从交换机i到交换机j的平均流数量。
其中对角线表示到达交换机i的平均流数量。
Y = <y1, y2, . . . >
表示控制器是active或者inactive。
-
statistics collection cost(Cl)
假设Ts时间收集一次统计信息,从控制器收集对应交换机的代价为
-
flow setup cost(Cp)—
分为三个部分:初始流建立请求,中间流建立请求,规则安装。–参考上图,帮助理解。
初始流建立请求:
中间流建立请求建立:
规则安装代价:
-
synchronization cost(Cs)
控制器的同步代价,假定每经过Tx进行一次同步,考虑突发事件e,
控制器之间(理解的是两台之间),Ta时间内生成的同步消息数:
因此定义Cs:
-
switch reassignment cost(Cr)
原来的交换机和控制器的分配矩阵X = [ xij]|S|×|F|
重新分配之后的矩阵 X ‾ \overline{X} X
定义异或矩阵Z = [ zij]|S|×|F|,其中zij=1表示交换机和控制器的连接发生了改变。
总权重如下
5. proposed heuristic
I. Greedy Knapsack
控制器作为背包,交换机作为物品。
背包的容量是一段时间内他可以处理的请求数量。
物品的权重就是一段时间内生成的请求流数量。
收益就是交换机和控制器之间的。
每一轮选出一个和未分配交换机路径代价之和最小的控制器,运行贪心算法,分配交换机。
算法终止条件是没有未分配的交换机或者deactivate 的控制器。
II. Simulated Annealing
两步算法
算法一
:
定义一个交换机的所有的流量总和:
输入:拓扑,流量矩阵,交换机,控制器,控制器容量,旧分配矩阵
X
‾
\overline{X}
X;
输入:新的分配矩阵
X
‾
\overline{X}
X
首先选出一组控制器Fv --原有的分配矩阵中容量受限的控制器集合。
然后循环遍历这个控制器集合:
选择一个控制器f:
遍历这个控制器下所有的交换机:
按照一个交换机所有的流量总和进行排序,从高到低排序:
为每一个交换机所有可行的控制器中容量最小的(减少碎片)控制器。
更新Sf --删除已经分配的交换机。
更新Fv–删除f(他的容量不再受限)
算法二
算法一的输出就是算法二的输入,输出是最终的分配矩阵X。
定义local move
- relocated switch:随机选择一个交换机,并将它分配给一个随机的控制器。
- swap switch:随机选择两个控制器下的交换机,交换分配方式。
- Activate controller:激活随机选择的inactive 控制器
- Merge assignments:随机选择两个控制器将其中一个控制器下所有的交换机移交给另一个。