APP下载

一种软件定义物联网中的数据传输方法

2021-05-14李宇桐

计算机应用与软件 2021年5期
关键词:数据流概率蚂蚁

丁 俏 冯 勇 李宇桐

(昆明理工大学云南省计算机应用技术重点实验室 云南 昆明 650500)

0 引 言

随着城镇化进程加快,越来越多人生活在城市中,构建智能感知城市成为给人们提供舒适和便利环境的必要条件[1]。物联网(IoT)是实现感知城市的基础,它不仅能灵活地支持各种应用需求,还能够便捷地管理基础设施[3,5-6]。软件定义网络(SDN)是一种新兴的网络模式,它能够通过满足特定端到端需求的方式,灵活地支持和管理网络中大量的数据传输,允许快速灵活地配置基于流的路由,实现网络组件的重新组合,尤其适用于具有数据流变化[2]的网络。SDN技术与物联网的结合引起学术界和工业界的关注,软件定义的物联网(SD-IoT)已经用于智能感知城市的建设[3-4]。

在软件定义的物联网网络中,数据传输常常会出现延迟问题,这会影响用户的生活体验。如何提高网络中数据传输的效率、降低数据传输延迟,是当前学者们研究的一个重要方向。许多学者对SD-IoT网络数据传输延迟问题进行了研究。Craig等[7]提出了一种通过修改软件定义网络控制器中的实时链路成本将流量负载平衡应用于多播流量的方法。Zhang等[8]提出了一种构建多播机制的方法,其中多播流在到达最终用户之前由网络功能虚拟化处理。Shen等[9]为SDN提出一种新的可靠多播树,因为最短路径树(SPT)宽带效率不高。

上述研究主要是通过平衡多播流、虚拟化处理数据和运用多播树等方式,有效地减少了网络资源消耗,降低了网络中数据传输延迟。这虽然在一定程度上降低了网络数据传输延迟,却增加了网络数据传输的成本,且它们对网络中数据传输效率的提高并不显著,更重要的是不能对网络中的数据传输进行动态调整,容易造成网络负载不均衡,网络资源利用率低。针对此问题,在软件定义物联网中,本文提出一种数据传输方法,该方法是基于蚁群算法[10],依据选取数据转发路径的概率大小,将被转发数据按概率分布到各个路径上,概率值大的路径转发的数据多,概率值小的路径转发的数据较少,实现数据流被合理均衡地分配到可行的多路径上。该方法能够对数据流的转发路径进行动态调整,使网络中数据传输达到负载均衡,避免数据传输拥塞,使得数据流能高效地传输到服务器端。本文主要关注的是SD-IoT中数据转发平面上[11]的数据传输问题。仿真实验结果显示该方法有很好的效果。

1 相关工作

SDN技术与物联网的结合正在引起学术界和工业界的关注,软件定义的物联网(SD-IoT)已经用于智能感知城市的建设。如图1所示,一个典型的软件定义的物联网系统[12]从逻辑上可以分成:感知数据系统、感知数据传输系统(即数据转发平面)和感知数据处理系统三个子系统。当参与的移动传感器节点(例如行人和车辆)到达空间事件的可感知区域内时,会异步感知城市环境中的空间事件,然后产生感知数据来描述该事件。感知数据可以从传感器设备中读取(例如加速度指针、陀螺仪)[13]。移动传感器节点可以通过蜂窝网络(3G/4G)立即和网关进行通信,将感知数据卸载到网关上,即卸载到数据转发平面上,SDN控制器通过基于蚁群算法的数据传输方法,为感知数据计算出从网关到数据服务器间的多条路径,感知数据通过多路径上传到数据服务器端,以进一步聚合找到事件的真相。这些感知数据从多个网关通过多个路径异步传输到数据服务器端的过程被称为异步多点对点(M2P)的数据传输[14],后面讨论的M2P数据传输均是异步的。这里感知数据[13]和感知数据处理[15]均不在本文的研究范围内,并且本文认为SDN中只部署一个控制器[16]。

图1 IoT-SDN框架图

然而通常在软件定义的物联网网络中,数据传输具有一定的延迟性。如何提高网络中数据传输的效率是当前研究学者们急需解决的问题。现有的提高SD-IoT网络数据传输效率的方法主要有两种类型:一是通过提高数据卸载效率,以节省不必要的时间,实现节能且经济的数据传输[17-18];二是通过减小SD-IoT网络中控制器端数据流请求负载,提高数据转发效率,进而降低数据传输延迟。

Mehmeti等[17]对延迟卸载提出了一个排队分析模型,得出平均延迟、卸载效率和其他指标,作为关键网络参数。Zhou等[19]通过考虑时间社会接触模式,讨论网络中的数据传输。Zhang等[20]定义了与提高卸载效率相关的效用函数,以定量描述用户在价格方面的满意度与等待Wi-Fi连接延迟之间的权衡。上述研究工作主要是通过提高数据上传网关的效率,节省不必要的数据卸载时间,从而提高数据传输效率,降低数据传输延迟。Song等[21]提出ORSIN(软件定义物联网中一种请求方法)方法,将来自同一个感知事件的异步请求批量分组到控制器端,形成事件-网关表,通过减小控制器端的负载,以提高网络数据传输效率。

然而上述研究均未考虑数据转发平面上的数据上传延迟问题。如图2所示,在数据转发平面上,假设有A和B两种不同的数据流,它们分别来自两个不同的感知事件,它们需要被上传到同一个数据服务器端,控制器分别给A和B规划了a(g1到ds1)和b(g3到ds1)两条不同的传输路径。假如A数据流比较大,B数据流比较小,一段时间后,a路径会产生严重拥塞,b路径上可能会出现空载,这将会导致网络负载不均衡,此时整体网络数据传输时间会增大,整体数据传输效率会降低。如果此时考虑动态调整a、b两路径上数据流,使a路径中的数据一部分分流到b路径上,则可以提高整体网络数据传输效率,降低数据传输延迟。

图2 数据转发平台

因此,在软件定义物联网中,本文提出一种数据传输方法(DTMSIN)。基于蚁群算法,依据选取数据流转发路径的概率值大小,将被转发数据按概率分布到各个路径上,概率值大的路径转发的数据多,概率值小的路径转发的数据较少,实现将流量合理均衡动态地分配到可行的多路径上。和其他方法相比,本文方法重点关注的是SD-IoT中数据转发平面上的延迟问题,这是导致整体网络中数据传输产生延迟的重要原因;在数据转发平面上,对数据流的转发路径进行动态规划,数据流能高效传输到服务器端,其他方法则是一种静态的路径规划,很容易造成网络拥塞,网络数据传输效率不高。

2 方法设计

2.1 多个感知事件下的M2P路由问题

为了后文对数据传输方法的研究,先分析了软件定义物联网中多个感知事件下的多点对点(M2P)的路由问题。

通常不止一个感知事件将通过数据转发平面传输来自它们的感知数据,而数据转发平面中的交换机具有有限的转发表,来自多个事件的感知数据将竞争数据平面中有限的资源,此时路径选择模式将在很大程度上影响网络中数据的传输效率。

不同路径选择的路由模式如图3所示。图3(a)为局部路径选择模式,来自事件e1的感知数据首先到达边缘交换机s1上,感知数据需要传输到数据服务器端。SDN控制器为其计算了中间路径,此路径的延迟为2。在此示例中,假设每个交换机的转发表只有一个可用的转发条目,当来自感知事件e2的感知数据到达边缘交换机s2上时,感知数据需要传输到数据服务器端。SDN控制器为它规划底部的路径,此路径的延迟为20,因为此时中间路径无效,被从s1到ds1的数据传输所占用。图3(b)展示了一个更有效的路径选择模式,它通过评估全局最小的延迟路径,分别给来自感知事件e1和e2的感知数据计算延迟为4和2的最优路径。此时,在全局路径选择的路由模式下,来自两个事件的数据传输总延迟为6,而在局部路径选择的路由模式下,来自两个事件的数据传输总延迟为22。全局路径选择路由模式比局部路径选择路由模式有明显的优势,故本文采用全局路径选择的路由模式。

(a) 局部路径选择的路由模式

(b) 全局路径选择的路由模式

由上述分析可知,有限的转发表会导致来自多个感知事件的感知数据对转发表路由的竞争。如图4所示,在数据平面中,顶点(交换机)的容量表示转发表的可用空间。对于每一个感知事件,其输入的主机的流量数为1个单位。把每个顶点V的容量转换为具有两个新容量的顶点vin和vout,并且边缘具有与原来边缘相同的容量,这样就实现对原来顶点的扩容。

(a) 变换之前

(b) 变换之后图4 顶点容量的变换图

通常潜在感知事件和M2P数据传输之间会产生冲突,因为来自潜在感知事件的感知数据常常会占用网络资源,这会降低网络数据传输效率。因此本文分析潜在感知事件和M2P数据传输的关系,从而避免冲突发生,提高数据传输效率,降低网络中数据传输延迟。

(1)

(2)

把从在当前时刻t0后一个时间窗口W期间的两个事件之间的重叠时间比率定义为重叠率,计算式如下:

(3)

用Oi={Ri,1,Ri,2,…,Ri,m}表示ei和所有感知事件的重叠比率集合,Ri,i等于1。

为了降低计算的复杂度,本文使用了阈值ε过滤了矢量元素,如下所示:

(4)

由此系统可以获取一个过滤向量集合:

(5)

2.2 建立网络模型

通过上述对多个感知事件网络情形下的M2P路由分析,可以将网络理解为无项加权连通图G(V,E),V为网络节点集合,E为任意两节点之间的链路集合。假设任意两节点之间存在唯一一条链路。每条链路与QoS度量相关的有:可用宽带B、时延T、丢包率、成本C和抖动大小等。QoS的特征值定义为:设R为正实数,对于任意无向加权连通图G中的链路设置下列函数:时延D(e)趋向于R;成本C(e)趋向于R;带宽B(e)趋向于R。权重函数如下所示:

(6)

式中:E、F、G、H分别为各个因素的权重系数,U(e)为选用该路径的概率大小。权重函数计算的值为启发式信息,启发式信息可以避免数据转发路径过多,实时反映当前节点邻居节点的繁忙状态,与路由表一起决定转发数据的路由路径。

假设P(s,j,d)表示选择路由从源节点s到目的节点d,选取s节点邻居节点j的概率,设N(s)为节点s的邻居节点的集合。所有选取当前节点的邻居节点的概率之和为1,如下所示:

(7)

假设满足QoS的最小带宽和满足QoS的最大时延条件,如式(8)-式(9)所示,C0和D0为两个常数,对于从源节点s到目的节点d的任意一条路由路径ri,如果同时满足这两个条件,即加入可用路径集合中。

min{bandwidth(ri),ri∈(s,d)}≥C0

(8)

max{delay(ri),ri∈(s,d)}≤D0

(9)

算法1和算法2分别为前向蚂蚁和后向蚂蚁构建解算法的伪代码。前向蚂蚁收集途径链路的即时状态,包括延迟、抖动、丢包率、队列长度和节点标识信息等链路信息,前向蚂蚁到达目的节点时就会转换为后向蚂蚁,后向蚂蚁按原路返回源节点并更新信息表的相关数据结构。由两种蚂蚁的工作机制可以看出,两种蚂蚁的数据结构相同,均包含路由表、节点状态信息及路径标识。蚂蚁完成寻路和记录路径状态的数据结构可以分别被定义成一个数据表D(d)和一个堆栈S(d)。D(d)包含源节点s、蚂蚁所在当前节点i和目的节点d的节点状态信息以及路径节点数n。S(d)包含了从源节点s到目的节点d依次经过的网络节点的信息An、链路状态信息Bn和各个节点的时延关系Cn。

D(d)=(s,i,d,n)

(10)

S(d)={(s1,A1,B1,C1),(s2,A2,B2,C2),…,

(sn,An,Bn,Cn)}

(11)

算法1前向蚂蚁构建寻路解伪代码

FAB-DCSR(G=(V,E),s,i,d)

//s为源节点

//i为当前节点

//d为目的节点

//初始化状态

1. 初始化:本地流量模式和路由表

2. 为图的每个顶点分配一个蚂蚁

3. 初始化每条边的信息素水平

4. for (每个节点i)

5. while (系统时间<模拟时间)

6. If (系统时间>发送蚂蚁之间的间隔)

7. 随机选择一个d

8. 发送一个前向蚂蚁(s,i,d);

9. end if

10. for (每个前向蚂蚁)

11. while (i!=d)

12. 使用路由表选择下一跳节点;

13. 在蚂蚁的构建路径队列中添加下一跳节点;

14. 移动到下一跳节点;

15. end while

16. end for

17. end while

算法2后向蚂蚁更新数据结构伪代码

BAB-UDS(G=(V,E),s,i,d)

//s为源节点

//i为当前节点

//d为目的节点

1. for (每个后向蚂蚁)

2. while (i!=d)

3. 从蚂蚁所记录的路径中读取前节点及其包含统计信息作为下一跳节点;

4. 等待在高于数据的优先级队列中准备被发送到下一跳节点;

5. 移动到下一个节点;

6. 当前节点赋值为下一跳节点;

7. 更新本地流量模型统计信息;

8. 评估信息素释放大小;

9. 更新信息素表(路由表);

10. end for

11. end while

2.3 信息素表和路由表初始化

本文使用路由表和蚁群信息素表同构的原则,这样路由表就能够根据信息素表动态适应当前网络的状态,路由表的取值是经过信息素表到路由表的幂运算得到的。每个路由器都维护着一张信息素表,信息素表是一个二维矩阵,一个维度表示所要到达的所有目的节点,另一个维度表示路由器的所有邻居节点。信息素表的取值表示从当前节点到达目的节点时,选择当前节点的邻居节点作为下一跳节点的概率,这样可以避免蚂蚁选路陷入局部最优解。当前节点所有的邻居节点的概率和为1。因为路由表和信息素表同构,所以路由表项的取值表示将数据从本节点转发到目的节点时,选择一个邻居节点作为下一个节点的概率,这样同样可以避免数据流路径规划陷入局部最优,可以均衡各链路的负载,动态选择路径,避免路径拥塞发生。同样所有邻居节点的概率值和为1。根据节点间是否为邻居的关系,可以设定不同的信息素表(路由表)的初始概率,如下所示:

(12)

式中:j为i的邻居节点;|Ni|表示当前节点i邻居节点的个数;Ni表示i节点和目的节点d之间的节点;ρ为先验因子。

2.4 路由表的更新和数据转发

路由表与信息素表同构,路由表的取值是经过信息素表到路由表的幂运算得到的,路由表更新规则和信息素表更新一样。

信息素表更新规则:如果后向蚂蚁返回来节点是i节点的邻居节点,那么i节点下一个节点的概率值按式(13)进行增加,否则该节点下一个节点的概率值按式(14)进行减少。

Pid←Pid+μ(1-Pid)i∈Ni

(13)

Pid←Pid-μ(1-Pid)i∈Ni

(14)

式中:节点i是后向蚂蚁过来的节点;节点j是当前节点的邻居节点;d是目的节点;μ为增强因子。每一次计算之后都要保持当前节点的邻居节点总概率和为1,这称为归一化处理。

增强因子μ∈(0,1),公式如下:

(15)

tsup为参数置信区间的上限:

(16)

式中:γ为置信水平;|Wd|为观察窗口的大小。

蚂蚁在选择邻居节点时,可能会遇到以下三种情况,针对这三种情况的处理方法如下:

(1) 若当前节点i相邻节点中含有目的节点d,蚂蚁无条件选择d。

(2) 若邻居节点中含有该蚂蚁之前没有走过的邻居节点,按照式(17)计算新的概率,并按照概率最大值随机选择。

(17)

式中:li为启发式校正系数;Pid为路由概率;α为权重因子;qi为缓冲区队列长度;|Ni|表示当前节点i邻居节点的个数。

(3) 若邻居节点都被以前的蚂蚁访问过,则跳过的之前蚂蚁走过的节点(情况(1)除外)继续下一个邻居节点,按照式(17)计算新概率,并按照概率中最大值随机选择。

转发数据时,路由表会按概率值随机选择下一个邻居节点作为下一跳节点来选择数据流的转发路径。路由表取值是由信息素表值通过指数函数运算映射到路由表中得到的,指数函数公式如下:

g(x)=xγγ≥1

(18)

通过信息素表到路由表的幂运算取值可以增强优质路径的被选择概率,强化函数作用显而易见,增强高概率减弱低概率值,避免数据从低概率的路径转发。由于路由表项的取值反映了所选路径的质量,所以被转发数据会按概率分布到各个路径上,概率值大的路径转发的数据多,概率值小的路径转发的数据较少,动态地调整数据流的转发路径,实现流量合理均衡分配到可行的多路径上。

3 仿真实验

3.1 参数设置

本文基于Mininet(2.3.0)+Floodlight(Ubuntu 16.04-desktop-64位)的实验仿真平台模拟SDN网络环境,将本文方法DTMSIN分别与ORSIN[21]、传统OPENFLOW方法进行比较,使用网络中数据传输平均延迟来评估这三种方法的性能。本文考虑是在多个感知事件情形下,仿真参数设置如表1所示。

表1 实验参数设置

3.2 实验结果分析

实验1在部署5个感知事件和单个数据服务器的网络情形下,对三种方法进行对比,结果如图5所示。

(a) 20个交换机

(b) 30个交换机图5 多个感知事件下不同节点容量下的平均延迟

图5(a)展示了在拥有20个交换机和随机链路的拓扑网络情形下三种方法的数据传输平均延迟情况。随着每个交换机容量的增加,三种方法网络中数据传输平均延迟均逐渐减小。这是因为随着每个交换机的容量增加,交换机上转发表可用空间逐渐增大,来自一些感知事件的感知数据将被分配到具有较低延迟的转发路径上,所以网络的整体数据传输延迟会降低。可以看出,DTMSIN的平均延迟明显比另外两种方法平均延迟都低。虽然DTMSIN和ORSIN采用都是全局路径选择的路由模式,但是DTMSIN首先考虑了SDN数据转发平面的拥塞,其次能够动态地调整数据流的转发路径,使整体网络负载均衡,避免拥塞,而其他两种方法则是静态的路径规划,很容易造成网络拥塞,网络数据传输效率不高。

图5(b)展示了网络中部署30个网关和随机链路的拓扑网络情形下,数据传输的平均延迟情况。随着每个交换机容量增加,三种方法数据传输平均延迟逐渐减小。DTMSIN的平均延迟比另外两种方法延迟都低。相比部署20个网关的网络情景,更大规模的网络拥有更大的平均延迟,因为更多的交换机转发数据包,使得整体网络中的数据流增大,增大了整体网络数据传输平均延迟。

实验2在部署20个交换机、不同感知事件及部署不同数量数据服务器的网络环境下,对上述三种方法进行对比,结果如图6所示。

(a) 3个数据服务器

(b) 7个数据服务器图6 多个感知事件下不同数据服务器数量下的平均延迟

图6(a)展示了把3个数据服务器作为目的地的网络情形下三种方法的数据传输平均延迟。随着感知事件的数量的增加,三种方法数据传输的平均延迟也在增加。这是因为随着感知事件数量的增加,移动传感器节点卸载到网关上的感知数据的数量会增加,此时网络需要上传的数据流会增大,而每个交换机上转发表的空间有限,一些数据转发将被分配到具有更高延迟的转发路径上,网络数据平均传输延迟会增大。而DTMSIN的平均延迟比另外两种方法延迟都低,因为DTMSIN首先扩大了交换机的容量,使得数据流被分配到具有较低延迟的路径上,其次对数据转发平面上数据流进行了动态规划,使得网络中数据流分布均衡。

图6(b)展示了把7个数据服务器作为目的地的情况下三种方法的平均延迟。数据传输的平均延迟随着感知事件数量的增加而增大,DTMSIN的延迟较其他两种方法的延迟较小。相比3个数据服务器情景下,7个数据服务器情形下数据传输延迟较低,这是因为更多的数据服务器可以提高数据的处理效率,提高数据传输效率,进而降低网络数据传输延迟。

实验3在部署5个感知事件、1个数据服务器和30个交换机的网络环境下,在部署不同数量网关的条件下分别用三种方法进行对比,结果如图7所示。

图7 多个感知事件下不同网关数量下的平均延迟

可以看出,随着网络中网关的数量增加,三种方法的数据传输延迟逐渐减小,这是因为随着网络中上传网关数量增多,移动传感器节点可以就近把携带的感知数据卸载到网关上,减少数据卸载的时间,另外随着网关数量的增加,感知数据可以通过更多的网关上传数据到数据服务器端,数据流可以被分配到更多具有低延迟的转发路径上,这样网络中数据延迟会减小。而DTMSIN相对其他两种方法具有较低的平均延迟,这是因为对数据转发平面上的数据流进行了动态规划,使得网络中数据流尽可能均匀分布到具有低延迟的路径上,降低了整体网络数据传输延迟,其他两种方法则是一种静态数据传输,容易出现数据传输拥塞。

4 结 语

本文提出了一种基于蚁群算法的数据传输方法,在软件定义物联网的数据转发平面上,依据选取转发数据流路径的概率值大小,对数据流的路径进行动态规划,实现流量合理均衡分配到可行的多路径上。而ORSIN和OPENFLOW两种方法主要通过减少SDN控制器端的请求负载来提高数据传输效率,并没有考虑数据转发平面上的数据传输延迟问题,都不能对网络中数据流进行动态调整,不能让网络达到负载均衡,充分利用网络资源。仿真实验结果表明本文方法较其他两种方法在数据传输效率方面有明显的优势。本文仅研究在部署单个控制器网络情形下的数据传输延迟问题,未来将在具有多个控制器软件定义的物联网中进一步研究数据传输延迟问题。

猜你喜欢

数据流概率蚂蚁
优先级驱动的泛化航电网络实时性能分析
概率统计中的决策问题
概率统计解答题易错点透视
概率与统计(1)
概率与统计(2)
汽车维修数据流基础(上)
汽车维修数据流基础(下)
数据流安全查询技术综述
我们会“隐身”让蚂蚁来保护自己
蚂蚁