CN1647054B - 双模网络设备驱动设备、系统和方法 - Google Patents
双模网络设备驱动设备、系统和方法 Download PDFInfo
- Publication number
- CN1647054B CN1647054B CN028291557A CN02829155A CN1647054B CN 1647054 B CN1647054 B CN 1647054B CN 028291557 A CN028291557 A CN 028291557A CN 02829155 A CN02829155 A CN 02829155A CN 1647054 B CN1647054 B CN 1647054B
- Authority
- CN
- China
- Prior art keywords
- space
- user
- kernel
- device driver
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9036—Common buffer combined with individual queues
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Small-Scale Networks (AREA)
- Vending Machines For Individual Products (AREA)
- Placing Or Removing Of Piles Or Sheet Piles, Or Accessories Thereof (AREA)
Abstract
本发明提出一种网络设备驱动体系结构,具有的功能分布于内核空间和用户空间之间。整个网络设备驱动包括内核空间设备驱动(10)和用户空间设备驱动功能(20)。内核空间设备驱动(10)适用于通过内核空间一用户空间接口(15)对用户空间设备驱动功能(20)进行访问。用户空间设备驱动功能(20)适用于通过用户空间-NIC接口(25)在用户空间和NIC(30)之间进行直接访问,并且还适用于互连内核空间-用户空间接口(15)和用户空间-NIC接口(25)以提供对NIC(30)进行组合的内核空间访问和用户空间访问。用户空间设备驱动功能(20)提供对NIC进行直接,零拷贝的用户空间访问,而将要在内核空间和NIC之间传送的信息将通过组合使用内核空间设备驱动(10),用户空间设备驱动功能(20)以及两个相应的接口(15,25)而“通过”用户空间。
Description
技术领域
本发明涉及一种用于高效灵活地访问网络接口控制器(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-kernel)协议处理使用户应用不能实现由下层高速网络所提供的潜在的原始性能。该性能问题主要是由于用户空间和内核空间,被污染的高速缓存(polluted cache),中断和非优化代码之间的信息拷贝所导致的。集中的信息拷贝产生了巨大的开销,尤其是对缺乏的(short)信息,并且是具有标准操作系统的网络子系统的高处理器负载和低吞吐量的主要原因。
随着诸如吉比特以太网,ATM和Infiniband之类的高性能网络通信技术的出现,这个问题已经变得更为显著。将这种高性能通信技术投入使用的主要挑战主要在于建立系统,该系统能够高效地连接这些网络媒介并在两个网络通信设备之间从始至终维持高带宽。
这一点已导致计算机工业开发了支持从用户空间直接访问NIC,并避免在用户空间和内核空问之间的存在信息拷贝的网络设备驱动。用户空间网络访问体系结构类型的最公知的范例是由因特尔公司,微软公司和康柏计算机公司开发的虚拟接口体系结构(VIA)。虚拟接口体系结构(VIA)是用于系统区域网络(SystemArea Networks)的工业标准,支持对NIC进行直接,零拷贝的用户空间访问。VIA体系结构设计用于消除在过去已使传统网络设备成为性能瓶颈的信息拷贝,每个信息的中断和其他内核开销。正如所述,例如在1998年9月9日的因特尔虚拟接口(VI)体系结构开发者指南(Intel Virtual Interface(VI)Architecture Developer’s Guide)和在国际专利申请WO00/41358的说明中,VIA体系结构避免了中间数据拷贝并旁路操作系统内核以获取低等待时间,高带宽的通信。VIA模式包括Ⅵ用户和Ⅵ提供者。Ⅵ用户通常包括用户应用程序和操作系统通信设备以及Ⅵ用户代理。Ⅵ提供者通常包括ⅥNIC和Ⅵ内核代理的组合。虚拟接口(VI)是ⅥNIC和用户应用或处理之间的直接接口。Ⅵ允许NIC直接访问用户应用的存储器以在应用和网络之间进行数据传送操作。Ⅵ通常包括发送队列和接收队列,其中每一个都能够直接映射到用户地址空间,从而向网络级别提供直接的用户空间访问并旁路操作系统内核。
技术报告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 the order of)数百万美元的额外花销。
发明内容
本发明克服了现有技术设备的这些和其他缺点。
本发明的一般目的在于对网络接口控制器(NIC)提供高效灵活的访问,消除CPU在通信链路中的瓶颈。
本发明还有一个目的在于提供一个改良的、花销最优化的网络设备驱动体系结构。特别地,如果网络设备驱动体系结构适合实施并集成到现有系统中则是有益的。
本发明的另一个目的在于提供一个稳固灵活的网络设备驱动,该设备驱动不是NIC相关的,并且与任何的现有NIC硬件一起运行。
由所附的权利要求定义的本发明达到了这些以及其他目的。
具体地,本发明提供一种用于在操作系统内核空间和网络接口控制器(NIC)之间以及在用户空间和所述NIC之间进行访问的网络设备驱动器,包括:内核空间设备驱动器,适于通过内核空间-用户空间接口在内核空间和用户空间之间进行访问;以及用户空间设备驱动器,适于通过用户空间-NIC接口在用户空间和所述NIC之间进行直接访问,并适于互连所述内核空间-用户空间接口和所述用户空间-NIC接口,以便对所述NIC进行组合的内核空间访问和用户空间访问。
本发明还提供一种用于对网络接口控制器(NIC)进行操作系统内核空间访问以及用户空间访问的系统,所述系统包括用于通过同一NIC的组合的内核空间访问和用户空间访问的装置,其中所述用于通过同一NIC的组合的内核空间访问和用户空间访问的装置包括:用于在用户空间和NIC之间直接访问的装置;用于在内核空间和所述NIC之间的用户空间隧道访问的装置;和用于在内核空间和所述NIC之间进行直接访问的装置。
本发明又提供一种用于在操作系统内核空间和网络接口控制器(NIC)之间以及在用户空间和所述NIC之间进行访问的方法,所述方法包括以下步骤:通过内核空间-用户空间接口,在内核空间和用户空间之间进行访问;通过用户空间-NIC接口,在用户空间和所述NIC之间进行直接访问;和互连所述内核空间-用户空间接口和所述用户空间-NIC接口,以便在内核空间和所述NIC之间进行用户空间隧道访问,其中所述互连步骤包括以下步骤:从与所述内核空间-用户空间接口和所述用户空间-NIC接口之一相关的存储缓冲器中获取指针信息,其中该指针信息指向公共存储器中的数据;和将所述指针信息插入与另一个所述接口相关的存储缓冲器中。
本发明还提供一种用于对网络接口控制器(NIC)进行直接的操作系统内核空间访问以及直接的用户空间访问的方法,所述方法包括通过同一NIC提供组合的内核空间访问和用户空间访问的步骤,其中所述通过同一NIC提供组合的内核空间访问和用户空间访问的步骤包括以下步骤:在用户空间和NIC之间进行直接访问;在内核空间和所述NIC之间进行用户空间隧道访问;和在内核空间和所述NIC之间进行直接访问。
本发明的总体思想是通过对NIC,优选地对相同NIC端口进行组合的(integrated)内核空间访问和用户空间访问来提供一种高效灵活并且效能成本合算的网络设备驱动体系结构。与用户空间网络访问体系结构类似,通过对NIC进行直接的用户空间访问,并且最重要的是在内核空间和NIC之间进行用户空间隧道访问(tunneled access)才能实现这一点。
从体系结构的角度来说,新颖的网络设备驱动体系结构通常包括内核空间设备驱动以及用户空间设备驱动器。内核空间设备驱动适用于通过内核空间-用户空间接口在内核空间和用户空间之间进行访问。用户空间设备驱动器适用于通过用户空间-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在用户空间和NIC 30之间进行直接访问,并还适用于互连内核空间-用户空间接口15和用户空间-NIC接口25以提供对NIC 30进行组合的内核空间访问和用户空间访问。用户空间设备驱动器20提供对NIC进行直接,零拷贝的用户空间访问,而将要在内核空间和NIC之间传送的信息将通过组合使用内核空间设备驱动器10,用户空间设备驱动器20以及两个相应的接口15,25而“通过”用户空间。这样,获得了对NIC 30的高效用户空间访问,而与此同时也允许内核级别协议45在相同的NIC上运行。本发明的网络设备驱动体系结构支持对到/来自用户应用40的用户空间通信使用专用NIC端口,但也支持对内核级别的协议和用户级别的协议高效共享相同的端口。通常共享相同NIC端口的可能性解决了花销最优化的问题。共享相同NIC端口的另一个重要好处是可以将新颖的设备驱动体系结构集成到现有系统中而无需硬件的改变。从而可以避免系统的重新设计,节约了大约几百万美元的花销。
优选地,内核空间设备驱动器10具有两个不同的操作模式。在第一模式中,内核空间设备驱动器10作为标准网络设备驱动器运行,通过内核空间-NIC接口35直接访问NIC 30。在也称为用户空间隧道访问模式的第二模式中,内核空间设备驱动器10用于利用上述的用户空间隧道机制访问NIC 30。
有利的是,用户空间设备驱动器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发送到NIC 30的消息MSG-1存储在公共系统存储器50中或能够被相关系统组件访问的任何其他存储器中。指向(虚线)系统存储器50中相应存储地址的指针P-1连同NIC访问请求一起被传送到用户空间设备驱动器20。用户空间设备驱动器20将指针放入用户空间一NIC接口25的TX队列中(位于用户地址空间中)。随后,NIC 30通过从TX队列读取指针并在系统存储器50中相应位置执行直接存储器存取(DMA)以获取信息而使用该消息。
在用户应用40需要内核级别协议的情况下,该用户应用产生一个相应的系统调用,以及将要传送到NIC 30的信息拷贝到内核空间并由相关的内核空间协议45进行处理。一旦信息MSG-2在内核空间中,则通常将不会再有消息拷贝。相反,内核级别协议45将系统存储器50中指向(虚线)信息存储位置的指针P-2传送到内核空间设备驱动器10,而内核空间设备驱动器10将指针插入到内核空间-用户空间接口15的KTX队列中。用户空间设备驱动器20轮询KTX队列并将指针移动到用户空间-NIC接口25的TX队列中。一旦指针已移动到队列的头(head),则NIC 30将读取该指针并将相应的信息通过DMA访问取到系统存储器50。
优选地,所有的缓冲器队列由内核空间设备驱动分配于内核地址空间中。队列映射到用户空间设备驱动器的地址空间。为了使队列对于NIC来说是可看到的,首先将它们映射到NIC总线地址空间,然后将所获得的地址被写入特定的NIC寄存器。
通过利用信息指针而不是完全的信息,将不会有目前的信息拷贝。
图3是示例根据本发明的网络设备驱动体系结构的优选实施的示意框图。优选地,内核空间设备驱动器10具有网络设备驱动核心(NDD核心)14和内核空间代理16两个基本的构件。NDD核心14和内核代理16与用户空间设备驱动器20一起定义了整个网络设备驱动体系结构。
用户空间信息在用户空间和NIC之间相互交换而无需内核参与,而且由于用户空间设备驱动器通常以轮询模式运行,因此将不会存在每个信息中断。从内核级别用户产生的信息经由内核代理16,用户空间设备驱动器20以及相应的接口15,25在NDD核心14和NIC 30之间穿过。
诸如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控制器,包括快速以太网,吉比特以太网和ATMNIC控制器。
内核代理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和NIC 30之间的接口25为基础的FIFO队列,支持直接在用户地址空间和NIC 30之间发送/接收信息。该接口可以实现为标准Ⅵ接口。
图4是根据本发明优选实施例的网络访问方法的流程图。在步骤S1,通过用户空间NIC接口提供用户空间和NIC之间的直接访问。在步骤S2,与默认操作模式相关,可以通过内核空间-NIC接口提供内核空间和NIC之间的直接访问。在用户空间隧道访问模式,以两个步骤提供内核空间和NIC之间的访问,通过在步骤S3提供内核空间-用户空间接口和通过在步骤S4互连内核空间-用户空间接口和直接用户空间-NIC接口。如果设备系统崩溃则在步骤S5转换回默认模式,这样保持了稳固性和可靠性。作为第二道防线,或者作为步骤S5的可替换步骤,在步骤S6可以使用监视器,如果在预定时间没有来自用户空间的调用,则转换回默认模式。在下文中,将参照图5-10描述在图3的分布式网络设备驱动体系结构中许多不同通信(traffic)情况的示例,其中每个附图只示例与各个通信情况相关的那些系统元件。
计算机系统引导并装入操作系统。操作系统装载了内核空间的网络设备驱动以允许访问网络并更为具体地访问网络接口控制器(MC)30。内核空间设备驱动将执行标准的初始步骤,作为设计基础网络设备驱动(NDD),也称为NDD核心14。
另一个功能是由需要(call for)由驱动控制的每个NIC的附加步骤注册到内核代理(未示出)。在注册步骤中,CSR指针被发送到内核代理,并且一些回复功能也注册在内核代理中(为了在模式之间转换,重启NIC,推动通过内核代理接收的返回信息,错误报告等)。
对于NDD驱动所控制的每个NIC,操作模式都被设置为默认,正如图5和6所示,这意味着信息流将从NDD核心14直接到NIC 30并反之亦然。在输出方向,如图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执行NIC 30的基本初始化,并且优选地,内核代理16初始化监视器功能。
用户空间设备驱动器20在NIC 30中设置记录表示TX,RX环位于何处。也可以设置NIC记录来提高本发明所使用的PCI(外部元件扩展接口)或任何其他总线结构的性能。随后,用户空间设备驱动器20启动TX,RX引擎(engines)。
如图7所示,在从用户空间直接到NIC的输出方向,用户应用将信息描述符(与VIA体系结构中使用的描述符类似)或简单的指针传送到用户空间设备驱动器20,用户空间设备驱动器20将信息描述符放入位于用户地址空间中的TX环中。通过利用信息描述符/指针,而不是完全的信息,将不会再有信息拷贝。NIC 30通过利用TX环中的信息描述符找到公共存储器中的相应位置来使用信息。
如图8所示,在内核级别用户到NIC的输出方向,NDD核心14运行为设计基础NDD,具有另一个功能,就是检查用户空间隧道访问模式对于这个NIC接口是否是激活的。如果隧道访问模式是激活的,则NDD核心14将输入信息描述符传送到内核代理16,内核代理16将描述符放入用于与用户空间设备驱动器20进行通信的KTX环中。
以可设置的间隔,例如每隔1ms,用户空间设备驱动器20通常将轮询KTX环并将描述符移动插入到TX环中,所述TX环用于用户空间设备驱动器20和NIC 30之间的通信。最终NIC 30通过利用传送来的信息描述符从公共存储器获取到信息来使用信息。
图9和10中示例了从NIC输入方向的两种不同通信情况。NIC 30将与输入信息、相应的描述符放入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(系统区域网)。
保持本文所公开和要求的基本原则的其他修改、变化和改进都在本发明的范围之内。
Claims (26)
1.一种用于在操作系统内核空间和网络接口控制器之间以及在用户空间和所述网络接口控制器之间进行访问的网络设备驱动器,包括:
内核空间设备驱动器,适于通过内核空间-用户空间接口在内核空间和用户空间之间进行访问;以及
用户空间设备驱动器,适于通过用户空间-网络接口控制器接口在用户空间和所述网络接口控制器之间进行直接访问以便向网络发送信息和从网络接收信息,并适于互连所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口,以便在内核空间和所述网络接口控制器之间进行用户空间隧道访问从而向网络发送信息和从网络接收信息,
其中通过组合使用所述内核空间设备驱动器、所述用户空间设备驱动器、所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口,使将要在内核空间中的内核级别协议和所述网络接口控制器之间传送的信息通过用户空间。
2.根据权利要求1的网络设备驱动器,其中所述内核空间设备驱动器适于建立与所述用户空间设备驱动器相关的所述内核空间-用户空间接口。
3.根据权利要求1的网络设备驱动器,其中所述用户空间设备驱动器适于从与所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口之一相关的存储缓冲器中获取指向公共存储器中的数据的指针信息,并将所述指针信息插入与另一个所述接口相关的存储缓冲器中,从而互连所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口。
4.根据权利要求1的网络设备驱动器,其中每个所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口与发送缓冲器和接收缓冲器的两个存储缓冲器相关。
5.根据权利要求4的网络设备驱动器,其中对于输出内核级别协议通信,所述内核空间设备驱动器适于将指向公共存储器中的数据的指针信息插入与所述内核空间-用户空间接口相关的发送缓冲器中,而所述用户空间设备驱动器适于从中获取所述指针信息并将其插入与所述用户空间-网络接口控制器接口相关的发送缓冲器中,而且所述网络接口控制器适于从与所述用户空间-网络接口控制器接口相关的发送缓冲器中获取所述指针信息,并基于所获取的指针信息从所述公共存储器读取相应数据。
6.根据权利要求4的网络设备驱动器,其中对于输入内核级别协议通信,所述网络接口控制器适于将指向公共存储器中的数据的指针信息插入与所述用户空间-网络接口控制器接口相关的接收缓冲器内,而所述用户空间设备驱动器适于从与所述用户空间-网络接口控制器接口相关的接收缓冲器获取所述指针信息,并将其插入与所述内核空间-用户空间接口相关的接收缓冲器中,并且所述内核空间设备驱动器适于获取所述指针信息,以便传送到内核级别协议,其中该内核级别协议基于指针信息从所述公共存储器读取相应数据。
7.根据权利要求1的网络设备驱动器,其中所述用户空间设备驱动器配置为在用户应用程序的应用情况下执行。
8.根据权利要求7的网络设备驱动器,其中所述用户空间设备驱动器实施为用户空间库。
9.根据权利要求1的网络设备驱动器,其中所述内核空间设备驱动器用于在第一操作模式中通过内核空间-网络接口控制器接口直接访问所述网络接口控制器,并用于在第二操作模式通过所述内核空间-用户空间接口、所述用户空间设备驱动器和所述用户空间-网络接口控制器接口访问所述网络接口控制器。
10.根据权利要求9的网络设备驱动器,其中所述用户空间设备驱动器配置为在用户应用程序的应用情况下执行,并且所述内核空间设备驱动器适于响应用户应用程序失败而转换到所述第一操作模式。
11.根据权利要求9或10的网络设备驱动器,其中所述内核空间设备驱动包括监视器,用于在预定时间周期没有来自所述用户空间设备驱动器的调用时转换到所述第一操作模式。
12.根据权利要求9的网络设备驱动器,其中所述内核空间设备驱动器包括:
内核空间代理构件,用于管理所述内核空间-用户空间接口;
网络设备驱动核心构件,用于在所述第一操作模式直接访问所述网络接口控制器,并用于在所述第二操作模式中,将输出的数据发送到所述内核空间代理构件,并从所述内核空间代理构件接收输入数据。
13.根据权利要求12的网络设备驱动器,其中所述用户空间设备驱动器配置为在用户应用程序的应用情况下执行,并且所述内核空间代理构件适于通过命令所述网络设备驱动核心构件转换到所述第一操作模式来响应用户应用程序失败。
14.根据权利要求12或13的网络设备驱动器,其中所述内核空间代理构件包括监视器,用于在预定时间周期没有来自用户空间设备驱动器的调用时命令所述网络设备驱动核心构件转换到所述第一操作模式。
15.一种用于对网络接口控制器进行操作系统内核空间访问以及用户空间访问的系统,所述系统包括用于通过同一网络接口控制器的组合的内核空间访问和用户空间访问的装置,其中所述用于通过同一网络接口控制器的组合的内核空间访问和用户空间访问的装置包括:
用于通过内核空间-用户空间接口在内核空间和用户空间之间进行访问的装置;
用于通过用户空间-网络接口控制器接口在用户空间和网络接口控制器之间进行直接访问以便向网络发送信息和从网络接收信息的装置;
用于互连所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口以便在内核空间和所述网络接口控制器之间进行用户空间隧道访问从而向网络发送信息和从网络接收信息的装置,
其中通过互连的内核空间-用户空间接口和用户空间-网络接口控制器接口,使将要在内核空间中的内核级别协议和所述网络接口控制器之间传送的信息通过用户空间。
16.一种用于在操作系统内核空间和网络接口控制器之间以及在用户空间和所述网络接口控制器之间进行访问的方法,所述方法包括以下步骤:
通过内核空间-用户空间接口,在内核空间和用户空间之间进行访问;
通过用户空间-网络接口控制器接口,在用户空间和所述网络接口控制器之间进行直接访问;和
互连所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口,以便在内核空间和所述网络接口控制器之间进行用户空间隧道访问,
其中所述互连步骤包括以下步骤:
从与所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口之一相关的存储缓冲器中获取指针信息,其中该指针信息指向公共存储器中的数据;和
将所述指针信息插入与另一个所述接口相关的存储缓冲器中。
17.根据权利要求16的方法,其中所述网络接口控制器访问分布在内核空间设备驱动器和用户空间设备驱动器之间。
18.根据权利要求17的方法,还包括以下步骤:
对于输出内核级别协议通信,所述内核空间设备驱动器将指向公共存储器中的数据的指针信息插入与所述内核空间-用户空间接口相关的发送缓冲器中,和
所述用户空间设备驱动器从中获取所述指针信息并将其插入与所述用户空间-网络接口控制器接口相关的发送缓冲器中,以及
所述网络接口控制器从与所述用户空间-网络接口控制器接口相关的发送缓冲器中获取所述指针信息,并基于所获得的指针信息从所述公共存储器中读取相应数据。
19.根据权利要求17的方法,还包括以下步骤:
对于输入内核级别协议通信,所述网络接口控制器将指向公共存储器中的数据的指针信息插入与所述用户空间-网络接口控制器接口相关的接收缓冲器内,和
所述用户空间设备驱动器从与所述用户空间-网络接口控制器接口相关的接收缓冲器获取所述指针信息,并将其插入与所述内核空间-用户空间接口相关的接收缓冲器中,以及
所述内核空间设备驱动器获取所述指针信息,以便传送到内核级别协议,其中该内核级别协议基于该指针信息从所述公共存储器读取相应数据。
20.根据权利要求16的方法,其中在用户空间和所述网络接口控制器之间进行直接访问的所述步骤和所述互连步骤在用户应用程序的应用情况下执行。
21.根据权利要求20的方法,其中在用户空间和所述网络接口控制器之间进行直接访问的所述步骤和所述互连步骤由实施为用户空间库的用户空间设备驱动器执行。
22.根据权利要求16的方法,还包括以下步骤:
在内核空间设备驱动器的第一操作模式中,通过内核空间-网络接口控制器接口从所述内核空间设备驱动器直接访问所述网络接口控制器;
在所述内核空间设备驱动器的第二操作模式中,通过互连的内核空间-用户空间接口和用户空间-网络接口控制器接口访问所述网络接口控制器。
23.根据权利要求22的方法,其中在用户空间和所述网络接口控制器之间进行直接访问的所述步骤和所述互连步骤是在用户应用程序的应用情况下执行的,并且操作系统命令所述内核空间设备驱动器转换到所述第一操作模式,以响应用户应用程序失败。
24.根据权利要求22或23的方法,还包括以下步骤:
如果在预定时间周期内没有用户空间调用所述内核空间设备驱动器,则转换到所述第一操作模式。
25.一种用于对网络接口控制器进行直接的操作系统内核空间访问以及直接的用户空间访问的方法,所述方法包括通过同一网络接口控制器提供组合的内核空间访问和用户空间访问的步骤,
其中所述通过同一网络接口控制器提供组合的内核空间访问和用户空间访问的步骤包括以下步骤:
通过内核空间-用户空间接口在内核空间和用户空间之间进行访问;
通过用户空间-网络接口控制器接口在用户空间和网络接口控制器之间进行直接访问以便向网络发送信息和从网络接收信息;
互连所述内核空间-用户空间接口和所述用户空间-网络接口控制器接口,以便在内核空间和所述网络接口控制器之间进行用户空间隧道访问从而向网络发送信息和从网络接收信息,
其中通过互连的内核空间-用户空间接口和用户空间-网络接口控制器接口,使将要在内核空间中的内核级别协议和所述网络接口控制器之间传送的信息通过用户空间。
26.根据权利要求25的方法,其中组合的内核空间访问和用户空间访问是通过相同网络接口控制器端口提供的。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/SE2002/001225 WO2004001615A1 (en) | 2002-06-19 | 2002-06-19 | A network device driver architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1647054A CN1647054A (zh) | 2005-07-27 |
CN1647054B true CN1647054B (zh) | 2010-09-08 |
Family
ID=29997657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN028291557A Expired - Fee Related CN1647054B (zh) | 2002-06-19 | 2002-06-19 | 双模网络设备驱动设备、系统和方法 |
Country Status (10)
Country | Link |
---|---|
US (2) | US7451456B2 (zh) |
EP (1) | EP1514191B1 (zh) |
CN (1) | CN1647054B (zh) |
AT (1) | ATE443291T1 (zh) |
AU (1) | AU2002345467A1 (zh) |
BR (1) | BR0215746B1 (zh) |
DE (1) | DE60233760D1 (zh) |
DK (1) | DK1514191T3 (zh) |
ES (1) | ES2333519T3 (zh) |
WO (1) | WO2004001615A1 (zh) |
Families Citing this family (116)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2333519T3 (es) * | 2002-06-19 | 2010-02-23 | Telefonaktiebolaget L M Ericsson | Una arquitectura de controlador de dispositivo de red. |
GB0221464D0 (en) * | 2002-09-16 | 2002-10-23 | Cambridge Internetworking Ltd | Network interface and protocol |
US7475142B2 (en) * | 2002-12-06 | 2009-01-06 | Cisco Technology, Inc. | CIFS for scalable NAS architecture |
US7443845B2 (en) * | 2002-12-06 | 2008-10-28 | Cisco Technology, Inc. | Apparatus and method for a lightweight, reliable, packet-based transport protocol |
US7411973B2 (en) * | 2003-03-11 | 2008-08-12 | Broadcom Corporation | System and method for interfacing with a management system |
US7581033B2 (en) * | 2003-12-05 | 2009-08-25 | Unisys Corporation | Intelligent network interface card (NIC) optimizations |
US7506343B2 (en) * | 2004-08-19 | 2009-03-17 | International Business Machines Corporation | System and method for passing information from one device driver to another |
US7694312B2 (en) | 2004-09-10 | 2010-04-06 | Pleora Technologies Inc. | Methods and apparatus for enabling bus connectivity over a data network |
US7414975B2 (en) * | 2005-03-24 | 2008-08-19 | Ixia | Protocol stack |
US8121148B2 (en) * | 2005-03-24 | 2012-02-21 | Ixia | Protocol stack using shared memory |
US20060242270A1 (en) * | 2005-04-21 | 2006-10-26 | Microsoft Corporation | Isolation of user-mode device drivers |
CN100351788C (zh) * | 2005-05-18 | 2007-11-28 | 大唐移动通信设备有限公司 | 嵌入式设备的驱动方法 |
ATE462264T1 (de) | 2005-06-15 | 2010-04-15 | Solarflare Comm Inc | Empfangen von daten gemäss eines datentransferprotokolls von daten, die ein beliebiges einer mehrzahl von empgangsgeräten gerichtet sind |
US20070011358A1 (en) * | 2005-06-30 | 2007-01-11 | John Wiegert | Mechanisms to implement memory management to enable protocol-aware asynchronous, zero-copy transmits |
US7596644B2 (en) * | 2006-01-11 | 2009-09-29 | Solarflare Communications, Inc. | Transmit rate pacing system and method |
US7650471B2 (en) * | 2006-01-06 | 2010-01-19 | Hewlett-Packard Development Company, L.P. | Head of queue cache for communication interfaces |
US8572729B1 (en) * | 2006-01-30 | 2013-10-29 | Mcafee, Inc. | System, method and computer program product for interception of user mode code execution and redirection to kernel mode |
US8116312B2 (en) * | 2006-02-08 | 2012-02-14 | Solarflare Communications, Inc. | Method and apparatus for multicast packet reception |
US20070204278A1 (en) * | 2006-02-24 | 2007-08-30 | Radzykewycz Tim O | Driver services publication |
US9686117B2 (en) * | 2006-07-10 | 2017-06-20 | Solarflare Communications, Inc. | Chimney onload implementation of network protocol stack |
US9948533B2 (en) | 2006-07-10 | 2018-04-17 | Solarflare Communitations, Inc. | Interrupt management |
US8874780B2 (en) | 2006-07-17 | 2014-10-28 | Qualcomm Incorporated | Data buffering and notification system and methods thereof |
WO2008012790A1 (en) * | 2006-07-27 | 2008-01-31 | Contextream Inc. | Distributed edge network |
CN100428171C (zh) * | 2006-12-08 | 2008-10-22 | 杭州华三通信技术有限公司 | 数据平面与控制平面之间的通讯方法 |
GB2446172B (en) * | 2007-01-30 | 2009-01-21 | Hewlett Packard Development Co | Control of data transfer |
US7925795B2 (en) * | 2007-04-30 | 2011-04-12 | Broadcom Corporation | Method and system for configuring a plurality of network interfaces that share a physical interface |
US7950022B1 (en) * | 2007-06-29 | 2011-05-24 | Emc Corporation | Techniques for use with device drivers in a common software environment |
US7950025B1 (en) * | 2007-06-29 | 2011-05-24 | Emc Corporation | Common software environment |
US8205218B1 (en) * | 2007-06-29 | 2012-06-19 | Emc Corporation | Data storage system having common software environment |
EP2168052A4 (en) * | 2007-07-16 | 2011-03-09 | Bigfoot Networks Inc | DATA BUFFER AND NOTIFICATION SYSTEM AND RELATED METHODS |
US8225329B1 (en) * | 2007-09-13 | 2012-07-17 | Juniper Networks, Inc. | Tail synchronized FIFO for fast user space packet access |
US20090089475A1 (en) * | 2007-09-28 | 2009-04-02 | Nagabhushan Chitlur | Low latency interface between device driver and network interface card |
US8929372B2 (en) * | 2007-10-30 | 2015-01-06 | Contextream Ltd. | Grid router |
CN101163074B (zh) * | 2007-11-12 | 2010-12-08 | 中兴通讯股份有限公司 | 一种WiMAX终端设备主机驱动方法 |
US8185783B2 (en) * | 2007-11-22 | 2012-05-22 | Microsoft Corporation | Split user-mode/kernel-mode device driver architecture |
US8239486B2 (en) * | 2008-03-19 | 2012-08-07 | Oracle International Corporation | Direct network file system |
US8359603B1 (en) * | 2008-03-28 | 2013-01-22 | Emc Corporation | Techniques for inter-user-space communication |
CN101252527B (zh) * | 2008-04-09 | 2011-01-26 | 腾讯科技(深圳)有限公司 | 一种网络中转的方法、网络中转服务器和内核管理模块 |
US8467295B2 (en) * | 2008-08-21 | 2013-06-18 | Contextream Ltd. | System and methods for distributed quality of service enforcement |
US8271996B1 (en) * | 2008-09-29 | 2012-09-18 | Emc Corporation | Event queues |
US8379516B2 (en) * | 2009-12-24 | 2013-02-19 | Contextream Ltd. | Grid routing apparatus and method |
US8634302B2 (en) | 2010-07-30 | 2014-01-21 | Alcatel Lucent | Apparatus for multi-cell support in a network |
US8504744B2 (en) * | 2010-10-28 | 2013-08-06 | Alcatel Lucent | Lock-less buffer management scheme for telecommunication network applications |
US8737417B2 (en) * | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging scheme for telecommunication network applications |
US8730790B2 (en) | 2010-11-19 | 2014-05-20 | Alcatel Lucent | Method and system for cell recovery in telecommunication networks |
US8861434B2 (en) * | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US9600429B2 (en) | 2010-12-09 | 2017-03-21 | Solarflare Communications, Inc. | Encapsulated accelerator |
US9258390B2 (en) | 2011-07-29 | 2016-02-09 | Solarflare Communications, Inc. | Reducing network latency |
US9674318B2 (en) | 2010-12-09 | 2017-06-06 | Solarflare Communications, Inc. | TCP processing for devices |
US10873613B2 (en) | 2010-12-09 | 2020-12-22 | Xilinx, Inc. | TCP processing for devices |
US8533812B1 (en) * | 2011-03-03 | 2013-09-10 | Symantec Corporation | Systems and methods for securing access to kernel devices |
CN102158493B (zh) * | 2011-04-15 | 2015-12-09 | 北京奇虎科技有限公司 | 一种Cookie解析方法、装置及一种客户端 |
US9357482B2 (en) | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
CN102209042B (zh) * | 2011-07-21 | 2014-04-16 | 迈普通信技术股份有限公司 | 一种避免先入先出队列溢出的方法及设备 |
US9081586B2 (en) * | 2011-11-29 | 2015-07-14 | Futurewei Technologies, Inc. | Systems and methods for customizing optimization/transformation/ processing strategies |
CN102520957A (zh) * | 2011-12-19 | 2012-06-27 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统的软件分离设计的方法 |
US9524197B2 (en) | 2012-09-06 | 2016-12-20 | Accedian Networks Inc. | Multicasting of event notifications using extended socket for inter-process communication |
US10505747B2 (en) | 2012-10-16 | 2019-12-10 | Solarflare Communications, Inc. | Feed processing |
US9742877B2 (en) | 2012-12-04 | 2017-08-22 | International Business Machines Corporation | Clustering support across geographical boundaries |
CN103078720B (zh) * | 2012-12-28 | 2015-11-25 | 华为技术有限公司 | 报文处理方法及装置 |
US9436621B1 (en) * | 2013-03-13 | 2016-09-06 | Emc Corporation | Layered device driver |
US9459910B1 (en) * | 2013-03-13 | 2016-10-04 | Emc Corporation | Controlling a layered driver |
US9378046B1 (en) | 2013-03-13 | 2016-06-28 | Emc Corporation | Manipulating hardware using a layered device driver |
US10454714B2 (en) | 2013-07-10 | 2019-10-22 | Nicira, Inc. | Method and system of overlay flow control |
US9621653B2 (en) * | 2014-02-14 | 2017-04-11 | Western Digital Technologies, Inc. | Method and apparatus for a network connected storage system |
US9483420B2 (en) | 2014-02-28 | 2016-11-01 | Ncr Corporation | Self-service terminal (SST) device driver |
US9436395B2 (en) | 2014-03-14 | 2016-09-06 | Advanced Micro Devices, Inc. | Mechanisms to save user/kernel copy for cross device communications |
US9584628B2 (en) | 2015-03-17 | 2017-02-28 | Freescale Semiconductor, Inc. | Zero-copy data transmission system |
US10135789B2 (en) | 2015-04-13 | 2018-11-20 | Nicira, Inc. | Method and system of establishing a virtual private network in a cloud service for branch networking |
US10838852B2 (en) * | 2015-04-17 | 2020-11-17 | Samsung Electronics Co., Ltd. | System and method to extend NVME queues to user space |
US11036533B2 (en) | 2015-04-17 | 2021-06-15 | Samsung Electronics Co., Ltd. | Mechanism to dynamically allocate physical storage device resources in virtualized environments |
US10331616B2 (en) * | 2015-08-05 | 2019-06-25 | Futurewei Technologies, Inc. | Integration of network linecard (LC) to host operating system (OS) |
CN105512286B (zh) * | 2015-11-27 | 2019-09-24 | 浪潮(北京)电子信息产业有限公司 | 一种读写数据免拷贝系统与方法 |
US20170249162A1 (en) * | 2016-02-25 | 2017-08-31 | Red Hat Israel, Ltd. | Safe transmit packet processing for network function virtualization applications |
TWI592803B (zh) * | 2016-03-11 | 2017-07-21 | 晨星半導體股份有限公司 | 嵌入式系統之操作方法與控制晶片 |
CN107204908A (zh) * | 2016-03-17 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种基于通信接口框架的消息发送、接收方法及装置 |
RU2638781C2 (ru) * | 2016-09-29 | 2017-12-15 | Общество с ограниченной ответственностью "ГРЭК" | Способ организации прямого доступа в память при передаче информации между физическими объектами |
US11706127B2 (en) | 2017-01-31 | 2023-07-18 | Vmware, Inc. | High performance software-defined core network |
US10992568B2 (en) | 2017-01-31 | 2021-04-27 | Vmware, Inc. | High performance software-defined core network |
US20180219765A1 (en) | 2017-01-31 | 2018-08-02 | Waltz Networks | Method and Apparatus for Network Traffic Control Optimization |
US20200036624A1 (en) | 2017-01-31 | 2020-01-30 | The Mode Group | High performance software-defined core network |
US10778528B2 (en) | 2017-02-11 | 2020-09-15 | Nicira, Inc. | Method and system of connecting to a multipath hub in a cluster |
US10999100B2 (en) | 2017-10-02 | 2021-05-04 | Vmware, Inc. | Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider |
US11516049B2 (en) | 2017-10-02 | 2022-11-29 | Vmware, Inc. | Overlay network encapsulation to forward data message flows through multiple public cloud datacenters |
US11115480B2 (en) | 2017-10-02 | 2021-09-07 | Vmware, Inc. | Layer four optimization for a virtual network defined over public cloud |
US11223514B2 (en) | 2017-11-09 | 2022-01-11 | Nicira, Inc. | Method and system of a dynamic high-availability mode based on current wide area network connectivity |
CN109688058B (zh) * | 2018-12-19 | 2021-03-02 | 迈普通信技术股份有限公司 | 报文处理方法、装置及网络设备 |
US10684963B2 (en) * | 2018-12-28 | 2020-06-16 | Intel Corporation | Fixed ethernet frame descriptor |
US20190179554A1 (en) * | 2019-02-21 | 2019-06-13 | Intel Corporation | Raid aware drive firmware update |
DE112020002528B4 (de) | 2019-05-23 | 2024-10-17 | Hewlett Packard Enterprise Development Lp | Algorithmen für die verwendung von lastinformationen von benachbarten knoten beim adaptiven routing |
US11252106B2 (en) | 2019-08-27 | 2022-02-15 | Vmware, Inc. | Alleviating congestion in a virtual network deployed over public clouds for an entity |
US11489783B2 (en) | 2019-12-12 | 2022-11-01 | Vmware, Inc. | Performing deep packet inspection in a software defined wide area network |
US11689959B2 (en) | 2020-01-24 | 2023-06-27 | Vmware, Inc. | Generating path usability state for different sub-paths offered by a network link |
US12242748B2 (en) * | 2020-06-03 | 2025-03-04 | Intel Corporation | Intermediary for storage command transfers |
US11363124B2 (en) * | 2020-07-30 | 2022-06-14 | Vmware, Inc. | Zero copy socket splicing |
US11575591B2 (en) | 2020-11-17 | 2023-02-07 | Vmware, Inc. | Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN |
US11601356B2 (en) | 2020-12-29 | 2023-03-07 | Vmware, Inc. | Emulating packet flows to assess network links for SD-WAN |
US12218845B2 (en) | 2021-01-18 | 2025-02-04 | VMware LLC | Network-aware load balancing |
CN116783874A (zh) | 2021-01-18 | 2023-09-19 | Vm维尔股份有限公司 | 网络感知的负载平衡 |
US11979325B2 (en) | 2021-01-28 | 2024-05-07 | VMware LLC | Dynamic SD-WAN hub cluster scaling with machine learning |
US11615042B2 (en) | 2021-03-31 | 2023-03-28 | Nutanix, Inc. | Common framework for kernel-assisted device polling |
US12009987B2 (en) | 2021-05-03 | 2024-06-11 | VMware LLC | Methods to support dynamic transit paths through hub clustering across branches in SD-WAN |
US11637768B2 (en) | 2021-05-03 | 2023-04-25 | Vmware, Inc. | On demand routing mesh for routing packets through SD-WAN edge forwarding nodes in an SD-WAN |
US11729065B2 (en) | 2021-05-06 | 2023-08-15 | Vmware, Inc. | Methods for application defined virtual network service among multiple transport in SD-WAN |
US12015536B2 (en) | 2021-06-18 | 2024-06-18 | VMware LLC | Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds |
US12250114B2 (en) | 2021-06-18 | 2025-03-11 | VMware LLC | Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of sub-types of resource elements in the public clouds |
US12047282B2 (en) | 2021-07-22 | 2024-07-23 | VMware LLC | Methods for smart bandwidth aggregation based dynamic overlay selection among preferred exits in SD-WAN |
US11943146B2 (en) | 2021-10-01 | 2024-03-26 | VMware LLC | Traffic prioritization in SD-WAN |
US11816057B2 (en) * | 2021-10-19 | 2023-11-14 | Citrix Systems, Inc. | User space driver for I/O traffic distribution and packet processing |
US12184557B2 (en) | 2022-01-04 | 2024-12-31 | VMware LLC | Explicit congestion notification in a virtual environment |
US11909815B2 (en) | 2022-06-06 | 2024-02-20 | VMware LLC | Routing based on geolocation costs |
US12166661B2 (en) | 2022-07-18 | 2024-12-10 | VMware LLC | DNS-based GSLB-aware SD-WAN for low latency SaaS applications |
US12237990B2 (en) | 2022-07-20 | 2025-02-25 | VMware LLC | Method for modifying an SD-WAN using metric-based heat maps |
US12057993B1 (en) | 2023-03-27 | 2024-08-06 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
US12034587B1 (en) | 2023-03-27 | 2024-07-09 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
US12261777B2 (en) | 2023-08-16 | 2025-03-25 | VMware LLC | Forwarding packets in multi-regional large scale deployments with distributed gateways |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999039254A2 (en) * | 1998-01-30 | 1999-08-05 | 3Com Corporation | Providing low level hardware device driver from user mode under multi-tasking operating systems |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11238030A (ja) * | 1998-02-20 | 1999-08-31 | Mitsubishi Electric Corp | Pci−pciブリッジおよびそのための先入れ先出しメモリ |
US6658469B1 (en) * | 1998-12-18 | 2003-12-02 | Microsoft Corporation | Method and system for switching between network transport providers |
US6347337B1 (en) * | 1999-01-08 | 2002-02-12 | Intel Corporation | Credit based flow control scheme over virtual interface architecture for system area networks |
US20020120732A1 (en) * | 2001-02-27 | 2002-08-29 | Lee Daniel Joseph | Open internet protocol services platform |
US7061899B2 (en) * | 2001-05-01 | 2006-06-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for providing network security |
US7007157B2 (en) * | 2001-10-30 | 2006-02-28 | Microsoft Corporation | Network interface sharing methods and apparatuses that support kernel mode data traffic and user mode data traffic |
ES2333519T3 (es) | 2002-06-19 | 2010-02-23 | Telefonaktiebolaget L M Ericsson | Una arquitectura de controlador de dispositivo de red. |
-
2002
- 2002-06-19 ES ES02744030T patent/ES2333519T3/es not_active Expired - Lifetime
- 2002-06-19 AU AU2002345467A patent/AU2002345467A1/en not_active Abandoned
- 2002-06-19 BR BRPI0215746-2A patent/BR0215746B1/pt not_active IP Right Cessation
- 2002-06-19 US US10/517,724 patent/US7451456B2/en not_active Expired - Lifetime
- 2002-06-19 AT AT02744030T patent/ATE443291T1/de not_active IP Right Cessation
- 2002-06-19 DK DK02744030T patent/DK1514191T3/da active
- 2002-06-19 EP EP02744030A patent/EP1514191B1/en not_active Expired - Lifetime
- 2002-06-19 DE DE60233760T patent/DE60233760D1/de not_active Expired - Lifetime
- 2002-06-19 CN CN028291557A patent/CN1647054B/zh not_active Expired - Fee Related
- 2002-06-19 WO PCT/SE2002/001225 patent/WO2004001615A1/en not_active Application Discontinuation
-
2008
- 2008-11-05 US US12/265,103 patent/US8332875B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999039254A2 (en) * | 1998-01-30 | 1999-08-05 | 3Com Corporation | Providing low level hardware device driver from user mode under multi-tasking operating systems |
Non-Patent Citations (3)
Title |
---|
Dubnicki,C. et al."Software support for virtual memory-mappedcommunication".Parallel Processing Syposium,1996.,Proceedings of IPPS'96,The 10th International.1996,第372-381,372-373,376-378页,摘要,图3. * |
Dunning,D. et al."The Virtual Interface Architecture".Micro,IEEE 18.1998,第66-76页. * |
Pratt I."Arsenic a user-accessible gigabit Ethernet interface".INFOCOM 2001.Twentieth Annual Conference of the IEEE Computer and Communications Societes.Proceedings. IEEE1.2001,第67-76页,摘要,图1. * |
Also Published As
Publication number | Publication date |
---|---|
EP1514191A1 (en) | 2005-03-16 |
DK1514191T3 (da) | 2009-12-07 |
US20050210479A1 (en) | 2005-09-22 |
CN1647054A (zh) | 2005-07-27 |
US20090077572A1 (en) | 2009-03-19 |
DE60233760D1 (de) | 2009-10-29 |
US8332875B2 (en) | 2012-12-11 |
WO2004001615A1 (en) | 2003-12-31 |
US7451456B2 (en) | 2008-11-11 |
BR0215746A (pt) | 2005-03-22 |
ES2333519T3 (es) | 2010-02-23 |
EP1514191B1 (en) | 2009-09-16 |
BR0215746B1 (pt) | 2015-02-10 |
ATE443291T1 (de) | 2009-10-15 |
AU2002345467A1 (en) | 2004-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1647054B (zh) | 双模网络设备驱动设备、系统和方法 | |
EP1358562B1 (en) | Method and apparatus for controlling flow of data between data processing systems via a memory | |
CN100375469C (zh) | 在物理端口上模拟多个逻辑端口的方法和装置 | |
EP1399829B1 (en) | End node partitioning using local identifiers | |
US7103888B1 (en) | Split model driver using a push-push messaging protocol over a channel based network | |
Shanley | InfiniBand network architecture | |
EP1374521B1 (en) | Method and apparatus for remote key validation for ngio/infiniband applications | |
CN100361100C (zh) | 对用于单通道适配器的多个资源进行逻辑分区的方法和系统 | |
EP3974998A2 (en) | Cross network bridging | |
US6912604B1 (en) | Host channel adapter having partitioned link layer services for an infiniband server system | |
US7424564B2 (en) | PCI—express slot for coupling plural devices to a host system | |
JP5735883B2 (ja) | ローカル・アダプタの読み取り操作により操作の完了が確認されるまで操作の肯定応答を遅延させる方法 | |
US20160342547A1 (en) | Host bus access by add-on devices via a network interface controller | |
US6487619B1 (en) | Multiprocessor system that communicates through an internal bus using a network protocol | |
CA2432390A1 (en) | Method and apparatus for controlling flow of data between data processing systems via a memory | |
GB2409073A (en) | Dedicated connection between CPU and network interface in multi-processor systems | |
CA2432386A1 (en) | Method and apparatus for transferring interrupts from a peripheral device to a host computer system | |
CN118093468B (zh) | 具有RDMA加速功能的PCIe交换芯片及PCIe交换机 | |
CN118860952B (zh) | 一种基于PCIe NTB的RDMA跨主机互联通信系统 | |
JP2002305535A (ja) | データを転送する信頼できるプロトコルを提供する方法および装置 | |
US6816889B1 (en) | Assignment of dual port memory banks for a CPU and a host channel adapter in an InfiniBand computing node | |
WO2024217333A1 (zh) | 一种基于块存储的io访问方法、装置、电子设备及介质 | |
KR20030083572A (ko) | 상위버스와 하위버스를 가지며, 네트워크에서의 데이터액세스의 제어를 행하는 마이크로 컴퓨터 시스템 | |
CN100442256C (zh) | 提供用于i/o适配器的队列对的方法、系统和存储介质 | |
US20020049878A1 (en) | Data communications interfaces |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100908 Termination date: 20190619 |
|
CF01 | Termination of patent right due to non-payment of annual fee |