使用增强型布隆过滤器进行智能数据交换的自动化车辆系统的制作方法

文档序号:18941037发布日期:2019-10-23 01:09阅读:242来源:国知局
使用增强型布隆过滤器进行智能数据交换的自动化车辆系统的制作方法

本公开总体上涉及用于向机动车辆提供信息的联网数据系统。更具体地,本公开的各方面涉及用于在对等(p2p)资源发现过程期间优化车辆之间的数据交换的无线通信系统和控制逻辑。

当前生产的机动车辆(诸如现代汽车)最初配备有或改装成包括各种车载电子设备,用于向车辆传送信息、从车辆传送信息以及在车辆内传送信息。例如,在汽车应用中,车载车辆设备可以交换基于来自本地设备的数据的内容,诸如联网的车辆控制器、分布式传感器或人机接口(hmi)。常驻车辆通信系统也可以与远程节点交换数据,诸如云计算数据中心、gps导航收发器或卫星广播服务。一些设备能够通过无线保真(wifi)系统、蜂窝网络或其他无线通信技术从分布式计算机网络(最普遍的是全球互联网)接收数据。数据也可以由中央服务器系统从一组参与车辆中收集,并对其进行分析以识别交通和道路状况,以便传播给指定区域内的其他车辆。原始设备制造商(oem)也在向互联的“交谈”汽车发展,这些汽车使用车辆对车辆(v2v)通信相互交换信息。

随着v2v通信的不断演进,制造商正在探索对等数据交换技术来促进车辆校准信息、诊断和预测数据、车辆召回警报等的快速传播。希望访问存储在另一车辆上的信息的主机车辆可以向另一车辆发出具有访问数据的请求的提示。在认证主机车辆的凭证以访问所请求的信息之后,另一车辆可以例如经由专用短程通信(dsrc)系统将数据传送到主机车辆。然而,v2v通信系统中的连接带宽和延迟通常限制了对等体之间可能传输的数据包的大小和传递速度。在短时间内传递大数据包可能会使dsrc信道的带宽负担过重。当传递的数据与发出请求的车辆已经存储在本地存储器中的信息的重复时,会加剧这个问题。并且,两个车辆在范围内相互通信的时间可能会受到限制;如果传递了大量数据,部分数据可能不会被传递,也可能不会被全部传递。



技术实现要素:

本文公开了自动车辆对车辆(v2v)数据交换系统和伴随控制逻辑、用于操作的方法和用于构建这种系统的方法,以及在对等(p2p)数据交换期间采用增强的布隆过滤器和散列函数用于构件识别和版本号比较的机动车辆。举例来说,提出了一种新的协议,用于在p2p资源发现过程中辅助主机车辆(第一节点)发现存储在第一手或第二手播种机车辆(第二节点)上的可用文件和文件版本的数据。节点采用增强的布隆过滤器,其具有紧凑的数据结构和散列函数映射用于构件资格测试和文件版本号比较,以帮助实现分布式资源的广泛共享。布隆过滤器是用于数据集的概率表示以支持构件资格查询(例如,测试特定元素是否是相应数据集的构件)的时间和空间高效的数据结构。布隆过滤器可以用于高速缓存共享、查询过滤和路由、批处理文件的紧凑表示以及其他合适的功能。

例如,在协作证书吊销列表(crl)分发过程期间,安全证书管理系统(scms)实施了不当行为授权(ma)模块,该模块周期性地生成crl文件来对不良车辆(例如,试图非法侵入另一车辆车载计算网络的车辆)和被破坏的车辆(例如,感染恶意软件的车辆)进行分类。标记为“第一手播种机车辆”的车辆子组从scms下载crl文件,例如通过wifi、lte或rsu,然后通过协作v2v通信将文件分发给其他车辆。该过程有助于使没有蜂窝或wifi连接的车辆能够接收这些crl列表,同时通过将蜂窝数据传递限制到受限的车辆组来降低与蜂窝数据使用相关的成本。crl文件可以包括由公钥基础设施(pki)发布的数字证书,以建立信任链;然而,可以放弃文件加密以支持更广泛和更快的文件分发。

p2p文件分发经常涉及交换利用不同版本生成的数据文件或被标记用于有限车辆子集(例如,特定品牌、型号、地理位置等的车辆)的数据文件。为了帮助确保仅传输相关的、不重叠的数据,p2p文件分发可以以首先生成布隆过滤器开始,该过滤器代表从播种机车辆检索可用的数据文件。播种机车辆可以通过使用散列函数将一组构件(即文件id)与编码版本数据(例如被添加为多位二进制序列)映射到多位数组来响应广播“hello”信标的接收。该位数组从播种机载体无线通信传送到一个或多个主机车辆,以支持快速、低带宽的p2p资源发现。然后,主机车辆检索其自己的文件id,并使用伴随散列技术将每个文件id映射到布隆过滤器,以确定本地数据文件的文件id是否是位数组的构件(构件标识)。对于作为构件的每个本地文件id,主机车辆然后将从布隆过滤器中检索对应远程文件id的编码版本号,并且然后确定编码版本号是否比与本地文件id相关联的版本号更新(版本号比较)。使用具有多位数组的布隆过滤器允许接收车辆“知道”可用数据文件以及每个文件的相应内容。从该列表中,主机车辆识别不重复但与该车辆相关的一个或多个文件;播种机车辆和主机车辆然后交换实际的文件内容。

本公开的各方面涉及用于机动车辆的v2v数据交换技术和计算机可执行算法。例如,提出了用于在第一(主机)车辆和第二(播种机)车辆之间执行v2v数据交换的方法。一般来说,单个车辆既可以用作播种机车辆,即向另一车辆分发数据,并且也可以用作主机车辆,即从另一车辆接收分发的数据。相反,至少一些v2v系统架构可以仅指定选择的车辆或车辆分组作为播种机,而其余车辆被指定为主机。该代表性方法包括以任何顺序并以与任何公开的特征和选项的任何组合来确定主机车辆的无线通信设备是否通信连接到播种机车辆的无线通信设备。如果主机车辆和播种机车辆在通信范围内,则从主机车辆向播种机车辆发送提示(反之亦然),以启动资源发现过程,以便检索经由播种机车辆的常驻存储器设备存储的数据,以便经由主机车辆的常驻存储器设备存储。

在资源发现过程开始时,布隆过滤器可以经由播种机车辆生成,并且随后从播种机车辆传发送到主机车辆。该布隆过滤器包括例如通过适当的散列技术映射到位数组的一组远程文件id,其中每个远程文件id具有编码到位数组的相应远程文件版本号,例如作为多位二进制序列。主机车辆的常驻车辆控制器然后将确定经由主机车辆的常驻存储器设备存储的现有文件的本地文件id是否是接收到的布隆过滤器的构件。如果对应远程文件id已经映射到布隆过滤器位数组,则本地文件id是构件。响应于本地文件id是接收到的布隆过滤器的构件,主机车辆将确定编码到对应远程文件id的远程文件版本号是否比与本地文件id相关联的本地文件版本号更新。响应于远程文件版本号比本地文件版本号更新,播种机车辆将向主机车辆发送与对应远程文件id相关联的数据文件。

本公开的其他方面涉及在v2v数据交换期间采用增强的布隆过滤器和散列函数进行构件识别和版本号比较的机动车辆。如本文所用,术语“机动车辆”可以包括任何相关的车辆平台,例如乘用车(内燃机、混合动力、全电动、燃料电池等)、商用车辆、工业车辆、履带式车辆、越野和全地形车辆(atv)、农用设备、船只、飞机等。在示例中,提出了一种机动车辆,其包括具有动力系、常驻存储设备、常驻无线通信设备和常驻车辆控制器的车辆主体,所有这些都安装到车辆主体上。车辆控制器可操作地连接到存储器设备和无线通信设备。

继续上述示例,常驻车辆控制器被编程为确定常驻无线通信设备是否通信连接到播种机车辆的无线通信设备,并向播种机车辆发送提示以启动资源发现过程,以检索经由播种机车辆的存储器设备存储的数据,用于经由常驻存储器设备存储。常驻车辆控制器然后经由常驻无线通信设备从播种机车辆接收布隆过滤器,该布隆过滤器具有映射到位数组的一组远程文件id。每个远程文件id具有编码到位数组的相应远程文件版本号。常驻车辆控制器被编程为确定经由常驻存储器设备存储的现有文件的本地文件id是否是接收到的布隆过滤器的构件,并且响应于本地文件id是接收到的布隆过滤器的构件,确定编码到对应远程文件id的远程文件版本号是否比与本地文件id相关联的本地文件版本号更新。响应于远程文件版本号比本地文件版本号更新,常驻车辆控制器将与对应远程文件id相关联并存储在播种机车辆的存储器设备中的数据文件下载到常驻存储器设备。

对于任何公开的实施例,确定本地文件id是否是接收到的布隆过滤器的构件可以包括:应用散列函数将本地文件id映射到布隆过滤器的位数组;以及确认散列函数将本地文件id映射到与对应远程文件id相同的一个或多个位数组位置。响应于确定本地文件id不是接收到的布隆过滤器的构件,可以确定经由主机车辆的常驻存储器设备存储的另一现有文件的另一本地文件id是否是接收到的布隆过滤器的构件。同样地,响应于确定远程文件版本号不比本地文件版本号新,可以确定经由主机车辆的常驻存储器设备存储的另一现有文件的另一本地文件id是否是接收到的布隆过滤器的构件。如上所述,位数组由一系列多位数组位置组成;每个远程文件版本号被编码为分配给这些数组位置中的一个或多个的多位二进制序列。这些编码的多位二进制序列中的一个或多个可以被分配给这些多位数组位置中的多个。

对于任何公开的实施例,该方法/编程车辆控制器可以:识别存储在播种机车辆的常驻存储器设备中的一组数据文件;生成布隆过滤器;并且将远程文件id中的每一个映射到布隆过滤器的位数组,其中对应的远程文件版本号编码到位数组。可选地,远程文件id及其对应的编码文件版本号可以实时生成。将远程文件id映射到位数组可以包括应用散列函数,该散列函数将对应的编码远程文件版本号分配给位数组的一个或多个指定数组位置。每个远程文件版本号可以被编码为多位二进制序列,该序列被分配给布隆过滤器的数组位置中的一个或多个。

对于任何公开的实施例,可以确定是否通过播种机车辆的无线通信设备接收到新的数据文件。新数据文件可以伴随元数据(例如,具有新的文件id和新的文件版本号)。响应于接收到新数据文件,对应的新文件id可以被映射到布隆过滤器的位数组,其中新文件版本号被编码到位数组。例如主机车辆的常驻车辆控制器可以从经由该车辆的常驻存储器设备存储的一组现有文件中逐一选择现有文件。响应于主机车辆和播种机车辆彼此建立无线连接,启动资源发现过程的提示可以从主机车辆发送到播种机车辆,反之亦然。

以上发明内容并非旨在代表本公开的每个实施例或每个方面。相反,前面的发明内容仅仅提供了本文阐述的新颖概念和特征中的一些的示例说明。当结合附图和所附权利要求书时,从以下对实行本公开的示出的示例和代表性模式的详细描述中,本公开的上述特征和优点、以及其他特征和伴随的优点将变得显而易见。此外,本公开明确地包括上面和下面呈现的元件和特征的任何和所有组合和子组合。

附图说明

图1是根据本公开的各方面的具有用于执行车辆对车辆数据交换的车载控制器、传感器和通信设备的网络的代表性机动车辆的示意图。

图2是根据本公开的各方面的采用增强布隆过滤器和多位数组的代表性对等资源发现和数据交换过程的示意图。

图3是根据所公开的构思的各方面的布隆过滤器位数组生成协议的流程图,该协议可以对应于由车载或远程控制逻辑电路系统、可编程电子控制单元或其他基于计算机的设备或设备网络执行的指令。

图4是根据所公开的构思的布隆过滤器位数组解析协议的流程图,该协议可以对应于各方面由车载或远程控制逻辑电路系统、可编程电子控制单元或其他基于计算机的设备或设备网络执行的指令。

本公开可适于各种修改和可替代的形式,并且一些代表性的实施例已经在附图中以示例的方式示出,并且将在本文详细描述。然而,应当理解的是,本公开的新颖方面不限于以上列举的附图中所示的特定形式。相反,本公开将覆盖落入由所附权利要求所涵括的本公开范围内的所有修改、等同物、组合、子组合、置换、分组和可替代方案。

具体实施方式

本公开允许许多不同形式的实施例。附图中示出并将在本文详细描述本公开的代表性实施例,同时应理解,这些示出的示例是作为所公开的原理的示例提供的,而不是对本公开的广泛方面的限制。就此而言,例如在摘要、引言、发明内容和具体实施方式部分中描述但在权利要求中没有明确阐述的元素和限制,不应单独或共同地通过暗示、推断或其他方式并入权利要求中。

为了本详细描述的目的,除非特别声明:单数包括复数,反之亦然;单词“和”和“或”应该是既是结合的也是析取的;“任何”和“所有”都意味着“任何和所有”;并且词语“包括”和“包含”和“具有”应各自表示“包括但不限于”。而且,近似词,诸如“大约”、“几乎”、“基本上”、“近似”等,在本文中可以以“在、附近或在……附近”或“在0-5%范围内”或“在可接受的制造公差内”或其任何逻辑组合的意义上使用。最后,方向形容词和副词,诸如前、后、内侧、外侧、右舷、左舷、竖直、水平、向上、向下、前部、后部、左、右等在例如当车辆可操作地定向在正常行驶表面上时,可以是相对于机动车辆,诸如机动车辆的向前行驶方向。

现在参考附图,其中在所有几幅视图中,相同的附图标记表示相同的特征,在图1中示出了代表性的汽车,该汽车总体上以10表示,并且为了讨论的目的本文中被描绘为轿车型客车。封装在汽车10的车辆主体12内(例如分布在不同车厢内)的是电子设备的车载网络,诸如下面描述的各种计算设备和控制单元。所示的汽车10——本文也简称为“机动车辆”或“车辆”——仅仅是一个示例性应用,通过它可以实践本公开的各方面和特征。同样,附图中所示的特定车辆对车辆(v2v)系统架构的本发明构思的实施方式也应该被理解为本文公开的构思和特征的示例性应用。由此,将理解的是本公开的各方面和特征可以应用于其它v2v系统架构,并且被实施用于任何逻辑相关类型的机动车辆。而且,仅示出了车辆10的选择组件,并且将在本文中进一步详细描述。然而,本文讨论的机动车辆和网络架构可以包括许多附加的和可替代的特征,以及其他可用的外围组件,例如,用于实行本公开的各种方法和功能。最后,本文呈现的附图不一定按比例绘制,而是纯粹出于教学目的而提供的。因此,附图中所示的具体和相对尺寸不应被解释为是限制性的。

图1的代表性车辆10最初配备有车辆电信和信息(通俗地称为“远程信息处理”)单元14,与位于远程或“车外”的云计算系统24无线通信(例如,通过小区塔、基站和/或移动交换中心(msc)等)。通常在图1中示出的其它车辆硬件组件16中的一些包括(作为非限制性示例)显示设备18、麦克风28、扬声器30和输入控制器32(例如,按钮、旋钮、开关、触摸板、键盘、触摸屏等)。通常,这些硬件组件16使用户能够与远程信息处理单元14和车辆10内的其他系统和系统组件通信。麦克风28向车辆乘员提供输入口头或其他听觉命令的装置;车辆10可以配备有利用人机接口(hmi)技术的嵌入式语音处理单元。相反,扬声器30向车辆乘员提供可听输出,并且可以是专用于与远程信息处理单元14一起使用的任意一个独立扬声器,或者可以是车辆音频系统22的一部分。音频系统22可操作地连接到网络连接接口34和音频总线20,以经由一个或多个扬声器组件接收模拟信息,将其呈现为声音。

通信地耦合到远程信息处理单元14的是网络连接接口34,其合适的示例包括双绞线/光纤以太网交换机、内部/外部并行/串行通信总线、局域网(lan)接口、控制器局域网(can)、面向媒体的系统传输(most)、局部互联网络(lin)接口等。其他适当的通信接口可以包括符合iso、sae和ieee标准和规范的接口。网络连接接口34使得车辆硬件16能够相互之间发送和接收信号,以及与车辆主体12外部的或其“远程”以及车辆主体12内部或“驻留”到其上的各种系统和子系统发送和接收信号。这允许车辆10执行各种车辆功能,诸如控制车辆转向、管控车辆变速器的操作、控制发动机节气门、接合/脱离制动系统以及其他自动驾驶功能。例如,远程信息处理单元14从保护系统ecu52、发动机控制模块(ecm)54、信息娱乐应用模块56、(多个)传感器接口模块58和各种其他车辆ecu60(诸如变速器控制模块(tcm)、气候控制模块(ccm)、制动系统模块(bcm)等)接收数据和/或向其发送数据。

继续参考图1,远程信息处理单元14是车载计算设备,其单独地或者通过其与其他联网设备的通信来提供服务的混合。该远程信息处理单元14通常由一个或多个处理器40组成,每个处理器40可以被实现为分立的微处理器、专用集成电路(asic)或专用控制模块。车辆10可以经由中央处理单元(cpu)36提供集中的车辆控制,该中央处理单元36可操作地耦合到一个或多个电子存储器设备38,每个电子存储设备可以采取cd-rom、磁盘、ic设备、半导体存储器(例如,各种类型的ram或rom)等、以及实时时钟(rtc)42形式。。可以经由蜂窝芯片组/组件、导航和定位芯片组/组件(例如,全球定位系统(gps))或无线调制解调器(所有这些都以44共同表示)中的一个或多个或全部来提供与远程车外联网设备的远程车辆通信能力。近距离无线连接可以经由短程无线通信设备46(例如,蓝牙单元或近场通信(nfc)收发器)、专用短程通信(dsrc)组件48和/或双天线50来提供。应当理解的是,车辆10可以在没有以上列出的组件的中的一个或多个的情况下实施,或者可以包括特定最终用途所需的附加组件和功能。上述各种通信设备可以被配置为在车辆之间交换作为在v2v通信系统或车辆对所有事物(v2x)通信系统(例如车辆对基础设施(v2i)、车辆对行人(v2p)或车辆对设备(v2d))中广播的周期性信标消息的一部分的数据。

图2是无线车辆通信系统100的图,描绘了第一(主机)车辆110a行驶到第二(播种机)车辆110b附近并与之“交谈”。机动车辆110a和110b可以是具有v2v通信能力的任何类型的商用车辆。作为非限制性示例,可以构想的是,上面参照图1的车辆10公开的特征中的任何一个可以单独地或以任何组合的方式结合到图2的车辆110a和110b中,反之亦然。第一和第二车辆110a、110b可以通过各自的车辆间通信网络(例如dsrc)102彼此交换无线消息、数据等。虽然示出了单个主机车辆110a与单个播种机车辆110b通信,但是每个机动车辆可以与该车辆广播范围内的任何数量的远程车辆通信,以便交换信息和数据。车辆110a、110b中的一个或两个可以经由一个或多个无线通信网络108通信地耦合到远程主机系统104或云计算系统106。主机系统104可以实施为能够处理大量数据处理、资源规划和事务处理的高速服务器计算设备或大型计算机。网络108可以是任何可用类型的网络,包括公共分布式计算网络(例如互联网)和安全专用网络(例如局域网、广域网、虚拟专用网络)的组合,并且可以包括无线和有线传输系统(例如卫星、蜂窝网络、地面网络等)。

图2中还示出了数据文件的示例,这些数据文件可以由每个车辆110a、110b维持,并通过无线车辆通信系统100提供。第一组分类数据文件112a存储在第一(主机)车辆110a的常驻存储器设备114a中,而第二组分类数据文件112b存储在第二(播种机)车辆110b的常驻存储器设备114b中。每组数据文件112a、112b可以包括与车辆位置、路线规划、车辆运动学/动力学、车辆校准信息、诊断和预测数据、车辆召回警报、交通事件、道路状况、碰撞、可能导致碰撞的当前状况等相关的数据。除了对环境意识状况的预先警告之外,视线目标跟踪、非视线跟踪和路径预测可以通过v2v通信来确定。表示由车辆获得的数据的可靠性和/或准确性的健康状态信息也可以被通信传送。应该认识到的是,本文引用的数据类别纯粹是代表性的,并且任何合适的方案都可以用于分类、存储和传输该信息。

由于可能存储在车辆110a、110b任意一个中的大量信息,在p2p资源发现过程期间,将所有数据文件和/或这些数据文件的相应元数据无线传输到另一车辆可能被通信信道带宽、位率、延迟或事物时帧的限制或以其他方式阻止。为了帮助确保在p2p文件分发期间成功传输所有相关的非重叠数据,最初只发送主机车辆识别给定播种机车辆上有哪些相关的非重叠数据(如果有的话)是可用的所必需的信息可能是有利的。本文描述的v2v数据交换系统、方法和车辆采用控制逻辑用以确定要传输哪些记录,而无需最初发送完整的元数据或文件的全部内容。播种机车辆(无论是第一手还是第二手播种机车辆)然后都可以有效地只通信传送那些满足查询要求的记录。

继续参考图2的代表性无线车辆通信系统100架构,每个车辆110a、110b维持当前存在于该车辆上的文件112a、112b的元数据的列表。作为非限制性示例,文件元数据可以包括:文件名(例如,“mi_crl”、“oh_crl”和“il_crl”),其可以指示文件的内容(例如证书吊销列表(“crl”));文件版本(例如版本“1.0”、“2.0”、“2.2”等)、文件创建时间(例如“03/18/20189am”);文件大小(如12345字节)等。当第一车辆110a遇到第二车辆110b时,车辆110a、110b一个或两个可以系统地、响应性地、随机地和/或周期性地广播问候信标或其他提示以启动资源发现过程。在该过程中,车辆110a、110b任意一个可以用作播种机车辆或主机车辆或两者;因此,术语“主机车辆”和“播种机车辆”主要用于阐明特定v2v文件交换的来源和目的地。实际上,一个辆车110b可以与另一辆车110a共享本地存储的文件;同时,车辆110b还可以从其他车辆110a或在通信范围内的任何其他车辆接收文件。

一旦第一车辆110a发现新的相邻车辆110b(例如通过接收和接受另一车辆的问候信标),则车辆110a、110b的一个或两个可以确认另一车辆的证书,并且伴随地同意将数据从充当播种机的第二车辆110b传输到充当主机的第一车辆110a。在该示例中,播种机车辆110b基于当前存储在常驻存储器设备114b中的数据文件112b响应性地实时生成布隆过滤器120。布隆过滤器120可以从m个多位数组位置121-1、121-2、121-3…121-m的位数组122开始,所有这些位置例如取决于每个数组位置的位数最初都可以被设置为零-零(00)或其他零系列。可以定义k个不同的散列函数的数量,其中每个散列函数以均匀分布将相应的散列元素与m个数组位置中的一个关联。每个文件id然后根据其各自的一个或多个散列函数被映射到位数组122;这些位置处的位被设置为对应于时间刻度(“版本新鲜度号”)的多位二进制序列,或与该文件id相关联的其他编码参数。一旦布隆过滤器120完成,播种机车辆110b就将其广播给一个或多个主机车辆110a。

为了确定特定的数据文件是否在组内,主机车辆110a将文件id馈送给对应的k个散列函数中的每一个,以定位k个数组位置;如果这些数组位置处的所有位都不是零-零(00),则元素在组中。相反,如果这些数组位置处的位中的任何一个都不是零-零(00),则元素在组中。可以选择性地修改位数组的长度(即数组位置的总数m),以实现期望的假阳性概率。假阳性概率可以进一步优化为第一车辆110a和第二车辆110b之间的内容相似性以及两个车辆之间的预期遇到持续时间的联合函数。v2v文件交换期间使用的一个或多个散列函数可以包括主机车辆和播种机车辆110a、110b之间相互同意散列函数或散列函数集(或由其组成)。例如,播种机车辆110b可以识别第二组数据文件112b的文件id和相应的上下文数据(例如,版本号、发布日期、分配数据等),然后使用相互识别散列函数将第二组的每个文件id散列成布隆过滤器位数组。主机车辆110a在接收到布隆过滤器时,使用相同的相互识别散列函数将第一组的数据文件112a中的每个本地数据文件的文件id散列成位数组。

根据图示的示例,播种机车辆110b识别存储在常驻存储器114b中的每个数据文件112b的上下文信息——在这种情况下,文件的时间刻度数据——将上下文信息转换成可破译的多位二进制序列,并且然后将该编码标识符映射到布隆过滤器的位数组122,代替其他布隆过滤器的单位数组所共有的标准单整数占位符。车辆通信系统100可以使用校准的一组两位标识符来表示文件版本新鲜度:(1)“01”用于表示不到24小时前创建的文件;(2)“10”用于表示超过24小时但不到一周创建的文件;以及(3)“11”用于表示超过一周但不到一个月前创建的文件。对于图2的数据文件“il_crl.ver2.2”,播种机车辆110b可以确定当前时间是“03/19/1808:11小时”,并且文件创建时间是“03/18/201809:30小时”;由此,该文件的版本2.2是在不到24小时前创建的,并且因此对应于标识符“01”。播种机车辆110b可以同时确定数据文件“mi_crl.ver1.0”是大约47小时前创建的(对应于标识符“10”),并且数据文件“oh_crl.ver2.2”是大约9天14小时前创建的(对应于标识符“11”)。对于存储在常驻存储器设备114a中的第一组数据文件112a,上述步骤可以经由主机车辆110a同时执行。

对于至少一些实施例,编码的标识符可以包括大于两个整数,例如,用于表示存储的数据文件的更复杂的上下文信息。作为示例而非限制,车辆可以维持两个crl文件数据库,例如美国的一个和加拿大的一个。如果车辆在美国行驶,则车辆将基于存储在美国数据库中的crl文件(例如,mi_crl、俄亥俄_crl、il_crl等)生成布隆过滤器。相反,如果车辆在加拿大行驶,它将根据存储在加拿大数据库中的crl文件(安大略_crl、魁北克_crl、蒙特利尔_crl等)生成布隆过滤器。为了帮助确保主机车辆访问适当的数据库,布隆过滤器的多位数组位置将存储3数位二进制序列,其对存储在美国数据库中的所有crl文件以“1”开始,并且对于存储在加拿大数据库中的所有crl文件以“0”开始。

在对包含在第二组数据文件112b中的各个文件的上下文信息进行编码之后,播种机车辆110b使用散列函数用于确定文件应该映射到位数组122中的哪个一个或多个元素。假设播种机车辆110b对文件“mi_crl.ver1.0”使用三个散列函数:hash1(“mi_crl”)=3、hash2(“mi_crl”)=6、hash3(“mi_crl”)=10;在这种情况下,文件标识符“10”被映射到三个数组位置:元素三、元素六和元素十。如图所示,播种机车辆110b对每个文件使用单个散列函数:hash_function(“mi_crl”)=4,因此文件“mi_crl”被映射到布隆过滤器120中的为“10”的第四个元素;hash_function('il_crl')=1,因此文件'il_crl'被映射到布隆过滤器120中的为“01”的第一个元素。以及hash_function(oh_crl')=m-1,因此文件'oh_crl'被映射到布隆过滤器120中的为“11”的m-1元素。构想的是车辆110b对每个文件使用超过一个的散列函数,并且可选地,对每个文件使用相同或不同数量的散列函数。

一旦主机车辆110a接收到播种机车辆110b生成的布隆过滤器120,主机车辆110a迭代通过其文件元数据列表,该列表包括数据文件组112a的相应文件id和上下文数据,并确定播种机车辆110b是否具有这些本地存储文件中的任何一个的更新的版本。继续图2所示的示例,主机车辆110a确定播种机车辆110b是否具有用于本地存储的文件“mi_crl.ver.1.1”和“il_crl.ver.2.0”的更新的版本。主机车辆110a首先通过使用匹配散列函数以将每个本地存储的文件映射到布隆过滤器120来执行构件识别程序。例如,文件“mi_crl.ver.1.1”使用hash_function(“mi_crl”)映射到位数组122,而文件“il_crl.ver.2.0”使用hash_function(“il_crl”)映射到位数组122。存储在位数组122的第一和第四元素处的多位二进制序列确认这两个本地存储的文件是布隆过滤器120的构件。数据文件组112a还可以包含使用hash_function(“in_crl”)映射到位数组122的第六元素的数据文件“in_crl.ver.3.1”;在这种情况下,存储在第六元素中的零-零(00)二进制序列表示该特定本地存储的文件不是布隆过滤器120的构件。因为“in_crl”不是构件,所以可以假设播种机车辆110b不存储对应“in_crl”文件。如上所指示的那样,文件id可以具有多个散列函数,并且因此,可以映射到多个数组位置;当进行构件标识时,如果以全部的零填满这些数组位置中的单个位置,则假定文件id不是构件。

在完成本地存储的数据文件组112a的构件身份识别之后,主机车辆110a通过对照相应远程存储的文件的上下文数据评估每个构件身份确认的本地存储的文件的上下文数据来执行版本号比较,以确定哪个版本较新。假设主机车辆110a知道本地存储的数据文件“mi_crl.v1.1”大约在12小时前创建(对应于标识符“01”),而本地存储的数据文件“il_crl.v2.0”大约在两个月前创建(对应于标识符“11”)。主机车辆110a调用存储在位数组122的hash_function(“mi_crl”)=4中的两位标识符(其是标识符“10”)和存储在位数组122的hash_function(“il_crl”)=1中的两位标识符(其是标识符“01”)。一旦检索到,主机车辆110a发现布隆过滤器120的第四元素(为10)指示远程存储的文件是“mi_crl”的比本地存储的版本更旧的版本,其具有“01”的新鲜度值。根据该确定,主机车辆110a不从播种机车辆110b下载旧版本的“mi_crl”文件。相反,主机车辆110a发现布隆过滤器120的第一元素(为01)指示远程存储的文件是“ii_crl”的比本地存储的版本更新的版本,其具有“10”的新鲜度值。在这种情形下,主机车辆110a可以利用较新版本的数据文件“il_crl”的上层协议启动来自播种机车辆110b的内容传输。

现在参考图3的流程图,根据本公开的各方面,在200处总体描述了用于由播种机/发射器车辆(诸如图1的汽车10或图2的机动车辆110a和110b)产生布隆过滤器位数组的改进方法或控制策略。图3中示出并在下面进一步详细描述的一些或所有操作可以代表对应于处理器可执行指令的算法,该处理器可执行指令可以存储在例如主存储器或辅助存储器或远程存储器中,并且例如由车载或远程控制器、处理单元、控制逻辑电路或其他模块或设备运行,以执行与所公开的构思相关联的任何或所有上述或以述的功能。应当认识到的是,所示操作框的执行顺序可以改变,可以添加附加框,并且可以修改、组合或消除所描述的一些框。

方法200从终端框201开始,其中处理器可执行指令用于可编程控制器或控制模块调用协议的初始化过程,以管控两个机动车辆之间的p2p资源发现过程。在示例中,每当一个机动车辆遇到可兼容用于执行v2v无线数据交换的另一机动车辆时,可以启动在框201处的初始化程序。如上关于图2的代表性系统架构所述,具有被分配用于广播的一个或多个本地存储数据文件的发射器车辆(例如,播种机车辆110b)可以直接响应于遇到新的相邻车辆(例如,主机车辆110a)而调用并执行方法200。在过程框203处,过滤器生成车辆循环通过本地存储文件的元数据列表,以识别哪些文件要编码和映射。对于至少一些应用来说,可能期望的是采用播种机车辆的常驻车辆控制器(诸如图1的车辆10的cpu36和/或处理器40)来识别存储在常驻存储器(诸如存储器设备38)中的一组数据文件,用于与一个或多个主机车辆共享。可选地,车辆可以被提供有调用表,该调用表列举了每当车辆遇到另一车辆时用于共享的文件预定列表;在框203处,车辆可以检索并串行迭代通过列表。

在确定哪些文件可以共享之后,方法200继续用处理器可执行指令处理框205,以将每个文件的上下文数据编码成为值,以便于映射到布隆过滤器。根据图2所示的示例,播种机车辆110b基于当前时间(例如,从rtc42检索)和该文件的发布时间(例如,从该文件的元数据接收)将每个文件的时间刻度数据转换成多位二进制序列。例如,图2的播种机车辆110b可以实时编码每个文件id,或者可替换地,可以从诸如远程主机系统104或云计算系统106的车外源接收编码的文件信息。为了帮助确保数据交换期间的最新内容,播种机车辆的常驻车辆控制器可以实时生成数据文件组的远程文件id和相应的远程文件版本号。此外,每当播种机车辆接收到文件的更新版本或文件的替换物时,现在存储的文件可以被删除,使得播种机车辆可以生成仅代表最新发布的文件的布隆过滤器。

继续参考图3,方法200继续到预定义的操作框207,并采用合适的布隆过滤器(bf)算法将每个文件映射到布隆过滤器的位数组的单个元素或多个元素。有许多布隆过滤器变体和多个布隆过滤器算法被构想用于将文件id及其对应的编码文件版本映射到合适的布隆过滤器位数组。例如,如上所述,第一类型的布隆过滤器算法可以用于优化将每个文件的校准两位标识符映射到数组中的单个元素,而第二类型的布隆过滤器算法可以用于优化将每个文件id映射到数组中的多个元素。转到图3中的分支流程图,方法200在判定框209处确定对于所选文件id是否有更多的元素要处理。例如,单个散列函数可以用于将所选文件id映射到单个元素;因此,只有一个元素需要对此文件id进行处理。相反,如果选择的文件id正使用多个散列函数将该文件id映射到多个元素,则方法200将迭代通过每个元素以确保文件id映射到所有对应的位数组位置。如果正在使用单个散列函数和/或对于多个散列函数只有一个最终元素要处理,则方法200在处理框207处将给定文件id的编码文件版本位值映射到单个/最终数组位置,在框209处确认有更多元素要处理(判定框209=否),并且然后返回到处理框219。

在多个散列函数用于给定文件id的情况下,方法200使用初始散列函数(例如,hash1(“mi_crl”)=3)将该文件id(例如,“mi_crl”)的编码文件版本位值(例如,“10”)映射到布隆过滤器的相应数组位置(元素3),例如,在处理框207处。响应于确定有更多的元素要处理(判定框209=是),方法200继续处理框211,并使用后续散列函数(例如,hash2('mi_crl')=6)来识别该文件id(例如,“mi_crl”)的下一个对应数组位置(元素6)。在判定框213处,方法200确定该数组位置是否为空(例如,元素6是否被设置为零-零(00))。如果该数组位置实际上是空的(判定框213=是),则方法200继续处理框215,并用所选文件id(例如,“mi_crl”)的编码文件版本位值(例如,“10”)填充该数组位置(元素6)。相反,响应于确定该数组位置(元素6)不是空的(判定框213=否),方法200继续到判定框217,以确定所选文件id的编码文件版本位值是否比当前存储在该数组位置的位值更新。如果不是(判定框217=否),则方法200返回并重复判定框209。然而,如果编码文件版本位值比存储的位值更新(判定框217=是),则方法200将在处理框215响应性地用更新的编码文件版本位值填充数组位置(元素6)。

如上所述,在将给定文件id的编码文件版本位值插入在所有相应的数组位置的bf数组中之后,方法200前进到判定框221,以确定是否有应该映射到布隆过滤器的任何更多的文件。如果存在需要编码到布隆过滤器的剩余文件(判定框221=是),则方法200返回到处理框203,并回向迭代通过上述步骤。相反,在确定不再有剩余文件时(判定框221=否),方法200前进到处理框223并广播布隆过滤器。此后,方法200可以在终端框225处终止。

现在参考图4的流程图,根据本公开的各方面,在300处总体描述了用于解析由机动车辆(诸如图1的汽车10或图2的机动车辆110a和110b)接收的布隆过滤器位数组的改进的方法或控制策略。图4中示出并在下面进一步详细描述的一些或所有操作可以代表对应于处理器可执行指令的算法,该处理器可执行指令可以存储在例如主存储器或辅助存储器或远程存储器中,并且例如由车载或远程控制器、处理单元、控制逻辑电路或其他模块或设备运行,以执行与所公开的构思相关联的任何或所有上述或下述的功能。应当认识到的是,所示操作框的执行顺序可以改变,可以添加附加框,并且可以修改、组合或消除所描述的一些框。例如,图3和图4的方法200和300可以组合成单个控制逻辑协议,用于在一个或多个主机车辆和一个或多个播种机车辆之间执行v2v数据交换。

方法300以终端框201处开始,其中处理器可执行指令用于可编程控制器或控制模块调用协议的初始化过程,以启动两个机动车辆之间的p2p资源发现过程。返回参考图2的示例,第一(主机)车辆110a被示出为驾驶到第二(播种机)车辆110b附近;主机车辆110a可以向播种机车辆110b发出启动通信的提示。如果两个车辆110a、110b在例如彼此各自的dsrc组件48的广播范围内,则常驻车辆控制器(诸如图1的cpu36)可以确定两个车辆之间已经建立了无线连接。主机车辆110a可以响应性地发送提示以启动资源发现过程,以检索经由播种机车辆的常驻存储器设备存储的数据,以便于经由主机车辆的常驻存储器设备存储。

在终端框301处完成协议的同时或之后,方法300继续用处理器可执行指令处理框303,用于接收器车辆(例如图2的主机车辆110a)以接收布隆过滤器。如上所指示的那样,播种机车辆110b的无线通信设备可以例如在图3的处理框223处向主机车辆110a发送布隆过滤器。一旦接收到,在处理框305处,接收车辆的常驻车辆控制器为作为存储在常驻存储器中的文件集的一部分的现有文件选择文件id。如上所解释那样,每个车辆都维持文件元数据列表(例如,文件名、文件大小、文件版本、文件来源等);主机车辆从文件元数据列表中挑选文件。在选择本地文件之后,该方法继续到预定义操作框307,以确定所选择的本地文件id是否是接收到的布隆过滤器的构件(例如,对应远程文件id已经映射到接收到的布隆过滤器的位数组),如果是,则确定本地文件id是否具有存储在播种机车辆上的更新的对应文件。

移动到图4中的分支流程图,方法300前进到处理框309,并从接收到的布隆过滤器中检索所有映射元素以便获得对应远程存储的数据文件。如果单个散列函数用于选择文件id,则只需要标识一个单个数组位置,并检索存储位值以便获得该选择文件id。然而,如果多个散列函数被用于选择文件id,则需要标识多个数组位置,同时检索其各自位值以便获得该选择文件id。一旦检索到,方法300在判定框311处确定检索到的元素中的至少一个是否为空。换句话说,如果在过程框309处识别的数组位置中的单个一个被设置为零-零,则选择文件不是接收到的布隆过滤器的构件,并且因此,远程(播种机)车辆上不存在对应文件。响应于确定至少一个元素实际上是空的(判定框311=是),方法300继续到操作框313,并设置标记来记住构件识别测试结果指示远程车辆上不存在所选本地文件的对应物。此后,方法300将返回到处理框323,而不从远程车辆检索对应文件,然后前进到处理框325,以通知其他模块构件资格测试和版本测试结果,并且然后前进到判定框327,以确定是否有应该完成接收到的布隆过滤器的构件资格测试和版本测试的任何更多本地存储的文件。

当方法300确定检索到的元素中没有一个是空的(判定框311=否),车辆将执行过程框315的指令,以识别在过程框309处检索到的所有映射元素当中最旧的元素。继续上述示例,主机车辆的110acpu36将检索三个校准的两位标识符:一个用于元素3(例如值“01”)、一个用于元素6(例如值“01”)、一个用于元素10(例如值“10”)。在代表性的示例中,检索到的元素中“最老的”是“10”,其代表超过24小时前但不到一周前创建的文件。在判定框317处,方法300通过比较本地存储的选择文件的编码文件版本位值和在处理框315处检索的位值来确定本地文件是否比远程文件更新。作为非限制性示例,本地文件可以具有01的新鲜度值;在这种情况下,主机车辆得出结论,远程车辆文件的为10的新鲜度号是较旧的文件版本号。方法300通过在过程框319处设置标记来响应本地文件不比远程文件更新(判定框317=否)的确定以指示远程车辆上确实存在较新的对应文件,返回到过程框323同时请求从远程车辆检索较新的对应文件,并且然后前进到过程框325以向其他模块通知构件资格测试和版本测试结果。相反,如果本地文件比远程文件更新(判定框317=是),则方法300通过在过程框321处设置标记来响应,以指示远程车辆上不存在更新的对应文件,返回到过程框323而不从远程车辆检索对应文件,并且然后前进到过程框325以向其他模块通知构件资格测试和版本测试结果。在方法300迭代通过主机车辆上的所有相关文件之后(判定框327=否),方法300可以在终端框329处终止。

在一些实施例中,本公开的各方面可以通过计算机可执行指令程序(诸如程序模块)来实施,该指令程序通常被称为由车载车辆计算机或常驻和远程计算设备的分布式网络执行的软件应用或应用程序。在非限制性示例中,软件可以包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件和数据结构。该软件可以形成接口,以允许计算机根据输入源做出反应。该软件还可以与其他代码段协作,以响应于结合接收到的数据源接收到的数据来启动各种任务。软件可以存储在各种存储器介质中的任何一种上,诸如cd-rom、磁盘、气泡存储器和半导体存储器(例如,各种类型的ram或rom)。

而且,本公开的各方面可以利用各种计算机系统和计算机网络配置来实践,包括多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等。此外,本公开的各方面可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。因此,本公开的方面可以结合计算机系统或其他处理系统中的各种硬件、软件或其组合来实施。

本文描述的任何方法可以包括机器可读指令,用于由(a)处理器、(b)控制器和/或(c)任何其他合适的处理设备执行。本文公开的任何算法、软件或方法可以体现在存储在有形介质上的软件中,例如闪存、cd-rom、软盘、硬盘、数字多功能盘(dvd)或其他存储器设备,但是本领域普通技术人员将容易理解的是,整个算法和/或其部分可替换地由控制器以外的设备执行和/或以可用的方式体现在固件或专用硬件中(例如,它可以由专用集成电路(asic)、可编程逻辑设备(pld)、现场可编程逻辑设备(fpld)、离散逻辑等实施)。进一步,尽管参考本文描绘的流程图描述了特定算法,但是本领域普通技术人员将容易理解,可替换地可以使用实施示例机器可读指令的许多其他方法。

已经参考所示实施例详细描述了本公开的各方面;然而,本领域技术人员将认识到,在不脱离本公开的范围的情况下,可以对其进行许多修改。本公开不限于本文公开的精确构造和组合物;从前面的描述中显而易见的任何和所有修改、改变和变化都在由所附权利要求限定的公开的范围内。此外,本构思明确地包括前述元件和特征的任何和所有组合和子组合。

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