使用计算上下文的网络接口路由的制作方法

文档序号:7675747阅读:196来源:国知局
专利名称:使用计算上下文的网络接口路由的制作方法
使用计算上下文的网络接口路由
背景技术
多穴(multihomed)主机设备,S卩,诸如移动计算设备等具有不止一个网 络连接的设备,不具备隐式地和动态地选择用于特定远程数据交换的网络链路 的能力或当计算环境的上下文满足特定条件时选择网络链路能力。 一般地,经 由在偏好选择中由用户设置的默认连接来路由所有话务,或者由在其他连接不 可用时可用的特定网络连接来发送所有话务。不幸的是,默认网络连接可能并 非是对可用网络资源的最佳利用或可能不是在特定时间用户最感兴趣的。例 如,在可用网络和对较低带宽连接的默认选择之间可能存在的差别很大的数据 传输速率可以不恰当地增加下载时间或占用处理器容量。此外,不同的连接选 项可具有不同的使用费用并且默认的网络连接在当时可能并不是对用户最有 价值的。
概述
在存在多个活动网络连接的情况下使用计算机操作环境的计算上下文的 知识,例如对进程线程的知晓,来路由IP话务。可以将另外的应用程序协议 接口 (API)添加到操作系统的网络层以将特定计算上下文映射到特定网络接 口 。具有与通过通信网络请求数据传输的映射的计算上下文相关联的标识参数 的任何进程都绑定至先前与该计算上下文相关联的网络接口而不是另外可能 是默认的替换网络接口。此外,可以使得父进程线程所创建的进程线程继承父 线程的计算上下文以将话务分配给相同的网络接口。该路由框架可具有关于多 穴主机设备,例如移动计算设备的特定应用程序。
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一 些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也 不旨在用于限制所要求保护的主题的范围。所要求保护主题的其他特征、细节、 功能、以及优点将从如附图中进一步示出的以及在所附权利要求中所定义的以 下更详细描写的各实施例和实现的详细描述中变得显而易见。附图简述


图1是基于此处所描述的计算上下文框架来使用路由功能的计算机网络 的示意图。
图2是此处所描述的网络接口路由框架的一个实现的示意图。 图3是此处所描述的网络接口路由框架的另一个实现的示意图。 图4是用于基于计算上下文将网络接口分配给应用程序线程的过程的示 意图。
图5是用于将网络接口从一个应用程序线程分配给另一个应用程序线程 的过程的示意图。
图6是可在计算上下文路由系统的实现中使用的通用移动计算设备的示意图。
图7是可在计算上下文路由系统的实现中使用的通用计算机系统的示意图。
发明详述
在现代计算设备中,并且尤其对于移动计算设备,计算设备同时利用多个 网络接口是常见的。例如,"智能电话"可以支持用于蓝牙(一种短程无线连
接标准)、无线局域网(WLAN或Wi-Fi)、以及通用分组无线电业务(GPRS) /通用移动电信系统(UMTS)(用于通过无线电频谱的数据发送和接收的分组 交换协议)的通信接口。虽然GPRS几乎始终是可用的,但是Wi-Fi连接通常 只在移动设备在例如家庭无线网络、工作场所无线网络、或者公共或半公共无 线网络(例如,在咖啡店或商务顾客酒店可用)的Wi-Fi网络的范围之内时可 用。这些网络接口可具有成本、安全性、以及带宽方面的非常不同的特性。
因为通过Wi-Fi连接传输数据的成本相比于通过GPRS连接传输的每个数 据单元(例如,每兆字节(MB))的成本一般是可忽略的,所以期望只要可 能的时候就使用Wi-Fi接口 。对于一般相比于GPRS连接在Wi-Fi网络上要大 得多的可用带宽,该相同的偏好可能也是如此。
然而,存在为何对应用程序而言在不止一个网络可用的情况下优选地选择 更慢或更昂贵的网络连接是较佳的多个理由。例如,某些网络可以提供对只在该网络上可用的特定服务器和服务的访问。取决于在计算设备上运行的用户或 应用程序的特定需求,不同的网络连接可以是到达它们的最佳连接。在这些情 况下,基于当前计算上下文选择用于特定通讯任务的网络接口链路可以是有价 值的。当此处使用数据"网络链路"或"链路"时,它一般指的是通过特定硬件 通信设备或"网络接口"直接连接的对等体之间的连接。例如,连接到相同的 以太网段的所有计算机(例如,交换器或集线器)在相同的网络链路上。在另 一个示例中,用Wi-Fi卡连接到相同无线接入点的所有设备使用相同的网络链 路。在又一个示例中,当用户通过该用户的计算机上的调制解调器使用拨号连 接来到达因特网服务供应商(ISP)时,确切地存在连接到同一网络链路(即, 在该用户计算机上的调制解调器)的两个节点(该用户的计算机以及ISP的调 制解调器)。节点使用路由协议来判定使用哪条网络链路来发送针对下一个目 的地节点的分组(即,节点判定将使用哪条网络链路来"更靠近"目的地节点)。当此处使用术语"网络连接"时,它一般用于描述在不必连接到同一网络 链路的两个节点之间的逻辑连接。这对于因特网是常见情况。网络连接意味着 使用标准网际协议(IP)来在节点之间交换数据。当此处使用术语"网络套接字"或"套接字"时,它一般用于描述网络连 接的端点。为了设置网络连接,两个节点都创建网络套接字,将套接字相关联(即,"连接")以建立网络连接,并使用IP协议来通过该连接交换数据。 因此,在该上下文中,在网络链路只提供对直接与特定硬件通信设备(g卩,网 络接口)相连接的节点的访问,而网络连接和相关联的网络套接字允许对通过 遍历经由多个网络链路相连接的一组节点可到达的节点的访问的意义上,网络 链路可被认为是比网络套接字或网络连接"低级"。"计算上下文"意味着可以使用由特定应用程序或计算设备的用户具体标 识的偏好来动态地做出对网络链路接口的选择而不是仅仅选择活动的默认网 络链路或利用现存的路由表。在应用程序编程的说法中,网络路由选择因此将 基于程序执行的特定"线程"从而做出。类似于多条线交织在一起以形成一片 纤维的方式,线程是程序将其自身分成两个或多个同时运行的任务的方式。可 以在许多计算机系统上并行执行多个线程。该多线程化一般通过时间片(其中单个处理器在不同的线程之间切换)或通过多处理(其中线程在各独立的处理 器上执行)来发生。此外,处理器可以同时处理来自同时执行的多个应用程序 的线程。图1提供了可如何开发应用程序以实现基于计算上下文(即,执行的特定 线程)的网络接口的选择的示例。在该示例中,开发"新闻阅读器"应用程序 104以供在与分布式网络计算系统100 (例如,因特网)相连接的移动计算设备102上使用。移动设备102可配备若干不同的通信网络接口。例如,移动设 备102可具有用于与诸如无线头戴式耳机等外围设备进行通信或用于与台式计 算机进行同步的短程蓝牙网络接口 112。该移动设备102也可具有用于当在无 线接入点的范围中时进行高速数据传输的Wi-Fi网络接口 114。该移动设备102 还可具有用于在可能与该移动设备102的电话组件的语音通信服务的覆盖范围 同延的大得多的地理区域上的数据通信的GPRS网络接口 116。新闻阅读器应用程序104可被设计为每天早晨更新可用新闻项列表并且 当Wi-Fi连接可用时或如果用户显式地指示花费额外的钱以通过GPRS来下载 文章的意愿时下载完整的新闻文章。从其下载新闻订阅源和文章的网络服务器 118上的库120可由该移动设备的Wi-Fi网络接口或GPRS网络接口来访问。 然而,控制库120的软件是由第三方来编写的,并且新闻阅读器应用程序104 的开发者不可访问控制库120或网络服务器118以指示新闻订阅源或文章应通 过哪个网络来传送的源代码。为了实现基于上下文的正确的网络选择,新闻阅读器应用程序104的开发 者可在新闻阅读器应用程序104中编写独立可执行的线程以实现本程序的期望 目标。例如,可以编写第一程序性线程106以周期性地下载新闻订阅源。在该 示例中,用户可以设置新闻阅读器应用程序104中指示新闻订阅源下载应在每 天早晨执行的时间组件。此外,新闻阅读器应用程序104的默认网络可被设置 为Wi-Fi以利用更低的成本以及更快的下载速度。新闻阅读器应用程序104可 被设计为监视可用的联网接口并且只在该设备在用户设置的时间窗内通过 Wi-Fi来连接时触发与第三方库130的实际连接。在第二示例性程序性线程108中,新闻阅读器应用程序104的开发者可以 将默认设为一旦可以从库120获得新闻文章并且仅当在Wi-Fi连接114的范围8中时作为后台操作来下载实际的新闻文章。同样,在第三示例性程序性线程110 中,新闻应用程序104可被配置为只下载用户所选的新闻文章。对于许多移动设备操作系统(例如,WINDOWS CE),存在对IP联网层 的扩展,该扩展允许传输层驱动程序显式地将套接字(即,网络连接的逻辑抽 象)绑定或分配到物理网络接口 (例如,Wi-Fi、 GPRS/UMTS、 LAN、蓝牙), 因此显式地通过该绑定接口发送由该套接字生成的所有话务。该操作系统功能 可被应用程序的开发者用于具有多个网络接口选项的移动设备或其他计算设 备。然而,这些套接字绑定功能可能不是例如图1的新闻文章库120等可用于 为移动设备上的应用程序的通信需求服务的第三方应用程序所期望的。即使具有多个活动网络接口以及将套接字绑定到网络接口的能力,没有某些另外的功能,也不能够实现上述新闻阅读器应用程序104。这是因为开发者 不具有对第三方库的控制(用于传递选择特定接口的参数),也不能够将联网 层配置为自动地将话务从主存库120的网络服务器118路由到特定网络接口。 此外,网络协议将使用最初由设备或特定应用程序为通信话务所选的默认网络 来路由由特定应用程序生成的或用于该特定应用程序的所有分组话务。新闻阅读器应用程序104的开发者的目标是使由第一线程106以及第二线 程108生成的所有网络话务都通过Wi-Fi网络路由。另外,开发者想让新闻阅 读器应用程序104决定用于根据第三线程IIO显式地选择的新闻文章的路由。 新闻阅读器应用程序应能够动态地选择话务应通过Wi-Fi连接还是GPRS连 接。为了实现这些目标,可以引入映射表来将计算上下文(例如,各线程或其 他参数)映射到操作系统的联网层中的接口。该映射表包含对应于用于应通过 其路由外出话务的每个受监视的计算上下文(例如,程序线程)的物理网络接 口的标识符。联网层中的路由代码甚至在到接口的连接"丢失"(例如,因为 所配置的接口不可用所以丢弃分组)的情况下也遵循所选的物理网络接口。作为默认,先前的配置(例如,父线程的配置)是固有的或是由运行的计 算上下文所创建的任何新的计算上下文假设的,而不是事先需要绑定到对应于 用于网络连通性的每个线程的特定套接字。因此,新程序性线程默认地继承其 父线程的偏好。以此方式,对于每个进程情形,只有第一个(主)线程必须被分配给物理网络接口,而随后创建的线程自动被分配给相同的接口,除非以其 他方式显式地配置。有了该框架,开发者因此能够实现新闻阅读器应用程序以按照上下文来选 择网络接口。当实例化该应用程序时,第一线程106可被显式地绑定到Wi-Fi 接口。即使无线链路还未被分配IP地址,这在移动操作系统的联网层中也是 可能的。该显式绑定保证新闻阅读器应用程序104无论在什么情况下都不会通 过选择更昂贵的网络连接或默认当前正由该移动设备用于其他话务的连接而 为用户产生不需要的成本。一旦在移动设备102与分发第三方库120的网络服务器118之间启动 Wi-Fi连接,应用程序就可产生第一线程106作为后台线程(即,新的计算上 下文)以周期性地检索可用新闻项的列表。在该示例中,该新线程继承主线程 的联网接口准则。因此,应用程序不需要任何额外的工作来确保正确地路由IP 分组。注意,不需要重写现存的使用网络的组件以从该解决方案中获益,因为 调用另一个组件的父线程的上下文网络特性可以在实例化时被简单地附着到 子线程组件。一旦新的新闻项列表可用,第一线程106就产生第二线程108以处理待决 新闻消息的排队列表。再一次,对于新闻阅读器应用程序104没有额外的工作, 因为来自第一线程106的设置被传播至第二线程108的新计算上下文。当用户在应用程序的用户界面中点击第二线程108还未下载的新闻项时, 新闻阅读器应用程序104询问用户是否愿意为通过GPRS的即时传输支付额外 的费用。如果用户接受这些费用,则新闻阅读器应用程序104创建第三线程 110,但然后修改对应于该第三线程110的联网接口绑定以将其锁定到GPRS 连接。以上对于图1的示例性场景所述的网络接口的上下文选择和绑定的这一 概念的实现可被分成两个问题。第一个问题涉及如何将特定联网连接始发的所 有话务路由到指定的联网接口。第二个问题涉及如何将从计算上下文(例如, 特定程序线程)中创建的联网连接绑定到特定联网接口。对于第一个问题的一个可能的解决方案使用如在图2所描绘的实现200 中所表示的一个或多个分层协议驱动程序210、 212。可由应用程序访问的应用程序协议接口 (API) 204与操作系统的联网功能接口。具体地,可以调用被
大多数因特网和网络应用程序用于处理网络连接的套接字API 204,例如, Windows套接字API WinSock。在取决于被假定为支持套接字到物理接口的显 式绑定的底层基础协议216时,分层协议驱动程序210、 212将各线程映射到 物理网络接口。
分层协议驱动程序210、 212具有两个责任。由第一分层协议210表示的 第一责任是向应用程序展示接口以操控映射表从计算上下文(例如,特定程序 线程)转换到联网接口。使用该层,应用程序能够修改其绑定。
由第二分层协议212表示的第二责任是通过连接套接字的传输层服务供 应商接口 (SPI) 206来截取调用。第二分层协议212监视对特定网络接口的显 式绑定请求以使得分层协议驱动程序210、 212不干扰故意绑定的套接字。当 标识未绑定的套接字时,第二分层协议驱动程序212显式地将该套接字绑定到 由映射表基于计算上下文(如果设置了这些上下文属性)指示的网络接口,并 且修改该套接字的属性以经由所选物理网络接口来路由始发分组。
因此,对于没有显式网络绑定的套接字,如在套接字API与第一分层协议 210之间的通信箭头208所指示的,分层协议驱动程序200应用与当前计算上 下文(例如,线程)相关联的绑定。然而,如在套接字API204与基础协议216 之间的通信箭头214所指示的,分层协议驱动程序200并不干扰对网络连接的 现存的显式套接字绑定。
回想将从计算上下文中创建的联网套接字绑定到特定联网接口的第二个 问题。如图3所描绘的,用于路由话务的另一个实现通过直接将应用专用路由 属性添加到现存的路由表308来修改路由子系统300来解决该问题。路由子系 统300可具有允许操控联网协议层306以基于属于特定进程的任何计算上下文 (例如,线程)来路由的附加上下文映射接口 310。
当执行"connect()"(连接)操作或由程序员使用"bind()"(绑定)操作来显 式地连接时,套接字一般自动地或隐式地被连接到联网接口。该任务是使隐式 绑定可通过在映射或路由表308中将计算上下文与联网接口相关联来配置,并 且使联网层306的隐式绑定代码遵循该路由表308。通常将联网套接字连接到 联网接口316、 318、 320、 322的各操作由上下文映射接口 310截取,从而使应用程序开发者能够创建从计算上下文(例如,线程标识)到特定联网接口 316、
318、 320、 322的映射制度。
图3部分地示出了一般如何处理由来自单个进程的不同线程生成的联网 话务。两个示例性应用程序302、304被描绘为各自并行地执行四个线程302a-d、 304a-d。在每个线程的生存期期间,生成需要被传送至远程站点的话务。线程 302b、 302d、 304a、 304b、 304c不包含上下文信息,而线程302a、 302c、 304d 包括上下文信息。此外,线程302a的上下文指示由该进程产生的信息应通过 GPRS接口 316而非另一个接口来发送。这在图3中由在线程302a与联网层 306之间的具有单个点的虚线来指示。线程302a的上下文指示由该进程产生的 信息应通过GPRS接口 316而非另一个接口来发送。这在图3中由在线程302c、 304d与联网层306之间的具有两个点的虚线来指示。
如果没有上下文映射,则所有通信量一般将使用联网层306的现存的接口 来通过联网层306 (例如,创建套接字、建立到远程站点的连接、以及最终通 过该连接来发送数据)。该话务由从线程302b、 302d、 304a、 304b、 304c到 联网层306的实线箭头以及从联网层306到网络接口 316、 318、 320、 322中 的每一个的实线箭头来表示。由联网层306所选择的特定接口仅仅是当时的默 认接口,例如,在设备范围中或连接到该设备的或被用户选为默认的无论哪个 接口。在联网层306中发生了什么对于应用程序302、 304是透明的,但最终 将每一信息片段都传递至物理网络接口 316、 318、 320、 322以供发送。
普通的接口配置导致路由表308具有对应于每个活动联网接口 316、 318、 320、 322的默认路由。注意,对应于每个网络接口 316、 318、 320、 322的完 整的IP参数集在初始化了网络接口之后可用。该信息是IP地址、网络掩码、 以及网络接口的默认网关的形式,.并且由本地机器的管理员来硬编码或者在配 置期间从由自动分配配置的动态主机配置协议(DHCP)服务器返回的数据中 设置。
然而,在路由表中不存在实际上将数据从套接字绑定到特定网络接口的标 准化。在每个网络接口存在一个默认路由入口的情况下,能够以多种方式处理 不以直接连接的网络为目标的外出话务(即,由默认路由表处理的话务)。这 些话务可被发送至套接字所绑定到的网络接口上的网关;发送至默认路由所附连的网络接口上的网关;或被发送至可用网络接口中的任一个,这实际上经常 切换实际所使用的网关(例如,WINDOWS 2000)。
然而,如在对于图l所描述的新闻阅读器应用程序的示例中,随着移动设 备的出现,标准联网协议可能不够灵活。某些应用程序可能出于包括性能、安 全性和可用性的目的而需要对通过其应路由信息的联网接口的更精细粒度的 控制。因此,在图3中,已通过将附加上下文映射接口 310添加到联网层306 而使路由表308可被访问。该上下文映射接口 310允许程序员设置从例如基于 线程标识的特定线程到基于接口标识的物理网络接口的路由映射。
如图3所示,第一应用程序302和第二应用程序304中的每一个都向上下 文映射接口 310提供上下文映射信息。上下文映射接口 310使用来自第一和第 二应用程序302、 304的上下文信息来将基于计算上下文的附加上下文路由准 则312、 314添加到路由表308。上下文路由准则312、 314可采用将特定线程 标识与由网络接口的IP参数标识的特定网络接口相关的绑定指令的形式。对 于需要被路由的任何分组,由路由表308来执行查找。如果分组包括对应于上 下文路由准则312、 314的上下文信息,则创建套接字(或如果己经创建则选 择套接字),启动连接到远程主机的尝试,并且通过所配置的网络接口来发送 分组。否则,使用普通路由表来路由该分组。
例如,对于图1的示例性新闻阅读器应用程序,上下文映射接口 310可以 在由应用程序302、 304指示时将GPRS字段312以及Wi-Fi字段314写入路 由表308。当在网络层306处接收到具有对应于GPRS网络接口选择的线程标 识信息的来自第一应用程序302的线程302a(图3中被指示为虚线对之间具有 单个点的虚线)时,基于路由表308的GPRS字段312创建套接字并将其直接 绑定到GPRS网络接口 316。同样地,当在网络层306处接收到具有对应于 Wi-Fi网络接口选择的线程标识信息的来自第一应用程序302的线程302c或者 来自第二应用程序304的线程304d(图3中被指示为虚线对之间具有两个点的 虚线)时,基于路由表308的Wi-Fi字段314创建套接字并将其直接绑定到 Wi-Fi网络接口 322。
启用基于计算上下文的套接字绑定因而允许应用程序进行控制,通过该控 制,通过简单地将联网接口的联网套接字绑定到可用接口中的一个来路由联网接口话务而不干扰传统路由。添加控制以在通信套接字的核心联网层中启用直 接通过路由表到网络接口的隐式绑定允许该联网层也路由与传输控制协议 (TCP)或用户数据报协议(UDP)连接不相关的分组,例如,网间控制报文
协议(ICMP)以及由受监视的计算上下文生成的密钥交换分组。
图4示意性表示了由应用程序传递至联网层的基于计算上下文的绑定事 件400。在该绑定事件400中涉及三个组件应用程序线程402、线程路由接 口 404、以及该联网层的路由子系统406。应用程序线程402使用被添加到联 网层的路由能力。线程路由接口 404是被展示为对现存网络API的扩展的联网 层的扩展API。路由子系统406是网络API的一部分。
在绑定事件400的初始操作408中,客户机应用程序线程402收集与随后 的网络操作相关的计算上下文。 一般地,该计算上下文可以是环境特性的任何 集合,例如线程标识、事务标识、纤程标识(纤程是运行在操作系统之上并且 不与内核交互的线程)、时间或日期戳、当前处理器负荷、网络成本差异等等。 注意,可能的计算上下文的集合是完全可扩展的。然而在图4的示例中,计算 上下文只包括线程标识符。
在注册操作410中,客户机应用程序的线程402向线程路由接口 API 404 注册所获得的计算上下文。在该示例中,来自客户机的线程402将两个参数传 递给线程路由接口 404:计算上下文特性集和通过其路由在给定上下文中生成 的所有话务的网络接口标识符。这会将计算上下文特性与例如以太网电缆或 WiFi连接的网络接口相关联。注意,不保证通过通信网络发送至特定设备的 话务将始终通过该特定接口被回复,因为在将数据转发至该设备时选择目的地 设备的已知地址中的一个是由中间网络来决定的。
在连接操作412中,客户机应用程序的线程402生成网络话务以通过例如 直接调用联网API的路由子系统406 (例如,通过发送套接字、绑定、连接、 或其他网络接口命令)来连接到远程主机。或者,客户机应用程序的线程402 可以访问最终访问联网API的库(甚至是对于其没有源可用或对于其程序员不 具有改变的权限的库)。路由子系统406然后执行设置操作414,在该操作中, 实例化套接字并将其绑定到所标识的网络,将计算上下文映射到给定的网络链路接口,并且将与该线程相关联的信息存储在表中。 一旦创建套接字并实现与
远程主机的连接,就将完成的连接的通知416返回给线程402。
当线程402在发送操作418中将数据发送至远程主机时,网络API的路由 子系统406执行对线程路由接口 404的内部查找操作420以确定注册的计算上 下文集之一当前是否有效。将来自线程路由接口的绑定信息返回422给路由子 系统406。如果找到了相关的计算上下文,则通过对该上下文注册的网络接口 (例如,以太网、Wifi等)发送426该数据。对于该数据绕过普通路由表査找。 如果在将发送该数据时没有计算上下文是有效的,则执行通过现存的路由表的 普通查找操作428并且通过该査找所返回的链路接口来发送430分组。 一旦发 送该分组,就向线程402提供确认432。
图5示出了来自操作系统的对于创建具有传递自父线程的计算上下文信 息的子线程的所需支持。在某些方面,图5可被视作图4的扩展,其描述了如 何处理计算上下文映射的自动继承。回想在图4中,如果在数据将通过网络离 开客户机时没有计算上下文匹配,则在普通路由表的帮助下路由所有数据。然 而,操作系统可被配置为从现存的计算上下文自动地生成导出上下文并且通过 与原始上下文相关联的接口发送该数据。
图5的示例示意性表示了基于由应用程序传递至联网层的计算上下文的 子线程创建事件500。在子线程创建事件500中涉及三个组件应用程序线程 502、线程路由接口 504、以及操作系统的核心内核506。应用程序线程502使 用被添加到联网层的路由能力。线程路由接口 504是被展示为对现存网络API 的扩展的联网层的扩展API。操作系统软件的核心内核506负责提供对计算机 硬件以及对各种计算机进程的安全访问。
在注册操作508中,客户机应用程序的父线程502向线程路由接口 504 API 注册所获得的计算上下文。在该示例中,来自客户机的父线程502将两个参数 传递给线程路由接口 504:计算上下文特性集以及通过其路由在给定上下文中 生成的所有话务的网络接口标识符。这会将计算上下文特性与例如以太网电缆 或WiFi连接的网络接口相关联。路由子系统504然后执行设置操作510,在
该操作中,将计算上下文映射到给定网络链路接口并且将该信息存储在表中。
15一旦在线程路由接口 504的映射表中设置该参数,则将完成的连接的通知512
返回给父线程502。
接着,在创建操作514中,原始父线程502创建新的子线程516,该新的 子线程开始与父线程502并行地执行另外的进程。然而,在映射表中对于父线 程502所记录的计算上下文将不会匹配子线程516的计算上下文,因为由内核 506分配给子线程516的线程标识对于该特定进程是唯一的。为了将父线程502 的各计算上下文特性转移到子线程516,需要修改内核506以使得只要创建新 线程就将通知发送给线程路由接口 504。
两个参数被传递至线程路由接口 504:父线程502的线程标识参数以及子 线程516的线程标识参数。这些参数在传递操作518中从内核506传递至线程 路由接口 504以创建继承关系。线程路由接口 504更新映射表以标识套接字并 且将父线程502的网络接口与子线程516绑定。 一旦更新了线程路由接口 504 的映射表,就将完成的操作的通知522返回给内核506。
现在当子线程516在发送操作524中将数据发送至远程主机时,可以将父 线程502和子线程516两者的参数传递至网络API的路由子系统。如对于图4 所描述的,路由子系统执行对线程路由接口 504API的内部査找操作以确定注 册的计算上下文集中的一个当前是否有效。将来自线程路由接口 504的绑定信 息返回给路由子系统,该信息将子线程516标识为与父线程502相同的套接字 和网络接口相关联。因此,如在与发送操作524相关联的通知526中所指示的, 通过对与父线程502和子线程516两者都相关联的上下文注册的网络接口来发 送数据。
图6描绘了在基于位置的高速缓存系统中使用的示例性移动设备600。该 移动设备600包括如在任何标准计算设备中的处理器602以及存储器604。下 文中所描述的处理器602、存储器604、以及其他组件可以通过系统总线614 来接口。系统总线614可以是若干类型的总线结构中的任何一种,包括存储器 总线或存储器控制器、外围总线、交换光纤、点对点连接、以及局部总线。存 储器604 —般包括易失性存储器(例如,RAM)和非易失性存储器(例如, ROM或PCMCIA卡)。操作系统606可以驻留在存储器604中并且在处理器602上执行。 一个示例性操作系统可以是来自微软公司的WINDOWS CE操作 系统。
一个或多个应用程序606可被加载到存储器604中以由处理器602结合操 作系统606来执行。示例性应用程序可包括电子邮件程序、时间安排程序、个 人信息管理程序、文字处理程序、电子数据表程序、因特网浏览器程序、音乐 文件管理程序、以及照片和视频文件管理程序。存储器604还可包括在处理器 602上执行的通知管理器610。如将在以下更详细描述的,通知管理器610处 理从应用程序608到一个或多个用户通知设备的通知请求。
移动计算设备600还具有可以使用一个或多个电池来实现的电源612。通 过使用代替电池或为电池重新充电的与移动设备600相连接的电源线或供电数 据传输电缆,电源612也可以来自外部AC源。电源612被连接到移动设备600 的大多数(如果不是全部)组件以供每个组件工作。
在一个实施例中,移动设备600可包括通信能力,例如,移动设备600 作为无线电话来工作。具有电话能力的无线设备600 —般包括用于与无线电话 网接口的天线616、发射机618、以及接收机620。另外,移动设备600可包括 话筒634以及扬声器636以供用户进行电话通信。扬声器636还可以是用于与 有线或无线耳机或头戴式耳机相连接的有线或无线输出端口的形式。
移动设备600可以通过一个或多个通信接口 622与众多其他网络相连接, 例如,无线LAN (Wi-Fi)网络、有线LAN或WAN、 GPRS、蓝牙、UMTS 或任何其他网络。天线616或多根天线可用于不同的通信目的,例如,射频识 别(RFID)、微波发射和接收、Wi-Fi发射和接收、以及蓝牙发射和接收。
移动设备600 —般还包括某一类型的用户界面。如图6所示,移动设备 600可具有键盘624和显示器626 。键盘624可以是有限数字触摸垫、全"qwerty" 键盘、或两者的组合。键盘624也可包括专用按钮、滚轮、跟踪球、以及其他 界面选项,例如,菜单选择或导航键或电话功能键。除了描绘信息之外,显示 器626还可以是触摸屏显示器,该显示器是允许通过用用户的手指或指示笔触 摸显示屏以通过图形界面来做出输入选择或直接在在显示器626上写字母和数 字来输入数据。
17移动设备600还可具有一个或多个外部通知机制.。在图6所描绘的实施例
中,移动设备600包括音频生成器628、发光二极管(LED) 630、以及振动设 备632。这些设备可直接耦合到电源612,使得当被激活时,即使处理器602 以及其它组件可能关闭以节省电池电量,它们也可保持一段由通知管理器610 指示的保持通电时间。
用于实现本发明的图7的示例性硬件和操作环境包括计算机700形式的通 用计算设备,包括处理单元702、系统存储器704、以及操作上将包括系统存 储器704在内的各种系统组件耦合至处理单元702的系统总线718。可以只存 在一个或者存在一个以上处理单元702,使得计算机700的处理器包括单个中 央处理单元(CPU),或者多个处理单元,通常称为并行处理环境。计算机700 可以是常规计算机、网络服务器、分布式计算机、或者任何其他类型的计算机; 本发明不限于此。
系统总线718可以是几种类型的总线结构中的任何一种,包括存储器总线 或存储控制器、外围总线、交换光纤、点对点连接、以及使用各种总线体系结 构中的任一种的局部总线。系统存储器704可被简单地称为存储器,并且包括 只读存储器(ROM) 706和随机存取存储器(RAM) 705。基本输入/输出系统 (BIOS) 708被存储在ROM 706中,它包含诸如启动期间帮助在计算机700 内的各元件之间传递信息的基本例程。计算机700还包括用于对硬盘(未示出) 进行读写的硬盘驱动器730、用于对可移动磁盘736进行读写的磁盘驱动器 732、以及用于对可移动光盘738,如CD-ROM或其它光介质进行读写的光盘 驱动器734。
硬盘驱动器730、磁盘驱动器732和光盘驱动器734分别由硬盘驱动器接 口 720、磁盘驱动器接口 722和光盘驱动器接口 724连接到系统总线718。驱 动器及其关联的计算机可读介质为计算机700提供了对计算机可读指令、数据 结构、程序模块和其它数据的非易失性存储。本领域的技术人员应理解,在示 例操作环境中可以使用可储存可由计算机访问的数据的任何类型的计算机可 读介质,例如,磁带盒、闪存卡、数字视频盘、RAM、以及ROM。
在硬盘730、磁盘732、光盘734、 ROM 706、或RAM 705上可以存储多 个程序模块,包括操作系统710、 一个或多个应用程序712、其它程序模块714、以及程序数据716。用户可通过诸如键盘740和定点设备742等输入设备向个 人计算机700中输入命令和信息。其他输入设备(未示出)可包括,例如,话 筒、操纵杆、图形输入板、触摸屏设备、圆盘式卫星天线、扫描仪、传真机、 以及摄像机。这些和其它输入设备通常通过耦合到系统总线718的串行端口接 口 726连接到处理单元702,但也可通过其它接口连接,如并行端口、游戏端 口、或通用串行总线(USB)。
监视器744或其它类型的显示设备也经由接口,诸如视频适配器746连接 至系统总线718。除监视器744之外,计算机通常还包括其它外围输出设备, 如打印机758和扬声器(未示出)。这些和其它输入设备通常通过耦合到系统 总线718的串行端口接口 726连接到处理单元702,但也可通过其它接口连接, 如并行端口、游戏端口、或通用串行总线(USB)。
计算机700可使用至一个或多个远程计算机,诸如远程计算机754的逻辑 连接在网络化环境中操作。这些逻辑连接可由耦合至计算机700或者与计算机 700整合的通信设备来实现;本发明不限于特定类型的通信设备。远程计算机 754可以是另一计算机(例如,移动计算设备)、服务器、路由器、网络个人 计算机、客户机、对等设备或其它常见的网络节点,并且通常包括许多或所有 相对于计算机700所描述的元件,尽管图7仅示出了存储器存储设备756。图 7所描绘的逻辑连接包括局域网(LAN) 750和广域网(WAN) 752。这样的 网络环境常见于办公室网络、企业范围计算机网络、内联网和因特网,并且可 以是所有类型的网络。
当在LAN 750环境中使用时,计算机700可以通过作为一种类型的通信 设备的网络接口或适配器728来连接到局域网750。当在WAN 752环境中使 用时,计算机700通常包括调制解调器748、网络适配器、或用于通过广域网 752建立通信的任何其他类型的通信设备。或为内置或为外置的调制解调器748 经由串行端口接口 726连接到系统总线718。在网络化环境中,相对于个人计 算机700所描绘的程序模块或其部分可以存储在远程存储器存储设备中。可以 理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的 其它手段和通信设备。在示例性实现中,上下文路由接口可以作为操作系统710、应用程序712、 或其他程序模块714的一部分来包含。状态描述文件、对象数据值、以及其他 数据可作为程序数据716来存储。
此处所描述的技术可被实现为一个或多个系统中的逻辑操作和/或模块。 逻辑操作可被实现为在一个或多个计算机系统中执行的处理器实现的步骤的 序列以及在一个或多个计算机系统中的互连机器或电路模块。同样地,各组件 模块的描述可以按照由模块执行或实现的操作来提供。所得的实现是取决于实 现所描述的技术的底层系统的性能要求的选择问题。从而,组成此处所述的技 术的实施例的逻辑操作被不同地称为操作、步骤、对象或模块。此外,应该理 解,除非以其他方式明确地要求保护或权利要求语言固有地需要一特定的次
序,否则逻辑操作可以按任何次序来执行。
以上说明、示例和数据提供了对本发明的各示例性实施例的结构和使用的 全面描述。尽管以上带着一定程度的特殊性或对一个或多个单独实施例的参考 描述了本发明的各实施例,但是本领域的技术人员能够对所公开的实施例做出 多种改变而不背离本发明的精神或范围。更具体地,应该理解,所描述的技术 可以独立于个人计算机釆用。因此可构想其他实施例。其目的是以上描述中所 包含以及在附图中所示出的所有一切应当解释为仅仅是例示特定实施例而非 限制。可以对细节或结构做出更改而不背离如所附权利要求书中定义的本发明 的基本要素。
权利要求
1.一种用于将数据路由到网络接口(400)的方法,包括接收通过通信网络发送数据的请求(418);标识与所述数据相关联的计算上下文(408);将所述计算上下文作为路由准则来包括(414);以及基于所述计算上下文将所述数据路由到至所述通信网络的特定网络接口(424)。
2. 如权剁姜求1所述的方法,其特征在于,还包括经由所述特定网 络接口发送所述数据。
3. 如权利要求1所述的方法,其特征在于,所述路由操作还包括将 所述计算上下文映射到所述特定网络接口。
4. 如权利要求l所述的方法,其特征在于,所述路由操作还包括 实例化通信套接字;将所述通信套接字与所述计算上下文相关联;以及 将所述通信套接字绑定到所述特定网络接口 。
5. 如权利要求1所述的方法,其特征在于,所述计算上下文包括可 扩展计算上下文集。
6. —种具有用于执行实现如权利要求1所述的方法的计算机进程的 计算机可执行指令的计算机可读介质。
7. —种用于将数据路由到多个网络接口中的一个(400)的方法,包括标识与所述数据相关联的计算上下文(408);以及基于所述相关联的计算上下文做出关于通过所述多个网络接口中的一个来传输数据的路由决定(420)。
8. 如权利要求6所述的方法,其特征在于,还包括 将所述计算上下文映射到所述特定网络接口以创建映射的关系;以及 存储所述映射的关系;以及其中所述做出路由决定的操作还包括访问所述映射的关系以确定所述多 个网络接口中用于路由所述数据的传输的一个网络接口。
9. 如权利要求6所述的方法,其特征在于,所述计算上下文包括执 行应用程序的进程线程。
10. 如权利要求9所述的方法,其特征在于,所述进程线程创建子进 程线程,并且所述方法还包括将所述进程线程的计算上下文与所述子进程线程相关联;以及 基于所述进程线程的计算上下文做出关于通过所述多个网络.接口中的一 个来传输由所述子进程线程生成的另外的数据的路由决定。
11. 如权利要求6所述的方法,其特征在于,所述计算上下文包括可 扩展计算上下文集。
12. —种具有用于执行实现如权利要求6所述的方法的计算机进程的 计算机可执行指令的计算机可读介质。
13. —种在具有多个网络接口 (112、 114、 116)的计算设备中做出网 络接口路由决定(400)的方法,所述方法包括作为应用程序进程的一部分,向联网层呈现标识所述计算设备的计算上下文的参数(410);将所述参数映射到在所述应用程序进程与所述联网层之间提供的路由接口中的特定网络接口以创建映射的关系(414);将所述参数与发送自所述应用程序进程以供传输的数据相关联(408); 将与所述数据相关联的所述参数与所述映射的关系相比较(420);以及 将所述数据路由到所述参数所映射到的所述特定网络接口 (424)。
14. 如权利要求12所述的方法,其特征在于,所述路由还执行以下步骤创建通信套接字;将所述通信套接字与所述计算上下文相关联;以及将所述通信套接字绑定到所述特定网络接口 。
15. 如权利要求12所述的方法,其特征在于,还包括向所述联网层注 册所述映射的关系。
16. 如权利要求14所述的方法,其特征在于,所述注册操作还包括 将所述映射的关系存储在路由表中;以及从所述路由表访问所述映射的关索。
17. 如权利要求12所述的方法,其特征在于,所述参数包括进程线程 标识。
18. 如权利要求12所述的方法,其特征在于,所述参数包括可扩展计 算上下文集。
19. 如权利要求12所述的方法,其特征在于,还包括-从所述应用程序进程创建子应用程序进程;以及 将所述映射的关系归属于所述子应用程序进程,其中 所述参数还与发送自所述子应用程序进程的另外的数据相关联。
20. —种具有用于执行实现如权利要求12所述的方法的计算机进程的 计算机可执行指令的计算机可读介质。
全文摘要
在存在多个活动网络连接(316、318、320、322)的情况下使用计算机操作环境的计算上下文的知识,例如对进程线程的知晓(302a-d、304a-d),来路由IP话务。可以将一种额外的的协议(310)添加到操作系统的网络层(306)以将特定计算上下文映射到特定网络接口(316、318、320、322)。具有与请求通过通信网络进行数据传输的映射的计算上下文(410)相关联的标识参数的任何进程都绑定至先前与计算上下文(424)相关联的网络接口而不是另外可能是默认的替换网络接口。此外,可以使得父进程线程(502)所创建的进程线程(516)继承父线程(502)的计算上下文以将话务分配给相同的网络接口。该路由框架可具有关于多穴主机设备,例如移动计算设备(600)的特定应用程序。
文档编号H04L12/28GK101405993SQ200780009284
公开日2009年4月8日 申请日期2007年2月8日 优先权日2006年3月13日
发明者F·范梅根, I·W·塞尔莫, W·马努瑟克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1