本发明要求基于美国临时专利申请序列号No.60/480,434的优先权,它于2003年6月19日提出,题为“Conflict Avoidance Across Competing NetworkTechnologies”(跨越竞争网络的冲突避免技术),通过整体引用将它包括在此,包括其中的引用。
详细说明
在此所提示的说明性无线网络接口配置/控制结构促进了横跨多种无线技术的高度灵活/自适应的无线网络接口控制。在说明性实施例中,无线网络接口配置/控制平台,包括共存驱动器,它在网络通信层处在各个介质访问驱动器之上执行,所述介质访问驱动器一般控制特定介质类型(例如802.11WLAN)的数据组(例如数据包)的流。共存驱动器实例化一个或多个虚拟共存驱动器(virtual coexistence driver)(VCD),每个虚拟共存驱动器处理有可能干扰的无线介质技术的特定组合,甚至多个结合同一无线介质技术的网络接口。VCD积累来自网络接口设备(例如网络接口卡)的状态信息和性能度量,所述网络接口设备与正在由它处理的组合中的每个无线技术相关联。
最初,共存驱动器确定一个计算设备现在所需的虚拟共存驱动器组,所述计算设备利用一个或多个无线网络技术。共存驱动器确定现在影响目前安装的无线网络接口的运行的干扰源/技术组。共存驱动器为每个支持的无线技术查考详细说明有可能冲突的无线技术的冲突图。如果在冲突图内一种冲突的无线技术现在被安装在计算设备上,那么将它加到冲突组。而且,如果机器只有一个802.11b卡,但蓝牙电话在这个机器的附近并且现在正在与另一个机器或AP通话,那么为了执行冲突避免,蓝牙干扰源成为选择和配置特定VCD的因素。包含802.11b卡的机器被限制在它的冲突避免策略中,因为它只具有对802.11b的控制而没有对BT设备的控制。然而,至少部分802.11b/BT VCD的冲突避免逻辑(例如,改变802.11频带)可以潜在地被使用。在完成这初始的冲突检测步骤,共存驱动器选择和启动相应于每个所识别的冲突技术/干扰源组的VCD。
由共存驱动器建立的每个虚拟共存驱动器利用从冲突的无线技术的各个介质访问控制(MAC)驱动器积累的状态信息和性能量度,来执行一组与控制数据组(例如数据包)至访问控制驱动器的流动,用于通过安装在计算设备上的无线网络接口的通信。这样的任务包括:区分与冲突的(以及因此可供选择地被激活的)无线网络接口相关联的传输数据组的优先次序;保存与未决的请求相关联的经区分优先次序的队列,以及按照优先级化方案,将排过队的数据组向下传递至介质访问控制驱动器;基于由多个介质访问驱动器提供的信息,执行决策,用于自适应无线网络接口的操作;以及发出命令/控制指令至介质访问控制驱动器以这样一种方式来控制无线网络接口卡,所述方式促进无线接口和任何其它无线通信信号干扰源--由其它安装的无线网络接口卡或外部干扰的源所引起的信号干扰源的非干扰运行。在说明性实施例中,通过共存驱动器传送控制数据包(不处理)以避免使时间-临界的信息延迟到达无线网络接口。
因而,总之,共存驱动器是一个高层网络设备驱动器,它在一组介质专用访问控制驱动器之上执行共存协议,来处理相同或不同的无线技术之间的冲突/干扰。共存驱动器有可能以许多方式来处理冲突/干扰,包括禁止/避免在一个特定的无线收发器中使用特定的频率范围(信道)来消除信号频率重叠或者信号漏出(bleed),其中即使频率是非重叠的,因为它们紧密的接近度,在一个频率范围上的传输可以影响在另一个频率范围上的传输/接收。如果不能防止信号频率重叠,那么共存驱动器控制(多路传输)由竞争的无线技术的数据组传输,来避免在一个虚拟共存驱动器内代表的多个无线技术同时使用重叠的频率。在介质专用无线介质访问控制驱动器之上的共存驱动器的位置,使共存驱动器能够实现基于所积累的无线网络量度的、各种各样的冲突/干扰减少方案,包括处理要适当地通过不同接口传输的不同数据组(例如数据包),否则通过各个介质访问控制驱动器将是不可行或者难以获得的,因为它们缺少穿过不同的介质访问控制驱动器全局观点,或者甚至缺少两个网络接口之间的协调,因为它们来自不同的销售者或者使用相同的无线技术诸如在同一计算设备上的两个802.11b收发器。
图1例示性地示出适合计算设备(例如,笔记本计算机、诸如接入点之类的器具等)的操作环境100的例子,所述计算设备在由通过各种不同无线通信技术访问的多个网络支持的环境中使用。操作环境100只是适合的操作环境的一个例子,并且不是想要建议有关本发明的使用或功能性范围的任何限制。其它可适合本发明使用的、众所周知的计算系统、环境和/或配置包括,但不限于,个人计算机,服务器计算机,膝上型/便携式计算设备,多处理器系统,基于微处理器系统,网络PC,小型计算机,大型计算机,服务器器具,接入点,基站,包括任何上述系统或设备的分布式计算环境等等。
可在正在由计算机执行的计算机可执行的指令诸如程序模块的环境中描述本发明。通常,程序模块包括执行特定任务或实现抽象数据类型的例程、程序、对象、组件、数据结构等。有可能将本发明结合在分布式计算环境中的运行的网络节点,在分布式计算环境中通过通信网络链接的远程处理设备执行任务。在分布式计算环境中,通过将程序模块设置在包括存储器设备的本地和远程两者的计算机存储介质中。
继续参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括,但不限于,处理单元120,系统存储器130和系统总线121,它将包括系统存储器在内的各种系统组件耦合到处理单元120。系统总线121可以是任何几种类型总线结构的一个或多个,包括存储器总线或存储器控制器、外设总线、加速图形端口及使用任何各种总线结构的处理器或本地总线。作为例子,而非限制,这样的结构可包括工业标准结构(ISA)总线、微通道结构(MCA)总线、扩展工业标准结构(EISA)总线、视频标准协会(VESA)局部总线和,外设部件互连(PCI)总线,它也被称为中间层(Mezzanine)总线。
计算机110一般包括多种多样的计算机可读介质。这样的介质可以是任何可由计算机110存取的可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。作为例子,并非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括易失性和非易失性、可移动和不可移动介质两者,它们是以任何存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的方法或技术的实现的。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光盘存储器、磁盒、磁带、磁盘存储器或其它磁存储设备,或者能用于存储想要的信息和能由计算机110存取的任何其它介质。通信介质一般包含在调制的数据信号诸如载波或其它传输机制中的计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传输设备。术语″调制的数据信号″指具有以这样一种关于编码信号中信息的方式设置或改变的一或多个特征的信号。作为例子,并非限制,通信介质包括有线的介质,诸如有线的网络或直接线连接、以及无线的介质,诸如声音的、RF(射频)、红外线和其它无线介质,诸如无线PAN、无线LAN和无线WAN介质。上述各项的任意组合也包括在计算机可读介质的范围之内。
系统存储器130包括以易失性和/或非易失性的存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS),包含帮助计算机110内组件之间传送信息的基本例程,诸如在起动期间,它一般被存储在ROM 131中。RAM 132一般包含由处理单元120可直接存取和/或目前操作的数据和/或程序模块。作为例子,而非限制,图1示出操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可包括其它可移动的/不可移动的、易失性/非易失性计算机存储介质。只是作为例子,图1示出了读写不可移动的、非易失性的磁介质的硬盘驱动器141,读写可移动的、非易失性的磁盘152的磁盘驱动器151,和读写可移动的、非易失性的光盘156诸如CD ROM或其它光介质的光盘驱动器155。能用于示例操作环境的其它可移动的/不可移动的、易失性/非易失性的计算机存储介质包括,但不限于,磁带盒、闪存卡、数字通用盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141一般通过不可移动的存储器接口诸如接口140连接至系统总线121,以及磁盘驱动器151和光盘驱动器155一般由可移动的存储器接口诸如接口150连接至系统总线121。
上面所讨论的并示于图1中的驱动器及其关联的计算机存储介质,为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137或者相同,或者不同。操作系统144、应用程序145、其它程序模块146和程序数据147在这里给出不同的数字,以说明在最低程度上它们是不同的复制品。用户可通过输入设备诸如键盘162,和通常称为鼠标、轨迹球或触摸板的指点设备161,将命令和信息输入到计算机110中。其它输入设备(未示出)可包括操纵杆、游戏垫、卫星天线、扫描仪等等。这些和其它输入设备常常通过耦合到系统总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,诸如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过一个接口诸如视频接口190连接至系统总线121。除监视器之外,计算机还可包括其它外部输出设备诸如扬声器197和打印机196,它们可通过输出外部接口195连接。
计算机110可在一个使用逻辑连接至一或多个远程计算机诸如远程计算机180的网络化环境中运行。远程计算机180可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其它普通网络节点,并且一般包括上面相对于计算机110所述的组件的许多或全部,尽管在图1中只例示了存储器设备181。图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但还可包括其它网络。这样的网络环境在办公室、企业级计算机网络、内联网和因特网中是很普通的。
当在LAN网络环境中使用时,计算机110通过一个或多个有线/无线网络接口170连接至LAN 171。而且,这组一个或多个有线/无线网络接口170支持通过WAN 173诸如因特网的通信。尽管未在图1中示出,但计算机110有可能包括一个内置或外置的调制解调器,通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110所述的程序模块或其部分,可存储在远程存储器设备中。作为例子,并非限制,图1将远程应用模块例示为驻留在存储器设备181上。将意识到,所示的网络连接是示例性,并且可以使用在计算机之间建立通信链接的其它装置。
有可能将本发明结合到在各种各样的动态网络环境使用的并且执行各种各样任务的移动和非移动计算设备/机器两者中。在这样的环境中,某些信道/频率的可用性有可能随着活动的无线介质集合改变而改变。接下来这可以对特定无线介质上的服务质量具有不利的效果。本发明促进配置和/或调节至网络接口的话务量,减少在使用重叠的频率范围的无线网络接口之间的干扰。本发明的实施例还自适应由计算设备不具有控制的外部源(例如,无绳电话系统、微波炉、传输至另一个计算设备的蓝牙设备等)引起的干扰。
转到图2,无线计算环境的简单例子,其中有可能使用本发明。在说明性实施例中,笔记本计算机200包括多个网络接口卡(未明确示出),促进通过多个网络介质上通信。在图2中所示的特定例子,笔记本计算机200有可能通过WWAN无线技术诸如GPRS和使用WLAN无线技术诸如802.11b的无线收发器204与发射塔202通信。
无线收发器204(也称为无线接入点或WAP),提供对LAN 206上的各种各样资源的访问。例如,无线收发器204提供由笔记本计算机200对保存在文件服务器208上的目录的访问。LAN 206还包括网关/防火墙/调制解调器210,提供连接到LAN 206(包括一组计算机211和笔记本计算机200的用户)的计算设备的用户对因特网212的访问。网关/防火墙/调制解调器210还提供因特网212的用户对LAN 206上的资源的访问。
笔记本计算机200的用户,由于多个所支持的网络介质,能够通过多个通信介质访问因特网212和文件服务器208(通过因特网212)。例如,利用WWAN网络接口,笔记本计算机200能够通过包括蜂窝式发射塔202的蜂窝式网络访问因特网212。可供选择地,笔记本计算机200通过无线收发器204访问在LAN206上的资源。假设在说明性例子中的LAN 206包括网络访问和代理服务器,它们使笔记本计算机200的适当认证的用户能够通过两个说明性地示出的无线网络中的任一个介质来访问因特网212和LAN 206的资源。这样的双重能力引入基于笔记本计算机200的用户的当前条件、需求、优选等选择一个特定的无线网络介质的可能性。
在图2中所示的说明性网络实施例中,位于接近笔记本计算机200的个人计算机214装备了多个无线网络技术接口。个人计算机214通过无线收发器204(运行于802.11b WLAN协议之下)与LAN 206通信。此外,以及关于与本发明的实施例的特定相关性,PC 214包括蓝牙无线收发器/接口,它支持各种各样的无线器具,包括例如,鼠标、键盘和电话。因为蓝牙和802.11b无线网络通信协议的所规定的频谱重叠,所以蓝牙器具与802.11b连接的同时运行,有可能影响/降级在个人计算机214与无线收发器204之间的802.11b连接上的服务质量。同样,802.11b连接有可能影响/降级在蓝牙连接上的服务质量。而且,如果笔记本计算机200足够靠近其它可能/可能不与笔记本计算机通信的蓝牙器具,那么笔记本计算机200与无线收发器204之间802.11b WLAN连接也有可能不利地受与蓝牙信号传输相关联的接口影响,以及反之亦然。此场景以及其它诸如在本文中上面所述那些场景是由一个共存驱动器处理的,所述共存驱动器处理有可能与多个无线技术相关联的信息来建立/执行一个共存方案,所述方案寻找解决由与相同或不同的无线网络技术--诸如蓝牙与802.11b无线通信相关联的重叠频谱引起的信号干扰。一个特殊的情况是,在利用相同的无线网络技术的收发器之间干扰的情况,所述相同的无线网络技术诸如,两个802.11b,g或使用重叠的频率或彼此靠近的频率的无线电--并且因此产生信号干扰。
转到图3,结合在计算设备内的共存驱动器300包括无线网络接口诸如笔记本计算机200和个人计算机214,将自适应和数据包流控制方案有可能通过多个网络接口应用于有可能属于多个所支持的网络介质技术的运行/状态信息。之后,共存驱动器300配置无线网络接口,以及如果必要,按顺序排列/控制数据包流至经历来自或者内部或者外部源的干扰的无线网络接口。在本发明的说明性实施例中,共存驱动器300在MICROSOFT WINDOWS操作系统的网络驱动器接口规范(network driver interface specification)(NDIS)内运行。因而,不是要求单独的接口组,而是示例性共存驱动器300运行为NDIS层310内的一个中间子层,从传输驱动器312的输出数据在被提交给协议专用的无线接口驱动器之前通过这个中间子层。
继续参考图3,在本发明的一个实施例中,共存驱动器300创建/安装以及作为一组虚拟共存驱动器(VCD)的主机,所述虚拟共存驱动器诸如VCD 320和VCD 322,用于处理实际的或外部的干扰无线技术的特定组合。每个VCD处理指定给由VCD支持的一组无线网络接口之一的数据包。例如,VCD 320处理指定给802.11b网络接口驱动器330和蓝牙网络接口驱动器332的数据包。VCD322处理指定给802.11a网络接口驱动器334和超宽带网络接口驱动器336的数据包。通过将VCD放在各个网络接口驱动器上,基于与一组有可能利用干扰网络技术(例如蓝牙与802.11b)的接口的每一个相关联的汇总信息,VCD能够执行各种各样的配置/控制操作。
在本发明的一个实施例中,所有VCD是从由共存驱动器300管理的一个基类导出的。共存驱动器300创建一个VCD的特定实例,包括定制的环境和功能,基于所识别的干扰源。在本文下面进一步讨论冲突与干扰源的识别技术和适当的VCD实例的选择。一旦被安装,每个VCD在通过NDIS层310向下传递至网络接口驱动器数据包上的控制程度和控制性质,是通过VCD的编程确定的,并且有可能,由共存驱动器300和/或以共存驱动器300作为宿主的VCD向用户暴露配置选择。
已经一般地描述了用于执行本发明的示例性无线网络驱动器安排,将注意力指向图4,它识别由示例性VCD执行的并且按照一组干扰源定制的一组任务/功能,这些VCD为所述干扰源组管理共存。应该注意,所识别的任务不必限制于特定的程序段/模块。而是,将任务识别为一种使由共存驱动器300创建的VCD展示的示例性功能性概念化并划分的一种方式,以自适应地处理由冲突的无线技术以及任何其它干扰源引起的干扰问题。
自适应任务410
由VCD在虚拟共存驱动器300内执行的自适应任务410,涉及在响应一组所识别的实际的/有可能的干扰条件时指定一个共存方案用于一组安装的无线接口。在本文下面参考图6和7描述一组示例性共存方案。自适应任务41 0还包括提供执行所指定的方案的无线网络接口控制指令。接口控制指令建立网络接口的运行的特定模式,和/或在关联的驱动器的控制下调节由特定网络接口的数据包传输的定时。例如,VCD320指定一个共存方案并且作出配置和关于与802.11b驱动器330相关联的第一网络接口和与蓝牙驱动器332相关联的第二网络接口的数据话务量控制决定。
C/I计算应用/信道选择
在本发明的一个实施例中,如在自适应任务410中具体化的自适应任务,周期性地处理关于每个用于VCD的特定的无线技术的信息,以提供拥塞/干扰(C/I)度量用于每个支持的、对应每个特定的支持的无线技术的信道。为给定的无线技术的每个信道收集的数据包括,例如:信号强度,数据包出错率,数据包丢失,平均再试计数,噪声电平和估计的拥塞。这样的信息,或者至少其一部分,是由已知的介质访问控制驱动器提供的。C/I度量考虑由安装的无线收发器和外部的干扰源--诸如另一个用户操作另一个计算设备的蓝牙设备两者产生的干扰。
为每个无线技术的每个信道产生的C/I度量之后有可能以许多方式由VCD使用,以减少/避免无线技术与其它信号干扰源之间的干扰。在干扰避免的第一种形式中,自适应任务410利用为一个特定的无线技术产生的C/I度量来选择一个最佳的信道或一组最佳的信道,在所述信道上用于特定无线技术的数据话务流量。不过,在没有可接受的信道可用以及一个可替换的无线技术可用于支持所想要的话务流量的实例中,VCD执行无线技术选择过程。在这干扰避免的第二种形式中,网络选择过程(在本文下面讨论)是由例如共存驱动器300执行的,来确定不同的通信技术以处理话务流量。
优先化任务420
由每个VCD执行的优先化任务420保证以及时的方式传递至关紧要的信息,并且保证所有的数据包,不管最初被指派的优先权,最终按照由自适应任务410所指定的优先化方案传输。这样的优先化方案在这样一种情况下是所希望的,即规定序列化的、非同时发生的数据包传输来处理两个或多个共处在一起的无线技术之间的可能冲突的情况。在下面描述的一个示例性话务量处理方法中,优先化任务420负责指派/重新指派优先权给下传给NDIS 310的数据包。
有可能按照各种各样的因素将优先权指派给由VCD处理的数据话务量,这些因素反映数据所源自的用户/应用的需求。最初指派优先权,例如,根据用户指定有关应用优先权的优选。在其它实例中,优先权基于特定的应用,为它提供特定的优先权以保证特定的数据速率。相似地,在又另一个实例中,初始的优先权基于应用类型(例如,DVD观看器程序)、数据的类型(例如电话交谈)或者数据的目的地(DVD播放器)。
在本发明的一个实施例中,所有控制数据包是自动地被传递给网络接口驱动器,与当前由共存驱动器300的VCD实现的任何共存方案无关。MAC层控制数据包不是由共存驱动器处理的,这有许多原因。首先,共存驱动器300不知道由MAC驱动器实现的协议。其次,MAC控制信息是时间-临界的(微秒粒度)。而且,控制数据包被认为是高优先权的,并且因而适合首先传输这样的数据包(作为高优先权/时间临界的数据包),与优先权无关,以及让MAC驱动器处理由旁路VCD话务量控制方案而引起的冲突(和数据包丢失)。因为控制传输构成所有传输的相对小百分比,这样的适应于控制数据包的通过(pass-through)实际上不影响由有关冲突避免的VCD提供的优点。在另一方面,数据包的时间临界性变化相当大,以及某些数据传输的量,如果没有被区分优先次序,则延迟时间-临界(例如控制)的数据包的传输。
排队任务430
排队任务430与优先化任务420以及命令/控制任务440一起合作运行,从而以顺序的方式将数据包向下传输至技术专用的驱动器,以避免对于冲突无线技术的信号传输干扰。排队任务430,对于每个支持的优先权等级(或者便于在按原来被指派的优先权的每个队列等级内区分优先次序的子等级)保存未决的数据包的队列。在本发明的一个实施例中,每个支持顺序的共存方案(在本文下面参考图7描述)的VCD实现软件切换,它在队列的头部取一个数据包,将这个数据包传递给适当的无线技术接口驱动器,接收一个传输完成通知,以及然后发送下一个未决的数据包(在此一般被称为数据组,有可能按照将用于通过网络接口传输的数据分组的其它方法)。
在本发明的一个实施例中,队列任务430,在对于当前最高优先权队列完成所有或部分数据包的顺序传输时(基于存在高优先权数据包的稳定流时避免低优先权数据包饥饿的准则),在继续传输来自具有未决的数据包的最高传输队列数据包之前,提高所有剩余未决的(与较低的优先权队列相关联的)数据包的优先权一个等级。而且,在每个优先权等级内,按照在最初被排队时被指派给数据包的基本优先权等级保存子等级。在最高的当前队列等级内,按照被指派给每个数据包的基本优先权的顺序处理子等级队列。
命令/控制任务440
命令/控制任务440涉及将控制指令传送至相关的网络接口驱动器。在第一实例中,这样的指令基于由自适应任务410提供的配置决定,诸如信道选择和其它高层运行模式决定。之后,在第二实例中,命令/控制任务440接收指定一个网络接口驱动器的数据包传输请求。在响应时,命令/控制任务440发出无线技术协议专用的命令/指令至指定的驱动器以开始传输所接收的数据包。命令/控制任务440从而接收和传递数据包传输完成通知,在冲突的接口驱动器不支持共存方案时,VCD有可能使用所述通知来保证一次只有一个数据包被传输。如上面所提到的,在本发明的一个实施例中,冲突避免机制不应用于时间敏感的控制数据包,因为在没有将潜在的等待强加在由VCD保存的队列内的情况下,将控制数据包传递给适当的网络通信驱动器。
用于创建VCD的方法
已经描述了一个用于在计算系统内实现的示例性共存结构,将注意力指向图5,它概括了由共存驱动器300执行的步骤,以创建VCD来处理无线技术与任何其它无线信号干扰源之间有可能的信号冲突,它们是在计算设备上的网络接口在数据组(例如数据包)的传输过程中遭遇到的。在本发明的一个实施例中,共存驱动器300按要求而并且按照一组现在计算设备已知的干扰源启动VCD,在所述计算设备上驻留着这个共存驱动器300。计算设备等待有关对一组干扰源(包括多个利用相同无线技术的网络接口)的改变的通知,以及如果需要则启动新的VCD,来处理对共处一起的和外部的干扰源组。
参考图5,在响应各种各样的通知类型的任何一个时,所述通知类型包括激活无线网络接口以及检测一个新的干扰源,在步骤500,共存驱动器300组合一组想要共存处理的有可能的无线干扰源。在本发明的一个实施例中,有可能的干扰源组包括共处在一起的源(例如,安装的无线网络接口)和外部源(例如在相邻的计算机系统上的蓝牙收发器)。例如,通过查询列出一组安装的设备(包括无线网络接口)的捆绑库(bindery),确定共处一起的源。外部源是通过检测和分析(由共存驱动器300)信号特性和/或手工地由具有当前的操作环境知识的用户输入源类型来识别的。
之后,在步骤502期间,共存驱动器300提供冲突的无线干扰源的组。在本发明的一个实施例中,保存一个主冲突图(例如,一个表或者任何其它合适的数据结构),列举一组“已知的”无线技术。对于每个无线技术,在主冲突表中识别一组已知的干扰源。在下面提供一个示例性主冲突表,它识别与802.11a/b、蓝牙和UWB无线技术有关的冲突。第一行识别一组有可能的干扰无线接口的源。第一列识别一组无线接口技术。更多空间有效的安排给予在存储的字节组内的被映射的比特组,其中每个比特的位置代表一个特定的干扰源类型。
|
802.11b |
802.11a |
UWB |
BT |
802.11b | | | |
X |
802.11a | | |
X | |
UWB | |
X | | |
BT |
X | | | |
共存驱动器300最初为每个当前安装在计算设备上的无线技术确定干扰源组。在本发明的一个实施例中,对于每个安装的无线接口,共存驱动器300遍历一组已知的有可能干扰每个安装的无线接口的干扰源。如果在步骤500识别的干扰源在干扰源组内存在,然后将干扰源添加到一组干扰源,用于指定一适当的VCD。当已经处理了所有安装的无线接口,确定相交的干扰源组并且合并内容(所识别的干扰源)。在图3中所阐述的说明性例子中,802.11b和蓝牙技术属于一个干扰源组,而802.11a和UWB无线技术属于VCD将创建的第二个组。
在步骤504期间,由共存驱动器300指定(如果需要)一个或多个VCD来处理干扰信号源。特别地,在步骤502期间所识别的、作为结果的合并的干扰源组被应用于一组VCD描述,来确定要由共存驱动器300实例化的合适的VCD。在图3中提供的例子中,共存驱动器300创建VCD 320来处理802.11b网络接口与蓝牙接口之间有可能的冲突,并且共存驱动器300创建VCD 322来处理802.11a网络接口与UWB接口之间有可能的冲突。
注意,为了指定/创建VCD特定的无线技术不需要在计算设备上存在/安装,在所述计算设备上共存驱动器300运行被认为是一个干扰源。因而,例如,创建VCD 320以处理802.11b与蓝牙技术之间的冲突,与两种类型的无线网络接口是否定位在计算设备上(或者一个无线技术只是一个外部的干扰源)无关。不过,VCD的自适应410、优先化420和排队430任务的连续运行,受干扰源是否定位于计算设备上的影响,因为外部干扰源不能提交用于由计算设备传输的数据组(数据包)。VCD能够自适应外部干扰源。作为例子,如果VCD确定802.11b发射器正在产生干扰,那么VCD可以通过在其监视控制下自适应/限制BT驱动器的传输到特定的、不受影响的频率范围。同样,如果802.11b收发器的干扰源是BT发射器,那么VCD可以有可能选择一个特定的可用的信道,它较少可能遭遇对BT发射器的干扰。
在步骤506期间,共存驱动器300启动在步骤504期间指定的VCD组。在一个说明性实施例中,VCD 320和322是从自VCD基类导出的子类实例化的。象这样,VCD 320和322共享一个可执行的代码基础,它是为所有由共存驱动器300启动的VCD提供的。不过,每个子类包括它自己唯一的功能、操作、方法等的组,用于执行在图4中所阐述的上述VCD任务。每个VCD实例提供它自己的上下文。每个VCD在共存驱动器300内运行,而共存驱动器300在作为中间层的NDIS协议栈内运行。
每个VCD的共存处理
转到图6,一组步骤概括示例性VCD的操作,这些VCD是由共存驱动器300在步骤506期间启动的。一般而言,VCD执行一组步骤以使VCD操作自适应于现有的/有可能的干扰条件。之后,VCD执行指定的解决当前存在的干扰条件的共存方案。在本发明的一个实施例中,在接收适当的触发事件--诸如丢失连接、被禁止的网络接口、在无线接口上的服务质量的下降等的通知时,在图6中概括的步骤组被重新起动和执行。
一旦由共存驱动器300启动,在步骤600,VCD或者代表VCD的实体,从介质访问控制驱动器获得有关安装的网络接口的可运行的信息,VCD与所述网络接口相关联。这样的数据包括:可运行的频率,信号强度,数据包出错率,平均再试计数,数据包丢失率,噪声阈值等。信息收集步骤600可以为在图6中所阐述的步骤的每次迭代而重复任意次数--甚至在图6中所示的步骤的其它一些步骤正在执行的同时。这样,在图6所示的完整序列的迭代之间所获得的数据可以被处理(例如求平均),以消除不代表无线网络接口的长期运行环境的瞬时异常读数。
在步骤602期间,VCD按照上述自适应任务410,为每个无线接口的每个信道确定“拥塞/干扰(C/I)度量”。在本发明的一个实施例中,这个度量包括在步骤600期间获得的信息的加权平均。之后,在步骤604期间,使用C/I值选择一个可用的信道(或多个信道)用于一个或多个话务流动至由VCD服务的一个或多个无线网络接口。用于执行信道选择的示例性步骤组,以及有可能选择一个不同的网络接口,在本文下面参考图7描述。
在选择一组信道之后,在步骤606VCD执行前述VCD自适应410、优先化420、排队430和命令/控制440任务,作为例子,在图4中所指定的。自适应任务410有可能包括周期性地确定信道的C/I值,并且重新执行步骤600、602和604以建立新的信道组(以及有可能不同的网络接口组)。
转到图7,概括一组步骤,用于执行信道选择和为由VCD服务的一组无线网络接口建立适当的共存方案。最初,在步骤700期间,VCD将一个阈值和一个信道选择方案应用于在步骤602期间产生的C/I度量值,以提供用于每个无线网络接口的一个或多个信道,在这些无线网络接口上将传输数据包。作为例子,如果一个信道的C/I度量低于一个可接受的阈值,则VCD搜索一个更好的信道用于相同的无线技术并切换至那个信道。在利用多个信道(例如蓝牙或两个使用相同无线技术的网络接口)的无线技术的情况下,VCD确定一组可接受的信道。之后,在步骤702,如果一个或多个无线接口/技术正经历不可接受的干扰,使得信道选择步骤700未能建立一组满意的信道用于由VCD管理的无线接口组,然后控制传递至步骤704。
在步骤704,如果可接受可替换的无线技术或用于相同技术网络的供应者(例如,两个提供不同频率的、不同的Wi-Fi网络接入点供应者)可以找到,那么执行这些步骤以开始切换至可替换的技术/网络。通常,选择一个可替换的无线技术或网络是以这样一种方式执行的,即保证可替换的技术/网络满足由在步骤702期间被认为不可接受的无线接口/技术提供的基本等级功能性。例如,通常不希望切换至一个不提供同样多连接性或者是更少安全的网络。由于无线技术接口组有可能已经改变,所以为计算设备确定一新的VCD组。
如果在步骤702,无线网络接口展示可接受的信号质量,那么控制传递至步骤706。在步骤706,VCD最初在两个共存方案类型之间作出一个一般的选择:频率自适应和接口切换。在本发明的一个实施例中,如果频率自适应是可用的,那么控制传递至步骤708。在步骤708,VCD指定共享共存方案的频率范围,其中由VCD代表的无线接口/技术组中任何一个使用的频率范围/信道,与由所述组中的任何其它无线接口/技术使用的任何频率范围/信道是不重叠的。当选择频率范围时,较大的分离比较小的分离更佳,以便使之免于信号漏出。因而,通过精心地选择运行的频率范围,由无线技术组的传输可以并行地发生。在下面提供这样的方案的例子。
共处一起的技术之间的波段自适应
在步骤708期间指定的一个共存方案中,自适应任务410通过调整由一个或多个竞争技术使用的信道/频率范围组来尝试消除干扰。例如,在处理802.11b与蓝牙传输之间的冲突的VCD 320的情况下,自适应任务410指定一组信道用于由蓝牙发射器利用的自适应跳频(adaptive hop)组,与当前由802.11b收发器利用的信道的频率范围不重叠。相似地,VCD 322指定要由UWB收发器使用的特定信道,以避免正在由802.11a收发器当前使用的信道。一旦已经由自适应任务410确定了信道/频率范围,通过由命令/控制任务440发出的网络接口驱动器专用的指令执行决定。
不过,如果在步骤706频率自适应不可用,那么控制传递至步骤710,在这里由VCD指定切换共存方案的收发器。在这种情况下,VCD调节数据包向下流至无线网络接口驱动器,以保证计算设备不同时在相同的的频率范围内传输数据包。
共处一起的技术之间的收发器切换自适应
如果由于未解决的传输信道重叠,数据话务不能由冲突的无线技术同时传输,那么VCD规定一个运行的时间分片模式用于一组无线网络接口,其中每个冲突的共处一起的无线接口在互相排斥的时间帧中传输数据。
VCD配置话务排序方案,按照自适应任务410的一个方面,它是由在本文下面所述的优先化420、排队430和命令/控制440任务执行的。尽管在话务排序模式内运行,用于冲突的无线技术的数据话务是由VCD调节的,以保证计算设备不同时使用两个冲突的信道来传输数据包。话务处理算法(在本文下面描述)基于例如,C/I度量、传输优先权、饥饿时间(starvation time)、驱动器延迟等,建立用于通过由特定的VCD实例支持的冲突的无线技术传输未决的数据包的顺序。
共处在一起的技术之间基于需求的收发器切换自适应
在上述用于处理冲突的无线网络接口技术的收发器切换方案的变体中,自适应任务410利用知道特定的无线技术何时将使用特定的频带来实现一个共存方案,它并行地在时间上某些点传输以及在其它时间内顺序地传输(由于传输频率冲突)。在特定的例子中,涉及共处一起的蓝牙和802.11b无线网络接口,蓝牙1.0接口在79个信道上的跳频,并且每个信道是1MHz宽。因此它覆盖几乎整个ISM波段2.402至2.483GHz。802.11b网络接口使用这个波段的22MHz。因此,与802.11b信号传输冲突的可能存在于蓝牙1.0接口的22个信道上。
下面的共存方案,由自适应任务410指定的,利用在蓝牙接口正在使用剩余的57个不重叠的频率时的迸发性。要促进实现上述并发方案,虚拟共存驱动器320确定/使用正在由蓝牙驱动器使用的跳频算法(时钟和主控MAC地址的函数)。当因为并发的802.11b传输而确定是否拖延发送一个数据包时,VCD确定下一跳频是否干扰802.11b传输。如果不,那么允许并发的蓝牙和802.11b传输。
在结束时(in closing),参考图7,上述共存方案只是示例性的。共存驱动器300结构提供高度灵活和可扩充的结构,通过与所识别的无线技术的特定组合相关联的VCD规范,它支持事实上指定任何类型的共存方案。例如,在本发明的一个实施例中,不是按优先权组织/排队数据包,而是按应用、源、无线接口、按这些和/或优先权(例如,高优先权BT较适合通过高优先权的802.11,但低优先权的802.11通过低优先的BT)等的组合来安排数据包。而且,在图7中所示的步骤是示例性的。在本发明的可替换的实施例中,其中VCD支持两种一般类型的共存方案,那么不需要执行步骤706。
那些本领域的熟练技术人员将意识到,已经在此描述了一个新和有用的方法和框架,用于促进配置/选择一个或多个无线网络访问的模式。更具体地说,在此所述的无线网络接口选择和共存驱动器结构,基于由与特定网络接口和无线技术相关联的网络接口驱动器组提供的状态信息,促进了自动选择网络访问的特定模式。由于许多可能的计算环境本发明的原理可以应用,以及执行自动网络访问配置以解决干扰和任何在无线数据通信时引起的共存问题的灵活性都是预期的,应该认识到,在此所述的实施例是说明性的并且不应该认为限制本发明的范围。那些在本发明所应用的领域中熟练的技术人员将意识到,在不脱离本发明的精神的情况下,可以在安排和细节上修改说明性的实施例。因此,在此所述的本发明预期所述这样的实施例都出现在所附权利要求书及其等价物的范围之内。