网络设备驱动体系结构的制作方法

文档序号:6436578阅读:241来源:国知局
专利名称:网络设备驱动体系结构的制作方法
技术领域
本发明涉及一种用于高效灵活地访问网络接口控制器(NIC)的网络设备驱动体系结构。
背景技术
计算机软件通常能够分为操作系统软件和应用软件两种类型。操作系统(OS)能够被视为一种资源管理器,使诸如处理器,存储器,输入/输出(I/O)设备和通信设备之类的计算机资源对用户是可用的。同时也提供基本的功能,基于所述功能应用软件能够被写入并执行。操作系统的重要功能包括用户之间共享硬件,防止用户之间相互干扰,资源调度,组织数据以安全迅速地访问,以及支持I/O功能和网络通信。
OS的中心部分通常指的是内核。内核通常只是被认为只是代码的一部分,这些代码共同的组成整个OS,但它是其中最集中使用的一部分代码。内核定义所谓的用户空间是指,在其中应用软件运行,并向用户设备提供服务,包括存储器管理,分配处理资源,并响应来自用户设备或处理的系统调用。内核的其它重要功能包括中断处理,进程管理和同步,以及包括网络通信的I/O管理。
由于许多不同的硬件设备都能够连接于计算机系统,因此一些I/O功能通常实现为与设备无关的普通功能。接着在所谓的设备驱动之内分配与设备相关的功能。这意味着需要访问诸如网络通信设备的特定硬件设备的用户设备向OS提出系统调用,OS依次调用与硬件设备相关的设备驱动。
网络接口控制器(NIC)是一种通常连接于计算机系统以提供诸如以太网或ATM通信的网络通信能力的硬件设备。NIC控制器通常执行较低级别的协议,例如层1(PHY)和层2(MAC,LLC)协议,而较高级别的协议(例如TCP/IP协议组)传统上分配于OS中,以内核模式运行。而且,例如,群集器通常具有运行于以太网之上的所有权协议,因为在系统区域网络(SANs)中,TCP/IP(传输通信协议/网间协议)不是很适合群集器处理。这些所有权协议通常也以内核模式运行。
然而,集中式内核模式(in-kemel)协议处理使用户设备不能实现由下层高速网络所提供的潜在的原始性能。该性能问题主要是由于用户空间和内核空间,被污染的高速缓存(polluted cache),中断和非优化代码之间的信息拷贝所导致的。集中的信息拷贝产生了巨大的开销,尤其是对缺乏的(short)信息,并且是具有标准操作系统的网络子系统的高处理器负载和低吞吐量的主要原因。
随着诸如吉比特以太网,ATM和Infiniband之类的高性能网络通信技术的出现,这个问题已经变得更为显著。将这种高性能通信技术投入使用的主要挑战主要在于建立系统,该系统能够高效地连接这些网络媒介并在两个网络通信设备之间从始至终维持高带宽。
这一点已导致计算机工业开发了支持从用户空间直接访问NIC,并避免在用户空间和内核空间之间的存在信息拷贝的网络设备驱动。用户空间网络访问体系结构类型的最公知的范例是由因特尔公司,微软公司和康柏计算机公司开发的虚拟接口体系结构(VIA)。虚拟接口体系结构(VIA)是用于系统区域网络(SystemArea Networks)的工业标准,支持对NIC进行直接,零拷贝的用户空间访问。VIA体系结构设计用于消除在过去已使传统网络设备成为性能瓶颈的信息拷贝,每个信息的中断和其他内核开销。正如所述,例如在1998年9月9日的因特尔虚拟接口(VI)体系结构开发者指南(Intel Virtual Interface(VI)Architecture Developer’sGuide)和在国际专利申请WO00/41358的说明中,VIA体系结构避免了中间数据拷贝并旁路操作系统内核以获取低等待时间,高带宽的通信。VIA模式包括VI用户和VI提供者。VI用户通常包括用户设备和操作系统通信设备以及VI用户代理。VI提供者通常包括VINIC和VI内核代理的组合。虚拟接口(VI)是VINIC和用户设备或处理之间的直接接口。VI允许NIC直接访问用户设备的存储器以在设备和网络之间进行数据传送操作。VI通常包括发送队列和接收队列,其中每一个都能够直接映射到用户地址空间,从而向网络级别提供直接的用户空间访问并旁路操作系统内核。
技术报告DART-A Low Overhead ATM Network Interface Chip,TR-96-18,1996年8月公开了一种为了通过提供向/从网络进行直接、受保护的设备访问从而得到高带宽、低开销通信而设计的ATM NIC。
VIA体系结构(以及类似体系结构)的主要缺点在于其需要特定的VIA启动的NIC控制器,而且不能在诸如普通以太网NIC控制器之类的现有(off-the-shelf)NIC控制器上运行。由于网络通信的许多功能都依赖于诸如TCP/IP之类的内核级别协议,所以VIA体系结构同时需要VIA启动的NIC和普通以太网(TCP/IP)NIC。因此,VIA体系结构并不优选实施到现有系统中,但通常需要现有系统硬件的重新设计,将另外的NIC和/或NIC端口加入到系统中。重新设计电路板,包括设计,测试,产品加工(handling),保存,备件等。会很容易导致大约(in theorder of)数百万美元的额外花销。

发明内容
本发明克服了现有技术设备的这些和其他缺点。
本发明的一般目的在于对网络接口控制器(NIC)提供高效灵活的访问,消除CPU在通信链路中的瓶颈。
本发明还有一个目的在于提供一个改良的、花销最优化的网络设备驱动体系结构。特别地,如果网络设备驱动体系结构适合实施并集成到现有系统中则是有益的。
本发明的另一个目的在于提供一个稳固灵活的网络设备驱动,该设备驱动不是NIC相关的,并且与任何的现有NIC硬件一起运行。
由所附的权利要求定义的本发明达到了这些以及其他目的。
本发明的总体思想是通过对NIC,优选地对相同NIC端口进行组合的内核空间访问和用户空间访问来提供一种高效灵活并且效能成本合算的网络设备驱动体系结构。与用户空间网络访问体系结构类似,通过对NIC进行直接的用户空间访问,并且最重要的是在内核空间和NIC之间进行用户空间隧道访问(tunneledaccess)才能实现这一点。
从体系结构的角度来说,新颖的网络设备驱动体系结构通常包括内核空间设备驱动以及用户空间设备驱动功能。内核空间设备驱动适用于通过内核空间—用户空间接口在内核空间和用户空间之间进行访问。用户空间设备驱动功能适用于通过用户空间—NIC接口在用户空间和所述NIC之间进行直接访问。该用户空间设备驱动功能也适用于互连内核空间—用户空间接口和用户空间—NIC接口以对NIC进行组合的内核空间访问和用户空间访问。这样就获得了对NIC的高效用户空间访问,而与此同时也使内核级别的协议可以在相同的NIC上运行。
优选地,内核空间设备驱动具有两个不同的操作模式。在第一模式中,运行内核空间设备驱动以通过内核空间—NIC接口直接访问NIC。在第二模式中,也指的是用户空间隧道访问模式,运行内核空间设备驱动以通过用户空间设备驱动功能访问NIC。
有利地是,用户空间设备驱动功能配置为在用户设备的情况下执行,例如实施为用户库功能。为了稳固和安全,当激活用户空间隧道访问模式时,如果用户设备系统崩溃,则操作系统命令内核空间设备驱动转换回第一操作模式。作为第二防御线或作为可选项,内核空间设备驱动可以任选地装备一个定时监视器,如果在预定的时间段没有来自用户空间设备驱动功能的调用,则转换回第一操作模式。
在一个优选实施例中,内核空间设备驱动具有网络设备驱动核心和内核空间代理两个基本的构件。优选地,网络设备驱动核心基于例如从商业卖主所获得的标准网络设备驱动,具有其他的功能使设备驱动在默认模式以及本发明的用户空间隧道访问模式中运行。在默认模式中,网络设备驱动核心运行为一个普通的网络设备驱动,直接访问NIC。在用户空间隧道访问模式中,驱动核心将输出数据传送到内核代理并从内核代理接收输入数据。内核代理管理内核空间—用户空间接口,并支持向/从用户空间设备驱动功能传输信息。内核代理通常包括为不同类型的NIC控制器所共有的功能,因此使特定NIC的标准网络设备驱动容易适合于支持内核空间和NIC之间的用户空间隧道访问的新颖网络设备驱动体系结构。
总之,本发明允许对相同NIC端口上的网络层同时进行用户空间和内核空间访问,从而减少了所需NIC端口的数目并消除了硬件重新设计的需要。通过在相同的NIC之上运行,能够获取更小的开销(footprint)/花销和更好的网络利用。新颖的网络设备驱动体系结构非常适合需要高性能网络通信的设备以及依赖内核级别协议的功能。这种设备的例子能够在嵌入式环境,通信系统等中找到。
应该理解的是,表述“NIC访问”和“对NIC进行访问”既包括向网络级别发送信息也包括从网络级别接收信息。
新颖的网络设备驱动体系结构的其他优势包括-减少硬件空间和能量损耗,其对于嵌入类型的系统是尤为重要的;-更少的布线;-减少相关通信开关所需的端口数目;从而允许使用更小和更便宜的开关;和-在网络中高效使用带宽。
在阅读以下对本发明实施例的描述中将认识到本发明所提供的其他优势。


参照以下说明和附图将会更好地理解本发明以及本发明的其他目的和优势,其中图1是根据本发明优选实施例的网络设备驱动体系结构的概略框图;图2示例了对根据本发明的网络设备驱动内的零拷贝信息传送所支持的NIC进行组合的用户空间访问和内核空间访问。
图3是示例根据本发明的网络设备驱动体系结构的优选实施的示意框图;图4是根据本发明优选实施例的网络访问方法的示意流程图;图5-10是示例图3的分布式网络设备驱动体系结构中的不同通信量情况的简化视图;以及图11示例了整个系统设备的具体范例。
具体实施例方式
贯穿附图,相同的附图标记将用于相应的或相同的元件。
图1是根据本发明优选实施例的网络设备驱动体系结构的概略框图。网络设备驱动体系结构在其系统环境中被示出,包括用户空间,内核空间以及网络空间。
本发明提出了一种网络设备驱动体系结构,在其中一小部分标准设备驱动功能分给了提供直接NIC通信的用户空间,而通过用户空间,内核空间设备驱动具有NIC访问的其他功能。由此,网络设备驱动功能分给了内核空间和用户空间,并且整个网络设备驱动包括内核空间设备驱动10和用户空间设备驱动功能20。内核空间设备驱动10适于通过内核空间—用户空间接口15对用户空间设备驱动功能20进行访问。用户空间设备驱动功能20适于通过用户空间—NIC接口25在用户空间和NIC30之间进行直接访问,并还适用于互连内核空间—用户空间接口15和用户空间—NIC接口25以提供对NIC30进行组合的内核空间访问和用户空间访问。用户空间设备驱动功能20提供对NIC进行直接,零拷贝的用户空间访问,而将要在内核空间和NIC之间传送的信息将通过组合使用内核空间设备驱动10,用户空间设备驱动功能20以及两个相应的接口15,25而“通过”用户空间。这样,获得了对NIC30的高效用户空间访问,而与此同时也允许内核级别协议45在相同的NIC上运行。本发明的网络设备驱动体系结构支持对到/来自用户设备40的用户空间通信使用专用NIC端口,但也支持对内核级别的协议和用户级别的协议高效共享相同的端口。通常共享相同NIC端口的可能性解决了花销最优化的问题。共享相同NIC端口的另一个重要好处是可以将新颖的设备驱动体系结构集成到现有系统中而无需硬件的改变。从而可以避免系统的重新设计,节约了大约几百万美元的花销。
优选地,内核空间设备驱动10具有两个不同的操作模式。在第一模式中,内核空间设备驱动10作为标准网络设备驱动运行通过内核空间—NIC接口35直接访问NIC30。在第二模式中,也指的是用户空间隧道访问模式,运行内核空间设备驱动10以利用上述的用户空间隧道机制访问NIC25。
有利的是,用户空间设备驱动功能20配置为在用户设备40的情况下执行,例如实施为用户库功能。重要的是内核级别协议45在用户设备崩溃或死锁情况下不会停滞。在用户空间隧道访问模式中,如果用户设备系统崩溃,则操作系统命令内核空间设备驱动10转换回第一操作模式。在用户设备系统崩溃之前,现在内核空间设备驱动10访问与用户设备访问的端口相同的NIC端口。作为第二防御线或作为可选项,内核空间设备驱动10可以装备一个任选的软件定时监视器12,如果在预定的时间段没有来自用户空间设备驱动功能20的调用,则转换回第一操作模式。可选地,也可以将一种基于计数器的硬件定时监视器连接到网络设备驱动体系结构。
在本发明的优选实施例中,新颖的网络设备驱动体系结构之内的所有通信接口15,25和35都支持零拷贝的信息传送。为了更好地理解本发明,现将参照图2说明对网络设备驱动之内的零拷贝信息传送所支持的NIC进行组合的用户空间访问和内核空间访问的例子。优选地,每个接口15,25和35是基于一个共享的存储器结构,例如以缓冲器队列的形式。每个接口通常与一个发送队列(KTX;TX;NTX)和一个接收队列(KRX;RX;NRX)相关联。缓冲器队列通常适于保存指针信息,并通过写尾标并从头读取而被访问。指针信息指向真正的数据,例如存储在公共存储器中的信息。
现在将描述对于用户级别的协议和对于内核级别协议,由用户设备向NIC方向的信息传送。显然该信息传送与在相反方向的信息传送是类似的。
在用户空间终端协议的情况下,将要从用户设备40发送到NIC30的信息MSG-1存储在公共系统存储器50中或能够被相关系统组件访问的任何其他存储器中。系统存储器50中指向(虚线)相应存储地址的指针P-1连同NIC访问请求一起被传送到用户空间设备驱动功能20。用户空间设备驱动功能20将指针放入用户空间—NIC接口25的TX队列中(位于用户地址空间中)。随后,NIC30通过从TX队列读取指针并在系统存储器50中相应位置执行直接存储器存取(DMA)以获取信息而使用信息。
在用户设备40需要内核级别协议的情况下,用户设备产生一个相应的系统调用,及将要传送到NIC30的信息拷贝到内核空间并由相关的内核空间协议45进行处理。一旦信息MSG-2在内核空间中,则通常将不会再有信息拷贝。相反,内核级别协议45将系统存储器50中指向(虚线)信息存储位置的指针P-2传送到内核空间设备驱动10,而内核空间设备驱动10将指针插入到内核空间—用户空间接口15的KTX队列中。用户空间设备驱动功能20轮询KTX队列并将指针移动到用户空间—NIC接口25的TX队列中。一旦指针已移动到队列的头(head),则NIC30将读取该指针并将相应的信息通过DMA访问取到系统存储器50。
优选地,所有的缓冲器队列由内核空间设备驱动分配于内核地址空间中。队列映射到用户空间设备驱动功能的地址空间。为了使队列对于NIC来说是可看到的,首先将它们映射到NIC总线地址空间,然后将所获得的地址被写入特定的NIC寄存器。
通过利用信息指针而不是完全的信息,将不会有目前的信息拷贝。
图3是示例根据本发明的网络设备驱动体系结构的优选实施的示意框图。优选地,内核空间设备驱动10具有网络设备驱动核心(NDD核心)14和内核空间代理16两个基本的构件。NDD核心14和内核代理16与用户空间设备驱动功能20一起定义了整个网络设备驱动体系结构。
用户空间信息在用户空间和NIC之间相互交换而无需内核参与,而且由于用户空间设备驱动功能通常以轮询模式运行,因此将不会存在每个信息中断。从内核级别用户产生的信息经由内核代理16,用户空间设备驱动功能20以及相应的接口15,25在NDD核心14和NIC30之间穿过。
诸如Tru64,Linux,Windows和OSE的大多数操作系统都支持某些形式的设备驱动结构,这些设备驱动结构包括一系列规则,接口和关于如何开发设备驱动的指导。这些结构被很好地保存(documented),并且OS卖主通常提供生成设备驱动模板的工具,从而节省开发新设备驱动的宝贵的设计时间和精力。网络设备驱动核心14以及内核代理16通常都相应于适合的设备驱动结构而执行。
优选地,网络设备驱动核心14是基于标准网络设备驱动的(例如从商业卖主获得的),具有其他的功能使设备驱动既可以在默认模式也可以在本发明的用户空间隧道访问模式中运行。设计基础网络设备驱动的资源代码通常能够从设备驱动卖主那获得,或者通过使用免费的可利用资源代码(例如Linux,NetBSD和FreeBSD)。允许用户空间穿过的设计基础改进通常能够通过将大约50行代码(设计基础代码的~1%)添加到设计基础设备驱动中来实现。也可以通过使用用于生成设备驱动的任何可利用工具来设计内部的NDD核心14。
在默认模式中,NDD核心14运行为普通的网络设备驱动,直接访问NIC。
在用户空间隧道访问模式中,NDD核心14将输出数据传送到内核代理16并从内核代理接收输入数据。由于用户空间设备驱动功能20通常以轮询模式运行,因此优选地,NDD核心或用户空间设备驱动功能也屏蔽与信息处理相关的中断。
便利地,内核代理16执行一些初始步骤,分配邻近存储器,实现内核空间用户空间接口15以及入/出NDD核心14的接口,并将邻近存储器和映射了配置(configuration)静态(state)寄存器(CSR)的存储器映射到用户空间设备驱动功能20的地址空间。内核代理16支持通过内核空间—用户空间接口15在NDD核心14和用户空间设备驱动功能20之间进行的信息传送。由于内核空间—用户空间接口的FIFO队列KTX,KRX被分配于内核地址空间并映射到用户地址空间,因此在内核代理16和用户空间设备驱动功能20之间不需要信息拷贝。内核代理模块通常不依赖于系统所使用的特定NIC,并能够显著地并同步地支持不同类型的NIC控制器,包括快速以太网,吉比特以太网和ATM NIC控制器。
内核代理16也可适于使用用户空间设备驱动功能20监视任何处理的状态。这使得内核代理在用户处理失败的情况下命令NDD核心14转换回默认模式成为可能。
在通常情况下,内核代理16可以通过大约200行新代码与大约300行标准设备驱动结构代码一起实现。
正如以上所述,用户空间设备驱动功能20是整个设备驱动功能的一小部分,并优选实施为在用户空间中执行的用户库功能。它通常以轮询模式运行并支持用户空间和NIC之间的直接信息交换。通常,用户空间设备驱动功能可以由大约200行代码实现。
在一边是诸如TCP/IP和DLI(数据链接接口)之类的内核级别协议45和另一边是NDD核心14之间的接口是由OS提供的现有网络设备驱动API(应用编程接口)。
在NDD核心14和内核代理16之间的接口通常是支持通过特定NIC发送/接收信息的API。
在内核代理14和用户空间设备驱动功能20之间的接口15优选实现为标准文档接口,该接口支持向内核代理建立连接的用户空间设备驱动功能请求,将邻近的缓冲存储器和从内核代理映射CSR的存储器映射到设备情况(context)中。如果需要的话,它也可以支持在内核代理中执行的定时监视器功能并支持从内核代理16到用户空间设备驱动功能20的NIC状态通知。在内核代理14和用户空间设备驱动功能20之间的信息传送是通过如前所述的共享存储器结构而实现的。
在用户设备40和用户空间设备驱动功能20之间的接口通常是API,API连同以用户空间设备驱动功能20和NIC30之间的接口25为基础的FIFO队列,支持直接在用户地址空间和NIC30之间发送/接收信息。该接口可以实现为标准VI接口。
图4是根据本发明优选实施例的网络访问方法的流程图。在步骤S1,通过用户空间NIC接口提供用户空间和NIC之间的直接访问。在步骤S2,与默认操作模式相关,可以通过内核空间—NIC接口提供内核空间和NIC之间的直接访问。在用户空间隧道访问模式,以两个步骤提供内核空间和NIC之间的访问,通过在步骤S3提供内核空间—用户空间接口和通过在步骤S4互连内核空间—用户空间接口和直接用户空间—NIC接口。如果设备系统崩溃则在步骤S5转换回默认模式,这样保持了稳固性和可靠性。作为第二道防线,或者作为步骤S5的可替换步骤,在步骤S6可以使用定时监视器,如果在预定时间没有来自用户空间的调用,则转换回默认模式。在下文中,将参照图5-10描述在图3的分布式网络设备驱动体系结构中许多不同通信(traffic)情况的示例,其中每个附图只示例与各个通信情况相关的那些系统元件。
计算机系统引导并装入操作系统。操作系统装载了内核空间的网络设备驱动以允许访问网络并更为具体地访问网络接口控制器(NIC)30。内核空间设备驱动将执行标准的初始步骤,作为设计基础网络设备驱动(NDD),也称为NDD核心14。
另一个功能是由需要(call for)由驱动控制的每个NIC的附加步骤注册到内核代理(未示出)。在注册步骤中,CSR指针被发送到内核代理,并且一些回复功能也注册在内核代理中(为了在模式之间转换,重启NIC,推动通过内核代理接收的返回信息,错误报告等)。
对于NDD驱动所控制的每个NIC,操作模式都被设置为默认,正如图5和6所示,这意味着信息流将从NDD核心14直接到NIC30并反之亦然。在输出方向,如图5所示,NDD核心14运行为设计基础NDD。另一个功能涉及检查用户空间隧道模式对于这个接口是否是激活的。如果用户空间隧道访问模式是关闭的,则将传给NIC的信息放入NDD核心14的NTX环中。在输入方向,如图6所示,NDD核心14运行为设计基础NDD,并将来自NIC的信息放入NRX环中。
接着,初始化并启动用户设备。在用户设备情况下执行的用户空间设备驱动功能20对内核代理16建立连接并表示其想与哪个端口进行通信。它还向内核代理16请求将DMA区域和CSR寄存器映射到其自己的地址空间,并且内核代理16将对于NIC来说可以看到的存储器映射到用户地址空间。用户空间设备驱动功能20命令内核代理16转换到用户空间隧道访问模式。内核代理将命令提交给NDD核心14,该NDD核心14首先执行一个重置接着标记用户空间隧道访问模式对于该特定NIC接口是激活的。然后NDD核心14执行NIC30的基本初始化,并且优选地,内核代理16初始化定时监视器功能。
用户空间设备驱动功能20在NIC30中设置记录表示TX,RX环位于何处。也可以设置NIC记录来提高本发明所使用的PCI(外部元件扩展接口)或任何其他总线结构的性能。随后,用户空间设备驱动功能20启动TX,RX机制(engines)。
如图7所示,在从用户空间直接到NIC的输出方向,用户设备将信息描述符(与VIA体系结构中使用的描述符类似)或简单的指针传送到用户空间设备驱动功能20,用户空间设备驱动功能20将信息描述符放入位于用户地址空间中的TX环中。通过利用信息描述符/指针,而不是完全的信息,将不会再有信息拷贝。NIC30通过利用TX环中的信息描述符找到公共存储器中的相应位置来使用信息。
如图8所示,在内核级别用户到NIC的输出方向,NDD核心14运行为设计基础NDD,具有另一个功能,就是检查用户空间隧道访问模式对于这个NIC接口是否是激活的。如果隧道访问模式是激活的,则NDD核心14将输入信息描述符传送到内核代理16,内核代理16将描述符放入用于与用户空间设备驱动功能20进行通信的KTX环中。
以可设置的间隔,例如每隔1ms,用户空间设备驱动功能20通常将轮询KTX环并将描述符移动插入到TX环中,所述TX环用于用户空间设备驱动功能20和NIC30之间的通信。最终NIC30通过利用传送来的信息描述符从公共存储器获取到信息来使用信息。
图9和10中示例了从NIC输入方向的两种不同通信情况。NIC30将与输入信息相应的描述符放入RX环中,并且用户空间设备驱动功能20轮询将要输入的信息描述符。信息描述符从RX环中被取出。对于每个信息,检查其(以太网)类型是否匹配用户设备所希望的类型。如图9所示,如果匹配,则将信息传送给用户。相应于图10,如果不匹配,则将信息描述符插入到KRX环中。以可设置的间隔,例如每隔1ms,用户空间设备驱动功能20调用内核代理16。然后内核代理16从KRX环中获取与输入信息相应的描述符并将它们传送到NDD核心14,NDD核心14执行必要的操作以将信息传送给内核级别用户。
如果用户设备系统崩溃,则操作系统通常将通知内核代理16,接着内核代理16将命令NDD核心14转换回默认模式。作为任选的第二道防线或者作为可选择项,内核代理16可以装备一个定时监视器以在操作系统由于某种原因未能通知内核代理16用户设备已经系统崩溃的时候解决问题。例如,定时监视器可以以这种方式实现如果在预定时间,例如10ms,没有来自用户空间设备驱动功能20的调用,则其命令NDD核心14转换回默认模式。这将保证NDD基本功能不会消失多于预定的最小时间周期。
图11中示例了整个系统设备的具体例子。整个系统包括●两个中央处理器基线板(CPBB-A,CPBB-B)。每个CPBB线路板包括一个或多个Alpha服务器(EV68ab,667MHz)和1GB的RAM。
●两个更新总线线路板(UPBB-A,UPBB-B),一个CPBB一个。每个UPBB线路板包括一个因特而82543GC吉比特以太网NIC,以及其他UPBB元件。
●在CPU和cPCI-PCI电桥之间的32字节/66MHz cPCI总线,和cPCI-PCI桥和因特而82543GC NIC之间的64字节/33MHz PCI总线。
●在两对CPBB-UPBB之间的吉比特以太网光纤连接(SX),两对CPBB-UPBB对头拼接(back-to-back)。
●两个基本I/O单元,其中每个都连接到cPCI-PCI电桥,也连接到任选的网络集线器并串行连接到PC-控制台。
在样机测试中,一个CPBB用于执行服务器情况下的测试程序,而另一个CPBB用于执行客户情况下的测试程序。PC-控制台用于访问靠CPBB运行的设备。
测试显示在用户空间利用高效的协议终端确实可以消除CPU在通信链路中的瓶颈。在全双工测试中,PCI总线成为瓶颈,而在信息大于498个八位字节的半双工测试中,以太网成为瓶颈。由于PCI总线是共享总线,所以其成为瓶颈的事实不足为奇。当今市场上存在更好的PCI总线。这种特殊的因特尔NIC支持64字节/66MHz PCI总线,与使用上述的64字节与/33MHz PCI总线相比是基本上双倍的容量。当今市场上的PCI-X也以64字节/133MHz运行。PCI-X2.0将使总线以双倍数据率(266MHz)和四倍数据率(532MHz)运行。另外,PCI-SIG(PCI有共同特殊观点或要求的群体)将发布PCI3.0,其转换到串行连接,为软件用户提供了更快的吞吐能力,更小的开销(footprint)和向后的兼容性。显然地,存在提供系统中PCI总线吞吐量的便利途径。
测试已经显示,利用在相同以太网端口用户空间和内核空间协议共存的方法,可以获取通过具有大约28.73%的处理器负载的PCI和吉比特以太网,在两个基于Alpha的CPBB服务器之间的每秒435000信号对的稳定产量。在相同的处理器环境中使用标准网络设备驱动,处理器负载将以每秒46000信号对的速度达到100%。
以上所述的实施例只是给出示例,而且应该理解的是本发明并不局限于此。注意这一点也是很重要的本发明不依赖通信技术(以太网,ATM,Infiniband,……),操作系统(Tru64,Linux,Solaris,Win,……)或主机CPU(Alpha,因特尔,PowerPC,……)。
而且,本发明涉及所有类型的信息和数据以及所有类型的网络,包括LAN(局域网),MAN(城域网),WAN(广域网)和SAN(系统区域网)。
保持本文所公开和要求的基本原则的其他修改,变化和改进都在本发明的范围之内。
权利要求
1.一种用于在操作系统内核空间和网络接口控制器(NIC)之间以及用户空间和所述NIC之间的进行访问的网络设备驱动体系结构,包括-内核空间设备驱动器,适于通过内核空间-用户空间接口,在内核空间和用户空间之间进行访问,以及-用户空间设备驱动器功能,适于通过用户空间-NIC接口在用户空间和所述NIC之间进行直接访问,并适于互连所述内核空间-用户空间接口和所述用户空间-NIC接口,以对所述NIC进行组合的内核空间访问和用户空间访问。
2.根据权利要求1的网络设备驱动体系结构,其中所述内核空间设备驱动器适于建立与所述用户空间设备驱动功能相关的所述内核空间-用户空间接口。
3.根据权利要求1的网络设备驱动体系结构,其中所述用户空间设备驱动功能适于从与所述内核空间-用户空间接口和所述用户空间-NIC接口其中之一相关的存储缓冲器获取指针信息,该指针信息指向公共存储器中的数据,并将所述指针信息插入与另一个所述接口相关的存储缓冲器中,从而互连所述内核空间-用户空间接口和所述用户空间-NIC接口。
4.根据权利要求1的网络设备驱动体系结构,其中每个所述内核空间-用户空间接口和所述用户空间-NIC接口与发送缓冲器和接收缓冲器两个存储缓冲器相关。
5.根据权利要求4的网络设备驱动体系结构,其中对于输出内核级别协议通信,所述内核空间设备驱动器适于将指向公共存储器中的数据的指针信息插入到与所述内核空间-用户空间接口相关的发送缓冲器中,而所述用户空间设备驱动功能适于从那获取所述指针信息并将其插入到与所述用户空间-NIC接口相关的发送缓冲器中,而所述NIC适于从与所述用户空间-NIC接口相关的发送缓冲器中获取所述指针信息,并基于所获得的指针信息从所述公共存储器读取相应数据。
6.根据权利要求4的网络设备驱动体系结构,其中对于输入内核级别协议通信,所述NIC适于将指向公共存储器中的数据的指针信息插入到与所述用户空间-NIC接口相关的接收缓冲器内,而所述用户空间设备驱动功能适于从与所述用户空间-NIC接口相关的接收缓冲器获取所述的指针信息,并将其插入到与所述内核空间-用户空间接口相关的接收缓冲器中,而所述内核空间设备驱动适于获取所述指针信息以传送到内核级别协议,内核级别协议基于指针信息从所述公共存储器读取相应数据。
7.根据权利要求1的网络设备驱动体系结构,其中所述用户空间设备驱动功能配置为在用户应用程序青况下执行。
8.根据权利要求7的网络设备驱动体系结构,其中所述用户空间设备驱动功能实施为用户空间库功能。
9.根据权利要求1的网络设备驱动体系结构,其中在第一操作模式中,运行所述内核空间设备驱动器,以通过内核空间-NIC接口直接访问所述NIC,在第二操作模式,运行所述内核空间设备驱动,以通过所述内核空间-用户空间接口,所述用户空间设备驱动功能和所述用户空间NIC接口访问所述NIC。
10.根据权利要求9的网络设备驱动体系结构,其中所述用户空间设备驱动功能配置为在用户应用程序情况下执行,而所述内核空间设备驱动器适于响应用户驱动程序失败而转换到所述第一操作模式。
11.根据权利要求9或10的网络设备驱动体系结构,其中所述内核空间设备驱动包括定时监视器功能,如果在一段预定时间没有来自所述用户空间设备驱动功能的调用,则转换到所述第一操作模式。
12.根据权利要求9的网络设备驱动体系结构,其中所述内核空间设备驱动包括-内核空间代理,用于管理所述内核空间用户空间接口;-网络设备驱动核心,运行以在所述第一操作模式直接访问所述NIC,并运行以在所述第二操作模式,将要输出的数据发送到所述内核空间代理,并从所述内核空间代理接收输入数据。
13.根据权利要求12的网络设备驱动体系结构,其中所述用户空间设备驱动功能配置为在用户驱动程序情况下执行,而所述内核空间代理适于通过命令所述网络设备驱动核心转换到所述第一操作模式来响应用户设备失败。
14.根据权利要求12或13的网络设备驱动体系结构,其中所述内核空间代理包括定时监视器功能,如果在一段预定时间没有来自所述用户空间设备驱动功能的调用,则命令所述网络设备驱动核心转换到所述第一操作模式。
15.一种系统,提供对网络接口控制器(NIC)的操作系统内核空间访问以及用户空间访问,所述系统包括用于对相同NIC进行组合的内核空间访问和用户空间访问的装置。
16.根据权利要求15的系统,其中所述用于对相同NIC进行组合的内核空间访问和用户空间访问的装置包括-用于直接在用户空间和NIC之间进行访问的装置;以及-用于在内核空间和所述NIC之间进行用户空间隧道访问的装置。
17.一种用于在操作系统内核空间和网络接口控制器(NIC)之间以及用户空间和所述NIC之间进行访问的方法,所述方法包括以下步骤-通过内核空间-用户空间接口在内核空间和用户空间之间进行访问;-通过用户空间-NIC接口在用户空间和所述NIC之间进行直接访问;以及-互连所述内核空间-用户空间接口和所述用户空间NIC接口以在内核空间和所述NIC之间进行用户空间隧道访问。
18.根据权利要求17的方法,其中所述互连步骤包括以下步骤-从与所述内核空间-用户空间接口和所述用户空间-NIC接口其中之一相关的存储缓冲器获取指针信息,该指针信息指向公共存储器中的数据,并-将所述指针信息插入与另一个所述接口相关的存储缓冲器中。
19.根据权利要求17的方法,其中所述NIC访问功能分布在内核空间设备驱动器和用户空间设备驱动功能之间。
20.根据权利要求19的方法,还包括以下步骤,对于输出内核级别协议通信,所述内核空间设备驱动器将指向公共存储器中的数据的指针信息插入到与所述内核空间-用户空间接口相关的发送缓冲器中的步骤,和所述用户空间设备驱动功能从那获取所述指针信息并将其插入到与所述用户空间-NIC接口相关的发送缓冲器中,以及所述NIC从与所述用户空间NIC接口相关的发送缓冲器中获取所述指针信息,并基于所获得的指针信息从所述公共存储器读取相应数据。
21.根据权利要求19的方法,还包括以下步骤,对于输入内核级别协议通信,所述NIC将指向公共存储器中的数据的指针信息插入到与所述用户空间-NIC接口相关的接收缓冲器内,和所述用户空间设备驱动功能从与所述用户空间-NIC接口相关的接收缓冲器获取所述的指针信息,并将其插入到与所述内核空间-用户空间接口相关的接收缓冲器中,以及所述内核空间设备驱动器获取所述指针信息以传送到内核级别协议,内核级别协议基于指针信息从所述公共存储器读取相应数据。
22.根据权利要求17的方法,其中所述在用户空间和所述NIC之间进行直接访问的步骤和所述互连步骤都是在用户应用程序的情况下执行的。
23.根据权利要求22的方法,其中所述在用户空间和所述NIC之间进行直接访问的步骤和所述互连步骤是通过将用户空间设备驱动功能实施为用户空间库功能而执行的。
24.根据权利要求17的方法,还包括以下步骤-在内核空间设备驱动的第一操作模式中,通过内核空间-NIC接口从所述内核空间设备驱动直接访问所述NIC;-在所述内核空间设备驱动的第二操作模式中,通过互连的内核空间-用户空间接口和用户空间-NIC接口访问所述NIC。
25.根据权利要求24的方法,其中所述在用户空间和所述NIC之间进行直接访问的步骤和所述互连步骤都是在用户设备的情况下执行的,并且操作系统命令所述内核空间设备驱动转换到所述第一操作模式以响应用户设备失败。
26.根据权利要求24或25的方法,还包括以下步骤,如果在预定时间内没有用户空间调用所述内核空间设备驱动,则转换到所述第一操作模式。
27.一种方法,用于提供对网络接口控制器(NIC)的操作系统内核空间访问以及用户空间访问,所述方法包括对相同NIC提供组合的内核空间访问和用户空间访问的步骤。
28.根据权利要求27的方法,其中所述对相同NIC提供组合的内核空间访问和用户空间访问的步骤包括以下步骤-直接在用户空间和NIC之间进行访问;以及-在内核空间和所述NIC之间进行用户空间隧道访问。
29.根据权利要求27的方法,其中组合的内核空间访问和用户空间访问是对相同NIC端口提供的。
全文摘要
本发明提出一种网络设备驱动体系结构,具有的功能分布于内核空间和用户空间之间。整个网络设备驱动包括内核空间设备驱动(10)和用户空间设备驱动功能(20)。内核空间设备驱动(10)适用于通过内核空间—用户空间接口(15)对用户空间设备驱动功能(20)进行访问。用户空间设备驱动功能(20)适用于通过用户空间—NIC接口(25)在用户空间和NIC(30)之间进行直接访问,并且还适用于互连内核空间—用户空间接口(15)和用户空间-NIC接口(25)以提供对NIC(30)进行组合的内核空间访问和用户空间访问。用户空间设备驱动功能(20)提供对NIC进行直接,零拷贝的用户空间访问,而将要在内核空间和NIC之间传送的信息将通过组合使用内核空间设备驱动(10),用户空间设备驱动功能(20)以及两个相应的接口(15,25)而“通过”用户空间。
文档编号G06F13/10GK1647054SQ02829155
公开日2005年7月27日 申请日期2002年6月19日 优先权日2002年6月19日
发明者M·安德耶利克 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1