一种基于链路距离感知的资源分配方法与流程

文档序号:17695685发布日期:2019-05-17 21:29阅读:132来源:国知局
一种基于链路距离感知的资源分配方法与流程

本发明涉及通信技术领域,尤其是一种进行时隙资源分配的方法。



背景技术:

在基于时间同步的无线网络多址接入协议中,收发节点进行数据收发(简称为data-ack)总时间中,主要包括两部分:数据包(data)和应答控制包(ack)的传输时间、无线信号传播的往返时间。当二者的时间相近(同一个数量级)时,无线信号传播的往返时间不可被忽略,使得data-ack的总时间被拉长、而有效数据(data)传输的时间比例减小,从而降低了多址接入协议的效率,该问题被称为无线网络中的通信时延扩展问题。

无线网络中的通信时延扩展问题,广泛存在于多个无线网络中,包括超远距的定向无线网络、超高速的无线网络等。比如,在超远距的定向无线网络中,由于定向天线将无线信号能量汇聚到某个特定方向上,因此增大了无线链路的传输距离;当无线链路的距离达到150km以上时,无线信号的往返传播时延将达到1ms以上,与数据传输时间处于同一个量级,从而不能被忽略。再比如,在超高速无线网络中,尽管无线链路距离很短、但是由于数据传输速率很高,从而减小了数据的传输时间,使得无线信号的往返传播时延所占的比例增大,以至于无线信号的往返传播时间不能被忽略;当无线数据传输速率达到30gbps时,传输一个3kbits的数据包所需要的时间为1us,相当于无线信号传播150米的往返时间,因此无线信号的传播时间不可被忽略。

针对无线通信时延扩展问题,现有研究工作大致可被分为两类:(1)增大所传输的数据量、从而增大数据传输的时间,使之达到无线信号传播时延的数百倍以上,从而减小无线信号传播时间所占的比例,进而可以忽略无线信号的传播时间;(2)根据无线链路的长度,设计相应的data-ack数据传输的总时间,从而达到长距离链路使用较大的data-ack总时间、短距离链路使用较小的data-ack总时间的目的,最终减小节点使用的平均数据收发(data-ack)的总时间。

然而,上述现有研究方法存在下述问题:(1)单纯的增大数据量的方法,首先需要数据收发节点具有存储、处理大数据量的能力,其次,数据源端节点必须要缓存总够多的数据,最后,为了避免由于数据量的增大导致大的误包率,将需要引入更多的数据包控制域开销(包括数据段分隔、纠错码、检错码等)。(2)如果根据每个链路的长度均设计一个数据收发的总时间,将增大协议实现的复杂度。



技术实现要素:

为了克服现有技术的不足,本发明提供一种基于链路距离感知的资源分配方法。在给定m、δ、r、k、dk、mk、tk和ek的具体数值情况下,本技术方案的基本思想:(1)按照分环的半径,从远至近分别为每个圆环中的节点分配基本时隙;(2)依次寻找可用的数据传输时隙,将其中的可用于数据传输的基本时隙分配给节点;(3)当所有节点的需求都被满足,或所有的基本时隙都已经分配完,算法结束。

本发明解决其技术问题所采用的技术方案的详细实施步骤如下:

步骤1:整个时间轴被划分为若干个时帧,每个时帧中有m个基本时隙,每个基本时隙的长度为δ,其中m、δ的具体数值根据整体网络的性能要求设定为常数或变量,数据收发总时间δ为基本时隙长度δ的整数倍;

数据源节点s的通信覆盖区域为一个半径为r的圆,将圆划分为k个圆环区域和一个圆盘区域,图2给出了当k=3时,数据源节点s的通信覆盖区域被划分的示意图,其中,dk表示第k个圆环或圆盘的半径,且d1≤d2≤……≤dk≤r,其中1≤k≤k+1,且r、k、dk的具体数值根据整体网络的性能要求设定为常数或变量;

假设数据源节点s有n个邻节点,n>0,令n个邻节点的标识为{n1,n2,…,ni,…nn},其中ni>0,1≤i≤n,当数据源节点s的通信覆盖区域被分为k个环和一个圆盘之后,则n个邻节点被划分为k+1个子集{n1_,n2_,l,nk+1},且处于同一个分环或圆盘区域内的节点属于同一个节点子集,且处于同一个节点子集nk中的节点将使用相同的数据收发总时间δk,令节点s发送给节点ni的数据需求为ri个基本时隙;

每个数据收发总时间δk被划分为三部分:data数据传输的时间tkδ、无线信号传播的往返时间ekδ和ack应答数据包的传输时间δ,以ack应答数据包的传输时间δ作为基本时隙的时间长度,tk和ek的具体数值,根据整体网络的性能要求设定为常数或变量;

根据数据源节点s的通信覆盖区域分环情况,将数据源节点s的n个邻节点划分为k+1个节点子集;初始化当前所处的圆环数k=k+1,时隙分配结果表s(m)的每个元素均初始化为0;转步骤2为数据源节点s的邻节点分配基本时隙;

所述的时隙分配结果表s[m]表示每个时帧中m个基本时隙的分配结果,其中s(j)表示第j个基本时隙(1≤j≤m)的分配结果,若第j个基本时隙(1≤j≤m)被分配为:数据源节点s向节点ni发送data数据,则令s(j)=ni;若第j个基本时隙(1≤j≤m)被分配为:数据源节点s接收节点ni发送的ack数据,则令s(j)=-ni;若第j个基本时隙未被分配,则令s(j)=0;

步骤2:如果k>0,则转步骤3为子集nk中的节点分配基本时隙,否则资源分配方法结束;

步骤3:如果子集nk非空,则从子集nk中随机选择一个节点ni,转步骤4为节点ni分配基本时隙;否则k减1,转步骤2;

步骤4:如果节点ni的数据需求ri>0,则转步骤5为节点ni分配基本时隙;否则,转步骤3;

步骤5:初始化变量j=0,按照步骤5.1-5.6为节点ni分配基本时隙;

步骤5.1:令j加1;如果j+mk-1>m,则转步骤5.6,否则转步骤5.2;

步骤5.2:如果s(j)=0且s(j+mk-1)=0,则说明找到了一个可用的数据传输时隙δk,设置s(j)=ni,s(j+mk-1)=-ni,令ri减1,转5.3否则转步骤5.1;

步骤5.3:如果ri>0则,初始化p=1,转步骤5.4,为节点ni分配所找到的数据传输时隙内的可用基本时隙,否则,转步骤5.6;

步骤5.4:令p加1;如果p>tk-1则该数据传输时隙已无基本时隙可用,转步骤5.1继续寻找下一个可用的数据传输时隙,否则转步骤5.5,继续为节点ni分配所找到的数据传输时隙内的可用基本时隙;

步骤5.5:如果s(j+p)≠0则转步骤5.4,否则,设置s(j+p)=ni,令ri减1;如果ri>0则转步骤5.4继续为节点ni分配,否则转步骤5.6;

步骤5.6:如果ri=0则将节点ni从子集nk中移除,转步骤3;否则k减1,转步骤2。

本发明的有益效果在于通过根据无线链路的距离,将所有的链路划分为k类,简化了协议设计与实现;每个链路的数据收发总时间,为某个基本时隙的整数倍;采用基本时隙的重分配方法,原本空闲不可用的基本时隙可被重分配给其他链路,提高了网络吞吐量,提升了协议效率。

附图说明

图1是本发明所提方法的时帧结构图,其中δ为每个基本时隙的长度,m为每个时帧中的基本时隙个数,δ为数据收发总时间,为基本时隙长度δ的整数倍。

图2为当k=3时s的通信覆盖区域分环的示意图,其中节点s为数据源节点,r为节点s的通信半径,d1,d2,d3分别为圆盘和两个圆环的半径。

图3为数据收发总时间δk的组成部分示意图,其中tkδ为data数据传输的时间,ekδ为无线信号传播的往返时间,δ为ack应答数据包的传输时间。

图4为本发明实施用例1的节点分布图。

图5为本发明实施用例2的示意图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

针对背景技术中各自存在的弊端,本发明提出了一种基于链路距离感知的资源分配方法。该方法解决了通信时延扩展问题,并兼备以下几个特点:(1)无线网络中的所有链路,根据链路距离被划分为有限的几类;(2)在每一类链路中,其数据收发总时间均为某个固定时间长度的基本时隙的整数倍;(3)所提出的时隙资源分配方法,使得原本空闲的不能用于数据收发的无线信号传播往返时间,可被重分配给其他的收发节点进行数据传输。

步骤1:图1给出了所提方法的时帧结构图,整个时间轴被划分为若干个时帧,每个时帧中有m个基本时隙,每个基本时隙的长度为δ,其中m、δ的具体数值根据整体网络的性能要求设定为常数或变量,数据收发总时间δ为基本时隙长度δ的整数倍;

数据源节点s的通信覆盖区域为一个半径为r的圆,将圆划分为k个圆环区域和一个圆盘区域,图2给出了当k=3时,数据源节点s的通信覆盖区域被划分的示意图,其中,dk表示第k个圆环或圆盘的半径,且d1≤d2≤……≤dk≤r,其中1≤k≤k+1,且r、k、dk的具体数值根据整体网络的性能要求设定为常数或变量;

假设数据源节点s有n个邻节点,n>0,令n个邻节点的标识为{n1,n2,…,ni,…nn},其中ni>0,1≤i≤n,当数据源节点s的通信覆盖区域被分为k个环和一个圆盘之后,则n个邻节点被划分为k+1个子集{n1_,n2_,l,nk+1},且处于同一个分环(某个节点与数据源节点s的距离x满足,dk-1≤x≤dk那么该节点位于第k个圆环)或圆盘区域内的节点属于同一个节点子集,且处于同一个节点子集nk中的节点将使用相同的数据收发总时间δk,令节点s发送给节点ni的数据需求为ri个基本时隙;

每个数据收发总时间δk被划分为三部分:data数据传输的时间tkδ、无线信号传播的往返时间ekδ和ack应答数据包的传输时间δ,以ack应答数据包的传输时间δ作为基本时隙的时间长度,tk和ek的具体数值,根据整体网络的性能要求设定为常数或变量;

根据数据源节点s的通信覆盖区域分环情况,将数据源节点s的n个邻节点划分为k+1个节点子集;初始化当前所处的圆环数k=k+1,时隙分配结果表s(m)的每个元素均初始化为0;转步骤2为数据源节点s的邻节点分配基本时隙;

所述的时隙分配结果表s[m]表示每个时帧中m个基本时隙的分配结果,其中s(j)表示第j个基本时隙(1≤j≤m)的分配结果,若第j个基本时隙(1≤j≤m)被分配为:数据源节点s向节点ni发送data数据,则令s(j)=ni;若第j个基本时隙(1≤j≤m)被分配为:数据源节点s接收节点ni发送的ack数据,则令s(j)=-ni;若第j个基本时隙未被分配,则令s(j)=0;

步骤2:如果k>0,则转步骤3为子集nk中的节点分配基本时隙,否则资源分配方法结束;

步骤3:如果子集nk非空,则从子集nk中随机选择一个节点ni,转步骤4为节点ni分配基本时隙;否则k减1,转步骤2;

步骤4:如果节点ni的数据需求ri>0,则转步骤5为节点ni分配基本时隙;否则,转步骤3;

步骤5:初始化变量j=0,按照步骤5.1-5.6为节点ni分配基本时隙;

步骤5.1:令j加1;如果j+mk-1>m,则转步骤5.6,否则转步骤5.2;

步骤5.2:如果s(j)=0且s(j+mk-1)=0,则说明找到了一个可用的数据传输时隙δk,设置s(j)=ni,s(j+mk-1)=-ni,令ri减1,转5.3否则转步骤5.1;

步骤5.3:如果ri>0则,初始化p=1,转步骤5.4,为节点ni分配所找到的数据传输时隙内的可用基本时隙,否则,转步骤5.6;

步骤5.4:令p加1;如果p>tk-1则该数据传输时隙已无基本时隙可用,转步骤5.1继续寻找下一个可用的数据传输时隙,否则转步骤5.5,继续为节点ni分配所找到的数据传输时隙内的可用基本时隙;

步骤5.5:如果s(j+p)≠0则转步骤5.4,否则,设置s(j+p)=ni,令ri减1;如果ri>0则转步骤5.4继续为节点ni分配,否则转步骤5.6;

步骤5.6:如果ri=0则将节点ni从子集nk中移除,转步骤3;否则k减1,转步骤2。

实施例1:本实施例侧重于描述按照分环的半径,从远至近分别为每个圆环中的节点分配基本时隙的方法;

考虑节点s的通信覆盖区域分环情况,将节点s的4个邻节点划分为3个节点子集,假定从远到近各个节点子集的节点个数为n3=1,n2=2,n1=1,为了方便说明给区域中的节点从远到近编号1到4,以图4为例。每个节点的需求都为2,所用时帧为mk=tk+ek+1,假定数据传输的时间tk均为2,那么根据单位时隙以及分环距离得到,从远到近三个时帧长度分别为m3=27,m2=23,m1=17,假定总时隙m=80,下面以节点1的时隙分配为例,说明步骤的具体执行情况:

步骤1:初始化k=3,时隙空闲情况表s(80)每个元素初始化为0;

步骤2:若k>0则转步骤3为子集n3中的节点分配时隙;

步骤3:从子集n3中随机选择一个节点编号1,并为它分配时隙;

步骤4:因为节点1的数据需求为2,r1>0,则转步骤5为节点1分配基本时隙;

步骤5:初始化变量j=0,按照下述步骤5.1-5.6为节点1分配基本时隙,

步骤5.1:j=j+1;如果j+mk-1=1+27-1<m=80则表明所用时隙没有超过所给定的总时隙m,转步骤5.2;

步骤5.2:因为s(1)=0且s(27)=0,则说明找到了一个可用的数据传输时隙δk,设置s(1)=1,s(27)=-1,r1=1,转5.3;

步骤5.3:因为ri>0则初始化变量p=0,转步骤5.4为节点n1分配所找到的数据传输时隙内的可用基本时隙;

步骤5.4:p=p+1=1;因为p<=t3-1=1转步骤5.5,继续为节点ni分配所找到的数据传输时隙内的可用基本时隙;

步骤5.5:因为s(2)=0说明该时隙空闲,设置s(2)=1,ri=0;转步骤5.6;

步骤5.6:因为r1=0则返回值设为true;转步骤5为其它节点分配时隙,由于返回值为true,因此把该节点从n3中移除,转步骤3,n3为空集,那么k=k-1=2,就为n2中的节点分配时隙,方法同节点1。

实施例2:本实施例侧重于描述按照分环的半径、链路优先级,依次按照链路集合的优先级,分别为每个圆环中的节点分配基本时隙的方法;

考虑节点s的通信覆盖区域内与各个节点链路优先级情况,将节点s的5个邻节点划分为3个节点子集,假定距离从高到低各个节点子集的节点个数为n3=2,n2=2,n1=1,每个节点的需求都为2,所用时帧为mk=tk+ek+1,假定数据传输的时间tk均为2,那么根据单位时隙以及分环距离得到,从远到近三个时帧长度分别为m3=27,m2=23,m1=17。假定总时隙m=80,每个环中的节点按链路优先级排列,并编号,比如n3中两个节点链路优先级高的编号1,优先级低的编号2,n2中同理,编号为3和4。节点分体如图5所示。下面以节点1的时隙分配为例,说明步骤的具体执行情况:

步骤1:初始化k=3,时隙空闲情况表s(80)每个元素初始化为0;

步骤2:若k>0则转步骤3为子集n3中的节点分配时隙;

步骤3:从子集n3中选择链路优先级高的编号1的节点,并为它分配时隙;

步骤4:因为节点1的数据需求为2,r1>0,则转步骤5为节点1分配基本时隙;

步骤5:初始化变量j=0,按照下述步骤5.1-5.6为节点1分配基本时隙,

步骤5.1:j=j+1;如果j+mk-1=1+27-1<m=80则表明所用时隙没有超过所给定的总时隙m,转步骤5.2;

步骤5.2:因为s(1)=0且s(27)=0,则说明找到了一个可用的数据传输时隙δk,设置s(1)=1,s(27)=-1,r1=1,转5.3;

步骤5.3:因为ri>0则初始化变量p=0,转步骤5.4为节点n1分配所找到的数据传输时隙内的可用基本时隙;

步骤5.4:p=p+1=1;因为p<=t3-1=1转步骤5.5,继续为节点ni分配所找到的数据传输时隙内的可用基本时隙;

步骤5.5:因为s(2)=0说明该时隙空闲,设置s(2)=1,ri=0;转步骤5.6;

步骤5.6:因为r1=0则返回值设为true;转步骤5为其它节点分配时隙,由于返回值为true,因此把该节点从n3中移除,转步骤3,n3为非空集,就为n3中编号为2的节点分配时隙,方法同节点1。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1