介绍了TIME4, 利用精确地时间协调网络更新。定义了的更新场景,叫做flow swap。定义了lossless flow allocation 无损流分配问题,展示了一些需要频繁更新路径的场景。论文工作已经被ONF采纳,用于OPENFLOW1.5。
同步时钟更新在各个网络中都是成熟的技术。PTP就是非常高精度的同步时钟,精度为1微秒。目前13个支持SDN的交换机中9个都支持PTP技术。
我们的工作,TIME4可以实现定时更新,本文也展示了一类更新场景使用精确时间是最好的选择。
集中式网络更新通常包含多个网络设备,需要降低临时混乱。SDN用于校园网,数据中心,广域网,运营商网络,移动网络。广域网和运营商网络要求低丢包率。移动网络要求对于视频和音频帧丢失率不超过10^ -4, 其他低优先级的包也不超过10^-3.
总之,所有的所有的网络都要求低丢包率。
如图1展示了一个更新场景,只有同时更新S1,S3才可以避免死锁。
本文我们展示了一个动态环境,流会不断的增加删除或者重路由,流交换( flow swap )不可避免。accuracy就是我们的解决方案,但是不可能所有的更新同时应用在所有交换机,有一个小的间隔,我们称之为调度错误。
大量的工作研究流表更新,(1)找一个更新顺序序列,(2)两阶段等。然而这些方案对于死锁,资源等没有很好地解决方案,只是用于流更新一致性。
SWAN建议预留10-30%的链路空间缓解堵塞,B4提出临时降低一些或者所有流的带宽,他们可以解决资源问题,但是我们的方法可以优化这些解决方案。
本节讨论流交换的不可避免,而且没有策略可以避免这种场景出现。
我们的分析基于不可分割的流问题,如图2。
给一个有向图,源节点s,目标节点d, 定义两者的博弈: source (可以认为是攻击者)生成流,controller重新配置网络转发规则,达到尽量没有丢包。
我们的观点是:source有策略强制控制器进行流交换,也就是多个流同时进行更新的场景不可避免,体现我们的提出的定时更新的重要性。
下面我们阐述lossless flow allocation(LFA)问题。source和controller之间的博弈,源不断增加或者删除流,控制器找出一条路径。源的目的是渐增的增加流,迫使控制器执行流交换。控制器的目的是找到一个路径减少丢包率。
我们展示源有策略实现迫使控制器进行流交换。
假设:1,每个流有固定的带宽。2. 控制器要降低丢包 3.流不可切分。
定义流:SDN中为共有一些属性:例如源目的地址等。本文我们将一个流看做是源和目的之间一个session。
网络可以表示为一个有向有权重无环图, G = ( V , E , c ) \color{red}{G = (V, E, c)} G=(V,E,c).
其中V = Vin U {s,d}, Vin表示中间的节点,{s,d} 表示源和目的节点。
所有的直接连着s的节点表示为O = {O1, O2, O3,}。
从源出发的边为无限容量,其余边容量为c, 文中简化,c= 1. 这样的一个图G就是LFA图。
从 S出发的流定义为F = {F1, F2, F3}每个流定义为Fi = (i, fi, ri); 其中i表示index, fi表示流带宽,ri表示控制器转发给的节点。
控制器维持转发功能Rcon: F×Vin ->Vin U {d}.
源策略Ss(F, Rcon) = (a, F)定义一组流的转发功能,(a, F)代表源的下一步a ∈{add, remove}。
控制器策略Scon(Rcon, a, F) = U = {u1, u2, ……},U就是一组更新。
注意当流被移除,控制器更新很简单,我们主要讨论添加新流。
theorem1. 存在策略Ss, 迫使控制器不得不执行流交换。
证明:如图2b, 我们认为m为流入d的链路数量,
m = 1策略简单,先讨论m= 2。
两个边流入d,分别额为 e1和e2,下面给一个例子。
如果source生成四个流
F1 = (1,0.35,o1), F2 = (2,0.35,o1), F3 = (3,0.45,o2), F4 = (4,0.45,o2)
有两种情况。
a. 控制器可能按照顺序e1为0.35和0.45,e2也是,
然后source生成一个新流F5 = (5, 0.3, o1)只能移动0.35和0.45.
出现场景流交换。
b. 控制器分配e1为0.35和0.35, e2为0.45, 0.45,
source生成两个流F6,F7,带宽分别为0.2,
将F6安排到e1后,需要交换0.35和0.45才可以分配F7.
出现场景流交换。
当m > 2, 我们先生成m-2个带宽为1的流,占据其他的链路,
问题降级为m=2.
理论1展示了2-swap,我们后边证明k-swap.
证明:如果m是偶数,source生成m个流带宽0.35, m个流带宽0.45, m个流带宽0.2, 每个链路都有一个0.35,0.45 和0.2 的流。
之后移除m个0.2带宽的流,添加m/2个带宽为0.3的流。
按照理论1, 每个0.3流都会造成一个2-swap, 整个网络就是一个m/2-swap.
如果m是奇数,source先生成带宽为1的流,之后按照上述偶数产生m-1/2-swap.
本文主要讨论m=2的部分。
定义矩阵表示流的超出额度oversubscription。
通过理论证明表示:流交换不仅仅不可避免,而且对整个网络有较大的影响力。
图5展示了scheduled bundle 消息流程。
(1)控制器发送bundle open 消息给交换机
(2)控制器发送add message ,每个add massage封装一条openflow message, 例如flow_mod。
(3)发送bundle close消息
(4)发送bundle commit消息,可选的带有一个执行时间Ts, 交换机将在预定的时间Ts执行命令。
bundle discard 消息 允许控制器不执行命令。bundle commit 消息发送之后,如果一个交换机发送error消息,控制器会发送discard消息给所有交换机,取消调度操作。
因此,当交换机收到bundle commit消息后后,交换机应该确定他是否有足够的资源执行这个命令。
同样定义了 bundle feature request消息,控制器询问交换机是否支持scheduled bundles.
switch:交换机基于使用开源代码 CPQD opensoftswitch, 添加一个switch scheduling模块,当交换机收到控制器的scheduled bundle 消息,这个模块可以在预定的时间调度执行对应的指令,这个模块也可以处理收到的bundle feature request消息。
并且交换机跑着一个reversePTP master, 发送交换机时间给控制器。
controller:控制器模块时间基于CPDQ DPCTL,这完全是个命令行工具,扩展DPCL 添加time extension 模块实现我们的需求。 新模块可以为bundle commit 指令定义一个执行时间,同样课发送bundle feature request消息。
并且控制器运行着reversePTP,收到来了交换机的n个实例,按照偏移量计算命令执行时间。
未完待续。。。
注:本文介绍两篇论文:
【1】 T. Mizrahi and Y. Moses, “TIME4: Time for SDN,” technical report, arXiv preprint, 2016.
【2】Tal Mizrahi, Yoram Moses, “Software Defined Networks: It’s About Time”,IEEE INFOCOM 2016.