基于Geo—Gnutella P2P的交通流量系统

2018-06-19 02:14孙丹东
无线互联科技 2018年3期

孙丹东

摘要:车联网的特殊结构,使高速移动下的数据交换会在一定程度上导致比较网络存在低的联通性和比较高的丢包率。文章设计一个基于地理信息系统的Gnutella P2P网络(Geo-Gnutella)的系统管理交通信息,力图解决上述缺陷。在地理信息系统的基础上,将道路划分为由道路段组成的区域。路侧单元( RSU)负责的区域信息交换,多个路侧单元组成分布式交通信息系统,服务于交通大数据的采集以及车辆查询实时交通信息。通过测试分析基于地理信息的改进的Geo-Gnutella P2P车联网,具有较高的连接成功率及较低的丢包率。

关键词:智能交通系统;自组织车联网:Gnutella;交通流量系统

近年来,智能交通技术得到了初步的应用和发展。例如在道路安全方面,实时车道变化警告、电子制动警告等。交通预警的基础上,辅助计算机自动控制的情况下可以减少司機的错误判断,从而减少交通事故发生。AHS的实验中,智能交通疏导可以分散车流,总体降低交通堵塞的概率。车载Ad hoc网络(VANET)是智能交通系统(Intelligent TrafficSystem。ITS)的重要组成部分。汽车可以通过VANET进行信息交换。通过实时交通系统辅助对行车路径进行修正,车辆可以选择最优路线。

在Rybicki等[1]的论文中提出了一种车辆基于路侧单元的P2P网络的交通信息系统。也就是说,对等网覆盖的车辆可以为系统提供健壮性,基于路侧单元的通信可以提供良好的连通性。但是这种P2P系统没有考虑在高速移动的情况下,车辆的移动造成与基础设施之间的通信随机丢失,数据切换等问题。

1 系统架构设计

本文提出了一种基于地理信息的G nut ella的P2P架构(Geo-Gnutella),将这种改进的P2P技术应用于VANET。利用路侧单元组织采集基于路段区域的车辆构成的网络的交通信息,而路侧单元组成实时交通信息系统,通过互联网提供智能交通相关大数据服务。

对于非结构化P2P- GnutellaP2P模式进行改进与优化,可以适应车联网应用。应用层的P2P覆盖网络位于车联网的顶端,它依赖车联网进行信息传递。为了减少网络负载,我们可以减少P2P覆盖网络的维数。本文提出基于地理信息系统,将道路划分为“区域”,而“区域”由“路段”组成。在每个路段都通过自组织车联网形成P2P网络覆盖,从而减少网络规模,保持区域内相对稳定。

在结构中每个区域都有一个路侧单元(Road SideUnit,RSU),用来管理每个路段的交通信息。多个RSU接入互联网构成分布式信息查询系统。我们假设每个车辆都配备了GPS和4G接入设备。基于地理信息的Gnutella P2P覆盖网络在每一个路段选举超级节点,超级节点和基础设施的通信通过4G网络进行[2]。

综上,本文所述Geo- Gnutella的车联网整体架构如图l所示。

2 合作的交通信息系统

在基于VANET的交通信息系统中,基本的关注点是信息传递。信息传递依赖于车辆间的路由,但由于车辆行驶速度不同,网络拓扑结构不断变化。因此,很多方案被提出来解决上述这些问题,例如,基于地理调度和改进的邻居查找方案、轨迹转发等。

为了建立实时的交通信息系统,有文献提出构建基于车辆间的协同合作的车联网络。利用车辆间通信进行传播和查询交通信息。然而,要持续地数据传递需要网络上有足够数量的车辆。当车辆密度不足时,会导致车联网中断。即使我们假设有足够的车辆相互通信,当车辆密度增加,车联网又将被广播包填满,维持网络的系统带宽占用率变得非常高,造成严重的网络拥塞[3]。所以我们应该考虑控制网络的规模。

2.1 P2P覆盖的车载自组织网络

P2P覆盖网络可能提供了一种高效的车联网架构,在广域网络中具有自组织性、易扩展性和健壮性。由于P2P的这些特点,很多基于P2P的交通信息系统的应用被提出。

P2P覆盖可以分为非结构化的,如Gnutella,结构化如Chord。P2P系统在参与者之间分配资源。从目前的研究来看,P2P VANET有两种常见的基本架构。一个是无基础设施的P2P覆盖网络,另一个是基于基础设施的P2P覆盖网络。P2P覆盖可以采用非结构化或结构化的。当我们直接搭建一个没有基础设施的VANET的车辆P2P覆盖网络系统时,就像上面的讨论一样,P2P VANET系统将会受到网络容量低而连接受限、查找成功率低等困扰。

因此,有文献提出基于基础设施的P2P覆盖网络架构,在这种架构下通信的车辆连通性和延迟会有较大改善。但是文献中指出,由于通信只依赖于基础设施,当网络规模变大时,会导致低效率和高延迟。所以,在Rybicki论文中提出了“GraphTIS”解决方案来提高查找性能和负载分配。2.2有关车联网的网络类型

关于VANET中的网络类型,一些文献提出了一些在V2V和V21网络中通过WiFi进行车辆通信的方法。但用于VANET时可能会有以下不足:(1)当车辆高速移动时,WiFi连接不稳定,导致频繁掉线。(2) WiFi覆盖面积小,当被某建筑物遮挡时,信号衰减严重。所以为了达到满意的覆盖水平,需要大量的基础设施部署,设备和维护成本都太高。也有文献中,通过移动互联网接入的车辆通信,以及在此基础上建立P2P覆盖。如今,随着4G网络将会更普遍和价格更低,这种方法将更适合VANET,因为它可以提供更高的效率、带宽和更广的覆盖范围。

专用短距离通信(Dedicated Short RangeCommunications,DSRC)是专门为车载通信设计的中短距离无线通信通道。802.llp也称为车载环境中的无线接入(WAVE),它可以用于V2V和V21通信的高速移动,在此基础上建立标准的基础设施。在文献中,Nausheen通过仿真提出合并WAVE和移动通信网可以提供比较好的效果。WAVE具有低传输延迟,我们可以使用WAVE进行车辆间近距离通信,而移动通信网具有较宽的覆盖范围,适合V21通信等较长距离的通信。二者相辅相成,可以提高服务可用性,并在大多数情况下可以平滑地切换。

2.3路段与区域

在VANET中,如果要准确获得实时的流量信息,P2P网络覆盖必须稳定,查找成功率更高,延迟更低。所以P2P网络规模应该减少,所有的VANET数量都是可控的。本文假定所有涉及ITS的车辆都配备了GPS导航设备,移动蜂窝上网模块(4G-LTE)和DSRC无线设备。

为了提高查找性能,道路分为几个区域,该区域由一些路段组成。在每个路段中,车辆通过DSRC形成一个独立的P2P网络作为P2P节点。路段规模的大小应该保证车辆能够直接通信,并确保车辆能够与负责区域的RSU通信,并且RSU的容量不会超载。 根据公式:g=kv

(1) 及V=Vf(l-k/kjam)

(2)

其中k位车辆密度,表示在路段里面单位长度下车辆的数量;q为车流量,表示单位时间内通过某固定观测点的车辆数量:v为车速:Vf为最高限速;kjam为堵车时候车辆密度。

公路场景下IEEE 802.llp收发器的最大通信距离不足750 m,通信成功率达到90%,车速达到120 km/h时,与RSU的通信时间约为22.5 s。而在一些文献中,车辆之间距离400 m以内的将表现出可以接受的结果,包传递率(PacketDelivery Rate,PDR)高度依赖于底层环境。而RSU与负责交换数据的“超级车辆”节点之间采用4G-LTE传输数据。通过计算与分析得知,我们在城市道路每2 km部署一个RSU设备,在城市高速公路每4 km-个,高速公路每10 km一个。在具体的地形和地形上,RSU的数量可以根据车速与车流量进行调整。一个RSU负责一个区域的通信,我们将一个区域划分为若干个路段,每个路段的距离为400 m,每个路段的P2P覆盖网络是有限的,每个车辆都有一个本地的地图副本了解所有路段,然后通过接入系统的GPS位置信息来控制P2P广播范围。

路段ID由GPS确定采用唯一标识,我们可以将道路ID和区域ID以及路片ID组合为RSID( Road Segment ID)。例如,道路ID为X201,区域ID为0023(与路侧单元ID相同,RSUID),路片ID为02,路由左侧和右侧的最后一个编号为0或1。因此,RSID为X2010023020和X2010023021,如图1所示。

对于交叉区域,路段可能重叠,我们可以通过GPS信息变化确定行驶方向,以确定车辆属于哪个RSID。当车辆行驶到地下隧道时,高层建筑覆盖无法捕捉到GPS卫星信号时,系统会自动导入自主导航系统,这样可能对数据传输造成一定影响凹,本文不作讨论。

3 Geo-Gnutella P2P覆盖网络

3.1 Gnutella网络

在Gnutella网络中,节点既是客户端又是服务器,所以称为servent。Gnutella 0.6提出了Ultrapeer(超级种子)系统。Ultrapeer系统通过将网络上的节点分类为叶节点和超级节点,具有分层网络特点。叶节点只允许连接到超级节点。超级节点作为叶节点的代理连接到上层网络。这种结构可以控制网络规模,减少消息处理和路由负担。所以这种Gnutella网络是一个半分布式拓扑网络,但性能比以前有了很大的提高。Gnutella网络具有高度的容错性,丢弃的部分servent不会中断正在进行的网络操作,而且这个特性恰好适用于VANET资源的搜索和下载。

3.2 Geo-Gnutella P2P车载自组织网结构

本文所提出的Geo-Gnutella系统是路上车辆通过DSRC形成车载自组织网络,并在应用层形成的P2P网络覆盖。这种网络是Gnutella P2P网络的改进算法,不属于通常意义的Gnutella网络,它们之间不能相互通信。

3.2.1背景描述

当车辆进入路段时,将通过GPS和导航地图中获取RSID和RSU信息。如果车辆不久前与某些Geo-Gnutellaservent进行了通信,则该车辆将尝试与存储在其缓存中的其他超级车辆进行通信。如果所有的超级节点车都不在线,在缓存中没有数据或没有连接到网络,则在x秒后,车辆将向负责该区域的RSU发送请求。RSU在网络上充当GnutellaGWebCache。在RSU的缓存中存储了该区域的超级节点信息和每个路段的第一级服务器(如果没有超级节点用户),那么车辆将通信超级节点或第一级服务器并尝试加入Geo-Gnutella网络,如果RSU缓存空白或者RSU提供的所有超级节点和第一个servent都无法连接,车辆可能是第一个进入该区域的servent。它将被存储在RSU缓存中,直到第二辆车加入相同的路段。在这种Geo-Gnutella网络中,所有车辆到车辆(Vehicle-to-Vehicle,V2V)通信将使用DSRC,所有车辆到RSU通信使用通过4G移动网络连接互联网。

3.2.2建立Geo-Gnutella P2P覆盖网络

在该系统中,一个区域包含多个路段,每个路段形成一个Geo-Gnutella覆盖网络。如果两辆车属于不同的路段,则两辆车不能通信。由于车辆在行驶,因此,当一辆车进入区域并被选举成超级节点时,为了保持上层网络的稳定性,那么它们在每一个路段都是超级节点,直到离开该区域或该车辆网络中断系统重选。根据系统需要,叶节点可以变成超级节点:超级节点也可以降级成为一个叶节点。

当第二辆车进入路段时,也会自动尝试连接Geo-Gnutella网络。它从本地缓存或区域RSU的缓存中获取超级用户的IP地址列表。当系统没有超级节点时,它将提供RSU缓存的该区域在线第一个车辆IP地址。一旦获得了同一路段上的第一辆车的IP地址,就会建立一个TCP/IP连接,并启动握手序列。客户端是第二台启动初始连接请求的车辆,而回应连接请求并提供资源的车辆就作为服務器。当然在Geo-Gnutella网络中,车辆既是服务器又是客户端。

为了建立Geo-Gnutella网络覆盖,两辆车将通过发送“Geo-Gnutella连接”握手。Geo-Gnutella的连接不仅包含“Gnutella连接”的原始参数,还包含一些GPS参数来控制连接规模。这些GPS参数包含当前位置坐标(X,Y),方向角(0),速度(V),时间(T)。

例如,两辆车可能握手以下过程。

Client

Server

Geo - GNUTELLA CONNECT/0.6

User-Agent: ITShare/l.O

X-GPS: Xi,Yi,Oi,Vi,Ti

X-UltraPeer:False

Pong-Caching: O.l

<1f>

Geo-GNUTELLA/0.6 200OK

User-Agent:ITShare/l.O

X-GPS: Xj,Yj,Oj,Vj,Tj

X-UltraPeer:False

Pong-Caching: O.kcr>

X-UltraPeer-Needed:True

<1f>

Geo-GNUTELLA/0.6 200 0K

X-UltraPeer:True

<1f>

[binary messages]

[binary messages]

客户端与服务器建立TCP连接。头部报文为“Geo-GNUTELLA CONNECT/0.6”,这作为Geo-Gnutella网络的标识。服务器响应“Geo-GNUTELLA /0.6200 OK”表示要连接。如果服务器由于某种原因而不能连接,它应该以错误代码进行响应并关闭连接。“用戶代理”是用户代理标识的标准HTTP头。“X-GPS”是Geo-Gnutella中定义的特殊标题。双方通过“X-GPS”值来确定是否建立连接。当车辆进入路段时,将通过导航设备获取路段的边界坐标值。两辆车在相同的路段和相同的方向,连接将建立。

我们可以参考inpolygon算法或C#函数PtInRect来判断多边形区域(路段)内的点,并且可以计算角度来确定车辆是否在同一个方向。例如,如果一个车辆的方向角度是。,另一个是β,α-β|<45或360-|α-β|<45,那么我们可以考虑两辆车在同一个方向。方向角定义为车辆方向和北方的顺时针方向角。实际上,GPS是根据上一次的位置来判断方向角的。在某些转弯路段可能会造成错误的判断而导致连接中断,但是通过划分路段和超级节点可以降低这种错误发生的概率。

头部“X-UltraPeer: False”是指车辆(servent)不是超级节点。一个车辆是否成为超级节点,取决于网上是否需要更多的超级节点。头部“X-UltraPeer-Needed”可以平衡网络上超级节点的数量。当“X-UltraPeer-Needed”的值为正时,表示希望对方的S ervent成为超级节点。如果有时网络中有太多的超级节点,当超级连接另一个超级同级时,超级节点可能会发送“X-UltraPeer-Needed: False”来协商另一侧成为一个叶级节点。通常情况下,在Geo-GNUTELLA系统中,一个超级节点的叶节点不超过30个。继续上面的例子,当作为服务器的车辆发送“X-UltraPeer-Needed: True”的头部时,客户车辆发送“Geo-GNUTELLA/0.6 200 OK”同意该连接,成为一个超级节点并发送“X-UltraPeer- UltraPeer:True”。当一个车辆在一个区域内成为一个超级节点时,它将发送一个消息给负责该区域的RSU,RSU随之更新缓存。其他车辆加入时,过程是一样的。为了减少RSU的负载,车辆首先在本地缓存中获取超级列表。当本地缓存为空或所有超级用户离线时,车辆将向RSU发送请求。这将确保车辆快速连接到Geo-Gnutella网络,同时保持RSU缓存呼叫的计数非常低。

当车辆离开路段时,会通过发送一个再见命令断开所有连接,但保持超级节点状态。当它离开一个区域并进入一个新的区域时,它会发送一个消息给这个区域的RSU,这样它就可以查询超级同志的列表并注册自己。在这个系统中,一个叶子节点只保留少量的与超级节点的连接。一个超级节点作为Geo-Gnutella网络的叶节点的连接代理,这样可以减少消息处理量和网络中对等节点数量,以及减少VANET之间的维持连接的流量,分区段处理Gnutella有利于整体路网信息采集效率的提高。这些Geo-Gnutella网络在路段上被分隔,又通过超级节点和多个RSU将这些Geo-Gnutella网络连接起来形成智能交通系统[5]。

4 交通信息查询

车辆要查询当前位置到达目的地的实时交通信息,将该请求发送到该区域的RSU。因为车辆可以从导航设备获得路线,所以它发送请求包括路线上的所有RSU。RSU转发查询并收集其区域的信息。所有RSU完成交通信息采集,并将数据汇总返回给车辆。为了避免同时进行更多的车辆查询,RSU会将交通信息缓存几分钟。但是应该建立一个机制,如果突发堵塞,应该强制更新缓存。RSU应该存储历史交通信息数据,以提供分布式交通信息查询、分析和预测服务。可以设计一个爬虫程序进行交通信息收集,具体信息查询架构不在本文讨论。

5 结语

本文论述了一个用Geo-Gnutella P2P覆盖网络构建的实时协同交通信息系统,对Gnutella算法进行了改进,通过分区路段和动态GPS信息限制了各个区域的P2P网络传播。

实时交通信息是车载网络中的重要应用之一。本文不涉及P2P网络的安全性。Geo-Gnutella网络的超级节点和基础网络的构建相结合,动态调整整个网络安全策略,适应网络威胁的变化,主动找到恶意节点是本文今后的工作。我们可以在P2P VANET覆盖网络中共享一些车联网用户都关注的媒体文件,使用Gnutella爬虫搜索分享资源下载,我认为这是未来研究的一个非常有趣的方向。