system: [SYSTEM]

user: 3. 基于朋友关系的车联网广告投递 在以往的一些路由算法中，信息的交换往往类似于通信的握手机制，当信息传输至节点后节点需要返回传输成功信息，之后源节点收到确认之后再将其删除。而在实际情况的机会路由中并不具备三次传输的条件，在过程中就有可能链路已断裂。并且在过程中，数据包的空间占用率过大，这也会影响数据分组传递时的效率。本方法节省了路由传递时节点间传输时间，提高传输效率，并在此基础上做出了查重，减少了数据包过量无用复制，具体详细叙述见下。 3.1. 节点间朋友关系识别 在机会网络中要保证信息的稳定传输前提就是寻找一条稳定的链路，但由于车联网网络中的节点都是具有自主移动能力的车辆，速度快，网络频繁变化，因此直接寻找一条可以进行稳定传输数据的链路可行性非常低。所以针对这种复杂网络需要提出一些辅助性信息，以此来评估链路的传输稳定性，从而保证信息传递的准确性 [ 10 ] 。本文利用节点间的接触时间作为基础信息，将其进行一系列计算得到两个节点间的信息熵。如果两个节点它们节点之间接触时间充足或者接触频率频繁且趋于稳定，那么它们的熵值较高，熵值较高代表它们之间之后接触的概率高，链路稳定的时间也久，则它们互相定义为“朋友”。它代表着这两个节点之间能够具有一定程度的可靠传输条件，让数据包在具有朋友节点间的链路进行传输可以尽可能保证数据传递的交付率。并且，靠节点之间相互检测存在性来确认二者之间的关系并不需要节点之间的通信，只需记录自身检测的信息进行收集和计算，从而减少通信中数据交换的次数和频率。 本文以图1为例来详细介绍确立朋友关系的方法。图1中描述了节点a和b在同一网络下的19 s内的接触时间，图a表示两节点接触稀疏的情况；图b表示两节点接触密集的情况。图中每一格代表1秒的时间间隔，总共为19秒。假设a，b节点从第i秒开始进行通信，那么图a中平均每次建立通信的平均可用时间为1.34秒，而图b中的平均时间为5.34秒，显而易见图b的情况可以完全满足一次通信的时间，保证了a，b之间传输通信链路的稳定。不仅如此，在固定一段时间内节点接触的时间越多，越能保证它们之间信息的实时性与准确性，从而给其他链路利用它们转发消息做出了一定的保障。 并且，利用它们的接触时间及间隔也可以为它们下次接触可能性做出判断。其中设X为节点间间隔时长，一段时间内a与b共有k次接触， C o n a ， b l 代表a，b间第l (其中 l ∈ [ 1 ， k ] )次接触时长， T a ， b 表示该段 时间内接触的时间总和，则第l次接触间隔的概率分布为： P a ， b l = [ P ( P = C o n a ， b l ) = C o n a ， b l ] 。以此可以得出 节点a与节点b接触间隔事件的信息熵： 。当熵值越大时，那么它们的接触间隔概率分布也越均匀，那么可以理解为下一次接触的概率越大，越有可能再次接触。因此，熵值越大可以表现为接触越有规律性。 3.2. 节点间社会距离表 顾名思义，社会距离一词代表着人与人的社会关系距离远近。本人与父母及亲兄弟姐妹之间关系最为亲近，那么定义他们之间的关系距离为1。而从父母角度来看，父母与他的父母和兄弟姐妹的血缘关系也是最近，那么它们的关系距离也为1。这样的情况下，本人与父母的兄弟姐妹和父母的关系距离即为相加关系得出的2。以此为基础，可以定义网络中车辆节点之间的社会距离关系。 在车联网网络中，当一个节点a检测信息并与周围节点b建立了朋友关系，那么它们的关系距离是直接的，因此距离为1。之后节点a获取了节点b的朋友节点信息条目，那么这些条目便是经过a，b链路之后的链路，因此在节点a的节点社会距离表中将从b中获取的信息社会距离 + 1。以此类推，就可以 图1. 车辆节点接触时间分布 构建一张完整的节点社会距离表。当一个节点失去了与另一个朋友节点的连接时，将它们的节点社会距离变为∞，防止其他节点使用该链路。 假设车辆均在网络 G ( V ) 中，其中一个节点 a ∈ V 需要来记录并维护与它有关的车辆节点信息。那么，节点a需要维护一张社会距离表来完成这些操作。表中的每一行代表着一条信息，要将车辆关系完整的记录下来需要以下几点： 1) 目标节点：即可以到达的节点的位置信息。 2) 社会距离：节点自身与目的节点之间的社会距离。 3) 直属节点：节点自身到目标节点这条链路中节点自身的下一跳节点。 其具体构建过程如下所示： 以车辆节点a为例：车辆节点a开始进行检测收集，T0时刻，车辆节点a，b和a，c被识别为朋友关系，节点a将b，c添加进自身的社会距离表，其社会距离为1，如图2中T0时刻表中所示。本次接触为a，b和a，c开始将对方识别为朋友，因此在T0时刻还没有开始进行信息交换。接下来进入T1时刻，车辆节点a与b，c进行社会距离表交换信息，并各自对自身数据进行更新。更新过后车辆节点a的社会距离表如图2中T1时刻表所示。而节点b中之前包含有d，e两个朋友节点信息，所以会将d，e添加到节点a的表中，它们的社会距离为2，直属节点为b。此时车辆节点f并没有与c建立起朋友关系，所以没有将它加入到表1内。T2时刻车辆节点c将f更新至它自身的社会距离表，并将新的信息更新至车辆节点a，所以表a内更新到了车辆节点f的信息，并且其社会节点距离为2。在T3时刻，节点e与节点b失去了朋友关系，b更新了自身的距离表，并与a进行信息更新，将a与e的社会关系更新为∞。 3.3. 数据分组摘要表 由于本文的路由环境背景是基于用户兴趣的车联网广告投递，因此数据包并不会如地域群播那样对一个固定区域的单一数据包传输，而是根据不同用户不同兴趣会产生多条信息不同的数据包。因此，基于此情况下，为了数据包传递时的准确性，提出建立一张数据分组摘要表来维护路由中的数据包信息。 图2. 车辆关系建立与维护 Table 1 System resulting data of standard experimen T0时刻 T1时刻 目标节点 社会距离 直属节点 目标节点 社会距离 直属节点 b 1 b b 1 b c 1 c c 1 c d 2 b e 2 b T2时刻 T3时刻 目标节点 社会距离 直属节点 目标节点 社会距离 直属节点 b 1 b b 1 b c 1 c c 1 c d 2 b d 2 b e 2 b e ∞ b f 2 c f 2 c 表1. 标准试验系统结果数据 表中每一行代表一条数据包，其表中包含以下信息： 1) 数据条编号：从1开始编号方便调用。 2) 目标节点：所要发送到的目标节点位置信息和车辆信息。 3) 数据包信息：所要发送的数据包。 这样车辆节点就可以将信息间独立分开，并且有助于链路效用值的计算。示例如表2。 3.4. 免疫信息表 免疫信息表主要是记录免疫信息。该表记录了送达数据分组的免疫信息，是当目标节点成功接收数据信息之后由目标信息产生的。其表中数据结构与数据分组摘要表相同，这样更方便于删除。当两个节点接触后，判断对方是否为目标分组的目的节点，如果满足条件，则将数据送达目的节点。当目的节点收到数据包后产生对应的免疫信息，添加至自身免疫信息表内。该节点在之后的运动中遇到其朋友节点，则接收对方的免疫信息表，更新至自身表内，再删除已送达但还存在于缓存内的数据分组信息条目。 创建该表主要是为了减少网络内传输时数据包的传输，比起辅助信息之间的交换更新操作，减少数据包的多余转发对网络性能的优化会更加明显。 3.5. 传输效用计算 数据包的传输依赖于其计算出来的效用值，如果在该检测范围内有多条链路，那么将分别计算它们对于数据包的效用值，并选择最优的方案进行传输。例如图2中T2时刻，对于车辆节点a来说它检测到的可用链路一共有5条a → b、a → c、a → c → f、a → b → d、a → b → e，也就是说对于需要转发的数据包来说会选择三条链路中效用值最高的进行传输。假设a → b → e为最优，节点a会将数据发送至b，b收到信息之后会根据重新更新的社会距离表再次判断该链路是否仍为最优。如果依然是，那么就继续将数据包发送至e；或者发送至再次计算的最优值。这样的方式可以使数据包在传输中按照最优的路径来进行选择，并且在动态移动的网络中改善了因为节点移动性而导致的链路误差。 在整个路由过程中，共维护了三张表的辅助信息来保证传输。免疫信息表用于最初交换来判断数据分组表内数据条的有效性，而社会距离表和数据分组表中的信息会参与到计算中来。所以，在实际计算 Table 2 Data group summary tabl 数据条编号 目的节点 数据包信息 1 b xxx 2 c xxxx 表2. 数据分组摘要表 过程中，节点会从判断过后的免疫表中第一条信息开始对每条链路进行计算，所以节点需要计算的数据复杂度为 O ( n 2 ) 的级别。对于文献 [ 5 ] [ 7 ] [ 11 ] 中的方法复杂度进行计算，最高有 O ( n 2 × M ) 的复杂度，因此计算的复杂度不宜再过增加，会影响到其流畅度。所以，以最直观方便的距离作为效用值的衡量标准，以上段假设为例，a为源节点，e为目标节点，t为数据包所要到达的目的节点，即 U a = − ( d e → t − d a → t ) 。 3.6. 具体操作步骤 节点a，b互为朋友节点，当a，b相遇后互相交换信息，二者的操作流程相同，流程如下： 步骤1：节点a，b相遇后，节点a获取b的免疫信息表，并检查自身数据分组摘要表，删除已送达的数据分组信息。 步骤2：节点a向b请求它的节点社会距离表，将表内信息添加到自身，并把表b中的信息条目社会距离均增加1 (即增加了从a到b的社会距离)。 步骤3：节点a检查自身的数据分组摘要表，遍历每一条数据，并计算它和节点社会距离表内每条链路效用值(即到目的节点的距离)。 步骤4：节点a转发满足条件的数据表条目给对应的中继节点。 流程图如图3所示。