移动通信节点之间的内容发现和传送的制作方法

文档序号:6701719阅读:172来源:国知局
专利名称:移动通信节点之间的内容发现和传送的制作方法
移动通信节点之间的内容发现和传送背景诸如车辆中的卫星导航设备或个人导航设备之类的移动通信节点,由步行者携带 的个人数字助理和由正在旅行的人用户携带的移动电话通常需要存储内容。例如,在卫星 导航设备的情况下,内容可以是地图、公路建设位置、安全相机位置、兴趣点位置、地标位置 和类似的信息。取决于移动通信节点的类型和涉及的应用,特定内容将变化。通常,由这样的移动通信节点所需的内容需要被更新并分发到节点本身。一个选 项是安排移动通信节点在每当需要内容时从网络基础结构下载内容,而并非将内容存储在 移动通信节点本地。然而,这样的按需系统产生非常大的通信成本。另一选项是将内容存储在移动通信设备本地。在移动设备具有足够的存储器资源 的情况下,这是切实可行的。然而,需要不断地更新信息以保持新鲜,还需要以对用户友好 的简单、可靠、快速且成本有效的方式将新内容传播到许多这样的移动通信设备。用于汽车中的卫星导航设备是已知的,它们提供蓝牙(商标)连通性,以允许设备 连接到也在车辆中的移动电话。以此方式,卫星导航设备能够通过使用移动电话的蜂窝网 络的数据服务连接到因特网来从因特网数据中心获取内容。然而,此方法依赖于蜂窝电话 网络来进行内容分发。不同的组织控制对蜂窝网络基础结构的访问,使得需要与那些不同 的组织协商才能进行访问。此外,还在不同的区域使用不同的蜂窝技术,使得可能需要对移 动设备进行硬件定制,以便用于那些不同的区域。还可能在网络的不同的地理区域实施不 同的收费计划,使得最终用户很可能会发现他们无意中比预期的增加了更大的账单。用于汽车上的卫星导航设备也是已知的,它们经由FM无线电信道或基于卫星的 分发接收从网络基础结构广播的内容。此方法在其中覆盖可用的地理区域起作用,虽然这 样的覆盖通常是受限的。基于FM的解决方案提供低比特率,并且限于可以获得许可证并安 装基础结构的城市和地区。基于卫星的解决方案可以支持高得多的比特率,但是要求昂贵 的基础结构投资。下面所描述的各实施例不限于解决移动通信节点之间的已知内容发现和传送过 程的任何或全部缺点的实现。概述下面呈现了本发明的简要概述,以便向读者提供基本理解。本概述不是本发明的 详尽概述,并且不标识本发明的关键/重要元素,也不描述本发明的范围。其唯一的目的是 以简化形式呈现此处所公开的一些概念,作为稍后呈现的更详细的描述的序言。常常需要移动通信节点之间的内容发现和内容传输,例如,以同步安装在车辆上 的卫星导航设备、步行者手持式个人数字助理及其他移动通信节点的地图、交通热点信息 等。在一实施例中,使用以特定方式设计并使用单个数据包发送的数据结构的内容发现过 程使得节点能标识要传输的文件,而同时使开销保持得较低。在一个实施例中,使用第一和 第二数据结构,每个数据结构都是由关于要同步的文件的子集的稍微不同的信息构成的。 在另一实施例中,使用单个基于树的数据结构。还描述了用于在两个移动通信节点之间传 输数据的过程。
4
通过结合附图参考以下详细描述,可更易于领会并更好地理解许多附带特征。附图描述根据附图阅读以下详细描述,将更好地理解本发明,在附图中

图1是通信网络的示意图;图2是通信节点处的方法的框图;图3是另一通信节点处的方法的框图;图4是作为动态高速缓存中的文件的内容发现过程的一部分的通信节点处的方 法的框图;图5是作为动态高速缓存中的文件的内容发现过程的另一部分的通信节点处的 方法的框图;图6是内容发现过程中的节点之间的消息交换的消息序列图表;图7是作为固定高速缓存中的文件的内容发现过程的一部分的方法的框图;图8是内容发现过程中的节点之间的消息交换的消息序列图表;图9是节点处用于内容传输的方法的框图;图10是另一节点处用于内容传输的方法的框图;图11示出了其中可以实现通信网络节点的实施例的示例性基于计算的设备。在各个附图中使用相同的附图标记来指代相同的部件。详细描述下面结合附图提供的详细描述旨在作为本发明示例的描述,并不旨在表示可以构 建或使用本发明示例的唯一形式。本描述阐述了本发明示例的功能,以及用于构建和操作 本发明示例的步骤的序列。然而,可以通过不同的示例来实现相同或等效功能和序列。虽然本示例此处被描述为和示为是在包括安装在车辆上的卫星导航设备的汽车 网络中实现的,但是,所描述的系统是作为示例而不是限制来提供的。如本领域技术人员将 理解的,本发明示例适用于应用在各种不同类型的具有移动通信网络节点的通信网络中。术语“数据包”被用来指代具有头部和有效负载的消息数据结构。头部被配置为 保留诸如地址细节之类的控制信息。有效负载被配置为保留一个或多个内容块。每一个块 都是诸如文件或其他信息项之类的内容片段的部分。每一个块都具有指示块将被配置为构 成内容片段的顺序的序列标识符。如上文所提及的,内容常常本地存储在移动通信设备中。然而,需要不断地更新信 息以使其保持新鲜,且还需要以对用户友好的简单、可靠、快速且成本有效的方式将新内容 散布到许多这样的移动通信设备。内容可以是任何类型的信息,并且可包括图像、列表、地 图、数值信息、文本信息,且还包括诸如操作系统更新之类的控制信息或用于控制移动通信 节点本身的其他指令或在移动通信节点上提供的任何软件应用程序。内容可以作为文件或 作为任何其他形式的信息来存储。此处所描述的方法适合用于对等或流行的内容分发系统中,由此移动通信节点能 够直接向彼此传输内容(即,无需经由诸如基站之类的静态网络基础结构节点来发送内 容)。许多现有的对等内容分发系统被设计成与固定通信节点一起使用,且不适合在通信节 点移动的情况下使用,或者效率非常低。当通信节点正在移动时,连接周期常常短暂,大约 几秒。例如,在节点与安装在机动车辆或其他车辆上的卫星导航设备形成整体或由步行者携带的情况下。除短暂之外,连接质量通常也较差,且现有的对等内容分发系统在设计时没 有考虑到这些。另一因素是,与固定网络基础结构相比,移动通信节点通常具有有限的处理 资源。这是现有的对等内容分发协议通常没有考虑的另一特征。图1是作为内容分发云100的成员的多个移动通信网络节点101的示意图。每一 个移动节点101可以是能够使用无线接口与一个或多个其他移动节点101进行通信的任何 合适的设备。即,移动节点可以彼此不同,并包括不同的硬件和软件应用程序,只要它们能 够使用任何合适的无线接口彼此进行通信。无线接口可以是诸如如IEEE 802. 11标准所定 义的WiFi之类的短距离无线接口或任何其他合适的无线接口。例如,也可以使用蓝牙(商 标)、IEEE 802. 15. 4/Zigbee。每一个移动节点101都具有用于存储从其他移动节点中的 一个或多个分发的内容的存储器。可以任选地提供静态信息站102。这是具有使用无线接 口与移动节点101进行通信的功能的静态或固定通信网络节点。对移动节点101和任何静 态信息站节点102中的全部设置了合适的通信协议软件以实现此处所描述的方法。可以使用静态信息站102来将内容播种到内容分发云100中。静态信息站可以访 问要通过云分发的全部内容或仅内容的子集。当移动节点101和静态信息站102靠近时, 移动节点被安排成与信息站102同步。例如,静态信息站可以是家庭网络的一部分。在该 情况下,移动通信节点101可以是,例如,PDA,而每当用户返回到他或她的家时,PDA可以被 安排成将内容与家庭网络中的静态信息站同步。替换地,可以在公共停车场提供静态信息 站,以使得安装在车辆上的移动节点能够在使用停车场的过程中将内容与该静态信息站同步ο在一个示例中,需要分发表示要分发的内容的一组文件,f。每一个文件具有任何 合适的类型的用密码签名的文件证书。例如,文件证书包括文件SHAl散列、版本号、文件的 文本名称以及指示一组文件的任选标志。如本领域内已知的,可以使用离线认证机构(CA) 来提供公钥基础结构(PKI)。例如,可以给每一个设备提供CA的公钥。每一个文件都可以 与被称为文件的所有者的单个内容提供商相关联,且一般而言,只有所有者才能够生成文 件的新版本。当更新文件时,要求新证书带有新文件散列和增大的版本号。一般而言,预期 版本号会单调地增大,如此,给定同一个文件的两个证书,任何设备都能够确定哪一个是最 新的。每一个文件都可以具有与它相关联的此处称为文件标识符和实例标识符的两个 文件标识符。文件标识符可以是例如与内容所有者的公钥串接在一起的文本文件名的 SHA-I散列。实例标识符与文件和版本相关联,且可以是文件证书的SHA-I散列。通过比较 文件标识符,可使节点能确定它们共同拥有的文件组,且通过比较实例标识符,可使节点能 检查它们是否具有相同的文件版本。每一个节点都具有用于进行内容分发的一组文件,并能够向该组中添加或从该组 中删除文件。对该组的文件的选择可以作为用户输入的结果,或者也可以是以任何合适的 方式控制的自动化过程。此组文件可以被视为存储在每一个节点上的动态高速缓存中。当两个节点101,102相遇时,这些节点上的通信协议允许这些节点同步,以使得 指定的文件的较新的版本在节点之间传输(如果可用的话)。可以使用文件证书和PKI基 础结构或以任何其他合适的方式来验证所传输的内容。如上文所提及的,在节点与安装在机动车辆或其他车辆中的卫星导航设备形成整
6体或由步行者携带的情况下,有特定的挑战。要求节点物理邻近以便传输内容。至少有两 个因素会影响此动作,支持内容分发系统的车辆的比率和所需的内容的流行度。同样,如果 一个节点不太可能不久就遇到带有相同文件的另一节点,则一部分所传输的文件的价值较 低。当两个节点101进入彼此的无线通信范围时,它们需要快速而有效地建立连接, 且还需要标识需要在节点101之间传输的一个或多个文件。可以使用用于在节点之间建立 连接的任何合适的方法,诸如802. 11协议系列的自组织(ad-hoc)模式。每一个节点都被 配置成每隔一定时间间隔广播信标消息。在优选实施例中,建立连接的过程基于如上文所提及的802. 11协议系列的自组 织(ad-hoc)模式。通常,每隔100毫秒,802. 11网络内的一个节点发出其当前SSID和 BSSID0当一个节点启动时,它进入安静状态,并进行预定义信道列表的主动扫描,以发现它 可以加入的网络的(SSID,BSSID)对。为进行主动扫描,节点在每一个信道上传送探针请 求。当一个节点接收到探针请求时,如果它相信它是被用信标指示的最后节点,则它用包含 SSID,BSSID对的探针响应作出响应。如果发现了被内容分发云使用的SSID,那么,该节点 进入已加入状态,并将此信息发信号通知到该节点所连接到的操作系统。节点保持在已加入状态,只要每隔指定的秒数都能接收到一个或多个信标。例如, 这可以每隔3秒或每隔1秒进行一次。如果没有接收到信标,那么,节点如上文所描述的使 用探针请求进行扫描。例如,每秒地发送探测请求,且如果在10秒内没有发现其他节点,则 该节点进入安静状态,并向操作系统发送已断开连接的信号。对于移动节点,如上文所提及的,用于连通性的时间窗口非常小。迅速地发现节点 以最大化此窗口十分重要。可以修改自组织(ad-hoc)模式802. 11过程的各种默认计时器 和参数,以缩短节点发现时间。此外,还可以修改自组织(ad-hoc)模式过程,以确保实现如 上文所描述的有源探测,而并非进行被动扫描。例如,当一个节点从已加入状态变换到安静 状态时,可以频繁地执行主动扫描,而没有任何睡眠过程。同样,节点可以保持在已加入状 态,只要每隔1秒地接收到一个或多个信标,如果这种情况未能发生,就会立即触发断开连 接。802. 11协议的自组织(ad-hoc)模式包括了信标抑制过程,此处认识到,该过程可 能会对通信范围内的节点的发现时间造成负面影响。当一个节点由于无意中听到针对其当 前SSID的另一信标而停止发送信标时,会发生信标抑制。如此,此处所描述的方法使用显 式的广告过程,藉此内容分发云中的每一个节点都反复地广播宣告其存在的广告。例如,每 隔k毫秒地广播广告,其中,k大约是100毫秒或任何其他合适的值。以此方式,在k毫秒 之后,内容分发云中的在彼此的通信范围内的所有节点都将发现彼此。如上文所提及的,移动节点可能只有十分短的机会窗口,约为几秒,用于交换内 容。因此,希望标识需要利用尽可能少的通信往返行程进行传输的文件。往返行程是将消 息从源节点发送到目的地节点以及源节点从目的地节点接收到应答所需的时间。该过程还 需要是稳健的,因为消息可能会由于移动节点之间的连接质量差而导致容易丢失。术语“源 节点”是指通信网络的一个节点,该节点被配置为将存储在该节点上的内容传送到通信网 络中的另一节点。术语“目的地节点”是指通信网络的一个节点,该节点被配置为接受从通 信网络中的另一节点传送的内容。通信网络的单个节点可以既作为源节点又作为目的地节点来操作。现在将参考图2的框图来描述诸如图1的内容分发云100之类的通信网络中的源 节点处的方法。此方法包括从源节点广播广告。在通信网络中的目的地节点接收这些广告, 并可以使用它们来标识需要利用很少的往返行程传输的文件(如下面参考图3所描述的)。 此外,两个节点还能够有效地确定它们共同拥有哪些文件以及哪一个节点具有最新的版本 (如下面参考图3所描述的)。这种类型的过程可以称为动态内容的内容发现过程。源节点访问(图2的框200)其存储了用于内容分发的文件的动态高速缓存。如上 文所提及的,每一个文件都具有名称、版本和公钥。对于每一个文件,源节点生成两个标识 符(框201)。基于文件的名称和公钥,为文件生成文件标识符。基于文件的名称、公钥和版 本,为文件生成实例标识符。源节点还根据文件和每一个文件的实例标识符生成全局标识 符(参见图2的框20 。即,每个动态高速缓存都只有一个全局标识符。源节点将全局标 识符以及关于其动态高速缓存中的文件的总数的信息嵌入到广告消息中(图2的框203)。 如上文所描述的,源节点反复地广播广告(框204)。目的地节点接收(图3的框300)广告,如在图2的框204广播的广告。目的地节 点任选地检查(框301)在其动态高速缓存中它是否具有比广告发送者更少的文件。它使 用接收到的广告中关于源节点动态高速缓存中的文件的数量的信息来执行此项动作。进行此任选检查是为了减少完成关于在两个节点之间共同拥有哪些文件以及哪 一个节点具有这些文件中的每一个文件的最新版本的协商所需的消息的数量。在其动态高 速缓存中具有最少数量的文件的节点开始该过程,以便减少消息的数量。该过程是可行的, 无需进行框301中的检查,在该情况下,广告不需要包括关于适当节点的动态高速缓存中 保留的文件的数量的信息。如果目的地节点的动态高速缓存中的文件比源节点的文件少,则目的地节点执行 如图3所示的过程。否则,目的地节点继续广播广告(框302)。为了判断是否要与源节点交换文件,目的地节点将其全局标识符与接收到的广告 中的全局标识符进行比较(框30 。如果发现了区别,那么,源节点和目的地节点具有不同 的内容文件。节点任选地被配置为存储源节点的地址以及它们完全与其交换了它们的动态 高速缓存内容的任何源节点的全局标识符(框304)。这防止对于已经被同步的节点不必要 地进行内容发现过程。接下来进行用于判定共同保留了哪些动态缓存文件以及哪个节点具有这些文件 的最新版本(框30幻。下面将参考图4和5比较详细地描述此过程。使用任何合适的内容 传输过程,例如,IP上的TCP或任何其他合适的基于数据包的内容传输过程,传输已标识的 文件(框306)。在同步之后,接收到的广告中的源节点的地址和全局标识符任选地存储在 目的地节点上(框307)。因为节点的动态高速缓存中的文件组可以是任意大的,并且因为在数据包的有效 负载中可以传输的数据量是有限的,因此,难以以有效的方式实现内容发现过程。为了寻 址,使用这些数据结构来在节点之间传输关于动态高速缓存中的文件的数据,且这些数据 结构被以特定方式设计,以便能简单而有效地实现内容发现过程。在特定示例中,数据结构基于Bloom(布隆)过滤器。然而,不一定要使用Bloom 过滤器。可以使用能以使得数据结构可被用于确定特定文件是否是一组已编码的文件的成员而不会提供错误否定的方式编码文件组成员资格的任何合适的数据结构。在B. Bloom所 著的 “Space/time trade-offs in hash coding with allowable errors (具有容许差错 的散列编码中的空间/时间权衡)” (ACM通信,13 (7) :422-426,1970)中详细描述了 Bloom 过滤器OBloom过滤器包括某一长度的比特阵列,其中,对于给定集的每一个项目,对于j 个散列函数的给定集合中的所有散列函数,haS~(item)th(散列J项目)th)比特被置位。 为了检查集合中是否存在一项目,检查每一个has、(item)th,且如果每一比特都被置位,那 么,bloom过滤器被视为包含该项目。Bloom过滤器不会产生错误否定,但是,它们可以产生 错误肯定。一般而言,在可以在给定长度的Bloom过滤器中编码的项目的数量与错误肯定 的概率之间有折衷。在某些实施例中,使用了完全的Bloom过滤器,其中,在Bloom过滤器中编码了动 态高速缓存中的所有文件的文件标识符。然而,在其他实施例中,使用部分Bloom过滤器, 其中只编码了文件标识符的子集。例如,头1000个或头500个文件标识符。在特定实施例中,提供了带有阵列长度1拟88比特的bloom过滤器,该过滤器被 安排成与数据包有效负载的大小相同。通过使用由Mitzenmacher (M. Mitzenmacher.压缩 bloom过滤器.IEEE/ACM关于联网的学报,10(5),2002)给出的启发式法,使用12个散列函 数,每部分Bloom过滤器地编码1000个文件标识符。这会产生0. 0巧4%的错误肯定概率。 然而,使用这些特定Bloom过滤器参数不是不可缺少的。现在将参考图4、5和6描述用于确定要在两个节点A和B之间传输的适当文件的 协商方案。图4和5的过程更详细地描述了在图3的框305中的高层所描述的过程。假设 节点B是在其动态高速缓存中有较少文件的节点(虽然如上文所提及的,这不是必需的)。节点B从节点A接收广告602。广告包括如上文所提及的全局标识符,并且任选地 包括关于A的动态高速缓存中的文件的数量的细节。通过使用此信息,B能够确定它在其 动态高速缓存中具有较少的文件,以及在A与B之间需要传输至少一个文件。节点B还生成第一数据结构,并将其发送到节点A。此第一数据结构由动态高速缓 存处指定的文件组的文件标识符构成(图4的框400)。指定的文件组可以是动态高速缓存 中的文件的子集,或者也可以是所有那些文件。上文参考图2描述了文件标识符。节点B还生成第二数据结构,并将其发送到节点A。此第二数据结构由相同的文件 的实例标识符构成(图4的框401)。上文参考图2描述了实例标识符。 节点B创建第一和第二数据结构并在消息603中将它们发送到节点A (参见图6)。 在一个示例中,此消息是包括两部分Bloom过滤器(都使用可用比特的一半)的全帧(或 数据包)。第一部分Bloom过滤器是从B的头500个本地文件的文件标识符生成的。第二 部分Bloom过滤器是从B的头500个本地文件的实例标识符生成的。
设备A从B接收第一数据结构和第二数据结构,并继续以进行图5的框501和502 所描述的检查。参考图5,节点A从节点B接收第一和第二数据结构(框500)。对于其动 态高速缓存中的每一个文件,节点A检查该文件的文件标识符是否被包括在第一数据结构 中(框501)。如果包括,则就第二数据结构中是否没有该文件的实例标识符进行检查(框 502)。如果如此,则选择该文件作为两个节点共享的,但是带有不同的版本文件(错误肯定 的情况除外)(框50 。在该情况下,向B发送包括所选文件的细节的数据结构(框504)。然后,A通过发送由A中的所有文件的文件标识符构成的全帧大小的部分bloom过滤器(消 息604)来对B作出响应,文件标识符被表示在从B接收到的第一数据结构中,但是,认为不 被表示在从B接收到的第二数据结构中。全帧大小的部分Bloom过滤器是由A发送到B的。B从A接收全帧大小的部分Bloom过滤器,并比较B上存在的文件的高速缓存,以 确定那些文件中的哪些被表示在全帧大小的部分Bloom过滤器中。对于每一个这样的文 件,B发送(60 包含B的文件版本以及A判定是向B推该文件还是从B拉该文件所依据 的其他文件信息的文件信息记录(消息606)。接着发生批量内容传输过程607,并且对于 下一已标识的文件608重复该过程。再次参考图4,节点B从节点A接收数据结构,该数据结构包括组中两个节点共享 但是带有不同的版本的所有已标识文件的细节(框40幻。对于每一个已标识文件,节点B 将文件信息记录发送到节点A (框40 ,并从A接收推或拉该文件的请求(框404)。然后, 进入内容传输过程,以传输文件(框40 ,并且对每一个已标识文件重复此过程,如图4所 示的。可以使用任何合适的内容传输过程。在图6中概述了图4和5的方法,图6表示了节点A 600,以及B 601和在这些节 点之间发送的消息。箭头的方向指示发送消息的方向,而页面上箭头的相对位置指示消息 在时间上的顺序。可以对方法进行各种修改。例如,部分Bloom过滤器可以由任何合适的预先指定 数目个随机或以任何其他合适的方式选择的本地文件构成。在另一示例中,代替使用两个 部分Bloom过滤器,可以使用单个Bloom过滤器来编码第一和第二数据结构两者的数据。 即,第一和第二数据结构可以是整体的。在特定示例中,动态高速缓存dd中的每一个文件i都具有文件名fnamei和16比 特版本Versioni以及与它相关联的其所有者的公钥pkit)通过使用SHA-I散列函数H,节点 为dd中的每一个文件i生成两个唯一性160比特标识符File Identifieri = H(concat (fnamei; Pki)) ( f 牛t示i = H(concat (
j, Pki)))以及 Instance Identifieri = H(concat (J^namei, pk" version》)(实例标识符 i =H(concat (文件名 ^pki,版本,)))0为dd中的按文件标识符排序的所有η个文件生成表示dd的全部内容的单个 160 比特散列密钥:Global Identifier = H (concat (InstanceIdentifier1, Instance Identifier^ …,Instance Identifier》)(全局标识符=H(concat (实例标识符!、实例 标识符2、…实例标识符 )))。在另一实施例中,可以使用散列链接生成全局标识符。全局 标识符是使用一致排序生成的,以使得带有相同文件和版本的两个节点能具有相同的全局 标识符。可以使用任何合适的排序,只要一致地使用即可。每一设备都在其周期性的广告 中嵌入其全局标识符。如此,任何设备都可以将其160比特全局标识符与另一设备(刚才 听到了其广告)的全局标识符进行比较,并快速地确定这些设备是否具有相同或不同的内 容文件。因为全局标识符只占用20个字节,因此,周期性的广告保持很小。通信网络中的每一个节点也可以在固定内容高速缓存中保持固定的内容文件。预 计固定内容在所有节点上存在,且固定内容的示例可以是操作系统文件。现在将参考图7描述固定内容发现的过程的示例。每一个节点都生成用于嵌入 在广告中的信息,并如现在所描述的,广播此广告。节点将其固定文件分组为2k个组(框700)。例如,对于每一个固定文件,取文件标识符的k比特前缀(如上文参考图2所描述 的)。此文件标识符可以是内容提供商公钥和文件的文本名称的散列。将具有相同前缀的 所有文件都被放进一个组中。可以选择k的值,以使得每一个组平均具有m个文件,例如, m = 16,k = 4。这会产生2k个组,表示为而到&k。如此使用文件标识符,以使得文件独立 于它们的版本被分组。对于每一个组,由节点上的处理器自动地生成组散列(框701)。对于每一个文件, 通过取文件证书的散列来创建实例标识符。然后,使用每一个组中的文件的实例标识符值 对这些文件进行排序,且通过散列链接,来生成组散列。即,递归地散列每一个实例标识符, 例如,H(IdFile4, H(IdFile3, H(IdFile2, H(IdFilel))))。其中,H 表示散列函数。然后,使用节点处的处理器自动地创建Merkle树(框702)。在R. Merkle的A digital signature based on a conventional encryption function (基于常规力口密函数 的数字签名)(在Crypto' 87,1987中)中详细描述了 Merkle树。Merkle树的每一行是 通过取来自前一行的对并将它们散列在一起来生成。组散列值是树的叶子,并根据它们的k 比特前缀被排序。对于空组,使用空值令牌。Merkle树的根是整个固定文件集的唯一性散 列,由所使用的k的值来参数化。任何节点都可以通过比较相同的k值的根散列来确定它 们的固定集是否相同。如果根散列不同,那么,节点具有不同的内容。在信标(框703)和 广播(框704)中包括了根散列和k的值。如果一节点检测到其根散列不同于另一节点的根散列,则它执行递归过程,以确 定在两个节点处的固定高速缓存中哪些文件不同。现在将参考图8对此进行描述。节点A 800广播由节点B 801接收的广告802。节点B 801处的处理器自动地检 查广告中的根散列是否不同于节点B的本地根散列(框803)。如果是,则节点B处的处理 器选择节点B的Merkle树的第j层,并在数据包804中将其发送到节点A。第j层是基于 被通信协议使用的数据包的有效负载大小来选择的。例如,如此选择Merkle树的第j层, 以使得2、20 <有效负载大小。在节点A处,处理器自动地检查805其本地Merkle树的第 j层中的哪些散列不同于在数据包804中接收到的那些散列。对于那些不同的散列,节点A 使用数据包806将其本地Merkle树的相关联子树层发送到节点B。然后,节点B检查其本 地Merkle树的该子树层中的哪些散列不同于在数据包806中接收到的那些散列。它基于 那些不同的散列来选择其本地Merkle树的相关联子树层,并使用数据包808将该子树层发 回到节点A。重复此过程,直到可以将可能不同的组的集合的全部散列放进一个数据包中。 在某些实施例中,将两个组放入一个数据包中,从而使所需的数据包的数量低一些,且这会 影响m的值的选择。这提供了有效地允许一个节点利用较低开销检测不同的文件的非常有效的算法。 例如,在使用2304字节的有效负载大小的一实现中,可以将115个散列装入单个数据包中。 在此情况下,当m= 16时,组具有57个以上的文件的可能性较低。(当m= 16时,单个组 具有56个条目或更多的概率是10_15。在此情况下,仅Merkle树的一个层需要交换,以便发 现不同的文件,其中,固定集中的文件的数量少于大致3650个。如此,该过程能够在几个消 息中迅速而有效地标识不同的文件。可以向固定文件高速缓存中添加文件并从其中删除文件。添加文件会影响单个 组,并且该文件被映射到单个组。可以对已删除的文件保持永久性记录。对文件进行分组可以在添加或删除一个或多个文件的情况下有效地确定需要哪些组。例如,这样进行分组, 以使得当添加一个文件时,只影响单个组。然后,如果添加两个文件,每一个文件被添加在 不同的组中,则可以有效地确定哪两个组已被影响。在发现了第一不同的文件之后,不需要 重复内容发现过程。—旦使用上文所描述的方法检测到固定文件高速缓存中的不同的文件,就可以使 用任何合适的内容传输过程来在两个节点之间传输该文件。例如,可以使用IP上的TCP,或 任何其他合适的基于数据包的内容传输过程。在某些实施例中,现在将参考图9和10描述与此处所描述的方法一起使用的内容 传输过程。此内容传输过程利用每一个节点预先知道要传输的文件的大小的能力。例如, 在图6的过程中,文件大小信息对于当前具有该文件的节点是已知的,并该信息作为文件 信息记录的一部分被发送到其他节点(图6的消息60 。在图8的过程中,将接收已标识 文件的最新版本的节点要么从其他节点请求文件大小信息,要么向它自动地发送该信息。图9是通信网络中的源节点处的方法的框图。源节点可以是图1的通信节点中的 任一个,且它也可以作为目的地节点来操作。源节点具有访问(框901)要传输到目的地节点的文件或其他内容片段的输入。 源节点包括任何合适的类型的处理器,该处理器被安排成将文件或其他内容片段拆分为块 (参见框90 ,其中,一个块具有预先指定的大小。处理器为每一个块创建具有一个比特的 发送矢量(参见框90 ,且此矢量被初始化,例如,以使得每个比特都具有零值。当初始化了发送矢量时,该矢量中的所有比特都被视为被复位。然后,发生将块发 送到目的地节点的过程(参见图9的框904)。对于发送矢量中的任何复位的比特,处理器 被配置为将与该复位的比特相对应的块发送到目的地节点。对于±夬,重复此过程,且当发送 矢量中的所有比特都被置位时结束(框90幻。在此过程中,如果从目的地节点接收到接收 矢量(框906),则使用该接收矢量代替发送矢量。在下文中参考图10更详细地描述了接 收矢量。当发送块时,它们可以构成例如数据包,且一个或多个块构成一个数据包的有效负 载,并且数据包具有包括诸如源节点和目的地节点的细节之类的控制信息的头部。图10是目的地节点处的方法的框图。目的地节点访问关于要传输的数据块的数 量的信息(图10的框1001)。以任何合适的方式获取此信息。例如,源节点和目的地节点之 间的连接可能已经建立,且源节点可以将此信息提供给目的地节点。目的地节点包括处理 器,该处理器被安排成为要传输的每一个块创建具有一个比特的接收矢量(图10的1002)。 初始化接收矢量,以便每一个比特都被视为被复位。如上文所提及的,源节点和目的地节点之间的连接已经建立,且目的地节点针对 数据包监视该连接。如果接收到块,则目的地节点上的处理器被安排成置位接收矢量中的 相关联比特,并监视该矢量中的置位的比特的数量(图10的框1003)。如果置位比特的数量已增大了阈值比例(图10的框1006),那么,目的地节点将 其接收矢量发送给源节点(图10的框1007)。阈值比例可以是50%或任何其他合适的阈 值。而且,处理器任选地被安排成如果在目的地节点上接收到重复的块,则将接收矢量发送 到源节点(图10的框1004和1007)。当接收矢量中的所有比特都被置位时,过程结束(框 1005)。通过使用如此处所描述的接收矢量,需要发送的确认数据包的数量是较低的。这里的确认数据包是那些发送接收矢量的数据包。这就提高了效率并减轻对通信网络资源的 压力。例如,目的地节点不需要每η个数据包就发送接收矢量的副本。它可以基于接收到的 数据包的函数来发送其接收比特矢量的副本。例如,每当目的地节点发送接收矢量时,它都 能够记录置位的比特的数量。当置位比特的数量增大50% (或其他合适的阈值比例)时, 这会触发对接收矢量的发送。而且,如果目的地节点获得预定义的数量的重复的数据包,例 如,一个,则它会触发对接收矢量的发送。以此方式,协议生成包含接收矢量信息的0 (Iogk) 个数据包(其中,k是传输文件所需的数据包的数量)。例如,要在带有30%的丢失率的链 路上传输1MB文件,所发送的接收矢量数据包的数量少于完成传输所需的数据包的总数的 1%。此外,在目的地节点处接收到的重复的数据包的数量将接近于零。而且,如果文件传 输被中断,且需要利用相同或者不同的通信网络节点来恢复,则目的地节点能够提供接收 矢量,且传输过程从那一点开始。还要注意,如果源节点和目的地节点之间的连接具有高丢失率,并且这会导致包 含接收矢量的数据包被丢弃,那么,恢复是快速的。这是因为包含接收矢量的另一数据包将 立即被发送。结果,该过程是稳健的。接收矢量通常是能够放入单个数据包中的大小。在一个非常大的文件要从源节点 传输到目的地节点的情况下,不可能将接收矢量放入单个数据包中。在此情况下,源节点可 以将文件分解或拆分为一个或多个部分,并使用此处所描述的过程来分开地发送这些部分 中的每一部分。一旦接收到所有部分,目的地节点就可以重构原始较大的文件。在现在将参考图5所描述的另一实施例中,源节点和目的地节点是具有用于连接 彼此的无线网络接口控制器的移动通信设备。节点具有有限的计算能力。源节点和目的地 节点可以使用基于IEEE 802. 11系列标准中所定义的那些通信协议的通信协议以自组织 (ad hoc)模式彼此直接接口(如图5中的箭头503所表示的)。在此实施例中,源节点和 目的地节点之间的通信链路是短暂的,并是有损耗的。例如,源节点和目的地节点与行驶中 的汽车500中的卫星导航设备501集成在一起。例如,在此实施例中,节点包括带有集成的无线网络接口控制器的卫星导航设备。 节点被安排成使用如上文所描述的图2到6的方法来执行每一个节点处的动态高速缓存中 的文件的内容发现。节点被安排成使用诸如IP上的TCP之类的任何合适的协议或使用上 文参考图9和10所描述的过程来执行内容传输。在使用上文参考图9和10所描述的过程 的情况下,不需要使用IP。替代地,可以使用结合到所有数据包中的头部里的节点的MAC地 址来标识节点。以此方式,不需要检测和管理重复的IP地址或使用地址解析协议(ARP)。 而且,还可以利用无线网络接口控制器可以支持的全帧大小。这会减少每个数据包的开销, 并且使得能实现更高的实际吞吐量(goodput)。在评估中,在包括两辆汽车的小型车辆试验台上进行许多实验。对于所有实验,在 每一辆汽车中安装了带有Netgear (商标)WAG511 PCMCIA卡(该卡使用Atheros (商标) ar5212芯片集)的运行Windows XP SP2的膝上型计算机。计算802. 11天线的两种可能 的配置在基本的情况下,在后置物架上放置了膝上型计算机,与将安装便携式卫星导航设 备的高度一致。在第二种情况下,通过在每一小汽车的顶棚安装膝上型计算机来将天线放 置在小汽车外部。为了最小化来自部署在家庭的其他无线网络的干扰,使用在5. 4GHz频带 上操作的802. Ila0另外,两个膝上型计算机都配备有GPS接收器,以记录它们的相应的位置和速度。在实验中,每台膝上型计算机都被配置成使用经修改以确保快速的链路层发现 的Atheros (商标)Reference (参考)驱动程序。对于每一个实验,两台膝上型计算机在它 们的dd中都具有相同50个文件条目。其中一台膝上型计算机具有每一文件的稍晚的版本, 且每一文件的大小都是10MB。当两个设备形成连接时,它们使用前面所描述的内容发现算 法来确定要传输的文件。为了传输文件,考虑了两个配置TCP和Broadside(侧面)。TCP 在此配置中,使用了标准的未经修改的Windows XP SP2 TCP/IP堆栈,且使用配置有1500 字节的标准MTU的TCP来传输文件。为了动态地消除将IP地址指派到膝上型计算机的开 销,我们向每一台膝上型计算机静态地配置了非冲突的IP地址。Broadside 在此配置中, TCP/IP堆栈被禁用,使用参考图9和10所描述的数据传输协议。这意味着,不需要向每一 台膝上型计算机指派IP地址,并且数据传输被配置成使用2304字节的最大帧大小。实验 是在英国剑桥的街道进行的。为了增大结果中的置信度,所有实验都是在同一天进行的,每 一个实验紧接着进行5次,从而试图确保所有实验都是以相同车辆速度进行的。为了取得 可重复性,在我们的实验中只使用了一辆行驶的小汽车,而第二辆汽车停在路边。行驶的小 汽车全程作为数据源,向静止的小汽车传输。对于每一个实验,进行了 5遍。每一遍的持续 时间都不同,因此对于每一遍,通过膝上型计算机之间的连通性的持续期来规范化已实现 的实际吞吐量,以提供以每秒字节数计的实际吞吐量。基于此实际吞吐量度量,对该5遍进 行排序,且选择达成了中值的那一遍,以在随后进行交叉比较。位置接近于剑桥市中心,但 是,由于地方交通限制通行方案,只有适量的过境交通。该地区具有很密集的典型的十九世 纪欧洲城镇中心开发的建筑物,并有典型的狭窄马路,马路两侧排列着两层带阳台的房屋。 沿着马路的一侧或两侧停满了一排汽车,没有足够的空间让两辆汽车在相反的方向通过, 因此实施了单行规则,并限速。这就在最接近点将我们的小汽车的速度限制在10和15英 里/小时之间。结果表明,TCP实现差不多1兆字节/秒的合理的实际吞吐量,对于内部和 外部天线都是如此。Broadside使用内部天线比TCP好1. 61倍,而在使用外部天线的情况 下,则好1. 85倍。在下表中示出了连接时间和实际吞吐量的字节总数。
权利要求
1.一种在具有存储了需要与通信网络(100)中的至少一个其他节点(101)同步的多个 文件的存储器(1101)的通信网络节点(101)处的方法,包括自动地生成包括第一数据结构的数据包(603)并将其发送G00)到其他节点,该第一 数据结构是使用所述多个文件的文件名和公钥来形成的;自动地生成使用所述多个文件的文件名、公钥和版本号形成的第二数据结构,并将其 发送(401)到其他节点;从所述其他节点接收(40 包括具有所述多个文件中存在于在该其他节点处的存储 器中的带有不同的版本号的任何已标识文件的细节的数据结构的数据包。
2.如权利要求1所述的方法,其特征在于,所述第一和第二数据结构两者都在所述数 据包中发送。
3.如权利要求1或2所述的方法,其特征在于,所述数据结构基于Bloom过滤器。
4.如任一项在前权利要求所述的方法,其特征在于,所述第一和第二数据结构是使用 仅关于所述多个文件的一部分的信息来形成的。
5.如任一项在前权利要求所述的方法,其特征在于,还包括执行内容传送过程(607) 以使已标识文件中的每一个与其他节点同步。
6.根据任一项在前权利要求所述的方法,其特征在于,包括从其他节点接收广告 (300),所述广告是包括全局标识符的数据包,以及基于所述全局标识符与所述节点的全局 标识符的比较判断是否进行(301)对所述数据结构的发送。
7.如权利要求6所述的方法,其特征在于,每个全局标识符是使用所述存储器中的每 个文件的文件标识符和实例标识符来形成的,所述文件标识符是使用每个文件的文件名和 公钥形成的,而所述实例标识符是使用每个文件的文件名、公钥和版本号形成的。
8.一种在具有存储了需要与通信网络中的至少一个其他节点同步的多个文件的存储 器(1101)的通信网络节点(101)处的方法,包括将所述文件存储在所述节点处的多个组(700)中;使用所述节点处的处理器(1106)来为每个组生成组散列;使用所述处理器来利用所述组散列值来创建基于树的数据结构并将其存储在所述节 点处的存储器中;创建(703)广告,所述广告是包括关于组的数量的信息和关于所述数据结构的信息的 数据包;在所述通信网络上广播(704)所述广告。
9.如权利要求8所述的方法,其特征在于,所述多个文件被存储在每个通信网络节点 处的存储器中,且那些文件中的至少一些具有在所述节点之间不同的版本。
10.如权利要求8或9所述的方法,其特征在于,所述文件是独立于它们的版本来分组的。
11.如权利要求8到10中的任一项所述的方法,其特征在于,所述组散列是通过递归地 散列每个文件的标识符来形成的,其中每个文件标识符是使用该文件的所述文件名、公钥 和版本号来形成的。
12.—种移动通信网络节点(101),包括:存储需要与通信网络中的至少一个其他移动节点同步的多个文件的存储器(1101);被布置成与所述通信网络中的至少一个其他节点建立无线通信链路的无线接口 (1105),该其他节点还具有存储需要同步的多个文件的存储器;被布置成生成包括数据结构的数据包并通过所述无线通信链路将那些数据包发送到 其他节点的处理器;以及,由此所述处理器被布置成生成所述数据结构,以使得在少于四十 秒的时间内建立无线通信链路的情况下,该时间期间的同步量大约是每秒钟1兆字节。
13.如权利要求12所述的节点,其特征在于,所述处理器被布置成生成包括第一数据 结构的数据包并将其发送到其他节点,该第一数据结构是使用所述多个文件的文件名和公 钥来形成的。
14.如权利要求13所述的节点,其特征在于,所述处理器还被布置成自动地生成使用 所述多个文件的文件名、公钥和版本号形成的第二数据结构,并将其发送到其他节点。
15.如权利要求14所述的节点,其特征在于,所述处理器被布置成在单个数据包中将 所述第一和第二数据结构发送到其他节点。
全文摘要
常常要求移动通信节点之间的内容发现和内容传输,例如,以同步安装在车辆上的卫星导航设备、步行者手持式个人数字助理及其他移动通信节点的地图,交通热点信息。在一实施例中,使用以特定方式设计的并使用单个数据包发送的数据结构的内容发现过程使得节点能标识要传输的文件,而同时使开销保持得较低。在一实施例中,使用第一和第二数据结构,每个数据结构都是由关于要同步的文件的子集的稍微不同的信息构成的。在另一实施例中,使用单个基于树的数据结构。还描述了在两个移动通信节点之间传输数据的过程。
文档编号G08G1/096GK102113352SQ200980131158
公开日2011年6月29日 申请日期2009年7月20日 优先权日2008年7月31日
发明者A·罗姆斯特姆, G·F·奥谢, T·C·策恩 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1