D2D通信中基于散列函数和RLE编码的BitMap发现移动应用方法与流程

文档序号:12829834阅读:199来源:国知局
D2D通信中基于散列函数和RLE编码的BitMap发现移动应用方法与流程

本发明属于移动通信系统技术领域,具体涉及对d2d通信中d2d发现过程的研究。



背景技术:

在无线通信技术的演进中,一方面,传统的无线通信性能指标,比如网络容量、频谱效率等需要持续提升以进一步提高有限且日益紧张的无线频谱利用率;另一方面,更丰富的通信模式以及由此带来的终端用户体验的提升以及蜂窝通信应用的扩展也是一个需要考虑的演进方向。作为面向5g的关键技术,设备到设备通信(device-to-device,d2d)具有许多潜在的优势,如提高系统性能、提升用户体验、扩展蜂窝应用的前景等,它可以让移动设备能够在没有诸如基站(bs)的任何基础设施的帮助下直接与其他移动设备通信。因此d2d通信与传统的蜂窝通信网络架构有显著的区别。最近,第三代合作伙伴计划(3gpp)已经开始在长期演进(lte)蜂窝网络中标准化d2d通信。无线通信产业和研究团体认为新的基于邻近的服务成为d2d通信技术的主要应用领域。但是在d2d通信建立连接之前,设备必须先发现其他的d2d设备。

从现有的发现协议来看,可以大致分为两类。一类是不考虑物理和mac层方面的自组织网络发现协议。诸如lte/lte-advanced基于ofdma的蜂窝网络中,基站分配专用于发送发现信号的单独的时频无线资源,因此,d2d发现协议的性能和行为取决于无线资源如何由较低层分配。另一方面,存在考虑用于d2d通信的物理和mac层发现协议,其中每一个设备周期性地广播一个发现信号,例如,flashlinq的d2d发现协议中每个设备周期性地广播一个发现信号,然而此类发现协议又只关注mac层和物理层,而不考虑应用层的功能。但是用于基于邻近服务的d2d发现的主要特征之一是“基于邻近服务”。这个特征需要对应用信息的连续广播,消耗大量的无线资源。

总之,用于自组织和机会网络的现有发现协议不能满足对于d2d发现(例如,较低层集成和基于邻近的发现)的要求,而当前的基于哈希表和布隆滤波器生成发现方案中,又存在着发现码子长度不理想的情况。在本发明中,经过散列函数和rle编码bitmap技术可以用于压缩发现信息,而且,发现的目标不是服务,而是对等移动应用。因此,所提出的d2d发现协议基于对等模型而不是客户端-服务器模型。可以利用该p2p发现的相互性来设计d2d发现协议。此外,d2d发现旨在发现大量的移动应用,因为蜂窝网络的覆盖范围比较大,这是与自组织网络中的发现模型完全不同的。

有鉴于此,本发明的发现协议所要解决的问题是:针对蜂窝网络环境下的d2d发现过程协议进行改进。为了使设备能够与附近的设备进行通信,附近的两个设备进行邻近服务的基本前提是安装了相同的移动应用程序并且该应用在两个设备中是活动的,在消耗相对少量的无线资源的同时实现快速发现大量设备的目标。



技术实现要素:

本发明旨在解决以上现有技术的问题。提出了一种缩短码字长度、在消耗相对少量的无线资源的同时实现快速发现大量设备的目标的d2d通信中基于散列函数和rle编码的bitmap发现移动应用方法。本发明的技术方案如下:

基于散列函数和rle编码的bitmap发现移动应用方法,所述d2d通信中的两个d2d设备进行邻近服务的基本前提是安装了相同的移动应用程序,并且该移动应用程序在两个d2d设备中是激活的,所述d2d设备在对附近d2d设备的发现过程中,使用发现代码来在发现过程中进行广播,并使得每个设备周期性地广播发现代码,采用散列函数和bitmap技术将移动应用程序名称映射生成所述发现代码,随后将发现代码进行rle编码转换成发现码子,压缩了发现码子的长度;然后测试移动应用程序名称s是否在ν,可以将s的rle编码的码子进行解码并进行运算,若存在s的编码码子,则运算的结果为正,反之,则为假。

进一步的,所述每个d2d设备都会维护发现表,该表中存储着其他设备的应用信息,发现表中有四列,分别为设备标识符id,应用版本ver,接近度prox和应用信息name,所述发现表的每一行表示一个设备中的应用程序的信息,令idi(m),veri(m),proxi(m),infoi(m)表示设备m中的发现表的第i行的每一列。

进一步的,所述发现码子的生成过程包括:

用νk(m)表示应用程序名称集合,其被定义为在发现周期k期间,设备m中所有应用程序名称的集合,即νk(m)={su|u∈νk(m)},其中su表示应用u的应用名称,在发现周期k中,从设备m的应用名称集合生成的预发现代码为ck(m),ck(m)=f(νk(m)),其中f表示使用的散列函数将应用名称设置为发现代码的代码生成函数,然后利用rle编码将预发现代码转化为发现码子βk(m),当设备m从设备n接收到βk(n)时,设备m可以先进行解码,然后使用基础运算来测试某个应用是否在设备m中。

进一步的,所述通过使用散列函数将应用名称ν映射到预发现代码c中,设h表示将可变长度字符串映射到d位的二进制序列的散列函数,由散列函数h获得的散列值应该均匀地分布在0到2d-1的范围上,由j个应用程序名称组成的应用程序名称集合ν,即ν=x1,x2,...,xj,然后,可以通过使用散列函数来构造预发现代码c:c=h(x1)||h(x2)||...h(xj),其中||是位连接符,然后将获得的预发现代码c通过rle进行编码生成发现码子b。

进一步的,为了构建bitmap,使用散列函数h1,h2,...,hk,其中hi表示范围从0到△-1的散列函数,在开始时,bitmap是值全为零的数组,即c[hi(xj)]←0,b[d],其中b[d]表示为为了在bitmap中插入应用程序名称xj∈ν,bitmap的hi(xj)位为设置为1,即c[hi(xj)]←1,即β[j-1,1,(d-j-1)],对于所有i=1,...,k,散列函数h插入ν中的所有应用程序名称之后,然后经过rle编码完成发现码子β,使用bitmap技术,测试应用程序名称s是否在ν,可以将s的rle编码的码子进行逆编码并进行运算,若存在s的编码码子,则运算的结果为正,反之,则为假。

进一步的,d2d设备在对附近d2d设备的发现过程具体包括步骤:

步骤一:当d2d设备对启时,设备中的发现表为空,并且应用版本从零开始,当设备m中的应用信息集合改变时,βk(m)也发生变化,然后将获得的βk(m)码子进行基础运算,重置发现表;

步骤二:发现周期从代码交换时段开始,对于发现周期k中的代码交换,每个设备n生成发现码子βk(n),在代码交换期间,每个设备n广播发现代码消息包括设备标识符应用程序版本rk(n)和发现代码βk(n);

步骤三:在代码交换期间,每个设备从附近的设备接收发现代码消息,在发现周期k,设备m从附近设备成功接收的所有发现代码消息的集合由wk(m)表示,对于每个接收到的发现代码消息设备m可以根据三种不同情况选择修改发现表;

步骤四:prox列显示与每行对应的设备是否接近如果设备m接收到具有与每行对应的设备标识符的发现代码消息,则发现表中的prox列被设置为1,也就是说,如果存在接收到的发现码消息则proxi(m)←1;如果设备m没有从对应于第i行的设备接收到预定数量的发现周期的任何发现代码消息,则设备m将proxi(m)设置为0;

步骤五:通过使用新接收的发现代码,测试设备的每个应用是否也在附近的设备中,对于在αk(m)中的应用u,αk(m)表示在发现周期k的设备m中的所有活动应用的索引的集合,设备m通过对βk(m)中的每个发现代码β进行rle逆编码并且通过基础运算来测试附近设备中的应用u的存在,在滤除应用u之后,我们可以做出过滤的应用集,其被定义为可能在附近设备中的应用集,zk(m)表示设备m的过滤的应用集,给出:

zk(m)={u|u∈αk(m),β∈βk(m)}

代码交换期后,每个具有u∈zk(m)的设备n,广播应用信息消息然后,每个设备m从附近的设备接收应用信息消息,设备接收的所有应用程序信息消息的集合发现期间k由vk(m)表示,对于每个接收的应用信息消息在设备m检查在发现表中是否存在第i行,使得对于第i行,如果且i中的应用程序名称包括在αk(m)中,则设备m将该组应用程序信息更新为:

infoi(m)←infoi(m)∪{0,d}

步骤六:在广播应用信息消息之后,每个设备n可以安全地假设设备n中的应用信息被更新,完成发现表的更新。

进一步的,所述修改发现表的三种情况分别为:

第一种情况,在发现表中存在第i行,使得这种情况意味着之前接收到相同的发现代码消息,因此,对于这种情况不采取进一步的行动;

第二种情况,在发现表中存在第i行,使得但是veri(m)≠r,第二种情况的含义是设备m已经从具有标识符的设备接收到发现代码消息,但是具有标识符的设备中的应用,自那时以来已经改变,在这种情况下,具有标识符的设备被视为新发现的设备,因此,对于i使得设备m通过veri(m)←r来设置infoi(m)←φ;

第三种情况,在发现表中没有匹配的行,即,对于所有i,这种情况意味着设备m首次从具有标识符的设备接收发现代码消息,在这种情况下,设备m向发现表添加一个新行,并设置veri(m)←r,infoi(m)←φ;成为新添加的第i行。

本发明的优点及有益效果如下:

本发明在现有d2d通信网络架构的基础上,对d2d通信过程中实现基于邻近服务的d2d发现过程进行了研究,提出了基于散列函数和rle编码的bitmap技术发现移动应用程序的方法。该方法创新性的使用了bitmap结构和rle编码对发现的移动应用程序信息进行了信息的压缩,由图4可以看出该方法可以很好的实现在消耗少量的无线资源的同时快速发现大量设备的目标。

而且,本发明针对发现的目标不是服务,而是对等移动应用,因此本发明在蜂窝网络的覆盖范围下,能够发现大量的移动应用程序,提高d2d通信中设备的匹配度。

附图说明

图1是本发明提供优选实施例d2d通信网络架构示意图;

图2是d2d通信的移动应用程序发现方案示例;

图3(a)是发现代码信息,图3(b)是移动应用信息;图3(c)所提出的基于代码的发现协议的说明性示例;

图4是比较结果示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。

本发明解决上述技术问题的技术方案是:

本发明的发现协议所要解决的问题是:针对蜂窝网络环境下的d2d发现过程协议进行改进。为了使设备能够与附近的设备进行通信,附近的两个设备进行邻近服务的基本前提是安装了相同的移动应用程序并且该应用在两个设备中是活动的,图1示出了用于d2d通信的实例。本发明通过使用发现代码来最小化发现过程中广播发现代码的应用信息量,并使得每个设备周期性地广播发现代码。对发现的码子进行了rle编码,压缩了发现码子的长度,在消耗相对少量的无线资源的同时实现快速发现大量设备的目标。

基本的原理为:

1、发现码子

用νk(m)表示应用程序名称集合,其被定义为在发现周期k期间,设备m中所有应用程序名称的集合,即νk(m)={su|u∈νk(m)},其中su表示应用u的应用名称。例如,应用程序名称可以是su=“移动社交网络”。在发现周期k中,从设备m的应用名称集合生成的预发现代码为ck(m),ck(m)=f(νk(m)),其中f表示将应用名称设置为发现代码的代码生成函数,本发明中使用的散列函数。然后,利用rle编码将预发现代码转化为发现码子βk(m)。当设备m从设备n接收到βk(n)时,设备m可以先进行解码,然后使用基础运算来测试某个应用是否在设备m中。

2基于bitmap的发现代码协议

通过使用散列函数将应用名称ν映射到预发现代码c中,设h表示将可变长度字符串映射到d位的二进制序列的散列函数。由散列函数h获得的散列值应该均匀地分布在0到2d-1的范围上。例如我们考虑由j个应用程序名称组成的应用程序名称集合ν,即ν=x1,x2,...,xj,然后,可以通过使用散列函数来构造预发现代码c:c=h(x1)||h(x2)||...h(xj),其中||是位连接符,然后我们将获得的预发现代码c通过rle进行编码生成发现码子b。为了构建bitmap,我们使用散列函数h1,h2,...,hk,其中hi表示范围从0到△-1的散列函数,在开始时,bitmap是值全为零的数组,即c[hi(xj)]←0,b[d],其中b[d]表示为为了在bitmap中插入应用程序名称xj∈ν,bitmap的hi(xj)位为设置为1,即c[hi(xj)]←1,即β[j-1,1,(d-j-1)],对于所有i=1,...,k,散列函数h插入ν中的所有应用程序名称之后,然后经过rle编码完成发现码子β。使用bitmap技术,测试应用程序名称s是否在ν,可以将s的rle编码的码子进行解码并进行运算,若存在s的编码码子,则运算的结果为正,反之,则为假。

在本发明中,每个设备都会维护发现表,该表中存储着其他设备的应用信息,发现表中有四列,分别为设备标识符(id),应用版本(ver),接近度(prox)和应用信息(name)。发现表的每一行表示一个设备中的应用程序的信息。令idi(m),veri(m),proxi(m),infoi(m)表示设备m中的发现表的第i行的每一列。设备发现其他设备过程的具体步骤如下所述:

步骤一:当设备开启时,设备中的发现表为空,并且应用版本从零开始。当设备m中的应用信息集合改变时,βk(m)也发生变化,然后将获得的βk(m)码子进行基础运算,重置发现表。

步骤二:发现周期从代码交换时段开始。对于发现周期k中的代码交换,每个设备n生成发现码子βk(n)。在代码交换期间,每个设备n广播发现代码消息包括设备标识符应用程序版本rk(n)和发现代码βk(n)。

步骤三:在代码交换期间,每个设备从附近的设备接收发现代码消息。在发现周期k,设备m从附近设备成功接收的所有发现代码消息的集合由wk(m)表示。对于每个接收到的发现代码消息设备m可以根据三种不同情况修改发现表,解释如下:

第一种情况,在发现表中存在第i行,使得这种情况意味着之前接收到相同的发现代码消息。因此,对于这种情况不采取进一步的行动;

第二种情况,在发现表中存在第i行,使得但是veri(m)≠r。第二种情况的含义是设备m已经从具有标识符的设备接收到发现代码消息,但是具有标识符的设备中的应用,自那时以来已经改变。在这种情况下,具有标识符的设备被视为新发现的设备。因此,对于i使得设备m通过veri(m)←r来设置infoi(m)←φ;

第三种情况,在发现表中没有匹配的行,即,对于所有i,这种情况意味着设备m首次从具有标识符的设备接收发现代码消息。在这种情况下,设备m向发现表添加一个新行,并设置veri(m)←r,infoi(m)←φ;成为新添加的第i行。

步骤四:prox列显示与每行对应的设备是否接近。如果设备m接收到具有与每行对应的设备标识符的发现代码消息,则发现表中的prox列被设置为1。也就是说,如果存在接收到的发现码消息则proxi(m)←1;如果设备m没有从对应于第i行的设备接收到预定数量的发现周期的任何发现代码消息,则设备m将proxi(m)设置为0;

步骤五:通过使用新接收的发现代码,测试设备的每个应用是否也在附近的设备中。对于在αk(m)(αk(m)表示在发现周期k的设备m中的所有活动应用的索引的集合)中的应用u,设备m通过对βk(m)中的每个发现代码β进行rle解码并且通过基础运算来测试附近设备中的应用u的存在。在滤除应用u之后,我们可以做出过滤的应用集,其被定义为可能在附近设备中的应用集。zk(m)表示设备m的过滤的应用集,给出:

zk(m)={u|u∈αk(m),β∈βk(m)}

代码交换期后,每个具有u∈zk(m)的设备n,广播应用信息消息然后,每个设备m从附近的设备接收应用信息消息。设备接收的所有应用程序信息消息的集合发现期间k由vk(m)表示。对于每个接收的应用信息消息在设备m检查在发现表中是否存在第i行,使得对于第i行,如果且i中的应用程序名称包括在αk(m)中,则设备m将该组应用程序信息更新为:

infoi(m)←infoi(m)∪{0,d}

步骤六:在广播应用信息消息之后,每个设备n可以安全地假设设备n中的应用信息被更新为如上述式子中的每个附近设备,完成发现表的更新。

以下结合附图和具体实例对本发明的实施作具体描述,我们假设有三个不同的应用程序,其名称分别是s1="社交网络",s2="移动营销"和s3="媒体共享"。我们考虑一个基于rle编码的bitmap的发现代码。我们定义四个散列函数,其输出为每个应用程序名称如下:(1)对于s="社交网络"h1(s)=5,h2(s)=0,h3(s)=2,h4(s)=3;(2)对于s="移动营销",h1(s)=2,h2(s)=5,h3(s)=7,h4(s)=1;(3)对于s="媒体共享",h1(s)=4,h2(s)=3,h3(s)=0,h4(s)=7,图3示出了在发现周期k的所提出的基于码的发现协议的操作的说明性示例。在该示例中存在三个设备(即,设备1,2和3)。设备1,2和3的设备标识符分别由给出。设备1,2和3的应用版本分别为,rk(1)=7,rk(2)=5,rk(3)=1。每个设备的应用程序名称集为:(1)νk(1)={“社交网络”,“移动营销”};(2)νk(2)={“移动营销”,“媒体共享”};(3)νk(3)={“社交网络”};

所有三个设备彼此接近。在发现时段k之前,设备1和2已经交换了它们的应用信息。因此,设备1和2在其发现表中已经具有彼此的应用信息。设备3在发现时段k的开始处进入邻近。因此,设备3的发现表为空。图3示出了刚刚打开的设备3如何与其他设备共享其应用信息。图3a描述了码交换周期。每个设备基于rle编码的bitmap生成发现码子。设备1生成发现代码βk(1),将应用名称“社交网络”插入到发现代码中。此外,设备1还通过rle编码将应用名称“移动营销”插入到列表中,得到的预发现代码为ck(1)=10100100,经过rle编码可得发现代码是βk(1)=(1,1,1,2,1,2),类似地,设备2和3导出预发现代码为ck(2)=00111100,发现代码为βk(2)=(0,2,4,2),预发现代码为ck(3)=10110110βk(3)=(1,1,2,2,1)。在图3a中,每个设备广播包含发现代码的发现代码消息。

在代码交换期间,每个设备从所有其他设备接收发现代码消息。设备1从设备2接收发现代码消息,即(β,5,βk(2)),然而,设备1忽略该发现代码消息,因为设备1中的发现表已经具有id1(1)=β和ver1(1)=5的行。当设备1从设备3接收发现代码消息,即(c,1,βk(3)),如图3b所示,设备1向发现表添加新行。然后,设备1测试应用名称“社交网络”和“移动营销”是否包括在发现代码βk(2)中。测试结果为包含(“社交网络”,βk(2)),但不包含(“移动营销”,βk(2)),设备1的滤波后的应用集为zk(1)={1}。在这个例子中,我们假设应用程序信息只包含应用程序名称,即ik,u(m)=su。如图3b所示,设备1广播应用信息消息(a,”社交网络”)。在代码交换期间,设备2从设备1和3接收发现代码消息,并且它添加对应于设备3的新行,如图3b所示码为βk(3)=(0242),βk(2)=(11221)。在图3a中,每个设备广播包含发现代码的发现代码消息。

在代码交换期间,每个设备从所有其他设备接收发现代码消息。设备1从设备3接收发现代码消息,即(β,5,βk(3)),然而,设备1忽略该发现代码消息,因为设备1中的发现表已经具有id1(1)=β和ver1(1)=5的行。当设备1从设备2接收发现代码消息,即(c,1,βk(2)),如图3b所示,设备1向发现表添加新行。然后,设备1测试应用名称“社交网络”和“移动营销”是否包括在发现代码βk(2)中。测试结果为包含(“社交网络”,βk(2))但不包含(“移动营销”,βk(2)),设备1的滤波后的应用集为zk(1)={1}。在这个例子中,我们假设应用程序信息只包含应用程序名称,即ik,u(m)=su。如图3b所示,设备1广播应用信息消息(a,”社交网络”)。在代码交换期间,设备3从设备1和2接收发现代码消息,并且它添加对应于设备2的新行,如图3b所示.

因为经过逆rle解码和基础运算之后(“移动营销”,βk(3))和(“媒体共享”,βk(3))为0,故将设备2的过滤应用程序集设为空。因此,设备3不广播任何应用信息消息。另一方面,在代码交换期间,设备2从设备1和3接收发现代码消息,并且它添加对应的新行到设备1和3。因为包含(“社交网络”,βk(1))和不包含(“社交网络”,βk(2)),故设备2过滤后的应用集为zk(2)={1}。因此,设备2广播名称广告消息(c,“社交网络”),如图3b所示。

在接收到应用信息消息之后,设备1和3分别将应用信息“社交网络”添加到发现表中的info2(1)和info3(3))中,如图3c的发现结果中可以看到的。在该示例中,我们可以看到,当新设备突然出现在邻近设备中时,所有设备成功地发现附近设备中的所有常见应用的信息。

我们可以通过上述实例中的应用实例进行发现码子长度的比较,因为基于哈希表和布隆滤波的原理都是使用散列函数进行编码的,所以本发明进行了与哈希列表的比较,图4显示了本发明大大减少了用于发现过程中的比特数。

以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。

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